فهرست منبع

销售订单去掉生产公司 生产任务流程修改

yzc 1 سال پیش
والد
کامیت
bf89fce575

+ 155 - 59
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProduceOrderServiceImpl.java

@@ -36,6 +36,7 @@ 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 com.fjhx.sale.entity.contract.vo.ContractProductBomVo;
+import com.fjhx.sale.entity.contract.vo.ContractProductVo;
 import com.fjhx.sale.entity.purchase.po.EhsdPurchaseProduct;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo;
 import com.fjhx.sale.mapper.arrival.ArrivalDetailMapper;
@@ -278,7 +279,7 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
             ProductionOrderDto produceOrderDto = BeanUtil.copyProperties(dto, ProductionOrderDto.class);
 
             //赋值原订单信息
-            ProductionOrder one = this.getOne(q -> q.eq(ProductionOrder::getContractId, contractId));
+            ProductionOrder one = this.getOne(q -> q.eq(ProductionOrder::getContractId, contractId).eq(ProductionOrder::getCompanyId, pCompanyId));
             if (ObjectUtil.isNotEmpty(one)) {
                 produceOrderDto.setId(one.getId());
             }
@@ -287,6 +288,7 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
             SysDept produceCompany = sysDeptService.getById(pCompanyId);
             Assert.notEmpty(produceCompany, "查询不到生产公司信息");
 
+            produceOrderDto.setProduceCompanyId(pCompanyId);
             produceOrderDto.setCompanyId(pCompanyId);
             produceOrderDto.setConfirmStatus(0);
 
@@ -343,7 +345,10 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
         Long contractId = productionOrder.getContractId();
 
         //获取合同产品信息
-        List<ContractProduct> contractProductList = contractProductService.list(q -> q.eq(ContractProduct::getContractId, contractId));
+        List<ContractProductVo> contractProductList = contractProductService.getList(IWrapper.<ContractProduct>getWrapper()
+                .eq("cp", ContractProduct::getContractId, contractId)
+                .eq("pi.company_id", companyId)
+        );
         Map<Long, ContractProduct> productMap = contractProductList.stream().collect(Collectors.toMap(ContractProduct::getId, Function.identity()));
 
         //获取物料列表
@@ -387,6 +392,7 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
                 subscribeDetail.setContractId(contractId);
                 subscribeDetail.setDataType(1);
                 subscribeDetail.setCompanyId(companyId);
+                subscribeDetail.setProdOrderId(productionOrder.getId());
                 subscribeDetailList.add(subscribeDetail);
             }
         }
@@ -394,22 +400,41 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
         subscribeDetailService.saveBatch(subscribeDetailList);
     }
 
