Browse Source

aps-借调逻辑需求变更

sucheng 8 months ago
parent
commit
de48b60bda

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

@@ -141,4 +141,7 @@ public interface ApsBlankOrderDao extends BaseMapper<ApsBlankOrderDo> {
 
     @Select("select GROUP_CONCAT(distinct IF(b.BACHMATERIALPROCESS = '', null,b.BACHMATERIALPROCESS) ) AS 'BACHMATERIALPROCESS' from aps_process_operation a LEFT JOIN aps_process_operation_process_equ b ON b.DELETED = 0 AND a.ID = b.PROCESSID where a.DELETED = 0 AND a.ID = #{processId} AND (a.PREVIOUSPROCESSID is null OR a.PREVIOUSPROCESSID = '') group by a.ID")
     String selectBatchNumbersByProcessId(@Param("processId") String processId);
+
+    @Select("select * from aps_process_operation_process_equ where DELETED = 0 AND FIND_IN_SET(#{batchnumber},BACHMATERIALPROCESS) limit 1")
+    ApsProcessOperationProcessEquDo selectUseThisBatchNumberProcessEqu(@Param("batchnumber") String batchnumber);
 }

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

@@ -116,6 +116,8 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
     private ReportCheckService reportCheckService;
     @Autowired
     private ApsProcessOperationProcessEquServiceImpl apsProcessOperationProcessEquServiceImpl;
+    @Autowired
+    private ApsProcessOperationProcessEquDao apsProcessOperationProcessEquDao;
 
 
     @Override
