1.0.80 合同变更审批流完善

dev
yinq 5 days ago
parent bd7b76767f
commit 3c25f0e0cc

@ -94,6 +94,17 @@ public class ErpContractChangeController extends BaseController {
return R.ok(erpContractChangeService.saveContractChange(bo));
}
/**
*
*/
@SaCheckPermission("oa/erp:contractChange:add")
@Log(title = "合同变更", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/contractChangeSubmitAndFlowStart")
public R<ErpContractChangeVo> contractChangeSubmitAndFlowStart(@RequestBody ErpContractChangeSaveBo bo) {
return R.ok(erpContractChangeService.contractChangeSubmitAndFlowStart(bo));
}
/**
*
*/

@ -1,6 +1,7 @@
package org.dromara.oa.erp.domain.bo;
import lombok.Data;
import org.dromara.workflow.api.domain.RemoteFlowInstanceBizExt;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
@ -8,6 +9,8 @@ import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
/**
* +++
@ -115,4 +118,34 @@ public class ErpContractChangeSaveBo {
* 使
*/
private List<ErpContractChangePaymentMethodBo> changePaymentMethodList;
/**
*
*/
private String flowCode;
/**
* 使
*/
private Map<String, Object> variables;
/**
* 使
*/
private RemoteFlowInstanceBizExt bizExt;
public Map<String, Object> getVariables() {
if (variables == null) {
return new java.util.HashMap<>(16);
}
variables.entrySet().removeIf(entry -> Objects.isNull(entry.getValue()));
return variables;
}
public RemoteFlowInstanceBizExt getBizExt() {
if (bizExt == null) {
bizExt = new RemoteFlowInstanceBizExt();
}
return bizExt;
}
}

@ -90,5 +90,13 @@ public interface IErpContractChangeService {
*
* @param contractChangeId ID
*/
void writeBackToContract(Long contractChangeId);
void writeBackToContract(ErpContractChange contractChangeId);
/**
*
*
* @param bo + flowCodevariablesbizExt
* @return VO
*/
ErpContractChangeVo contractChangeSubmitAndFlowStart(ErpContractChangeSaveBo bo);
}

