Forráskód Böngészése

aps-借调逻辑优化

sucheng 11 hónapja
szülő
commit
63fe6065bd

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

@@ -2,6 +2,7 @@ package com.rongwei.bscommon.sys.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.bsentity.domain.ApsProcessOperationDo;
+import com.rongwei.bsentity.domain.ApsProcessOperationProcessEquDo;
 import com.rongwei.bsentity.vo.CancelProcessOperationVo;
 import com.rongwei.bsentity.vo.ResetProcessOperationVo;
 import com.rongwei.rwcommon.base.R;
@@ -51,4 +52,5 @@ public interface ApsProcessOperationService extends IService<ApsProcessOperation
     R updateProcess(Map<String, Object> params);
 
     R cancelProcessOperation(CancelProcessOperationVo cancelProcessOperationVo);
+    R cancelProcessOperationEqu(Integer curEquCancelRoll, ApsProcessOperationDo apsProcessOperationDo, ApsProcessOperationProcessEquDo processOperationProcessEquDo);
 }

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

@@ -1942,8 +1942,61 @@ public class ApsBlankOrderServiceImpl extends ServiceImpl<ApsBlankOrderDao, ApsB
                 this.baseMapper.updateBatchNumberByBorrow(batchnumber, processoperationequid, joboutputmaterialid);
 
 
-                //被借调作业=该在制品的作业输出物料ID对应所有后道工序作业中计划开工时间最晚的,剩余开工卷数>0的作业
+                //分配被借调作业明细=备料在制品所有后道作业明细中计划加工卷数-已开工卷数-已借调卷数>0的作业明细中,
+                // 优先取已取消卷数>已借调卷数,并且计划开工时间最晚的一个作业明细,
+                // 如果没有已取消卷数>已借调卷数的作业明细,则取计划开工时间最晚的一个作业明细
+
+                //查询被借调作业明细的信息
+                ApsProcessOperationProcessEquDo borrowOperationEqu = apsProcessOperationProcessEquService.getById(processoperationequid);
+                //查询被借调作业的信息
                 ApsProcessOperationDo needBorrowOperation = apsProcessOperationDao.selectNeedBorrowOperation(joboutputmaterialid);
+                List<ApsProcessOperationProcessEquDo> apsProcessOperationProcessEquDoList = apsProcessOperationProcessEquService.list(new QueryWrapper<ApsProcessOperationProcessEquDo>().lambda().eq(ApsProcessOperationProcessEquDo::getPreviousprocessesids, borrowOperationEqu));
+                //所有后道作业明细中计划加工卷数-已开工卷数-已借调卷数>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)) {
+                    //更新明细的已借调卷数
+                    //更新工序作业的一借调卷数
+                    Integer secondroll = needBorrowOperationEqu.getSecondroll() + 1;
+                    ApsProcessOperationProcessEquDo needUpdateProcessEqu = new ApsProcessOperationProcessEquDo();
+                    needUpdateProcessEqu.setId(needBorrowOperationEqu.getId());
+                    needUpdateProcessEqu.setSecondroll(secondroll);
+                    apsProcessOperationProcessEquService.updateById(needUpdateProcessEqu);
+
+                    /**
+                     * 已借调卷数=已借调卷数+1
+                     * 如果已借调卷数>已取消卷数,
+                     *  临时计算本次取消卷数=1
+                     *  根据被借调作业明细的本次取消卷数取消和更新作业明细,参见【取消和更新作业明细】
+                     */
+                    if (secondroll > needBorrowOperationEqu.getCancelroll()) {
+                        needBorrowOperationEqu.setSecondroll(secondroll);
+                        R r = apsProcessOperationService.cancelProcessOperationEqu(1, needBorrowOperation, needBorrowOperationEqu)
+                        if (!r.getCode().equals("200")) {
+                            throw new CustomException(r.getMsg());
+                        }
+
+                    }
+                }
+
+
+                /**
+                 * 更新被借调作业
+                 *  已借调卷数=已借调卷数+1,
+                 *  如果已借调卷数>已取消卷数,
+                 *      临时计算本次取消卷数=1
+                 *      已取消卷数=已取消卷数+本次取消卷数
+                 *      根据被借调作业的本次取消卷数取消和更新该工序作业,参见【取消和更新工序作业】
+                 */
                 if (ObjectUtil.isNotEmpty(needBorrowOperation)) {
                     //更新工序作业的一借调卷数
                     Integer secondroll = needBorrowOperation.getSecondroll() + 1;

+ 4 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationProcessEquBackupDo.java

@@ -156,4 +156,8 @@ public class ApsProcessOperationProcessEquBackupDo extends BaseDo implements Ser
      * 已取消卷数
      */
     private Integer cancelroll;
+    /**
+     * 已借调卷数
+     */
+    private Integer secondroll;
 }

+ 5 - 0
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationProcessEquDo.java

@@ -179,4 +179,9 @@ public class ApsProcessOperationProcessEquDo extends BaseDo {
      */
     @TableField("CANCELROLL")
     private Integer cancelroll;
+    /**
+     * 已借调卷数
+     */
+    @TableField("SECONDROLL")
+    private Integer secondroll;
 }