|
@@ -294,107 +294,80 @@
|
|
|
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
|
|
|
- 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=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
|
|
|
- )
|
|
|
- )
|
|
|
+ apope.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 -- 机台流转时间
|
|
|
+ ),
|
|
|
+ #{chongpaiStartDate} -- 调度开始时间
|
|
|
+ )
|
|
|
+ ) SECOND
|
|
|
+ ),
|
|
|
+ apope.PLANSTARTDATE=
|
|
|
+ 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 != '铸轧'
|
|
|
- <if test="type != '' and type != null and type == '冷轧'">
|
|
|
- AND apo.PROCESS NOT IN ('铸轧','中退','成退','小卷成退')
|
|
|
- </if>
|
|
|
- <if test="type != '' and type != null and type == '退火'">
|
|
|
- AND apo.PROCESS IN ('中退','成退','小卷成退')
|
|
|
- </if>
|
|
|
- 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 -- 机台流转时间
|
|
|
- ) between #{chongpaiStartDate} and #{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 -- 机台流转时间
|
|
|
- ),
|
|
|
- #{chongpaiStartDate}
|
|
|
- )
|
|
|
- ) SECOND
|
|
|
- )
|
|
|
- )
|
|
|
- OR
|
|
|
- apope.PLANSTARTDATE!=if( -- 如果前道在调度时间之前,并且与前道是连续作业,则移动到前道计划完工时间
|
|
|
- apope.PROCESSDEVICEID = preapope.PROCESSDEVICEID and ifnull(apo.MINFLOWWAITMIN,0)=0,
|
|
|
- preapope.PLANENDDATE,
|
|
|
- date_add(apope.PLANSTARTDATE,
|
|
|
+ apope.deleted = '0' AND apo.DELETED = '0' AND preapope.DELETED = '0'
|
|
|
+ and apope.TENANTID = #{tenantId}
|
|
|
+ and apo.PROCESS != '铸轧'
|
|
|
+ <if test="type != '' and type != null and type == '冷轧'">
|
|
|
+ AND apo.PROCESS NOT IN ('铸轧','中退','成退','小卷成退')
|
|
|
+ </if>
|
|
|
+ <if test="type != '' and type != null and type == '退火'">
|
|
|
+ AND apo.PROCESS IN ('中退','成退','小卷成退')
|
|
|
+ </if>
|
|
|
+ and apope.WORKSTATUS = '待开工'
|
|
|
+ AND (
|
|
|
+ apope.PLANSTARTDATE between #{chongpaiStartDate} and #{chongpaiEndDate} -- 在调度时间范围内开工
|
|
|
+ or
|
|
|
+ (apope.PLANSTARTDATE < #{chongpaiStartDate} -- 计划调度开始时间之前开工
|
|
|
+ and preapope.PLANSTARTDATE > #{chongpaiStartDate} -- 前道计划完工时间 + 流转时间在调度时间范围内
|
|
|
+ )
|
|
|
+ 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,
|
|
|
GREATEST(
|
|
@@ -406,12 +379,29 @@
|
|
|
)
|
|
|
) MINUTE -- 机台流转时间
|
|
|
),
|
|
|
- #{chongpaiStartDate}
|
|
|
+ #{chongpaiStartDate} -- 调度开始时间
|
|
|
)
|
|
|
) SECOND
|
|
|
)
|
|
|
+ OR
|
|
|
+ apope.PLANSTARTDATE!=
|
|
|
+ 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
|
|
|
+ )
|
|
|
+ )
|
|
|
|
|
|
</update>
|
|
|
<update id="moveErrorProcessEqu2">
|