diff --git a/mallinkService/src/main/java/com/iformall/domain/po/KwMeter.java b/mallinkService/src/main/java/com/iformall/domain/po/KwMeter.java index f15027bf4..3e7aa0d21 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/KwMeter.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/KwMeter.java @@ -29,7 +29,6 @@ public class KwMeter extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value = "tenantId", name = "tenantId") private String tenantId; - @Excel(name = "电表编号 *", width = 20, orderNum = "1") @io.swagger.annotations.ApiModelProperty(value = "电表编号", name = "address") private String address; @@ -63,6 +62,9 @@ public class KwMeter extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value = "创始时间", name = "lastOnlineTime") private Date lastOnlineTime; + @io.swagger.annotations.ApiModelProperty(value = "最后一次读数", name = "totalPower") + private Integer totalPower; + @io.swagger.annotations.ApiModelProperty(value = "创建时间", name = "createTime") private Date createTime; @@ -78,7 +80,6 @@ public class KwMeter extends BaseEntity { @io.swagger.annotations.ApiModelProperty(value = "状态0绑定1未绑定", name = "bindStatus") private Integer bindStatus; - @Excel(name = "采集设备号", width = 20, orderNum = "7") @Transient private String boxImei; diff --git a/mallinkService/src/main/java/com/iformall/mapper/KwMeterMapper.java b/mallinkService/src/main/java/com/iformall/mapper/KwMeterMapper.java index 639bd521d..fcbf376b3 100644 --- a/mallinkService/src/main/java/com/iformall/mapper/KwMeterMapper.java +++ b/mallinkService/src/main/java/com/iformall/mapper/KwMeterMapper.java @@ -9,7 +9,9 @@ import java.util.List; public interface KwMeterMapper extends CommonMapper { List findList(KwMeter param); - int updateBatch(KwMeter param); + + int onlineBatch(@Param("list")List list); + int offlineBatch(KwMeter param); int bind(@Param("boxId")Long boxId,@Param("id")Long id); int bindBatch(@Param("boxId")Long boxId, @Param("ids")List ids); diff --git a/mallinkService/src/main/java/com/iformall/service/kw/KwMeterService.java b/mallinkService/src/main/java/com/iformall/service/kw/KwMeterService.java index d165192ec..a97af8e07 100644 --- a/mallinkService/src/main/java/com/iformall/service/kw/KwMeterService.java +++ b/mallinkService/src/main/java/com/iformall/service/kw/KwMeterService.java @@ -38,12 +38,6 @@ public interface KwMeterService { */ void saveOrUpdate(KwMeter record); - /** - * 保存或更新实体 - * - * @param record - */ - int updateBatch(KwMeter record); /** * 根据Id删除实体 * @@ -69,4 +63,9 @@ public interface KwMeterService { int unbind(Long meterId); int unbindBatch(Long boxId); + + int onlineBatch(List record); + + int offlineBatch(KwMeter record); + } \ No newline at end of file diff --git a/mallinkService/src/main/java/com/iformall/service/kw/impl/KwBoxServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/kw/impl/KwBoxServiceImpl.java index 9627e681a..0c0b4066c 100644 --- a/mallinkService/src/main/java/com/iformall/service/kw/impl/KwBoxServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/kw/impl/KwBoxServiceImpl.java @@ -124,16 +124,30 @@ public class KwBoxServiceImpl implements KwBoxService { }); - List onlines = kwMeterDataList.stream().filter(md->md.getTotalPower()!=null).map(KwMeterData::getMeterId).collect(Collectors.toList()); - if (onlines.size() > 0) { + List onlineMeters = kwMeterDataList.stream().filter(md->md.getTotalPower()!=null) + .map( md->{ + KwMeter kwMeter = new KwMeter(); + kwMeter.setId(md.getMeterId()); + kwMeter.setTotalPower(md.getTotalPower()); + return kwMeter; + }).collect(Collectors.toList()); + if (onlineMeters.size() > 0) { + kwMeterService.onlineBatch(onlineMeters); + } + + List offlineIds = kwMeterDataList.stream().filter(md->md.getTotalPower()==null).map(KwMeterData::getMeterId).collect(Collectors.toList()); + if (offlineIds.size() > 0) { KwMeter kwMeter = new KwMeter(); - kwMeter.setIds(onlines); - kwMeter.setOnlineStatus(EnumMeterOnlineStatus.ONLINE.getCode()); - kwMeter.setLastOnlineTime(new Date()); - kwMeterService.updateBatch(kwMeter); + kwMeter.setIds(offlineIds); + kwMeterService.offlineBatch(kwMeter); + } + + List onlineIds = kwMeterDataList.stream().filter(md->md.getTotalPower()!=null) + .map(KwMeterData::getMeterId).collect(Collectors.toList()); + if (onlineIds.size() > 0) { KwMeterData param = new KwMeterData(); - param.setIds(onlines); + param.setIds(onlineIds); List lastRecordList = kwMeterDataService.findLastRecordList(param); kwMeterDataList.stream().forEach(md->{ Optional data = lastRecordList.stream().filter(lr->lr.getMeterId().equals(md.getMeterId())).findAny(); @@ -146,14 +160,6 @@ public class KwBoxServiceImpl implements KwBoxService { }); } - List offlines = kwMeterDataList.stream().filter(md->md.getTotalPower()==null).map(KwMeterData::getMeterId).collect(Collectors.toList()); - if (offlines.size() > 0) { - KwMeter kwMeter = new KwMeter(); - kwMeter.setIds(offlines); - kwMeter.setOnlineStatus(EnumMeterOnlineStatus.OFFLINE.getCode()); - kwMeterService.updateBatch(kwMeter); - } - kwMeterDataService.save(kwMeterDataList); } } diff --git a/mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterServiceImpl.java index f166eab22..222a20829 100644 --- a/mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/kw/impl/KwMeterServiceImpl.java @@ -50,8 +50,13 @@ public class KwMeterServiceImpl implements KwMeterService { } @Override - public int updateBatch(KwMeter record) { - return kwMeterMapper.updateBatch(record); + public int onlineBatch(List record) { + return kwMeterMapper.onlineBatch(record); + } + + @Override + public int offlineBatch(KwMeter record) { + return kwMeterMapper.offlineBatch(record); } @Override @@ -83,7 +88,6 @@ public class KwMeterServiceImpl implements KwMeterService { return kwMeterMapper.bindBatch(boxId, meterIds); } - @Override public int unbind(Long meterId) { if (meterId == null) diff --git a/mallinkService/src/main/resources/mapper/KwMerchantMeterMapper.xml b/mallinkService/src/main/resources/mapper/KwMerchantMeterMapper.xml index 53afcb73c..86ca5f889 100644 --- a/mallinkService/src/main/resources/mapper/KwMerchantMeterMapper.xml +++ b/mallinkService/src/main/resources/mapper/KwMerchantMeterMapper.xml @@ -65,6 +65,7 @@ + @@ -79,15 +80,9 @@ - - - - - - + select m.`id`, m.`last_total_power` from kw_merchant_meter mm left join kw_meter m on mm.`meter_id` = m.id where mm.`status` = 0 diff --git a/mallinkService/src/main/resources/mapper/KwMeterMapper.xml b/mallinkService/src/main/resources/mapper/KwMeterMapper.xml index 44b78745b..93ed07c85 100644 --- a/mallinkService/src/main/resources/mapper/KwMeterMapper.xml +++ b/mallinkService/src/main/resources/mapper/KwMeterMapper.xml @@ -11,6 +11,7 @@ + @@ -21,7 +22,7 @@ - `id`,`tenant_id`,`address`,`brand`,`model`,`place`,`protocol`,`bandrate`,`last_online_time`,`online_status`,`config`,`create_time`,`update_time`,`box_id`,`status`,`bind_status` + `id`,`tenant_id`,`address`,`brand`,`model`,`place`,`protocol`,`bandrate`,`last_online_time`,`last_total_power`,`online_status`,`config`,`create_time`,`update_time`,`box_id`,`status`,`bind_status` @@ -90,19 +91,36 @@ - - update kw_meter set - - last_online_time = #{lastOnlineTime}, - - online_status = #{onlineStatus} + + update kw_meter + set + + + + + when id = #{i.id} + then #{i.lastTotalPower} + + + + online_status = 1, + last_online_time = now() + + where id in + + #{idItem} + + + + + update kw_meter + set + online_status = 0 where id in #{idItem} - - and `online_status` = 1 - + and `online_status` = 1