yzc před 1 rokem
rodič
revize
d5213d00f3

+ 1 - 6
hx-jushuitan/src/main/java/com/fjhx/jushuitan/initializers/JstInitializer.java

@@ -1,15 +1,10 @@
 package com.fjhx.jushuitan.initializers;
 
-import com.fjhx.jushuitan.constants.JstConstant;
 import com.fjhx.jushuitan.service.api.JstApiService;
-import com.jushuitan.api.*;
-import com.jushuitan.api.exception.ApiException;
-import com.jushuitan.api.util.AuthUtil;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
-import java.io.IOException;
 
 @Component
 public class JstInitializer {
@@ -18,7 +13,7 @@ public class JstInitializer {
 
     @PostConstruct
     public void dataInitializer() {
-        jstApiService.startOrder();
+//        jstApiService.startOrder();
     }
 
 

+ 0 - 70
hx-sale/src/main/java/com/fjhx/sale/flow/ContractFlow.java

@@ -7,21 +7,13 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.IdWorker;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
 import com.fjhx.area.utils.CustomizeAreaUtil;
-import com.fjhx.common.entity.InOutBo;
 import com.fjhx.common.enums.CodingRuleEnum;
 import com.fjhx.common.enums.FlowStatusEnum1;
-import com.fjhx.common.enums.InOutType;
 import com.fjhx.common.service.coding.CodingRuleService;
 import com.fjhx.common.utils.Assert;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.flow.core.FlowDelegate;
 import com.fjhx.flow.enums.FlowStatusEnum;
-import com.fjhx.item.enums.ProductAvailableRecordType;
-import com.fjhx.item.service.product.ProductInfoService;
-import com.fjhx.item.service.product.ProductStockInfoService;
-import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
-import com.fjhx.purchase.mapper.subscribe.SubscribeDetailMapper;
-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;
@@ -41,12 +33,9 @@ import com.ruoyi.common.utils.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * 外销合同流程
@@ -67,14 +56,6 @@ public class ContractFlow extends FlowDelegate {
     private ContractProjectService contractProjectService;
     @Autowired
     private ContractProductBomService contractProductBomService;
-    @Autowired
-    private SubscribeDetailService subscribeDetailService;
-    @Autowired
-    private SubscribeDetailMapper subscribeDetailMapper;
-    @Autowired
-    private ProductStockInfoService productStockInfoService;
-    @Autowired
-    private ProductInfoService productInfoService;
 
     @Override
     public String getFlowKey() {
@@ -236,7 +217,6 @@ public class ContractFlow extends FlowDelegate {
     public void cancellation(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
         super.cancellation(flowId, businessId, flowStatus);
 
-        Contract contract = contractService.getById(businessId);
 
         contractService.update(q -> q
                 .eq(Contract::getId, businessId)
@@ -245,57 +225,7 @@ public class ContractFlow extends FlowDelegate {
                 .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
         );
 
-        contractCancelEditAvailableQuantity(contract);
-
-    }
 
-    /**
-     * 合同作废修改可用库存
-     */
-    private void contractCancelEditAvailableQuantity(Contract contract) {
-        Long businessId = contract.getId();
-        //可用库存=可用库存-((待采购量-已采购量)-合同量)
-        List<SubscribeDetail> subscribeDetailList = subscribeDetailService.list(q -> q.eq(SubscribeDetail::getContractId, businessId));
-
-        //获取物料id
-        List<Long> materialIds = subscribeDetailList.stream().map(SubscribeDetail::getProductId).collect(Collectors.toList());
-
-        List<ContractProductBom> contractProductBomList = contractProductBomService.list(q -> q
-                .eq(ContractProductBom::getContractId, businessId)
-                .in(ContractProductBom::getMaterialId, materialIds)
-        );
-        Map<Long, List<ContractProductBom>> contractProductBomMap = contractProductBomList.stream().collect(Collectors.groupingBy(ContractProductBom::getMaterialId));
-        //获取已采购数量
-        List<Long> sdIds = subscribeDetailList.stream().map(SubscribeDetail::getId).collect(Collectors.toList());
-        List<SubscribeDetail> purchaseCountByIds = subscribeDetailMapper.getPurchaseCountByIds(sdIds);
-        Map<Long, BigDecimal> purchaseCountMap = purchaseCountByIds.stream().collect(Collectors.toMap(SubscribeDetail::getId, SubscribeDetail::getCount));
-
-        List<InOutBo> inOutBoList = new ArrayList<>();
-
-        for (SubscribeDetail subscribeDetail : subscribeDetailList) {
-            Long materialId = subscribeDetail.getProductId();
-            //作废待采购
-            subscribeDetail.setStatus(88);
-            BigDecimal purchaseCount = purchaseCountMap.getOrDefault(subscribeDetail.getId(), BigDecimal.ZERO);
-            //(待采购量-已采购量)
-            BigDecimal subtract = subscribeDetail.getCount().subtract(purchaseCount);
-            //获取合同量
-            List<ContractProductBom> contractProductBomList1 = contractProductBomMap.get(materialId);
-            BigDecimal reduce = contractProductBomList1.stream().map(ContractProductBom::getQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
-            //((待采购量-已采购量)-合同量)
-            InOutBo inOutBo = new InOutBo();
-            inOutBo.setProductId(materialId);
-            inOutBo.setQuantity(subtract.subtract(reduce));
-            inOutBoList.add(inOutBo);
-        }
-
-        //修改可用库存可用库存=可用库存-((待采购量-已采购量)-合同量)
-        productInfoService.editAvailableQuantity(
-                inOutBoList,
-                InOutType.OUT,
-                businessId,
-                ProductAvailableRecordType.SALE_CANCEL, contract.getCompanyId()
-        );
     }
 
 }

+ 6 - 0
hx-sale/src/main/java/com/fjhx/sale/mapper/contract/ContractProductBomMapper.java

@@ -2,6 +2,9 @@ package com.fjhx.sale.mapper.contract;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.fjhx.sale.entity.contract.po.ContractProductBom;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
 
 
 /**
@@ -12,6 +15,9 @@ import com.fjhx.sale.entity.contract.po.ContractProductBom;
  * @author
  * @since 2024-01-17
  */
+@Mapper
 public interface ContractProductBomMapper extends BaseMapper<ContractProductBom> {
 
+    List<ContractProductBom> getContractProductBomQuantitySum(Long contractId);
+
 }

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

@@ -23,10 +23,12 @@ import com.fjhx.account.service.tax.TaxRefundDetailsService;
 import com.fjhx.area.service.SetCustomizeAreaId;
 import com.fjhx.area.utils.CustomizeAreaUtil;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.entity.InOutBo;
 import com.fjhx.common.entity.contract.po.ContractTemplate;
 import com.fjhx.common.entity.corporation.po.Corporation;
 import com.fjhx.common.entity.documentary.bo.DocumentaryData;
 import com.fjhx.common.enums.FlowStatusEnum1;
+import com.fjhx.common.enums.InOutType;
 import com.fjhx.common.enums.PushBusinessTypeEnum;
 import com.fjhx.common.service.contract.ContractTemplateService;
 import com.fjhx.common.service.corporation.CorporationService;
@@ -44,17 +46,21 @@ import com.fjhx.item.entity.product.bo.ProductAnalysisBo;
 import com.fjhx.item.entity.product.dto.ProductInfoDto;
 import com.fjhx.item.entity.product.dto.ProductInfoSelectDto;
 import com.fjhx.item.entity.product.po.ProductInfo;
+import com.fjhx.item.enums.ProductAvailableRecordType;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.purchase.entity.arrival.po.ArrivalDetail;
 import com.fjhx.purchase.entity.pay.po.Pay;
 import com.fjhx.purchase.entity.purchase.po.Purchase;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
 import com.fjhx.purchase.entity.quality.po.QualityDetail;
+import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
+import com.fjhx.purchase.mapper.subscribe.SubscribeDetailMapper;
 import com.fjhx.purchase.service.arrival.ArrivalDetailService;
 import com.fjhx.purchase.service.pay.PayDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseDetailService;
 import com.fjhx.purchase.service.purchase.PurchaseService;
 import com.fjhx.purchase.service.quality.QualityDetailService;
+import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.fjhx.sale.entity.claim.po.ClaimContract;
 import com.fjhx.sale.entity.contract.bo.ContractCurrencyRate;
 import com.fjhx.sale.entity.contract.bo.ContractDocumentaryBo;
@@ -69,6 +75,7 @@ import com.fjhx.sale.entity.purchase.po.EhsdPurchaseProduct;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo;
 import com.fjhx.sale.entity.sale.vo.SaleQuotationVo;
 import com.fjhx.sale.mapper.contract.ContractMapper;
+import com.fjhx.sale.mapper.contract.ContractProductBomMapper;
 import com.fjhx.sale.service.claim.ClaimContractService;
 import com.fjhx.sale.service.contract.*;
 import com.fjhx.sale.service.purchase.EhsdPurchaseProductService;
@@ -208,6 +215,13 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
     @Autowired
     private ContractProductBomService contractProductBomService;
 
+    @Autowired
+    private SubscribeDetailService subscribeDetailService;
+    @Autowired
+    private SubscribeDetailMapper subscribeDetailMapper;
+    @Autowired
+    private ContractProductBomMapper contractProductBomMapper;
+
     /**
      * 合同和样品单 下拉分页
      */
@@ -1257,6 +1271,7 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         this.updateById(contractDto);
     }
 
+    @DSTransactional
     @Override
     public void cancellation(ContractDto contractDto) {
         contractService.update(q -> q
@@ -1265,6 +1280,71 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
                 .set(BasePo::getUpdateTime, new Date())
                 .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
         );
+
+        Contract contract = getById(contractDto.getId());
+        Assert.notEmpty(contract, "查询不到合同信息");
+
+        contractCancelEditAvailableQuantity(contract);
+    }
+
+    /**
+     * 合同作废修改可用库存 //可用库存=可用库存-((待采购量-已采购量)-合同量)
+     */
+    private void contractCancelEditAvailableQuantity(Contract contract) {
+        Long businessId = contract.getId();
+
+        //获取待采购量Map
+        List<SubscribeDetail> subscribeDetailList = subscribeDetailService.list(q -> q.eq(SubscribeDetail::getContractId, businessId));
+        Map<Long, List<SubscribeDetail>> subscribeDetailMap = subscribeDetailList.stream().collect(Collectors.groupingBy(SubscribeDetail::getProductId));
+
+        //获取已采购数量Map
+        List<Long> sdIds = subscribeDetailList.stream().map(SubscribeDetail::getId).collect(Collectors.toList());
+        List<SubscribeDetail> purchaseCountByIds = new ArrayList<>();
+        if (ObjectUtil.isNotEmpty(sdIds)) {
+            purchaseCountByIds = subscribeDetailMapper.getPurchaseCountByIds(sdIds);
+        }
+        Map<Long, BigDecimal> purchaseCountMap = purchaseCountByIds.stream().collect(Collectors.toMap(SubscribeDetail::getId, SubscribeDetail::getCount));
+
+        List<InOutBo> inOutBoList = new ArrayList<>();
+
+        //获取产品BOM列表
+        List<ContractProductBom> contractProductBomList = contractProductBomMapper.getContractProductBomQuantitySum(businessId);
+        for (ContractProductBom contractProductBom : contractProductBomList) {
+            Long materialId = contractProductBom.getMaterialId();
+            //获取待采购量
+            List<SubscribeDetail> subscribeDetailList1 = subscribeDetailMap.getOrDefault(materialId, new ArrayList<>());
+            BigDecimal subscribeDetailCount = subscribeDetailList1.stream().map(SubscribeDetail::getCount).reduce(BigDecimal.ZERO, BigDecimal::add);
+            //获取已采购量
+            BigDecimal purchaseCount = BigDecimal.ZERO;
+            for (SubscribeDetail subscribeDetail : subscribeDetailList1) {
+                purchaseCount.add(purchaseCountMap.getOrDefault(subscribeDetail.getProductId(), BigDecimal.ZERO));
+            }
+            //获取合同量
+            //可用库存=可用库存-((待采购量-已采购量)-合同量)
+            BigDecimal subtract = subscribeDetailCount.subtract(purchaseCount);
+            BigDecimal subtract1 = subtract.subtract(contractProductBom.getQuantity());
+
+            InOutBo inOutBo = new InOutBo();
+            inOutBo.setProductId(materialId);
+            inOutBo.setQuantity(subtract1);
+            inOutBoList.add(inOutBo);
+        }
+
+        //修改申购明细状态
+        if (ObjectUtil.isNotEmpty(sdIds)) {
+            subscribeDetailService.update(q -> q
+                    .in(SubscribeDetail::getId, sdIds)
+                    .set(SubscribeDetail::getStatus, 88)
+            );
+        }
+
+        //修改可用库存可用库存=可用库存-((待采购量-已采购量)-合同量)
+        productInfoService.editAvailableQuantity(
+                inOutBoList,
+                InOutType.OUT,
+                businessId,
+                ProductAvailableRecordType.SALE_CANCEL, contract.getCompanyId()
+        );
     }
 
     @Override
@@ -1277,7 +1357,6 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract>
         );
     }
 
-
     @Override
     public void delete(Long id) {
         this.removeById(id);

+ 9 - 0
hx-sale/src/main/resources/mapper/contract/ContractProductBomMapper.xml

@@ -1,4 +1,13 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.fjhx.sale.mapper.contract.ContractProductBomMapper">
+    <select id="getContractProductBomQuantitySum" resultType="com.fjhx.sale.entity.contract.po.ContractProductBom">
+        SELECT 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}
+        GROUP BY contract_id,
+                 material_id
+    </select>
 </mapper>