Просмотр исходного кода

用户缓存导致多次变更问题处理

yzc 1 год назад
Родитель
Сommit
0702aad470

+ 8 - 0
hx-sale/src/main/java/com/fjhx/sale/flow/ContractUpdateFlow.java

@@ -15,6 +15,7 @@ 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;
 import com.fjhx.sale.entity.sample.po.Sample;
 import com.fjhx.sale.entity.sample.po.SampleProduct;
 import com.fjhx.sale.entity.sample.po.SampleProject;
@@ -78,6 +79,13 @@ public class ContractUpdateFlow extends FlowDelegate {
 
         ContractDto contract = submitData.toJavaObject(ContractDto.class);
 
+        //判断合同是否在变更中,防止用户缓存导致重复变更
+        Contract byId = contractService.getById(contract.getId());
+        Assert.notEmpty(byId, "查询不到合同信息");
+        if (byId.getStatus().equals(FlowStatusEnum1.UPDATE_LOADING.getKey())) {
+            throw new ServiceException("合同正在变更中,禁止重复变更!");
+        }
+
         // 原合同id不能为空
         Long oldContractId = contract.getOldContractId();
         if (oldContractId == null) {

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

@@ -369,10 +369,10 @@ public class EhsdPurchaseFlow extends FlowDelegate {
      */
     @Override
     public void reject(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
-        sampleService.update(q -> q
-                .eq(Sample::getId, businessId)
-                .set(Sample::getStatus, 20)//20为驳回
-                .set(Sample::getUpdateTime, new Date())
+        purchaseService.update(q -> q
+                .eq(EhsdPurchase::getId, businessId)
+                .set(EhsdPurchase::getStatus, 20)//20为驳回
+                .set(BasePo::getUpdateTime, new Date())
                 .set(BasePo::getUpdateUser, SecurityUtils.getUserId())
         );
     }

+ 9 - 0
hx-sale/src/main/java/com/fjhx/sale/flow/SampleUpdateFlow.java

@@ -7,8 +7,10 @@ import com.baomidou.mybatisplus.core.toolkit.*;
 import com.fjhx.area.utils.CustomizeAreaUtil;
 import com.fjhx.common.constant.SourceConstant;
 import com.fjhx.common.enums.FlowStatusEnum1;
+import com.fjhx.common.utils.Assert;
 import com.fjhx.file.utils.ObsFileUtil;
 import com.fjhx.flow.core.FlowDelegate;
+import com.fjhx.sale.entity.contract.po.Contract;
 import com.fjhx.sale.entity.sample.dto.SampleDto;
 import com.fjhx.sale.entity.sample.po.Sample;
 import com.fjhx.sale.entity.sample.po.SampleProduct;
@@ -67,6 +69,13 @@ public class SampleUpdateFlow extends FlowDelegate {
 
         SampleDto newSample = submitData.toJavaObject(SampleDto.class);
 
+        //判断合同是否在变更中,防止用户缓存导致重复变更
+        Sample byId = sampleService.getById(newSample.getId());
+        Assert.notEmpty(byId, "查询不到样品单信息");
+        if (byId.getStatus().equals(FlowStatusEnum1.UPDATE_LOADING.getKey())) {
+            throw new ServiceException("样品单正在变更中,禁止重复变更!");
+        }
+
         // 原样品单id不能为空
         Long oldSampleId = newSample.getOldSampleId();
         if (oldSampleId == null) {