Ver código fonte

feature
1.甘特图接口增加坯料计划的承诺交货日期
2.报工校验逻辑修改

xiahan 1 ano atrás
pai
commit
da7dfe665a

+ 38 - 34
bs-common/src/main/java/com/rongwei/safecommon/utils/SaveConstans.java

@@ -64,6 +64,35 @@ public class SaveConstans {
         put("0001S31000000000J0TR", "BC");
     }};
     public static final List<String> MERGE_PRODUCE_PROCESS = new ArrayList<>();
+    /**
+     * 初始化数量单位
+     */
+    public static final Map<String, String> QUANTITY_UNIT_MAP = new HashMap<String, String>() {{
+        /**
+         * 公斤
+         */
+        put("kg", "公斤");
+        /**
+         * 吨
+         */
+        put("ton", "吨");
+    }};
+    /**
+     * 初始化月份代号
+     */
+    public static final List<String> MONTH_CODE_LIST = Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "Y", "Z");
+    /**
+     * 高
+     */
+    public static final String HIGH = "高";
+    /**
+     * 中
+     */
+    public static final String MIDDLE = "中";
+    /**
+     * 低
+     */
+    public static final String LOW = "低";
 
     static {
         MERGE_PRODUCE_PROCESS.add("");
@@ -211,7 +240,7 @@ public class SaveConstans {
         /**
          * 特种设备作业人员证书提醒
          */
-        public static final String PERSONNEL_CERTIFICATES="PersonnelCertificates";
+        public static final String PERSONNEL_CERTIFICATES = "PersonnelCertificates";
     }
 
     public static class NotifyTitle {
@@ -348,11 +377,11 @@ public class SaveConstans {
         /**
          * 特种设备作业人员证书提醒
          */
-        public static final String PERSONNEL_CERTIFICATES_TITLE="特种设备人员证书年检提醒";
+        public static final String PERSONNEL_CERTIFICATES_TITLE = "特种设备人员证书年检提醒";
         /**
          * 设备年检
          */
-        public static final String EQUIPMENT_CHECK_TITLE="设备年检提醒";
+        public static final String EQUIPMENT_CHECK_TITLE = "设备年检提醒";
     }
 
     public static class NotifyContent {
@@ -489,12 +518,12 @@ public class SaveConstans {
         /**
          * 特种设备作业人员证书提醒
          */
-        public static final String PERSONNEL_CERTIFICATES_CONTENT="您好,有如下人员证书即将到期,请及时处理 姓名:【%s】,所属部门:【%s】证书类别:【%s】,复审日期:【%tF】";
+        public static final String PERSONNEL_CERTIFICATES_CONTENT = "您好,有如下人员证书即将到期,请及时处理 姓名:【%s】,所属部门:【%s】证书类别:【%s】,复审日期:【%tF】";
 
         /**
          * 设备年检
          */
-        public static final String EQUIPMENT_CHECK_CONTENT=" 您好,有如下设备即将年检到期,请及时处理! 设备类型:【%s】,设备编号:【%s】,设备名称:【%s】,年检日期:【%tF】";
+        public static final String EQUIPMENT_CHECK_CONTENT = " 您好,有如下设备即将年检到期,请及时处理! 设备类型:【%s】,设备编号:【%s】,设备名称:【%s】,年检日期:【%tF】";
     }
 
     /**
@@ -824,6 +853,10 @@ public class SaveConstans {
          * 备料中
          */
         public static final String WAITING = "备料中";
+        /**
+         * 待入库
+         */
+        public static final String TO_BE_PUT_INTO_STORAGE = "待入库";
     }
 
     public static class CheckLevel {
@@ -840,33 +873,4 @@ public class SaveConstans {
          */
         public static final String WAITING_JUDGMENT = "待判";
     }
-    /**
-     * 初始化数量单位
-     */
-    public static final Map<String, String> QUANTITY_UNIT_MAP = new HashMap<String, String>() {{
-        /**
-         * 公斤
-         */
-        put("kg", "公斤");
-        /**
-         * 吨
-         */
-        put("ton", "吨");
-    }};
-    /**
-     * 初始化月份代号
-     */
-    public static final List<String> MONTH_CODE_LIST = Arrays.asList("1", "2", "3", "4", "5", "6", "7", "8", "9", "X", "Y", "Z");
-    /**
-     * 高
-     */
-    public static final String HIGH = "高";
-    /**
-     * 中
-     */
-    public static final String MIDDLE = "中";
-    /**
-     * 低
-     */
-    public static final String LOW = "低";
 }

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

@@ -20,12 +20,10 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Date;
 import java.util.List;
 import java.util.stream.Collectors;
 
-import static com.rongwei.safecommon.utils.SaveConstans.WorkInProgressStatus.WAITING;
-import static com.rongwei.safecommon.utils.SaveConstans.WorkInProgressStatus.WAIT_WORK;
+import static com.rongwei.safecommon.utils.SaveConstans.WorkInProgressStatus.*;
 
 /**
  * ReportCheckServiceImpl class
@@ -35,8 +33,17 @@ import static com.rongwei.safecommon.utils.SaveConstans.WorkInProgressStatus.WAI
  */
 @Service
 public class ReportCheckServiceImpl implements ReportCheckService {
+    public static final String NO_DELETED = "0";
+    public static final String DELETED = "1";
+    public static final String YES = "是";
+    public static final String NO = "否";
+    public static final String PENDING_PLAN_REVIEW = "待计划评审";
+    public static final String VERIFIED = "已检验";
+    public static final String COMPLETED = "已完工";
+    public static final String REJECTS = "不良品备料";
+    public static final String SEMIFINISHED_PRODUCTS = "半成品备料";
+    public static final String WORK_IN_PROCESS = "在制品";
     private final Logger log = LoggerFactory.getLogger(this.getClass().getName());
-
     @Autowired
     private ApsReportRecordsService apsReportRecordsService;
     @Autowired
@@ -54,16 +61,6 @@ public class ReportCheckServiceImpl implements ReportCheckService {
     @Autowired
     private ApsProcessOperationProcessEquServiceImpl apsProcessOperationProcessEquService;
 
-    public static final String NO_DELETED = "0";
-    public static final String DELETED = "1";
-    public static final String YES = "是";
-    public static final String NO = "否";
-    public static final String PENDING_PLAN_REVIEW = "待计划评审";
-    public static final String VERIFIED = "已检验";
-    public static final String COMPLETED = "已完工";
-    public static final String REJECTS = "不良品备料";
-    public static final String SEMIFINISHED_PRODUCTS="半成品备料";
-    public static final String WORK_IN_PROCESS="在制品";
     /**
      * 保存检验结果后更新相关信息
      *
@@ -90,7 +87,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
 //        }
         // 获取当前报工记录对应的工序作业记录
         ApsProcessOperationProcessEquDo currentProcessOperationEqu = apsProcessOperationProcessEquService.getById(reportRecordsDo.getProcessequid());
-        if(currentProcessOperationEqu==null){
+        if (currentProcessOperationEqu == null) {
             log.error("无法找到当前报工记录对应的工序作业信息");
             return R.error("无法找到当前报工记录对应的工序作业信息");
         }
@@ -154,16 +151,24 @@ public class ReportCheckServiceImpl implements ReportCheckService {
             log.debug("暂无检验的数据");
             return R.ok("暂无需要检验的数据");
         }
+        // modify at [ 2024-06-28 11:44:04 ] by xh: 修改获取下一个工序作业的逻辑
+        /**
+         * 当前报工记录的输出物料ID和下一个工序作业的输入物料匹配 找到需要更新待加工料卷批次号的工序作业明细信息
+         */
         String nextProcessId = currentProcessOperationMainDo.getNextprocessid();
+        // 输出物料ID
+        List<String> outputMaterialId = reportOutputDos.stream().map(ApsReportOutputDo::getOutputid).distinct().collect(Collectors.toList());
         // 获取当前工序对应的后道工序信息
         List<ApsProcessOperationDo> nextProcessOperationDos = new ArrayList<>();
         // 当前工序作业的下一个工序作业ID
-        List<String> nextProcessIds = null;
+        List<String> nextProcessIds = new ArrayList<>();
         if (StringUtils.isNotBlank(nextProcessId)) {
-            nextProcessIds = Arrays.asList(nextProcessId.split(","));
+            // 找到可以更新待加工料卷批次号的工序作业信息
             nextProcessOperationDos = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
-                    .in(ApsProcessOperationDo::getId, nextProcessIds)
+                    .in(ApsProcessOperationDo::getId, Arrays.asList(nextProcessId.split(",")))
+                    .in(ApsProcessOperationDo::getPlaninputid, outputMaterialId)
                     .eq(BaseDo::getDeleted, NO_DELETED));
+            nextProcessIds.addAll(nextProcessOperationDos.stream().map(ApsProcessOperationDo::getId).collect(Collectors.toList()));
         }
 
         // 获取当前报工作业对应的在制品信息
@@ -179,6 +184,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
         int inspectQuantity = reportOutputDos.size();
         // 订单信息
         //currentProductionOrderDoDispose(productionOrderDo, unqualificationOutPutList);
+        log.debug("开始更新在制品库存信息");
         // 在制品
         updateArticlesProcessData(unqualificationOutPutList, qualifiedOutPutList, reportRecordsDo,
                 apsWorkInProgressInventoryDos, nextProcessOperationDos, currentProcessOperationMainDo,
@@ -192,44 +198,46 @@ public class ReportCheckServiceImpl implements ReportCheckService {
 //        }
 
         /**********************执行数据更新操作*************************/
-        if (!nextProcessOperationDos.isEmpty() && StringUtils.isNotBlank(toBeProcessedBatchNum)) {
+        if (!nextProcessIds.isEmpty() && StringUtils.isNotBlank(toBeProcessedBatchNum)) {
+            log.debug("开始增加后道工序作业:{}的待加工批次号:{}",nextProcessIds,toBeProcessedBatchNum);
             //更新后续工序的待加工批次号信息
-            apsProcessOperationService.updateBachmaterialprocessByIds(nextProcessOperationDos.stream()
-                    .map(ApsProcessOperationDo::getId).collect(Collectors.toList()), toBeProcessedBatchNum,
+            apsProcessOperationService.updateBachmaterialprocessByIds(nextProcessIds, toBeProcessedBatchNum,
                     unqualifiedQuantity);
-
-            apsProcessOperationProcessEquService.updateBachmaterialprocessByIds(nextProcessOperationDos.stream()
-                    .map(ApsProcessOperationDo::getId).collect(Collectors.toList()), toBeProcessedBatchNum);
+            apsProcessOperationProcessEquService.updateBachmaterialprocessByIds(nextProcessIds, toBeProcessedBatchNum);
         }
         /***************************存在不合格批次信息时 更新更新报工记录对应订单的订单评审状态=待计划评审, 订单调整日期=今天*************************************/
         if (unqualifiedQuantity > 0) {
             apsProductionOrderService.getBaseMapper().changeOrderById(productionOrderDo.getId());
         }
         /************************更新工序*******************************/
+        log.debug("开始更新工序作业明细");
         // 更新工序作业明细表的输出已检验卷数,不合格卷数,合格卷数完工状态,作业状态,生产状态
         apsProcessOperationProcessEquService.updateAboutCheckBatchNum(processOperationEquId, inspectQuantity,
                 qualifiedQuantity, unqualifiedQuantity, previousprocessid, currentProcessOperationMainDo.getId());
         // 更新工序主表的 已检验卷数,不合格卷数,合格卷数 , 完工状态,作业状态,生产状态
+        log.debug("开始更新工序作业");
         apsProcessOperationService.updateAboutCheckBatchNum(currentProcessOperationMainDo.getId(), inspectQuantity,
                 qualifiedQuantity, unqualifiedQuantity);
         /***************更新在制品信息****************************/
-        // 需要刪除的ID
-        List<String> deletedIdList = apsWorkInProgressInventoryDos.stream()
-                .filter(info -> DELETED.equals(info.getDeleted())).map(ApsWorkInProgressInventoryDo::getId).collect(Collectors.toList());
+//        // 需要刪除的ID
+//        List<String> deletedIdList = apsWorkInProgressInventoryDos.stream()
+//                .filter(info -> DELETED.equals(info.getDeleted())).map(ApsWorkInProgressInventoryDo::getId).collect(Collectors.toList());
         List<ApsWorkInProgressInventoryDo> updateList = apsWorkInProgressInventoryDos.stream()
                 .filter(info -> NO_DELETED.equals(info.getDeleted())).collect(Collectors.toList());
         if (!updateList.isEmpty()) {
+            log.debug("更新在制品信息");
             apsWorkInProgressInventoryService.updateWorkinprocessstatus(apsWorkInProgressInventoryDos);
         }
-        if (!deletedIdList.isEmpty()) {
-            apsWorkInProgressInventoryService.removeByIds(deletedIdList);
-        }
+//        if (!deletedIdList.isEmpty()) {
+//            log.debug("删除的在制品");
+//            apsWorkInProgressInventoryService.removeByIds(deletedIdList);
+//        }
         /********************************更新当前报工记录的待检验批次号*************************************/
 //        apsReportRecordsService.update(new LambdaUpdateWrapper<ApsReportRecordsDo>().eq(ApsReportRecordsDo::getId, id)
 //                .set(ApsReportRecordsDo::getCheckstatus, VERIFIED)
 //                .set(ApsReportRecordsDo::getNeedcheckbatchnumber, ""));
         /******************************如果本次检验中存在不合格的批次 则更新后续所有工序作业的状态***************************/
-        if (unqualifiedQuantity != 0 && (nextProcessIds!= null && !nextProcessIds.isEmpty())) {
+        if (unqualifiedQuantity != 0 && !nextProcessIds.isEmpty()) {
             ApsProcessOperationDo apsProcessOperationDo = apsProcessOperationService.getById(currentProcessOperationMainDo.getId());
             /**
              *且当前工序作业已完成 则更新后续所有
@@ -237,7 +245,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
              *(工序作业明细) 完工状态 实际完工时间
              *(工序作业) 完工状态 作业状态 生产状态 实际完工时间
              */
-            if (COMPLETED.equals(apsProcessOperationDo.getClosestatus()) ) {
+            if (COMPLETED.equals(apsProcessOperationDo.getClosestatus())) {
                 // 获取当前工序
                 List<ProcessIdRelationVo> allNextProcessOperationById = apsProcessOperationService.getAllNextProcessOperationById(nextProcessIds);
                 apsProcessOperationProcessEquService.updateAboutStateByProcessId(allNextProcessOperationById);
@@ -245,7 +253,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
         }
         // 更新坯料计划的作业状态
 
-        CommonUpdateProductionStatusReq req= new CommonUpdateProductionStatusReq();
+        CommonUpdateProductionStatusReq req = new CommonUpdateProductionStatusReq();
         req.setProcessOperationEquId(processOperationEquId);
         req.setProcessOperationId(currentProcessOperationMainDo.getId());
         req.setOrderId(productionOrderDo.getId());
@@ -253,16 +261,15 @@ public class ReportCheckServiceImpl implements ReportCheckService {
         // 更新
         apsProcessOperationProcessEquService.updateProductionStatus(req);
         apsReportOutputService.update(new LambdaUpdateWrapper<ApsReportOutputDo>()
-                .in(ApsReportOutputDo::getId,reportOutputDos.stream().map(ApsReportOutputDo::getId).collect(Collectors.toList()))
-                .set(ApsReportOutputDo::getCheckstatus,VERIFIED));
+                .in(ApsReportOutputDo::getId, reportOutputDos.stream().map(ApsReportOutputDo::getId).collect(Collectors.toList()))
+                .set(ApsReportOutputDo::getCheckstatus, VERIFIED));
         reportRecordsDo.setCheckstatus(VERIFIED);
         apsReportRecordsService.update(new LambdaUpdateWrapper<ApsReportRecordsDo>()
-                .set(ApsReportRecordsDo::getCheckstatus,VERIFIED)
-                .set(ApsReportRecordsDo::getNeedcheckbatchnumber,null)
-                .eq(ApsReportRecordsDo::getId,id));
+                .set(ApsReportRecordsDo::getCheckstatus, VERIFIED)
+                .set(ApsReportRecordsDo::getNeedcheckbatchnumber, null)
+                .eq(ApsReportRecordsDo::getId, id));
         return R.ok();
     }
-
     /**
      * 更新工序作业对应的订单信息
      * 如果存在不合格的批次信息 需要更新 订单相关信息
@@ -318,7 +325,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
         int nextProcessingPlannedNum = nextProcessOperationDo.stream().mapToInt(info -> info.getPlanprocessrall() - (info.getCancelroll() == null ? 0 : info.getCancelroll())).sum();
         // 判断在制品是否存在库存信息
         List<String> collect = apsWorkInProgressInventoryDos.stream().map(ApsWorkInProgressInventoryDo::getBatchnumber).collect(Collectors.toList());
-        if(qualificationNum.stream().anyMatch(info -> !collect.contains(info))){
+        if (qualificationNum.stream().anyMatch(info -> !collect.contains(info))) {
             throw new RuntimeException("无法获取当前检验产品的库存信息");
         }
         apsWorkInProgressInventoryDos.forEach(info -> {
@@ -327,9 +334,12 @@ public class ReportCheckServiceImpl implements ReportCheckService {
                 return;
             }
             if (nextProcessOperationDo.isEmpty()) {
+                // modify at [ 2024-06-28 10:13:44 ] by xh: 根据需求不在删除在制品库存信息改为将在制品变为待入库状态
                 if (processOperationDo.getOutputqualifiednum() + 1 <= operationOutMaterDo.getPlanprodrollnum()) {
-                    info.setDeleted(DELETED);
-                }else{
+//                    info.setDeleted(DELETED);
+                    info.setWorkinprocesstype(WORK_IN_PROCESS);
+                    info.setWorkinprocessstatus(TO_BE_PUT_INTO_STORAGE);
+                } else {
                     info.setWorkinprocessstatus(WAIT_WORK);
                     info.setWorkinprocesstype(WORK_IN_PROCESS);
                 }
@@ -338,7 +348,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
                 if (processOperationDo.getOutputqualifiednum() + 1 > operationOutMaterDo.getPlanprodrollnum() + nextProcessingPlannedNum) {
                     info.setWorkinprocessstatus(WAITING);
                     info.setWorkinprocesstype(SEMIFINISHED_PRODUCTS);
-                } else  { // if (processOperationDo.getOutputqualifiednum() + 1 <= operationOutMaterDo.getPlanprodrollnum() + nextProcessingPlannedNum)
+                } else { // if (processOperationDo.getOutputqualifiednum() + 1 <= operationOutMaterDo.getPlanprodrollnum() + nextProcessingPlannedNum)
                     info.setWorkinprocessstatus(WAIT_WORK);
                     info.setWorkinprocesstype(WORK_IN_PROCESS);
                 }

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

@@ -186,7 +186,9 @@
         arr.PROCESSOPERATIONID=a1.PROCESSID group by arr.PROCESSOPERATIONID)as INPUTNUMBER,
         (select GROUP_CONCAT(DISTINCT aro.OUTPUTNUMBER) from aps_report_records arr left join aps_report_output aro on
         arr.ID=aro.MAINID AND aro.DELETED='0' where arr.DELETED='0' and arr.PROCESSOPERATIONID=a1.PROCESSID group by
-        arr.PROCESSOPERATIONID) AS OUTPUTNUMBER
+        arr.PROCESSOPERATIONID) AS OUTPUTNUMBER,
+        DATE(a3.PROMISEDATESTART) AS PROMISEDATESTART,
+        DATE(a3.PROMISEDATEEND) AS PROMISEDATEEND
         FROM
         aps_process_operation_process_equ a1
         LEFT JOIN aps_process_operation a2 ON a1.PROCESSID = a2.ID

+ 9 - 1
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/vo/GanttVos.java

@@ -115,6 +115,7 @@ public class GanttVos {
     /**
      * 承诺交货日期
      */
+    @Deprecated
     private Date promisedeliverydate;
     /**
      *  排程交货日期
@@ -184,5 +185,12 @@ public class GanttVos {
      * 输出批次号
      */
     private String outputnumber="";
-
+    /**
+     * 承诺交货日期-起
+     */
+    private Date promisedatestart;
+    /**
+     * 承诺交货日期-止
+     */
+    private Date promisedateend;
 }