-    void updateMaterialWaitPurchase(Long newContractId) {
+    void updateMaterialWaitPurchase(ProductionOrder productionOrder) {
+        Long newContractId = productionOrder.getContractId();
         Contract newContract = contractService.getById(newContractId);
         Long oldContractId = newContract.getOldContractId();
         Long companyId = newContract.getCompanyId();
         //---------------------------------------------------------------
-        List<ContractProductBomVo> oldProductBomListSum = contractProductBomService.getContractProductBomQuantitySum(oldContractId);
+        List<ContractProductVo> oldContractProductList = contractProductService.getList(IWrapper.<ContractProduct>getWrapper()
+                .eq("cp", ContractProduct::getContractId, oldContractId)
+                //过滤当前生产公司的产品
+                .eq("pi.company_id", productionOrder.getCompanyId())
+        );
+        List<Long> oldCpIds = oldContractProductList.stream().map(ContractProduct::getId).collect(Collectors.toList());
+        List<ContractProductBomVo> oldProductBomListSum = contractProductBomService.getContractProductBomQuantitySum(IWrapper.getWrapper()
+                .eq("cpb.contract_id", oldContractId)
+                .in("cp.id", oldCpIds)
+        );
 
         //获取新合同物料数量Map
-        List<ContractProductBomVo> contractProductBomQuantitySum = contractProductBomService.getContractProductBomQuantitySum(newContractId);
+        List<ContractProductVo> newContractProductList = contractProductService.getList(IWrapper.<ContractProduct>getWrapper()
+                .eq("cp", ContractProduct::getContractId, newContract)
+                //过滤当前生产公司的产品
+                .eq("pi.company_id", productionOrder.getCompanyId())
+        );
+        List<Long> newCpIds = newContractProductList.stream().map(ContractProduct::getId).collect(Collectors.toList());
+        List<ContractProductBomVo> contractProductBomQuantitySum = contractProductBomService.getContractProductBomQuantitySum(IWrapper.getWrapper()
+                .eq("cpb.contract_id", newContractId)
+                .in("cp.id", newCpIds)
+        );
         Map<Long, BigDecimal> newQuantityMap = contractProductBomQuantitySum.stream().collect(Collectors.toMap(ContractProductBom::getMaterialId, ContractProductBom::getQuantity));
 
 
         List<AvailableStockBo> availableStockBoList = new ArrayList<>();
 
         //获取已采购数量
-        List<EhsdPurchaseProductVo> purchaseQuantitySumByContractId = ehsdPurchaseProductMapper.getPurchaseQuantitySumByContractId(newContractId);
+        List<EhsdPurchaseProductVo> purchaseQuantitySumByContractId = ehsdPurchaseProductMapper.getPurchaseQuantitySumByContractId(newContractId, companyId);
         Map<Long, BigDecimal> collect = purchaseQuantitySumByContractId.stream().collect(Collectors.toMap(EhsdPurchaseProduct::getProductId, EhsdPurchaseProduct::getQuantity));
 
         //旧数据处理
@@ -425,6 +450,7 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
             SubscribeDetail subscribeDetail = subscribeDetailService.getOne(q -> q
                     .eq(SubscribeDetail::getContractId, newContractId)
                     .eq(SubscribeDetail::getProductId, materialId)
+                    .eq(SubscribeDetail::getCompanyId, productionOrder.getCompanyId())
             );
             BigDecimal demandPurchaseCount = BigDecimal.ZERO;
             if (ObjectUtils.isNotEmpty(subscribeDetail)) {
@@ -477,6 +503,7 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
             Long materialId = availableStockBo.getProductId();
             SubscribeDetail subscribeDetail = subscribeDetailService.getOne(q -> q.eq(SubscribeDetail::getContractId, newContractId)
                     .eq(SubscribeDetail::getProductId, materialId)
+                    .eq(SubscribeDetail::getCompanyId, productionOrder.getCompanyId())
             );
 
             BigDecimal requiredQuantity = availableStockBo.getNewQuantity();
@@ -493,6 +520,7 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
                     subscribeDetail.setContractId(newContractId);
                     subscribeDetail.setDataType(1);
                     subscribeDetail.setCompanyId(companyId);
+                    subscribeDetail.setProdOrderId(productionOrder.getId());
                 }
 
                 //修改待采购量
@@ -531,43 +559,13 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
         Contract contract = contractService.getById(contractId);
         Assert.notEmpty(contract, "查询不到合同信息!");
 
-        //============刷新生产任务明细关联的合同产品id=============
-        List<ProductionOrderDetail> tempProdTaskList = new ArrayList<>();
-
-        List<ProductionOrderDetail> prodTaskList = produceOrderDetailService.list(q -> q
-                .eq(ProductionOrderDetail::getProduceOrderId, orderDtoId)
-        );
-        for (ProductionOrderDetail prodTask : prodTaskList) {
-            Long tempOldId = prodTask.getContractDetailId();
-            //遍历出最新一版id
-            int recursion = 0;
-            while (ObjectUtil.isNotEmpty(tempOldId)) {
-                recursion++;
-                Long finalTempOldId = tempOldId;
-                ContractProduct cp = contractProductService.getOne(q -> q.eq(ContractProduct::getOldContractProductId, finalTempOldId));
-                if (ObjectUtil.isEmpty(cp)) {
-                    prodTask.setContractDetailId(tempOldId);
-                    break;
-                }
-                tempOldId = cp.getId();
-
-                //递归超过50次,报错防止死循环
-                if (recursion > 50) {
-                    throw new ServiceException("数据异常,请联系管理员!");
-                }
-            }
-
-            ProductionOrderDetail tempTask = new ProductionOrderDetail();
-            tempTask.setId(prodTask.getId());
-            tempTask.setContractDetailId(prodTask.getContractDetailId());
-            tempProdTaskList.add(tempTask);
-        }
-        produceOrderDetailService.updateBatchById(tempProdTaskList);
-        //===================================================
-
         //创建生产订单明细
         List<ProductionOrderDetail> productionOrderDetailList = new ArrayList<>();
-        List<ContractProduct> contractProductList = contractProductService.list(q -> q.eq(ContractProduct::getContractId, contractId));
+        List<ContractProductVo> contractProductList = contractProductService.getList(IWrapper.<ContractProduct>getWrapper()
+                .eq("cp", ContractProduct::getContractId, contractId)
+                //过滤当前生产公司的产品
+                .eq("pi.company_id", produceOrder.getCompanyId())
+        );
 
         //将被删除的任务作废
         List<Long> cpIds = contractProductList.stream().map(ContractProduct::getId).collect(Collectors.toList());
@@ -707,13 +705,48 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
     @DSTransactional
     @Override
     public synchronized void deliveryConfirm(ProductionOrderDto dto) {
+        Long orderDtoId = dto.getId();
         this.updateById(dto);
-        Long id = dto.getId();
-        ProductionOrder productionOrder = this.getById(id);
+
+        //============刷新生产任务明细关联的合同产品id=============
+        List<ProductionOrderDetail> tempProdTaskList = new ArrayList<>();
+
+        List<ProductionOrderDetail> prodTaskList = produceOrderDetailService.list(q -> q
+                .eq(ProductionOrderDetail::getProduceOrderId, orderDtoId)
+        );
+        for (ProductionOrderDetail prodTask : prodTaskList) {
+            Long tempOldId = prodTask.getContractDetailId();
+            //遍历出最新一版id
+            int recursion = 0;
+            while (ObjectUtil.isNotEmpty(tempOldId)) {
+                recursion++;
+                Long finalTempOldId = tempOldId;
+                ContractProduct cp = contractProductService.getOne(q -> q.eq(ContractProduct::getOldContractProductId, finalTempOldId));
+                if (ObjectUtil.isEmpty(cp)) {
+                    prodTask.setContractDetailId(tempOldId);
+                    break;
+                }
+                tempOldId = cp.getId();
+
+                //递归超过50次,报错防止死循环
+                if (recursion > 50) {
+                    throw new ServiceException("数据异常,请联系管理员!");
+                }
+            }
+
+            ProductionOrderDetail tempTask = new ProductionOrderDetail();
+            tempTask.setId(prodTask.getId());
+            tempTask.setContractDetailId(prodTask.getContractDetailId());
+            tempProdTaskList.add(tempTask);
+        }
+        produceOrderDetailService.updateBatchById(tempProdTaskList);
+        //===================================================
+
+        ProductionOrder productionOrder = this.getById(orderDtoId);
         Assert.notEmpty(productionOrder, "查询不到订单信息!");
         //驳回直接删除
         if (ObjectUtil.equals(dto.getConfirmStatus(), 2)) {
-            this.removeById(id);
+            this.removeById(orderDtoId);
             //赋值驳回原因
             Long contractId = productionOrder.getContractId();
             contractService.update(q -> q
@@ -730,25 +763,78 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
             msg.put("business_id", productionOrder.getId());
             WebSocketPush.byUser(PushTypeEnum.MESSAGE, productionOrder.getCreateUser(), title, PushBusinessTypeEnum.PRODUCTION_ORDER_REJECT.getType(), msg.toString());
         } else {
-            if (produceOrderDetailService.count(q -> q.eq(ProductionOrderDetail::getProduceOrderId, dto.getId())) > 0) {
-                //修改待采购
-                updateMaterialWaitPurchase(productionOrder.getContractId());
-            } else {
-                //创建待采购
-                createMaterialWaitPurchase(productionOrder);
+            //当合同下的所有订单确认交期 才生成信息
+            long count = this.count(q -> q
+                    .eq(ProductionOrder::getContractId, productionOrder.getContractId())
+                    .eq(ProductionOrder::getConfirmStatus, 0));
+
+            //所有订单交期确认,才生成数据
+            if (count == 0) {
+                List<ProductionOrder> productionOrderList = this.list(q -> q.eq(ProductionOrder::getContractId, productionOrder.getContractId()));
+                for (ProductionOrder productionOrder1 : productionOrderList) {
+                    if (produceOrderDetailService.count(q -> q.eq(ProductionOrderDetail::getProduceOrderId, productionOrder1.getId())) > 0) {
+                        //修改待采购
+                        updateMaterialWaitPurchase(productionOrder1);
+                    } else {
+                        //创建待采购
+                        createMaterialWaitPurchase(productionOrder1);
+                    }
+
+                    //创建生产任务
+                    createOrderDetails(productionOrder1);
+
+                    //生成待出库
+                    createStockWait(productionOrder1);
+
+                    //创建生产报工
+                    createOrEditProdCompletion(productionOrder1);
+
+                    productionOrder1.setProduceStatus(1);
+                    productionOrder1.setProduceTime(new Date());//投产时间直接当前值
+
+                    this.updateById(productionOrder1);
+                }
             }
+        }
+    }
+
+    private void createOrEditProdCompletion(ProductionOrder productionOrder) {
+        //添加一条完工入库类型的待入库数据
+        StockWait stockWait = stockWaitService.getOne(q -> q.eq(StockWait::getProdOrderId, productionOrder.getId()));
+        if (ObjectUtil.isEmpty(stockWait)) {
+            stockWait = new StockWait();
+        }
+        stockWait.setType(1);
+        stockWait.setBusinessType(JournalType.COMPLETION_IN.getDetailType());
+        stockWait.setBusinessId(productionOrder.getId());
+        stockWait.setBusinessCode(productionOrder.getCode());
+        stockWait.setStatus(0);
+        stockWait.setCompanyId(productionOrder.getCompanyId());
+        stockWait.setProdOrderId(productionOrder.getId());
+        stockWaitService.saveOrUpdate(stockWait);
 
-            //创建生产任务
-            createOrderDetails(productionOrder);
+        List<ProductionOrderDetail> prodTaskList = produceOrderDetailService.list(q -> q.eq(ProductionOrderDetail::getProduceOrderId, productionOrder.getId()));
 
-            //生成待出库
-            createStockWait(productionOrder);
+        List<Long> taskIds = prodTaskList.stream().map(ProductionOrderDetail::getId).collect(Collectors.toList());
+        StockWait finalStockWait = stockWait;
+        stockWaitDetailsService.remove(q -> q.eq(StockWaitDetails::getStockWaitId, finalStockWait.getId()).notIn(StockWaitDetails::getProdTaskId, taskIds));
+        for (ProductionOrderDetail prodTask : prodTaskList) {
 
-            productionOrder.setProduceStatus(1);
-            productionOrder.setProduceTime(new Date());//投产时间直接当前值
+            StockWaitDetails stockWaitDetails = stockWaitDetailsService.getOne(q -> q.eq(StockWaitDetails::getProdTaskId, prodTask));
+            if (ObjectUtil.isEmpty(stockWaitDetails)) {
+                stockWaitDetails = new StockWaitDetails();
+                stockWaitDetails.setReceiptQuantity(BigDecimal.ZERO);
+            }
 
-            this.updateById(productionOrder);
+            stockWaitDetails.setStockWaitId(stockWait.getId());
+            stockWaitDetails.setProductId(prodTask.getProductId());
+            stockWaitDetails.setQuantity(prodTask.getQuantity());
+            stockWaitDetails.setBusinessDetailsId(prodTask.getId());
+            stockWaitDetails.setProdTaskId(prodTask.getId());
+            stockWaitDetailsService.saveOrUpdate(stockWaitDetails);
         }
+
+
     }
 
     private void createStockWait(ProductionOrder productionOrder) {
@@ -764,7 +850,7 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
         } else {
             stockWait.setStatus(1);//部分出库
         }
-        stockWait.setCompanyId(SecurityUtils.getCompanyId());
+        stockWait.setCompanyId(productionOrder.getCompanyId());
         stockWait.setBusinessId(productionOrder.getId());
         stockWait.setType(2);//出库
 
@@ -774,8 +860,18 @@ public class ProduceOrderServiceImpl extends ServiceImpl<ProduceOrderMapper, Pro
         stockWait.setProdOrderId(productionOrder.getId());
         stockWaitService.saveOrUpdate(stockWait);
 
+        List<ContractProductVo> contractProductList = contractProductService.getList(IWrapper.<ContractProduct>getWrapper()
+                .eq("cp", ContractProduct::getContractId, productionOrder.getContractId())
+                //过滤当前生产公司的产品
+                .eq("pi.company_id", productionOrder.getCompanyId())
+        );
+        List<Long> cpIds = contractProductList.stream().map(ContractProduct::getId).collect(Collectors.toList());
+
         List<StockWaitDetails> stockWaitDetailsList = new ArrayList<>();
-        List<ContractProductBomVo> contractProductBomQuantitySum = contractProductBomService.getContractProductBomQuantitySum(productionOrder.getContractId());
+        List<ContractProductBomVo> contractProductBomQuantitySum = contractProductBomService.getContractProductBomQuantitySum(IWrapper.getWrapper()
+                .eq("cpb.contract_id", productionOrder.getContractId())
+                .in("cp.id", cpIds)
+        );
         for (ContractProductBomVo contractProductBomVo : contractProductBomQuantitySum) {
             //创建待出库明细
             Long stockWaitId = stockWait.getId();

+ 0 - 24
hx-mes/src/main/java/com/fjhx/mes/service/production/impl/ProductionReportingServiceImpl.java

@@ -17,9 +17,6 @@ import com.fjhx.mes.entity.technology.po.TechnologyProcessLine;
 import com.fjhx.mes.mapper.production.ProductionReportingMapper;
 import com.fjhx.mes.service.production.*;
 import com.fjhx.mes.service.technology.TechnologyProcessLineService;
-import com.fjhx.wms.entity.stock.emums.JournalType;
-import com.fjhx.wms.entity.stock.po.StockWait;
-import com.fjhx.wms.entity.stock.po.StockWaitDetails;
 import com.fjhx.wms.service.stock.StockWaitDetailsService;
 import com.fjhx.wms.service.stock.StockWaitService;
 import com.ruoyi.common.core.domain.BasePo;
@@ -224,27 +221,6 @@ public class ProductionReportingServiceImpl extends ServiceImpl<ProductionReport
                 productionOrderDetail.setProduceStatus(2);
             }
             produceOrderDetailService.updateById(productionOrderDetail);
-
-            ProductionOrder productionOrder = produceOrderService.getById(productionOrderDetail.getProduceOrderId());
-
-            //添加一条完工入库类型的待入库数据
-            StockWait stockWait = new StockWait();
-            stockWait.setType(1);
-            stockWait.setBusinessType(JournalType.COMPLETION_IN.getDetailType());
-            stockWait.setBusinessId(productionOrder.getId());
-            stockWait.setBusinessCode(productionOrder.getCode());
-            stockWait.setStatus(0);
-            stockWait.setCompanyId(SecurityUtils.getCompanyId());
-            stockWait.setProdOrderId(productionOrder.getId());
-            stockWaitService.save(stockWait);
-            StockWaitDetails stockWaitDetails = new StockWaitDetails();
-            stockWaitDetails.setStockWaitId(stockWait.getId());
-            stockWaitDetails.setProductId(productionOrderDetail.getProductId());
-            stockWaitDetails.setQuantity(productionOrderDetail.getQuantity());
-            stockWaitDetails.setReceiptQuantity(BigDecimal.ZERO);
-            stockWaitDetails.setBusinessDetailsId(productionOrderDetail.getId());
-            stockWaitDetails.setProdTaskId(productionOrderDetail.getId());
-            stockWaitDetailsService.save(stockWaitDetails);
         }
         //检查订单下的任务是否完成,更改状态
         Long produceOrderId = productionOrderDetail.getProduceOrderId();

+ 99 - 94
hx-purchase/src/main/java/com/fjhx/purchase/entity/subscribe/po/SubscribeDetail.java

@@ -21,68 +21,73 @@ import java.math.BigDecimal;
 @TableName("subscribe_detail")
 public class SubscribeDetail extends BasePo {
 
-	/**
-	 * 产品ID/货品ID
-	 */
-	private Long productId;
-
-	/**
-	 * 申购单ID
-	 */
-	private Long subscribeId;
-
-	/**
-	 * 申购数量
-	 */
-	private BigDecimal count;
-
-	/**
-	 * 申购事由
-	 */
-	private String content;
-
-	/**
+    /**
+     * 产品ID/货品ID
+     */
+    private Long productId;
+
+    /**
+     * 申购单ID
+     */
+    private Long subscribeId;
+
+    /**
+     * 申购数量
+     */
+    private BigDecimal count;
+
+    /**
+     * 申购事由
+     */
+    private String content;
+
+    /**
      * 状态 10审批中,13驳回,15待采购,20、已采购,30部分采购,88作废
      */
-	private Integer status;
-
-	/**
-	 * 备注
-	 */
-	private String remark;
-
-	/**
-	 * 是否删除
-	 */
-	private Integer delFlag;
-
-	/**
-	 * 合同id
-	 */
-	private Long contractId;
-	/**
-	 * 合同明细id
-	 */
-	private Long contractDetailId;
-	/**
-	 * 数据类型 0申购 1销售合同
-	 */
-	private Integer dataType;
-
-	/**
-	 * 归属公司id
-	 */
-	private Long companyId;
-
-	/**
-	 * 单价
-	 */
-	private BigDecimal price;
-	/**
-	 * 单价含税
-	 */
+    private Integer status;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 是否删除
+     */
+    private Integer delFlag;
+
+    /**
+     * 合同id
+     */
+    private Long contractId;
+    /**
+     * 合同明细id
+     */
+    private Long contractDetailId;
+    /**
+     * 数据类型 0申购 1销售合同
+     */
+    private Integer dataType;
+
+    /**
+     * 归属公司id
+     */
+    private Long companyId;
+
+    /**
+     * 单价
+     */
+    private BigDecimal price;
+    /**
+     * 单价含税
+     */
     private BigDecimal priceIncludingTax;
 
+    /**
+     * 生产订单id
+     */
+    private Long prodOrderId;
+
     //==============================================================================================================
 
     /**
@@ -92,10 +97,10 @@ public class SubscribeDetail extends BasePo {
     private String productType;
 
     /**
-	 * 所属分类
-	 */
-	@TableField(exist = false)
-	private Long productCategoryId;
+     * 所属分类
+     */
+    @TableField(exist = false)
+    private Long productCategoryId;
 
     /**
      * 所属分类
@@ -106,36 +111,36 @@ public class SubscribeDetail extends BasePo {
     /**
      * 货品编码
      */
-	@TableField(exist = false)
-	private String productCode;
-
-	/**
-	 * 货品名称
-	 */
-	@TableField(exist = false)
-	private String productName;
-
-	/**
-	 * 单位
-	 */
-	@TableField(exist = false)
-	private String productUnit;
-
-	/**
-	 * 货品规格型号
-	 */
-	@TableField(exist = false)
-	private String productSpec;
-
-	/**
-	 * 部门id
-	 */
-	@TableField(exist = false)
-	private Long deptId;
-
-	/**
-	 * 产品定义
-	 */
-	@TableField(exist = false)
-	private Integer productDefinition;
+    @TableField(exist = false)
+    private String productCode;
+
+    /**
+     * 货品名称
+     */
+    @TableField(exist = false)
+    private String productName;
+
+    /**
+     * 单位
+     */
+    @TableField(exist = false)
+    private String productUnit;
+
+    /**
+     * 货品规格型号
+     */
+    @TableField(exist = false)
+    private String productSpec;
+
+    /**
+     * 部门id
+     */
+    @TableField(exist = false)
+    private Long deptId;
+
+    /**
+     * 产品定义
+     */
+    @TableField(exist = false)
+    private Integer productDefinition;
 }

+ 3 - 1
hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractProductBomMapper.java

@@ -3,7 +3,9 @@ package com.fjhx.sale.mapper.contract;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fjhx.sale.entity.contract.po.ContractProductBom;
 import com.fjhx.sale.entity.contract.vo.ContractProductBomVo;
+import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -19,6 +21,6 @@ import java.util.List;
 @Mapper
 public interface ContractProductBomMapper extends BaseMapper<ContractProductBom> {
 
-    List<ContractProductBomVo> getContractProductBomQuantitySum(Long contractId);
+    List<ContractProductBomVo> getContractProductBomQuantitySum(@Param("ew") IWrapper<Object> wrapper);
 
 }

+ 3 - 1
hx-sale/src/main/java/com/fjhx/sale/mapper/purchase/EhsdPurchaseProductMapper.java

@@ -30,6 +30,7 @@ public interface EhsdPurchaseProductMapper extends BaseMapper<EhsdPurchaseProduc
 
     /**
      * 查询采购产品总金额,通过数据来源ID
+     *
      * @param contractIds
      * @return
      */
@@ -37,6 +38,7 @@ public interface EhsdPurchaseProductMapper extends BaseMapper<EhsdPurchaseProduc
 
     /**
      * 查询采购产品,通过数据来源ID
+     *
      * @param contractIds
      * @return
      */
@@ -53,7 +55,7 @@ public interface EhsdPurchaseProductMapper extends BaseMapper<EhsdPurchaseProduc
 
     List<EhsdPurchaseProduct> getPurchaseProductByContractProductIds(List<Long> dataResourceIds);
 
-    List<EhsdPurchaseProductVo> getPurchaseQuantitySumByContractId(Long contractId);
+    List<EhsdPurchaseProductVo> getPurchaseQuantitySumByContractId(@Param("contractId") Long contractId, @Param("companyId") Long companyId);
 
     BigDecimal getPurchaseQuantitySumBySubscribeDetailId(Long subscribeDetailId);
 

+ 2 - 1
hx-sale/src/main/java/com/fjhx/sale/service/contract/ContractProductBomService.java

@@ -4,6 +4,7 @@ import com.fjhx.sale.entity.contract.dto.ContractProductBomDto;
 import com.fjhx.sale.entity.contract.po.ContractProductBom;
 import com.fjhx.sale.entity.contract.vo.ContractProductBomVo;
 import com.ruoyi.common.core.service.BaseService;
+import com.ruoyi.common.utils.wrapper.IWrapper;
 
 import java.util.List;
 
@@ -20,5 +21,5 @@ public interface ContractProductBomService extends BaseService<ContractProductBo
 
     List<ContractProductBomVo> getList(ContractProductBomDto dto);
 
-    List<ContractProductBomVo> getContractProductBomQuantitySum(Long contractId);
+    List<ContractProductBomVo> getContractProductBomQuantitySum(IWrapper<Object> wrapper);
 }

+ 4 - 3
hx-sale/src/main/java/com/fjhx/sale/service/contract/impl/ContractProductBomServiceImpl.java

@@ -8,6 +8,7 @@ import com.fjhx.sale.entity.contract.po.ContractProductBom;
 import com.fjhx.sale.entity.contract.vo.ContractProductBomVo;
 import com.fjhx.sale.mapper.contract.ContractProductBomMapper;
 import com.fjhx.sale.service.contract.ContractProductBomService;
+import com.ruoyi.common.utils.wrapper.IWrapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -31,7 +32,7 @@ public class ContractProductBomServiceImpl extends ServiceImpl<ContractProductBo
     @Override
     public List<ContractProductBomVo> getList(ContractProductBomDto dto) {
         Assert.notEmpty(dto.getContractId(), "合同id不能为空");
-        List<ContractProductBomVo> contractProductBomVoList = baseMapper.getContractProductBomQuantitySum(dto.getContractId());
+        List<ContractProductBomVo> contractProductBomVoList = baseMapper.getContractProductBomQuantitySum(IWrapper.getWrapper().eq("cpb.contract_id", dto.getContractId()));
 
         //赋值产品信息
         productInfoService.attributeAssign(contractProductBomVoList, ContractProductBomVo::getMaterialId, (item, material) -> {
@@ -43,8 +44,8 @@ public class ContractProductBomServiceImpl extends ServiceImpl<ContractProductBo
     }
 
     @Override
-    public List<ContractProductBomVo> getContractProductBomQuantitySum(Long contractId) {
-        List<ContractProductBomVo> contractProductBomQuantitySum = baseMapper.getContractProductBomQuantitySum(contractId);
+    public List<ContractProductBomVo> getContractProductBomQuantitySum(IWrapper<Object> wrapper) {
+        List<ContractProductBomVo> contractProductBomQuantitySum = baseMapper.getContractProductBomQuantitySum(wrapper);
         return contractProductBomQuantitySum;
     }
 

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

@@ -1349,8 +1349,8 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
 
     @Override
     public void saveOrEdit(ContractDto contract) {
-        //生产公司信息校验
-        Assert.notEmpty(contract.getCompanyId(), "生产公司id不能为空!");
+//        //生产公司信息校验
+//        Assert.notEmpty(contract.getCompanyId(), "生产公司id不能为空!");
 //        //销售部门id
 //        contract.setDeptId(SecurityUtils.getDeptId());
 
@@ -1483,7 +1483,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         List<AvailableStockBo> inOutBoList = new ArrayList<>();
 
         //获取产品BOM列表
-        List<ContractProductBomVo> contractProductBomList = contractProductBomMapper.getContractProductBomQuantitySum(businessId);
+        List<ContractProductBomVo> contractProductBomList = contractProductBomMapper.getContractProductBomQuantitySum(IWrapper.getWrapper().eq("cpb.contract_id", businessId));
         for (ContractProductBom contractProductBom : contractProductBomList) {
             Long materialId = contractProductBom.getMaterialId();
             //获取待采购量

+ 8 - 6
hx-sale/src/main/resources/mapper/contract/ContractProductBomMapper.xml

@@ -4,13 +4,15 @@
     <select id="getContractProductBomQuantitySum"
             resultType="com.fjhx.sale.entity.contract.vo.ContractProductBomVo">
         SELECT cpb.contract_id,
-               cpb.material_id,
-               sum(cpb.quantity * cp.quantity) AS quantity,
-               cpb.*
+        cpb.material_id,
+        sum(cpb.quantity * cp.quantity) AS quantity,
+        cpb.*
         FROM contract_product_bom cpb
-                 LEFT JOIN contract_product cp ON cpb.contract_product_id = cp.id
-        WHERE cpb.contract_id = #{contractId}
+        LEFT JOIN contract_product cp ON cpb.contract_product_id = cp.id
+        <where>
+            ${ew.sqlSegment}
+        </where>
         GROUP BY cpb.contract_id,
-                 cpb.material_id
+        cpb.material_id
     </select>
 </mapper>

+ 3 - 2
hx-sale/src/main/resources/mapper/contract/ContractProductMapper.xml

@@ -232,9 +232,10 @@
                   AND coi.`status` IN (10, 30))       AS saleOutboundQuantity,
                (SELECT IFNULL(sum(swd.receipt_quantity), 0)
                 FROM stock_wait_details swd
-                WHERE swd.contract_detail_id = cp.id) AS outboundQuantity
-            cp.*
+                WHERE swd.contract_detail_id = cp.id) AS outboundQuantity,
+               cp.*
         FROM contract_product cp
+                 LEFT JOIN product_info pi ON cp.product_id = pi.id
             ${ew.customSqlSegment}
     </select>
 

+ 1 - 0
hx-sale/src/main/resources/mapper/purchase/EhsdPurchaseProductMapper.xml

@@ -96,6 +96,7 @@
                  LEFT JOIN ehsd_purchase ep ON epp.purchase_id = ep.id
         WHERE ep.`status` IN (10, 30, 99)
           AND ep.data_resource_id = #{contractId}
+          And ep.company_id = #{companyId}
         GROUP BY epp.product_id
     </select>