|
@@ -7,10 +7,14 @@ import com.zcxk.dao.mysql.SendDao;
|
|
|
import com.zcxk.dao.sqlserver.ReceiveDao;
|
|
|
import com.zcxk.entity.*;
|
|
|
import com.zcxk.job.SyncMeterDataJob;
|
|
|
+import com.zcxk.service.SyncService;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.quartz.CronExpression;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
+import org.springframework.scheduling.annotation.EnableScheduling;
|
|
|
+import org.springframework.scheduling.annotation.Scheduled;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
import org.springframework.web.bind.annotation.GetMapping;
|
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
|
|
|
@@ -22,168 +26,22 @@ import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
|
|
|
-@RestController
|
|
|
+@EnableScheduling
|
|
|
+@Service
|
|
|
+
|
|
|
public class DemoController {
|
|
|
- // @Autowired
|
|
|
- ReceiveDao receiveDao;
|
|
|
- @Autowired
|
|
|
- SendDao sendDao;
|
|
|
- @Value("${customerId}")
|
|
|
- Integer customerId;
|
|
|
- @Value("${siteId}")
|
|
|
- Integer siteId;
|
|
|
- @Value("${sysId}")
|
|
|
- Integer sysId;
|
|
|
- @Value("${buildingId}")
|
|
|
- Integer buildingId;
|
|
|
@Autowired
|
|
|
- private QuartzManager quartzManager;
|
|
|
+ private SyncService syncService;
|
|
|
@GetMapping("/getBaseInfo")
|
|
|
- public void countPlanDevice(Integer id){
|
|
|
-
|
|
|
- WaterMeterBaseEntity waterMeterBaseEntity=new WaterMeterBaseEntity();
|
|
|
- SnowflakeIdWorker idWorker = new SnowflakeIdWorker(0, 0);
|
|
|
- waterMeterBaseEntity.setRegionId(id+"");
|
|
|
- List<Map<String, Object>> meterInfor = receiveDao.getMeterInfor(waterMeterBaseEntity);
|
|
|
- Map<String,Object>args=new HashMap<>();
|
|
|
- args.put("customerId",customerId);
|
|
|
- Set<String> hasDeviceNos = sendDao.selectDevice(args);
|
|
|
- List<DeviceType> deviceTypes = sendDao.selectDeviceType();
|
|
|
- Map<String,DeviceType>mapDeviceType=new HashMap<>();
|
|
|
- deviceTypes.forEach(deviceType -> {
|
|
|
- mapDeviceType.put(deviceType.getModel(),deviceType);
|
|
|
- });
|
|
|
-
|
|
|
- Set<String> allDeviceNos=new HashSet<>();
|
|
|
- meterInfor.forEach(map->{
|
|
|
- String deviceNo=(String) map.get("releationId");
|
|
|
- allDeviceNos.add(StringUtils.lowerCase(deviceNo));
|
|
|
- });
|
|
|
- Sets.SetView<String> difference = Sets.difference(allDeviceNos, hasDeviceNos);
|
|
|
- for (String temp : difference) {
|
|
|
- System.out.println(temp);
|
|
|
- }
|
|
|
- List<Device>needAddWaterMeter=new ArrayList<>();
|
|
|
- meterInfor.forEach(map->{
|
|
|
- String deviceNo=(String) map.get("releationId");
|
|
|
- if(difference.contains(deviceNo)){
|
|
|
- Device device = new Device();
|
|
|
- device.setId(idWorker.nextId());
|
|
|
- device.setDeviceNo(StringUtils.lowerCase(deviceNo));
|
|
|
- DeviceType deviceType = mapDeviceType.get(map.get("releationId"));
|
|
|
- if(deviceType!=null){
|
|
|
- device.setDeviceType(deviceType.getDeviceType() );
|
|
|
- device.setManufacturerId(deviceType.getManufacturerId());
|
|
|
- }
|
|
|
- device.setSysId(sysId);
|
|
|
- device.setSiteId(siteId);
|
|
|
- device.setBuildingId(buildingId);
|
|
|
- device.setLocDesc((String) map.get("address"));
|
|
|
-
|
|
|
- device.setDeviceStatus(5+"");//未启用
|
|
|
- device.setStatus(1);
|
|
|
- device.setDateCreate(new Date());
|
|
|
- device.setCreateBy("system");
|
|
|
- device.setCustomerId(customerId);
|
|
|
- device.setWaterMeterNo((String) map.get("meterNo"));
|
|
|
- device.setRegisterStatus(0);
|
|
|
- needAddWaterMeter.add(device);
|
|
|
-
|
|
|
- }
|
|
|
- });
|
|
|
- if(needAddWaterMeter.size()>0){
|
|
|
- sendDao.insertDeviceInfo(needAddWaterMeter);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ public void countPlanDevice(){
|
|
|
+ syncService.countPlanDevice();
|
|
|
}
|
|
|
@GetMapping("/uploadData")
|
|
|
public void uploadData(){
|
|
|
- Map<String,Object>args2=new HashMap<>();
|
|
|
- List<Map<String, Object>> uploadPlan = receiveDao.getUploadPlan(args2);
|
|
|
- uploadPlan.forEach(map->{
|
|
|
- TaskEntity taskEntity=new TaskEntity();
|
|
|
- taskEntity.setPlanId((String) map.get("PlanId"));
|
|
|
-
|
|
|
- receiveDao.creatUploadTask(taskEntity);
|
|
|
- if(taskEntity.getReturnCode()==1){
|
|
|
-
|
|
|
-
|
|
|
- try {
|
|
|
- Map<String,Object>args=new HashMap<>();
|
|
|
-
|
|
|
- List<MeterDataEntity>datas=new ArrayList<>();
|
|
|
- SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
- Date date= (Date) map.get("UploadTime");
|
|
|
- LocalDateTime time=dateToLocateDateTime(date);
|
|
|
-
|
|
|
- String needUploadTime = time.plusDays(-1).format(DateTimeFormatter.ofPattern("yyyyMMdd"));
|
|
|
- //LocalDateTime ldt = LocalDateTime.parse("2017-09-28 17:07:05",df);
|
|
|
- int needUploadTimeDate = Integer.parseInt(needUploadTime);
|
|
|
- args.put("readDate",needUploadTimeDate);
|
|
|
- args.put("customerId",customerId);
|
|
|
- List<MeterReadRecord> meterReadRecords = sendDao.selectDeviceMeterReader(args);
|
|
|
- meterReadRecords.forEach(meterReadRecord -> {
|
|
|
- MeterDataEntity meterDataEntity=new MeterDataEntity();
|
|
|
- meterDataEntity.setReleationId(meterReadRecord.getDeviceNo());
|
|
|
- meterDataEntity.setCurrentReading(Float.parseFloat(meterReadRecord.getReadData()));
|
|
|
- meterDataEntity.setCurrentReadDate(simpleDateFormat.format(meterReadRecord.getReadTime()));
|
|
|
- datas.add(meterDataEntity);
|
|
|
- });
|
|
|
-
|
|
|
- if(datas.size()>0){
|
|
|
- UploadWaterMeterDataEntity uploadWaterMeterDataEntity=new UploadWaterMeterDataEntity();
|
|
|
- uploadWaterMeterDataEntity.setTaskId(taskEntity.getTaskId());
|
|
|
- uploadWaterMeterDataEntity.setMeterData(datas);
|
|
|
- receiveDao.meterDataInsert(uploadWaterMeterDataEntity);
|
|
|
- System.out.println(1);
|
|
|
- }
|
|
|
-
|
|
|
- }catch (Exception e){
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- });
|
|
|
+ syncService.uploadData();
|
|
|
}
|
|
|
- private LocalDateTime dateToLocateDateTime(Date date) {
|
|
|
- Instant instant = date.toInstant();
|
|
|
- ZoneId zoneId = ZoneId.systemDefault();
|
|
|
- return LocalDateTime.ofInstant(instant, zoneId);
|
|
|
- }
|
|
|
- @GetMapping("/addJob")
|
|
|
- public void addJob(){
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- String dateTimeStr = "2018-07-28 14:11:15";
|
|
|
- DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
- LocalDateTime dateTime = LocalDateTime.parse(dateTimeStr, df);
|
|
|
- StringBuffer cron=new StringBuffer();
|
|
|
- cron.append(dateTime.getSecond());
|
|
|
- cron.append(" ");
|
|
|
- cron.append(dateTime.getMinute());
|
|
|
- cron.append(" ");
|
|
|
- cron.append(dateTime.getHour());
|
|
|
- cron.append(" ");
|
|
|
- cron.append(dateTime.getDayOfMonth());
|
|
|
- cron.append(" ");
|
|
|
- cron.append(dateTime.getMonth());
|
|
|
- cron.append(" ? *");
|
|
|
- Map<String,Object>args=new HashMap<>();
|
|
|
- args.put("readDate","20210107");
|
|
|
- args.put("customerId",customerId);
|
|
|
- List<DeviceType> deviceTypes = sendDao.selectDeviceType();
|
|
|
- List<MeterReadRecord> meterReadRecords = sendDao.selectDeviceMeterReader(args);
|
|
|
- System.out.println(1);
|
|
|
- //quartzManager.addJob("test", SyncMeterDataJob.class,cron.toString(),666);
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
public static void main(String[] args) {
|
|
|
- String dateTimeStr = "2018-10-31 04:04:04";
|
|
|
+ /* String dateTimeStr = "2018-10-31 04:04:04";
|
|
|
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
LocalDateTime dateTime = LocalDateTime.parse(dateTimeStr, df);
|
|
|
StringBuffer cron=new StringBuffer();
|
|
@@ -197,8 +55,9 @@ public class DemoController {
|
|
|
cron.append(" ");
|
|
|
cron.append(dateTime.getMonth());
|
|
|
cron.append(" ? *");
|
|
|
+ System.out.println(CronExpression.isValidExpression(cron.toString()));
|
|
|
+*/
|
|
|
|
|
|
- System.out.println(CronExpression.isValidExpression(cron.toString()));
|
|
|
}
|
|
|
|
|
|
}
|