@@ -3305,51 +3307,61 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
     private void borrowBlank(ApsWorkInProgressInventoryDo progressWork) {
         //借调逻辑
         if (ObjectUtil.isNotEmpty(progressWork) && ObjectUtil.isNotEmpty(progressWork.getWorkinprocessstatus()) && progressWork.getWorkinprocessstatus().equals(SaveConstans.WorkInProgressStatus.WAIT_WORK)) {
-            //获取该在制品的工序作业ID
-            String processoperationid = progressWork.getProcessoperationid();
             //获取该在制品的批次号
             String batchnumber = progressWork.getBatchnumber();
-            //获取该在制品作业明细的ID
-            String processoperationequid = progressWork.getProcessoperationequid();
-            //在制品对应的工序作业输出物料ID
-            String joboutputmaterialid = progressWork.getJoboutputmaterialid();
-//                //该对应工序作业的已借调卷数=已借调卷数+1
-//                this.baseMapper.processAddSecondRoll(processoperationid);
-//                //将在制品的作业输出物料ID对应的所有后道工序作业的所有作业明细的待加工料卷批次号去掉“{批次号},”
-//                this.baseMapper.processDeleteBatchNumber(batchnumber, processoperationid);
-            //查找该在制品作业明细ID对应的后道作业明细中,其工序作业的输入物料ID是该在制品的作业输出物料ID的所有作业明细,
-            //将这些作业明细的待加工料卷批次号去掉“{批次号},”
-            this.baseMapper.updateBatchNumberByBorrow(batchnumber, processoperationequid, joboutputmaterialid);
-
-
-            //分配被借调作业明细=备料在制品所有后道作业明细中计划加工卷数-已开工卷数-已借调卷数>0的作业明细中,
-            // 优先取已取消卷数>已借调卷数,并且计划开工时间最晚的一个作业明细,
-            // 如果没有已取消卷数>已借调卷数的作业明细,则取计划开工时间最晚的一个作业明细
-
-            //查询被借调作业明细的信息
-            ApsProcessOperationProcessEquDo borrowOperationEqu = apsProcessOperationProcessEquService.getById(processoperationequid);
+            //查询被借调批次号的作业明细信息
+            ApsProcessOperationProcessEquDo needBorrowOperationEqu = this.baseMapper.selectUseThisBatchNumberProcessEqu(batchnumber);
             //查询被借调作业的信息
-            ApsProcessOperationDo needBorrowOperation = apsProcessOperationDao.selectNeedBorrowOperation(joboutputmaterialid);
-            List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDoList = apsProcessOperationProcessEquService.list(new QueryWrapper<ApsProcessOperationProcessEquDo>().lambda().eq(ApsProcessOperationProcessEquDo::getPreviousprocessesids, borrowOperationEqu.getId()));
-            //所有后道作业明细中计划加工卷数-已开工卷数-已借调卷数>0的作业明细
-            List<ApsProcessOperationProcessEquDo> collect1 = apsProcessOperationProcessEquDoList.stream().filter(item -> (item.getPlanprocessrall() - item.getStartingroll() - item.getSecondroll()) > 0).collect(Collectors.toList());
-            //优先取已取消卷数>已借调卷数
-            List<ApsProcessOperationProcessEquDo> collect = apsProcessOperationProcessEquDoList.stream().filter(item -> (item.getCancelroll() > item.getSecondroll())).collect(Collectors.toList());
-            ApsProcessOperationProcessEquDo needBorrowOperationEqu = null;
-            if (ObjectUtil.isNotEmpty(collect)) {
-                //并且计划开工时间最晚的一个作业明细
-                needBorrowOperationEqu = collect.stream().sorted(Comparator.comparing(ApsProcessOperationProcessEquDo::getPlanstartdate).reversed()).findFirst().orElse(null);
-            } else {
-                //如果没有已取消卷数>已借调卷数的作业明细,则取计划开工时间最晚的一个作业明细
-                needBorrowOperationEqu = collect1.stream().sorted(Comparator.comparing(ApsProcessOperationProcessEquDo::getPlanstartdate).reversed()).findFirst().orElse(null);
-            }
+            ApsProcessOperationDo needBorrowOperation = apsProcessOperationService.getById(needBorrowOperationEqu.getProcessid());
+//            //获取该在制品作业明细的ID
+//            String processoperationequid = progressWork.getProcessoperationequid();
+//            //在制品对应的工序作业输出物料ID
+//            String joboutputmaterialid = progressWork.getJoboutputmaterialid();
+////                //该对应工序作业的已借调卷数=已借调卷数+1
+////                this.baseMapper.processAddSecondRoll(processoperationid);
+////                //将在制品的作业输出物料ID对应的所有后道工序作业的所有作业明细的待加工料卷批次号去掉“{批次号},”
+////                this.baseMapper.processDeleteBatchNumber(batchnumber, processoperationid);
+//            //查找该在制品作业明细ID对应的后道作业明细中,其工序作业的输入物料ID是该在制品的作业输出物料ID的所有作业明细,
+//            //将这些作业明细的待加工料卷批次号去掉“{批次号},”
+//            this.baseMapper.updateBatchNumberByBorrow(batchnumber, processoperationequid, joboutputmaterialid);
+//
+//
+//            //分配被借调作业明细=备料在制品所有后道作业明细中计划加工卷数-已开工卷数-已借调卷数>0的作业明细中,
+//            // 优先取已取消卷数>已借调卷数,并且计划开工时间最晚的一个作业明细,
+//            // 如果没有已取消卷数>已借调卷数的作业明细,则取计划开工时间最晚的一个作业明细
+//
+//            //查询被借调作业明细的信息
+//            ApsProcessOperationProcessEquDo borrowOperationEqu = apsProcessOperationProcessEquService.getById(processoperationequid);
+//            //查询被借调作业的信息
+//            ApsProcessOperationDo needBorrowOperation = apsProcessOperationDao.selectNeedBorrowOperation(joboutputmaterialid);
+//            List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDoList = apsProcessOperationProcessEquService.list(new QueryWrapper<ApsProcessOperationProcessEquDo>().lambda().eq(ApsProcessOperationProcessEquDo::getPreviousprocessesids, borrowOperationEqu.getId()));
+//            //所有后道作业明细中计划加工卷数-已开工卷数-已借调卷数>0的作业明细
+//            List<ApsProcessOperationProcessEquDo> collect1 = apsProcessOperationProcessEquDoList.stream().filter(item -> (item.getPlanprocessrall() - item.getStartingroll() - item.getSecondroll()) > 0).collect(Collectors.toList());
+//            //优先取已取消卷数>已借调卷数
+//            List<ApsProcessOperationProcessEquDo> collect = apsProcessOperationProcessEquDoList.stream().filter(item -> (item.getCancelroll() > item.getSecondroll())).collect(Collectors.toList());
+//            ApsProcessOperationProcessEquDo needBorrowOperationEqu = null;
+//            if (ObjectUtil.isNotEmpty(collect)) {
+//                //并且计划开工时间最晚的一个作业明细
+//                needBorrowOperationEqu = collect.stream().sorted(Comparator.comparing(ApsProcessOperationProcessEquDo::getPlanstartdate).reversed()).findFirst().orElse(null);
+//            } else {
+//                //如果没有已取消卷数>已借调卷数的作业明细,则取计划开工时间最晚的一个作业明细
+//                needBorrowOperationEqu = collect1.stream().sorted(Comparator.comparing(ApsProcessOperationProcessEquDo::getPlanstartdate).reversed()).findFirst().orElse(null);
+//            }
             if (ObjectUtil.isNotEmpty(needBorrowOperationEqu)) {
+
+                LinkedList<String> oldBatchNumberList = new LinkedList<>(Arrays.asList(needBorrowOperationEqu.getBachmaterialprocess().split(",")));
+                oldBatchNumberList.remove(batchnumber);
+                String newBatchNumber = "";
+                if (ObjectUtil.isNotEmpty(oldBatchNumberList)) {
+                    newBatchNumber = String.join(",", oldBatchNumberList);
+                }
                 //更新明细的已借调卷数
                 //更新工序作业的已借调卷数
                 Integer secondroll = needBorrowOperationEqu.getSecondroll() + 1;
                 ApsProcessOperationProcessEquDo needUpdateProcessEqu = new ApsProcessOperationProcessEquDo();
                 needUpdateProcessEqu.setId(needBorrowOperationEqu.getId());
                 needUpdateProcessEqu.setSecondroll(secondroll);
+                needUpdateProcessEqu.setBachmaterialprocess(newBatchNumber);
                 apsProcessOperationProcessEquService.updateById(needUpdateProcessEqu);
 
                 /**
@@ -3358,7 +3370,7 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                  *  临时计算本次取消卷数=1
                  *  根据被借调作业明细的本次取消卷数取消和更新作业明细,参见【取消和更新作业明细】
                  */
-                if (secondroll > needBorrowOperationEqu.getCancelroll()) {
+                if (secondroll > needBorrowOperationEqu.getCancelrollno()) {
                     needBorrowOperationEqu.setSecondroll(secondroll);
                     R r = apsProcessOperationService.cancelProcessOperationEqu(1, needBorrowOperation, needBorrowOperationEqu, "1");
                     if (!r.getCode().equals("200")) {
@@ -3403,12 +3415,12 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                 }
                 //撤回订单
                 //被撤回的作业明细
-                ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = apsProcessOperationProcessEquService.getById(processoperationequid);
+                ApsProcessOperationProcessEquDo apsProcessOperationProcessEquDo = apsProcessOperationProcessEquService.getById(needBorrowOperationEqu.getId());
                 //被撤回的坯料计划
                 ApsBlankOrderDo changeBlankOrder = apsBlankOrderService.getById(apsProcessOperationProcessEquDo.getBlankid());
                 //被撤回的订单信息
                 ApsProductionOrderDo apsProductionOrderDo = apsProductionOrderService.getById(changeBlankOrder.getProductionorderid());
-                reportCheckService.goBackWf(processoperationequid, apsProcessOperationProcessEquDo.getBlankid(), apsProductionOrderDo);
+                reportCheckService.goBackWf(needBorrowOperationEqu.getId(), apsProcessOperationProcessEquDo.getBlankid(), apsProductionOrderDo);
 
 
 //                //处理后续工序状态