소스 검색

Merge branch 'mode-min-unit' into mode-min-unit-新模型

# Conflicts:
#	cx-aps/cx-aps-common/src/main/resources/mybatis/ApsBlankOrderDao.xml
sucheng 4 달 전
부모
커밋
effc6cff2f

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

@@ -353,7 +353,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
             Optional<Date> minDate = apsProcessOperationProcessEquDos.stream()
                     .map(ApsProcessOperationProcessEquDo::getPlanstartdate).min(Comparator.naturalOrder());
             // 获取开工时间间隔=所选作业明细最早计划开工时间-所选加工开始时间
-            long timeInterval = minDate.get().getTime() - changingWiresVos.get(0).getProcessingTime().getTime();
+//            long timeInterval = minDate.get().getTime() - changingWiresVos.get(0).getProcessingTime().getTime();
+            int timeInterval = (int) DateUtil.between(minDate.get(), changingWiresVos.get(0).getProcessingTime(), DateUnit.SECOND, false);
             Set<String> blankIds = new HashSet<>();
             List<CheckConflictVo> checkConflictVos = new ArrayList<>();
             UpdateConflictVo updateConflictVo;
@@ -469,8 +470,8 @@ public class ApsProcessOperationProcessEquServiceImpl extends ServiceImpl<ApsPro
                                     }
                                 }
                             }
-                            needEqu.setPlanstartdate(DateUtil.offsetSecond(equDo.getPlanstartdate(), (int) DateUtil.between(equDo.getPlanstartdate(), changingWiresVo.getProcessingTime(), DateUnit.SECOND, false)));
-                            needEqu.setPlanenddate(DateUtil.offsetSecond(equDo.getPlanenddate(), (int) DateUtil.between(equDo.getPlanstartdate(), changingWiresVo.getProcessingTime(), DateUnit.SECOND, false)));
+                            needEqu.setPlanstartdate(DateUtil.offsetSecond(equDo.getPlanstartdate(), timeInterval));
+                            needEqu.setPlanenddate(DateUtil.offsetSecond(equDo.getPlanenddate(), timeInterval));
                             needEqu.setModifydate(DateUtil.date());
                             needEqu.setModifyusername(nowWorkUser.getName());
                             needEqu.setModifyuserid(nowWorkUser.getId());

+ 76 - 76
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsBlankOrderDao.xml

@@ -296,66 +296,11 @@
     <update id="moveErrorProcessEqu">
         -- 如果有前道,并且(计划开工时间在调度时间范围内,或者前道在计划开工时间在调度时间范围内,并且(前道完工时间+最大流转时间大于计划开工时间,或者小于调度结束时间)),则挪到前道完工时间+最大流转时间
         update
-        aps_process_operation_process_equ apope
-        join aps_process_operation apo on apo.ID = apope.PROCESSID
-        join aps_process_operation_process_equ preapope on apope.PREVIOUSPROCESSESIDS = preapope.id
+            aps_process_operation_process_equ apope
+                join aps_process_operation apo on apo.ID = apope.PROCESSID
+                join aps_process_operation_process_equ preapope on apope.PREVIOUSPROCESSESIDS = preapope.id
         set
