Bläddra i källkod

采购合同作废后,增加交接单数据回滚

caozj 2 år sedan
förälder
incheckning
e7736e6a66

+ 26 - 3
hx-sale/src/main/java/com/fjhx/sale/service/purchase/impl/SalePurchaseServiceImpl.java

@@ -6,6 +6,7 @@ import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.JSONWriter;
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
@@ -97,22 +98,44 @@ public class SalePurchaseServiceImpl extends ServiceImpl<PurchaseMapper, Purchas
      * @param purchaseDto
      */
     @Override
+    @DSTransactional
     public void cancellation(PurchaseDto purchaseDto) {
         if(purchaseDto.getPurchaseStatus()==PurchaseStatusEnum.CENCELLATION.getKey()){//如果采购合同=作废//归还交接单的数量
             //查询出当前采购的明细
             Purchase purchase = purchaseService.getById(purchaseDto.getId());
+            List<ContractProduct> upContractProductList = new ArrayList<>();
+            List<SampleProduct> upSampleProductList = new ArrayList<>();
             if(ObjectUtils.isNotEmpty(purchase)){
                 List<PurchaseDetail> purchaseDetailList = purchaseDetailService.list(Wrappers.<PurchaseDetail>query().lambda().eq(PurchaseDetail::getPurchaseId,purchase.getId()));
                 for(PurchaseDetail p:purchaseDetailList){
                     if(p.getDataResource()==1){//业务来源 0自建  1外销合同采购 2:样品单
-                        //查询出外销合同
-                        ContractProduct contract = contractProductService.getById(p.getDataResourceId());
+                        //查询出外销合同产品
+                        ContractProduct contractProduct = contractProductService.getById(p.getDataResourceId());
+                        if(ObjectUtils.isEmpty(contractProduct)){
+                            throw new ServiceException("作废合同失败,当前采购产品数据有误");
+                        }
+                        BigDecimal sumExpendQuantity = contractProduct.getExpendQuantity().add(p.getCount());
+                        contractProduct.setExpendQuantity(sumExpendQuantity);
+                        upContractProductList.add(contractProduct);
                     }
                     if(p.getDataResource()==2){
-
+                        //查询出样品单产品
+                        SampleProduct sampleProduct = sampleProductService.getById(p.getDataResourceId());
+                        if(ObjectUtils.isEmpty(sampleProduct)){
+                            throw new ServiceException("作废合同失败,当前采购产品数据有误");
+                        }
+                        BigDecimal sumExpendQuantity = sampleProduct.getExpendQuantity().add(p.getCount());
+                        sampleProduct.setExpendQuantity(sumExpendQuantity);
+                        upSampleProductList.add(sampleProduct);
                     }
                 }
             }
+            if(CollectionUtils.isNotEmpty(upContractProductList)){
+                contractProductService.updateBatchById(upContractProductList);
+            }
+            if(CollectionUtils.isNotEmpty(upSampleProductList)){
+                sampleProductService.updateBatchById(upSampleProductList);
+            }
         }
         this.updateById(purchaseDto);
     }