Ver Fonte

feature 记录加工时间重叠的冲突时 同为合并加工时忽略此冲突

xiahan há 1 ano atrás
pai
commit
3b4f6903ef

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

@@ -83,7 +83,8 @@ public interface ApsProcessOperationProcessEquDao extends BaseMapper<ApsProcessO
     List<String> checkConflict(@Param("checkConflictVos") List<CheckConflictVo> checkConflictVos);
 
     List<ApsProcessOperationProcessEquDo> getConflictId(@Param("equId") String equId,@Param("id") String id,
-                               @Param("startTime")Date startTime,@Param("endTime") Date endTime);
+                               @Param("startTime")Date startTime,@Param("endTime") Date endTime,
+                               @Param("processway") String processway);
 
     @Select("select * from aps_process_operation_process_equ where DELETED = 0 AND PROCESSDEVICEID = #{processdeviceid} AND ID != #{apsProcessOperationProcessEquDoId} AND (WAITREPORTID IS NOT NULL AND WAITREPORTID != '')")
     List<ApsProcessOperationProcessEquDo> selectOtherDeviceList(@Param("processdeviceid") String processdeviceid, @Param("apsProcessOperationProcessEquDoId") String apsProcessOperationProcessEquDoId);

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

@@ -460,16 +460,19 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                 log.error("该作业已发布,不能调整开工时间");
                 throw new RuntimeException("该作业已发布,不能调整开工时间");
             }
