瀏覽代碼

aps-提交报验结果明细后需要更新在制品字段testin1740/1745

zhoudazhuang 8 月之前
父節點
當前提交
2ee0e9037f

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

@@ -2,12 +2,27 @@ package com.rongwei.bscommon.sys.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.rongwei.bsentity.domain.ApsReportOutputDo;
+import com.rongwei.rwadmincommon.system.domain.SysDictDo;
+import org.apache.ibatis.annotations.Select;
+
+import java.util.List;
 
 /**
  * @Entity com.rongwei.training.domain.ApsReportOutput
  */
 public interface ApsReportOutputDao extends BaseMapper<ApsReportOutputDo> {
 
+    @Select("SELECT\n" +
+            "\td1.ID AS 'ID',\n" +
+            "\tCONCAT( d2.NAME, \"_\", d1.NAME ) 'NAME' \n" +
+            "FROM\n" +
+            "\tsys_dict d1\n" +
+            "\tLEFT JOIN sys_dict d2 ON d2.ID = d1.PID and d2.DELETED = 0\n" +
+            "WHERE\n" +
+            "d1.DELETED = 0\n" +
+            "\tAND d1.DICTTYPE = 'quality_defects' \n" +
+            "\tAND d2.ID != '724201d3c3454297bf90aa2df0335c1b'")
+    List<SysDictDo> getQualityDefectsDictsByType();
 }
 
 

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

@@ -3,8 +3,10 @@ package com.rongwei.bscommon.sys.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.rongwei.bsentity.domain.ApsReportOutputDo;
 import com.rongwei.bsentity.vo.InsertMyReportOutputReq;
+import com.rongwei.rwadmincommon.system.domain.SysDictDo;
 import com.rongwei.rwcommon.base.R;
 
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -14,5 +16,7 @@ public interface ApsReportOutputService extends IService<ApsReportOutputDo> {
 
     R insertMyReportOutput(InsertMyReportOutputReq req);
 
+    List<SysDictDo> getQualityDefectsDictsByType();
+
 //    R insertMyReportOutputWithOutBatchNumber(InsertMyReportOutputReq req);
 }

+ 8 - 0
cx-aps/cx-aps-common/src/main/java/com/rongwei/bscommon/sys/service/impl/ApsReportOutputServiceImpl.java

@@ -13,6 +13,7 @@ import com.rongwei.bsentity.domain.ApsProcessOperationOutMaterDo;
 import com.rongwei.bsentity.domain.ApsReportOutputDo;
 import com.rongwei.bsentity.domain.ApsReportRecordsDo;
 import com.rongwei.bsentity.vo.InsertMyReportOutputReq;
+import com.rongwei.rwadmincommon.system.domain.SysDictDo;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.R;
 import com.rongwei.rwcommon.utils.SecurityUtil;
@@ -47,6 +48,8 @@ public class ApsReportOutputServiceImpl extends ServiceImpl<ApsReportOutputDao,
     private ApsReportRecordsService apsReportRecordsService;
     @Autowired
     private ApsProcessOperationService apsProcessOperationService;
+    @Autowired
+    private ApsReportOutputDao apsReportOutputDao;
 
     @Override
     @Transactional
@@ -280,6 +283,11 @@ public class ApsReportOutputServiceImpl extends ServiceImpl<ApsReportOutputDao,
         return R.ok();
     }
 
+    @Override
+    public List<SysDictDo> getQualityDefectsDictsByType() {
+        return apsReportOutputDao.getQualityDefectsDictsByType();
+    }
+
 //    public R insertMyReportOutputWithOutBatchNumber(InsertMyReportOutputReq req) {
 //        //最终新增的子表数据
 //        List<ApsReportOutputDo> resList = new LinkedList<>();

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

@@ -9,6 +9,7 @@ import com.rongwei.bsentity.domain.*;
 import com.rongwei.bsentity.vo.CancelProcessOperationVo;
 import com.rongwei.bsentity.vo.CommonUpdateProductionStatusReq;
 import com.rongwei.commonservice.service.RedisService;
+import com.rongwei.rwadmincommon.system.domain.SysDictDo;
 import com.rongwei.rwadmincommon.system.vo.SysUserVo;
 import com.rongwei.rwcommon.base.BaseDo;
 import com.rongwei.rwcommon.base.R;
@@ -559,6 +560,8 @@ public class ReportCheckServiceImpl implements ReportCheckService {
                             apsWorkInProgressInventoryDos, currentReportOutputs, TO_BE_PUT_INTO_STORAGE, PASS);
                 }
             }
+            //新增需求---更新该报工记录所有输出物料批次号对应在制品
+            updateWorkInProgressInventoryDetail(apsWorkInProgressInventoryDos,currentReportOutputs,currentProcessOperationDo.getIfblankprocess());
         }
         log.info("开始更新在制品和工序作业输出物料信息");
         // 保存在制品
@@ -1136,4 +1139,70 @@ public class ReportCheckServiceImpl implements ReportCheckService {
             processOperationDo.setOutputqualifiednum(processOperationDo.getOutputqualifiednum() + 1);
         });
     }
+
+    /**
+     * 更新该报工记录所有输出物料批次号对应的在制品
+     * @param workInProgressInventoryDos
+     * @param apsReportOutputDos
+     * @param ifblankprocess
+     */
+    private void updateWorkInProgressInventoryDetail(List<ApsWorkInProgressInventoryDo> workInProgressInventoryDos, List<ApsReportOutputDo> apsReportOutputDos, String ifblankprocess) {
+        //如果工序作业是否坯料工序=是,则坯料描述(坯料)=实际输出物料
+        //料卷描述(在制品)=实际输出物料
+        //检验等级=输出物料的检验等级
+        //是否合格=输出物料的是否合格
+        //检验备注=该输出物料的“主要缺陷:{主要缺陷逗号拼接};次要缺陷:{次要缺陷逗号拼接};+{检验备注}
+        List<SysDictDo> defectTypes = apsReportOutputService.getQualityDefectsDictsByType();
+        apsReportOutputDos.forEach(apsReportOutputDo -> {
+            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)){
+                    data.setRemark("主要缺陷:"+formatMajor+";次要缺陷:"+formatMinor+";"+apsReportOutputDo.getCheckremark());
+                }else {
+                    if (StringUtils.isNotBlank(formatMajor)){
+                        data.setRemark("主要缺陷:"+formatMajor+";"+apsReportOutputDo.getCheckremark());
+                    }
+                    if (StringUtils.isNotBlank(formatMinor)){
+                        data.setRemark("次要缺陷:"+formatMinor+";"+apsReportOutputDo.getCheckremark());
+                    }
+                    data.setRemark(apsReportOutputDo.getCheckremark());
+                }
+            });
+        });
+    }
+
+    /**
+     * 处理主要缺陷/次要缺陷字典值显示为逗号分隔的文本
+     * @param defect
+     * @return
+     */
+    private String handleDefect(String defect,List<SysDictDo> dictDos) {
+        String result = "";
+        if (StringUtils.isNotBlank(defect)){
+            List<String> dictNameList = new ArrayList<>();
+            String[] valuesToLookup = defect.split(",");
+            for (SysDictDo sysDictDo : dictDos) {
+                for (String value : valuesToLookup) {
+                    if (sysDictDo.getId().equals(value.trim())) {
+                        dictNameList.add(sysDictDo.getName());
+                        // 一旦找到匹配的值,就不需要再检查该字典项的其他值了
+                        break;
+                    }
+                }
+            }
+            if (!dictNameList.isEmpty()){
+                result = String.join(",",dictNameList);
+            }
+        }
+        return result;
+    }
 }