|
@@ -1,26 +1,32 @@
|
|
|
package com.fjhx.sale.flow;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.baomidou.dynamic.datasource.annotation.DS;
|
|
|
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.constant.SourceConstant;
|
|
|
import com.fjhx.common.enums.CodingRuleEnum;
|
|
|
import com.fjhx.common.enums.FlowStatusEnum1;
|
|
|
import com.fjhx.common.service.coding.CodingRuleService;
|
|
|
import com.fjhx.file.utils.ObsFileUtil;
|
|
|
import com.fjhx.flow.core.FlowDelegate;
|
|
|
import com.fjhx.flow.core.FlowThreadLocalUtil;
|
|
|
+import com.fjhx.flow.enums.FlowStatusEnum;
|
|
|
import com.fjhx.flow.enums.HandleTypeEnum;
|
|
|
import com.fjhx.sale.entity.contract.dto.ContractDto;
|
|
|
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.dto.EhsdPurchaseDto;
|
|
|
+import com.fjhx.sale.entity.sample.po.Sample;
|
|
|
import com.fjhx.sale.service.contract.ContractProductService;
|
|
|
import com.fjhx.sale.service.contract.ContractProjectService;
|
|
|
import com.fjhx.sale.service.contract.ContractService;
|
|
|
import com.fjhx.sale.service.contract.ContractShipmentService;
|
|
|
+import com.ruoyi.common.annotation.LogicIgnore;
|
|
|
import com.ruoyi.common.core.domain.BasePo;
|
|
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
@@ -28,6 +34,7 @@ import com.ruoyi.common.utils.SecurityUtils;
|
|
|
import com.ruoyi.common.utils.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
@@ -39,6 +46,7 @@ import java.util.List;
|
|
|
* @DATE:2023/4/3 17:38
|
|
|
*/
|
|
|
@Component
|
|
|
+@DS(SourceConstant.SALE)
|
|
|
public class ContractFlow extends FlowDelegate {
|
|
|
|
|
|
@Autowired
|
|
@@ -110,13 +118,8 @@ public class ContractFlow extends FlowDelegate {
|
|
|
}
|
|
|
|
|
|
public Long start(ContractDto contract) {
|
|
|
-
|
|
|
- long contractId = IdWorker.getId();
|
|
|
-
|
|
|
|
|
|
CustomizeAreaUtil.setAreaId(contract);
|
|
|
-
|
|
|
- contract.setId(contractId);
|
|
|
SysUser loginUser = SecurityUtils.getLoginUser().getUser();
|
|
|
contract.setUserName(loginUser.getNickName());
|
|
|
contract.setBuyCityId(contract.getCityId());
|
|
@@ -124,52 +127,72 @@ public class ContractFlow extends FlowDelegate {
|
|
|
contract.setBuyProvinceId(contract.getProvinceId());
|
|
|
contract.setStatus(FlowStatusEnum1.UNDER_REVIEW.getKey());
|
|
|
|
|
|
- contractService.save(contract);
|
|
|
+ contractService.saveOrUpdate(contract);
|
|
|
|
|
|
|
|
|
List<ContractProduct> contractProductList = contract.getContractProductList();
|
|
|
if (CollectionUtils.isNotEmpty(contractProductList)) {
|
|
|
for (ContractProduct c : contractProductList) {
|
|
|
- c.setId(IdWorker.getId());
|
|
|
- c.setContractId(contractId);
|
|
|
+ c.setContractId(contract.getId());
|
|
|
|
|
|
}
|
|
|
- contractProductService.saveBatch(contractProductList);
|
|
|
+ contractProductService.saveOrUpdateBatch(contractProductList);
|
|
|
}
|
|
|
|
|
|
|
|
|
List<ContractProject> contractProjectList = contract.getContractProjectList();
|
|
|
if (CollectionUtils.isNotEmpty(contractProjectList)) {
|
|
|
for (ContractProject c : contractProjectList) {
|
|
|
- c.setId(IdWorker.getId());
|
|
|
- c.setContractId(contractId);
|
|
|
+ c.setContractId(contract.getId());
|
|
|
}
|
|
|
- contractProjectService.saveBatch(contractProjectList);
|
|
|
+ contractProjectService.saveOrUpdateBatch(contractProjectList);
|
|
|
}
|
|
|
|
|
|
|
|
|
List<ContractShipment> contractShipmentList = contract.getContractShipmentList();
|
|
|
if (CollectionUtils.isNotEmpty(contractShipmentList)) {
|
|
|
for (ContractShipment c : contractShipmentList) {
|
|
|
- c.setId(IdWorker.getId());
|
|
|
- c.setContractId(contractId);
|
|
|
+ c.setContractId(contract.getId());
|
|
|
}
|
|
|
- contractShipmentService.saveBatch(contractShipmentList);
|
|
|
+ contractShipmentService.saveOrUpdateBatch(contractShipmentList);
|
|
|
}
|
|
|
|
|
|
|
|
|
- ObsFileUtil.saveFile(contract.getFileList(), contractId, 1);
|
|
|
+ ObsFileUtil.saveFile(contract.getFileList(), contract.getId(), 1);
|
|
|
|
|
|
|
|
|
- ObsFileUtil.saveFile(contract.getPackageFileList(), contractId, 2);
|
|
|
+ ObsFileUtil.saveFile(contract.getPackageFileList(), contract.getId(), 2);
|
|
|
+
|
|
|
+ return contract.getId();
|
|
|
+ }
|
|
|
|
|
|
- return contractId;
|
|
|
+
|
|
|
+ * 重新发起
|
|
|
+ * @param flowId
|
|
|
+ * @param businessId
|
|
|
+ * @param flowStatus
|
|
|
+ * @param submitData
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ @LogicIgnore(tableName = {""},alias = {""})
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public void relaunch(Long flowId, Long businessId, FlowStatusEnum flowStatus, JSONObject submitData) {
|
|
|
+
|
|
|
+ ContractDto contractDto = submitData.toJavaObject(ContractDto.class);
|
|
|
+ if(ObjectUtils.isEmpty(contractDto)){
|
|
|
+ throw new ServiceException("合同数据不能为空");
|
|
|
+ }
|
|
|
+ start(contractDto);
|
|
|
}
|
|
|
|
|
|
|
|
|
- * 驳回方法
|
|
|
+ * 驳回
|
|
|
+ * @param flowId
|
|
|
+ * @param businessId
|
|
|
+ * @param flowStatus
|
|
|
*/
|
|
|
- public void reject() {
|
|
|
+ @Override
|
|
|
+ public void reject(Long flowId, Long businessId, FlowStatusEnum flowStatus) {
|
|
|
if (HandleTypeEnum.REJECT.equals(FlowThreadLocalUtil.getHandleTypeEnum())) {
|
|
|
contractService.update(q -> q
|
|
|
.eq(Contract::getId, FlowThreadLocalUtil.getBusinessId())
|