Kaynağa Gözat

feature 代码提交

xiahan 1 yıl önce
ebeveyn
işleme
3f37bb8ddf

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

@@ -16,4 +16,9 @@ import java.util.List;
  */
 public interface ApsProcessOperationDao extends BaseMapper<ApsProcessOperationDo> {
   void  updateBachmaterialprocessByIds(@Param("ids") List<String> ids,@Param("batchNum") String batchNum);
+
+  void updateAboutCheckBatchNum(@Param("id")String id,
+                                @Param("currentCheckNum") Integer currentCheckNum,
+                                @Param("qualifiedQuantity") Integer qualifiedQuantity,
+                                @Param("unqualifiedQuantity") Integer unqualifiedQuantity );
 }

+ 26 - 3
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsProcessOperationServiceImpl.java

@@ -1,12 +1,14 @@
 package com.rongwei.bscommon.sys.service.impl;
 
-import com.rongwei.bsentity.domain.ApsProcessOperationDo;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.rongwei.bscommon.sys.dao.ApsProcessOperationDao;
 import com.rongwei.bscommon.sys.service.ApsProcessOperationService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.rongwei.bsentity.domain.ApsProcessOperationDo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 生产订单_坯料计划_工序作业 服务实现类
@@ -18,6 +20,27 @@ import org.springframework.stereotype.Service;
 @Service
 public class ApsProcessOperationServiceImpl extends ServiceImpl<ApsProcessOperationDao, ApsProcessOperationDo> implements ApsProcessOperationService {
     @Autowired
-    ApsProcessOperationDao apsProcessOperationDao;
+    private ApsProcessOperationDao apsProcessOperationDao;
+
+    /**
+     * 更新工序的待加工批次号信息
+     * @param ids
+     * @param batchNumn
+     */
+    public void updateBachmaterialprocessByIds(List<String> ids, String batchNumn) {
+        apsProcessOperationDao.updateBachmaterialprocessByIds(ids, batchNumn);
+    }
+
+    /**
+     * 更新当前工序的输出已检验卷数,不合格卷数,合格卷数
+     * @param id
+     * @param currentCheckNum
+     * @param qualifiedQuantity
+     * @param unqualifiedQuantity
+     */
+    public void updateAboutCheckBatchNum(String id, Integer currentCheckNum, Integer qualifiedQuantity, Integer unqualifiedQuantity) {
+        apsProcessOperationDao.updateAboutCheckBatchNum(id, currentCheckNum, qualifiedQuantity, unqualifiedQuantity);
+    }
+
 
 }

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

@@ -1,8 +1,8 @@
 package com.rongwei.bscommon.sys.service.impl;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.rongwei.bscommon.sys.service.ApsBlankOrderService;
-import com.rongwei.bscommon.sys.service.ApsProcessOperationService;
 import com.rongwei.bscommon.sys.service.ApsReportRecordsService;
 import com.rongwei.bscommon.sys.service.ReportCheckService;
 import com.rongwei.bsentity.domain.*;
@@ -14,6 +14,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -36,7 +37,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
     @Autowired
     private ApsReportOutputServiceImpl apsReportOutputService;
     @Autowired
-    private ApsProcessOperationService apsProcessOperationService;
+    private ApsProcessOperationServiceImpl apsProcessOperationService;
     @Autowired
     private ApsBlankOrderService apsBlankOrderService;
     @Autowired
@@ -62,6 +63,7 @@ public class ReportCheckServiceImpl implements ReportCheckService {
      * @return
      */
     @Override
+    @Transactional
     public R updateRelevantInformation(String id) {
         log.info("保存检验结果后更新相关信息");
         if (StringUtil.isBlank(id)) {
@@ -74,9 +76,6 @@ public class ReportCheckServiceImpl implements ReportCheckService {
             log.error("无法根据ID:{}获取到报工记录", id);
             return R.error();
         }
-        // 更新待检验批次号
-        reportRecordsDo.setNeedcheckbatchnumber("");
-
         // 获取工序作业信息
         ApsProcessOperationDo currentProcessOperationDo = apsProcessOperationService.getOne(new LambdaQueryWrapper<ApsProcessOperationDo>()
                 .eq(ApsProcessOperationDo::getId, reportRecordsDo.getProcessoperationid()).eq(BaseDo::getDeleted, NO_DELETED));
@@ -127,9 +126,9 @@ public class ReportCheckServiceImpl implements ReportCheckService {
 
         String nextProcessId = currentProcessOperationDo.getNextprocessid();
         // 获取当前工序对应的后道工序信息
-        List<ApsProcessOperationDo> nextProcessOperationDo = new ArrayList<>();
+        List<ApsProcessOperationDo> nextProcessOperationDos = new ArrayList<>();
         if (StringUtils.isNotBlank(nextProcessId)) {
-            nextProcessOperationDo = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
+            nextProcessOperationDos = apsProcessOperationService.list(new LambdaQueryWrapper<ApsProcessOperationDo>()
                     .in(ApsProcessOperationDo::getId, Arrays.asList(nextProcessId.split(",")))
                     .eq(BaseDo::getDeleted, NO_DELETED));
         }
@@ -149,19 +148,38 @@ public class ReportCheckServiceImpl implements ReportCheckService {
         currentProductionOrderDoDispose(productionOrderDo, unqualificationOutPutList);
         // 在制品
         updateArticlesProcessData(unqualificationOutPutList, qualifiedOutPutList, reportRecordsDo,
-                apsWorkInProgressInventoryDos, nextProcessOperationDo, currentProcessOperationDo,
+                apsWorkInProgressInventoryDos, nextProcessOperationDos, currentProcessOperationDo,
                 operationOutMaterDoList);
         // 获取所有待加工的批次号信息
         String toBeProcessedBatchNum = apsWorkInProgressInventoryDos.stream().filter(info -> TO_BE_PROCESSED.equals(info.getWorkinprocessstatus()))
                 .map(ApsWorkInProgressInventoryDo::getBatchnumber).collect(Collectors.joining(","));
-
-        //更新后续工具的待加工批次号信息
-        apsProcessOperationService.updateBachmaterialprocessByIds
-
 //        if (!qualifiedOutPutList.isEmpty()) {
 //            // 获取后道工序的数据
 //            nextProcessDispose(nextProcessOperationDo, qualifiedOutPutList);
 //        }
+
+        /**********************执行数据更新操作*************************/
+        if (!nextProcessOperationDos.isEmpty() && StringUtils.isNotBlank(toBeProcessedBatchNum)) {
+            //更新后续工具的待加工批次号信息
+            apsProcessOperationService.updateBachmaterialprocessByIds(nextProcessOperationDos.stream()
+                    .map(ApsProcessOperationDo::getId).collect(Collectors.toList()), toBeProcessedBatchNum);
+        }
+        //存在不合格批次信息时 更新更新报工记录对应订单的订单评审状态=待计划评审, 订单调整日期=今天
+        if (unqualifiedQuantity > 0) {
+            apsProductionOrderService.update(new LambdaUpdateWrapper<ApsProductionOrderDo>()
+                    .eq(ApsProductionOrderDo::getId, productionOrderDo.getId())
+                    .set(ApsProductionOrderDo::getChangedate, new Date())
+                    .set(ApsProductionOrderDo::getAuditstatus, PENDING_PLAN_REVIEW)
+            );
+        }
+        // 更新当前工序的输出已检验卷数,不合格卷数,合格卷数
+        apsProcessOperationService.updateAboutCheckBatchNum(currentProcessOperationDo.getId(), inspectQuantity, qualifiedQuantity, unqualifiedQuantity);
+        // 更新在制品信息
+        apsWorkInProgressInventoryService.saveOrUpdateBatch(apsWorkInProgressInventoryDos);
+        // 更新当前报工记录的待检验批次号
+        apsReportRecordsService.update(new LambdaUpdateWrapper<ApsReportRecordsDo>().eq(ApsReportRecordsDo::getId, id)
+                .set(ApsReportRecordsDo::getNeedcheckbatchnumber, ""));
+
         return R.ok();
     }
 
@@ -186,13 +204,10 @@ public class ReportCheckServiceImpl implements ReportCheckService {
      */
     public void currentProductionOrderDoDispose(ApsProductionOrderDo productionOrderDo, List<ApsReportOutputDo> unqualificationOutPutList) {
         // 存在不合格的批次信息
-        if (!unqualificationOutPutList.isEmpty()) {
-            //更新报工记录对应订单的订单评审状态=待计划评审,
-            productionOrderDo.setAuditstatus(PENDING_PLAN_REVIEW);
-            // 订单调整日期=今天
-            productionOrderDo.setChangedate(new Date());
-            // 发送不合格提醒
+        if (unqualificationOutPutList.isEmpty()) {
+            return;
         }
+        // TODO:XH add 2024/3/20 发送不合格提醒
     }
 
     /**
@@ -205,16 +220,16 @@ public class ReportCheckServiceImpl implements ReportCheckService {
      * @param nextProcessOperationDo        后道工序信息
      * @return
      */
-    public List<ApsWorkInProgressInventoryDo> updateArticlesProcessData(List<ApsReportOutputDo> unqualificationOutPutList,
-                                                                        List<ApsReportOutputDo> qualifiedOutPutList,
-                                                                        ApsReportRecordsDo apsReportRecordsDo,
-                                                                        List<ApsWorkInProgressInventoryDo> apsWorkInProgressInventoryDos,
-                                                                        List<ApsProcessOperationDo> nextProcessOperationDo,
-                                                                        ApsProcessOperationDo processOperationDo,
-                                                                        ApsProcessOperationOutMaterDo operationOutMaterDo) {
+    public void updateArticlesProcessData(List<ApsReportOutputDo> unqualificationOutPutList,
+                                          List<ApsReportOutputDo> qualifiedOutPutList,
+                                          ApsReportRecordsDo apsReportRecordsDo,
+                                          List<ApsWorkInProgressInventoryDo> apsWorkInProgressInventoryDos,
+                                          List<ApsProcessOperationDo> nextProcessOperationDo,
+                                          ApsProcessOperationDo processOperationDo,
+                                          ApsProcessOperationOutMaterDo operationOutMaterDo) {
 
         if (apsWorkInProgressInventoryDos.isEmpty()) {
-            return apsWorkInProgressInventoryDos;
+            return;
         }
         // 1.如果报工输出物料的是否合格=否,则在制品状态=备料中
         List<String> unqualificationNum = unqualificationOutPutList.stream().map(ApsReportOutputDo::getOutputnumber).collect(Collectors.toList());
@@ -222,30 +237,33 @@ public class ReportCheckServiceImpl implements ReportCheckService {
             if (unqualificationNum.contains(info.getBatchnumber())) {
                 info.setWorkinprocessstatus(PREPARING_MATERIAL);
             }
-
         });
 
         /**
-         * 1如果报工输出物料的是否合格=是,并且报工输出物料对应工序作业输出物料的输出合格卷数<=计划成品卷数,则从在制品库存删除该在制品
-         * 2如果报工输出物料的是否合格=是,并且报工输出物料有对应后道工序作业,并且报工输出物料对应工序作业输出物料的输出合格卷数>计划成品卷数+报工输出物料对应所有后道工序作业的计划加工卷数,则在制品状态=备料中;
-         * 3如果报工输出物料的是否合格=是,并且报工输出物料有对应后道工序作业,并且报工输出物料对应工序作业输出物料的输出合格卷数<=计划成品卷数+报工输出物料对应所有后道工序作业的计划加工卷数,则在制品状态=待加工;
+         * 1没有后续工序作业 且 报工输出物料的是否合格=是,并且报工输出物料对应工序作业输出物料的输出合格卷数<=计划成品卷数,则从在制品库存删除该在制品
+         * 2.1如果报工输出物料的是否合格=是,并且报工输出物料有对应后道工序作业,并且报工输出物料对应工序作业输出物料的输出合格卷数>计划成品卷数+报工输出物料对应所有后道工序作业的计划加工卷数,则在制品状态=备料中;
+         * 2.2如果报工输出物料的是否合格=是,并且报工输出物料有对应后道工序作业,并且报工输出物料对应工序作业输出物料的输出合格卷数<=计划成品卷数+报工输出物料对应所有后道工序作业的计划加工卷数,则在制品状态=待加工;
          *
          */
         List<String> qualificationNum = qualifiedOutPutList.stream().map(ApsReportOutputDo::getOutputnumber).collect(Collectors.toList());
         int nextProcessingPlannedNum = nextProcessOperationDo.stream().mapToInt(ApsProcessOperationDo::getOutputqualifiednum).sum();
         apsWorkInProgressInventoryDos.forEach(info -> {
             if (!qualificationNum.contains(info.getBatchnumber())) {
-              return;
+                return;
             }
-            if(processOperationDo.getOutputqualifiednum() +1 <= operationOutMaterDo.getPlanprodrollnum()){
-                info.setDeleted(DELETED);
-            }else if(processOperationDo.getOutputqualifiednum()+1> operationOutMaterDo.getPlanprodrollnum() +nextProcessingPlannedNum ){
-                info.setWorkinprocessstatus(PREPARING_MATERIAL);
-            }else if(processOperationDo.getOutputqualifiednum()+1 <=  operationOutMaterDo.getPlanprodrollnum() +nextProcessingPlannedNum){
-                info.setWorkinprocessstatus(TO_BE_PROCESSED);
+            if (nextProcessOperationDo.isEmpty()) {
+                if (processOperationDo.getOutputqualifiednum() + 1 <= operationOutMaterDo.getPlanprodrollnum()) {
+                    info.setDeleted(DELETED);
+                }
+            } else {
+                if (processOperationDo.getOutputqualifiednum() + 1 > operationOutMaterDo.getPlanprodrollnum() + nextProcessingPlannedNum) {
+                    info.setWorkinprocessstatus(PREPARING_MATERIAL);
+                } else  { // if (processOperationDo.getOutputqualifiednum() + 1 <= operationOutMaterDo.getPlanprodrollnum() + nextProcessingPlannedNum)
+                    info.setWorkinprocessstatus(TO_BE_PROCESSED);
+                }
             }
-            processOperationDo.setOutputqualifiednum(processOperationDo.getOutputqualifiednum()+1);
+
+            processOperationDo.setOutputqualifiednum(processOperationDo.getOutputqualifiednum() + 1);
         });
-        return apsWorkInProgressInventoryDos;
     }
 }

+ 16 - 0
cx-aps/cx-aps-common/src/main/resources/mybatis/ApsProcessOperationDao.xml

@@ -12,5 +12,21 @@
             </foreach>
         </where>
     </update>
+    <update id="updateAboutCheckBatchNum">
+        update aps_process_operation
+        <set>
+            OUTPUTQUALIFIEDNUM = IFNULL(OUTPUTQUALIFIEDNUM,0)+ #{qualifiedQuantity},
+            OUTPUTUNQUALIFIEDNUM = IFNULL(OUTPUTUNQUALIFIEDNUM,0) +#{unqualifiedQuantity},
+            CHECKOUTROLL = IFNULL(OUTPUTUNQUALIFIEDNUM,0) +#{currentCheckNum},
+            UNFINISHROLL = UNFINISHROLL -#{currentCheckNum},
+            ACTUALFINISHDATE = CASE
+            WHEN (UNFINISHROLL - #{currentCheckNum}) = 0 THEN NOW()
+            ELSE ACTUALFINISHDATE
+            END
+        </set>
+        <where>
+            ID =#{id}
+        </where>
+    </update>
 
 </mapper>

+ 8 - 8
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsProcessOperationDo.java

@@ -51,13 +51,13 @@ public class ApsProcessOperationDo extends BaseDo {
     /**
      * 工序
      */
-    @TableField("PRODUCTPROCESS")
-    private String productprocess;
+    @TableField("PROCESS")
+    private String process;
     /**
      * 工序显示名
      */
-    @TableField("PRODUCTPROCESSNAME")
-    private String productprocessname;
+    @TableField("PROCESSNAME")
+    private String processname;
     /**
      * 前道工序作业
      */
@@ -76,13 +76,13 @@ public class ApsProcessOperationDo extends BaseDo {
     /**
      * 是否坯料工序
      */
-    @TableField("ISBLANKPROCESS")
-    private String isblankprocess;
+    @TableField("IFBLANKPROCESS")
+    private String ifblankprocess;
     /**
      * 可选设备
      */
-    @TableField("CANCHOOSEDEVICE")
-    private String canchoosedevice;
+    @TableField("CHOOSEEQU")
+    private String chooseequ;
     /**
      * 计划输入物料
      */

+ 3 - 2
cx-aps/cx-aps-entity/src/main/java/com/rongwei/bsentity/domain/ApsWorkInProgressInventory.java

@@ -1,12 +1,13 @@
 package com.rongwei.bsentity.domain;
 
-import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.rongwei.rwcommon.base.BaseDo;
+import lombok.Data;
+
 import java.io.Serializable;
 import java.util.Date;
-import lombok.Data;
 
 /**
  * 在制品库存表