@ -1,8 +1,11 @@
package org.dromara.oa.erp.service.impl;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.map.MapUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.common.core.enums.OAStatusEnum;
import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.oa.erp.domain.bo.ErpContractChangeMaterialBo;
import org.dromara.oa.erp.domain.bo.ErpContractChangePaymentMethodBo;
@ -25,24 +28,34 @@ import org.dromara.oa.erp.domain.vo.*;
import org.dromara.oa.erp.mapper.*;
import org.dromara.oa.erp.service.IErpContractChangeService;
import org.dromara.system.api.RemoteCodeRuleService;
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.apache.dubbo.config.annotation.DubboReference;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Objects;
import java.util.*;
/**
* Service
* Service
* <p>
*
* /
* </p>
* <p>
* {@code @TableLogic}Mapper delete UPDATE del_flag
* </p>
*
* @author Yinq
* @date 2026-03-07
*/
@RequiredArgsConstructor
@Service
@Slf4j
public class ErpContractChangeServiceImpl implements IErpContractChangeService {
// ---------- 主表及子表 Mapper ----------
private final ErpContractChangeMapper baseMapper;
private final ErpContractChangeInfoMapper changeInfoMapper;
private final ErpContractChangeMaterialMapper changeMaterialMapper;
@ -54,50 +67,55 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
@DubboReference
private RemoteCodeRuleService remoteCodeRuleService;
/** 合同变更流程编码 */
@DubboReference(timeout = 30000)
private RemoteWorkflowService remoteWorkflowService;
/** 合同变更流程定义编码(与流程引擎中 flowCode 一致) */
public static final String FLOW_CODE_CONTRACT_CHANGE = "HTBG";
/** 变更编号编码规则 */
/** 变更编号规则编码(调用编码规则服务生成变更编号) */
private static final String CONTRACT_CHANGE_CODE_RULE = "1021";
/** 变更类型1内容变更 2解除合同 */
/** 变更类型1-内容变更(需维护变更后信息/物料/付款方式快照) */
private static final String CHANGE_TYPE_CONTENT = "1";
/** 变更类型2-解除合同(仅更新原合同激活标识) */
private static final String CHANGE_TYPE_TERMINATE = "2";
/** 未回写 */
/** 回写标识0-未回写 */
private static final String WRITE_BACK_NO = "0";
/** 已回写/可用 */
/** 回写标识1-已回写(审批通过并已写回原合同后不再允许修改回写相关字段) */
private static final String WRITE_BACK_YES = "1";
/** 变更状态3-可用(审批完成且已回写后的终态) */
private static final String CHANGE_STATUS_AVAILABLE = "3";
/**
*
*
*
* @param contractChangeId
* @return
* @return VO null
*/
@Override
public ErpContractChangeVo queryById(Long contractChangeId){
public ErpContractChangeVo queryById(Long contractChangeId) {
return baseMapper.selectVoById(contractChangeId);
}
/**
*
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<ErpContractChangeVo> queryPageList(ErpContractChangeBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<ErpContractChange> lqw = buildQueryWrapper(bo);
Page<ErpContractChangeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
* queryList
*
* @param bo
* @param pageQuery
* @return
*/
@Override
public TableDataInfo<ErpContractChangeVo> queryPageList(ErpContractChangeBo bo, PageQuery pageQuery) {
MPJLambdaWrapper<ErpContractChange> lqw = buildQueryWrapper(bo);
Page<ErpContractChangeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
return TableDataInfo.build(result);
}
/**
*
*
*
* @param bo
* @return
* @return
*/
@Override
public List<ErpContractChangeVo> queryList(ErpContractChangeBo bo) {
@ -105,38 +123,43 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
return baseMapper.selectVoList(lqw);
}
/**
* / bo /
*/
private MPJLambdaWrapper<ErpContractChange> buildQueryWrapper(ErpContractChangeBo bo) {
return JoinWrappers.lambda(ErpContractChange.class)
.selectAll(ErpContractChange.class)
.eq(ErpContractChange::getDelFlag, "0")
.eq(bo.getContractId() != null, ErpContractChange::getContractId, bo.getContractId())
.eq(StringUtils.isNotBlank(bo.getChangeCode()), ErpContractChange::getChangeCode, bo.getChangeCode())
.eq(StringUtils.isNotBlank(bo.getChangeType()), ErpContractChange::getChangeType, bo.getChangeType())
.eq(StringUtils.isNotBlank(bo.getChangeContractCode()), ErpContractChange::getChangeContractCode, bo.getChangeContractCode())
.like(StringUtils.isNotBlank(bo.getChangeContractName()), ErpContractChange::getChangeContractName, bo.getChangeContractName())
.like(StringUtils.isNotBlank(bo.getCustomerName()), ErpContractChange::getCustomerName, bo.getCustomerName())
.eq(bo.getChangeContractAmount() != null, ErpContractChange::getChangeContractAmount, bo.getChangeContractAmount())
.eq(StringUtils.isNotBlank(bo.getContractCode()), ErpContractChange::getContractCode, bo.getContractCode())
.like(StringUtils.isNotBlank(bo.getContractName()), ErpContractChange::getContractName, bo.getContractName())
.like(StringUtils.isNotBlank(bo.getOriginalCustomerName()), ErpContractChange::getOriginalCustomerName, bo.getOriginalCustomerName())
.eq(bo.getOriginalContractAmount() != null, ErpContractChange::getOriginalContractAmount, bo.getOriginalContractAmount())
.eq(StringUtils.isNotBlank(bo.getChangeReason()), ErpContractChange::getChangeReason, bo.getChangeReason())
.eq(bo.getApplyTime() != null, ErpContractChange::getApplyTime, bo.getApplyTime())
.eq(bo.getUndertakeDeptId() != null, ErpContractChange::getUndertakeDeptId, bo.getUndertakeDeptId())
.eq(bo.getUndertakeBy() != null, ErpContractChange::getUndertakeBy, bo.getUndertakeBy())
.eq(StringUtils.isNotBlank(bo.getIndustryRegion()), ErpContractChange::getIndustryRegion, bo.getIndustryRegion())
.eq(StringUtils.isNotBlank(bo.getSealLegalEntity()), ErpContractChange::getSealLegalEntity, bo.getSealLegalEntity())
.eq(StringUtils.isNotBlank(bo.getChangeStatus()), ErpContractChange::getChangeStatus, bo.getChangeStatus())
.eq(StringUtils.isNotBlank(bo.getFlowStatus()), ErpContractChange::getFlowStatus, bo.getFlowStatus())
.eq(StringUtils.isNotBlank(bo.getWriteBackFlag()), ErpContractChange::getWriteBackFlag, bo.getWriteBackFlag())
.eq(bo.getWriteBackTime() != null, ErpContractChange::getWriteBackTime, bo.getWriteBackTime())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpContractChange::getActiveFlag, bo.getActiveFlag());
.selectAll(ErpContractChange.class)
.eq(ErpContractChange::getDelFlag, "0")
.eq(bo.getContractId() != null, ErpContractChange::getContractId, bo.getContractId())
.eq(StringUtils.isNotBlank(bo.getChangeCode()), ErpContractChange::getChangeCode, bo.getChangeCode())
.eq(StringUtils.isNotBlank(bo.getChangeType()), ErpContractChange::getChangeType, bo.getChangeType())
.eq(StringUtils.isNotBlank(bo.getChangeContractCode()), ErpContractChange::getChangeContractCode, bo.getChangeContractCode())
.like(StringUtils.isNotBlank(bo.getChangeContractName()), ErpContractChange::getChangeContractName, bo.getChangeContractName())
.like(StringUtils.isNotBlank(bo.getCustomerName()), ErpContractChange::getCustomerName, bo.getCustomerName())
.eq(bo.getChangeContractAmount() != null, ErpContractChange::getChangeContractAmount, bo.getChangeContractAmount())
.eq(StringUtils.isNotBlank(bo.getContractCode()), ErpContractChange::getContractCode, bo.getContractCode())
.like(StringUtils.isNotBlank(bo.getContractName()), ErpContractChange::getContractName, bo.getContractName())
.like(StringUtils.isNotBlank(bo.getOriginalCustomerName()), ErpContractChange::getOriginalCustomerName, bo.getOriginalCustomerName())
.eq(bo.getOriginalContractAmount() != null, ErpContractChange::getOriginalContractAmount, bo.getOriginalContractAmount())
.eq(StringUtils.isNotBlank(bo.getChangeReason()), ErpContractChange::getChangeReason, bo.getChangeReason())
.eq(bo.getApplyTime() != null, ErpContractChange::getApplyTime, bo.getApplyTime())
.eq(bo.getUndertakeDeptId() != null, ErpContractChange::getUndertakeDeptId, bo.getUndertakeDeptId())
.eq(bo.getUndertakeBy() != null, ErpContractChange::getUndertakeBy, bo.getUndertakeBy())
.eq(StringUtils.isNotBlank(bo.getIndustryRegion()), ErpContractChange::getIndustryRegion, bo.getIndustryRegion())
.eq(StringUtils.isNotBlank(bo.getSealLegalEntity()), ErpContractChange::getSealLegalEntity, bo.getSealLegalEntity())
.eq(StringUtils.isNotBlank(bo.getChangeStatus()), ErpContractChange::getChangeStatus, bo.getChangeStatus())
.eq(StringUtils.isNotBlank(bo.getFlowStatus()), ErpContractChange::getFlowStatus, bo.getFlowStatus())
.eq(StringUtils.isNotBlank(bo.getWriteBackFlag()), ErpContractChange::getWriteBackFlag, bo.getWriteBackFlag())
.eq(bo.getWriteBackTime() != null, ErpContractChange::getWriteBackTime, bo.getWriteBackTime())
.eq(StringUtils.isNotBlank(bo.getActiveFlag()), ErpContractChange::getActiveFlag, bo.getActiveFlag());
}
// ======================= 主表增删改(单表) =======================
/**
*
*
*
* @param bo
* @param bo BO bo
* @return
*/
@Override
@ -151,9 +174,9 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
}
/**
*
*
*
* @param bo
* @param bo BO
* @return
*/
@Override
@ -164,7 +187,7 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
}
/**
*
* ID
*/
private void validEntityBeforeSave(ErpContractChange entity) {
if (entity.getContractId() == null) {
@ -176,20 +199,34 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
}
/**
*
* ErpContractChange @TableLogic UPDATE del_flag
* isValid true
*
* @param ids
* @param isValid
* @param ids
* @param isValid
* @return
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
//TODO 做一些业务上的校验,判断是否需要校验
if (isValid) {
// TODO 按业务需要补充:如已回写、审批中等不允许删除等
}
return baseMapper.deleteByIds(ids) > 0;
}
// ======================= 保存与提交流程 =======================
/**
* + //
* <ul>
* <li> bo </li>
* <li></li>
* <li></li>
* </ul>
*
* @param bo + changeInfo / changeMaterialList / changePaymentMethodList
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Long saveContractChange(ErpContractChangeSaveBo bo) {
@ -198,12 +235,14 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
validEntityBeforeSave(main);
if (isUpdate) {
// 已回写的数据不允许覆盖回写相关字段
ErpContractChange existing = baseMapper.selectById(main.getContractChangeId());
if (existing != null && StringUtils.isNotBlank(existing.getWriteBackFlag()) && WRITE_BACK_YES.equals(existing.getWriteBackFlag())) {
main.setWriteBackFlag(existing.getWriteBackFlag());
main.setWriteBackTime(existing.getWriteBackTime());
}
baseMapper.updateById(main);
// 内容变更时子表采用「先逻辑删除后新增」,保证与前端提交一致(子表实体带 @TableLogic
if (CHANGE_TYPE_CONTENT.equals(bo.getChangeType())) {
deleteChangeSubByChangeId(main.getContractChangeId());
}
@ -217,6 +256,7 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
bo.setChangeCode(main.getChangeCode());
}
// 内容变更时写入/更新:变更信息快照、物料快照、付款方式快照(子表主键置空表示新增)
if (CHANGE_TYPE_CONTENT.equals(bo.getChangeType())) {
Long changeId = main.getContractChangeId();
if (bo.getChangeInfo() != null) {
@ -245,6 +285,36 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
return main.getContractChangeId();
}
/**
* contractSubmitAndFlowStart
*
*
* @param bo + flowCodevariablesbizExt
* @return VO
*/
@Override
@GlobalTransactional(rollbackFor = Exception.class)
public ErpContractChangeVo contractChangeSubmitAndFlowStart(ErpContractChangeSaveBo bo) {
Long changeId = saveContractChange(bo);
bo.setContractChangeId(changeId);
// 后端发起时忽略权限校验
bo.getVariables().put("ignore", true);
RemoteStartProcess startProcess = new RemoteStartProcess();
startProcess.setBusinessId(changeId.toString());
startProcess.setFlowCode(bo.getFlowCode());
startProcess.setVariables(bo.getVariables());
startProcess.setBizExt(bo.getBizExt());
bo.getBizExt().setBusinessId(startProcess.getBusinessId());
boolean flag = remoteWorkflowService.startCompleteTask(startProcess);
if (!flag) {
throw new ServiceException("流程发起异常");
}
return baseMapper.selectVoById(changeId);
}
/**
* SaveBo 1 1
*/
private ErpContractChange buildMainEntity(ErpContractChangeSaveBo bo) {
ErpContractChange e = new ErpContractChange();
e.setContractChangeId(bo.getContractChangeId());
@ -275,15 +345,27 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
return e;
}
/**
* ID
* @TableLogicMapper.delete UPDATE del_flag
*/
private void deleteChangeSubByChangeId(Long contractChangeId) {
changeInfoMapper.delete(new LambdaQueryWrapper<ErpContractChangeInfo>()
.eq(ErpContractChangeInfo::getContractChangeId, contractChangeId));
.eq(ErpContractChangeInfo::getContractChangeId, contractChangeId));
changeMaterialMapper.delete(new LambdaQueryWrapper<ErpContractChangeMaterial>()
.eq(ErpContractChangeMaterial::getContractChangeId, contractChangeId));
.eq(ErpContractChangeMaterial::getContractChangeId, contractChangeId));
changePaymentMethodMapper.delete(new LambdaQueryWrapper<ErpContractChangePaymentMethod>()
.eq(ErpContractChangePaymentMethod::getContractChangeId, contractChangeId));
.eq(ErpContractChangePaymentMethod::getContractChangeId, contractChangeId));
}
// ======================= 详情与回写 =======================
/**
* + + +
*
* @param contractChangeId
* @return VO main null
*/
@Override
public ContractChangeDetailVo queryDetailById(Long contractChangeId) {
ContractChangeDetailVo vo = new ContractChangeDetailVo();
@ -292,19 +374,24 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
return vo;
}
List<ErpContractChangeInfoVo> infoList = changeInfoMapper.selectVoList(
new LambdaQueryWrapper<ErpContractChangeInfo>().eq(ErpContractChangeInfo::getContractChangeId, contractChangeId));
new LambdaQueryWrapper<ErpContractChangeInfo>().eq(ErpContractChangeInfo::getContractChangeId, contractChangeId));
vo.setChangeInfo(infoList.isEmpty() ? null : infoList.get(0));
vo.setChangeMaterialList(changeMaterialMapper.selectVoList(
new LambdaQueryWrapper<ErpContractChangeMaterial>().eq(ErpContractChangeMaterial::getContractChangeId, contractChangeId)));
new LambdaQueryWrapper<ErpContractChangeMaterial>().eq(ErpContractChangeMaterial::getContractChangeId, contractChangeId)));
vo.setChangePaymentMethodList(changePaymentMethodMapper.selectVoList(
new LambdaQueryWrapper<ErpContractChangePaymentMethod>().eq(ErpContractChangePaymentMethod::getContractChangeId, contractChangeId)));
new LambdaQueryWrapper<ErpContractChangePaymentMethod>().eq(ErpContractChangePaymentMethod::getContractChangeId, contractChangeId)));
return vo;
}
/**
*
* 0//
*
* @param change contractIdchangeType
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void writeBackToContract(Long contractChangeId) {
ErpContractChange change = baseMapper.selectById(contractChangeId);
public void writeBackToContract(ErpContractChange change) {
if (change == null || !WRITE_BACK_NO.equals(change.getWriteBackFlag())) {
return;
}
@ -312,7 +399,7 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
if (CHANGE_TYPE_TERMINATE.equals(change.getChangeType())) {
doWriteBackTerminate(contractId);
} else {
doWriteBackContent(contractChangeId, contractId);
doWriteBackContent(change.getContractChangeId(), contractId);
}
change.setChangeStatus(CHANGE_STATUS_AVAILABLE);
change.setFlowStatus(BusinessStatusEnum.FINISH.getStatus());
@ -321,6 +408,7 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
baseMapper.updateById(change);
}
/** 解除合同回写:将原合同激活标识置为 0 */
private void doWriteBackTerminate(Long contractId) {
ErpContractInfo info = contractInfoMapper.selectById(contractId);
if (info != null) {
@ -329,9 +417,12 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
}
}
/**
* / @TableLogic
*/
private void doWriteBackContent(Long contractChangeId, Long contractId) {
List<ErpContractChangeInfoVo> infoList = changeInfoMapper.selectVoList(
new LambdaQueryWrapper<ErpContractChangeInfo>().eq(ErpContractChangeInfo::getContractChangeId, contractChangeId));
new LambdaQueryWrapper<ErpContractChangeInfo>().eq(ErpContractChangeInfo::getContractChangeId, contractChangeId));
if (!infoList.isEmpty()) {
ErpContractInfo contractInfo = contractInfoMapper.selectById(contractId);
if (contractInfo != null) {
@ -339,35 +430,67 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
contractInfoMapper.updateById(contractInfo);
}
}
// 逻辑删除原合同下物料(@TableLogic
LambdaQueryWrapper<ErpContractMaterial> materialDel = new LambdaQueryWrapper<ErpContractMaterial>().eq(ErpContractMaterial::getContractId, contractId);
contractMaterialMapper.delete(materialDel);
List<ErpContractChangeMaterial> materials = changeMaterialMapper.selectList(
new LambdaQueryWrapper<ErpContractChangeMaterial>().eq(ErpContractChangeMaterial::getContractChangeId, contractChangeId));
new LambdaQueryWrapper<ErpContractChangeMaterial>().eq(ErpContractChangeMaterial::getContractChangeId, contractChangeId));
for (ErpContractChangeMaterial m : materials) {
contractMaterialMapper.insert(copyChangeMaterialToContract(m, contractId));
}
// 逻辑删除原合同下付款方式(@TableLogic
LambdaQueryWrapper<ErpContractPaymentMethod> paymentDel = new LambdaQueryWrapper<ErpContractPaymentMethod>().eq(ErpContractPaymentMethod::getContractId, contractId);
contractPaymentMethodMapper.delete(paymentDel);
List<ErpContractChangePaymentMethod> payments = changePaymentMethodMapper.selectList(
new LambdaQueryWrapper<ErpContractChangePaymentMethod>().eq(ErpContractChangePaymentMethod::getContractChangeId, contractChangeId));
new LambdaQueryWrapper<ErpContractChangePaymentMethod>().eq(ErpContractChangePaymentMethod::getContractChangeId, contractChangeId));
for (ErpContractChangePaymentMethod p : payments) {
contractPaymentMethodMapper.insert(copyChangePaymentToContract(p, contractId));
}
}
// ======================= 流程监听 =======================
/**
*
* flowCode=HTBG flowStatus/changeStatus
* <ul>
* <li>WAITING -> </li>
* <li>FINISH -> writeBackToContract</li>
* <li>INVALID/TERMINATION -> </li>
* <li>BACK/CANCEL -> 稿</li>
* </ul>
*/
@EventListener(condition = "#processEvent.flowCode == T(org.dromara.oa.erp.service.impl.ErpContractChangeServiceImpl).FLOW_CODE_CONTRACT_CHANGE")
@EventListener(condition = "#processEvent.flowCode =='HTBG'")
public void processHandler(ProcessEvent processEvent) {
TenantHelper.dynamic(processEvent.getTenantId(), () -> {
if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())) {
Long contractChangeId = Convert.toLong(processEvent.getBusinessId());
writeBackToContract(contractChangeId);
log.info("当前任务执行了{}", processEvent.toString());
ErpContractChange contractChange = baseMapper.selectById(Convert.toLong(processEvent.getBusinessId()));
contractChange.setFlowStatus(processEvent.getStatus());
Map<String, Object> params = processEvent.getParams();
if (MapUtil.isNotEmpty(params)) {
// 预留:办理人等信息可按需从 params 取用
String handler = Convert.toStr(params.get("handler"));
}
if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.WAITING.getStatus())) {
contractChange.setChangeStatus(OAStatusEnum.APPROVING.getStatus());
} else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.FINISH.getStatus())) {
contractChange.setChangeStatus(OAStatusEnum.COMPLETED.getStatus());
writeBackToContract(contractChange);
} else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.INVALID.getStatus())
|| Objects.equals(processEvent.getStatus(), BusinessStatusEnum.TERMINATION.getStatus())) {
contractChange.setChangeStatus(OAStatusEnum.INVALID.getStatus());
} else if (Objects.equals(processEvent.getStatus(), BusinessStatusEnum.BACK.getStatus())
|| Objects.equals(processEvent.getStatus(), BusinessStatusEnum.CANCEL.getStatus())) {
contractChange.setChangeStatus(OAStatusEnum.DRAFT.getStatus());
}
baseMapper.updateById(contractChange);
});
}
// ======================= 回写时的数据拷贝 =======================
/**
*
*/
private void copyChangeInfoToContract(ErpContractChangeInfoVo snap, ErpContractInfo contract) {
contract.setContractFlag(snap.getContractFlag());
contract.setCustomerContractCode(snap.getCustomerContractCode());
@ -408,7 +531,9 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
contract.setRemark(snap.getRemark());
}
/** 变更物料快照转合同物料(回写)*/
/**
* erp_contract_material
*/
private ErpContractMaterial copyChangeMaterialToContract(ErpContractChangeMaterial m, Long contractId) {
ErpContractMaterial cm = new ErpContractMaterial();
cm.setContractId(contractId);
@ -429,7 +554,9 @@ public class ErpContractChangeServiceImpl implements IErpContractChangeService {
return cm;
}
/** 变更付款方式快照转合同付款方式(回写) */
/**
* erp_contract_payment_method
*/
private ErpContractPaymentMethod copyChangePaymentToContract(ErpContractChangePaymentMethod p, Long contractId) {
ErpContractPaymentMethod cpm = new ErpContractPaymentMethod();
cpm.setContractId(contractId);

Loading…
Cancel
Save