Browse Source

aps-批次号流转逻辑修改

sucheng 8 tháng trước cách đây
mục cha
commit
54cd66b5da

+ 65 - 42
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ReportCheckServiceImpl.java

@@ -3,6 +3,7 @@ package com.rongwei.bscommon.sys.service.impl;
 import cn.hutool.core.util.ObjectUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.rongwei.bscommon.sys.service.ApsBlankOrderService;
 import com.rongwei.bscommon.sys.service.ApsReportRecordsService;
 import com.rongwei.bscommon.sys.service.ReportCheckService;
@@ -29,6 +30,7 @@ import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
 import javax.validation.constraints.NotNull;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
@@ -654,8 +656,8 @@ public class ReportCheckServiceImpl implements ReportCheckService {
                     .filter(info -> entryentry.getKey().equals(info.getPlaninputid()))
                     .collect(Collectors.toList());
             /**
-              * 需求变更:查找该作业明细的该工序作业输出物料对应的所有后道作业明细,即该报工记录的作业明细的所有后道作业明细中,其工序作业的输入物料ID是报工记录的输出物料ID的所有作业明细,
-              * 根据计划开工时间的先后顺序,将流转组批次号依次分配给这些后道作业明细;注意:是追加批次号到待加工料卷批次号后面
+             * 需求变更:查找该作业明细的该工序作业输出物料对应的所有后道作业明细,即该报工记录的作业明细的所有后道作业明细中,其工序作业的输入物料ID是报工记录的输出物料ID的所有作业明细,
+             * 根据计划开工时间的先后顺序,将流转组批次号依次分配给剩余待开工卷数-待加工料卷批次号数量>0的作业明细的待加工料卷批次号;注意:是追加批次号到待加工料卷批次号后面
              */
             List<String> processIds = apsProcessOperationDos.stream().map(ApsProcessOperationDo::getId).collect(Collectors.toList());
             List<ApsProcessOperationProcessEquDo> updateProcessEquList = nextProcessOperationProcessEquDos.stream().filter(info -> processIds.contains(info.getProcessid()))
@@ -663,16 +665,37 @@ public class ReportCheckServiceImpl implements ReportCheckService {
             List<String> outPutNumbers = entryentry.getValue();
             outPutNumbers.sort(Comparator.comparing(this::toSortBatchNumber));
             for (ApsProcessOperationProcessEquDo equDo : updateProcessEquList) {
-                if (ObjectUtil.isNotEmpty(outPutNumbers)){
+                if (ObjectUtil.isNotEmpty(outPutNumbers)) {
+                    //剩余待开工卷数
+                    Integer leavewaitworkroll = equDo.getLeavewaitworkroll();
+                    //待加工料卷批次号数量
+                    Integer waitToDoCount = 0;
+                    String bachmaterialprocess = equDo.getBachmaterialprocess();
+                    if (ObjectUtil.isNotEmpty(bachmaterialprocess)) {
+                        waitToDoCount = bachmaterialprocess.split(",").length;
+                    }
+                    if (leavewaitworkroll - waitToDoCount <= 0) {
+                        continue;
+                    }
+                    //需要获取的批次号
+                    List<String> needGetBatchNumberList = outPutNumbers.subList(0, leavewaitworkroll - waitToDoCount);
+
                     apsProcessOperationProcessEquDo = new ApsProcessOperationProcessEquDo();
                     apsProcessOperationProcessEquDo.setId(equDo.getId());
-                    apsProcessOperationProcessEquDo.setBachmaterialprocess(strAppendListConvertStr(equDo.getBachmaterialprocess(), Collections.singletonList(outPutNumbers.get(0))));
+                    apsProcessOperationProcessEquDo.setBachmaterialprocess(strAppendListConvertStr(equDo.getBachmaterialprocess(), needGetBatchNumberList));
                     apsProcessOperationProcessEquDo.setModifydate(new Date());
-                    log.debug("将批次号:{}流转给工序作业明细:{}", outPutNumbers.get(0), equDo.getId());
+                    log.debug("将批次号:{}流转给工序作业明细:{}", needGetBatchNumberList, equDo.getId());
                     updateProcessEquData.add(apsProcessOperationProcessEquDo);
-                    outPutNumbers.removeAll(Collections.singletonList(outPutNumbers.get(0)));
+                    outPutNumbers.removeAll(needGetBatchNumberList);
                 }
             }
+            //如果还有剩余批次号没有分配完,表示后道作业取消了,无需分配,需要转到备料库,即设置在制品状态=备料中
+            if (!outPutNumbers.isEmpty()) {
+                apsWorkInProgressInventoryService.update(new UpdateWrapper<ApsWorkInProgressInventoryDo>().lambda()
+                        .set(ApsWorkInProgressInventoryDo::getWorkinprocessstatus, "备料中")
+                        .in(ApsWorkInProgressInventoryDo::getBatchnumber, outPutNumbers)
+                        .eq(ApsWorkInProgressInventoryDo::getDeleted, "0"));
+            }
 //            for (ApsProcessOperationDo apsProcessOperationDo : apsProcessOperationDos) {
 //                updateOperationDo = new ApsProcessOperationDo();
 //                // 更新ID
@@ -743,14 +766,14 @@ public class ReportCheckServiceImpl implements ReportCheckService {
         workInProgressInventoryDos.stream()
                 .filter(inventory -> outputNumberList.contains(inventory.getBatchnumber()))
                 .collect(Collectors.toList()).forEach(data -> {
-            if (StringUtils.isNotBlank(workingProcessStatus)) {
-                data.setWorkinprocessstatus(workingProcessStatus);
-            }
-            if (StringUtils.isNotBlank(workingProcessType)) {
-                data.setWorkinprocesstype(workingProcessType);
-            }
+                    if (StringUtils.isNotBlank(workingProcessStatus)) {
+                        data.setWorkinprocessstatus(workingProcessStatus);
+                    }
+                    if (StringUtils.isNotBlank(workingProcessType)) {
+                        data.setWorkinprocesstype(workingProcessType);
+                    }
 
-        });
+                });
         return outputNumberList;
     }
 
@@ -1188,42 +1211,42 @@ public class ReportCheckServiceImpl implements ReportCheckService {
             workInProgressInventoryDos.stream()
                     .filter(inventory -> apsReportOutputDo.getOutputnumber().equals(inventory.getBatchnumber()))
                     .collect(Collectors.toList()).forEach(data -> {
-                if ("是".equals(ifblankprocess)) {
-                    data.setBlankname(apsReportOutputDo.getOutputdesc());
-                }
-                data.setWorkinprocess(apsReportOutputDo.getOutputdesc());
-                data.setInspectionlevel(apsReportOutputDo.getInsepctionlevel());
-                data.setIsqualified(apsReportOutputDo.getQualified());
-                String formatMajor = handleDefect(apsReportOutputDo.getMajor(), defectTypes);
-                String formatMinor = handleDefect(apsReportOutputDo.getMinor(), defectTypes);
-                if (StringUtils.isNotBlank(formatMajor) && StringUtils.isNotBlank(formatMinor)) {
-                    if (StringUtils.isNotBlank(apsReportOutputDo.getCheckremark())) {
-                        data.setRemark("主要缺陷:" + formatMajor + ";次要缺陷:" + formatMinor + ";检验备注:" + apsReportOutputDo.getCheckremark() + ";");
-                    } else {
-                        data.setRemark("主要缺陷:" + formatMajor + ";次要缺陷:" + formatMinor + ";");
-                    }
-                } else {
-                    if (StringUtils.isNotBlank(formatMajor)) {
-                        if (StringUtils.isNotBlank(apsReportOutputDo.getCheckremark())) {
-                            data.setRemark("主要缺陷:" + formatMajor + ";检验备注:" + apsReportOutputDo.getCheckremark() + ";");
-                        } else {
-                            data.setRemark("主要缺陷:" + formatMajor + ";");
+                        if ("是".equals(ifblankprocess)) {
+                            data.setBlankname(apsReportOutputDo.getOutputdesc());
                         }
-                    } else {
-                        if (StringUtils.isNotBlank(formatMinor)) {
+                        data.setWorkinprocess(apsReportOutputDo.getOutputdesc());
+                        data.setInspectionlevel(apsReportOutputDo.getInsepctionlevel());
+                        data.setIsqualified(apsReportOutputDo.getQualified());
+                        String formatMajor = handleDefect(apsReportOutputDo.getMajor(), defectTypes);
+                        String formatMinor = handleDefect(apsReportOutputDo.getMinor(), defectTypes);
+                        if (StringUtils.isNotBlank(formatMajor) && StringUtils.isNotBlank(formatMinor)) {
                             if (StringUtils.isNotBlank(apsReportOutputDo.getCheckremark())) {
-                                data.setRemark("次要缺陷:" + formatMinor + ";检验备注:" + apsReportOutputDo.getCheckremark() + ";");
+                                data.setRemark("主要缺陷:" + formatMajor + ";次要缺陷:" + formatMinor + ";检验备注:" + apsReportOutputDo.getCheckremark() + ";");
                             } else {
-                                data.setRemark("次要缺陷:" + formatMinor + ";");
+                                data.setRemark("主要缺陷:" + formatMajor + ";次要缺陷:" + formatMinor + ";");
                             }
                         } else {
-                            if (StringUtils.isNotBlank(apsReportOutputDo.getCheckremark())) {
-                                data.setRemark("检验备注:" + apsReportOutputDo.getCheckremark() + ";");
+                            if (StringUtils.isNotBlank(formatMajor)) {
+                                if (StringUtils.isNotBlank(apsReportOutputDo.getCheckremark())) {
+                                    data.setRemark("主要缺陷:" + formatMajor + ";检验备注:" + apsReportOutputDo.getCheckremark() + ";");
+                                } else {
+                                    data.setRemark("主要缺陷:" + formatMajor + ";");
+                                }
+                            } else {
+                                if (StringUtils.isNotBlank(formatMinor)) {
+                                    if (StringUtils.isNotBlank(apsReportOutputDo.getCheckremark())) {
+                                        data.setRemark("次要缺陷:" + formatMinor + ";检验备注:" + apsReportOutputDo.getCheckremark() + ";");
+                                    } else {
+                                        data.setRemark("次要缺陷:" + formatMinor + ";");
+                                    }
+                                } else {
+                                    if (StringUtils.isNotBlank(apsReportOutputDo.getCheckremark())) {
+                                        data.setRemark("检验备注:" + apsReportOutputDo.getCheckremark() + ";");
+                                    }
+                                }
                             }
                         }
-                    }
-                }
-            });
+                    });
         });
     }