Przeglądaj źródła

Merge branch 'mode-min-unit' into mode-min-unit-sc2

sucheng 4 miesięcy temu
rodzic
commit
e0ed38e06a

+ 1 - 1
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsBlankOrderDao.java

@@ -181,5 +181,5 @@ public interface ApsBlankOrderDao extends BaseMapper<ApsBlankOrderDo> {
 
     List<ApsBlankOrderDo> selectBlankByStartNum(@Param("startNum") String startNum);
 
-    int moveErrorProcessEqu(@Param("chongpaiEndDate") DateTime chongpaiEndDate, @Param("tenantId") String tenantId, @Param("workshopin") Integer workshopin, @Param("workshopcross") Integer workshopcross);
+    int moveErrorProcessEqu(@Param("chongpaiStartDate") DateTime chongpaiStartDate, @Param("chongpaiEndDate") DateTime chongpaiEndDate, @Param("tenantId") String tenantId, @Param("workshopin") Integer workshopin, @Param("workshopcross") Integer workshopcross);
 }

+ 1 - 1
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsBlankOrderServiceImpl.java

@@ -4352,7 +4352,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
             //错误数据纠正挪动
             int safeCount = 0;
             while (true) {
-                int updateCount = this.baseMapper.moveErrorProcessEqu(chongpaiEndDate, CXCommonUtils.getCurrentUserFactoryId(currentUser), apsScheduleConfigDo.getWorkshopin(), apsScheduleConfigDo.getWorkshopcross());
+                int updateCount = this.baseMapper.moveErrorProcessEqu(chongpaiStartDate, chongpaiEndDate, CXCommonUtils.getCurrentUserFactoryId(currentUser), apsScheduleConfigDo.getWorkshopin(), apsScheduleConfigDo.getWorkshopcross());
                 if (updateCount <= 0) {
                     break;
                 }

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

@@ -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 &lt;= #{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 -- 机台流转时间
+        ) &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, -- 如果有最大流转等待时间,则取前道计划完工时间 + 最大流转等待时间,否则取调度结束时间
+                                                                       #{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

+ 3 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/dao/EquMaintenanceTaskDao.java

@@ -14,4 +14,7 @@ import org.apache.ibatis.annotations.Update;
 public interface EquMaintenanceTaskDao extends BaseMapper<EquMaintenanceTaskDo> {
     @Update(" UPDATE sys_notify_announce SET DELETED='1',MODIFYDATE=NOW() WHERE NOTIFYTYPE = #{notifytype} AND ROPTION = #{roption} AND DELETED='0'")
     int deleteNotice(@Param("notifytype") String notifytype, @Param("roption") String roption);
+
+    @Update(" UPDATE sys_notify_announce_user SET DELETED='1',MODIFYDATE=NOW() WHERE  ANNOUNCEID = #{announceid} AND DELETED='0'")
+    int deleteNoticeDetail( @Param("announceid")  String announceid);
 }

+ 2 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/EquMaintenanceTaskService.java

@@ -22,4 +22,6 @@ public interface EquMaintenanceTaskService extends IService<EquMaintenanceTaskDo
     List<EquMaintenanceTaskDo> getListByTimeQuantum(int year, int month,boolean stride);
 
     int deleteNotice(String notifytype, String roption);
+
+    int deleteNoticeDetail(String id);
 }

+ 10 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquMaintenanceTaskServiceImpl.java

@@ -92,4 +92,14 @@ public class EquMaintenanceTaskServiceImpl extends ServiceImpl<EquMaintenanceTas
 
         return maintenanceTaskDao.deleteNotice(notifytype,roption);
     }
+
+    /**
+     * 删除对应的消息提醒人员记录
+     * @param announceid
+     * @return
+     */
+    @Override
+    public int deleteNoticeDetail(String announceid) {
+        return maintenanceTaskDao.deleteNoticeDetail(announceid);
+    }
 }

+ 1 - 0
cx-equipment/cx-equipment-common/src/main/java/com/rongwei/bscommon/sys/service/impl/EquipmentSendNotifyServiceImpl.java

@@ -133,6 +133,7 @@ public class EquipmentSendNotifyServiceImpl implements EquipmentSendNotifyServic
             // 删除提醒
        //     CXCommonUtils.deleteSendNotify("maintain", id);
             maintenanceTaskService.deleteNotice("maintain", id);
+         //   maintenanceTaskService.deleteNoticeDetail(id);
 
             // 发送提醒
             CXCommonUtils.sendNotify(title, context, null, userId.stream().distinct().collect(Collectors.toList()),