| @@ -53,6 +53,12 @@ public class KwMeterData extends BaseEntity { | |||
| @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createTime") | |||
| private Date createTime; | |||
| @io.swagger.annotations.ApiModelProperty(value = "时段用电量", name = "usedPower") | |||
| private Integer usedPower; | |||
| @io.swagger.annotations.ApiModelProperty(value = "时段用电量开始时间", name = "lastDeviceTime") | |||
| private Date lastDeviceTime; | |||
| public static enum Field { | |||
| Id_ASC("`id` ASC"), | |||
| Id_DESC("`id` DESC"), | |||
| @@ -29,12 +29,12 @@ public class KwMeterDataVo extends BaseEntity { | |||
| private Integer totalPower; | |||
| @io.swagger.annotations.ApiModelProperty(value = "记录时间", name = "createTime") | |||
| private Date createTime; | |||
| private Date reportTime; | |||
| @io.swagger.annotations.ApiModelProperty(value = "统计开始时间", name = "startTime") | |||
| private Date startTime; | |||
| private Date recordStartTime; | |||
| @io.swagger.annotations.ApiModelProperty(value = "统计结束时间", name = "endTime") | |||
| private Date endTime; | |||
| private Date recordEndTime; | |||
| } | |||
| @@ -13,5 +13,9 @@ public interface KwMeterDataService { | |||
| List<KwMeterDataVo> findVoList(KwMeterDataDto kwMeterDataDto); | |||
| PageInfo<KwMeterData> listAsPage(KwMeterData kwMeterData, Integer pageIndex, Integer pageSize); | |||
| List<KwMeterData> findList(KwMeterData kwMeterData); | |||
| int save(KwMeterData record); | |||
| } | |||
| @@ -89,16 +89,23 @@ public class KwBoxServiceImpl implements KwBoxService { | |||
| } | |||
| @Override | |||
| public KwMeterData saveMeterData(KwBox record, Date deviceTime, String addr, String activePower){ | |||
| public KwMeterData saveMeterData(KwBox kwBox, Date deviceTime, String addr, String activePower){ | |||
| KwMeter kwMeter = findMeter(record, addr); | |||
| KwMeter kwMeter = findMeter(kwBox, addr); | |||
| if (kwMeter==null) return null; | |||
| KwMeterData record = new KwMeterData(); | |||
| record.setBoxId(kwBox.getId()); | |||
| record.setMeterId(kwMeter.getId()); | |||
| record.setTotalPower(0); //set in sql not null | |||
| record.setSortColumns(KwMeterData.Field.DeviceTime_DESC); | |||
| PageInfo<KwMeterData> kwMeterDataPage = kwMeterDataService.listAsPage(record,1,1); | |||
| KwMeterData kwMeterData = new KwMeterData(); | |||
| kwMeterData.setTenantId(record.getTenantId()); | |||
| kwMeterData.setTenantId(kwBox.getTenantId()); | |||
| kwMeterData.setAddress(addr); | |||
| kwMeterData.setBoxId(record.getId()); | |||
| kwMeterData.setBoxId(kwBox.getId()); | |||
| kwMeterData.setCreateTime(new Date()); | |||
| kwMeterData.setDeviceTime(deviceTime); | |||
| kwMeterData.setMeterId(kwMeter.getId()); | |||
| @@ -106,6 +113,14 @@ public class KwBoxServiceImpl implements KwBoxService { | |||
| kwMeterData.setTotalPower(Integer.parseInt(activePower)); | |||
| } | |||
| if (kwMeterDataPage.getList().size() > 0 | |||
| && kwMeterDataPage.getList().get(0).getTotalPower() != null | |||
| && kwMeterData.getTotalPower() != null) { | |||
| kwMeterData.setUsedPower( | |||
| kwMeterData.getTotalPower()-kwMeterDataPage.getList().get(0).getTotalPower()); | |||
| kwMeterData.setLastDeviceTime(kwMeterDataPage.getList().get(0).getDeviceTime()); | |||
| } | |||
| kwMeterDataService.save(kwMeterData); | |||
| return kwMeterData; | |||
| } | |||
| @@ -34,6 +34,16 @@ public class KwMeterDataServiceImpl implements KwMeterDataService { | |||
| return kwMeterDataMapper.findVoList(kwMeterDataDto); | |||
| } | |||
| @Override | |||
| public PageInfo<KwMeterData> listAsPage(KwMeterData kwMeterData, Integer pageIndex, Integer pageSize) { | |||
| return PageHelper.startPage(pageIndex, pageSize).doSelectPageInfo(() -> kwMeterDataMapper.findList(kwMeterData)); | |||
| } | |||
| @Override | |||
| public List<KwMeterData> findList(KwMeterData kwMeterData) { | |||
| return kwMeterDataMapper.findList(kwMeterData); | |||
| } | |||
| @Override | |||
| public int save(KwMeterData record) { | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| @@ -22,11 +22,27 @@ | |||
| <if test=" null != id "> | |||
| and `id` = #{id} | |||
| </if> | |||
| <if test=" null != tenantId "> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != meterId "> | |||
| and `box_id` = #{meterId} | |||
| </if> | |||
| <if test=" null != meterId "> | |||
| and `meter_id` = #{meterId} | |||
| </if> | |||
| <if test=" null != address "> | |||
| and `address` = #{address} | |||
| </if> | |||
| <if test=" null != totalPower "> | |||
| and `total_power` is not null | |||
| </if> | |||
| <if test=" null != ids "> | |||
| and id in | |||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | |||
| @@ -44,4 +60,57 @@ | |||
| </select> | |||
| <resultMap id="BaseResultMap" type="com.iformall.domain.po.KwMeterDataVo"> | |||
| <result column="tenant_id" jdbcType="VARCHAR" property="tenantId"/> | |||
| <result column="totalPower" jdbcType="INTEGER" property="totalPower"/> | |||
| <result column="usedPower" jdbcType="INTEGER" property="usedPower"/> | |||
| <result column="reportTime" jdbcType="TIMESTAMP" property="reportTime"/> | |||
| <result column="recordStartTime" jdbcType="TIMESTAMP" property="recordStartTime"/> | |||
| <result column="recordEndTime" jdbcType="TIMESTAMP" property="recordEndTime"/> | |||
| </resultMap> | |||
| <sql id="dynamicWhereConditionsVo"> | |||
| where 1 = 1 | |||
| <if test=" null != tenantId "> | |||
| and `tenant_id` = #{tenantId} | |||
| </if> | |||
| <if test=" null != meterId "> | |||
| and `box_id` = #{meterId} | |||
| </if> | |||
| <if test=" null != meterId "> | |||
| and `meter_id` = #{meterId} | |||
| </if> | |||
| <if test=" null != address "> | |||
| and `address` = #{address} | |||
| </if> | |||
| <if test=" null != startTime and null != endTime "> | |||
| and `create_time` between #{startTime} and #{endTime} | |||
| </if> | |||
| </sql> | |||
| <select id="findVoList" parameterType="com.iformall.domain.dto.KwMeterDataDto" resultMap="BaseResultMap"> | |||
| select | |||
| temp.tenant_id, | |||
| date_format(temp.create_time, '%Y-%m-%d %H:00:00') as reportTime, | |||
| max(temp.create_time) as recordStartTime, | |||
| max(temp.sumPower) as totalPower | |||
| from | |||
| (SELECT tenant_id, | |||
| sum(total_power) as sumPower, | |||
| create_time, device_time | |||
| FROM kw_meter_data | |||
| where | |||
| <include refid="dynamicWhereConditions"/> | |||
| group by device_time) as temp | |||
| group by reportTime | |||
| order by reportTime desc | |||
| </select> | |||
| </mapper> | |||