|
@@ -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);
|