|
@@ -2,41 +2,30 @@ package com.fjhx.sale.flow;
|
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
-import com.alibaba.fastjson2.JSON;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.*;
|
|
|
import com.fjhx.area.utils.CustomizeAreaUtil;
|
|
|
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.item.entity.product.po.ProductInfoEhsdJson;
|
|
|
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.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;
|
|
|
-import com.fjhx.sale.entity.sample.po.SampleShipment;
|
|
|
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.core.domain.BaseIdPo;
|
|
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
|
import com.ruoyi.common.utils.SecurityUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
-import java.math.BigDecimal;
|
|
|
-import java.util.Arrays;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
-import java.util.function.Function;
|
|
|
import java.util.regex.Matcher;
|
|
|
import java.util.regex.Pattern;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -79,6 +68,9 @@ public class ContractUpdateFlow extends FlowDelegate {
|
|
|
|
|
|
ContractDto contract = submitData.toJavaObject(ContractDto.class);
|
|
|
|
|
|
+ //赋值流程id
|
|
|
+ contract.setFlowId(flowId);
|
|
|
+
|
|
|
//判断合同是否在变更中,防止用户缓存导致重复变更
|
|
|
Contract byId = contractService.getById(contract.getOldContractId());
|
|
|
Assert.notEmpty(byId, "查询不到合同信息");
|
|
@@ -93,7 +85,7 @@ public class ContractUpdateFlow extends FlowDelegate {
|
|
|
}
|
|
|
//查询原合同
|
|
|
Contract oldContract = contractService.getById(contract.getOldContractId());
|
|
|
- if(ObjectUtil.isEmpty(oldContract)){
|
|
|
+ if (ObjectUtil.isEmpty(oldContract)) {
|
|
|
throw new ServiceException("查询不到原合同信息");
|
|
|
}
|
|
|
//更新原样品单状态为变更中
|
|
@@ -101,12 +93,12 @@ public class ContractUpdateFlow extends FlowDelegate {
|
|
|
contractService.updateById(oldContract);
|
|
|
//查询旧合同的订单产品
|
|
|
List<ContractProduct> oldContractProductList = contractProductService.list(q -> q.eq(ContractProduct::getContractId, oldContractId));
|
|
|
- if(CollectionUtils.isEmpty(oldContractProductList)){
|
|
|
+ if (CollectionUtils.isEmpty(oldContractProductList)) {
|
|
|
throw new ServiceException("原合同没有产品");
|
|
|
}
|
|
|
- Map<Long,List<ContractProduct>> oldContractProductMap = oldContractProductList.stream().collect(Collectors.groupingBy(ContractProduct::getId));
|
|
|
+ Map<Long, List<ContractProduct>> oldContractProductMap = oldContractProductList.stream().collect(Collectors.groupingBy(ContractProduct::getId));
|
|
|
List<ContractProduct> newContractProductList = contract.getContractProductList();
|
|
|
- if(CollectionUtils.isEmpty(newContractProductList)){
|
|
|
+ if (CollectionUtils.isEmpty(newContractProductList)) {
|
|
|
throw new ServiceException("变更合同产品不能为空");
|
|
|
}
|
|
|
/**
|
|
@@ -124,24 +116,24 @@ public class ContractUpdateFlow extends FlowDelegate {
|
|
|
/**
|
|
|
* 计算新合同的剩余数量
|
|
|
*/
|
|
|
- for(ContractProduct newCp:newContractProductList){
|
|
|
+ for (ContractProduct newCp : newContractProductList) {
|
|
|
newCp.setExpendQuantity(newCp.getQuantity());
|
|
|
- if(ObjectUtil.isNotEmpty(newCp.getId())){//如果新合同产品ID不为空
|
|
|
+ if (ObjectUtil.isNotEmpty(newCp.getId())) {//如果新合同产品ID不为空
|
|
|
//取出旧合同
|
|
|
- ContractProduct oldContractProduct = oldContractProductMap.getOrDefault(newCp.getId(),null).get(0);
|
|
|
+ ContractProduct oldContractProduct = oldContractProductMap.getOrDefault(newCp.getId(), null).get(0);
|
|
|
//取出旧合同包装方式
|
|
|
JSONObject oldJson = JSONObject.parseObject(oldContractProduct.getEhsdJson());
|
|
|
- String oldPackMethod = oldJson.getOrDefault("packMethod",null)==null?null:oldJson.getOrDefault("packMethod",null).toString();
|
|
|
+ String oldPackMethod = ObjectUtil.isEmpty(oldJson) ? null : oldJson.getString("packMethod");
|
|
|
//取出新合同包装方式
|
|
|
JSONObject newJson = JSONObject.parseObject(newCp.getEhsdJson());
|
|
|
- String newPackMethod = newJson.getOrDefault("packMethod",null)==null?null:oldJson.getOrDefault("packMethod",null).toString();
|
|
|
+ String newPackMethod = ObjectUtil.isEmpty(newJson) ? null : newJson.getString("packMethod");
|
|
|
/**
|
|
|
* 商品英文名、尺寸、包装方式、数量 没有变更---取原本的剩余数量
|
|
|
*/
|
|
|
- if(oldContractProduct.getQuantity().compareTo(newCp.getQuantity())==0
|
|
|
+ if (oldContractProduct.getQuantity().compareTo(newCp.getQuantity()) == 0
|
|
|
&& StringUtils.equals(oldContractProduct.getProductName(), newCp.getProductName())
|
|
|
- && StringUtils.equals(oldContractProduct.getProductModel(),newCp.getProductModel())
|
|
|
- && StringUtils.equals(oldPackMethod,newPackMethod)){
|
|
|
+ && StringUtils.equals(oldContractProduct.getProductModel(), newCp.getProductModel())
|
|
|
+ && StringUtils.equals(oldPackMethod, newPackMethod)) {
|
|
|
//取出旧的剩余数量
|
|
|
newCp.setExpendQuantity(oldContractProduct.getExpendQuantity());
|
|
|
}
|
|
@@ -164,7 +156,7 @@ public class ContractUpdateFlow extends FlowDelegate {
|
|
|
if (ObjectUtils.isEmpty(newContract)) {
|
|
|
throw new ServiceException("合同不存在");
|
|
|
}
|
|
|
- long oldContractId = newContract.getOldContractId();//取出旧的合同ID
|
|
|
+ long oldContractId = newContract.getOldContractId();//取出旧的合同ID
|
|
|
Contract oldContract = contractService.getById(oldContractId);
|
|
|
if (oldContract == null) {
|
|
|
throw new ServiceException("原合同不存在");
|
|
@@ -184,15 +176,15 @@ public class ContractUpdateFlow extends FlowDelegate {
|
|
|
|
|
|
|
|
|
//查询新数据产品、收费、出货
|
|
|
- List<Long> newContractProductIds = contractProductService.list(Wrappers.<ContractProduct>query().lambda().select(ContractProduct::getId).eq(ContractProduct::getContractId,businessId)).stream().map(ContractProduct::getId).collect(Collectors.toList());
|
|
|
- List<Long> newContractProjectIds = contractProjectService.list(Wrappers.<ContractProject>query().lambda().select(ContractProject::getId).eq(ContractProject::getContractId,businessId)).stream().map(ContractProject::getId).collect(Collectors.toList());
|
|
|
- List<Long> newContractShipmentIds = contractShipmentService.list(Wrappers.<ContractShipment>query().lambda().select(ContractShipment::getId).eq(ContractShipment::getContractId,businessId)).stream().map(ContractShipment::getId).collect(Collectors.toList());
|
|
|
+ List<Long> newContractProductIds = contractProductService.list(Wrappers.<ContractProduct>query().lambda().select(ContractProduct::getId).eq(ContractProduct::getContractId, businessId)).stream().map(ContractProduct::getId).collect(Collectors.toList());
|
|
|
+ List<Long> newContractProjectIds = contractProjectService.list(Wrappers.<ContractProject>query().lambda().select(ContractProject::getId).eq(ContractProject::getContractId, businessId)).stream().map(ContractProject::getId).collect(Collectors.toList());
|
|
|
+ List<Long> newContractShipmentIds = contractShipmentService.list(Wrappers.<ContractShipment>query().lambda().select(ContractShipment::getId).eq(ContractShipment::getContractId, businessId)).stream().map(ContractShipment::getId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
//查询旧数据产品、收费、出货
|
|
|
- List<Long> oldContractProductIds = contractProductService.list(Wrappers.<ContractProduct>query().lambda().select(ContractProduct::getId).eq(ContractProduct::getContractId,oldContractId)).stream().map(ContractProduct::getId).collect(Collectors.toList());
|
|
|
- List<Long> oldContractProjectIds = contractProjectService.list(Wrappers.<ContractProject>query().lambda().select(ContractProject::getId).eq(ContractProject::getContractId,oldContractId)).stream().map(ContractProject::getId).collect(Collectors.toList());
|
|
|
- List<Long> oldContractShipmentIds = contractShipmentService.list(Wrappers.<ContractShipment>query().lambda().select(ContractShipment::getId).eq(ContractShipment::getContractId,oldContractId)).stream().map(ContractShipment::getId).collect(Collectors.toList());
|
|
|
+ List<Long> oldContractProductIds = contractProductService.list(Wrappers.<ContractProduct>query().lambda().select(ContractProduct::getId).eq(ContractProduct::getContractId, oldContractId)).stream().map(ContractProduct::getId).collect(Collectors.toList());
|
|
|
+ List<Long> oldContractProjectIds = contractProjectService.list(Wrappers.<ContractProject>query().lambda().select(ContractProject::getId).eq(ContractProject::getContractId, oldContractId)).stream().map(ContractProject::getId).collect(Collectors.toList());
|
|
|
+ List<Long> oldContractShipmentIds = contractShipmentService.list(Wrappers.<ContractShipment>query().lambda().select(ContractShipment::getId).eq(ContractShipment::getContractId, oldContractId)).stream().map(ContractShipment::getId).collect(Collectors.toList());
|
|
|
|
|
|
|
|
|
/**
|
|
@@ -206,16 +198,16 @@ public class ContractUpdateFlow extends FlowDelegate {
|
|
|
newContract.setIsShow(0);//显示新合同
|
|
|
contractService.updateContract(newContract);
|
|
|
//修改合同产品相关数据
|
|
|
- if(CollectionUtils.isNotEmpty(newContractProductIds)){
|
|
|
- contractProductService.update(Wrappers.<ContractProduct>update().lambda().set(ContractProduct::getContractId,oldContractId).in(ContractProduct::getId,newContractProductIds));
|
|
|
+ if (CollectionUtils.isNotEmpty(newContractProductIds)) {
|
|
|
+ contractProductService.update(Wrappers.<ContractProduct>update().lambda().set(ContractProduct::getContractId, oldContractId).in(ContractProduct::getId, newContractProductIds));
|
|
|
}
|
|
|
//修改合同收费相关数据
|
|
|
- if(CollectionUtils.isNotEmpty(newContractProjectIds)){
|
|
|
- contractProjectService.update(Wrappers.<ContractProject>update().lambda().set(ContractProject::getContractId,oldContractId).in(ContractProject::getId,newContractProjectIds));
|
|
|
+ if (CollectionUtils.isNotEmpty(newContractProjectIds)) {
|
|
|
+ contractProjectService.update(Wrappers.<ContractProject>update().lambda().set(ContractProject::getContractId, oldContractId).in(ContractProject::getId, newContractProjectIds));
|
|
|
}
|
|
|
//修改合同出货相关数据
|
|
|
- if(CollectionUtils.isNotEmpty(newContractShipmentIds)){
|
|
|
- contractShipmentService.update(Wrappers.<ContractShipment>update().lambda().set(ContractShipment::getContractId,oldContractId).in(ContractShipment::getId,newContractShipmentIds));
|
|
|
+ if (CollectionUtils.isNotEmpty(newContractShipmentIds)) {
|
|
|
+ contractShipmentService.update(Wrappers.<ContractShipment>update().lambda().set(ContractShipment::getContractId, oldContractId).in(ContractShipment::getId, newContractShipmentIds));
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -228,24 +220,25 @@ public class ContractUpdateFlow extends FlowDelegate {
|
|
|
oldContract.setIsShow(1);//隐藏旧合同
|
|
|
contractService.updateContract(oldContract);
|
|
|
//修改合同产品相关数据
|
|
|
- if(CollectionUtils.isNotEmpty(oldContractProductIds)){
|
|
|
- contractProductService.update(Wrappers.<ContractProduct>update().lambda().set(ContractProduct::getContractId,businessId).in(ContractProduct::getId,oldContractProductIds));
|
|
|
+ if (CollectionUtils.isNotEmpty(oldContractProductIds)) {
|
|
|
+ contractProductService.update(Wrappers.<ContractProduct>update().lambda().set(ContractProduct::getContractId, businessId).in(ContractProduct::getId, oldContractProductIds));
|
|
|
}
|
|
|
//修改合同出货相关数据
|
|
|
- if(CollectionUtils.isNotEmpty(oldContractProjectIds)){
|
|
|
+ if (CollectionUtils.isNotEmpty(oldContractProjectIds)) {
|
|
|
//修改合同收费相关数据
|
|
|
- contractProjectService.update(Wrappers.<ContractProject>update().lambda().set(ContractProject::getContractId,businessId).in(ContractProject::getId,oldContractProjectIds));
|
|
|
+ contractProjectService.update(Wrappers.<ContractProject>update().lambda().set(ContractProject::getContractId, businessId).in(ContractProject::getId, oldContractProjectIds));
|
|
|
}
|
|
|
//修改合同出货相关数据
|
|
|
- if(CollectionUtils.isNotEmpty(oldContractShipmentIds)){
|
|
|
+ if (CollectionUtils.isNotEmpty(oldContractShipmentIds)) {
|
|
|
//修改合同出货相关数据
|
|
|
- contractShipmentService.update(Wrappers.<ContractShipment>update().lambda().set(ContractShipment::getContractId,businessId).in(ContractShipment::getId,oldContractShipmentIds));
|
|
|
+ contractShipmentService.update(Wrappers.<ContractShipment>update().lambda().set(ContractShipment::getContractId, businessId).in(ContractShipment::getId, oldContractShipmentIds));
|
|
|
}
|
|
|
- ObsFileUtil.exchangeBusinessId(oldContractId,businessId);
|
|
|
+ ObsFileUtil.exchangeBusinessId(oldContractId, businessId);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 变更
|
|
|
+ *
|
|
|
* @param contract
|
|
|
* @return
|
|
|
*/
|