Sfoglia il codice sorgente

设备状态更新优化

oppadmin 4 anni fa
parent
commit
233d8b5e0c

+ 2 - 3
smart-city-platform/src/main/java/com/bz/smart_city/dto/pay/PayControlRecordDto.java

@@ -24,12 +24,11 @@ public class PayControlRecordDto extends PayControlRecord {
     private String deviceModel;
     @ApiModelProperty(value = "设备状态 1正常 2故障 3无 4预警 5未启用")
     private String deviceStatus;
+    @ApiModelProperty(value = "故障天数")
+    private Integer days;
     @ApiModelProperty(value = "安装地址")
     private String locDesc;
 
-    @ApiModelProperty(value = "设备状态 1正常 2故障 3无 4预警 5未启用")
-    private String controlStatus;
-
     @ApiModelProperty(value = "开始时间",  hidden = true)
     @JsonIgnore
     private LocalDateTime beginTime;

+ 11 - 2
smart-city-platform/src/main/java/com/bz/smart_city/service/impl/pay/DeviceSyncServiceImpl.java

@@ -85,7 +85,7 @@ public class DeviceSyncServiceImpl implements DeviceSyncService, InitializingBea
         if(!exists){
 
             //每隔X分钟一次
-            String cron = "0 */2 * * * ?";
+            String cron = "0 */5 * * * ?";
             log.info("水表安装信息同步"+cron);
             entity.setCronExpression(cron);
             entity.setJobClassName(DeviceSyncJob.class.getName());
@@ -207,6 +207,7 @@ public class DeviceSyncServiceImpl implements DeviceSyncService, InitializingBea
                         leng = count - i*loadNumber;
 
                     if(leng >0){
+                        Map<String,Device> deviceMapmp = new Hashtable<>();
                         List<Device> subDeviceList = new ArrayList<>();
                         subDeviceList.addAll(deviceList.subList(i*loadNumber ,i*loadNumber+leng));
                         SynDeviceStatus synDeviceStatus = new SynDeviceStatus();
@@ -214,6 +215,7 @@ public class DeviceSyncServiceImpl implements DeviceSyncService, InitializingBea
                         synDeviceStatus.setElectronicMeterNos(new ArrayList());
                         for (int k = 0;k < leng ;k++){
                             synDeviceStatus.getElectronicMeterNos().add(subDeviceList.get(k).getWaterMeterNo());
+                            deviceMapmp.put(subDeviceList.get(k).getWaterMeterNo(),subDeviceList.get(k));
                         }
 
                         String json= JSON.toJSON(synDeviceStatus).toString();
@@ -225,12 +227,19 @@ public class DeviceSyncServiceImpl implements DeviceSyncService, InitializingBea
                             List<SynDeviceResult> syncValveResultList = datas.toJavaList(SynDeviceResult.class);
 
                             for (SynDeviceResult SynResutl:syncValveResultList){
+                                Device device = deviceMapmp.get(SynResutl.getElectronicMeterNo());
+                                if(device != null && device.getDeviceStatus() != null && SynResutl.getDeviceStatus() !=null){
+                                    if(device.getDeviceStatus().intValue() == SynResutl.getDeviceStatus())
+                                        continue; //设备状态未改变不更新数据库
+                                }
+
                                 MeterSyncDto meterSyncDto = new MeterSyncDto();
                                 meterSyncDto.setWaterMeterNo(SynResutl.getElectronicMeterNo());
                                 meterSyncDto.setDays(SynResutl.getDays());
                                 meterSyncDto.setDeviceStatus(SynResutl.getDeviceStatus());
                                 deviceMapper.updateSyncDeviceStatus(meterSyncDto);
                             }
+                            deviceMapmp.clear();
 
                         }
                     }
@@ -238,7 +247,7 @@ public class DeviceSyncServiceImpl implements DeviceSyncService, InitializingBea
             }
         }
         catch(Exception ex){
-            ;
+            ex.printStackTrace();
         }
     }
 

+ 3 - 2
smart-city-platform/src/main/resources/mapper/pay/PayControlRecordMapper.xml

@@ -23,7 +23,7 @@
         sc.device_model,
         sc.loc_desc,
         sc.device_status,
-        (case device_status when  1 then '正常' when 2 then CONCAT('故障',case when days >=0 then days else '' end) when 3 then '无' when 4 then '预警' when 5 then '未启用' else null end ) controlStatus
+        sc.days
         from pay_control_record pcr
         left join pay_control_rule pcrule on pcr.control_rule_id = pcrule.id
         left join sc_device sc on pcr.meter_id = sc.id
@@ -69,7 +69,8 @@
         sc.metercode,
         sc.device_model,
         sc.loc_desc,
-        sc.device_status
+        sc.device_status,
+        sc.days
         from pay_control_record pcr
         left join pay_control_rule pcrule on pcr.control_rule_id = pcrule.id
         left join sc_device sc on pcr.meter_id = sc.id