收入合同关联会员项目

This commit is contained in:
梁琦涛
2021-09-18 09:03:31 +08:00
parent cec778f25b
commit 2e9a63f4da
16 changed files with 564 additions and 67 deletions
@@ -238,8 +238,8 @@ public class PayIncomeContractController extends JeroController<PayIncomeContrac
@ApiOperation(value="收入合同-关联", notes="收入合同-关联")
@PostMapping(value = "/associated")
public Result<?> associated(@RequestBody List<PayIncomeContractAssociated> listPayIncomeContractAssociated) {
List<ProjectOutput> list = payIncomeContractService.associated(listPayIncomeContractAssociated);
return Result.OK("关联成功!",list);
payIncomeContractService.associated(listPayIncomeContractAssociated);
return Result.OK("关联成功!");
}
/**
@@ -65,7 +65,7 @@ public interface IPayIncomeContractService extends IService<PayIncomeContract> {
* @Return
* @Exception
*/
List<ProjectOutput> associated(List<PayIncomeContractAssociated> listPayIncomeContractAssociated);
void associated(List<PayIncomeContractAssociated> listPayIncomeContractAssociated);
/**
* @Description 取消关联
* @Author lqt
@@ -21,9 +21,14 @@ import com.jero.contract.service.IPayIncomeContractService;
import com.jero.contract.vo.PayIncomeContractInput;
import com.jero.contract.vo.ProjectOutput;
import com.jero.meeting.service.IPayMeetingService;
import com.jero.member.entity.PayMemberProject;
import com.jero.member.entity.PayMemberProjectSubitem;
import com.jero.member.entity.TbMemberProjectSubitem;
import com.jero.member.service.IPayMemberProjectService;
import com.jero.member.service.IPayMemberProjectSubitemService;
import com.jero.member.service.ITbMemberProjectSubitemService;
import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.service.ISysUserService;
import com.jero.pack.entity.PayPackCompany;
import com.jero.pack.entity.PayPackCompanyProject;
import com.jero.pack.service.IPayPackCompanyProjectService;
import com.jero.pack.service.IPayPackCompanyService;
@@ -89,6 +94,12 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
private IPayPackCompanyProjectService payPackCompanyProjectService;
@Resource
private IPayMeetingService payMeetingService;
@Resource
private IPayMemberProjectService memberProjectService;
@Resource
private IPayMemberProjectSubitemService memberProjectSubitemService;
@Resource
private ITbMemberProjectSubitemService tbMemberProjectSubitemService;
@Override
public IPage<PayIncomeContract> queryPageList(Page<PayIncomeContract> page, PayIncomeContract payIncomeContract, String chargeStatus,String projectName, String startTime, String endTime) {
@@ -106,7 +117,7 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
throw new JeroBootException("收入合同信息不能为空!");
}
if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived())
&& payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) == -1){
&& payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) < 0){
throw new JeroBootException("应收金额大于已收金额!");
}
StringBuilder msgPayIncomeContract = ValidUtil.validateAll(payIncomeContract);
@@ -174,16 +185,15 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
private void checkPayIncomeContractInstallment(List<PayIncomeContractInstallment> listPayIncomeContractInstallment,PayIncomeContract payIncomeContract){
if(!CollectionUtils.isEmpty(listPayIncomeContractInstallment)){
StringBuilder msgPayIncomeContractInstallment = new StringBuilder();
List<PayIncomeContractInstallment> finalListPayIncomeContractInstallment = listPayIncomeContractInstallment;
listPayIncomeContractInstallment.forEach(p->{
p.setContractId(payIncomeContract.getId());
StringBuilder sb = ValidUtil.validateAll(p);
if(!StringUtils.isBlank(sb)){
msgPayIncomeContractInstallment.append("第").append(finalListPayIncomeContractInstallment.indexOf(p) + 1).append("阶段:").append(sb);
msgPayIncomeContractInstallment.append("第").append(listPayIncomeContractInstallment.indexOf(p) + 1).append("阶段:").append(sb);
}
if(!Objects.isNull(p.getAccountsReceivableAmount()) && !Objects.isNull(p.getPaidAmount())
&& p.getAccountsReceivableAmount().compareTo(p.getPaidAmount()) == -1){
msgPayIncomeContractInstallment.append("第").append(finalListPayIncomeContractInstallment.indexOf(p) + 1).append("期应收金额大于已收金额!");
&& p.getAccountsReceivableAmount().compareTo(p.getPaidAmount()) < 0){
msgPayIncomeContractInstallment.append("第").append(listPayIncomeContractInstallment.indexOf(p) + 1).append("期应收金额大于已收金额!");
}
});
if(!StringUtils.isBlank(msgPayIncomeContractInstallment)){
@@ -204,7 +214,7 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
throw new JeroBootException("收入合同信息不能为空!");
}
if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived())
&& payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) == -1){
&& payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) < 0){
throw new JeroBootException("应收金额大于已收金额!");
}
StringBuilder msgPayIncomeContract = ValidUtil.validateAll(payIncomeContract);
@@ -219,11 +229,11 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
throw new JeroBootException("收入合同不存在!");
}
// 项目已打包
if(payIncomeContractStatus.getPack() == PayIncomeContractCommon.PACK1){
if(payIncomeContract.getPack() != PayIncomeContractCommon.PACK1){
if(Objects.equals(payIncomeContractStatus.getPack(),PayIncomeContractCommon.PACK1)){
if(!Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
throw new JeroBootException("打包状态不可更改!");
}
if(payIncomeContract.getPackYear() != payIncomeContractStatus.getPackYear()){
if(!Objects.equals(payIncomeContract.getPackYear(),payIncomeContractStatus.getPackYear())){
throw new JeroBootException("打包年份不可更改!");
}
}
@@ -273,12 +283,11 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
@Override
@Transactional
public List<ProjectOutput> associated(List<PayIncomeContractAssociated> listPayIncomeContractAssociated) {
public void associated(List<PayIncomeContractAssociated> listPayIncomeContractAssociated) {
if(CollectionUtils.isEmpty(listPayIncomeContractAssociated)){
throw new JeroBootException("关联项目不能为空!");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
List<ProjectOutput> listProjectOutput = new ArrayList<>();
listPayIncomeContractAssociated.forEach(p->{
ProjectOutput projectOutput = new ProjectOutput();
StringBuilder msgPayIncomeContractAssociated = ValidUtil.validateAll(p);
@@ -322,14 +331,8 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
payPackCompanyProjectService.setPack(payCommonProject.getChargeCompanyId(),payCommonProject.getContactsId(),payIncomeContract.getPackYear(),payCommonProject.getId(),PayIncomeContractCommon.PROJECT_TYPE1,payIncomeContract.getPack());
}
}
projectOutput.setProjectId(payCommonProject.getId());
projectOutput.setProjectType(PayIncomeContractCommon.PROJECT_TYPE1);
projectOutput.setChargeProject(payCommonProject.getChargeProject());
projectOutput.setChargeUse(payCommonProject.getChargeUse());
projectOutput.setChargeCompanyName(payCommonProject.getChargeCompanyTemporaryName());
projectOutput.setContactsName(payCommonProject.getChargeCompanyTemporaryName());
projectOutput.setPaidAmount(payCommonProject.getPaidAmount());
projectOutput.setReceivableAmount(payCommonProject.getReceivableAmount());
// 更新项目id
p.setProjectId(payCommonProject.getId());
break;
case PayIncomeContractCommon.PROJECT_TYPE2:
// 工作组项目
@@ -339,7 +342,6 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
}
LambdaQueryWrapper<PayWorkingGroupSubItem> queryPayWorkingGroupSubItem = new LambdaQueryWrapper<>();
queryPayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getWorkingGroupId,payWorkingGroup.getId());
queryPayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getChargeCompanyId,payIncomeContract.getSignedCompanyId());
List<PayWorkingGroupSubItem> listPayWorkingGroupSubItem = payWorkingGroupSubItemService.list(queryPayWorkingGroupSubItem);
if(CollectionUtils.isEmpty(listPayWorkingGroupSubItem)){
throw new JeroBootException("工作组成员单位不存在!");
@@ -370,14 +372,6 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
}
// 更新项目id
p.setProjectId(listPayWorkingGroupSubItem.get(0).getId());
projectOutput.setProjectId(listPayWorkingGroupSubItem.get(0).getId());
projectOutput.setProjectType(PayIncomeContractCommon.PROJECT_TYPE2);
projectOutput.setChargeProject(payWorkingGroup.getWorkingGroupProject());
projectOutput.setChargeProject(listPayWorkingGroupSubItem.get(0).getChargeProject());
projectOutput.setChargeCompanyName(listPayWorkingGroupSubItem.get(0).getChargeCompanyTemporaryName());
projectOutput.setContactsName(listPayWorkingGroupSubItem.get(0).getChargeCompanyTemporaryName());
projectOutput.setPaidAmount(listPayWorkingGroupSubItem.get(0).getPaidAmount());
projectOutput.setReceivableAmount(listPayWorkingGroupSubItem.get(0).getReceivableAmount());
break;
case PayIncomeContractCommon.PROJECT_TYPE3:
// 打包合同不可选择会议项目
@@ -385,34 +379,83 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
throw new JeroBootException("打包合同不可关联会议项目!");
}
// 更新项目id
// p.setProjectId(listPayWorkingGroupSubItem.get(0).getId());
// projectOutput.setProjectId(listPayWorkingGroupSubItem.get(0).getId());
// projectOutput.setProjectType(PayIncomeContractCommon.PROJECT_TYPE2);
// projectOutput.setChargeProject(payWorkingGroup.getWorkingGroupProject());
// projectOutput.setChargeProject(listPayWorkingGroupSubItem.get(0).getChargeProject());
// projectOutput.setChargeCompanyName(listPayWorkingGroupSubItem.get(0).getChargeCompanyTemporaryName());
// projectOutput.setContactsName(listPayWorkingGroupSubItem.get(0).getChargeCompanyTemporaryName());
// projectOutput.setPaidAmount(listPayWorkingGroupSubItem.get(0).getPaidAmount());
// projectOutput.setReceivableAmount(listPayWorkingGroupSubItem.get(0).getReceivableAmount());
// todo 会议项目
break;
case PayIncomeContractCommon.PROJECT_TYPE4:
// todo 会员项目
// 会员项目
PayMemberProject payMemberProject = memberProjectService.getById(p.getProjectId());
if(Objects.isNull(payMemberProject)){
throw new JeroBootException("会员项目不存在!");
}
LambdaQueryWrapper<PayMemberProjectSubitem> queryPayMemberProjectSubitem = new LambdaQueryWrapper<>();
queryPayMemberProjectSubitem.eq(PayMemberProjectSubitem::getProjectId,payMemberProject.getId());
List<PayMemberProjectSubitem> listPayMemberProjectSubitem = memberProjectSubitemService.list(queryPayMemberProjectSubitem);
if(CollectionUtils.isEmpty(listPayMemberProjectSubitem)){
throw new JeroBootException("会员项目成员单位不存在!");
}
// 验证企业是否正确
if(!Objects.equals(listPayMemberProjectSubitem.get(0).getCompanyId(),payIncomeContract.getSignedCompanyId())){
throw new JeroBootException("企业不匹配!");
}
// 验证项目是否已被关联
getIncomeContractAssociated(p.getContractId(),listPayMemberProjectSubitem.get(0).getId());
// 合同选择打包,运行年份不是打包企业,添加打包企业
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
// 打包,将关联项目设置成打包
LambdaUpdateWrapper<PayMemberProjectSubitem> updatePayMemberProjectSubitem = new LambdaUpdateWrapper<>();
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getUpdateBy,sysUser.getUsername());
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getUpdateTime,new Date());
if(!StringUtils.isBlank(listPayMemberProjectSubitem.get(0).getContractNo())){
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getContractNo,payIncomeContract.getContractNum());
}
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getPack,PayIncomeContractCommon.PACK1);
updatePayMemberProjectSubitem.eq(PayMemberProjectSubitem::getId,listPayMemberProjectSubitem.get(0).getId());
memberProjectSubitemService.update(updatePayMemberProjectSubitem);
// 添加打包企业
// 合同选择了打包,查看打包年份&&打包企业是否存在
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
payPackCompanyProjectService.setPack(listPayMemberProjectSubitem.get(0).getCompanyId(),listPayMemberProjectSubitem.get(0).getCompanyContactId(),payIncomeContract.getPackYear(),listPayMemberProjectSubitem.get(0).getId(),PayIncomeContractCommon.PROJECT_TYPE4,payIncomeContract.getPack());
}
}
p.setProjectId(listPayMemberProjectSubitem.get(0).getId());
break;
case PayIncomeContractCommon.PROJECT_TYPE5:
// todo 标协会员
// 标协会员
TbMemberProjectSubitem tbMemberProjectSubitem = tbMemberProjectSubitemService.getById(p.getProjectId());
if(Objects.isNull(tbMemberProjectSubitem)){
throw new JeroBootException("标协会员项目不存在!");
}
// 验证企业是否正确
if(!Objects.equals(tbMemberProjectSubitem.getCompanyId(),payIncomeContract.getSignedCompanyId())){
throw new JeroBootException("企业不匹配!");
}
// 验证项目是否已被关联
getIncomeContractAssociated(p.getContractId(),tbMemberProjectSubitem.getId());
// 合同选择打包,运行年份不是打包企业,添加打包企业
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
// 打包,将关联项目设置成打包
LambdaUpdateWrapper<TbMemberProjectSubitem> updateTbMemberProjectSubitem = new LambdaUpdateWrapper<>();
updateTbMemberProjectSubitem.set(TbMemberProjectSubitem::getUpdateBy,sysUser.getUsername());
updateTbMemberProjectSubitem.set(TbMemberProjectSubitem::getUpdateTime,new Date());
updateTbMemberProjectSubitem.set(TbMemberProjectSubitem::getPack,PayIncomeContractCommon.PACK1);
updateTbMemberProjectSubitem.eq(TbMemberProjectSubitem::getId,tbMemberProjectSubitem.getId());
tbMemberProjectSubitemService.update(updateTbMemberProjectSubitem);
// 添加打包企业
// 合同选择了打包,查看打包年份&&打包企业是否存在
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
payPackCompanyProjectService.setPack(tbMemberProjectSubitem.getCompanyId(),tbMemberProjectSubitem.getLiaisonManId(),payIncomeContract.getPackYear(),tbMemberProjectSubitem.getId(),PayIncomeContractCommon.PROJECT_TYPE5,payIncomeContract.getPack());
}
}
p.setProjectId(tbMemberProjectSubitem.getId());
break;
default:break;
}
payIncomeContractAssociatedService.save(p);
projectOutput.setContractId(p.getContractId());
projectOutput.setId(p.getId());
listProjectOutput.add(projectOutput);
});
return listProjectOutput;
}
/**
* @Description 验证项目是否被合同关联
@@ -443,12 +486,12 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
throw new JeroBootException("关联id不能为空!");
}
PayIncomeContractAssociated payIncomeContractAssociated = payIncomeContractAssociatedService.getById(input.getId());
if(!Objects.equals(input.getContractId(),payIncomeContractAssociated.getContractId())){
throw new JeroBootException("关联id不能为空!");
}
if(Objects.isNull(payIncomeContractAssociated)){
throw new JeroBootException("关联记录不存在!");
}
if(!Objects.equals(input.getContractId(),payIncomeContractAssociated.getContractId())){
throw new JeroBootException("关联id不能为空!");
}
PayIncomeContract payIncomeContract = payIncomeContractService.getById(payIncomeContractAssociated.getContractId());
if(Objects.isNull(payIncomeContract)){
throw new JeroBootException("合同不存在!");
@@ -514,10 +557,58 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
// todo 会议项目
break;
case PayIncomeContractCommon.PROJECT_TYPE4:
// todo 会员项目
// 会员项目
PayMemberProjectSubitem payMemberProjectSubitem = memberProjectSubitemService.getById(payIncomeContractAssociated.getProjectId());
if(Objects.isNull(payMemberProjectSubitem)){
throw new JeroBootException("会员项目不存在!");
}
// 更新项目id
payIncomeContractAssociated.setProjectId(payMemberProjectSubitem.getId());
// 合同为打包
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
// 查询打包项目来源是否为收入合同
LambdaQueryWrapper<PayPackCompanyProject> queryPayPackCompanyProject = new LambdaQueryWrapper<>();
queryPayPackCompanyProject.eq(PayPackCompanyProject::getProjectId,payMemberProjectSubitem.getId());
queryPayPackCompanyProject.eq(PayPackCompanyProject::getCome,PayIncomeContractCommon.COME1);
List<PayPackCompanyProject> listPayPackCompanyProject = payPackCompanyProjectService.list(queryPayPackCompanyProject);
// 存在数据,取消打包,变更项目打包状态, 否则不进行操作
if(!CollectionUtils.isEmpty(listPayPackCompanyProject)){
payPackCompanyProjectService.removeById(listPayPackCompanyProject.get(0).getId());
LambdaUpdateWrapper<PayMemberProjectSubitem> updatePayMemberProjectSubitem = new LambdaUpdateWrapper<>();
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getUpdateBy,sysUser.getUsername());
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getUpdateTime,new Date());
updatePayMemberProjectSubitem.set(PayMemberProjectSubitem::getPack,PayIncomeContractCommon.PACK0);
updatePayMemberProjectSubitem.eq(PayMemberProjectSubitem::getId,payMemberProjectSubitem.getId());
memberProjectSubitemService.update(updatePayMemberProjectSubitem);
}
}
break;
case PayIncomeContractCommon.PROJECT_TYPE5:
// todo 标协会员
// 标协会员
TbMemberProjectSubitem tbMemberProjectSubitem = tbMemberProjectSubitemService.getById(payIncomeContractAssociated.getProjectId());
if(Objects.isNull(tbMemberProjectSubitem)){
throw new JeroBootException("标协会员项目不存在!");
}
// 更新项目id
payIncomeContractAssociated.setProjectId(tbMemberProjectSubitem.getId());
// 合同为打包
if(Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
// 查询打包项目来源是否为收入合同
LambdaQueryWrapper<PayPackCompanyProject> queryPayPackCompanyProject = new LambdaQueryWrapper<>();
queryPayPackCompanyProject.eq(PayPackCompanyProject::getProjectId,tbMemberProjectSubitem.getId());
queryPayPackCompanyProject.eq(PayPackCompanyProject::getCome,PayIncomeContractCommon.COME1);
List<PayPackCompanyProject> listPayPackCompanyProject = payPackCompanyProjectService.list(queryPayPackCompanyProject);
// 存在数据,取消打包,变更项目打包状态, 否则不进行操作
if(!CollectionUtils.isEmpty(listPayPackCompanyProject)){
payPackCompanyProjectService.removeById(listPayPackCompanyProject.get(0).getId());
LambdaUpdateWrapper<TbMemberProjectSubitem> updateTbMemberProjectSubitem = new LambdaUpdateWrapper<>();
updateTbMemberProjectSubitem.set(TbMemberProjectSubitem::getUpdateBy,sysUser.getUsername());
updateTbMemberProjectSubitem.set(TbMemberProjectSubitem::getUpdateTime,new Date());
updateTbMemberProjectSubitem.set(TbMemberProjectSubitem::getPack,PayIncomeContractCommon.PACK0);
updateTbMemberProjectSubitem.eq(TbMemberProjectSubitem::getId,tbMemberProjectSubitem.getId());
tbMemberProjectSubitemService.update(updateTbMemberProjectSubitem);
}
}
break;
default:break;
}
@@ -603,7 +694,7 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
LambdaUpdateWrapper<PayIncomeContract> update = new LambdaUpdateWrapper();
LambdaUpdateWrapper<PayIncomeContract> update = new LambdaUpdateWrapper<>();
update.set(PayIncomeContract::getUpdateBy,sysUser.getUsername());
update.set(PayIncomeContract::getUpdateTime,new Date());
update.eq(PayIncomeContract::getId,payIncomeContractAudit.getContractId());
@@ -628,7 +719,7 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
throw new JeroBootException("收入合同状态不正确!");
}
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
LambdaUpdateWrapper<PayIncomeContract> update = new LambdaUpdateWrapper();
LambdaUpdateWrapper<PayIncomeContract> update = new LambdaUpdateWrapper<>();
update.set(PayIncomeContract::getUpdateBy,sysUser.getUsername());
update.set(PayIncomeContract::getUpdateTime,new Date());
update.eq(PayIncomeContract::getId,payIncomeContractAudit.getContractId());
@@ -745,7 +836,7 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
public void insertPayIncomeContract(PayIncomeContract payIncomeContract,String projectId,Integer projectType) {
// 合同存在 && 合同状态不为草稿,不为未通过 关联合同
if(!Objects.isNull(payIncomeContract)){
if(payIncomeContract.getStatus() == PayIncomeContractCommon.STATUS1){
if(Objects.equals(payIncomeContract.getStatus(),PayIncomeContractCommon.STATUS1)){
throw new JeroBootException("合同状态为草稿状态不可关联!");
}
PayIncomeContractAssociated payIncomeContractAssociated = new PayIncomeContractAssociated();