-        apope.PLANENDDATE=date_add(apope.PLANENDDATE,
-        INTERVAL TIMESTAMPdiff(SECOND,
-        apope.PLANSTARTDATE,
-        LEAST(GREATEST(
-        date_add(preapope.PLANENDDATE, -- 前道计划完工时间 + 流转时间
-        INTERVAL GREATEST(
-        ifnull(apo.MINFLOWWAITMIN,0), -- 最小流转等待时间
-        if(apope.PROCESSWORKSHOPID!=preapope.PROCESSWORKSHOPID,#{workshopcross}, -- 车间流转时间
-        if(apope.PROCESSDEVICEID!=preapope.PROCESSDEVICEID,#{workshopin},0))) MINUTE -- 机台流转时间
-        ),
-        #{chongpaiStartDate} -- 调度开始时间
-        ),
-        if(ifnull(apo.MAXFLOWWAITMIN,0)=0, -- 如果有最大流转等待时间,则取前道计划完工时间 + 最大流转等待时间,否则取调度结束时间
-           DATE_ADD(#{chongpaiEndDate},INTERVAL 10 DAY),-- 无限制时间
-        date_add(preapope.PLANENDDATE, INTERVAL apo.MAXFLOWWAITMIN MINUTE))) -- 前道计划完工时间 + 最大流转等待时间
-        ) SECOND),
-        apope.PLANSTARTDATE=date_add(apope.PLANSTARTDATE,
-        INTERVAL TIMESTAMPdiff(SECOND,
-        apope.PLANSTARTDATE,
-        LEAST(GREATEST(
-        date_add(preapope.PLANENDDATE, -- 前道计划完工时间 + 流转时间
-        INTERVAL GREATEST(
-        ifnull(apo.MINFLOWWAITMIN,0), -- 最小流转等待时间
-        if(apope.PROCESSWORKSHOPID!=preapope.PROCESSWORKSHOPID,#{workshopcross}, -- 车间流转时间
-        if(apope.PROCESSDEVICEID!=preapope.PROCESSDEVICEID,#{workshopin},0))) MINUTE -- 机台流转时间
-        ),
-        #{chongpaiStartDate} -- 调度开始时间
-        ),
-        if(ifnull(apo.MAXFLOWWAITMIN,0)=0, -- 如果有最大流转等待时间,则取前道计划完工时间 + 最大流转等待时间,否则取调度结束时间
-           DATE_ADD(#{chongpaiEndDate},INTERVAL 10 DAY),-- 无限制时间
-        date_add(preapope.PLANENDDATE, INTERVAL apo.MAXFLOWWAITMIN MINUTE))) -- 前道计划完工时间 + 最大流转等待时间
-        ) SECOND)
-        WHERE
-        apope.deleted = '0' AND apo.DELETED = '0' AND preapope.DELETED = '0'
-        and apope.TENANTID = #{tenantId}
-        and apo.PROCESS != '铸轧'
-        and apope.WORKSTATUS = '待开工'
-        AND ((apope.PLANSTARTDATE between #{chongpaiStartDate} and #{chongpaiEndDate}) -- 在调度时间范围内开工
-        or ((preapope.PLANSTARTDATE between #{chongpaiStartDate} and #{chongpaiEndDate}) -- 前道在调度时间范围内开工
-        AND (
-        date_add(preapope.PLANENDDATE, -- 前道计划完工时间 + 流转时间 > 计划开工时间
-        INTERVAL GREATEST(
-        ifnull(apo.MINFLOWWAITMIN,0), -- 最小流转等待时间
-        if(apope.PROCESSWORKSHOPID!=preapope.PROCESSWORKSHOPID,#{workshopcross}, -- 车间流转时间
-        if(apope.PROCESSDEVICEID!=preapope.PROCESSDEVICEID,#{workshopin},0))) MINUTE -- 机台流转时间
-        ) > apope.PLANSTARTDATE
-        or date_add(preapope.PLANENDDATE, -- 前道计划完工时间 + 流转时间 小于 调度结束时间
-        INTERVAL GREATEST(
-        ifnull(apo.MINFLOWWAITMIN,0), -- 最小流转等待时间
-        if(apope.PROCESSWORKSHOPID!=preapope.PROCESSWORKSHOPID,#{workshopcross}, -- 车间流转时间
-        if(apope.PROCESSDEVICEID!=preapope.PROCESSDEVICEID,#{workshopin},0))) MINUTE -- 机台流转时间
-        ) &lt; #{chongpaiEndDate} -- 调度结束时间
-        )
-        )
-        )
-        AND (apope.PLANENDDATE!=date_add(apope.PLANENDDATE,
+            apope.PLANENDDATE=date_add(apope.PLANENDDATE,
                                        INTERVAL TIMESTAMPdiff(SECOND,
                                                               apope.PLANSTARTDATE,
                                                               LEAST(GREATEST(
@@ -370,23 +315,78 @@
                                                                     if(ifnull(apo.MAXFLOWWAITMIN,0)=0, -- 如果有最大流转等待时间,则取前道计划完工时间 + 最大流转等待时间,否则取调度结束时间
                                                                        DATE_ADD(#{chongpaiEndDate},INTERVAL 10 DAY),-- 无限制时间
                                                                        date_add(preapope.PLANENDDATE, INTERVAL apo.MAXFLOWWAITMIN MINUTE))) -- 前道计划完工时间 + 最大流转等待时间
-                                                ) SECOND)
-        OR apope.PLANSTARTDATE!=date_add(apope.PLANSTARTDATE,
-        INTERVAL TIMESTAMPdiff(SECOND,
-        apope.PLANSTARTDATE,
-        LEAST(GREATEST(
-        date_add(preapope.PLANENDDATE, -- 前道计划完工时间 + 流转时间
-        INTERVAL GREATEST(
-        ifnull(apo.MINFLOWWAITMIN,0), -- 最小流转等待时间
-        if(apope.PROCESSWORKSHOPID!=preapope.PROCESSWORKSHOPID,#{workshopcross}, -- 车间流转时间
-            if(apope.PROCESSDEVICEID!=preapope.PROCESSDEVICEID,#{workshopin},0))) MINUTE -- 机台流转时间
-            ),
-            #{chongpaiStartDate} -- 调度开始时间
-            ),
-            if(ifnull(apo.MAXFLOWWAITMIN,0)=0, -- 如果有最大流转等待时间,则取前道计划完工时间 + 最大流转等待时间,否则取调度结束时间
-               DATE_ADD(#{chongpaiEndDate},INTERVAL 10 DAY),-- 无限制时间
-            date_add(preapope.PLANENDDATE, INTERVAL apo.MAXFLOWWAITMIN MINUTE))) -- 前道计划完工时间 + 最大流转等待时间
-            ) SECOND)
+                                                ) SECOND),
+            apope.PLANSTARTDATE=date_add(apope.PLANSTARTDATE,
+                                         INTERVAL TIMESTAMPdiff(SECOND,
+                                                                apope.PLANSTARTDATE,
+                                                                LEAST(GREATEST(
+                                                                              date_add(preapope.PLANENDDATE, -- 前道计划完工时间 + 流转时间
+                                                                                       INTERVAL GREATEST(
+                                                                                               ifnull(apo.MINFLOWWAITMIN,0), -- 最小流转等待时间
+                                                                                               if(apope.PROCESSWORKSHOPID!=preapope.PROCESSWORKSHOPID,#{workshopcross}, -- 车间流转时间
+                                                                                                  if(apope.PROCESSDEVICEID!=preapope.PROCESSDEVICEID,#{workshopin},0))) MINUTE -- 机台流转时间
+                                                                              ),
+                                                                              #{chongpaiStartDate} -- 调度开始时间
+                                                                      ),
+                                                                      if(ifnull(apo.MAXFLOWWAITMIN,0)=0, -- 如果有最大流转等待时间,则取前道计划完工时间 + 最大流转等待时间,否则取调度结束时间
+                                                                         DATE_ADD(#{chongpaiEndDate},INTERVAL 10 DAY),-- 无限制时间
+                                                                         date_add(preapope.PLANENDDATE, INTERVAL apo.MAXFLOWWAITMIN MINUTE))) -- 前道计划完工时间 + 最大流转等待时间
+                                                  ) SECOND)
+        WHERE
+            apope.deleted = '0' AND apo.DELETED = '0' AND preapope.DELETED = '0'
+          and apope.TENANTID = #{tenantId}
+          and apo.PROCESS != '铸轧'
+          and apope.WORKSTATUS = '待开工'
+          AND ((apope.PLANSTARTDATE between #{chongpaiStartDate} and #{chongpaiEndDate}) -- 在调度时间范围内开工
+            or ((preapope.PLANSTARTDATE between #{chongpaiStartDate} and #{chongpaiEndDate}) -- 前道在调度时间范围内开工
+                AND (
+                    date_add(preapope.PLANENDDATE, -- 前道计划完工时间 + 流转时间 > 计划开工时间
+                             INTERVAL GREATEST(
+                                     ifnull(apo.MINFLOWWAITMIN,0), -- 最小流转等待时间
+                                     if(apope.PROCESSWORKSHOPID!=preapope.PROCESSWORKSHOPID,#{workshopcross}, -- 车间流转时间
+                                        if(apope.PROCESSDEVICEID!=preapope.PROCESSDEVICEID,#{workshopin},0))) MINUTE -- 机台流转时间
+                    ) > apope.PLANSTARTDATE
+                        or date_add(preapope.PLANENDDATE, -- 前道计划完工时间 + 流转时间 小于 调度结束时间
+                                    INTERVAL GREATEST(
+                                            ifnull(apo.MINFLOWWAITMIN,0), -- 最小流转等待时间
+                                            if(apope.PROCESSWORKSHOPID!=preapope.PROCESSWORKSHOPID,#{workshopcross}, -- 车间流转时间
+                                               if(apope.PROCESSDEVICEID!=preapope.PROCESSDEVICEID,#{workshopin},0))) MINUTE -- 机台流转时间
+                           ) &lt; #{chongpaiEndDate} -- 调度结束时间
+                    )
+                   )
+            )
+          AND (apope.PLANENDDATE!=date_add(apope.PLANENDDATE,
+                                           INTERVAL TIMESTAMPdiff(SECOND,
+                                                                  apope.PLANSTARTDATE,
+                                                                  LEAST(GREATEST(
+                                                                                date_add(preapope.PLANENDDATE, -- 前道计划完工时间 + 流转时间
+                                                                                         INTERVAL GREATEST(
+                                                                                                 ifnull(apo.MINFLOWWAITMIN,0), -- 最小流转等待时间
+                                                                                                 if(apope.PROCESSWORKSHOPID!=preapope.PROCESSWORKSHOPID,#{workshopcross}, -- 车间流转时间
+                                                                                                    if(apope.PROCESSDEVICEID!=preapope.PROCESSDEVICEID,#{workshopin},0))) MINUTE -- 机台流转时间
+                                                                                ),
+                                                                                #{chongpaiStartDate} -- 调度开始时间
+                                                                        ),
+                                                                        if(ifnull(apo.MAXFLOWWAITMIN,0)=0, -- 如果有最大流转等待时间,则取前道计划完工时间 + 最大流转等待时间,否则取调度结束时间
+                                                                           DATE_ADD(#{chongpaiEndDate},INTERVAL 10 DAY),-- 无限制时间
+                                                                           date_add(preapope.PLANENDDATE, INTERVAL apo.MAXFLOWWAITMIN MINUTE))) -- 前道计划完工时间 + 最大流转等待时间
+                                                    ) SECOND)
+            OR apope.PLANSTARTDATE!=date_add(apope.PLANSTARTDATE,
+                                             INTERVAL TIMESTAMPdiff(SECOND,
+                                                                    apope.PLANSTARTDATE,
+                                                                    LEAST(GREATEST(
+                                                                                  date_add(preapope.PLANENDDATE, -- 前道计划完工时间 + 流转时间
+                                                                                           INTERVAL GREATEST(
+                                                                                                   ifnull(apo.MINFLOWWAITMIN,0), -- 最小流转等待时间
+                                                                                                   if(apope.PROCESSWORKSHOPID!=preapope.PROCESSWORKSHOPID,#{workshopcross}, -- 车间流转时间
+                                                                                                      if(apope.PROCESSDEVICEID!=preapope.PROCESSDEVICEID,#{workshopin},0))) MINUTE -- 机台流转时间
+                                                                                  ),
+                                                                                  #{chongpaiStartDate} -- 调度开始时间
+                                                                          ),
+                                                                          if(ifnull(apo.MAXFLOWWAITMIN,0)=0, -- 如果有最大流转等待时间,则取前道计划完工时间 + 最大流转等待时间,否则取调度结束时间
+                                                                             DATE_ADD(#{chongpaiEndDate},INTERVAL 10 DAY),-- 无限制时间
+                                                                             date_add(preapope.PLANENDDATE, INTERVAL apo.MAXFLOWWAITMIN MINUTE))) -- 前道计划完工时间 + 最大流转等待时间
+                                                      ) SECOND)
             )
 
     </update>