Explorar el Código

aps-产品明细、技术要求相关修改

sucheng hace 2 meses
padre
commit
2c7101d42a

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

@@ -31,4 +31,6 @@ public interface ApsProductDetailService extends IService<ApsProductDetailDo> {
     R updateProductDetailsAndBlankOutput(UpdateProductDetailsAndBlankOutputReq req);
 
     R getOldTechnicalRequirement(GetOldTechnicalRequirementReq req);
+
+    R updateProductDetailAllCount(UpdateProductDetailsAndBlankOutputReq req);
 }

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

@@ -583,8 +583,11 @@ public class ApsProductDetailServiceImpl extends ServiceImpl<ApsProductDetailDao
 
                 //=================更新技术要求==========================
                 //查询相关的技术要求
-                List<ApsProductionTechnicalRequirementDo> apsProductionTechnicalRequirementDoList = apsProductionTechnicalRequirementService.list(new QueryWrapper<ApsProductionTechnicalRequirementDo>().lambda().like(ApsProductionTechnicalRequirementDo::getOrderdetailids, nowId).orderByDesc(ApsProductionTechnicalRequirementDo::getModifydate));
-                if (apsProductionTechnicalRequirementDoList.size() > 0) {
+                List<ApsProductionTechnicalRequirementDo> apsProductionTechnicalRequirementDoList = apsProductionTechnicalRequirementService.list(new QueryWrapper<ApsProductionTechnicalRequirementDo>().lambda()
+                        .eq(ApsProductionTechnicalRequirementDo::getOrderid, apsProductDetailDo.getMainid())
+                        .like(ApsProductionTechnicalRequirementDo::getOrderdetailids, nowId)
+                        .orderByDesc(ApsProductionTechnicalRequirementDo::getModifydate));
+                if (!apsProductionTechnicalRequirementDoList.isEmpty()) {
                     //只会存在一个
                     ApsProductionTechnicalRequirementDo apsProductionTechnicalRequirementDo = apsProductionTechnicalRequirementDoList.get(0);
                     //更新原来的产品明细为新的产品明细
@@ -600,7 +603,7 @@ public class ApsProductDetailServiceImpl extends ServiceImpl<ApsProductDetailDao
                     int index = orderDetailIdList.indexOf(nowId);
                     //替换成新的产品明细
                     orderDetailIdList.set(index, apsProductDetailDo.getId());
-                    orderDetailNameList.set(index, apsProductDetailDo.getInputmaterialdescription());
+                    orderDetailNameList.set(index, apsProductDetailDo.getInputmaterialdescription() + " " + apsProductDetailDo.getTotalordercount() + "吨");
 
                     updateTechnicalRequirement.setOrderdetailids(String.join(",", orderDetailIdList));
                     updateTechnicalRequirement.setOrderdetailnames(String.join(",\r\n", orderDetailNameList));
@@ -622,6 +625,88 @@ public class ApsProductDetailServiceImpl extends ServiceImpl<ApsProductDetailDao
         return R.ok();
     }
 
+
+    @Override
+    @Transactional
+    public R updateProductDetailAllCount(UpdateProductDetailsAndBlankOutputReq req) {
+        //获取目前订单所有的产品明细
+        List<ApsProductDetailDo> apsProductDetailDoList = req.getApsProductDetailDoList();
+        //获取当前修改的产品明细的ID
+        String nowId = req.getUpdateId();
+
+        //区分 目前修改的产品明细和 暂未修改的产品明细
+        List<ApsProductDetailDo> nowUpdateList = apsProductDetailDoList.stream().filter(item -> item.getId().equals(nowId)).collect(Collectors.toList());
+
+        if (!nowUpdateList.isEmpty()) {
+            ApsProductDetailDo apsProductDetailDo = nowUpdateList.get(0);
+            if (apsProductDetailDo.getTotalordercount() != null) {
+                ApsProductDetailDo oldProductDetailDo = apsProductDetailService.getById(nowId);
+                if (oldProductDetailDo != null) {
+                    //修改了产品明细的总重量
+                    if (!oldProductDetailDo.getTotalordercount().equals(apsProductDetailDo.getTotalordercount())) {
+                        //更新技术要求
+                        List<ApsProductionTechnicalRequirementDo> apsProductionTechnicalRequirementDos = apsProductionTechnicalRequirementService.list(new LambdaQueryWrapper<ApsProductionTechnicalRequirementDo>()
+                                .eq(ApsProductionTechnicalRequirementDo::getOrderid, apsProductDetailDo.getMainid())
+                                .like(ApsProductionTechnicalRequirementDo::getOrderdetailids, apsProductDetailDo.getId())
+                                .orderByDesc(ApsProductionTechnicalRequirementDo::getModifydate));
+                        if (!apsProductionTechnicalRequirementDos.isEmpty()) {
+                            //需要更新的技术要求
+                            ApsProductionTechnicalRequirementDo apsProductionTechnicalRequirementDo = apsProductionTechnicalRequirementDos.get(0);
+                            ApsProductionTechnicalRequirementDo updateTechnicalRequirement = new ApsProductionTechnicalRequirementDo();
+                            updateTechnicalRequirement.setId(apsProductionTechnicalRequirementDo.getId());
+                            List<String> detailIdList = Arrays.asList(apsProductionTechnicalRequirementDo.getOrderdetailids().split(","));
+                            List<String> detailNameList = new LinkedList<>(Arrays.asList(apsProductionTechnicalRequirementDo.getOrderdetailnames().split(",\r\n")));
+                            int index = detailIdList.indexOf(apsProductDetailDo.getId());
+                            detailNameList.set(index, apsProductDetailDo.getInputmaterialdescription() + " " + apsProductDetailDo.getTotalordercount() + "吨");
+                            updateTechnicalRequirement.setOrderdetailnames(String.join(",\r\n", detailNameList));
+                            //更新技术要求
+                            apsProductionTechnicalRequirementService.updateById(updateTechnicalRequirement);
+                        }
+                    }
+                    //更新输出成品
+                    List<ApsProcessOutputProductDo> apsProcessOutputProductDoList = apsProcessOutputProductService.list(new LambdaQueryWrapper<ApsProcessOutputProductDo>()
+                            .eq(ApsProcessOutputProductDo::getProductid, apsProductDetailDo.getId()));
+                    if (!apsProcessOutputProductDoList.isEmpty()) {
+                        List<ApsProcessOutputProductDo> needUpdateList = new LinkedList<>();
+                        for (ApsProcessOutputProductDo apsProcessOutputProductDo : apsProcessOutputProductDoList) {
+                            ApsProcessOutputProductDo needUpdate = new ApsProcessOutputProductDo();
+                            needUpdate.setId(apsProcessOutputProductDo.getId());
+                            //修改了 产品明细的总数量
+                            if (!oldProductDetailDo.getTotalordercount().equals(apsProductDetailDo.getTotalordercount())) {
+                                if (apsProductDetailDo.getTotalordercount() != null) {
+                                    needUpdate.setOrdertatal(apsProductDetailDo.getTotalordercount());
+                                } else {
+                                    needUpdate.setOrdertatal(BigDecimal.ZERO);
+                                }
+                            }
+                            //修改了 产品明细的 卷重要求、卷径要求、套筒要求、卷数要求
+                            if (!Objects.equals(oldProductDetailDo.getRollweightrequirement(), apsProductDetailDo.getRollweightrequirement())) {
+                                needUpdate.setRollweightrequirement(apsProductDetailDo.getRollweightrequirement());
+                            }
+                            if (!Objects.equals(oldProductDetailDo.getRolldiameterrequirement(), apsProductDetailDo.getRolldiameterrequirement())) {
+                                needUpdate.setRolldiameterrequirement(apsProductDetailDo.getRolldiameterrequirement());
+                            }
+                            if (!Objects.equals(oldProductDetailDo.getSleeverequirement(), apsProductDetailDo.getSleeverequirement())) {
+                                needUpdate.setSleeverequirement(apsProductDetailDo.getSleeverequirement());
+                            }
+                            if (!Objects.equals(oldProductDetailDo.getRollnumberrequirement(), apsProductDetailDo.getRollnumberrequirement())) {
+                                needUpdate.setRollnumberrequirement(apsProductDetailDo.getRollnumberrequirement());
+                            }
+                            needUpdateList.add(needUpdate);
+                        }
+                        apsProcessOutputProductService.updateBatchById(needUpdateList);
+                    }
+                }
+            }
+        }
+
+        //更新或新增 产品明细
+        if (!apsProductDetailDoList.isEmpty()) {
+            apsProductDetailService.updateOrSaveProductDetails(apsProductDetailDoList);
+        }
+        return R.ok();
+    }
+
     @Override
     public R getOldTechnicalRequirement(GetOldTechnicalRequirementReq req) {
         String technicalRequirementId = req.getTechnicalRequirementId();

+ 16 - 0
cx-aps/cx-aps-server/src/main/java/com/rongwei/bsserver/controller/ApsProductDetailController.java

@@ -103,6 +103,22 @@ public class ApsProductDetailController {
         }
     }
 
+    /**
+     * 编辑产品明细的 总数量 时,调用此接口,更新技术要求的产品名称字段、坯料输出成品的 总数量字段
+     * 编辑产品明细的 卷重要求、卷径要求、套筒要求、卷数要求 时,调用此接口,更新坯料输出成品的 卷重要求、卷径要求、套筒要求、卷数要求字段
+     */
+    @PostMapping("/updateProductDetailAllCount")
+    public R updateProductDetailAllCount(@RequestBody UpdateProductDetailsAndBlankOutputReq req) {
+        try {
+            log.info("更新或保存产品明细总数量;参数为:{}", req);
+            return apsProductDetailService.updateProductDetailAllCount(req);
+        } catch (Exception e) {
+            e.printStackTrace();
+            log.error(String.valueOf(e));
+            return R.error("更新或保存产品明细总数量失败,请联系管理员");
+        }
+    }
+
     /**
      * 新增或更改技术要求的订单产品后,记录技术要求的合金=技术要求所选第一个产品明细的合金;合金状态=技术要求所选第一个产品明细的合金状态;
      * 选择订单产品类型后,查找该客户生产状态=待开工或加工中或已完工的历史订单匹配度大等于1并且最高,并且最新的技术要求,匹配度计算逻辑: