Browse Source

aps-换线判断是否冲突逻辑更改

sucheng 6 tháng trước cách đây
mục cha
commit
e7a271d310

+ 3 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProcessOperationProcessEquDao.java

@@ -1,5 +1,6 @@
 package com.rongwei.bscommon.sys.dao;
 
+import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
 import com.rongwei.bsentity.domain.ApsProductDetailDo;
@@ -116,6 +117,8 @@ public interface ApsProcessOperationProcessEquDao extends BaseMapper<ApsProcessO
     int selectOtherDeviceCount(@Param("processdeviceid") String processdeviceid,@Param("apsProcessOperationProcessEquDoId") String apsProcessOperationProcessEquDoId, @Param("planstartdate") Date planstartdate);
 
     String getNeedSelectEquTypes(@Param("operationJobDetailsId") List<String> operationJobDetailsId);
+
+    List<ProcessVo> selectMyProcessVo(@Param("equId") String equId, @Param("date1") Date date1, @Param("date2") Date date2);
 }
 
 

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

@@ -1,5 +1,6 @@
 package com.rongwei.bscommon.sys.service.impl;
 
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -21,6 +22,7 @@ import com.rongwei.rwcommon.utils.SecurityUtil;
 import com.rongwei.rwcommon.utils.StringUtils;
 import com.rongwei.safecommon.utils.CXCommonUtils;
 import com.rongwei.safecommon.utils.SaveConstans;
+import com.rongwei.wfserver.wfcommon.sys.service.impl.ProcessServiceImpl;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -81,6 +83,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
     private HttpServletRequest httpServletRequest;
     @Autowired
     private ApsProcessOperationProcessEquService apsProcessOperationProcessEquService;
