Ver Fonte

合同明细添加产品bom

yzc há 1 ano atrás
pai
commit
f2dac2258f

+ 7 - 2
hx-sale/src/main/java/com/fjhx/sale/entity/contract/dto/ContractDto.java

@@ -2,7 +2,7 @@ package com.fjhx.sale.entity.contract.dto;
 
 import com.fjhx.area.service.SetCustomizeAreaId;
 import com.fjhx.sale.entity.contract.po.Contract;
-import com.fjhx.sale.entity.contract.po.ContractProduct;
+import com.fjhx.sale.entity.contract.po.ContractProductBom;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -96,5 +96,10 @@ public class ContractDto extends Contract implements SetCustomizeAreaId {
     /**
      * 合同产品列表
      */
-    private List<ContractProduct> contractProductList;
+    private List<ContractProductDto> contractProductList;
+
+    /**
+     * 合同产品BOM
+     */
+    private List<ContractProductBom> contractProductBomList;
 }

+ 6 - 1
hx-sale/src/main/java/com/fjhx/sale/entity/contract/dto/ContractProductDto.java

@@ -1,17 +1,22 @@
 package com.fjhx.sale.entity.contract.dto;
 
 import com.fjhx.sale.entity.contract.po.ContractProduct;
+import com.fjhx.sale.entity.contract.po.ContractProductBom;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * 外销合同-产品新增编辑入参实体
  *
- * @author 
+ * @author
  * @since 2023-04-17
  */
 @Getter
 @Setter
 public class ContractProductDto extends ContractProduct {
 
+    List<ContractProductBom> contractProductBomList;
+
 }

+ 0 - 5
hx-sale/src/main/java/com/fjhx/sale/entity/contract/po/ContractProduct.java

@@ -143,10 +143,5 @@ public class ContractProduct extends BasePo {
      */
     private Long quotationProductId;
 
-    /**
-     * 产品单位
-     */
-    @TableField(exist = false)
-    private List<ContractProductBom> contractProductBomList;
 
 }

+ 8 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/vo/ContractProductBomVo.java

@@ -4,6 +4,8 @@ import com.fjhx.sale.entity.contract.po.ContractProductBom;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.math.BigDecimal;
+
 /**
  * 合同产品BOM列表查询返回值实体
  *
@@ -14,4 +16,10 @@ import lombok.Setter;
 @Setter
 public class ContractProductBomVo extends ContractProductBom {
 
+    private String productCode;
+
+    private BigDecimal productLength;
+    private BigDecimal productWidth;
+    private BigDecimal productHeight;
+
 }

+ 3 - 0
hx-sale/src/main/java/com/fjhx/sale/entity/contract/vo/ContractProductVo.java

@@ -6,6 +6,7 @@ import lombok.Setter;
 
 import java.math.BigDecimal;
 import java.util.Date;
+import java.util.List;
 
 /**
  * 外销合同-产品列表查询返回值实体
@@ -212,4 +213,6 @@ public class ContractProductVo extends ContractProduct {
      */
     private Integer isSettled;
 
+    List<ContractProductBomVo> contractProductBomList;
+
 }

+ 1 - 2
hx-sale/src/main/java/com/fjhx/sale/entity/contract/vo/ContractVo.java

@@ -2,7 +2,6 @@ package com.fjhx.sale.entity.contract.vo;
 
 import com.fjhx.file.entity.FileInfoVo;
 import com.fjhx.sale.entity.contract.po.Contract;
-import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.entity.contract.po.ContractProject;
 import com.fjhx.sale.entity.contract.po.ContractShipment;
 import com.fjhx.sale.entity.purchase.po.EhsdPurchase;
@@ -135,7 +134,7 @@ public class ContractVo extends Contract {
     }
 
 
-    List<ContractProduct> contractProductList;
+    List<ContractProductVo> contractProductList;
 
 
     List<EhsdPurchase> purchaseList;

+ 9 - 5
hx-sale/src/main/java/com/fjhx/sale/flow/ContractFlow.java

@@ -1,5 +1,6 @@
 package com.fjhx.sale.flow;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@@ -25,6 +26,7 @@ import com.fjhx.item.service.product.ProductStockInfoService;
 import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
 import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.fjhx.sale.entity.contract.dto.ContractDto;
+import com.fjhx.sale.entity.contract.dto.ContractProductDto;
 import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.entity.contract.po.ContractProductBom;
