فهرست منبع

Merge remote-tracking branch 'origin/mode-min-unit' into mode-min-unit

fangpy 1 سال پیش
والد
کامیت
f5bcf984ab

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

@@ -49,9 +49,6 @@ public interface ApsProcessOperationDao extends BaseMapper<ApsProcessOperationDo
 
     List<ProcessIdRelationVo> getAllNextProcessOperationById(@Param("ids") List<String> ids);
 
-    @Update("update aps_process_operation set STARTINGROLL = STARTINGROLL - ${reduceNum} ,ACTUALSTARTDATE = if((STARTINGROLL - 1) <= 0,null,ACTUALSTARTDATE) where ID = #{processoperationid}")
-    void updateByCancelRecord(@Param("processoperationid") String processoperationid, @Param("reduceNum") Integer reduceNum);
-
     @Update("update aps_process_operation_process_equ set BACHMATERIALPROCESS = concat(BACHMATERIALPROCESS,',',#{batchnumber}) where DELETED = 0 AND ID = #{processoperationid}")
     void updateBatchNumberByProcessId(@Param("batchnumber") String batchnumber, @Param("processoperationid") String processoperationid);
 

+ 5 - 2
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/dao/ApsProcessOperationProcessEquDao.java

@@ -60,8 +60,8 @@ public interface ApsProcessOperationProcessEquDao extends BaseMapper<ApsProcessO
     @Select("select PRODUCTIONORDERID AS 'orderId',MIN(PRODUCTSTATUS) AS 'minProductionStatus',MAX(PRODUCTSTATUS) AS 'maxProductionStatus' from aps_blank_order where DELETED = 0 AND PRODUCTIONORDERID = (select PRODUCTIONORDERID from aps_blank_order where ID = #{blankId}) GROUP BY PRODUCTIONORDERID")
     CommonUpdateProductionStatusReq selectBlankMinAndMaxStatus(@Param("blankId") String blankId);
 
-    @Update("update aps_process_operation_process_equ set STARTINGROLL = STARTINGROLL - ${reduceNum},WAITREPORTID = null,DOINGBATCHNUMBER = '' where ID = #{processequid}")
-    void updateByCancelRecord(@Param("processequid") String processequid, @Param("reduceNum") Integer reduceNum);
+//    @Update("update aps_process_operation_process_equ set STARTINGROLL = STARTINGROLL - ${reduceNum},WAITREPORTID = null,DOINGBATCHNUMBER = '' where ID = #{processequid}")
+//    void updateByCancelRecord(@Param("processequid") String processequid, @Param("reduceNum") Integer reduceNum);
 
 //    @Update("update asp_check_items set WAITREPORTID = REPLACE(REPLACE(REPLACE(WAITREPORTID,'${recordId},',''),',${recordId}',''),'${recordId}','') where ID = #{deviceId}")
 //    void updateEquByCancelRecord(@Param("recordId") String recordId,@Param("deviceId") String deviceId);
@@ -92,6 +92,9 @@ public interface ApsProcessOperationProcessEquDao extends BaseMapper<ApsProcessO
     void updateSerialNumber(@Param("moduleCode") String moduleCode, @Param("needCancelNumber") int needCancelNumber);
 
     List<GanttVos> getWorkshopAndDeviceByFactoryId(@Param("factoryId") String factoryId);
+
+    @Select("select * from aps_process_operation_process_equ where PROCESSID = #{processoperationid} AND STARTINGROLL > 0 order by ACTUALSTARTDATE limit 1")
+    ApsProcessOperationProcessEquDo selectMinStartWorkDate(@Param("processoperationid") String processoperationid);
 }
 
 

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 42 - 7
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationServiceImpl.java


+ 76 - 4
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportRecordsServiceImpl.java

@@ -122,11 +122,78 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
             reduceNum = batchNumberList.size();
         }
 
