|
@@ -2,7 +2,6 @@ package com.fjhx.sale.flow;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
-import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
|
|
|
import com.fjhx.area.utils.CustomizeAreaUtil;
|
|
|
import com.fjhx.common.enums.CodingRuleEnum;
|
|
@@ -33,8 +32,6 @@ import org.springframework.stereotype.Component;
|
|
|
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
-import java.util.regex.Matcher;
|
|
|
-import java.util.regex.Pattern;
|
|
|
|
|
|
/**
|
|
|
* 外销合同流程
|
|
@@ -78,6 +75,10 @@ public class ContractFlow extends FlowDelegate {
|
|
|
if (StringUtils.isEmpty(contract.getCurrency())) {
|
|
|
throw new ServiceException("币种不能为空");
|
|
|
}
|
|
|
+
|
|
|
+ //赋值合同号
|
|
|
+ contract.setCode(codingRuleService.createCode(CodingRuleEnum.CONTRACT.getKey(), contract.getBuyCorporationId()));
|
|
|
+
|
|
|
// 保存合同产品
|
|
|
List<ContractProduct> contractProductList = contract.getContractProductList();
|
|
|
|
|
@@ -126,75 +127,101 @@ public class ContractFlow extends FlowDelegate {
|
|
|
}
|
|
|
|
|
|
public Long start(ContractDto contract) {
|
|
|
+ ContractDto contractDto = commStart(contract, 0);
|
|
|
+
|
|
|
+ return contractDto.getId();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 开始公共代码抽取
|
|
|
+ *
|
|
|
+ * @param opType 操作类型 0直接发起 1重新发起
|
|
|
+ */
|
|
|
+ private ContractDto commStart(ContractDto contract, Integer opType) {
|
|
|
|
|
|
- long contractId = IdWorker.getId();
|
|
|
+// long contractId = IdWorker.getId();
|
|
|
|
|
|
// 赋值城市省份信息
|
|
|
CustomizeAreaUtil.setAreaId(contract);
|
|
|
|
|
|
- contract.setId(contractId);
|
|
|
-
|
|
|
- //如果是变更 用用来合同号加后缀
|
|
|
- if (ObjectUtils.isNotEmpty(contract.getOldContractId())) {
|
|
|
- Contract oldContract = contractService.getById(contract.getOldContractId());
|
|
|
- Assert.notEmpty(oldContract, "查询不到原合同信息");
|
|
|
- String code = oldContract.getCode();
|
|
|
- Matcher matcher = Pattern.compile(".*\\((.*?)\\)$").matcher(code);
|
|
|
- int index = 2;
|
|
|
- if (matcher.find()) {
|
|
|
- index = (Integer.parseInt(matcher.group(1)) + 1);
|
|
|
- code = code.substring(0, code.lastIndexOf("("));
|
|
|
- }
|
|
|
- contract.setCode(code + "(" + index + ")");
|
|
|
- } else {
|
|
|
- contract.setCode(codingRuleService.createCode(CodingRuleEnum.CONTRACT.getKey(), contract.getBuyCorporationId()));
|
|
|
- }
|
|
|
+// contract.setId(contractId);
|
|
|
+
|
|
|
contract.setUserName(SecurityUtils.getUsername());
|
|
|
contract.setStatus(FlowStatusEnum1.UNDER_REVIEW.getKey());
|
|
|
contract.setBuyCityId(contract.getCityId());
|
|
|
contract.setBuyCountryId(contract.getCountryId());
|
|
|
contract.setBuyProvinceId(contract.getProvinceId());
|
|
|
contract.setRate(ExchangeRateUtil.getCnyToCodeRate(contract.getCurrency()));
|
|
|
- contractService.save(contract);
|
|
|
+ contractService.saveOrUpdate(contract);
|
|
|
|
|
|
// 保存合同产品
|
|
|
List<ContractProduct> contractProductList = contract.getContractProductList();
|
|
|
if (CollectionUtils.isNotEmpty(contractProductList)) {
|
|
|
+
|
|
|
+ if (opType == 1) {
|
|
|
+ //先删除被删除的产品
|
|
|
+ contractProductService.editLinked(contractProductList, ContractProduct::getContractId, contract.getId());
|
|
|
+ }
|
|
|
for (ContractProduct c : contractProductList) {
|
|
|
- c.setId(IdWorker.getId());
|
|
|
- c.setContractId(contractId);
|
|
|
- ObsFileUtil.saveFile(c.getFileList(), c.getId());
|
|
|
+// c.setId(IdWorker.getId());
|
|
|
+ c.setContractId(contract.getId());
|
|
|
+ if (opType == 1) {
|
|
|
+ ObsFileUtil.editFile(c.getFileList(), c.getId());
|
|
|
+ } else {
|
|
|
+ ObsFileUtil.saveFile(c.getFileList(), c.getId());
|
|
|
+ }
|
|
|
}
|
|
|
- contractProductService.saveBatch(contractProductList);
|
|
|
+ contractProductService.saveOrUpdateBatch(contractProductList);
|
|
|
}
|
|
|
|
|
|
// 保存收费项目
|
|
|
List<ContractProject> contractProjectList = contract.getContractProjectList();
|
|
|
if (CollectionUtils.isNotEmpty(contractProjectList)) {
|
|
|
+ if (opType == 1) {
|
|
|
+ //先删除被删除的产品
|
|
|
+ contractProjectService.editLinked(contractProjectList, ContractProject::getContractId, contract.getId());
|
|
|
+ }
|
|
|
+
|
|
|
for (ContractProject c : contractProjectList) {
|
|
|
- c.setId(IdWorker.getId());
|
|
|
- c.setContractId(contractId);
|
|
|
+// c.setId(IdWorker.getId());
|
|
|
+ c.setContractId(contract.getId());
|
|
|
}
|
|
|
- contractProjectService.saveBatch(contractProjectList);
|
|
|
+ contractProjectService.saveOrUpdateBatch(contractProjectList);
|
|
|
}
|
|
|
|
|
|
// 保存自定义出货
|
|
|
List<ContractShipment> contractShipmentList = contract.getContractShipmentList();
|
|
|
if (CollectionUtils.isNotEmpty(contractShipmentList)) {
|
|
|
+ if (opType == 1) {
|
|
|
+ //先删除被删除的产品
|
|
|
+ contractShipmentService.editLinked(contractShipmentList, ContractShipment::getContractId, contract.getId());
|
|
|
+ }
|
|
|
for (ContractShipment c : contractShipmentList) {
|
|
|
- c.setId(IdWorker.getId());
|
|
|
- c.setContractId(contractId);
|
|
|
+// c.setId(IdWorker.getId());
|
|
|
+ c.setContractId(contract.getId());
|
|
|
}
|
|
|
- contractShipmentService.saveBatch(contractShipmentList);
|
|
|
+ contractShipmentService.saveOrUpdateBatch(contractShipmentList);
|
|
|
}
|
|
|
|
|
|
- // 交接单附件列表
|
|
|
- ObsFileUtil.saveFile(contract.getFileList(), contractId, 1);
|
|
|
+ if (opType == 1) {
|
|
|
+ //重新发起编辑
|
|
|
+
|
|
|
+ // 交接单附件列表
|
|
|
+ ObsFileUtil.editFile(contract.getFileList(), contract.getId(), 1);
|
|
|
+
|
|
|
+ // 包装指示附件列表
|
|
|
+ ObsFileUtil.editFile(contract.getPackageFileList(), contract.getId(), 2);
|
|
|
+ } else {
|
|
|
+ //普通提交新增
|
|
|
+
|
|
|
+ // 交接单附件列表
|
|
|
+ ObsFileUtil.saveFile(contract.getFileList(), contract.getId(), 1);
|
|
|
|
|
|
- // 包装指示附件列表
|
|
|
- ObsFileUtil.saveFile(contract.getPackageFileList(), contractId, 2);
|
|
|
+ // 包装指示附件列表
|
|
|
+ ObsFileUtil.saveFile(contract.getPackageFileList(), contract.getId(), 2);
|
|
|
+ }
|
|
|
|
|
|
- return contractId;
|
|
|
+ return contract;
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -221,61 +248,8 @@ public class ContractFlow extends FlowDelegate {
|
|
|
contractProductList.forEach(item -> item.setExpendQuantity(item.getQuantity()));
|
|
|
}
|
|
|
|
|
|
- //-----
|
|
|
- // 赋值城市省份信息
|
|
|
- CustomizeAreaUtil.setAreaId(contract);
|
|
|
-
|
|
|
- contract.setId(contractId);
|
|
|
-// contract.setCode(codingRuleService.createCode(CodingRuleEnum.CONTRACT.getKey(), contract.getBuyCorporationId()));
|
|
|
- contract.setUserName(SecurityUtils.getUsername());
|
|
|
- contract.setStatus(FlowStatusEnum1.UNDER_REVIEW.getKey());
|
|
|
- contract.setBuyCityId(contract.getCityId());
|
|
|
- contract.setBuyCountryId(contract.getCountryId());
|
|
|
- contract.setBuyProvinceId(contract.getProvinceId());
|
|
|
- contract.setRate(ExchangeRateUtil.getCnyToCodeRate(contract.getCurrency()));
|
|
|
- contractService.updateById(contract);
|
|
|
-
|
|
|
- // 保存合同产品
|
|
|
- if (CollectionUtils.isNotEmpty(contractProductList)) {
|
|
|
- //先删除被删除的产品
|
|
|
- contractProductService.editLinked(contractProductList, ContractProduct::getContractId, contractId);
|
|
|
-
|
|
|
- for (ContractProduct c : contractProductList) {
|
|
|
- c.setContractId(contractId);
|
|
|
- ObsFileUtil.editFile(c.getFileList(), c.getId());
|
|
|
- }
|
|
|
- contractProductService.saveOrUpdateBatch(contractProductList);
|
|
|
- }
|
|
|
-
|
|
|
- // 保存收费项目
|
|
|
- List<ContractProject> contractProjectList = contract.getContractProjectList();
|
|
|
- if (CollectionUtils.isNotEmpty(contractProjectList)) {
|
|
|
- //先删除被删除的产品
|
|
|
- contractProjectService.editLinked(contractProjectList, ContractProject::getContractId, contractId);
|
|
|
-
|
|
|
- for (ContractProject c : contractProjectList) {
|
|
|
- c.setContractId(contractId);
|
|
|
- }
|
|
|
- contractProjectService.saveOrUpdateBatch(contractProjectList);
|
|
|
- }
|
|
|
-
|
|
|
- // 保存自定义出货
|
|
|
- List<ContractShipment> contractShipmentList = contract.getContractShipmentList();
|
|
|
- if (CollectionUtils.isNotEmpty(contractShipmentList)) {
|
|
|
- //先删除被删除的产品
|
|
|
- contractShipmentService.editLinked(contractShipmentList, ContractShipment::getContractId, contractId);
|
|
|
-
|
|
|
- for (ContractShipment c : contractShipmentList) {
|
|
|
- c.setContractId(contractId);
|
|
|
- }
|
|
|
- contractShipmentService.saveOrUpdateBatch(contractShipmentList);
|
|
|
- }
|
|
|
-
|
|
|
- // 交接单附件列表
|
|
|
- ObsFileUtil.editFile(contract.getFileList(), contractId, 1);
|
|
|
-
|
|
|
- // 包装指示附件列表
|
|
|
- ObsFileUtil.editFile(contract.getPackageFileList(), contractId, 2);
|
|
|
+ //调用公共代码
|
|
|
+ commStart(contract, 1);
|
|
|
}
|
|
|
|
|
|
/**
|