@@ -109,7 +111,7 @@ public class ContractFlow extends FlowDelegate {
         contract.setCode(codingRuleService.createCode(CodingRuleEnum.CONTRACT.getKey(), contract.getBuyCorporationId()));
 
         // 保存合同产品
-        List<ContractProduct> contractProductList = contract.getContractProductList();
+        List<ContractProductDto> contractProductList = contract.getContractProductList();
 
         // 赋值待处理数量
         if (CollectionUtils.isNotEmpty(contractProductList)) {
@@ -167,9 +169,9 @@ public class ContractFlow extends FlowDelegate {
         SecurityUtils.clearTenantId();
 
         // 保存合同产品
-        List<ContractProduct> contractProductList = contract.getContractProductList();
-        contractProductList = ObjectUtil.isEmpty(contractProductList) ? new ArrayList<>() : contractProductList;
-        for (ContractProduct cp : contractProductList) {
+        List<ContractProductDto> contractProductListDto = contract.getContractProductList();
+        contractProductListDto = ObjectUtil.isEmpty(contractProductListDto) ? new ArrayList<>() : contractProductListDto;
+        for (ContractProductDto cp : contractProductListDto) {
             //对新数据创建id
             cp.setId(ObjectUtil.isEmpty(cp.getId()) ? IdWorker.getId() : cp.getId());
             //赋值合同Id
@@ -193,7 +195,9 @@ public class ContractFlow extends FlowDelegate {
 
             contractProductBomService.editLinked(contractProductBomList, ContractProductBom::getContractProductId, cp.getId());
         }
-        contractProductService.editLinked(contractProductList, ContractProduct::getContractId, contract.getId());
+
+        List<ContractProduct> contractProductList1 = BeanUtil.copyToList(contractProductListDto, ContractProduct.class);
+        contractProductService.editLinked(contractProductList1, ContractProduct::getContractId, contract.getId());
 
         // 保存收费项目
         List<ContractProject> contractProjectList = contract.getContractProjectList();

+ 5 - 2
hx-sale/src/main/java/com/fjhx/sale/flow/ContractUpdateFlow.java

@@ -1,5 +1,6 @@
 package com.fjhx.sale.flow;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.toolkit.*;
@@ -11,6 +12,7 @@ import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.flow.enums.FlowStatusEnum;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.sale.entity.contract.dto.ContractDto;
+import com.fjhx.sale.entity.contract.dto.ContractProductDto;
 import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.entity.contract.po.ContractProject;
@@ -104,7 +106,7 @@ public class ContractUpdateFlow extends FlowDelegate {
             throw new ServiceException("原合同没有产品");
         }
         Map<Long, List<ContractProduct>> oldContractProductMap = oldContractProductList.stream().collect(Collectors.groupingBy(ContractProduct::getId));
-        List<ContractProduct> newContractProductList = contract.getContractProductList();
+        List<ContractProductDto> newContractProductList = contract.getContractProductList();
         if (CollectionUtils.isEmpty(newContractProductList)) {
             throw new ServiceException("变更合同产品不能为空");
         }
@@ -268,7 +270,8 @@ public class ContractUpdateFlow extends FlowDelegate {
         contractService.save(contract);
 
         // 保存合同产品
-        List<ContractProduct> contractProductList = contract.getContractProductList();
+        List<ContractProductDto> contractProductDtoList = contract.getContractProductList();
+        List<ContractProduct> contractProductList = BeanUtil.copyToList(contractProductDtoList, ContractProduct.class);
         if (CollectionUtils.isNotEmpty(contractProductList)) {
             for (ContractProduct c : contractProductList) {
                 c.setId(IdWorker.getId());

+ 33 - 6
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractServiceImpl.java

@@ -210,6 +210,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
 
     @Autowired
     private ISysDeptService deptService;
+    @Autowired
+    private ContractProductBomService contractProductBomService;
 
     /**
      * 合同和样品单 下拉分页
@@ -1124,7 +1126,32 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         }
 
         List<ContractProduct> contractProductList = contractProductService.list(q -> q.eq(ContractProduct::getContractId, id));
-        productInfoService.attributeAssign(contractProductList, ContractProduct::getProductId, (item, product) -> {
+        List<ContractProductVo> contractProductVos = BeanUtil.copyToList(contractProductList, ContractProductVo.class);
+        List<Long> contractProductIds = contractProductVos.stream().map(ContractProduct::getId).collect(Collectors.toList());
+
+
+        //赋值产品BOM
+        Map<Long, List<ContractProductBomVo>> cpbMap = new HashMap<>();
+        if (ObjectUtil.isNotEmpty(contractProductIds)) {
+            List<ContractProductBom> bomList = contractProductBomService.list(q -> q.in(ContractProductBom::getContractProductId, contractProductIds));
+            List<ContractProductBomVo> contractProductBomVos = BeanUtil.copyToList(bomList, ContractProductBomVo.class);
+            //赋值物料信息
+            productInfoService.attributeAssign(contractProductBomVos, ContractProductBom::getMaterialId, (item, productInfo) -> {
+                item.setProductCode(productInfo.getCustomCode());
+                item.setProductName(productInfo.getName());
+                item.setProductLength(productInfo.getLength());
+                item.setProductWidth(productInfo.getWidth());
+                item.setProductHeight(productInfo.getHeight());
+            });
+            cpbMap = contractProductBomVos.stream().collect(Collectors.groupingBy(ContractProductBom::getContractProductId));
+        }
+
+        //赋值产品BOM
+        for (ContractProductVo cp : contractProductVos) {
+            cp.setContractProductBomList(cpbMap.get(cp.getId()));
+        }
+
+        productInfoService.attributeAssign(contractProductVos, ContractProduct::getProductId, (item, product) -> {
             item.setProductCnName(product.getName());
             item.setProductCode(product.getCustomCode());
             item.setProductUnit(product.getUnit());
@@ -1134,13 +1161,12 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
             item.setProductHeight(product.getHeight());
         });
         //重新赋值待采购数量
-        List<Long> contractProductIds = contractProductList.stream().map(ContractProduct::getId).collect(Collectors.toList());
         List<EhsdPurchaseProduct> purchaseProducts = ehsdPurchaseProductService.getPurchaseProductByContractProductIds(contractProductIds);
         if (ObjectUtil.isNotEmpty(purchaseProducts)) {
             Map<Long, List<EhsdPurchaseProduct>> collect = purchaseProducts.stream()
                     .filter(item -> ObjectUtil.isNotEmpty(item.getDataResourceId()))
                     .collect(Collectors.groupingBy(EhsdPurchaseProduct::getDataResourceId));
-            for (ContractProduct contractProduct : contractProductList) {
+            for (ContractProduct contractProduct : contractProductVos) {
                 List<EhsdPurchaseProduct> ehsdPurchaseProductList = collect.get(contractProduct.getId());
                 if (ObjectUtil.isEmpty(ehsdPurchaseProductList)) {
                     contractProduct.setExpendQuantity(BigDecimal.ZERO);
@@ -1151,7 +1177,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                 contractProduct.setExpendQuantity(subtract);
             }
         }
-        result.setContractProductList(contractProductList);
+        result.setContractProductList(contractProductVos);
 
         List<ContractProject> contractProjectList = contractProjectService.list(q -> q.eq(ContractProject::getContractId, id));
         result.setContractProjectList(contractProjectList);
@@ -2428,7 +2454,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
             Map<Long, List<FileInfoVo>> packageFileMap = ObsFileUtil.getFileMap(ids, 2);
             //合同产品
             List<ContractProduct> contractProductList = contractProductService.list(Wrappers.<ContractProduct>query().lambda().in(ContractProduct::getContractId, ids));
-            Map<Long, List<ContractProduct>> contractProductMap = contractProductList.stream().collect(Collectors.groupingBy(ContractProduct::getContractId));
+            List<ContractProductVo> contractProductVos = BeanUtil.copyToList(contractProductList, ContractProductVo.class);
+            Map<Long, List<ContractProductVo>> contractProductMap = contractProductVos.stream().collect(Collectors.groupingBy(ContractProductVo::getContractId));
             //采购合同
             List<EhsdPurchase> ehsdPurchaseList = ehsdPurchaseService.list(Wrappers.<EhsdPurchase>query().lambda()
                     .in(EhsdPurchase::getDataResourceId, ids)
@@ -2463,7 +2490,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                 }
                 // 赋值产品信息
                 if (MapUtils.isNotEmpty(contractProductMap)) {
-                    List<ContractProduct> contractProducts = contractProductMap.get(p.getId());
+                    List<ContractProductVo> contractProducts = contractProductMap.get(p.getId());
                     p.setContractProductList(contractProducts);
                 }
                 // 赋值采购单信息