+    @Autowired
+    private ProcessServiceImpl processService;
 
     /**
      * 更新工序的待加工批次号信息
@@ -364,8 +368,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 String processWay = apsProcessOperationDo.getProcessway();
                 // 单卷加工时长
                 BigDecimal onceprocessmin = apsProcessOperationDo.getOnceprocessmin();
-                updateConflictVo.setOldPlanEnddate(planstartdate);
-                updateConflictVo.setOldPlanStartdate(planenddate);
+                updateConflictVo.setOldPlanEnddate(planenddate);
+                updateConflictVo.setOldPlanStartdate(planstartdate);
                 updateConflictVo.setCurrentProcessWay(processWay);
                 updateConflictVo.setOldEquId(processEqus.getProcessdeviceid());
                 // 待开工的直接修改
@@ -553,7 +557,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                     affectedIdList.addAll(checkProcessingTimeConflict(apsProcessOperationProcessEquDo,
                             data.getOldPlanStartdate(), data.getOldPlanEnddate(), data.getOldEquId(), data.getCurrentProcessWay(), returnAboutIds));
                     // 判断是否存在设备不可用
-                    inspectionEquipmentIsAvailable(apsProcessOperationProcessEquDo,
+                    ApsProcessOperationProcessEquDo newApsProcessEqu = this.getById(apsProcessOperationProcessEquDo.getId());
+                    inspectionEquipmentIsAvailable(newApsProcessEqu,
                             apsProcessOperationProcessEquDo.getProcessdeviceid(),
                             apsProcessOperationProcessEquDo.getPlanstartdate(),
                             apsProcessOperationProcessEquDo.getPlanenddate());
@@ -1409,6 +1414,46 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
         this.updateBatchById(afterTheUpdateConflictId);
     }
 
+    //新增冲突
+    public void addConflict(List<ProcessVo> needAddConflictList, String conflictsDesc, String aboutId) {
+        if (needAddConflictList.isEmpty()) {
+            return;
+        }
+        List<ApsProcessOperationProcessEquDo> needUpdateList = new LinkedList<>();
+        for (ProcessVo needRemove : needAddConflictList) {
+            ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = new ApsProcessOperationProcessEquDo();
+            apsProcessOperationProcessEquDo.setId(needRemove.getProcessEquId());
+            String newConflictsDesc = addNewConflictsDesc(needRemove.getConflictdes(), conflictsDesc);
+            apsProcessOperationProcessEquDo.setConflictdes(newConflictsDesc);
+            apsProcessOperationProcessEquDo.setHasconflict(StringUtils.isBlank(apsProcessOperationProcessEquDo.getConflictdes()) && StringUtils.isBlank(needRemove.getSoftconflictdes()) ?
+                    LOCKMARK_N : LOCKMARK_Y);
+            apsProcessOperationProcessEquDo.setModifydate(new Date());
+            needUpdateList.add(apsProcessOperationProcessEquDo);
+            apsConflictLogService.recordLog(apsProcessOperationProcessEquDo.getId(), aboutId, EQ_TIME_CROSS, 1, null);
+        }
+        this.updateBatchById(needUpdateList);
+    }
+
+    //删除冲突
+    public void removeConflict(List<ProcessVo> needRemoveConflictList, String conflictsDesc, String aboutId) {
+        if (needRemoveConflictList.isEmpty()) {
+            return;
+        }
+        List<ApsProcessOperationProcessEquDo> needUpdateList = new LinkedList<>();
+        for (ProcessVo needRemove : needRemoveConflictList) {
+            ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = new ApsProcessOperationProcessEquDo();
+            apsProcessOperationProcessEquDo.setId(needRemove.getProcessEquId());
+            String newConflictsDesc = removeConflictsDesc(needRemove.getConflictdes(), conflictsDesc);
+            apsProcessOperationProcessEquDo.setConflictdes(newConflictsDesc);
+            apsProcessOperationProcessEquDo.setHasconflict(StringUtils.isBlank(apsProcessOperationProcessEquDo.getConflictdes()) && StringUtils.isBlank(needRemove.getSoftconflictdes()) ?
+                    LOCKMARK_N : LOCKMARK_Y);
+            apsProcessOperationProcessEquDo.setModifydate(new Date());
+            needUpdateList.add(apsProcessOperationProcessEquDo);
+            apsConflictLogService.recordLog(apsProcessOperationProcessEquDo.getId(), aboutId, EQ_TIME_CROSS, 2, null);
+        }
+        this.updateBatchById(needUpdateList);
+    }
+
     /**
      * 删除旧冲突
      *
@@ -1486,84 +1531,179 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                                                     String oldEquId, String currentProcessWay, List<String> returnAboutIds) {
         // 受影响的工序作业Id
         List<String> affectedIdList = new ArrayList<>();
-        // 获取更新之前的存在冲突的工序作业
-        List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId = this.baseMapper.getTimeOverlapByEquId(oldEquId,
-                apsProcessOperationProcessEquDo.getId(), oldPlanstartdate, oldPlanenddate, currentProcessWay);
+        //获取更新之前 所在设备 可能存在冲突的所有工序作业:前5天和后5天
+        Date olddate1 = DateUtil.offsetDay(oldPlanstartdate, -5);
+        Date olddate2 = DateUtil.offsetDay(oldPlanenddate, 5);
+        List<ProcessVo> oldList = this.baseMapper.selectMyProcessVo(oldEquId, olddate1, olddate2);
+        List<ProcessVo> needRemoveTimeOverLapList = checkNeedRemove(oldList,
+                oldPlanstartdate,
+                oldPlanenddate,
+                apsProcessOperationProcessEquDo.getId());
+        //把自己的冲突也删掉
+        ProcessVo processVo = new ProcessVo();
+        processVo.setProcessEquId(apsProcessOperationProcessEquDo.getId());
+        processVo.setProcessWay(currentProcessWay);
+        processVo.setConflictdes(apsProcessOperationProcessEquDo.getConflictdes());
+        processVo.setSoftconflictdes(apsProcessOperationProcessEquDo.getSoftconflictdes());
+        needRemoveTimeOverLapList.add(processVo);
+        List<String> needRemoveTimeOverLapIdList = needRemoveTimeOverLapList.stream().map(ProcessVo::getProcessEquId).collect(Collectors.toList());
+
+        //获取更新之后 所在设备 可能存在冲突的所有工序作业:前5天和后5天
+        DateTime newdate1 = DateUtil.offsetDay(apsProcessOperationProcessEquDo.getPlanstartdate(), -5);
+        DateTime newdate2 = DateUtil.offsetDay(apsProcessOperationProcessEquDo.getPlanenddate(), 5);
+        List<ProcessVo> newList = this.baseMapper.selectMyProcessVo(apsProcessOperationProcessEquDo.getProcessdeviceid(), newdate1, newdate2);
+        List<ProcessVo> needAddTimeOverLapList = checkNeedAdd(newList,
+                apsProcessOperationProcessEquDo.getPlanstartdate(),
+                apsProcessOperationProcessEquDo.getPlanenddate(),
+                apsProcessOperationProcessEquDo.getId());
+        if (!needAddTimeOverLapList.isEmpty()){
+            //把自己的冲突增加
+            ProcessVo processVo2 = new ProcessVo();
+            processVo2.setProcessEquId(apsProcessOperationProcessEquDo.getId());
+            processVo2.setProcessWay(currentProcessWay);
+            processVo2.setConflictdes(apsProcessOperationProcessEquDo.getConflictdes());
+            processVo2.setSoftconflictdes(apsProcessOperationProcessEquDo.getSoftconflictdes());
+            needAddTimeOverLapList.add(processVo2);
+        }
+        List<String> needAddTimeOverLapIdList = needAddTimeOverLapList.stream().map(ProcessVo::getProcessEquId).collect(Collectors.toList());
+
+
+        //如果需要新增的id包含删除的,去除删除中的id
+        needRemoveTimeOverLapIdList.removeAll(needAddTimeOverLapIdList);
+        needRemoveTimeOverLapList.removeAll(needAddTimeOverLapList);
+
+        affectedIdList.addAll(needRemoveTimeOverLapIdList);
+        affectedIdList.addAll(needAddTimeOverLapIdList);
+
+
+//        // 获取更新之前的存在冲突的工序作业
+//        List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId = this.baseMapper.getTimeOverlapByEquId(oldEquId,
+//                apsProcessOperationProcessEquDo.getId(), oldPlanstartdate, oldPlanenddate, currentProcessWay);
         log.info("参数旧的的设备id:{}", oldEquId);
         log.info("参数工序作业明细主键:{}", apsProcessOperationProcessEquDo.getId());
         log.info("参数旧的计划开工日期:{}", oldPlanstartdate);
         log.info("参数旧的计划完工日期:{}", oldPlanenddate);
         log.info("参数当前工序作业加工方式:{}", currentProcessWay);
-        log.info("获取更新之前的存在冲突的工序作业结果:{}", beforeUpdatingConflictId);
-        List<ApsProcessOperationProcessEquDo> aboutProcessEquList = new ArrayList<>();
-        if (!returnAboutIds.isEmpty()) {
-            aboutProcessEquList = (List<ApsProcessOperationProcessEquDo>) apsProcessOperationProcessEquService.listByIds(returnAboutIds);
-        }
-        if (!beforeUpdatingConflictId.isEmpty()) {
-            affectedIdList.addAll(beforeUpdatingConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
-            updateProcessEquBeforeAddConflictsDesc(beforeUpdatingConflictId, EQ_TIME_CROSS, currentProcessWay,
-                    apsProcessOperationProcessEquDo.getPlanstartdate(),
-                    apsProcessOperationProcessEquDo.getPlanenddate(), apsProcessOperationProcessEquDo.getId());
-            if (!aboutProcessEquList.isEmpty()) {
-                updateProcessEquAboutBeforeAddConflictsDesc(aboutProcessEquList, EQ_TIME_CROSS, currentProcessWay,
-                        apsProcessOperationProcessEquDo.getPlanstartdate(),
-                        apsProcessOperationProcessEquDo.getPlanenddate(), apsProcessOperationProcessEquDo.getId());
-            }
-        }
+        removeConflict(needRemoveTimeOverLapList, EQ_TIME_CROSS, apsProcessOperationProcessEquDo.getId());
+//        log.info("获取更新之前的存在冲突的工序作业结果:{}", beforeUpdatingConflictId);
+//        List<ApsProcessOperationProcessEquDo> aboutProcessEquList = new ArrayList<>();
+//        if (!returnAboutIds.isEmpty()) {
+//            aboutProcessEquList = (List<ApsProcessOperationProcessEquDo>) apsProcessOperationProcessEquService.listByIds(returnAboutIds);
+//        }
+//        if (!beforeUpdatingConflictId.isEmpty()) {
+//            affectedIdList.addAll(beforeUpdatingConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
+//            updateProcessEquBeforeAddConflictsDesc(beforeUpdatingConflictId, EQ_TIME_CROSS, currentProcessWay,
+//                    apsProcessOperationProcessEquDo.getPlanstartdate(),
+//                    apsProcessOperationProcessEquDo.getPlanenddate(), apsProcessOperationProcessEquDo.getId());
+//            if (!aboutProcessEquList.isEmpty()) {
+//                updateProcessEquAboutBeforeAddConflictsDesc(aboutProcessEquList, EQ_TIME_CROSS, currentProcessWay,
+//                        apsProcessOperationProcessEquDo.getPlanstartdate(),
+//                        apsProcessOperationProcessEquDo.getPlanenddate(), apsProcessOperationProcessEquDo.getId());
+//            }
+//        }
 
         // 找到更新时间之后存在冲突的工序作业
-        List<ApsProcessOperationProcessEquDo> afterTheUpdateConflictId = this.baseMapper.getConflictId(
-                apsProcessOperationProcessEquDo.getProcessdeviceid(), apsProcessOperationProcessEquDo.getId(),
-                apsProcessOperationProcessEquDo.getPlanstartdate(), apsProcessOperationProcessEquDo.getPlanenddate(),
-                currentProcessWay);
+//        List<ApsProcessOperationProcessEquDo> afterTheUpdateConflictId = this.baseMapper.getConflictId(
+//                apsProcessOperationProcessEquDo.getProcessdeviceid(), apsProcessOperationProcessEquDo.getId(),
+//                apsProcessOperationProcessEquDo.getPlanstartdate(), apsProcessOperationProcessEquDo.getPlanenddate(),
+//                currentProcessWay);
         log.info("参数新的的设备id:{}", apsProcessOperationProcessEquDo.getProcessdeviceid());
         log.info("参数工序作业明细主键:{}", apsProcessOperationProcessEquDo.getId());
         log.info("参数新的计划开工日期:{}", apsProcessOperationProcessEquDo.getPlanstartdate());
         log.info("参数新的计划完工日期:{}", apsProcessOperationProcessEquDo.getPlanenddate());
         log.info("参数当前工序作业加工方式:{}", currentProcessWay);
-        log.info("找到更新时间之后存在冲突的工序作业结果:{}", afterTheUpdateConflictId);
-        affectedIdList.addAll(afterTheUpdateConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
-        if (!afterTheUpdateConflictId.isEmpty()) {
-            apsProcessOperationProcessEquDo.setHasconflict(LOCKMARK_Y);
-            // 更新当前工序作业增加新的冲突
-            String newConflictsDesc = addNewConflictsDesc(apsProcessOperationProcessEquDo.getConflictdes(), EQ_TIME_CROSS);
-            apsProcessOperationProcessEquDo.setConflictdes(newConflictsDesc);
-            apsConflictLogService.recordLog(apsProcessOperationProcessEquDo.getId(),
-                    afterTheUpdateConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.joining(",")), EQ_TIME_CROSS, 1, null);
-            updateProcessEquAfterAddConflictsDesc(afterTheUpdateConflictId, EQ_TIME_CROSS, apsProcessOperationProcessEquDo.getId());
-        } else {
-            // 去掉工序作业的冲突
-            String newConflictsDesc = removeConflictsDesc(apsProcessOperationProcessEquDo.getConflictdes(), EQ_TIME_CROSS);
-            apsConflictLogService.recordLog(apsProcessOperationProcessEquDo.getId(), "", EQ_TIME_CROSS, 2, null);
-            apsProcessOperationProcessEquDo.setConflictdes(newConflictsDesc);
-            apsProcessOperationProcessEquDo.setHasconflict(StringUtils.isBlank(apsProcessOperationProcessEquDo.getConflictdes()) &&
-                    StringUtils.isBlank(apsProcessOperationProcessEquDo.getSoftconflictdes()) ?
-                    LOCKMARK_N : LOCKMARK_Y);
-            this.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
-                    .eq(ApsProcessOperationProcessEquDo::getId, apsProcessOperationProcessEquDo.getId())
-                    .set(ApsProcessOperationProcessEquDo::getConflictdes, newConflictsDesc)
-                    .set(ApsProcessOperationProcessEquDo::getHasconflict, apsProcessOperationProcessEquDo.getHasconflict())
-                    .set(BaseDo::getModifydate, new Date())
-            );
-            if (!aboutProcessEquList.isEmpty()) {
-                aboutProcessEquList.forEach(e -> {
-                    if (StringUtils.isNotBlank(e.getConflictdes()) && e.getConflictdes().contains(EQ_TIME_CROSS)) {
-                        String afterConflictdes = removeConflictsDesc(e.getConflictdes(), EQ_TIME_CROSS);
-                        apsConflictLogService.recordLog(e.getId(), "", EQ_TIME_CROSS, 2, null);
-                        e.setConflictdes(afterConflictdes);
-                        e.setHasconflict(StringUtils.isBlank(e.getConflictdes()) &&
-                                StringUtils.isBlank(e.getSoftconflictdes()) ?
-                                LOCKMARK_N : LOCKMARK_Y);
-                        this.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
-                                .eq(ApsProcessOperationProcessEquDo::getId, e.getId())
-                                .set(ApsProcessOperationProcessEquDo::getConflictdes, newConflictsDesc)
-                                .set(ApsProcessOperationProcessEquDo::getHasconflict, e.getHasconflict())
-                                .set(BaseDo::getModifydate, new Date()));
-                    }
-                });
+        addConflict(needAddTimeOverLapList, EQ_TIME_CROSS, apsProcessOperationProcessEquDo.getId());
+//        log.info("找到更新时间之后存在冲突的工序作业结果:{}", afterTheUpdateConflictId);
+//        affectedIdList.addAll(afterTheUpdateConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
+//        if (!afterTheUpdateConflictId.isEmpty()) {
+//            apsProcessOperationProcessEquDo.setHasconflict(LOCKMARK_Y);
+//            // 更新当前工序作业增加新的冲突
+//            String newConflictsDesc = addNewConflictsDesc(apsProcessOperationProcessEquDo.getConflictdes(), EQ_TIME_CROSS);
+//            apsProcessOperationProcessEquDo.setConflictdes(newConflictsDesc);
+//            apsConflictLogService.recordLog(apsProcessOperationProcessEquDo.getId(),
+//                    afterTheUpdateConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.joining(",")), EQ_TIME_CROSS, 1, null);
+//            updateProcessEquAfterAddConflictsDesc(afterTheUpdateConflictId, EQ_TIME_CROSS, apsProcessOperationProcessEquDo.getId());
+//        } else {
+//            // 去掉工序作业的冲突
+//            String newConflictsDesc = removeConflictsDesc(apsProcessOperationProcessEquDo.getConflictdes(), EQ_TIME_CROSS);
+//            apsConflictLogService.recordLog(apsProcessOperationProcessEquDo.getId(), "", EQ_TIME_CROSS, 2, null);
+//            apsProcessOperationProcessEquDo.setConflictdes(newConflictsDesc);
+//            apsProcessOperationProcessEquDo.setHasconflict(StringUtils.isBlank(apsProcessOperationProcessEquDo.getConflictdes()) &&
+//                    StringUtils.isBlank(apsProcessOperationProcessEquDo.getSoftconflictdes()) ?
+//                    LOCKMARK_N : LOCKMARK_Y);
+//            this.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
+//                    .eq(ApsProcessOperationProcessEquDo::getId, apsProcessOperationProcessEquDo.getId())
+//                    .set(ApsProcessOperationProcessEquDo::getConflictdes, newConflictsDesc)
+//                    .set(ApsProcessOperationProcessEquDo::getHasconflict, apsProcessOperationProcessEquDo.getHasconflict())
+//                    .set(BaseDo::getModifydate, new Date())
+//            );
+//            if (!aboutProcessEquList.isEmpty()) {
+//                aboutProcessEquList.forEach(e -> {
+//                    if (StringUtils.isNotBlank(e.getConflictdes()) && e.getConflictdes().contains(EQ_TIME_CROSS)) {
+//                        String afterConflictdes = removeConflictsDesc(e.getConflictdes(), EQ_TIME_CROSS);
+//                        apsConflictLogService.recordLog(e.getId(), "", EQ_TIME_CROSS, 2, null);
+//                        e.setConflictdes(afterConflictdes);
+//                        e.setHasconflict(StringUtils.isBlank(e.getConflictdes()) &&
+//                                StringUtils.isBlank(e.getSoftconflictdes()) ?
+//                                LOCKMARK_N : LOCKMARK_Y);
+//                        this.update(new LambdaUpdateWrapper<ApsProcessOperationProcessEquDo>()
+//                                .eq(ApsProcessOperationProcessEquDo::getId, e.getId())
+//                                .set(ApsProcessOperationProcessEquDo::getConflictdes, newConflictsDesc)
+//                                .set(ApsProcessOperationProcessEquDo::getHasconflict, e.getHasconflict())
+//                                .set(BaseDo::getModifydate, new Date()));
+//                    }
+//                });
+//            }
+//        }
+        return affectedIdList;
+    }
+
+    private List<ProcessVo> checkNeedAdd(List<ProcessVo> newList,
+                                         Date newPlanstartdate, Date newPlanenddate,
+                                         String processEquId) {
+        //判断当前是否存在冲突
+        List<ProcessVo> haveTimeOverLapList = newList.stream().filter(item -> haveTimeOverLap(item, processEquId, newPlanstartdate, newPlanenddate,false)).collect(Collectors.toList());
+        return haveTimeOverLapList;
+    }
+
+    private List<ProcessVo> checkNeedRemove(List<ProcessVo> oldList,
+                                            Date oldPlanstartdate, Date oldPlanenddate,
+                                            String processEquId) {
+        List<ProcessVo> needRemoveTimeOverLapIdList = new LinkedList<>();
+        //移除前存在冲突的数据
+        List<ProcessVo> haveTimeOverLapList = oldList.stream().filter(item -> haveTimeOverLap(item, processEquId, oldPlanstartdate, oldPlanenddate,true)).collect(Collectors.toList());
+        if (!haveTimeOverLapList.isEmpty()) {
+            //判断是否还有时间冲突,如果没有时间冲突,去除时间冲突,还存在时间冲突,则不更改数据
+            for (ProcessVo processVo : haveTimeOverLapList) {
+                long count = oldList.stream().filter(item -> haveTimeOverLap(item, processVo.getProcessEquId(), processVo.getPlanStartTime(), processVo.getPlanEndTime(),true)).count();
+                if (count == 0) {
+                    needRemoveTimeOverLapIdList.add(processVo);
+                }
             }
         }
-        return affectedIdList;
+        return needRemoveTimeOverLapIdList;
+    }
+
+    private boolean haveTimeOverLap(ProcessVo item, String processEquId, Date oldPlanstartdate, Date oldPlanenddate,boolean isRemove) {
+        if (isRemove && item.getProcessEquId().equals(processEquId)) {
+            return false;
+        }
+        Date planstartdate = item.getPlanStartTime();
+        Date planenddate = item.getPlanEndTime();
+        //是合并工序
+        if (item.getProcessWay().equals(PROCESS_WAY_MERGE)) {
+            //判断计划开工时间是否相同
+            if (planstartdate.compareTo(oldPlanstartdate) == 0) {
+                return false;
+            }
+        }
+        //不是合并工序判断时间是否冲突
+        if ((planstartdate.after(oldPlanstartdate) && planstartdate.before(oldPlanenddate))
+                || (planenddate.after(oldPlanstartdate) && planenddate.before(oldPlanenddate))) {
+            return true;
+        } else {
+            return false;
+        }
     }
 
     public String strAppendListConvertStr(String oldValue, List<String> newValues) {

+ 17 - 0
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationProcessEquDao.xml

@@ -560,4 +560,21 @@
             #{item}
         </foreach>
     </select>
+    <select id="selectMyProcessVo" resultType="com.rongwei.bsentity.vo.ProcessVo">
+        SELECT
+            apope.ID AS 'processEquId',
+            apope.PLANSTARTDATE AS 'planStartTime',
+            apope.PLANENDDATE AS 'planEndTime',
+            apo.PROCESSWAY AS 'processWay',
+            apope.CONFLICTDES AS 'conflictdes',
+            apope.SOFTCONFLICTDES AS 'softconflictdes'
+        FROM
+            aps_process_operation_process_equ apope
+                LEFT JOIN aps_process_operation apo ON apope.PROCESSID = apo.ID AND apo.DELETED = 0
+        WHERE
+            apope.DELETED = 0
+            AND apope.PROCESSDEVICEID = #{equId}
+            AND apope.PLANSTARTDATE > #{date1}
+            AND apope.PLANENDDATE &lt; #{date2}
+    </select>
 </mapper>

+ 25 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/ProcessVo.java

@@ -0,0 +1,25 @@
+package com.rongwei.bsentity.vo;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author :sc
+ * @since :2025/1/23
+ */
+@Data
+public class ProcessVo {
+    //作业明细ID
+    private String processEquId;
+    //计划开工时间
+    private Date planStartTime;
+    //计划结束时间
+    private Date planEndTime;
+    //工序类型
+    private String processWay;
+    //冲突描述
+    private String conflictdes;
+    //非强制性冲突
+    private String softconflictdes;
+}