Przeglądaj źródła

采购问题处理

yzc 1 rok temu
rodzic
commit
abd0519cc0

+ 1 - 3
hx-purchase/src/main/java/com/fjhx/purchase/service/purchase/impl/PurchaseDetailServiceImpl.java

@@ -1,10 +1,8 @@
 package com.fjhx.purchase.service.purchase.impl;
 
 import cn.hutool.core.bean.BeanUtil;
-import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailDto;
 import com.fjhx.purchase.entity.purchase.dto.PurchaseDetailSelectDto;
 import com.fjhx.purchase.entity.purchase.po.PurchaseDetail;
@@ -87,7 +85,7 @@ public class PurchaseDetailServiceImpl extends ServiceImpl<PurchaseDetailMapper,
     @Override
     public List<PurchaseDetailVo> getPurchaseCountListBySubscribeDetailIds(List<Long> subscribeDetailIds) {
         IWrapper<PurchaseDetail> wrapper = getWrapper();
-        wrapper.ne("p.status", "20");//过滤掉驳回数据
+        wrapper.in("p.status", 10, 30, 99);
         wrapper.in(PurchaseDetail::getSubscribeDetailId, subscribeDetailIds);
         return baseMapper.getPurchaseDetailList(wrapper);
     }

+ 1 - 1
hx-purchase/src/main/java/com/fjhx/purchase/service/subscribe/impl/SubscribeDetailServiceImpl.java

@@ -98,7 +98,7 @@ public class SubscribeDetailServiceImpl extends ServiceImpl<SubscribeDetailMappe
 		List<Long> productIds = productList.stream().map(ProductInfoVo::getId).collect(Collectors.toList());
 		wrapper.in("t2", SubscribeDetail::getProductId, productIds);
 
-		// 待采购过滤掉指定状态 例如不要 99 作废
+		// 待采购过滤掉指定状态 例如不要 88 作废
 		if (StrUtil.isNotBlank(dto.getNeStatus())) {
 			wrapper.notIn("t2", SubscribeDetail::getStatus, dto.getNeStatus().split(","));
 		}

+ 7 - 55
hx-sale/src/main/java/com/fjhx/sale/flow/EhsdPurchaseFlow.java

@@ -20,8 +20,6 @@ import com.fjhx.item.enums.ProductAvailableRecordType;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseDataResourceEnum;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
-import com.fjhx.purchase.entity.subscribe.enums.SubscribeDetailStatusEnum;
-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.po.Contract;
@@ -50,8 +48,10 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Objects;
 
 /**
  * EHSD采购流程
@@ -232,7 +232,7 @@ public class EhsdPurchaseFlow extends FlowDelegate {
         purchaseService.updateById(purchase);
 
         //修改申购明细状态
-        updateSubscribeStatus(businessId);
+        purchaseService.updateSubscribeStatus(businessId);
 
         List<InOutBo> inOutBoList = new ArrayList<>();
         for (EhsdPurchaseProduct purchaseProduct : purchaseProductList) {
@@ -306,59 +306,11 @@ public class EhsdPurchaseFlow extends FlowDelegate {
      */
     @Override
     public void cancellation(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
-        EhsdPurchase purchase = purchaseService.getById(businessId);
-
         super.cancellation(flowId, businessId, flowStatus);
-        purchaseService.update(q -> q
-                .eq(EhsdPurchase::getId, businessId)
-                .set(EhsdPurchase::getStatus, FlowStatusEnum1.CANCELLATION.getKey())
-                .set(BasePo::getUpdateTime, new Date())
-                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
-        );
 
-        //修改可用库存
-        List<InOutBo> inOutBoList = new ArrayList<>();
-        List<EhsdPurchaseProduct> purchaseProductList = purchaseProductService.list(q -> q.eq(EhsdPurchaseProduct::getPurchaseId, businessId));
-        for (EhsdPurchaseProduct purchaseProduct : purchaseProductList) {
-            //如果数据来源是申购 操作可用库存(可用库存 = 当前可用库存 + 采购明细数量)
-            if (Objects.equals(purchaseProduct.getDataResource(), PurchaseDataResourceEnum.DATA_RESOURCE_0)) {
-                InOutBo inOutBo = new InOutBo();
-                inOutBo.setProductId(purchaseProduct.getProductId());
-                inOutBo.setQuantity(purchaseProduct.getQuantity());
-                inOutBoList.add(inOutBo);
-            }
-        }
-        productInfoService.editAvailableQuantity(inOutBoList, InOutType.OUT, businessId, ProductAvailableRecordType.PURCHASE_CANCEL, purchase.getCompanyId());
-
-        //修改申购明细状态
-        updateSubscribeStatus(businessId);
+        purchaseService.cancellation(businessId);
     }
 
 
