修改合同

This commit is contained in:
mx 2024-09-29 10:25:15 +08:00
parent 40631b8bb7
commit 2c50e16704
5 changed files with 113 additions and 39 deletions

View File

@ -152,6 +152,11 @@ public class PsContractInfoBo {
*/ */
private String contractStatusCode; private String contractStatusCode;
/**
* 修改合同之前的合同状态是什么记录是否已回款
*/
private String beforeContractStatus;
/** /**
* 签约主体 1 企业 2个人 * 签约主体 1 企业 2个人
*/ */

View File

@ -74,6 +74,9 @@ public class PsContractInfoVo implements Serializable {
* 合同状态 * 合同状态
*/ */
private String contractStatus; private String contractStatus;
/** /**
* 合同状态审批失败描述 * 合同状态审批失败描述
*/ */

View File

@ -78,6 +78,8 @@ public interface IPsContractInfoService {
*/ */
boolean updateContractByCode(PsContractInfoBo bo); boolean updateContractByCode(PsContractInfoBo bo);
void update(PsContractInfoVo old, PsContractInfoBo updateBo);
/** /**
* 作废合同 * 作废合同
* *

View File

@ -55,35 +55,39 @@ public class UpdateContractApproverServiceImpl extends ApproverAbstractServiceIm
PsContractInfoVo src = contractInfoService.queryContractByCode(psApproverRecord.getContractCode()); PsContractInfoVo src = contractInfoService.queryContractByCode(psApproverRecord.getContractCode());
//json化修改的数据 //json化修改的数据
PsContractInfoBo bo = JSON.parseObject(psApproverRecord.getUpdateData(),PsContractInfoBo.class); PsContractInfoBo bo = JSON.parseObject(psApproverRecord.getUpdateData(),PsContractInfoBo.class);
List<PsContractBusinessBo> businessBoslist = bo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList(); // List<PsContractBusinessBo> businessBoslist = bo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList();
//2.删除所有服务类型和服务项目,.插入服务类型 //2.删除所有服务类型和服务项目,.插入服务类型
businessService.saveList(businessBoslist,bo.getContractCode()); // businessService.saveList(businessBoslist,bo.getContractCode());
//保存公司合同关联表 // //保存公司合同关联表
companyInfoService.saveContractCompany(bo.getServiceCompanyInfoList(),src.getContractCode()); // companyInfoService.saveContractCompany(bo.getServiceCompanyInfoList(),src.getContractCode());
contractInfoService.update(src, bo);
//3.修改后操作 //3.修改后操作
afterUpdateOperate(bo, src); // afterUpdateOperate(bo, src);
//插入合同 //插入合同
PsContractInfo add = new PsContractInfo(); // PsContractInfo add = new PsContractInfo();
add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id // add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id
MapstructUtils.convert(bo, add); // MapstructUtils.convert(bo, add);
//合同状态已汇款 // //合同状态已汇款
add.setContractStatus(ContractStatusEnum.RETURN.getCode()); // add.setContractStatus(ContractStatusEnum.RETURN.getCode());
contractInfoService.updateByCode(add); // contractInfoService.updateByCode(add);
//4.生成合同 // //4.生成合同
contractInfoService.makePdf(add,bo,true); // contractInfoService.makePdf(add,bo,true);
//5.任务状态变为待派单子任务删除 //5.任务状态变为待派单子任务删除
List<PsTaskMain> task = taskMainMapper.selectList(Wrappers.<PsTaskMain>lambdaQuery().eq(PsTaskMain::getContractCode, psApproverRecord.getContractCode()).eq(PsTaskMain::getDelFlag, 0)); // List<PsTaskMain> task = taskMainMapper.selectList(Wrappers.<PsTaskMain>lambdaQuery().eq(PsTaskMain::getContractCode, psApproverRecord.getContractCode()).eq(PsTaskMain::getDelFlag, 0));
List<Long> list = task.stream().map(PsTaskMain::getId).collect(Collectors.toList()); // List<Long> list = task.stream().map(PsTaskMain::getId).collect(Collectors.toList());
if(CollectionUtils.isEmpty(list)){ // if(CollectionUtils.isEmpty(list)){
return; // return;
} // }
//任务变为待派单 // //任务变为待派单
taskMainMapper.update(Wrappers.<PsTaskMain>lambdaUpdate() // taskMainMapper.update(Wrappers.<PsTaskMain>lambdaUpdate()
.set(PsTaskMain::getTaskStatus, TaskStatusEnum.INIT.getCode()) // .set(PsTaskMain::getTaskStatus, TaskStatusEnum.INIT.getCode())
.in(PsTaskMain::getDelFlag,0) // .in(PsTaskMain::getDelFlag,0)
.in(PsTaskMain::getId,list)); // .in(PsTaskMain::getId,list));
//删除子任务 // //删除子任务
appointMapper.update(Wrappers.<PsTaskAppoint>lambdaUpdate().set(PsTaskAppoint::getAppointStatus, TaskStatusEnum.AppointStatusEnum.CANCEL.getCode()).in(PsTaskAppoint::getTaskId,list)); // appointMapper.update(Wrappers.<PsTaskAppoint>lambdaUpdate().set(PsTaskAppoint::getAppointStatus, TaskStatusEnum.AppointStatusEnum.CANCEL.getCode()).in(PsTaskAppoint::getTaskId,list));
} }
/** /**
* 修改合同后操作 * 修改合同后操作

View File

@ -63,6 +63,8 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
@Resource @Resource
private final IPsCompanyInfoService companyInfoService; private final IPsCompanyInfoService companyInfoService;
private final PsCompanyInfoMapper companyInfoMapper; private final PsCompanyInfoMapper companyInfoMapper;
private final PsContractCompanyMapper psContractCompanyMapper;
@Resource @Resource
private final IPsCustomInfoService customInfoService; private final IPsCustomInfoService customInfoService;
@Resource @Resource
@ -77,7 +79,8 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
private final PsTaskMainMapper taskMainMapper; private final PsTaskMainMapper taskMainMapper;
private final PsTaskAppointMapper taskAppointMapper; private final PsTaskAppointMapper taskAppointMapper;
private final PsApproverRecordMapper recordMapper; private final PsApproverRecordMapper recordMapper;
private final PsContractBusinessMapper businessMapper;
private final PsContractBusinessDetailMapper businessDetailMapper;
private final ISysDictDataService dictDataService; private final ISysDictDataService dictDataService;
private final IPsApproverRecordService approverRecordService; private final IPsApproverRecordService approverRecordService;
@ -327,7 +330,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
updateBo.getCompanyInfoBo().setCustomId(updateBo.getCustomId()); updateBo.getCompanyInfoBo().setCustomId(updateBo.getCustomId());
} }
updateBo.setBeforeContractStatus(old.getContractStatus());
//5.已回款之后的合同修改后走审批 //5.已回款之后的合同修改后走审批
if(!ContractStatusEnum.isReturn(old.getContractStatus())){ if(!ContractStatusEnum.isReturn(old.getContractStatus())){
@ -376,7 +379,8 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
addCompany.add(companyInfoBo); addCompany.add(companyInfoBo);
continue; continue;
} }
if (!oldCompanyMap.containsKey(companyInfoBo.getId())){ PsCompanyInfoVo oldCompanyInfo = oldCompanyMap.get(companyInfoBo.getId());
if (oldCompanyInfo == null){
addCompany.add(companyInfoBo); addCompany.add(companyInfoBo);
continue; continue;
} }
@ -386,17 +390,28 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
for (PsCompanyInfoBo psCompanyInfoBo : updateCompany) { for (PsCompanyInfoBo psCompanyInfoBo : updateCompany) {
//服务公司信息修改服务项目修改 //服务公司信息修改服务项目修改
companyInfoService.saveBo(psCompanyInfoBo);
} }
for (PsCompanyInfoVo psCompanyInfoBo : oldCompanyMap.values()) { for (PsCompanyInfoVo psCompanyInfoBo : oldCompanyMap.values()) {
//删除服务公司
QueryWrapper<PsContractCompany> qw1 = Wrappers.query();
qw1.eq( "company_id", psCompanyInfoBo.getId());
qw1.eq( "contract_code", updateBo.getContractCode());
psContractCompanyMapper.delete(qw1);
//服务公司删则删任务重新校验合同状态可能已完成 //服务公司删则删任务重新校验合同状态可能已完成
QueryWrapper<PsTaskMain> qw = Wrappers.query(); QueryWrapper<PsTaskMain> qw = Wrappers.query();
//删除标志 qw.eq( "service_company_id", psCompanyInfoBo.getId());
qw.eq( "info.del_flag", 0);//删除标志 qw.eq( "contract_code", updateBo.getContractCode());
List<PsTaskMain> psTaskMainList = taskMainMapper.selectList(qw);
taskMainMapper.delete(qw); taskMainMapper.delete(qw);
// taskAppointMapper.delete();
//服务公司删则删任务重新校验合同状态可能已完成
List<Long> taskIds = psTaskMainList.stream().map(stTask1 -> stTask1.getId()).collect(Collectors.toList());
taskAppointMapper.deleteByIds(taskIds);
} }
List<PsTaskMain> psTaskMainList = new ArrayList<>();
for (PsCompanyInfoBo companyInfoBo : addCompany) { for (PsCompanyInfoBo companyInfoBo : addCompany) {
//服务公司加增加任务重新计算合同是待分配还是已分配 //服务公司加增加任务重新计算合同是待分配还是已分配
companyInfoBo.setCompanyType("2"); companyInfoBo.setCompanyType("2");
@ -410,10 +425,25 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
psContractBusinessBo.setCompanyId(companyInfoBo.getId()); psContractBusinessBo.setCompanyId(companyInfoBo.getId());
} }
} }
if(ContractStatusEnum.isReturn(old.getContractStatus())){
//已回款的添加任务没回款的等审批后再添加
PsTaskMain psTaskMain = new PsTaskMain();
psTaskMain.setContractCode(old.getContractCode());
psTaskMain.setTaskType(TaskTypeEnum.CONTRACT.getCode());
psTaskMain.setTaskStatus(TaskStatusEnum.INIT.getCode());
psTaskMain.setCompanyId(updateBo.getCompanyInfoBo().getId());
psTaskMain.setCustomId(updateBo.getCustomId());
psTaskMain.setServiceCompanyId(companyInfoBo.getId());
psTaskMainList.add(psTaskMain);
}
}
if (!psTaskMainList.isEmpty()){
taskMainService.insertBatch(psTaskMainList);
} }
//保存公司合同关联表
companyInfoService.saveContractCompany(updateBo.getServiceCompanyInfoList(), old.getContractCode());
//4.装填合同信息 //4.装填合同信息
List<PsContractBusinessBo> list = updateBo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList(); List<PsContractBusinessBo> list = updateBo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList();
@ -432,21 +462,51 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService {
//重新计算当前的合同状态待回款待处理处理中已完结已作废已完结和处理中可能会变成待处理 //重新计算当前的合同状态待回款待处理处理中已完结已作废已完结和处理中可能会变成待处理
if(ContractStatusEnum.isReturn(old.getContractStatus())){ if(ContractStatusEnum.isReturn(old.getContractStatus())){
updateBo.setContractStatusCode(calcContractStatus(updateBo).getCode());
}
//签章合同签字盖章成功:修改合同成功合同签字盖章变回未签章状态需重新进行签章申请
if(StringUtils.equals(old.getSignStatus(), CommonStatusEnum.SUCCESS.getCode()) ){
updateBo.setSignStatus(CommonStatusEnum.INIT.getCode());
} }
PsContractInfo add = new PsContractInfo(); PsContractInfo add = new PsContractInfo();
MapstructUtils.convert(updateBo, add); MapstructUtils.convert(updateBo, add);
add.setCompanyId(updateBo.getCompanyInfoBo().getId());//公司id add.setCompanyId(updateBo.getCompanyInfoBo().getId());//公司id
add.setIsCancel(CommonStatusEnum.INIT.getCode());
add.setContractStatus(updateBo.getContractStatusCode());
this.updateByCode(add); this.updateByCode(add);
//4.删除所有服务类型和服务项目,.插入服务类型
businessService.saveList(list, add.getContractCode()); //删除所有服务
QueryWrapper<PsContractBusiness> qw2 = Wrappers.query();
qw2.eq( "contract_code", updateBo.getContractCode());
List<PsContractBusiness> psContractBusinesses = businessMapper.selectList(qw2);
businessMapper.delete(qw2);
List<Long> ids = psContractBusinesses.stream().map(item -> item.getId()).collect(Collectors.toList());
businessDetailMapper.deleteByIds(ids);
//创建服务
businessService.saveList(list, updateBo.getContractCode());
makePdf(add, updateBo,true); makePdf(add, updateBo,true);
} }
public ContractStatusEnum calcContractStatus(PsContractInfoBo updateBo){
// QueryWrapper<PsTaskMain> qw = Wrappers.query();
// qw.eq( "contract_code", updateBo.getContractCode());
// List<PsTaskMain> psTaskMainList = taskMainMapper.selectList(qw);
QueryWrapper<PsTaskAppoint> qw2 = Wrappers.query();
qw2.eq( "contract_code", updateBo.getContractCode());
List<PsTaskAppoint> psTaskAppoints = taskAppointMapper.selectList(qw2);
for (PsTaskAppoint psTaskAppoint : psTaskAppoints) {
if (AppointStatusEnum.ING.getCode().equals(psTaskAppoint.getAppointStatus())){
return ContractStatusEnum.EXECUTION;
}
}
return ContractStatusEnum.RETURN;
}
/** /**
* 作废合同 * 作废合同
* *