|
@@ -300,92 +300,120 @@
|
|
|
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)
|
|
|
+ apope.PLANENDDATE=if( -- 如果前道在调度时间之前开工,并且与前道是连续作业,则移动到前道计划完工时间
|
|
|
+ apope.PROCESSDEVICEID = preapope.PROCESSDEVICEID and ifnull(apo.MINFLOWWAITMIN,0)=0,
|
|
|
+ DATE_ADD(preapope.PLANENDDATE,INTERVAL TIMESTAMPdiff(SECOND, apope.PLANSTARTDATE, apope.PLANENDDATE) SECOND),
|
|
|
+ date_add(apope.PLANENDDATE,
|
|
|
+ INTERVAL TIMESTAMPdiff(SECOND,
|
|
|
+ apope.PLANSTARTDATE,
|
|
|
+ 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}
|
|
|
+ )
|
|
|
+ ) SECOND
|
|
|
+ )
|
|
|
+ ),
|
|
|
+ apope.PLANSTARTDATE=if( -- 如果前道在调度时间之前,并且与前道是连续作业,则移动到前道计划完工时间
|
|
|
+ apope.PROCESSDEVICEID = preapope.PROCESSDEVICEID and ifnull(apo.MINFLOWWAITMIN,0)=0,
|
|
|
+ preapope.PLANENDDATE,
|
|
|
+ date_add(apope.PLANSTARTDATE,
|
|
|
+ INTERVAL TIMESTAMPdiff(SECOND,
|
|
|
+ apope.PLANSTARTDATE,
|
|
|
+ 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}
|
|
|
+ )
|
|
|
+ ) 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 (apope.PLANSTARTDATE > #{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 -- 机台流转时间
|
|
|
- ) < #{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)
|
|
|
+ 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!=if( -- 如果前道在调度时间之前开工,并且与前道是连续作业,则移动到前道计划完工时间
|
|
|
+ apope.PROCESSDEVICEID = preapope.PROCESSDEVICEID and ifnull(apo.MINFLOWWAITMIN,0)=0,
|
|
|
+ DATE_ADD(preapope.PLANENDDATE,INTERVAL TIMESTAMPdiff(SECOND, apope.PLANSTARTDATE, apope.PLANENDDATE) SECOND),
|
|
|
+ date_add(apope.PLANENDDATE,
|
|
|
+ INTERVAL TIMESTAMPdiff(SECOND,
|
|
|
+ apope.PLANSTARTDATE,
|
|
|
+ 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 -- 机台流转时间
|
|
|
+ ),
|
|
|
+ if(ifnull(apo.MAXFLOWWAITMIN,0)=0,
|
|
|
+ #{chongpaiStartDate}, -- 调度开始时间
|
|
|
+ LEAST(#{chongpaiStartDate}, -- 调度开始时间
|
|
|
+ date_add(preapope.PLANENDDATE, INTERVAL apo.MAXFLOWWAITMIN MINUTE)
|
|
|
+ )
|
|
|
+ ) -- 前道计划完工时间 + 最大流转等待时间
|
|
|
+ )
|
|
|
+ ) SECOND
|
|
|
+ )
|
|
|
+ )
|
|
|
+ OR
|
|
|
+ apope.PLANSTARTDATE!=if( -- 如果前道在调度时间之前,并且与前道是连续作业,则移动到前道计划完工时间
|
|
|
+ apope.PROCESSDEVICEID = preapope.PROCESSDEVICEID and ifnull(apo.MINFLOWWAITMIN,0)=0,
|
|
|
+ preapope.PLANENDDATE,
|
|
|
+ date_add(apope.PLANENDDATE,
|
|
|
+ INTERVAL TIMESTAMPdiff(SECOND,
|
|
|
+ apope.PLANSTARTDATE,
|
|
|
+ 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 -- 机台流转时间
|
|
|
+ ),
|
|
|
+ if(ifnull(apo.MAXFLOWWAITMIN,0)=0,
|
|
|
+ #{chongpaiStartDate}, -- 调度开始时间
|
|
|
+ LEAST(#{chongpaiStartDate}, -- 调度开始时间
|
|
|
+ date_add(preapope.PLANENDDATE, INTERVAL apo.MAXFLOWWAITMIN MINUTE)
|
|
|
+ )
|
|
|
+ ) -- 前道计划完工时间 + 最大流转等待时间
|
|
|
+ )
|
|
|
+ ) SECOND
|
|
|
+ )
|
|
|
+ )
|
|
|
)
|
|
|
|
|
|
</update>
|