-    /**
-     * 修改申购明细状态
-     */
-    private void updateSubscribeStatus(Long businessId) {
-        //修改申购明细状态
-        List<Long> subscribeDetailIds = purchaseProductService.listObject(EhsdPurchaseProduct::getSubscribeDetailId, q -> q
-                .eq(EhsdPurchaseProduct::getPurchaseId, businessId)
-        );
-        //获取已采购数量
-        List<SubscribeDetail> purchaseCountByIds = subscribeDetailMapper.getPurchaseCountByIds(subscribeDetailIds);
-        Map<Long, BigDecimal> purchaseCountMap = purchaseCountByIds.stream().collect(Collectors.toMap(SubscribeDetail::getId, SubscribeDetail::getCount));
-        //修改状态
-        List<SubscribeDetail> subscribeDetails = subscribeDetailService.listByIds(subscribeDetailIds);
-        for (SubscribeDetail subscribeDetail : subscribeDetails) {
-            //获取已采购数并计算状态
-            BigDecimal count = purchaseCountMap.getOrDefault(subscribeDetail.getId(), BigDecimal.ZERO);
-            if (count.compareTo(subscribeDetail.getCount()) >= 0) {
-                //修改为已采购
-                subscribeDetail.setStatus(SubscribeDetailStatusEnum.PURCHASED.getKey());
-            } else {
-                //修改为部分采购
-                subscribeDetail.setStatus(SubscribeDetailStatusEnum.LITT_PAID_AMOUNT.getKey());
-            }
-        }
-        subscribeDetailService.updateBatchById(subscribeDetails);
-    }
+
 }

+ 2 - 0
hx-sale/src/main/java/com/fjhx/sale/service/purchase/EhsdPurchaseService.java

