Compare commits

...

2 Commits

@ -36,6 +36,7 @@ import org.dromara.workflow.api.RemoteWorkflowService;
import org.dromara.workflow.api.domain.RemoteStartProcess;
import org.dromara.common.core.exception.ServiceException;
import org.apache.seata.spring.annotation.GlobalTransactional;
import org.dromara.oa.erp.constant.ProjectCategoryConstant;
import org.apache.dubbo.config.annotation.DubboReference;
@ -68,6 +69,7 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
private final ErpContractMaterialMapper contractMaterialMapper;
private final ErpContractPaymentMethodMapper contractPaymentMethodMapper;
private final ErpProjectContractsMapper projectContractsMapper;
private final ErpProjectInfoMapper projectInfoMapper;
private final IErpContractInfoService contractInfoService;
@DubboReference
@ -76,20 +78,34 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
@DubboReference(timeout = 30000)
private RemoteWorkflowService remoteWorkflowService;
/** 合同变更流程定义编码(与流程引擎中 flowCode 一致) */
/**
* flowCode
*/
public static final String FLOW_CODE_CONTRACT_CHANGE = "HTBG";
/** 变更单编号规则编码(调用编码规则服务生成变更编号) */
/**
*
*/
private static final String CONTRACT_CHANGE_CODE_RULE = "1021";
/** 变更类型1-内容变更(需维护变更后信息/物料/付款方式快照) */
/**
* 1-//
*/
private static final String CHANGE_TYPE_CONTENT = "1";
/** 变更类型2-解除合同(仅更新原合同激活标识) */
/**
* 2-
*/
private static final String CHANGE_TYPE_TERMINATE = "2";
/** 回写标识0-未回写 */
/**
* 0-
*/
private static final String WRITE_BACK_NO = "0";
/** 回写标识1-已回写(审批通过并已写回原合同后不再允许修改回写相关字段) */
/**
* 1-
*/
private static final String WRITE_BACK_YES = "1";
/** 变更状态3-可用(审批完成且已回写后的终态) */
/**
* 3-
*/
private static final String CHANGE_STATUS_AVAILABLE = "3";
/**
@ -502,7 +518,9 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
baseMapper.updateById(change);
}
/** 解除合同回写 */
/**
*
*/
private void doWriteBackTerminate(Long contractId) {
ErpContractInfo info = contractInfoMapper.selectById(contractId);
if (info != null) {
@ -513,8 +531,7 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
}
/**
*
* original_contract_id ID erp_contract_change.new_contract_id
*
*/
@Override
@Transactional(rollbackFor = Exception.class)
@ -527,16 +544,6 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
if (newContract != null && newContract.getOriginalContractId() != null) {
originalContractId = newContract.getOriginalContractId();
}
if (originalContractId == null) {
List<ErpContractChange> list = baseMapper.selectList(
new LambdaQueryWrapper<ErpContractChange>()
.eq(ErpContractChange::getNewContractId, newContractId)
.last("limit 1"));
if (list.isEmpty()) {
return;
}
originalContractId = list.get(0).getContractId();
}
if (originalContractId == null) {
return;
}
@ -544,9 +551,6 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
if (originalContract == null) {
return;
}
if ("0".equals(originalContract.getActiveFlag()) && OAStatusEnum.INVALID.getStatus().equals(originalContract.getContractStatus())) {
return;
}
List<ErpProjectContracts> oldLinks = projectContractsMapper.selectList(
new LambdaQueryWrapper<ErpProjectContracts>().eq(ErpProjectContracts::getContractId, originalContractId));
for (ErpProjectContracts oldLink : oldLinks) {
@ -561,17 +565,20 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
newLink.setContractId(newContractId);
newLink.setProjectId(oldLink.getProjectId());
newLink.setSortOrder(oldLink.getSortOrder());
newLink.setRemark(oldLink.getRemark());
newLink.setActiveFlag(StringUtils.isNotBlank(oldLink.getActiveFlag()) ? oldLink.getActiveFlag() : "1");
newLink.setProjectSource(oldLink.getProjectSource());
projectContractsMapper.insert(newLink);
}
originalContract.setActiveFlag("0");
originalContract.setContractStatus(OAStatusEnum.INVALID.getStatus());
contractInfoMapper.updateById(originalContract);
//原合同更新并逻辑删除
contractInfoMapper.deleteById(originalContractId);
for (ErpProjectContracts oldLink : oldLinks) {
projectContractsMapper.deleteById(oldLink.getProjectContractsId());
}
// 原合同订单删除
projectInfoMapper.delete(
new LambdaQueryWrapper<ErpProjectInfo>()
.eq(ErpProjectInfo::getContractId, originalContractId)
.eq(ErpProjectInfo::getProjectCategory, ProjectCategoryConstant.CONTRACT_ORDER)
);
}
/**

@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.convert.NumberChineseFormatter;
import cn.hutool.core.map.MapUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.deepoove.poi.data.RowRenderData;
import com.deepoove.poi.data.Rows;
@ -389,6 +390,18 @@ public class ErpContractInfoServiceImpl implements IErpContractInfoService {
*
*/
private void validEntityBeforeSave(ErpContractInfo entity) {
// 校验合同编号不能重复(编辑时排除自身)
if (entity != null && StringUtils.isNotBlank(entity.getContractCode())) {
LambdaQueryWrapper<ErpContractInfo> lqw = new LambdaQueryWrapper<ErpContractInfo>()
.eq(ErpContractInfo::getContractCode, entity.getContractCode())
.eq(ErpContractInfo::getDelFlag, "0")
.ne(entity.getContractId() != null, ErpContractInfo::getContractId, entity.getContractId());
Long cnt = baseMapper.selectCount(lqw);
if (cnt != null && cnt > 0) {
throw new ServiceException("合同编号【" + entity.getContractCode() + "】已存在,请勿重复");
}
}
// 校验客户基础信息是否已完善(附件、税号、开户银行、银行账号不能为空)
Long oneCustomerId = entity.getOneCustomerId();
if (oneCustomerId != null) {

Loading…
Cancel
Save