浏览代码

aps-调度排程前数据清洗

sucheng 4 月之前
父节点
当前提交
0a88b0ffad
共有 1 个文件被更改,包括 78 次插入78 次删除
  1. 78 78
      cx-aps/cx-aps-common/src/main/resources/mybatis/ApsBlankOrderDao.xml

+ 78 - 78
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 -- 机台流转时间
-        ),
-        DATE_ADD(#{chongpaiEndDate},INTERVAL 10 DAY),-- 无限制时间
-        ),
-        if(ifnull(apo.MAXFLOWWAITMIN,0)=0, -- 如果有最大流转等待时间,则取前道计划完工时间 + 最大流转等待时间,否则取调度结束时间
-        #{chongpaiEndDate}, -- 调度结束时间
-        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(
@@ -365,28 +310,83 @@
                                                                                              if(apope.PROCESSWORKSHOPID!=preapope.PROCESSWORKSHOPID,#{workshopcross}, -- 车间流转时间
                                                                                                 if(apope.PROCESSDEVICEID!=preapope.PROCESSDEVICEID,#{workshopin},0))) MINUTE -- 机台流转时间
                                                                             ),
-                                                                            DATE_ADD(#{chongpaiEndDate},INTERVAL 10 DAY),-- 无限制时间
+                                                                            #{chongpaiStartDate} -- 调度开始时间
                                                                     ),
                                                                     if(ifnull(apo.MAXFLOWWAITMIN,0)=0, -- 如果有最大流转等待时间,则取前道计划完工时间 + 最大流转等待时间,否则取调度结束时间
-                                                                       #{chongpaiEndDate}, -- 调度结束时间
+                                                                       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>