Browse Source

杰生重构 锁处理

home 2 years ago
parent
commit
70fbeb7ac3

+ 24 - 18
hx-service/storage-restructure/src/main/java/com/fjhx/service/contract/impl/ContractDetailsServiceImpl.java

@@ -36,6 +36,8 @@ import java.util.stream.Collectors;
 @Service
 public class ContractDetailsServiceImpl extends ServiceImpl<ContractDetailsMapper, ContractDetails> implements ContractDetailsService {
 
+    private static final Object UPDATE_SHIPMENT_QUANTITY_OBJ = new Object();
+
     // 到货数量超过采购数量百分之几算完成
     private static final BigDecimal PERCENT_QUALIFIED = new BigDecimal("0.95");
 
@@ -46,30 +48,34 @@ public class ContractDetailsServiceImpl extends ServiceImpl<ContractDetailsMappe
     private ContractService contractService;
 
     @Override
-    public synchronized void updateShipmentQuantity(Long waterBatchId) {
+    public void updateShipmentQuantity(Long waterBatchId) {
         WaterBatch waterBatch = waterBatchService.getById(waterBatchId);
-        ContractDetails contractDetails = getById(waterBatch.getContractDetailsId());
-
-        // 出货数量
-        BigDecimal shipmentQuantity = contractDetails.getShipmentQuantity().add(waterBatch.getTagQuantitySum());
-
-        // 更新合同出货数量
-        update(Wrappers.<ContractDetails>lambdaUpdate()
-                .eq(StorageBaseEntity::getId, contractDetails.getId())
-                .set(ContractDetails::getShipmentQuantity, shipmentQuantity)
-        );
-
-        // TODO 出库数量大于百分之95,应供应商出货状态已完成,合同出货状态已完成(目前合同和明细为 1对1 关系,明细完成直接更新合同即可)
-        if (BigDecimalUtil.ge(shipmentQuantity, contractDetails.getQuantity().multiply(PERCENT_QUALIFIED))) {
-            contractService.update(Wrappers.<Contract>lambdaUpdate()
-                    .eq(StorageBaseEntity::getId, contractDetails.getContractId())
-                    .set(Contract::getShipmentStatus, StatusConstant.YES)
+
+        synchronized (UPDATE_SHIPMENT_QUANTITY_OBJ) {
+            ContractDetails contractDetails = getById(waterBatch.getContractDetailsId());
+
+            // 出货数量
+            BigDecimal shipmentQuantity = contractDetails.getShipmentQuantity().add(waterBatch.getTagQuantitySum());
+
+            // 更新合同出货数量
+            update(Wrappers.<ContractDetails>lambdaUpdate()
+                    .eq(StorageBaseEntity::getId, contractDetails.getId())
+                    .set(ContractDetails::getShipmentQuantity, shipmentQuantity)
             );
+
+            // TODO 出库数量大于百分之95,应供应商出货状态已完成,合同出货状态已完成(目前合同和明细为 1对1 关系,明细完成直接更新合同即可)
+            if (BigDecimalUtil.ge(shipmentQuantity, contractDetails.getQuantity().multiply(PERCENT_QUALIFIED))) {
+                contractService.update(Wrappers.<Contract>lambdaUpdate()
+                        .eq(StorageBaseEntity::getId, contractDetails.getContractId())
+                        .set(Contract::getShipmentStatus, StatusConstant.YES)
+                );
+            }
         }
+
     }
 
     @Override
-    public synchronized void updateAfloatAndArrivalQuantity(List<WaterTag> waterTagList) {
+    public void updateAfloatAndArrivalQuantity(List<WaterTag> waterTagList) {
 
         // 如果标签第一次入库,统计出所在合同明细id,值为改变数量
         Map<Long, BigDecimal> map = waterTagList.stream()

+ 84 - 75
hx-service/storage-restructure/src/main/java/com/fjhx/service/contract/impl/ContractServiceImpl.java

@@ -26,7 +26,6 @@ import com.fjhx.service.common.CommonConfigService;
 import com.fjhx.service.contract.ContractDetailsService;
 import com.fjhx.service.contract.ContractService;
 import org.springblade.core.secure.utils.AuthUtil;
-import org.springblade.core.tool.utils.ThreadUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
@@ -45,6 +44,10 @@ import java.util.stream.Collectors;
 @Service
 public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> implements ContractService {
 
+    private static final Object UPDATE_ADJUST_BY_QUALITY_TESTING_ID_OBJ = new Object();
+    private static final Object UPDATE_BACK_AMOUNT_AND_QUANTITY_OBJ = new Object();
+    private static final Object CREATE_OBJ = new Object();
+
     @Autowired
     private CommonConfigService commonConfigService;
 
@@ -57,63 +60,67 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
     }
 
     @Override
-    public synchronized void create(ApplyPurchaseVo applyVo) {
+    public void create(ApplyPurchaseVo applyVo) {
         List<ContractDetails> contractDetailsList = new ArrayList<>();
 
-        // 合同编号前缀
-        String codePrefix = codePrefix();
-
-        // 当天已加最大合同后缀
-        Integer codeSuffix = getCodeSuffix(codePrefix);
-
-        List<ApplyPurchaseDetails> applyDetailsList = applyVo.getApplyDetailsList();
-        for (ApplyPurchaseDetails applyPurchaseDetails : applyDetailsList) {
-            codeSuffix++;
-
-            // 合同编码
-            String code = getCodeSuffixFormat(codePrefix, codeSuffix);
-
-            Contract contract = new Contract();
-            contract.setCode(code);
-            contract.setAmountMoney(BigDecimal.ZERO);
-            contract.setAdjustAmount(BigDecimal.ZERO);
-            contract.setBackAmount(BigDecimal.ZERO);
-            contract.setPayAmount(BigDecimal.ZERO);
-            contract.setHadPayAmount(BigDecimal.ZERO);
-            contract.setTaxValue(commonConfigService.getValueToBigDecimal(ConfigConstant.TAX_RATE));
-            contract.setInvoiceType(0);
-            contract.setStatus(ContractStatusEnum.TO_BE_CONFIRMED.getType());
-            contract.setFlowStatus(FlowStatusEnum.WAIT.getType());
-            contract.setShipmentStatus(StatusConstant.NO);
-            contract.setProcessed(StatusConstant.NO);
-            save(contract);
-
-            Long contractId = contract.getId();
-            Long applyPurchaseId = applyPurchaseDetails.getApplyPurchaseId();
-            String applyPurchaseCode = applyPurchaseDetails.getApplyPurchaseCode();
-            Long applyPurchaseDetailsId = applyPurchaseDetails.getId();
-            Long materialId = applyPurchaseDetails.getMaterialId();
-            BigDecimal quantity = applyPurchaseDetails.getQuantity();
-
-            ContractDetails contractDetails = new ContractDetails();
-            contractDetails.setCode("SI-" + DateUtil.format(new Date(), "yyMMddHHmmss-SSSS"));
-            contractDetails.setContractId(contractId);
-            contractDetails.setContractCode(code);
-            contractDetails.setApplyPurchaseId(applyPurchaseId);
-            contractDetails.setApplyPurchaseCode(applyPurchaseCode);
-            contractDetails.setApplyPurchaseDetailsId(applyPurchaseDetailsId);
-            contractDetails.setMaterialId(materialId);
-            contractDetails.setPrice(BigDecimal.ZERO);
-            contractDetails.setQuantity(quantity);
-            contractDetails.setArrivalQuantity(BigDecimal.ZERO);
-            contractDetails.setShipmentQuantity(BigDecimal.ZERO);
-            contractDetails.setAfloatQuantity(quantity);
-            contractDetails.setAdjustQuantity(BigDecimal.ZERO);
-            contractDetails.setBackQuantity(BigDecimal.ZERO);
-            contractDetails.setCompleteStatus(StatusConstant.NO);
-            contractDetailsList.add(contractDetails);
+        synchronized (CREATE_OBJ) {
+
+            // 合同编号前缀
+            String codePrefix = codePrefix();
+
+            // 当天已加最大合同后缀
+            Integer codeSuffix = getCodeSuffix(codePrefix);
+
+            List<ApplyPurchaseDetails> applyDetailsList = applyVo.getApplyDetailsList();
+            for (ApplyPurchaseDetails applyPurchaseDetails : applyDetailsList) {
+                codeSuffix++;
+
+                // 合同编码
+                String code = getCodeSuffixFormat(codePrefix, codeSuffix);
+
+                Contract contract = new Contract();
+                contract.setCode(code);
+                contract.setAmountMoney(BigDecimal.ZERO);
+                contract.setAdjustAmount(BigDecimal.ZERO);
+                contract.setBackAmount(BigDecimal.ZERO);
+                contract.setPayAmount(BigDecimal.ZERO);
+                contract.setHadPayAmount(BigDecimal.ZERO);
+                contract.setTaxValue(commonConfigService.getValueToBigDecimal(ConfigConstant.TAX_RATE));
+                contract.setInvoiceType(0);
+                contract.setStatus(ContractStatusEnum.TO_BE_CONFIRMED.getType());
+                contract.setFlowStatus(FlowStatusEnum.WAIT.getType());
+                contract.setShipmentStatus(StatusConstant.NO);
+                contract.setProcessed(StatusConstant.NO);
+                save(contract);
+
+                Long contractId = contract.getId();
+                Long applyPurchaseId = applyPurchaseDetails.getApplyPurchaseId();
+                String applyPurchaseCode = applyPurchaseDetails.getApplyPurchaseCode();
+                Long applyPurchaseDetailsId = applyPurchaseDetails.getId();
+                Long materialId = applyPurchaseDetails.getMaterialId();
+                BigDecimal quantity = applyPurchaseDetails.getQuantity();
+
+                ContractDetails contractDetails = new ContractDetails();
+                contractDetails.setCode("SI-" + DateUtil.format(new Date(), "yyMMddHHmmss-SSSS"));
+                contractDetails.setContractId(contractId);
+                contractDetails.setContractCode(code);
+                contractDetails.setApplyPurchaseId(applyPurchaseId);
+                contractDetails.setApplyPurchaseCode(applyPurchaseCode);
+                contractDetails.setApplyPurchaseDetailsId(applyPurchaseDetailsId);
+                contractDetails.setMaterialId(materialId);
+                contractDetails.setPrice(BigDecimal.ZERO);
+                contractDetails.setQuantity(quantity);
+                contractDetails.setArrivalQuantity(BigDecimal.ZERO);
+                contractDetails.setShipmentQuantity(BigDecimal.ZERO);
+                contractDetails.setAfloatQuantity(quantity);
+                contractDetails.setAdjustQuantity(BigDecimal.ZERO);
+                contractDetails.setBackQuantity(BigDecimal.ZERO);
+                contractDetails.setCompleteStatus(StatusConstant.NO);
+                contractDetailsList.add(contractDetails);
+            }
+            contractDetailsService.saveBatch(contractDetailsList);
+
         }
-        contractDetailsService.saveBatch(contractDetailsList);
     }
 
     @Override
@@ -186,34 +193,36 @@ public class ContractServiceImpl extends ServiceImpl<ContractMapper, Contract> i
     }
 
     @Override
-    public synchronized void updateAdjustByQualityTestingId(Long qualityTestingId) {
+    public void updateAdjustByQualityTestingId(Long qualityTestingId) {
 
         Date date = new Date();
         Long userId = AuthUtil.getUserId();
 
-        // 查询修正信息
-        AdjustInfo adjustInfo = baseMapper.getAdjustInfo(qualityTestingId);
-
-        // 更新合同修正金额
-        update(Wrappers.<Contract>lambdaUpdate()
-                .eq(StorageBaseEntity::getId, adjustInfo.getContractId())
-                .set(Contract::getAdjustAmount, adjustInfo.getNewAdjustAmount())
-                .set(StorageBaseEntity::getUpdateTime, date)
-                .set(StorageBaseEntity::getUpdateUser, userId)
-        );
-
-        // 更新合同明细修正数量
-        contractDetailsService.update(Wrappers.<ContractDetails>lambdaUpdate()
-                .eq(StorageBaseEntity::getId, adjustInfo.getContractId())
-                .set(ContractDetails::getAdjustQuantity, adjustInfo.getNewAdjustQuantity())
-                .set(StorageBaseEntity::getUpdateTime, date)
-                .set(StorageBaseEntity::getUpdateUser, userId)
-        );
+        synchronized (UPDATE_ADJUST_BY_QUALITY_TESTING_ID_OBJ) {
+            // 查询修正信息
+            AdjustInfo adjustInfo = baseMapper.getAdjustInfo(qualityTestingId);
+
+            // 更新合同修正金额
+            update(Wrappers.<Contract>lambdaUpdate()
+                    .eq(StorageBaseEntity::getId, adjustInfo.getContractId())
+                    .set(Contract::getAdjustAmount, adjustInfo.getNewAdjustAmount())
+                    .set(StorageBaseEntity::getUpdateTime, date)
+                    .set(StorageBaseEntity::getUpdateUser, userId)
+            );
+
+            // 更新合同明细修正数量
+            contractDetailsService.update(Wrappers.<ContractDetails>lambdaUpdate()
+                    .eq(StorageBaseEntity::getId, adjustInfo.getContractId())
+                    .set(ContractDetails::getAdjustQuantity, adjustInfo.getNewAdjustQuantity())
+                    .set(StorageBaseEntity::getUpdateTime, date)
+                    .set(StorageBaseEntity::getUpdateUser, userId)
+            );
+        }
 
     }
 
     @Override
-    public synchronized void updateBackAmountAndQuantity(List<WaterTag> waterTagList) {
+    public void updateBackAmountAndQuantity(List<WaterTag> waterTagList) {
 
         // 更新合同退货金额
         updateBackAmount(waterTagList);

+ 16 - 7
hx-service/storage-restructure/src/main/java/com/fjhx/service/quality/impl/QualityTestingServiceImpl.java

@@ -49,6 +49,8 @@ import java.util.stream.Collectors;
 @Service
 public class QualityTestingServiceImpl extends ServiceImpl<QualityTestingMapper, QualityTesting> implements QualityTestingService {
 
+    private static final Object EDIT_OBJ = new Object();
+
     @Autowired
     private MaterialService materialService;
 
@@ -81,7 +83,7 @@ public class QualityTestingServiceImpl extends ServiceImpl<QualityTestingMapper,
     }
 
     @Override
-    public synchronized void create(List<WaterTag> waterTagList) {
+    public void create(List<WaterTag> waterTagList) {
 
         // 获取第一次入库标签的批次号
         List<Long> waterBatchIdList = waterTagList.stream()
@@ -148,17 +150,24 @@ public class QualityTestingServiceImpl extends ServiceImpl<QualityTestingMapper,
 
         // 修改批次出货状态
         waterBatchService.updateShipmentStatus(waterBatchIdMaterialIdMap.keySet());
+
     }
 
     @Override
-    public synchronized void edit(int changeNum, Long qualityTestingId) {
-        // 质检单
-        QualityTesting qualityTesting = getById(qualityTestingId);
+    public void edit(int changeNum, Long qualityTestingId) {
 
-        // 已质检卷数
-        qualityTesting.setHadCheckNum(qualityTesting.getHadCheckNum() + changeNum);
+        synchronized (EDIT_OBJ) {
+
+            // 质检单
+            QualityTesting qualityTesting = getById(qualityTestingId);
+
+            // 已质检卷数
+            qualityTesting.setHadCheckNum(qualityTesting.getHadCheckNum() + changeNum);
+
+            updateById(qualityTesting);
+
+        }
 
-        updateById(qualityTesting);
     }
 
     @Override

+ 2 - 2
hx-service/storage-restructure/src/main/java/com/fjhx/service/stock/impl/StockServiceImpl.java

@@ -27,7 +27,7 @@ import java.util.stream.Collectors;
 public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements StockService {
 
     @Override
-    public synchronized void edit(Enum<?> typeEnum, List<WaterTag> waterTagList) {
+    public void edit(Enum<?> typeEnum, List<WaterTag> waterTagList) {
 
         // 标签按物料id分组,统计出改变件数和数量
         Map<Long, Stock> changeStockMap = waterTagList.stream().collect(Collectors.toMap(
@@ -46,7 +46,6 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
                 }
         ));
 
-
         // 获取库存信息
         List<Stock> stockList = listByIds(changeStockMap.keySet());
         // 库存信息
@@ -83,6 +82,7 @@ public class StockServiceImpl extends ServiceImpl<StockMapper, Stock> implements
 
         // 更新库存信息
         saveOrUpdateBatch(stockList);
+
     }
 
 }

+ 2 - 2
hx-service/storage-restructure/src/main/java/com/fjhx/service/supplier/impl/SupplierServiceImpl.java

@@ -61,7 +61,7 @@ public class SupplierServiceImpl extends ServiceImpl<SupplierMapper, Supplier> i
     @Autowired
     private ContractService contractService;
 
-    private static final Object obj = new Object();
+    private static final Object ADD_OBJ = new Object();
 
     @Override
     public Page<Map<String, Object>> getPage(Map<String, String> condition) {
@@ -74,7 +74,7 @@ public class SupplierServiceImpl extends ServiceImpl<SupplierMapper, Supplier> i
 
         // TODO 创建供应商账号
 
-        synchronized (obj) {
+        synchronized (ADD_OBJ) {
             String supplierCode = getSupplierCode();
             supplierVo.setCode(supplierCode);
             save(supplierVo);

+ 27 - 21
hx-service/storage-restructure/src/main/java/com/fjhx/service/water/impl/WaterBatchServiceImpl.java

@@ -35,6 +35,8 @@ import java.util.Set;
 @Service
 public class WaterBatchServiceImpl extends ServiceImpl<WaterBatchMapper, WaterBatch> implements WaterBatchService {
 
+    private static final Object ADD_OBJ = new Object();
+
     @Autowired
     private WaterTagService waterTagService;
 
@@ -85,30 +87,34 @@ public class WaterBatchServiceImpl extends ServiceImpl<WaterBatchMapper, WaterBa
     }
 
     @Override
-    public synchronized void add(WaterBatchVo waterBatchVo) {
+    public void add(WaterBatchVo waterBatchVo) {
         Long contractDetailsId = waterBatchVo.getContractDetailsId();
         Assert.notEmpty(contractDetailsId, "合同明细id不能为空");
 
-        ContractDetails contractDetails = contractDetailsService.getById(contractDetailsId);
-        Assert.notEmpty(contractDetails, "没有找到合同明细");
-
-        waterBatchVo.setMaterialId(contractDetails.getMaterialId());
-        waterBatchVo.setSupplierId(contractDetails.getSupplierId());
-        waterBatchVo.setPrice(contractDetails.getPrice());
-        waterBatchVo.setApplyPurchaseId(contractDetails.getApplyPurchaseId());
-        waterBatchVo.setApplyPurchaseDetailsId(contractDetails.getApplyPurchaseDetailsId());
-        waterBatchVo.setContractId(contractDetails.getContractId());
-        waterBatchVo.setContractCode(contractDetails.getContractCode());
-        waterBatchVo.setContractDetailsId(contractDetails.getId());
-        waterBatchVo.setContractDetailsCode(contractDetails.getCode());
-        waterBatchVo.setTagCount(0);
-        waterBatchVo.setTagQuantitySum(BigDecimal.ZERO);
-        waterBatchVo.setShipmentStatus(StatusConstant.NO);
-
-        String code = getCode(contractDetails.getContractCode());
-        waterBatchVo.setCode(code);
-
-        save(waterBatchVo);
+        synchronized (ADD_OBJ) {
+
+            ContractDetails contractDetails = contractDetailsService.getById(contractDetailsId);
+            Assert.notEmpty(contractDetails, "没有找到合同明细");
+
+            waterBatchVo.setMaterialId(contractDetails.getMaterialId());
+            waterBatchVo.setSupplierId(contractDetails.getSupplierId());
+            waterBatchVo.setPrice(contractDetails.getPrice());
+            waterBatchVo.setApplyPurchaseId(contractDetails.getApplyPurchaseId());
+            waterBatchVo.setApplyPurchaseDetailsId(contractDetails.getApplyPurchaseDetailsId());
+            waterBatchVo.setContractId(contractDetails.getContractId());
+            waterBatchVo.setContractCode(contractDetails.getContractCode());
+            waterBatchVo.setContractDetailsId(contractDetails.getId());
+            waterBatchVo.setContractDetailsCode(contractDetails.getCode());
+            waterBatchVo.setTagCount(0);
+            waterBatchVo.setTagQuantitySum(BigDecimal.ZERO);
+            waterBatchVo.setShipmentStatus(StatusConstant.NO);
+
+            String code = getCode(contractDetails.getContractCode());
+            waterBatchVo.setCode(code);
+
+            save(waterBatchVo);
+
+        }
     }
 
     @Override

+ 20 - 13
hx-service/storage-restructure/src/main/java/com/fjhx/service/water/impl/WaterServiceImpl.java

@@ -37,6 +37,8 @@ import java.util.List;
 @Service
 public class WaterServiceImpl extends ServiceImpl<WaterMapper, Water> implements WaterService {
 
+    private static final Object ADD_OBJ = new Object();
+
     @Autowired
     private WaterDetailService waterDetailService;
 
@@ -90,25 +92,30 @@ public class WaterServiceImpl extends ServiceImpl<WaterMapper, Water> implements
         // 添加流水明细
         waterDetailService.add(waterVo, waterTagList);
 
-        // 更新库存
-        stockService.edit(typeEnum, waterTagList);
 
-        // 修改标签在库信息
-        waterTagService.editInHouse(typeEnum, waterTagList, waterVo.getStockHouseId());
+        synchronized (ADD_OBJ) {
+
+            // 更新库存
+            stockService.edit(typeEnum, waterTagList);
+
+            // 修改标签在库信息
+            waterTagService.editInHouse(typeEnum, waterTagList, waterVo.getStockHouseId());
+
+            // 如果是入库
+            if (typeEnum instanceof InTypeEnum) {
 
-        // 如果是入库
-        if (typeEnum instanceof InTypeEnum) {
+                // 如果标签不本场入库状态,则更新合同到货数量和在途数量
+                contractDetailsService.updateAfloatAndArrivalQuantity(waterTagList);
 
-            // 如果标签不是本场入库状态,则更新合同到货数量和在途数量
-            contractDetailsService.updateAfloatAndArrivalQuantity(waterTagList);
+                // 生成质检单
+                qualityTestingService.create(waterTagList);
 
-            // 生成质检单
-            qualityTestingService.create(waterTagList);
+            } else if (typeEnum.equals(OutTypeEnum.RETURN_ISSUE)) {
 
-        } else if (typeEnum.equals(OutTypeEnum.RETURN_ISSUE)) {
+                // 退货出库新增合同明细退货数量与合同退货金额
+                contractService.updateBackAmountAndQuantity(waterTagList);
 
-            // 退货出库新增合同明细退货数量与合同退货金额
-            contractService.updateBackAmountAndQuantity(waterTagList);
+            }
 
         }
 

+ 15 - 17
hx-service/storage-restructure/src/main/java/com/fjhx/service/water/impl/WaterTagServiceImpl.java

@@ -85,25 +85,24 @@ public class WaterTagServiceImpl extends ServiceImpl<WaterTagMapper, WaterTag> i
 
         List<WaterTag> waterTagList = new ArrayList<>();
 
-        WaterBatch waterBatch;
         synchronized (BATCH_COUNT_LOCK_OBJECT) {
             // 获取批次详情
-            waterBatch = waterBatchService.getById(waterBatchId);
+            WaterBatch waterBatch = waterBatchService.getById(waterBatchId);
             Assert.notEmpty(waterBatch, "没有找到批次信息");
             // 更新批次标签总个数以及标签总米数
             waterBatchService.editTagCountAndQuantitySum(waterBatch, num, quantity.multiply(BigDecimal.valueOf(num)));
-        }
 
-        // 添加标签信息
-        for (int i = 1; i <= num; i++) {
-            waterTagList.add(createWaterTag(waterBatch, quantity, number + i));
-        }
+            // 添加标签信息
+            for (int i = 1; i <= num; i++) {
+                waterTagList.add(createWaterTag(waterBatch, quantity, number + i));
+            }
 
-        // 保存标签信息
-        saveBatch(waterTagList);
+            // 保存标签信息
+            saveBatch(waterTagList);
 
-        // 修改合同处理状态为已处理,后续操作不再允许删除合同
-        updateContractProcessed(waterBatch);
+            // 修改合同处理状态为已处理,后续操作不再允许删除合同
+            updateContractProcessed(waterBatch);
+        }
 
     }
 
@@ -139,14 +138,13 @@ public class WaterTagServiceImpl extends ServiceImpl<WaterTagMapper, WaterTag> i
 
             // 更新批次标签总个数以及标签总米数
             waterBatchService.editTagCountAndQuantitySum(waterBatch, quantityList.size(), tagQuantitySum);
-        }
 
-        // 保存标签信息
-        saveBatch(waterTagList);
-
-        // 修改合同处理状态为已处理,后续操作不再允许删除合同
-        updateContractProcessed(waterBatch);
+            // 保存标签信息
+            saveBatch(waterTagList);
 
+            // 修改合同处理状态为已处理,后续操作不再允许删除合同
+            updateContractProcessed(waterBatch);
+        }
     }
 
     @Override

+ 1 - 2
hx-service/storage/src/main/java/com/fjhx/stock/mapper/StockWaterMapper.xml

@@ -262,8 +262,7 @@
                asot.ApplyReason
         FROM apply_stockoutdetail asod
                  LEFT JOIN apply_stockouttag asot ON asod.ID = asot.LinkBackDetailId
-        WHERE asod.BalanceAcount = 0
-          AND asod.BackMaterialProgress = 4
+        WHERE asod.BackMaterialProgress = 4
           AND asod.balancePurBillNo = #{balancePurBillNo}
     </select>