+            // 当前工序的加工方式
+            String processway = operationDo.getProcessway();
+
             // 获取更新之前的存在冲突的工序作业
             List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId = this.baseMapper.getConflictId(changeStartTimeVo.getEquId(), changeStartTimeVo.getId(),
-                    processEquDo.getPlanstartdate(), processEquDo.getPlanenddate());
+                    processEquDo.getPlanstartdate(), processEquDo.getPlanenddate(), processway);
             affectedIdList.addAll(beforeUpdatingConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
             // 找到更新时间之后存在冲突的工序作业
             List<ApsProcessOperationProcessEquDo> afterTheUpdateConflictId = this.baseMapper.getConflictId(changeStartTimeVo.getEquId(), changeStartTimeVo.getId(),
-                    changeStartTimeVo.getPlanStartTime(), changeStartTimeVo.getPlanEndTime());
+                    changeStartTimeVo.getPlanStartTime(), changeStartTimeVo.getPlanEndTime(), processway);
             affectedIdList.addAll(afterTheUpdateConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
             if (!beforeUpdatingConflictId.isEmpty()) {
-                updateProcessEquBeforeAddConflictsDesc(beforeUpdatingConflictId, EQ_TIME_CROSS);
+                updateProcessEquBeforeAddConflictsDesc(beforeUpdatingConflictId, EQ_TIME_CROSS, processway);
             }
 
             if (!afterTheUpdateConflictId.isEmpty()) {
@@ -559,15 +562,16 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
             apsProcessOperationProcessEquDo.setPlanenddate(new Date(apsProcessOperationProcessEquDo.getPlanenddate().getTime() + jobDetailsVo.getPlanStartTime().getTime() - oldPlanstartdate.getTime()));
             // 获取更新之前的存在冲突的工序作业
             List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId = this.baseMapper.getConflictId(
-                    oldEquId, id, oldPlanstartdate, oldPlanenddate);
+                    oldEquId, id, oldPlanstartdate, oldPlanenddate,apsProcessOperationDo.getProcessway());
             affectedIdList.addAll(beforeUpdatingConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
             // 找到更新时间之后存在冲突的工序作业
             List<ApsProcessOperationProcessEquDo> afterTheUpdateConflictId = this.baseMapper.getConflictId(
                     apsProcessOperationProcessEquDo.getProcessdeviceid(), id,
-                    apsProcessOperationProcessEquDo.getPlanstartdate(), apsProcessOperationProcessEquDo.getPlanenddate());
+                    apsProcessOperationProcessEquDo.getPlanstartdate(), apsProcessOperationProcessEquDo.getPlanenddate(),
+                    apsProcessOperationDo.getProcessway());
             affectedIdList.addAll(afterTheUpdateConflictId.stream().map(ApsProcessOperationProcessEquDo::getId).collect(Collectors.toList()));
             if (!beforeUpdatingConflictId.isEmpty()) {
-                updateProcessEquBeforeAddConflictsDesc(beforeUpdatingConflictId, EQ_TIME_CROSS);
+                updateProcessEquBeforeAddConflictsDesc(beforeUpdatingConflictId, EQ_TIME_CROSS,apsProcessOperationDo.getProcessway());
             }
 
             if (!afterTheUpdateConflictId.isEmpty()) {
@@ -756,13 +760,14 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
      * @param removeConflictsDesc      需要被删除的冲突描述
      */
     public void updateProcessEquBeforeAddConflictsDesc(List<ApsProcessOperationProcessEquDo> beforeUpdatingConflictId,
-                                                       String removeConflictsDesc) {
+                                                       String removeConflictsDesc,String processway) {
         if (beforeUpdatingConflictId.isEmpty()) {
             return;
         }
         beforeUpdatingConflictId.forEach(info -> {
-            // 判断是否和其他工序作业明细存在从头
-            List<ApsProcessOperationProcessEquDo> conflictId = this.baseMapper.getConflictId(info.getProcessdeviceid(), info.getId(), info.getPlanstartdate(), info.getPlanenddate());
+            // 判断是否和其他工序作业明细存在冲突
+            List<ApsProcessOperationProcessEquDo> conflictId = this.baseMapper.getConflictId(info.getProcessdeviceid(),
+                    info.getId(), info.getPlanstartdate(), info.getPlanenddate(), processway);
             if (!conflictId.isEmpty()) {
                 info.setConflictdes(removeConflictsDesc(info.getConflictdes(), removeConflictsDesc));
                 info.setHasconflict(StringUtils.isBlank(info.getConflictdes()) &&

+ 2 - 2
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/GanttServiceImpl.java

@@ -37,6 +37,7 @@ import java.util.*;
 import java.util.stream.Collectors;
 
 import static com.rongwei.safecommon.utils.SaveConstans.JobStatus.*;
+import static com.rongwei.safecommon.utils.SaveConstans.ProcessWay.PROCESS_WAY_MERGE;
 import static com.rongwei.safecommon.utils.SaveConstans.ProductionStatus.*;
 
 /**
@@ -64,7 +65,6 @@ public class GanttServiceImpl implements GanttService {
     public static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     public static final String DEFAULT_TYPE = "project";
     public static final String DEFAULT_RENDER = "split";
-    public static final String COMBINED_PROCESSING = "合并加工";
     public static final String SCHEDULING_STR = "%s-正在排程";
     public static final String SCHEDULING_TO_BE_PUBLISHED_STR = "%s-排程结束待发布";
     public static final String DEFAULT_SPLIT = "-;-";
@@ -341,7 +341,7 @@ public class GanttServiceImpl implements GanttService {
         for (Map.Entry<String, List<GanttVos>> deviceEntry : processMap.entrySet()) {
             // 对数据按照 计划开始时间 分组
             LinkedHashMap<String, List<GanttVos>> planDataMap = deviceEntry.getValue().stream().collect(Collectors.groupingBy(info -> {
-                        if (COMBINED_PROCESSING.equals(info.getProcessway())) {
+                        if (PROCESS_WAY_MERGE.equals(info.getProcessway())) {
                             return info.getPlanstartdate().toString();
                         }
                         return info.getUuid();

+ 11 - 6
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationProcessEquDao.xml

@@ -405,16 +405,21 @@
         </where>
     </select>
     <select id="getConflictId" resultType="com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo">
-        select * from aps_process_operation_process_equ
+        select apope.*
+        from aps_process_operation_process_equ apope
+                left join aps_process_operation app on apope.PROCESSID=app.DELETED='0'
             <where>
-                DELETED='0'
-                AND ID != #{id}
-                AND PROCESSDEVICEID =#{equId}
+                apope.DELETED='0'
+                AND apope.ID != #{id}
+                AND apope.PROCESSDEVICEID =#{equId}
                 AND (
-                (#{startTime}&lt; PLANENDDATE and #{endTime} > PLANSTARTDATE)
+                (#{startTime}&lt; apope.PLANENDDATE and #{endTime} > apope.PLANSTARTDATE)
                   or
-                (PLANSTARTDATE &lt; #{endTime} and PLANENDDATE > #{startTime})
+                (apope.PLANSTARTDATE &lt; #{endTime} and apope.PLANENDDATE > #{startTime})
                 )
+                <if test="processway == '合并加工'">
+                    and app.PROCESSWAY != '合并加工'
+                </if>
             </where>
     </select>
     <select id="getWorkshopAndDeviceByFactoryId" resultType="com.rongwei.bsentity.vo.GanttVos">