-        //更新该工序作业的作业明细的作业状态字段、已开工卷数、明细的待报工记录ID=(空),加工中批次号=(空)
-        apsProcessOperationProcessEquDao.updateByCancelRecord(processequid, reduceNum);
+        //=========更新工序作业明细===========
+        //查询工序作业明细详情
+        ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = apsProcessOperationProcessEquService.getById(processequid);
+        //定义作业明细的更新语句
+        LambdaUpdateWrapper<ApsProcessOperationProcessEquDo> processEquUpdateWrapper = new UpdateWrapper<ApsProcessOperationProcessEquDo>().lambda().eq(ApsProcessOperationProcessEquDo::getId, processequid);
+
+        //当前已开工卷数
+        Integer startingroll = apsProcessOperationProcessEquDo.getStartingroll();
+        //已开工卷数=已开工卷数-输入批次号数量
+        Integer newStartingRoll = startingroll - reduceNum;
+        //增加容错
+        if (newStartingRoll <= 0) {
+            newStartingRoll = 0;
+        }
+        processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getStartingroll, newStartingRoll);
+        //待报工记录ID=(空)
+        processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getWaitreportid, null);
+        /**
+         * 如果已开工卷数=0,则更新该作业明细
+         * 实际开工时间=(空),
+         * 作业状态=待开工
+         */
+        if (newStartingRoll == 0) {
+            processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getActualstartdate, null);
+            processEquUpdateWrapper.set(ApsProcessOperationProcessEquDo::getWorkstatus, "待开工");
+        }
+        //更新
+        apsProcessOperationProcessEquService.update(processEquUpdateWrapper);
+
+        //=========更新工序作业============
+        //工序作业详情
+        ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(processoperationid);
+        //定义作业明细的更新语句
+        LambdaUpdateWrapper<ApsProcessOperationDo> processUpdateWrapper = new UpdateWrapper<ApsProcessOperationDo>().lambda().eq(ApsProcessOperationDo::getId, processoperationid);
+
+        //当前已开工卷数
+        Integer operationStartingroll = apsProcessOperationDo.getStartingroll();
+        //已开工卷数=已开工卷数-输入批次号数量
+        Integer newOperationStartingRoll = operationStartingroll - reduceNum;
+        //增加容错
+        if (newOperationStartingRoll <= 0) {
+            newOperationStartingRoll = 0;
+        }
+        processUpdateWrapper.set(ApsProcessOperationDo::getStartingroll, newOperationStartingRoll);
+        //剩余待开工卷数=计划加工卷数-已开工卷数-输入已取消卷数-已取消卷数
+        Integer leavewaitworkroll = apsProcessOperationDo.getPlanprocessrall() - newOperationStartingRoll - apsProcessOperationDo.getInputunqualifiedroll() - apsProcessOperationDo.getCancelroll();
+        if (leavewaitworkroll <= 0) {
+            leavewaitworkroll = 0;
+        }
+        processUpdateWrapper.set(ApsProcessOperationDo::getLeavewaitworkroll, leavewaitworkroll);
+        /**
+         * 如果已开工卷数=0,则更新工序作业
+         * 实际开工时间=(空)
+         * 作业状态=待开工,
+         * 生产状态=待开工
+         * 如果已开工卷数>0,则更新工序作业
+         * 实际开工时间=该工序作业所有已开工卷数>0的作业明细中最小实际开工时间
+         */
+        if (leavewaitworkroll == 0) {
+            processUpdateWrapper.set(ApsProcessOperationDo::getActualstartdate, null)
+                    .set(ApsProcessOperationDo::getWorkstatus, "待开工")
+                    .set(ApsProcessOperationDo::getProcessstatus, SaveConstans.ProductionStatus.TO_BE_STARTED);
+        } else {
+            //根据工序作业ID查询其作业明细中,已开工卷数>0的最小的实际开工时间
+            ApsProcessOperationProcessEquDo minDateProcessEqu = apsProcessOperationProcessEquDao.selectMinStartWorkDate(processoperationid);
+            if (ObjectUtil.isNotEmpty(minDateProcessEqu) && ObjectUtil.isNotEmpty(minDateProcessEqu.getActualstartdate())) {
+                processUpdateWrapper.set(ApsProcessOperationDo::getActualstartdate, minDateProcessEqu.getActualstartdate());
+            }
+        }
+        //更新
+        apsProcessOperationService.update(processUpdateWrapper);
 
-        //更新该工序作业的已开工卷数-x(默认为1)
-        apsProcessOperationDao.updateByCancelRecord(processoperationid, reduceNum);
 
         //查询作业明细详情
         ApsProcessOperationProcessEquDo equDo = apsProcessOperationProcessEquDao.selectById(processequid);
@@ -373,7 +440,10 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         ApsProcessOperationDo needUpdateProcessOperation = new ApsProcessOperationDo();
         needUpdateProcessOperation.setId(apsProcessOperationDo.getId());
         Integer processStartingRoll = apsProcessOperationDo.getStartingroll();
+        //已开工卷数
         Integer newProcessStartingRoll = processStartingRoll + 1;
+        //剩余待开工卷数=计划加工卷数-已开工卷数-输入已取消卷数-已取消卷数
+        needUpdateProcessOperation.setLeavewaitjobroll(apsProcessOperationDo.getPlanprocessrall() - newProcessStartingRoll - apsProcessOperationDo.getInputunqualifiedroll() - apsProcessOperationDo.getCancelroll());
         needUpdateProcessOperation.setStartingroll(newProcessStartingRoll);
         if (newProcessStartingRoll.equals(1)) {
             needUpdateProcessOperation.setActualstartdate(DateUtil.date());
@@ -1247,6 +1317,8 @@ public class ApsReportRecordsServiceImpl extends ServiceImpl<ApsReportRecordsDao
         }
         //更新该工序作业已开工卷数=已开工卷数+输入批次号数量
         needUpdateProcess.setStartingroll(apsProcessOperationDo.getStartingroll() + inputBatchNumberList.size());
+        //剩余待开工卷数=计划加工卷数-已开工卷数-输入已取消卷数-已取消卷数
+        needUpdateProcess.setLeavewaitjobroll(apsProcessOperationDo.getPlanprocessrall() - needUpdateProcess.getStartingroll() - apsProcessOperationDo.getInputunqualifiedroll() - apsProcessOperationDo.getCancelroll());
         apsProcessOperationService.updateById(needUpdateProcess);
 
         //更新坯料计划状态,参见【订单排程/一键自动排程/更新坯料计划状态】

+ 3 - 0
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationProcessEquDao.xml

@@ -425,16 +425,19 @@
             a1.PROCESSDEVICEID as processdeviceid,
             a1.PROCESSDEVICE as processdevice,
             apl.PRODUCTLINENAME as productlinename,
+            b.CHECKITEMTYPE,
             apl.ID as productlineid
         FROM
             aps_process_operation_process_equ a1
                 LEFT JOIN aps_resources_equipment ape on ape.EQUIPMENTID = a1.PROCESSDEVICEID AND ape.DELETED = '0'
                 LEFT JOIN aps_production_line apl on ape.MAINID =apl.ID AND apl.DELETED = '0'
+            left join asp_check_items b on a1.PROCESSDEVICEID =b.ID
         WHERE
             a1.DELETED = '0'
           and a1.TENANTID=#{factoryId}
         ORDER BY
             a1.PROCESSWORKSHOP,
+            b.CHECKITEMTYPE,
             a1.PROCESSDEVICE
     </select>
 </mapper>