Explorar el Código

[电表][修改]:电表数据增加电量计算

release_toaliyun_real
hupeng hace 7 años
padre
commit
1c311f70e5
Se han modificado 6 ficheros con 113 adiciones y 9 borrados
  1. +6
    -0
      mallinkService/src/main/java/com/iformall/domain/po/KwMeterData.java
  2. +3
    -3
      mallinkService/src/main/java/com/iformall/domain/vo/KwMeterDataVo.java
  3. +4
    -0
      mallinkService/src/main/java/com/iformall/service/kw/KwMeterDataService.java
  4. +19
    -4
      mallinkService/src/main/java/com/iformall/service/kw/impl/KwBoxServiceImpl.java
  5. +10
    -0
      mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java
  6. +71
    -2
      mallinkService/src/main/resources/mapper/KwMeterDataMapper.xml

+ 6
- 0
mallinkService/src/main/java/com/iformall/domain/po/KwMeterData.java Ver fichero

@@ -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"),


+ 3
- 3
mallinkService/src/main/java/com/iformall/domain/vo/KwMeterDataVo.java Ver fichero

@@ -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;


} }

+ 4
- 0
mallinkService/src/main/java/com/iformall/service/kw/KwMeterDataService.java Ver fichero

@@ -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);
} }

+ 19
- 4
mallinkService/src/main/java/com/iformall/service/kw/impl/KwBoxServiceImpl.java Ver fichero

@@ -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;
} }


+ 10
- 0
mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterDataServiceImpl.java Ver fichero

@@ -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();


+ 71
- 2
mallinkService/src/main/resources/mapper/KwMeterDataMapper.xml Ver fichero

@@ -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>

Cargando…
Cancelar
Guardar