| @@ -53,6 +53,12 @@ public class KwMeterData extends BaseEntity { | |||||
| @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createTime") | @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createTime") | ||||
| private Date 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 { | public static enum Field { | ||||
| Id_ASC("`id` ASC"), | Id_ASC("`id` ASC"), | ||||
| Id_DESC("`id` DESC"), | Id_DESC("`id` DESC"), | ||||
| @@ -29,12 +29,12 @@ public class KwMeterDataVo extends BaseEntity { | |||||
| private Integer totalPower; | private Integer totalPower; | ||||
| @io.swagger.annotations.ApiModelProperty(value = "记录时间", name = "createTime") | @io.swagger.annotations.ApiModelProperty(value = "记录时间", name = "createTime") | ||||
| private Date createTime; | |||||
| private Date reportTime; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "统计开始时间", name = "startTime") | @io.swagger.annotations.ApiModelProperty(value = "统计开始时间", name = "startTime") | ||||
| private Date startTime; | |||||
| private Date recordStartTime; | |||||
| @io.swagger.annotations.ApiModelProperty(value = "统计结束时间", name = "endTime") | @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); | List<KwMeterDataVo> findVoList(KwMeterDataDto kwMeterDataDto); | ||||
| PageInfo<KwMeterData> listAsPage(KwMeterData kwMeterData, Integer pageIndex, Integer pageSize); | |||||
| List<KwMeterData> findList(KwMeterData kwMeterData); | |||||
| int save(KwMeterData record); | int save(KwMeterData record); | ||||
| } | } | ||||
| @@ -89,16 +89,23 @@ public class KwBoxServiceImpl implements KwBoxService { | |||||
| } | } | ||||
| @Override | @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; | 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 kwMeterData = new KwMeterData(); | ||||
| kwMeterData.setTenantId(record.getTenantId()); | |||||
| kwMeterData.setTenantId(kwBox.getTenantId()); | |||||
| kwMeterData.setAddress(addr); | kwMeterData.setAddress(addr); | ||||
| kwMeterData.setBoxId(record.getId()); | |||||
| kwMeterData.setBoxId(kwBox.getId()); | |||||
| kwMeterData.setCreateTime(new Date()); | kwMeterData.setCreateTime(new Date()); | ||||
| kwMeterData.setDeviceTime(deviceTime); | kwMeterData.setDeviceTime(deviceTime); | ||||
| kwMeterData.setMeterId(kwMeter.getId()); | kwMeterData.setMeterId(kwMeter.getId()); | ||||
| @@ -106,6 +113,14 @@ public class KwBoxServiceImpl implements KwBoxService { | |||||
| kwMeterData.setTotalPower(Integer.parseInt(activePower)); | 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); | kwMeterDataService.save(kwMeterData); | ||||
| return kwMeterData; | return kwMeterData; | ||||
| } | } | ||||
| @@ -34,6 +34,16 @@ public class KwMeterDataServiceImpl implements KwMeterDataService { | |||||
| return kwMeterDataMapper.findVoList(kwMeterDataDto); | 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 | @Override | ||||
| public int save(KwMeterData record) { | public int save(KwMeterData record) { | ||||
| final IdWorker idWorker = IdWorker.get(); | final IdWorker idWorker = IdWorker.get(); | ||||
| @@ -22,11 +22,27 @@ | |||||
| <if test=" null != id "> | <if test=" null != id "> | ||||
| and `id` = #{id} | and `id` = #{id} | ||||
| </if> | </if> | ||||
| <if test=" null != tenantId "> | <if test=" null != tenantId "> | ||||
| and `tenant_id` = #{tenantId} | and `tenant_id` = #{tenantId} | ||||
| </if> | </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 "> | <if test=" null != ids "> | ||||
| and id in | and id in | ||||
| <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | <foreach collection="ids" index="index" item="idItem" open="(" separator="," close=")"> | ||||
| @@ -44,4 +60,57 @@ | |||||
| </select> | </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> | </mapper> | ||||