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