From 2c50e16704f3b93ab34703f23ed7e5ed2a3c441a Mon Sep 17 00:00:00 2001 From: mx <1289317512@qq.com> Date: Sun, 29 Sep 2024 10:25:15 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=90=88=E5=90=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../business/domain/bo/PsContractInfoBo.java | 5 ++ .../business/domain/vo/PsContractInfoVo.java | 3 + .../service/IPsContractInfoService.java | 2 + .../UpdateContractApproverServiceImpl.java | 54 ++++++------ .../impl/PsContractInfoServiceImpl.java | 88 ++++++++++++++++--- 5 files changed, 113 insertions(+), 39 deletions(-) diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsContractInfoBo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsContractInfoBo.java index 061213d..2899ca7 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsContractInfoBo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/bo/PsContractInfoBo.java @@ -152,6 +152,11 @@ public class PsContractInfoBo { */ private String contractStatusCode; + /** + * 修改合同之前的合同状态是什么,记录是否已回款 + */ + private String beforeContractStatus; + /** * 签约主体 1 企业 2个人 */ diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractInfoVo.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractInfoVo.java index 9b9fe97..40add34 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractInfoVo.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/domain/vo/PsContractInfoVo.java @@ -74,6 +74,9 @@ public class PsContractInfoVo implements Serializable { * 合同状态 */ private String contractStatus; + + + /** * 合同状态审批失败描述 */ diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsContractInfoService.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsContractInfoService.java index ed5d758..f2a597c 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsContractInfoService.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/IPsContractInfoService.java @@ -78,6 +78,8 @@ public interface IPsContractInfoService { */ boolean updateContractByCode(PsContractInfoBo bo); + void update(PsContractInfoVo old, PsContractInfoBo updateBo); + /** * 作废合同 * diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/UpdateContractApproverServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/UpdateContractApproverServiceImpl.java index 80a6e05..5f486b5 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/UpdateContractApproverServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/approver/impl/UpdateContractApproverServiceImpl.java @@ -55,35 +55,39 @@ public class UpdateContractApproverServiceImpl extends ApproverAbstractServiceIm PsContractInfoVo src = contractInfoService.queryContractByCode(psApproverRecord.getContractCode()); //json化修改的数据 PsContractInfoBo bo = JSON.parseObject(psApproverRecord.getUpdateData(),PsContractInfoBo.class); - List businessBoslist = bo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList(); +// List businessBoslist = bo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList(); //2.删除所有服务类型和服务项目,.插入服务类型 - businessService.saveList(businessBoslist,bo.getContractCode()); - //保存公司合同关联表 - companyInfoService.saveContractCompany(bo.getServiceCompanyInfoList(),src.getContractCode()); +// businessService.saveList(businessBoslist,bo.getContractCode()); +// //保存公司合同关联表 +// companyInfoService.saveContractCompany(bo.getServiceCompanyInfoList(),src.getContractCode()); + + contractInfoService.update(src, bo); + + //3.修改后操作 - afterUpdateOperate(bo, src); +// afterUpdateOperate(bo, src); //插入合同 - PsContractInfo add = new PsContractInfo(); - add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id - MapstructUtils.convert(bo, add); - //合同状态已汇款 - add.setContractStatus(ContractStatusEnum.RETURN.getCode()); - contractInfoService.updateByCode(add); - //4.生成合同 - contractInfoService.makePdf(add,bo,true); +// PsContractInfo add = new PsContractInfo(); +// add.setCompanyId(bo.getCompanyInfoBo().getId());//公司id +// MapstructUtils.convert(bo, add); +// //合同状态已汇款 +// add.setContractStatus(ContractStatusEnum.RETURN.getCode()); +// contractInfoService.updateByCode(add); +// //4.生成合同 +// contractInfoService.makePdf(add,bo,true); //5.任务状态变为待派单,子任务删除 - List task = taskMainMapper.selectList(Wrappers.lambdaQuery().eq(PsTaskMain::getContractCode, psApproverRecord.getContractCode()).eq(PsTaskMain::getDelFlag, 0)); - List list = task.stream().map(PsTaskMain::getId).collect(Collectors.toList()); - if(CollectionUtils.isEmpty(list)){ - return; - } - //任务变为待派单 - taskMainMapper.update(Wrappers.lambdaUpdate() - .set(PsTaskMain::getTaskStatus, TaskStatusEnum.INIT.getCode()) - .in(PsTaskMain::getDelFlag,0) - .in(PsTaskMain::getId,list)); - //删除子任务 - appointMapper.update(Wrappers.lambdaUpdate().set(PsTaskAppoint::getAppointStatus, TaskStatusEnum.AppointStatusEnum.CANCEL.getCode()).in(PsTaskAppoint::getTaskId,list)); +// List task = taskMainMapper.selectList(Wrappers.lambdaQuery().eq(PsTaskMain::getContractCode, psApproverRecord.getContractCode()).eq(PsTaskMain::getDelFlag, 0)); +// List list = task.stream().map(PsTaskMain::getId).collect(Collectors.toList()); +// if(CollectionUtils.isEmpty(list)){ +// return; +// } +// //任务变为待派单 +// taskMainMapper.update(Wrappers.lambdaUpdate() +// .set(PsTaskMain::getTaskStatus, TaskStatusEnum.INIT.getCode()) +// .in(PsTaskMain::getDelFlag,0) +// .in(PsTaskMain::getId,list)); +// //删除子任务 +// appointMapper.update(Wrappers.lambdaUpdate().set(PsTaskAppoint::getAppointStatus, TaskStatusEnum.AppointStatusEnum.CANCEL.getCode()).in(PsTaskAppoint::getTaskId,list)); } /** * 修改合同后操作 diff --git a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java index 97a3a3f..10ded07 100644 --- a/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java +++ b/pusong-modules/pusong-business/src/main/java/com/pusong/business/service/impl/PsContractInfoServiceImpl.java @@ -63,6 +63,8 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { @Resource private final IPsCompanyInfoService companyInfoService; private final PsCompanyInfoMapper companyInfoMapper; + + private final PsContractCompanyMapper psContractCompanyMapper; @Resource private final IPsCustomInfoService customInfoService; @Resource @@ -77,7 +79,8 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { private final PsTaskMainMapper taskMainMapper; private final PsTaskAppointMapper taskAppointMapper; private final PsApproverRecordMapper recordMapper; - + private final PsContractBusinessMapper businessMapper; + private final PsContractBusinessDetailMapper businessDetailMapper; private final ISysDictDataService dictDataService; private final IPsApproverRecordService approverRecordService; @@ -327,7 +330,7 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { updateBo.getCompanyInfoBo().setCustomId(updateBo.getCustomId()); } - + updateBo.setBeforeContractStatus(old.getContractStatus()); //5.已回款之后的合同修改后走审批 if(!ContractStatusEnum.isReturn(old.getContractStatus())){ @@ -376,7 +379,8 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { addCompany.add(companyInfoBo); continue; } - if (!oldCompanyMap.containsKey(companyInfoBo.getId())){ + PsCompanyInfoVo oldCompanyInfo = oldCompanyMap.get(companyInfoBo.getId()); + if (oldCompanyInfo == null){ addCompany.add(companyInfoBo); continue; } @@ -386,17 +390,28 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { for (PsCompanyInfoBo psCompanyInfoBo : updateCompany) { //服务公司信息修改、、服务项目修改 - + companyInfoService.saveBo(psCompanyInfoBo); } for (PsCompanyInfoVo psCompanyInfoBo : oldCompanyMap.values()) { + //删除服务公司 + QueryWrapper qw1 = Wrappers.query(); + qw1.eq( "company_id", psCompanyInfoBo.getId()); + qw1.eq( "contract_code", updateBo.getContractCode()); + psContractCompanyMapper.delete(qw1); + //服务公司删,则删任务,重新校验合同状态,可能已完成 QueryWrapper qw = Wrappers.query(); - //删除标志 - qw.eq( "info.del_flag", 0);//删除标志 - + qw.eq( "service_company_id", psCompanyInfoBo.getId()); + qw.eq( "contract_code", updateBo.getContractCode()); + List psTaskMainList = taskMainMapper.selectList(qw); taskMainMapper.delete(qw); -// taskAppointMapper.delete(); + + //服务公司删,则删任务,重新校验合同状态,可能已完成 + List taskIds = psTaskMainList.stream().map(stTask1 -> stTask1.getId()).collect(Collectors.toList()); + taskAppointMapper.deleteByIds(taskIds); } + + List psTaskMainList = new ArrayList<>(); for (PsCompanyInfoBo companyInfoBo : addCompany) { //服务公司加,增加任务,重新计算合同是待分配还是已分配 companyInfoBo.setCompanyType("2"); @@ -410,10 +425,25 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { 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.装填合同信息 List list = updateBo.getServiceCompanyInfoList().stream().flatMap(com -> com.getBusinessList().stream()).toList(); @@ -432,21 +462,51 @@ public class PsContractInfoServiceImpl implements IPsContractInfoService { //重新计算当前的合同状态,待回款、待处理、处理中、已完结、已作废;;;已完结和处理中可能会变成待处理 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(); MapstructUtils.convert(updateBo, add); add.setCompanyId(updateBo.getCompanyInfoBo().getId());//公司id + add.setIsCancel(CommonStatusEnum.INIT.getCode()); + add.setContractStatus(updateBo.getContractStatusCode()); this.updateByCode(add); - //4.删除所有服务类型和服务项目,.插入服务类型 - businessService.saveList(list, add.getContractCode()); + + //删除所有服务 + QueryWrapper qw2 = Wrappers.query(); + qw2.eq( "contract_code", updateBo.getContractCode()); + List psContractBusinesses = businessMapper.selectList(qw2); + businessMapper.delete(qw2); + List ids = psContractBusinesses.stream().map(item -> item.getId()).collect(Collectors.toList()); + businessDetailMapper.deleteByIds(ids); + //创建服务 + businessService.saveList(list, updateBo.getContractCode()); + makePdf(add, updateBo,true); } + public ContractStatusEnum calcContractStatus(PsContractInfoBo updateBo){ +// QueryWrapper qw = Wrappers.query(); +// qw.eq( "contract_code", updateBo.getContractCode()); +// List psTaskMainList = taskMainMapper.selectList(qw); + + QueryWrapper qw2 = Wrappers.query(); + qw2.eq( "contract_code", updateBo.getContractCode()); + List psTaskAppoints = taskAppointMapper.selectList(qw2); + for (PsTaskAppoint psTaskAppoint : psTaskAppoints) { + if (AppointStatusEnum.ING.getCode().equals(psTaskAppoint.getAppointStatus())){ + return ContractStatusEnum.EXECUTION; + } + } + + return ContractStatusEnum.RETURN; + } + /** * 作废合同 *