Bläddra i källkod

泗水对接代码提交 PengDi@2021/1/12

pengdi@zoniot.com 4 år sedan
förälder
incheckning
172d6dd6a9

+ 63 - 22
meter-reading-sishui/read-sqlSever/src/main/java/com/zcxk/service/SyncService.java

@@ -40,6 +40,8 @@ public class SyncService {
     String model;
     @Autowired
     private QuartzManager quartzManager;
+    @Autowired
+    private SyncMeterDataJob syncMeterDataJob;
 
     //@Scheduled(cron = "0 0 * * * ?")
     public void countPlanDevice(){
@@ -55,34 +57,72 @@ public class SyncService {
         if(needAddWaterMeter.size()>0){
             log.info("增加新增泗水水表");
             sendDao.insertDeviceInfo(needAddWaterMeter);
-            needAddWaterMeter.forEach(device->{
-                Building building = sendDao.getBuilding(device.getBuildingId());
-                //2、同步设备维度关系
-                DeviceDimension deviceDimension = new DeviceDimension();
-                deviceDimension.setDeviceId(device.getId());
-                if (building != null) {
-                    deviceDimension.setProvince(String.valueOf(building.getProvince()));
-                    deviceDimension.setCity(String.valueOf(building.getCity()));
-                    deviceDimension.setRegion(String.valueOf(building.getRegion()));
-                    deviceDimension.setCommunity(String.valueOf(building.getCommunity()));
-                    deviceDimension.setBuilding(String.valueOf(building.getId()));
-                }
-                deviceDimension.setFloor(String.valueOf(device.getFloor()));
-                deviceDimension.setDevice(device.getDeviceNo());
-                deviceDimension.setCustomer(String.valueOf(device.getCustomerId()));
-                deviceDimension.setStatus(1);
-                deviceDimension.setCreateBy("system");
-                deviceDimension.setUpdateBy("system");
-                deviceDimension.setDateCreate(LocalDateTime.now());
-                deviceDimension.setDateUpdate(LocalDateTime.now());
-                sendDao.insertSelective(deviceDimension);
-            });//zhuce
+            //添加维度信息
+            setDeviceDimernsionInfo(needAddWaterMeter);
 
         }
 
 
 
     }
+    public void uploadRelationId(){
+        WaterMeterBaseEntity waterMeterBaseEntity=new WaterMeterBaseEntity();
+
+        log.info("获取泗水水表列表");
+        List<Map<String, Object>> meterInfor = receiveDao.getMeterInfor(waterMeterBaseEntity);
+        Sets.SetView<String> meterNoIntersection = needSyncMeterNo(meterInfor);
+        meterInfor.forEach(meter->{
+            String meterNo = (String) meter.get("meterNo");
+            if(meterNoIntersection.contains(meterNo)){
+                Device device=new Device();
+                device.setWaterMeterNo(meterNo);
+                device.setRelationId((String) meter.get("releationId"));
+                device.setCustomerId(customerId);
+                sendDao.updateRelationId(device);
+            }
+
+        });
+
+    }
+    private  Sets.SetView<String>needSyncMeterNo(List<Map<String, Object>> meterInfor){
+
+        Map<String,Object>args=new HashMap<>();
+        args.put("customerId",customerId);
+        Set<String> hasDeviceNos= sendDao.selectMeterNo(args);
+
+        Set<String> allDeviceNos=new HashSet<>();
+        meterInfor.forEach(map->{
+            String meterNo=(String) map.get("meterNo");
+            allDeviceNos.add(meterNo);
+        });
+        Sets.SetView<String> intersection = Sets.intersection(allDeviceNos, hasDeviceNos);
+        return intersection;
+    }
+    private void setDeviceDimernsionInfo(List<Device>needAddWaterMeter){
+        needAddWaterMeter.forEach(device->{
+            Building building = sendDao.getBuilding(device.getBuildingId());
+            //2、同步设备维度关系
+            DeviceDimension deviceDimension = new DeviceDimension();
+            deviceDimension.setDeviceId(device.getId());
+            if (building != null) {
+                deviceDimension.setProvince(String.valueOf(building.getProvince()));
+                deviceDimension.setCity(String.valueOf(building.getCity()));
+                deviceDimension.setRegion(String.valueOf(building.getRegion()));
+                deviceDimension.setCommunity(String.valueOf(building.getCommunity()));
+                deviceDimension.setBuilding(String.valueOf(building.getId()));
+            }
+            deviceDimension.setFloor(String.valueOf(device.getFloor()));
+            deviceDimension.setDevice(device.getDeviceNo());
+            deviceDimension.setCustomer(String.valueOf(device.getCustomerId()));
+            deviceDimension.setStatus(1);
+            deviceDimension.setCreateBy("system");
+            deviceDimension.setUpdateBy("system");
+            deviceDimension.setDateCreate(LocalDateTime.now());
+            deviceDimension.setDateUpdate(LocalDateTime.now());
+            sendDao.insertSelective(deviceDimension);
+        });
+    }
+
     private void setNeddWaterMeters(List<Map<String, Object>> meterInfor, List<Device>needAddWaterMeter){
         List<DeviceType> deviceTypes = sendDao.selectDeviceType();
         Sets.SetView<String> difference =needSyncDeviceNo(meterInfor);
@@ -152,6 +192,7 @@ public class SyncService {
         uploadPlan.forEach(map->{
             String planId=(String) map.get("PlanId");
             log.info("获取泗水上传计划");
+            //syncMeterDataJob.sendTask(map);
             if(!quartzManager.checkExists(planId)){
 
                 quartzManager.addJob(planId, SyncMeterDataJob.class,setCron((Date) map.get("UploadTime")),map);