@@ -57,6 +57,8 @@ public interface EhsdPurchaseService extends BaseService<EhsdPurchase> {
      */
     void cancellation(Long id);
 
+    void updateSubscribeStatus(Long businessId);
+
     /**
      * 根据供应商查询无发票的采购合同
      */

+ 62 - 34
hx-sale/src/main/java/com/fjhx/sale/service/purchase/impl/EhsdPurchaseServiceImpl.java

@@ -13,14 +13,17 @@ import com.fjhx.account.entity.account.po.AccountManagement;
 import com.fjhx.account.service.account.AccountManagementService;
 import com.fjhx.area.utils.CustomizeAreaUtil;
 import com.fjhx.common.constant.SourceConstant;
+import com.fjhx.common.entity.InOutBo;
 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.service.corporation.CorporationService;
 import com.fjhx.common.service.documentary.GetDocumentaryBusinessTemplate;
 import com.fjhx.common.utils.Assert;
 import com.fjhx.flow.entity.flow.po.FlowExample;
 import com.fjhx.flow.service.flow.FlowExampleService;
+import com.fjhx.item.enums.ProductAvailableRecordType;
 import com.fjhx.item.service.product.ProductInfoService;
 import com.fjhx.purchase.entity.invoice.po.InvoiceDetails;
 import com.fjhx.purchase.entity.invoice.vo.InvoiceDetailsVo;
@@ -29,9 +32,12 @@ import com.fjhx.purchase.entity.pay.po.PayDetail;
 import com.fjhx.purchase.entity.pay.vo.PayDetailVo;
 import com.fjhx.purchase.entity.pay.vo.PayVo;
 import com.fjhx.purchase.entity.purchase.bo.PurchaseDocumentaryBo;
+import com.fjhx.purchase.entity.purchase.enums.PurchaseDataResourceEnum;
 import com.fjhx.purchase.entity.purchase.enums.PurchaseStatusEnum;
+import com.fjhx.purchase.entity.subscribe.enums.SubscribeDetailStatusEnum;
 import com.fjhx.purchase.entity.subscribe.po.Subscribe;
 import com.fjhx.purchase.entity.subscribe.po.SubscribeDetail;
+import com.fjhx.purchase.mapper.subscribe.SubscribeDetailMapper;
 import com.fjhx.purchase.service.invoice.InvoiceDetailsService;
 import com.fjhx.purchase.service.pay.PayDetailService;
 import com.fjhx.purchase.service.pay.PayService;
@@ -39,7 +45,6 @@ import com.fjhx.purchase.service.subscribe.SubscribeDetailService;
 import com.fjhx.purchase.service.subscribe.SubscribeService;
 import com.fjhx.sale.entity.contract.dto.ContractSelectDto;
 import com.fjhx.sale.entity.contract.po.Contract;
-import com.fjhx.sale.entity.contract.po.ContractProduct;
 import com.fjhx.sale.entity.contract.vo.ContractBudgetVo;
 import com.fjhx.sale.entity.pack.po.PackDetail;
 import com.fjhx.sale.entity.pack.po.PackDetailProduct;
@@ -53,14 +58,11 @@ import com.fjhx.sale.entity.purchase.po.EhsdPurchaseProject;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseDocumentaryVo;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseProductVo;
 import com.fjhx.sale.entity.purchase.vo.EhsdPurchaseVo;
-import com.fjhx.sale.entity.sample.po.SampleProduct;
 import com.fjhx.sale.mapper.purchase.EhsdPurchaseMapper;
-import com.fjhx.sale.service.contract.ContractProductService;
 import com.fjhx.sale.service.contract.ContractService;
 import com.fjhx.sale.service.pack.PackDetailProductService;
 import com.fjhx.sale.service.pack.PackDetailService;
 import com.fjhx.sale.service.purchase.*;
-import com.fjhx.sale.service.sample.SampleProductService;
 import com.fjhx.supply.entity.supplier.po.SupplierInfo;
 import com.fjhx.supply.entity.supplier.po.SupplierPrice;
 import com.fjhx.supply.entity.supplier.vo.SupplierPriceVo;
@@ -127,10 +129,6 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
     @Autowired
     private InvoiceDetailsService invoiceDetailsService;
     @Autowired
-    private ContractProductService contractProductService;
-    @Autowired
-    private SampleProductService sampleProductService;
-    @Autowired
     private SubscribeDetailService subscribeDetailService;
     @Autowired
     private AccountManagementService accountManagementService;
@@ -140,6 +138,10 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
     private ContractService contractService;
     @Autowired
     private SubscribeService subscribeService;
+    @Autowired
+    private EhsdPurchaseProductService purchaseProductService;
+    @Autowired
+    private SubscribeDetailMapper subscribeDetailMapper;
 
     /**
      * 分页
@@ -482,37 +484,63 @@ public class EhsdPurchaseServiceImpl extends ServiceImpl<EhsdPurchaseMapper, Ehs
         if (ObjectUtil.isNotEmpty(purchase) && purchase.getPayStatus() != 0) {
             throw new ServiceException("采购合同已付款,禁止作废");
         }
-        purchase.setStatus(FlowStatusEnum1.CANCELLATION.getKey());
-        this.updateById(purchase);
-        List<EhsdPurchaseProduct> list = ehsdPurchaseProductService.list(q -> q.eq(EhsdPurchaseProduct::getPurchaseId, id));
-        if (ObjectUtils.isEmpty(list)) {
-            return;
+
+        this.update(q -> q
+                .eq(EhsdPurchase::getId, id)
+                .set(EhsdPurchase::getStatus, FlowStatusEnum1.CANCELLATION.getKey())
+                .set(BasePo::getUpdateTime, new Date())
+                .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
+        );
+
+        //修改可用库存
+        List<InOutBo> inOutBoList = new ArrayList<>();
+        List<EhsdPurchaseProduct> purchaseProductList = purchaseProductService.list(q -> q.eq(EhsdPurchaseProduct::getPurchaseId, id));
+        for (EhsdPurchaseProduct purchaseProduct : purchaseProductList) {
+            //如果数据来源是申购 操作可用库存(可用库存 = 当前可用库存 + 采购明细数量)
+            if (Objects.equals(purchaseProduct.getDataResource(), PurchaseDataResourceEnum.DATA_RESOURCE_0)) {
+                InOutBo inOutBo = new InOutBo();
+                inOutBo.setProductId(purchaseProduct.getProductId());
+                inOutBo.setQuantity(purchaseProduct.getQuantity());
+                inOutBoList.add(inOutBo);
+            }
         }
-        //回滚待采购数量
-        for (EhsdPurchaseProduct ehsdPurchaseProduct : list) {
-            Long dataResourceId = ehsdPurchaseProduct.getDataResourceId();
-            BigDecimal purchaseQuantity = ehsdPurchaseProduct.getQuantity();
-
-            //合同来源
-            if (ehsdPurchaseProduct.getDataResource() == 1) {
-                contractProductService.update(q -> q
-                        .eq(ContractProduct::getId, dataResourceId)
-                        .setSql("expend_quantity = expend_quantity + " + purchaseQuantity)
-                        .set(BasePo::getUpdateTime, new Date())
-                        .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
-                );
+        productInfoService.editAvailableQuantity(inOutBoList, InOutType.OUT, id, ProductAvailableRecordType.PURCHASE_CANCEL, purchase.getCompanyId());
+
+        //修改申购明细状态
+        updateSubscribeStatus(id);
+    }
+
+    /**
+     * 修改申购明细状态
+     */
+    @Override
+    public void updateSubscribeStatus(Long businessId) {
+        //修改申购明细状态
+        List<Long> subscribeDetailIds = purchaseProductService.listObject(EhsdPurchaseProduct::getSubscribeDetailId, q -> q
+                .eq(EhsdPurchaseProduct::getPurchaseId, businessId)
+        );
+        //获取已采购数量
+        List<SubscribeDetail> purchaseCountByIds = subscribeDetailMapper.getPurchaseCountByIds(subscribeDetailIds);
+        Map<Long, BigDecimal> purchaseCountMap = purchaseCountByIds.stream().collect(Collectors.toMap(SubscribeDetail::getId, SubscribeDetail::getCount));
+        //修改状态
+        List<SubscribeDetail> subscribeDetails = subscribeDetailService.listByIds(subscribeDetailIds);
+        for (SubscribeDetail subscribeDetail : subscribeDetails) {
+            //获取已采购数并计算状态
+            BigDecimal count = purchaseCountMap.getOrDefault(subscribeDetail.getId(), BigDecimal.ZERO);
+            if (count.compareTo(subscribeDetail.getCount()) >= 0) {
+                //修改为已采购
+                subscribeDetail.setStatus(SubscribeDetailStatusEnum.PURCHASED.getKey());
+            } else {
+                //修改为部分采购
+                subscribeDetail.setStatus(SubscribeDetailStatusEnum.LITT_PAID_AMOUNT.getKey());
             }
 
-            //样品单来源
-            if (ehsdPurchaseProduct.getDataResource() == 1) {
-                sampleProductService.update(q -> q
-                        .eq(SampleProduct::getId, dataResourceId)
-                        .setSql("expend_quantity = expend_quantity + " + purchaseQuantity)
-                        .set(BasePo::getUpdateTime, new Date())
-                        .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
-                );
+            if (count.compareTo(BigDecimal.ZERO) == 0) {
+                //修改为待采购
+                subscribeDetail.setStatus(SubscribeDetailStatusEnum.PAID_AMOUNT.getKey());
             }
         }
+        subscribeDetailService.updateBatchById(subscribeDetails);
     }
 
     /**