Explorar o código

aps-甘特图校验设备是否可用记录冲突方法优化testin1719

zhoudazhuang hai 8 meses
pai
achega
ff494fe54c

+ 17 - 4
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationProcessEquServiceImpl.java

@@ -1281,13 +1281,26 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
      */
     public void inspectionEquipmentIsAvailable(ApsProcessOperationProcessEquDo processEquDo,
                                                String equId, Date startDate, Date endDate) {
-        // 查询当前设备当前时间段是否存在不可用设备
-        List<ApsEquipmentCalendarDo> list = apsEquipmentCalendarService.list(new LambdaQueryWrapper<ApsEquipmentCalendarDo>()
+        // 查询当前设备是否存在不可以用设备的停机时间为空的数据
+        List<ApsEquipmentCalendarDo> nullSdTimeList = apsEquipmentCalendarService.list(new LambdaQueryWrapper<ApsEquipmentCalendarDo>()
+                        .eq(ApsEquipmentCalendarDo::getProcessdeviceid, equId)
+                        .isNull(ApsEquipmentCalendarDo::getSdendtime));
+        List<ApsEquipmentCalendarDo> list = new ArrayList<>();
+        //注意不可用结束时间为空,表示后面一直不可用
+        if (nullSdTimeList.isEmpty()){
+            // 查询当前设备当前时间段是否存在不可用设备
+            list = apsEquipmentCalendarService.list(new LambdaQueryWrapper<ApsEquipmentCalendarDo>()
                 .eq(ApsEquipmentCalendarDo::getProcessdeviceid, equId)
                 .and(wapper -> wapper.apply("{0}   BETWEEN sdstarttime AND sdendtime", startDate)
                         .or()
-                        .apply("{0}   BETWEEN sdstarttime AND sdendtime", endDate))
-        );
+                        .apply("{0}   BETWEEN sdstarttime AND sdendtime", endDate)));
+        }else {
+            list = apsEquipmentCalendarService.list(new LambdaQueryWrapper<ApsEquipmentCalendarDo>()
+                    .eq(ApsEquipmentCalendarDo::getProcessdeviceid, equId)
+                    .and(wapper -> wapper.apply("sdstarttime<={0}", startDate)
+                            .or()
+                            .apply("sdstarttime<={0}", endDate)));
+        }
         String newConflictdes;
         if (list.isEmpty()) {
             apsConflictLogService.recordLog(processEquDo.getId(), "", EQUIPMENT_RUN_TIME, 2, null);