|
@@ -294,6 +294,7 @@
|
|
|
and apope.LOCKMARKDETAIL = 'y'
|
|
|
</update>
|
|
|
<update id="moveErrorProcessEqu">
|
|
|
+ -- 如果有前道,并且(计划开工时间在调度时间范围内,或者前道在计划开工时间在调度时间范围内,并且(前道完工时间+最大流转时间大于计划开工时间,或者小于调度结束时间)),则挪到前道完工时间+最大流转时间
|
|
|
update
|
|
|
aps_process_operation_process_equ apope
|
|
|
join aps_process_operation apo on apo.ID = apope.PROCESSID
|
|
@@ -302,33 +303,92 @@
|
|
|
apope.PLANENDDATE=date_add(apope.PLANENDDATE,
|
|
|
INTERVAL TIMESTAMPdiff(SECOND,
|
|
|
apope.PLANSTARTDATE,
|
|
|
- date_add(preapope.PLANENDDATE, -- 计划开工时间 小于 前道计划完工时间 + 流转时间
|
|
|
+ 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 -- 机台流转时间
|
|
|
- )) SECOND),
|
|
|
+ ),
|
|
|
+ #{chongpaiStartDate} -- 调度开始时间)
|
|
|
+ ),
|
|
|
+ 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,
|
|
|
- date_add(preapope.PLANENDDATE, -- 计划开工时间 小于 前道计划完工时间 + 流转时间
|
|
|
+ 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 -- 机台流转时间
|
|
|
- )) SECOND)
|
|
|
+ ),
|
|
|
+ #{chongpaiStartDate} -- 调度开始时间)
|
|
|
+ ),
|
|
|
+ if(ifnull(apo.MAXFLOWWAITMIN,0)=0, -- 如果有最大流转等待时间,则取前道计划完工时间 + 最大流转等待时间,否则取调度结束时间
|
|
|
+ #{chongpaiEndDate}, -- 调度结束时间
|
|
|
+ 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 <= #{chongpaiEndDate} -- 调度结束时间之前
|
|
|
- AND date_add(preapope.PLANENDDATE, -- 计划开工时间 小于 前道计划完工时间 + 流转时间
|
|
|
+ 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 -- 机台流转时间
|
|
|
+ ) < #{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, -- 如果有最大流转等待时间,则取前道计划完工时间 + 最大流转等待时间,否则取调度结束时间
|
|
|
+ #{chongpaiEndDate}, -- 调度结束时间
|
|
|
+ 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, -- 如果有最大流转等待时间,则取前道计划完工时间 + 最大流转等待时间,否则取调度结束时间
|
|
|
+ #{chongpaiEndDate}, -- 调度结束时间
|
|
|
+ date_add(preapope.PLANENDDATE, INTERVAL apo.MAXFLOWWAITMIN MINUTE))) -- 前道计划完工时间 + 最大流转等待时间
|
|
|
+ ) SECOND)
|
|
|
+ )
|
|
|
+
|
|
|
</update>
|
|
|
<select id="checkConflictByBlankId" resultType="java.lang.Integer">
|
|
|
select count(*) from aps_process_operation_process_equ
|