浏览代码

这才真正解决停机时间相关问题

wukai 6 月之前
父节点
当前提交
436f0f73fd

+ 2 - 1
ruoyi-admin/src/main/java/com/ruoyi/biz/service/ITwinCalcStopService.java

@@ -66,9 +66,10 @@ public interface ITwinCalcStopService {
      * 停机数据治理,从停机记录表到停机统计表中
      *
      * @param startTime  开始时间
+     * @param endTime    结束时间
      * @param deviceList 设备列表
      */
-    void process(LocalDateTime startTime, List<TwinDevice> deviceList);
+    void process(LocalDateTime startTime, LocalDateTime endTime, List<TwinDevice> deviceList);
 
     /**
      * 按开始和结束时间查询数据

+ 1 - 1
ruoyi-admin/src/main/java/com/ruoyi/biz/service/impl/TaskServiceImpl.java

@@ -260,7 +260,7 @@ public class TaskServiceImpl implements ITaskService {
             }
         }
         dbProcess(endTime, calcHours, stopList, alarmsList, panList);
-        stopService.process(ldt, list);
+        stopService.process(ldt, end, list);
         alarmsService.process(ldt, list);
         Date d = new Date();
         log.info("总共消耗:{}ms", d.getTime() - s.getTime());

+ 9 - 5
ruoyi-admin/src/main/java/com/ruoyi/biz/service/impl/TwinCalcStopServiceImpl.java

@@ -114,13 +114,15 @@ public class TwinCalcStopServiceImpl implements ITwinCalcStopService {
      * 停机数据治理,从停机记录表到停机统计表中
      *
      * @param startTime  开始时间
+     * @param endTime    结束时间
      * @param deviceList 设备列表
      */
     @Override
-    public void process(LocalDateTime startTime, List<TwinDevice> deviceList) {
+    public void process(LocalDateTime startTime, LocalDateTime endTime, List<TwinDevice> deviceList) {
         String config = configService.selectConfigByKey("data.legal.time");
         int legalTime = Integer.parseInt(config) * 1000;
         Date date = Date.from(startTime.toLocalDate().atStartOfDay(ZoneOffset.of("+8")).toInstant());
+        Date endDate = Date.from(endTime.toLocalDate().atStartOfDay(ZoneOffset.of("+8")).toInstant());
         List<TwinCalcStop> insertList = new ArrayList<>();
         List<TwinCalcStop> updateList = new ArrayList<>();
         String oldStr = "old";
@@ -147,10 +149,12 @@ public class TwinCalcStopServiceImpl implements ITwinCalcStopService {
             List<TwinRecordStop> list = new ArrayList<>();
             if (oldMap.get(device.getDeviceId()) != null) {
                 oldMap.get(device.getDeviceId()).forEach(old -> {
-                    TwinRecordStop stop = new TwinRecordStop();
-                    BeanUtils.copyProperties(old, stop);
-                    stop.setRemark(oldStr);
-                    list.add(stop);
+                    if (old.getEndTime().before(endDate)) {
+                        TwinRecordStop stop = new TwinRecordStop();
+                        BeanUtils.copyProperties(old, stop);
+                        stop.setRemark(oldStr);
+                        list.add(stop);
+                    }
                 });
             }
             //再处理本次数据,2次结合

+ 1 - 0
ruoyi-admin/src/main/resources/mapper/biz/TwinCalcStopMapper.xml

@@ -42,6 +42,7 @@
                 and END_TIME between #{params.beginEndTime} and #{params.endEndTime}
             </if>
             <if test="stopType != null ">and STOP_TYPE = #{stopType}</if>
+            <if test="dataDate != null ">and DATA_DATE = #{dataDate}</if>
             <if test="calcStatus != null ">and CALC_STATUS = #{calcStatus}</if>
             <if test="createdBy != null  and createdBy != ''">and CREATED_BY = #{createdBy}</if>
             <if test="createdTime != null ">and CREATED_TIME = #{createdTime}</if>