收入合同关联会员项目

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="收入合同-关联") @ApiOperation(value="收入合同-关联", notes="收入合同-关联")
@PostMapping(value = "/associated") @PostMapping(value = "/associated")
public Result<?> associated(@RequestBody List<PayIncomeContractAssociated> listPayIncomeContractAssociated) { public Result<?> associated(@RequestBody List<PayIncomeContractAssociated> listPayIncomeContractAssociated) {
List<ProjectOutput> list = payIncomeContractService.associated(listPayIncomeContractAssociated); payIncomeContractService.associated(listPayIncomeContractAssociated);
return Result.OK("关联成功!",list); return Result.OK("关联成功!");
} }
/** /**
@@ -65,7 +65,7 @@ public interface IPayIncomeContractService extends IService<PayIncomeContract> {
* @Return * @Return
* @Exception * @Exception
*/ */
List<ProjectOutput> associated(List<PayIncomeContractAssociated> listPayIncomeContractAssociated); void associated(List<PayIncomeContractAssociated> listPayIncomeContractAssociated);
/** /**
* @Description 取消关联 * @Description 取消关联
* @Author lqt * @Author lqt
@@ -21,9 +21,14 @@ import com.jero.contract.service.IPayIncomeContractService;
import com.jero.contract.vo.PayIncomeContractInput; import com.jero.contract.vo.PayIncomeContractInput;
import com.jero.contract.vo.ProjectOutput; import com.jero.contract.vo.ProjectOutput;
import com.jero.meeting.service.IPayMeetingService; 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.entity.SysUser;
import com.jero.modules.system.service.ISysUserService; import com.jero.modules.system.service.ISysUserService;
import com.jero.pack.entity.PayPackCompany;
import com.jero.pack.entity.PayPackCompanyProject; import com.jero.pack.entity.PayPackCompanyProject;
import com.jero.pack.service.IPayPackCompanyProjectService; import com.jero.pack.service.IPayPackCompanyProjectService;
import com.jero.pack.service.IPayPackCompanyService; import com.jero.pack.service.IPayPackCompanyService;
@@ -89,6 +94,12 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
private IPayPackCompanyProjectService payPackCompanyProjectService; private IPayPackCompanyProjectService payPackCompanyProjectService;
@Resource @Resource
private IPayMeetingService payMeetingService; private IPayMeetingService payMeetingService;
@Resource
private IPayMemberProjectService memberProjectService;
@Resource
private IPayMemberProjectSubitemService memberProjectSubitemService;
@Resource
private ITbMemberProjectSubitemService tbMemberProjectSubitemService;
@Override @Override
public IPage<PayIncomeContract> queryPageList(Page<PayIncomeContract> page, PayIncomeContract payIncomeContract, String chargeStatus,String projectName, String startTime, String endTime) { 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("收入合同信息不能为空!"); throw new JeroBootException("收入合同信息不能为空!");
} }
if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived()) if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived())
&& payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) == -1){ && payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) < 0){
throw new JeroBootException("应收金额大于已收金额!"); throw new JeroBootException("应收金额大于已收金额!");
} }
StringBuilder msgPayIncomeContract = ValidUtil.validateAll(payIncomeContract); StringBuilder msgPayIncomeContract = ValidUtil.validateAll(payIncomeContract);
@@ -174,16 +185,15 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
private void checkPayIncomeContractInstallment(List<PayIncomeContractInstallment> listPayIncomeContractInstallment,PayIncomeContract payIncomeContract){ private void checkPayIncomeContractInstallment(List<PayIncomeContractInstallment> listPayIncomeContractInstallment,PayIncomeContract payIncomeContract){
if(!CollectionUtils.isEmpty(listPayIncomeContractInstallment)){ if(!CollectionUtils.isEmpty(listPayIncomeContractInstallment)){
StringBuilder msgPayIncomeContractInstallment = new StringBuilder(); StringBuilder msgPayIncomeContractInstallment = new StringBuilder();
List<PayIncomeContractInstallment> finalListPayIncomeContractInstallment = listPayIncomeContractInstallment;
listPayIncomeContractInstallment.forEach(p->{ listPayIncomeContractInstallment.forEach(p->{
p.setContractId(payIncomeContract.getId()); p.setContractId(payIncomeContract.getId());
StringBuilder sb = ValidUtil.validateAll(p); StringBuilder sb = ValidUtil.validateAll(p);
if(!StringUtils.isBlank(sb)){ 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()) if(!Objects.isNull(p.getAccountsReceivableAmount()) && !Objects.isNull(p.getPaidAmount())
&& p.getAccountsReceivableAmount().compareTo(p.getPaidAmount()) == -1){ && p.getAccountsReceivableAmount().compareTo(p.getPaidAmount()) < 0){
msgPayIncomeContractInstallment.append("第").append(finalListPayIncomeContractInstallment.indexOf(p) + 1).append("期应收金额大于已收金额!"); msgPayIncomeContractInstallment.append("第").append(listPayIncomeContractInstallment.indexOf(p) + 1).append("期应收金额大于已收金额!");
} }
}); });
if(!StringUtils.isBlank(msgPayIncomeContractInstallment)){ if(!StringUtils.isBlank(msgPayIncomeContractInstallment)){
@@ -204,7 +214,7 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
throw new JeroBootException("收入合同信息不能为空!"); throw new JeroBootException("收入合同信息不能为空!");
} }
if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived()) if(!Objects.isNull(payIncomeContract.getAccountsReceivableAmount()) && !Objects.isNull(payIncomeContract.getAmountReceived())
&& payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) == -1){ && payIncomeContract.getAccountsReceivableAmount().compareTo(payIncomeContract.getAmountReceived()) < 0){
throw new JeroBootException("应收金额大于已收金额!"); throw new JeroBootException("应收金额大于已收金额!");
} }
StringBuilder msgPayIncomeContract = ValidUtil.validateAll(payIncomeContract); StringBuilder msgPayIncomeContract = ValidUtil.validateAll(payIncomeContract);
@@ -219,11 +229,11 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
throw new JeroBootException("收入合同不存在!"); throw new JeroBootException("收入合同不存在!");
} }
// 项目已打包 // 项目已打包
if(payIncomeContractStatus.getPack() == PayIncomeContractCommon.PACK1){ if(Objects.equals(payIncomeContractStatus.getPack(),PayIncomeContractCommon.PACK1)){
if(payIncomeContract.getPack() != PayIncomeContractCommon.PACK1){ if(!Objects.equals(payIncomeContract.getPack(),PayIncomeContractCommon.PACK1)){
throw new JeroBootException("打包状态不可更改!"); throw new JeroBootException("打包状态不可更改!");
} }
if(payIncomeContract.getPackYear() != payIncomeContractStatus.getPackYear()){ if(!Objects.equals(payIncomeContract.getPackYear(),payIncomeContractStatus.getPackYear())){
throw new JeroBootException("打包年份不可更改!"); throw new JeroBootException("打包年份不可更改!");
} }
} }
@@ -273,12 +283,11 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
@Override @Override
@Transactional @Transactional
public List<ProjectOutput> associated(List<PayIncomeContractAssociated> listPayIncomeContractAssociated) { public void associated(List<PayIncomeContractAssociated> listPayIncomeContractAssociated) {
if(CollectionUtils.isEmpty(listPayIncomeContractAssociated)){ if(CollectionUtils.isEmpty(listPayIncomeContractAssociated)){
throw new JeroBootException("关联项目不能为空!"); throw new JeroBootException("关联项目不能为空!");
} }
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
List<ProjectOutput> listProjectOutput = new ArrayList<>();
listPayIncomeContractAssociated.forEach(p->{ listPayIncomeContractAssociated.forEach(p->{
ProjectOutput projectOutput = new ProjectOutput(); ProjectOutput projectOutput = new ProjectOutput();
StringBuilder msgPayIncomeContractAssociated = ValidUtil.validateAll(p); 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()); payPackCompanyProjectService.setPack(payCommonProject.getChargeCompanyId(),payCommonProject.getContactsId(),payIncomeContract.getPackYear(),payCommonProject.getId(),PayIncomeContractCommon.PROJECT_TYPE1,payIncomeContract.getPack());
} }
} }
projectOutput.setProjectId(payCommonProject.getId()); // 更新项目id
projectOutput.setProjectType(PayIncomeContractCommon.PROJECT_TYPE1); p.setProjectId(payCommonProject.getId());
projectOutput.setChargeProject(payCommonProject.getChargeProject());
projectOutput.setChargeUse(payCommonProject.getChargeUse());
projectOutput.setChargeCompanyName(payCommonProject.getChargeCompanyTemporaryName());
projectOutput.setContactsName(payCommonProject.getChargeCompanyTemporaryName());
projectOutput.setPaidAmount(payCommonProject.getPaidAmount());
projectOutput.setReceivableAmount(payCommonProject.getReceivableAmount());
break; break;
case PayIncomeContractCommon.PROJECT_TYPE2: case PayIncomeContractCommon.PROJECT_TYPE2:
// 工作组项目 // 工作组项目
@@ -339,7 +342,6 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
} }
LambdaQueryWrapper<PayWorkingGroupSubItem> queryPayWorkingGroupSubItem = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PayWorkingGroupSubItem> queryPayWorkingGroupSubItem = new LambdaQueryWrapper<>();
queryPayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getWorkingGroupId,payWorkingGroup.getId()); queryPayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getWorkingGroupId,payWorkingGroup.getId());
queryPayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getChargeCompanyId,payIncomeContract.getSignedCompanyId());
List<PayWorkingGroupSubItem> listPayWorkingGroupSubItem = payWorkingGroupSubItemService.list(queryPayWorkingGroupSubItem); List<PayWorkingGroupSubItem> listPayWorkingGroupSubItem = payWorkingGroupSubItemService.list(queryPayWorkingGroupSubItem);
if(CollectionUtils.isEmpty(listPayWorkingGroupSubItem)){ if(CollectionUtils.isEmpty(listPayWorkingGroupSubItem)){
throw new JeroBootException("工作组成员单位不存在!"); throw new JeroBootException("工作组成员单位不存在!");
@@ -370,14 +372,6 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
} }
// 更新项目id // 更新项目id
p.setProjectId(listPayWorkingGroupSubItem.get(0).getId()); 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; break;
case PayIncomeContractCommon.PROJECT_TYPE3: case PayIncomeContractCommon.PROJECT_TYPE3:
// 打包合同不可选择会议项目 // 打包合同不可选择会议项目
@@ -385,34 +379,83 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
throw new JeroBootException("打包合同不可关联会议项目!"); throw new JeroBootException("打包合同不可关联会议项目!");
} }
// 更新项目id // 更新项目id
// p.setProjectId(listPayWorkingGroupSubItem.get(0).getId()); // 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 会议项目 // todo 会议项目
break; break;
case PayIncomeContractCommon.PROJECT_TYPE4: 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; break;
case PayIncomeContractCommon.PROJECT_TYPE5: 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; break;
default:break; default:break;
} }
payIncomeContractAssociatedService.save(p); payIncomeContractAssociatedService.save(p);
projectOutput.setContractId(p.getContractId()); projectOutput.setContractId(p.getContractId());
projectOutput.setId(p.getId()); projectOutput.setId(p.getId());
listProjectOutput.add(projectOutput);
}); });
return listProjectOutput;
} }
/** /**
* @Description 验证项目是否被合同关联 * @Description 验证项目是否被合同关联
@@ -443,12 +486,12 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
throw new JeroBootException("关联id不能为空!"); throw new JeroBootException("关联id不能为空!");
} }
PayIncomeContractAssociated payIncomeContractAssociated = payIncomeContractAssociatedService.getById(input.getId()); PayIncomeContractAssociated payIncomeContractAssociated = payIncomeContractAssociatedService.getById(input.getId());
if(!Objects.equals(input.getContractId(),payIncomeContractAssociated.getContractId())){
throw new JeroBootException("关联id不能为空!");
}
if(Objects.isNull(payIncomeContractAssociated)){ if(Objects.isNull(payIncomeContractAssociated)){
throw new JeroBootException("关联记录不存在!"); throw new JeroBootException("关联记录不存在!");
} }
if(!Objects.equals(input.getContractId(),payIncomeContractAssociated.getContractId())){
throw new JeroBootException("关联id不能为空!");
}
PayIncomeContract payIncomeContract = payIncomeContractService.getById(payIncomeContractAssociated.getContractId()); PayIncomeContract payIncomeContract = payIncomeContractService.getById(payIncomeContractAssociated.getContractId());
if(Objects.isNull(payIncomeContract)){ if(Objects.isNull(payIncomeContract)){
throw new JeroBootException("合同不存在!"); throw new JeroBootException("合同不存在!");
@@ -514,10 +557,58 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
// todo 会议项目 // todo 会议项目
break; break;
case PayIncomeContractCommon.PROJECT_TYPE4: 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; break;
case PayIncomeContractCommon.PROJECT_TYPE5: 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; break;
default:break; default:break;
} }
@@ -603,7 +694,7 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
} }
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); 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::getUpdateBy,sysUser.getUsername());
update.set(PayIncomeContract::getUpdateTime,new Date()); update.set(PayIncomeContract::getUpdateTime,new Date());
update.eq(PayIncomeContract::getId,payIncomeContractAudit.getContractId()); update.eq(PayIncomeContract::getId,payIncomeContractAudit.getContractId());
@@ -628,7 +719,7 @@ public class PayIncomeContractServiceImpl extends ServiceImpl<PayIncomeContractM
throw new JeroBootException("收入合同状态不正确!"); throw new JeroBootException("收入合同状态不正确!");
} }
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal(); 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::getUpdateBy,sysUser.getUsername());
update.set(PayIncomeContract::getUpdateTime,new Date()); update.set(PayIncomeContract::getUpdateTime,new Date());
update.eq(PayIncomeContract::getId,payIncomeContractAudit.getContractId()); 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) { public void insertPayIncomeContract(PayIncomeContract payIncomeContract,String projectId,Integer projectType) {
// 合同存在 && 合同状态不为草稿,不为未通过 关联合同 // 合同存在 && 合同状态不为草稿,不为未通过 关联合同
if(!Objects.isNull(payIncomeContract)){ if(!Objects.isNull(payIncomeContract)){
if(payIncomeContract.getStatus() == PayIncomeContractCommon.STATUS1){ if(Objects.equals(payIncomeContract.getStatus(),PayIncomeContractCommon.STATUS1)){
throw new JeroBootException("合同状态为草稿状态不可关联!"); throw new JeroBootException("合同状态为草稿状态不可关联!");
} }
PayIncomeContractAssociated payIncomeContractAssociated = new PayIncomeContractAssociated(); PayIncomeContractAssociated payIncomeContractAssociated = new PayIncomeContractAssociated();
@@ -2,18 +2,26 @@ package com.jero.member.controller;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Objects;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.common.system.query.QueryGenerator; import com.jero.common.system.query.QueryGenerator;
import com.jero.contract.entity.PayIncomeContract;
import com.jero.contract.service.IPayIncomeContractService;
import com.jero.member.entity.PayMemberProject; import com.jero.member.entity.PayMemberProject;
import com.jero.member.entity.TbMemberProjectSubitem;
import com.jero.member.service.IPayMemberProjectService; import com.jero.member.service.IPayMemberProjectService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.member.service.ITbMemberProjectSubitemService;
import com.jero.project.common.PayProjectCommon;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.base.controller.JeroController;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
@@ -35,13 +43,17 @@ import com.jero.common.aspect.annotation.AutoLog;
public class PayMemberProjectController extends JeroController<PayMemberProject, IPayMemberProjectService> { public class PayMemberProjectController extends JeroController<PayMemberProject, IPayMemberProjectService> {
@Resource @Resource
private IPayMemberProjectService memberProjectService; private IPayMemberProjectService memberProjectService;
@Autowired
private IPayIncomeContractService payIncomeContractService;
@Resource
private ITbMemberProjectSubitemService tbMemberProjectSubitemService;
/** /**
* 分页列表查询 * 分页列表查询
*/ */
@AutoLog(value = "会员项目表-分页列表查询") @AutoLog(value = "会员项目表-根据成员单位列表查询")
@ApiOperation(value="会员项目表-分页列表查询", notes="会员项目表-分页列表查询") @ApiOperation(value="会员项目表-根据成员单位列表查询", notes="会员项目表-根据成员单位列表查询")
@GetMapping(value = "/page") @GetMapping(value = "/page")
public Result<?> queryPageList(PayMemberProject payMemberProject, public Result<?> queryPageList(PayMemberProject payMemberProject,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@@ -53,6 +65,50 @@ public class PayMemberProjectController extends JeroController<PayMemberProject,
return Result.OK(memberProjectPage); return Result.OK(memberProjectPage);
} }
/**
* @Description 收入合同列表分页查询
* @Author lqt
* @Date 2021/9/17
* @Param companyId 企业id
* @Param contractId 合同id
* @Param projectType 会员类型 4:会员项目,5:标协会员项目
* @Param memberName 会员名称
* @Return
* @Exception
*/
@AutoLog(value = "会员项目表-收入合同列表分页查询")
@ApiOperation(value="会员项目表-收入合同列表分页查询", notes="会员项目表-收入合同列表分页查询")
@GetMapping(value = "/queryListByCompany")
public Result<?> queryListByCompany(
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
@RequestParam(name = "companyId") String companyId,
@RequestParam(name = "contractId") String contractId,
@RequestParam(name = "projectType") String projectType,
@RequestParam(name = "memberName",required = false) String memberName) {
if(StringUtils.isBlank(companyId)){
return Result.error("企业id不能为空!");
}
PayIncomeContract payIncomeContract = payIncomeContractService.getById(contractId);
if(Objects.isNull(payIncomeContract)){
return Result.error("合同不存在!");
}
// 会员
if(Objects.equals(projectType,PayProjectCommon.PROJECT_TYPE4)){
Page<PayMemberProject> page = new Page<>(pageNo, pageSize);
IPage<PayMemberProject> list = memberProjectService.queryListByCompany(page,companyId,memberName,PayProjectCommon.PROJECT_TYPE4,payIncomeContract.getPack(),payIncomeContract.getPackYear());
return Result.OK(list);
}
// 标协会员
if(Objects.equals(projectType,PayProjectCommon.PROJECT_TYPE5)){
Page<TbMemberProjectSubitem> page = new Page<>(pageNo, pageSize);
IPage<TbMemberProjectSubitem> list = tbMemberProjectSubitemService.queryListByCompany(page,companyId,PayProjectCommon.PROJECT_TYPE4,payIncomeContract.getPack(),payIncomeContract.getPackYear());
return Result.OK(list);
}
return Result.OK(null);
}
/** /**
* 列表查询 * 列表查询
*/ */
@@ -5,6 +5,7 @@ import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.jero.modules.system.volid.group.*; import com.jero.modules.system.volid.group.*;
@@ -133,4 +134,11 @@ public class PayMemberProject implements Serializable {
@Size(max = 200, message = "备注最大为200个字符") @Size(max = 200, message = "备注最大为200个字符")
private String remark; private String remark;
/**
* 项目类型
*/
@TableField(exist = false)
@ApiModelProperty(value = "项目类型")
private Integer projectType;
} }
@@ -4,6 +4,7 @@ import java.io.Serializable;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.math.BigDecimal; import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.jero.common.util.PasswordUtil; import com.jero.common.util.PasswordUtil;
@@ -198,4 +199,17 @@ public class TbMemberProjectSubitem implements Serializable {
return PasswordUtil.decrypt(mobile); return PasswordUtil.decrypt(mobile);
} }
/**项目名称*/
@ApiModelProperty(value = "项目名称")
@TableField(exist = false)
private String projectName;
/**
* 项目类型
*/
@TableField(exist = false)
@ApiModelProperty(value = "项目类型")
private Integer projectType;
} }
@@ -1,7 +1,10 @@
package com.jero.member.mapper; package com.jero.member.mapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.member.entity.PayMemberProject; import com.jero.member.entity.PayMemberProject;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
/** /**
* @Description: 会员项目表 * @Description: 会员项目表
@@ -11,4 +14,15 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/ */
public interface PayMemberProjectMapper extends BaseMapper<PayMemberProject> { public interface PayMemberProjectMapper extends BaseMapper<PayMemberProject> {
/**
* @Description 查询与收入合同企业一致的数据
* @Author lqt
* @Date 2021/9/17
* @Param companyId 企业id
* @Param memberName 会员名称
* @Param projectType 项目类型
* @Return
* @Exception
*/
IPage<PayMemberProject> queryListByCompany(Page<PayMemberProject> page,@Param("companyId") String companyId,@Param("memberName") String memberName,@Param("projectType") String projectType,@Param("pack") Integer pack,@Param("packYear") String packYear);
} }
@@ -2,6 +2,8 @@ package com.jero.member.mapper;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import com.jero.member.entity.TbMemberProjectSubitem; import com.jero.member.entity.TbMemberProjectSubitem;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -14,4 +16,17 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/ */
public interface TbMemberProjectSubitemMapper extends BaseMapper<TbMemberProjectSubitem> { public interface TbMemberProjectSubitemMapper extends BaseMapper<TbMemberProjectSubitem> {
/**
* @Description 查询与收入合同企业一致的数据
* @Author lqt
* @Date 2021/9/17
* @Param companyId 企业id
* @Param memberName 会员名称
* @Param projectType 项目类型
* @Param
* @Return
* @Exception
*/
IPage<TbMemberProjectSubitem> queryListByCompany(Page<TbMemberProjectSubitem> page,@Param("companyId") String companyId,@Param("projectType") String projectType,@Param("pack") Integer pack,@Param("packYear") String packYear);
} }
@@ -16,4 +16,23 @@
<result column="charge_notice_file_id" property="chargeNoticeFileId" /> <result column="charge_notice_file_id" property="chargeNoticeFileId" />
<result column="remark" property="remark" /> <result column="remark" property="remark" />
</resultMap> </resultMap>
<select id="queryListByCompany" resultType="com.jero.member.entity.PayMemberProject">
SELECT pmp.*,#{projectType} AS projectType FROM pay_member_project_subitem pmps
LEFT JOIN pay_member_project pmp ON pmp.id = pmps.project_id
LEFT JOIN pay_pack_company_project ppcp ON ppcp.project_id = pmps.id
LEFT JOIN pay_pack_company ppc ON ppc.id = ppcp.pack_id
<if test="pack == 1 and packYear != '' and packYear != null">
AND ppc.pack_year=#{packYear}
</if>
LEFT JOIN pay_income_contract_associated pica ON pica.project_id = pmps.id
WHERE pmps.company_id =#{companyId} AND pmp.id IS NOT NULL AND pmp.id != ''
AND (pica.id is null OR pica.id = '')
<if test="memberName != '' and memberName != null">
AND pmp.project_name like concat('%',concat(#{memberName},'%'))
</if>
<if test="pack == 1 and packYear != '' and packYear != null">
AND (ppc.id is null OR ppc.id ='')
</if>
GROUP BY pmp.id ORDER BY pmp.create_time DESC
</select>
</mapper> </mapper>
@@ -23,4 +23,20 @@
<result column="make_invoice" property="makeInvoice" /> <result column="make_invoice" property="makeInvoice" />
<result column="mail" property="mail" /> <result column="mail" property="mail" />
</resultMap> </resultMap>
<select id="queryListByCompany" resultType="com.jero.member.entity.TbMemberProjectSubitem">
SELECT tmps.*,tmp.project_name,#{projectType} AS projectType FROM tb_member_project_subitem tmps
LEFT JOIN tb_member_project tmp ON tmps.project_id = tmp.id
LEFT JOIN pay_pack_company_project ppcp ON ppcp.project_id = tmps.id
LEFT JOIN pay_pack_company ppc ON ppc.id = ppcp.pack_id
<if test="pack == 1 and packYear != '' and packYear != null">
AND ppc.pack_year=#{packYear}
</if>
LEFT JOIN pay_income_contract_associated pica ON pica.project_id = tmps.id
WHERE tmps.company_id =#{companyId} AND tmp.id IS NOT NULL AND tmp.id != ''
AND (pica.id is null OR pica.id = '')
<if test="pack == 1 and packYear != '' and packYear != null">
AND (ppc.id is null OR ppc.id ='')
</if>
GROUP BY tmps.id ORDER BY tmps.create_time DESC
</select>
</mapper> </mapper>
@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.member.entity.PayMemberProject; import com.jero.member.entity.PayMemberProject;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.project.common.PayProjectCommon;
import java.util.List; import java.util.List;
/** /**
@@ -69,4 +71,16 @@ public interface IPayMemberProjectService extends IService<PayMemberProject> {
* @return * @return
*/ */
IPage<PayMemberProject> getPage(Page<PayMemberProject> page, QueryWrapper<PayMemberProject> queryWrapper); IPage<PayMemberProject> getPage(Page<PayMemberProject> page, QueryWrapper<PayMemberProject> queryWrapper);
/**
* @Description 查询与收入合同企业一致的数据
* @Author lqt
* @Date 2021/9/17
* @Param companyId 企业id
* @Param memberName 会员名称
* @Param projectType 项目类型
* @Return
* @Exception
*/
IPage<PayMemberProject> queryListByCompany(Page<PayMemberProject> page,String companyId,String memberName,String projectType,Integer pack,String packYear);
} }
@@ -1,5 +1,7 @@
package com.jero.member.service; package com.jero.member.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.member.entity.TbMemberProjectSubitem; import com.jero.member.entity.TbMemberProjectSubitem;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List; import java.util.List;
@@ -58,4 +60,15 @@ public interface ITbMemberProjectSubitemService extends IService<TbMemberProject
* @return * @return
*/ */
List<TbMemberProjectSubitem> queryList(); List<TbMemberProjectSubitem> queryList();
/**
* @Description 查询与收入合同企业一致的数据
* @Author lqt
* @Date 2021/9/17
* @Param companyId 企业id
* @Param memberName 会员名称
* @Param projectType 项目类型
* @Return
* @Exception
*/
IPage<TbMemberProjectSubitem> queryListByCompany(Page<TbMemberProjectSubitem> page, String companyId, String projectType,Integer pack,String packYear);
} }
@@ -5,15 +5,24 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.contract.entity.PayIncomeContractAssociated;
import com.jero.contract.service.IPayIncomeContractAssociatedService;
import com.jero.member.entity.PayMemberProject; import com.jero.member.entity.PayMemberProject;
import com.jero.member.entity.PayMemberProjectSubitem;
import com.jero.member.mapper.PayMemberProjectMapper; import com.jero.member.mapper.PayMemberProjectMapper;
import com.jero.member.service.IPayMemberProjectService; import com.jero.member.service.IPayMemberProjectService;
import com.jero.member.service.IPayMemberProjectSubitemService;
import com.jero.modules.system.entity.SysUser; import com.jero.modules.system.entity.SysUser;
import com.jero.modules.system.mapper.SysUserMapper; import com.jero.modules.system.mapper.SysUserMapper;
import com.jero.project.entity.PayWorkingGroupSubItem;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -25,8 +34,14 @@ import javax.annotation.Resource;
*/ */
@Service @Service
public class PayPayMemberProjectServiceImpl extends ServiceImpl<PayMemberProjectMapper, PayMemberProject> implements IPayMemberProjectService { public class PayPayMemberProjectServiceImpl extends ServiceImpl<PayMemberProjectMapper, PayMemberProject> implements IPayMemberProjectService {
@Resource
private PayMemberProjectMapper payMemberProjectMapper;
@Resource @Resource
private SysUserMapper userMapper; private SysUserMapper userMapper;
@Autowired
private IPayIncomeContractAssociatedService payIncomeContractAssociatedService;
@Resource
private IPayMemberProjectSubitemService memberProjectSubitemService;
/** /**
* 保存 * 保存
* *
@@ -34,6 +49,7 @@ public class PayPayMemberProjectServiceImpl extends ServiceImpl<PayMemberProject
* @return * @return
*/ */
@Override @Override
@Transactional
public void add(PayMemberProject payMemberProject) { public void add(PayMemberProject payMemberProject) {
//判断项目名称 //判断项目名称
LambdaQueryWrapper<PayMemberProject> wrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<PayMemberProject> wrapper = new LambdaQueryWrapper<>();
@@ -49,9 +65,6 @@ public class PayPayMemberProjectServiceImpl extends ServiceImpl<PayMemberProject
throw new JeroBootException("联系人不存在"); throw new JeroBootException("联系人不存在");
} }
payMemberProject.setDirectorName(sysUser.getUsername()); payMemberProject.setDirectorName(sysUser.getUsername());
save(payMemberProject); save(payMemberProject);
} }
@@ -74,9 +87,33 @@ public class PayPayMemberProjectServiceImpl extends ServiceImpl<PayMemberProject
*/ */
@Override @Override
public void deleteById(String id) { public void deleteById(String id) {
LambdaQueryWrapper<PayMemberProjectSubitem> query = new LambdaQueryWrapper<>();
query.eq(PayMemberProjectSubitem::getProjectId, id);
List<PayMemberProjectSubitem> listPayMemberProjectSubitem = memberProjectSubitemService.list(query);
getPayIncomeContractAssociated(listPayMemberProjectSubitem);
removeById(id); removeById(id);
} }
/**
* @Description 校验是存在关联合同的项目
* @Author lqt
* @Date 2021/9/8
* @Param
* @Return
* @Exception
*/
private void getPayIncomeContractAssociated(List<PayMemberProjectSubitem> listPayMemberProjectSubitem){
if(!CollectionUtils.isEmpty(listPayMemberProjectSubitem)){
List<String> list = listPayMemberProjectSubitem.stream().map(PayMemberProjectSubitem::getId).collect(Collectors.toList());
LambdaQueryWrapper<PayIncomeContractAssociated> queryPayIncomeContractAssociated = new LambdaQueryWrapper<>();
queryPayIncomeContractAssociated.in(PayIncomeContractAssociated::getProjectId,list);
List<PayIncomeContractAssociated> listPayIncomeContractAssociated = payIncomeContractAssociatedService.list(queryPayIncomeContractAssociated);
if(!CollectionUtils.isEmpty(listPayIncomeContractAssociated)){
throw new JeroBootException("已关联合同不可删除!");
}
}
}
/** /**
* 批量删除 * 批量删除
* *
@@ -85,7 +122,11 @@ public class PayPayMemberProjectServiceImpl extends ServiceImpl<PayMemberProject
*/ */
@Override @Override
public void deleteByIds(List<String> ids) { public void deleteByIds(List<String> ids) {
removeByIds(ids); LambdaQueryWrapper<PayMemberProjectSubitem> query = new LambdaQueryWrapper<>();
query.in(PayMemberProjectSubitem::getProjectId, ids);
List<PayMemberProjectSubitem> listPayMemberProjectSubitem = memberProjectSubitemService.list(query);
getPayIncomeContractAssociated(listPayMemberProjectSubitem);
removeByIds(ids);
} }
/** /**
@@ -121,4 +162,9 @@ public class PayPayMemberProjectServiceImpl extends ServiceImpl<PayMemberProject
memberProjectPage.setRecords(records); memberProjectPage.setRecords(records);
return memberProjectPage; return memberProjectPage;
} }
@Override
public IPage<PayMemberProject> queryListByCompany(Page<PayMemberProject> page,String companyId, String memberName, String projectType,Integer pack,String packYear) {
return payMemberProjectMapper.queryListByCompany(page,companyId,memberName,projectType, pack, packYear);
}
} }
@@ -1,11 +1,19 @@
package com.jero.member.service.impl; package com.jero.member.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import com.jero.common.service.ProjectDetailService;
import com.jero.common.util.ValidUtil; import com.jero.common.util.ValidUtil;
import com.jero.common.vo.ProjectStatusVO;
import com.jero.company.entity.PayContactsManagement; import com.jero.company.entity.PayContactsManagement;
import com.jero.company.service.IPayCompanyManagementService; import com.jero.company.service.IPayCompanyManagementService;
import com.jero.company.service.IPayContactsManagementService; import com.jero.company.service.IPayContactsManagementService;
import com.jero.contract.entity.PayIncomeContract;
import com.jero.contract.entity.PayIncomeContractAssociated;
import com.jero.contract.service.IPayIncomeContractAssociatedService;
import com.jero.contract.service.IPayIncomeContractService;
import com.jero.pack.service.IPayPackCompanyProjectService;
import com.jero.project.common.PayProjectCommon; import com.jero.project.common.PayProjectCommon;
import com.jero.temporary.entity.PayCompanyManagementTemporary; import com.jero.temporary.entity.PayCompanyManagementTemporary;
import com.jero.temporary.entity.PayContactsManagementTemporary; import com.jero.temporary.entity.PayContactsManagementTemporary;
@@ -18,11 +26,15 @@ import com.jero.member.service.IPayMemberProjectService;
import com.jero.member.service.IPayMemberProjectSubitemService; import com.jero.member.service.IPayMemberProjectSubitemService;
import com.jero.valid.group.ChargeNotice; import com.jero.valid.group.ChargeNotice;
import com.jero.valid.group.Contract; import com.jero.valid.group.Contract;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
import java.util.Objects;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
@@ -34,20 +46,23 @@ import javax.annotation.Resource;
*/ */
@Service @Service
public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMemberProjectSubitemMapper, PayMemberProjectSubitem> implements IPayMemberProjectSubitemService { public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMemberProjectSubitemMapper, PayMemberProjectSubitem> implements IPayMemberProjectSubitemService {
@Resource
private IPayCompanyManagementService companyManagementService;
@Resource @Resource
private IPayContactsManagementService contactsManagementService; private IPayContactsManagementService contactsManagementService;
@Resource @Resource
private IPayCompanyManagementTemporaryService companyManagementTemporaryService; private IPayCompanyManagementTemporaryService companyManagementTemporaryService;
@Resource @Resource
private IPayContactsManagementTemporaryService contactsManagementTemporaryService; private IPayContactsManagementTemporaryService contactsManagementTemporaryService;
@Resource @Resource
private IPayMemberProjectService memberProjectService; private IPayMemberProjectService memberProjectService;
@Autowired
private IPayIncomeContractService payIncomeContractService;
@Autowired
private IPayPackCompanyProjectService payPackCompanyProjectService;
@Autowired
private ProjectDetailService projectDetailService;
@Autowired
private IPayIncomeContractAssociatedService payIncomeContractAssociatedService;
/** /**
* 保存 * 保存
*/ */
@@ -78,6 +93,22 @@ public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMember
//邮寄 //邮寄
payMemberProjectSubitem.setMail(PayProjectCommon.MAIL0); payMemberProjectSubitem.setMail(PayProjectCommon.MAIL0);
save(payMemberProjectSubitem); save(payMemberProjectSubitem);
// 来款方式为合同,校验合同编号
if(Objects.equals(payMemberProjectSubitem.getPaymentMethod(),PayProjectCommon.CHARGE_WAY2)){
PayIncomeContract payIncomeContract = payIncomeContractService.setPayIncomeContractAssociated(payMemberProjectSubitem.getContractNo(),payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitem.getId());
if(!Objects.isNull(payIncomeContract)){
// 合同存在 && 合同状态不为草稿,不为未通过 关联合同
payIncomeContractService.insertPayIncomeContract(payIncomeContract,payMemberProjectSubitem.getId(),Integer.parseInt(PayProjectCommon.PROJECT_TYPE4));
// 关联了合同,判断合同是否打包,更新项目打包状态,添加打包
if(Objects.equals(payIncomeContract.getPack(),PayProjectCommon.PACKAGING1)){
payPackCompanyProjectService.setPack(payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitem.getCompanyContactId(),payIncomeContract.getPackYear(),payIncomeContract.getId(),PayProjectCommon.PROJECT_TYPE4,payIncomeContract.getPack());
LambdaUpdateWrapper<PayMemberProjectSubitem> update = new LambdaUpdateWrapper<>();
update.eq(PayMemberProjectSubitem::getId,payMemberProjectSubitem.getId());
update.set(PayMemberProjectSubitem::getPack,PayProjectCommon.PACKAGING1);
update(update);
}
}
}
} }
/** /**
@@ -90,6 +121,40 @@ public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMember
if (payMemberProjectSubitem1 == null){ if (payMemberProjectSubitem1 == null){
throw new JeroBootException("会员项目不存在"); throw new JeroBootException("会员项目不存在");
} }
// 项目为打包状态 || 到账!=0 || 开票!=0 || 邮寄!=0
if(!Objects.equals(payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitem1.getCompanyId())
&& (Objects.equals(payMemberProjectSubitem.getPack(),PayProjectCommon.PACKAGING1)
|| !Objects.equals(payMemberProjectSubitem.getInAccount(),PayProjectCommon.IN_ACCOUNT0)
|| !Objects.equals(payMemberProjectSubitem.getMakeInvoice(),PayProjectCommon.MAKE_INVOICE0)
|| !Objects.equals(payMemberProjectSubitem.getMail(),PayProjectCommon.MAIL0))){
throw new JeroBootException("来款企业不可更改!");
}
// 校验项目是否已关联合同
PayIncomeContract payIncomeContract = payIncomeContractService.checkPayIncomeContractAssociated(payMemberProjectSubitem.getId());
if(!Objects.isNull(payIncomeContract)){
if(!Objects.equals(payMemberProjectSubitem.getPaymentMethod(),PayProjectCommon.CHARGE_WAY2)){
throw new JeroBootException("项目已关联合同,来款方式不可修改!");
}
if(!Objects.equals(payIncomeContract.getContractNum(),payMemberProjectSubitem.getContractNo())){
throw new JeroBootException("项目已关联合同,合同编号不可修改!");
}
}else{
PayIncomeContract payIncomeContractAdd = null;
// 来款方式为合同,校验合同编号
if(Objects.equals(payMemberProjectSubitem.getPaymentMethod(),PayProjectCommon.CHARGE_WAY2)){
payIncomeContractAdd = payIncomeContractService.setPayIncomeContractAssociated(payMemberProjectSubitem.getContractNo(),payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitem.getId());
}
if(!Objects.isNull(payIncomeContractAdd)){
// 合同存在 && 合同状态不为草稿,不为未通过 关联合同
payIncomeContractService.insertPayIncomeContract(payIncomeContractAdd,payMemberProjectSubitem.getId(),Integer.parseInt(PayProjectCommon.PROJECT_TYPE4));
}else{
payMemberProjectSubitem.setPack(PayProjectCommon.PACKAGING0);
}
// 关联了合同,判断合同是否打包,更新项目打包状态,添加打包
if(!Objects.isNull(payIncomeContractAdd) && Objects.equals(payIncomeContractAdd.getPack(),PayProjectCommon.PACKAGING1)){
payPackCompanyProjectService.setPack(payMemberProjectSubitem.getCompanyId(),payMemberProjectSubitem.getCompanyContactId(),payIncomeContractAdd.getPackYear(),payMemberProjectSubitem.getId(),PayProjectCommon.PROJECT_TYPE4,payIncomeContractAdd.getPack());
}
}
//无法更改状态 //无法更改状态
payMemberProjectSubitem.setPack(payMemberProjectSubitem1.getPack()); payMemberProjectSubitem.setPack(payMemberProjectSubitem1.getPack());
//payMemberProjectSubitem.setNeedInvoice(payMemberProjectSubitem1.getNeedInvoice()); //payMemberProjectSubitem.setNeedInvoice(payMemberProjectSubitem1.getNeedInvoice());
@@ -112,6 +177,19 @@ public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMember
if (!payMemberProjectSubitem1.getPostContactTemporaryId().equals(postContactId)) { if (!payMemberProjectSubitem1.getPostContactTemporaryId().equals(postContactId)) {
contactsManagementTemporaryService.removeById(postContactId); contactsManagementTemporaryService.removeById(postContactId);
} }
// 变更应收金额,重新校验状态
ProjectStatusVO projectStatusVO = projectDetailService.getStatus(payMemberProjectSubitem.getId(),payMemberProjectSubitem.getAmountReceivable(),payMemberProjectSubitem.getNeedInvoice());
if(!Objects.isNull(projectStatusVO)){
if(!Objects.isNull(projectStatusVO.getInAccount())){
payMemberProjectSubitem.setInAccount(projectStatusVO.getInAccount());
}
if(!Objects.isNull(projectStatusVO.getMakeInvoice())){
payMemberProjectSubitem.setMakeInvoice(projectStatusVO.getMakeInvoice());
}
if(!Objects.isNull(projectStatusVO.getMail())){
payMemberProjectSubitem.setMail(projectStatusVO.getMail());
}
}
validMemberProjectSubitem(payMemberProjectSubitem); validMemberProjectSubitem(payMemberProjectSubitem);
saveOrUpdate(payMemberProjectSubitem); saveOrUpdate(payMemberProjectSubitem);
} }
@@ -168,7 +246,19 @@ public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMember
* 通过id删除 * 通过id删除
*/ */
@Override @Override
@Transactional
public void deleteById(String id) { public void deleteById(String id) {
try {
LambdaQueryWrapper<PayIncomeContractAssociated> query = new LambdaQueryWrapper<>();
query.eq(PayIncomeContractAssociated::getProjectId, id);
PayIncomeContractAssociated payIncomeContractAssociated = payIncomeContractAssociatedService.getOne(query);
if (!Objects.isNull(payIncomeContractAssociated)) {
throw new JeroBootException("已关联合同不可删除!");
}
} catch (Exception e) {
log.error("会员项目-批量删除异常", e);
throw new JeroBootException("已关联合同不可删除!");
}
delectTemporaryById(id); delectTemporaryById(id);
removeById(id); removeById(id);
} }
@@ -190,10 +280,23 @@ public class PayPayMemberProjectSubitemServiceImpl extends ServiceImpl<PayMember
* 批量删除 * 批量删除
*/ */
@Override @Override
@Transactional
public void deleteByIds(List<String> ids) { public void deleteByIds(List<String> ids) {
for (String id : ids) { for (String id : ids) {
try {
LambdaQueryWrapper<PayIncomeContractAssociated> query = new LambdaQueryWrapper<>();
query.eq(PayIncomeContractAssociated::getProjectId, id);
PayIncomeContractAssociated payIncomeContractAssociated = payIncomeContractAssociatedService.getOne(query);
if (!Objects.isNull(payIncomeContractAssociated)) {
throw new JeroBootException("已关联合同不可删除!");
}
} catch (Exception e) {
log.error("普通项目管理-批量删除异常", e);
throw new JeroBootException("已关联合同不可删除!");
}
delectTemporaryById(id); delectTemporaryById(id);
} }
removeByIds(ids); removeByIds(ids);
} }
@@ -1,12 +1,25 @@
package com.jero.member.service.impl; package com.jero.member.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.jero.common.exception.JeroBootException;
import com.jero.contract.entity.PayIncomeContractAssociated;
import com.jero.contract.service.IPayIncomeContractAssociatedService;
import com.jero.member.entity.PayMemberProjectSubitem;
import com.jero.member.entity.TbMemberProject; import com.jero.member.entity.TbMemberProject;
import com.jero.member.entity.TbMemberProjectSubitem;
import com.jero.member.mapper.TbMemberProjectMapper; import com.jero.member.mapper.TbMemberProjectMapper;
import com.jero.member.service.ITbMemberProjectService; import com.jero.member.service.ITbMemberProjectService;
import com.jero.member.service.ITbMemberProjectSubitemService;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import javax.annotation.Resource;
/** /**
* @Description: 标协会员项目表 * @Description: 标协会员项目表
* @Author: jero-boot * @Author: jero-boot
@@ -16,6 +29,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@Service @Service
public class TbMemberProjectServiceImpl extends ServiceImpl<TbMemberProjectMapper, TbMemberProject> implements ITbMemberProjectService { public class TbMemberProjectServiceImpl extends ServiceImpl<TbMemberProjectMapper, TbMemberProject> implements ITbMemberProjectService {
@Autowired
private IPayIncomeContractAssociatedService payIncomeContractAssociatedService;
@Resource
private ITbMemberProjectSubitemService tbMemberProjectSubitemService;
/** /**
* 保存 * 保存
*/ */
@@ -37,15 +54,42 @@ public class TbMemberProjectServiceImpl extends ServiceImpl<TbMemberProjectMappe
*/ */
@Override @Override
public void deleteById(String id) { public void deleteById(String id) {
LambdaQueryWrapper<TbMemberProjectSubitem> query = new LambdaQueryWrapper<>();
query.eq(TbMemberProjectSubitem::getProjectId, id);
List<TbMemberProjectSubitem> listTbMemberProjectSubitem = tbMemberProjectSubitemService.list(query);
getPayIncomeContractAssociated(listTbMemberProjectSubitem);
removeById(id); removeById(id);
} }
/**
* @Description 校验是存在关联合同的项目
* @Author lqt
* @Date 2021/9/8
* @Param
* @Return
* @Exception
*/
private void getPayIncomeContractAssociated(List<TbMemberProjectSubitem> listTbMemberProjectSubitem){
if(!CollectionUtils.isEmpty(listTbMemberProjectSubitem)){
List<String> list = listTbMemberProjectSubitem.stream().map(TbMemberProjectSubitem::getId).collect(Collectors.toList());
LambdaQueryWrapper<PayIncomeContractAssociated> queryPayIncomeContractAssociated = new LambdaQueryWrapper<>();
queryPayIncomeContractAssociated.in(PayIncomeContractAssociated::getProjectId,list);
List<PayIncomeContractAssociated> listPayIncomeContractAssociated = payIncomeContractAssociatedService.list(queryPayIncomeContractAssociated);
if(!CollectionUtils.isEmpty(listPayIncomeContractAssociated)){
throw new JeroBootException("已关联合同不可删除!");
}
}
}
/** /**
* 批量删除 * 批量删除
*/ */
@Override @Override
public void deleteByIds(List<String> ids) { public void deleteByIds(List<String> ids) {
removeByIds(ids); LambdaQueryWrapper<TbMemberProjectSubitem> query = new LambdaQueryWrapper<>();
query.in(TbMemberProjectSubitem::getProjectId, ids);
List<TbMemberProjectSubitem> listTbMemberProjectSubitem = tbMemberProjectSubitemService.list(query);
getPayIncomeContractAssociated(listTbMemberProjectSubitem);
removeByIds(ids);
} }
/** /**
@@ -1,12 +1,23 @@
package com.jero.member.service.impl; package com.jero.member.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.exception.JeroBootException;
import com.jero.contract.entity.PayIncomeContractAssociated;
import com.jero.contract.service.IPayIncomeContractAssociatedService;
import com.jero.member.entity.TbMemberProjectSubitem; import com.jero.member.entity.TbMemberProjectSubitem;
import com.jero.member.mapper.TbMemberProjectSubitemMapper; import com.jero.member.mapper.TbMemberProjectSubitemMapper;
import com.jero.member.service.ITbMemberProjectSubitemService; import com.jero.member.service.ITbMemberProjectSubitemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List; import java.util.List;
import java.util.Objects;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import javax.annotation.Resource;
/** /**
* @Description: 标协会员项目成员表 * @Description: 标协会员项目成员表
* @Author: jero-boot * @Author: jero-boot
@@ -16,6 +27,10 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@Service @Service
public class TbMemberProjectSubitemServiceImpl extends ServiceImpl<TbMemberProjectSubitemMapper, TbMemberProjectSubitem> implements ITbMemberProjectSubitemService { public class TbMemberProjectSubitemServiceImpl extends ServiceImpl<TbMemberProjectSubitemMapper, TbMemberProjectSubitem> implements ITbMemberProjectSubitemService {
@Resource
private TbMemberProjectSubitemMapper tbMemberProjectSubitemMapper;
@Autowired
private IPayIncomeContractAssociatedService payIncomeContractAssociatedService;
/** /**
* 保存 * 保存
*/ */
@@ -37,6 +52,17 @@ public class TbMemberProjectSubitemServiceImpl extends ServiceImpl<TbMemberProje
*/ */
@Override @Override
public void deleteById(String id) { public void deleteById(String id) {
try {
LambdaQueryWrapper<PayIncomeContractAssociated> query = new LambdaQueryWrapper<>();
query.eq(PayIncomeContractAssociated::getProjectId, id);
PayIncomeContractAssociated payIncomeContractAssociated = payIncomeContractAssociatedService.getOne(query);
if (!Objects.isNull(payIncomeContractAssociated)) {
throw new JeroBootException("已关联合同不可删除!");
}
} catch (Exception e) {
log.error("标协会员-批量删除异常", e);
throw new JeroBootException("已关联合同不可删除!");
}
removeById(id); removeById(id);
} }
@@ -45,7 +71,20 @@ public class TbMemberProjectSubitemServiceImpl extends ServiceImpl<TbMemberProje
*/ */
@Override @Override
public void deleteByIds(List<String> ids) { public void deleteByIds(List<String> ids) {
removeByIds(ids); ids.forEach(p->{
try {
LambdaQueryWrapper<PayIncomeContractAssociated> query = new LambdaQueryWrapper<>();
query.eq(PayIncomeContractAssociated::getProjectId, p);
PayIncomeContractAssociated payIncomeContractAssociated = payIncomeContractAssociatedService.getOne(query);
if (!Objects.isNull(payIncomeContractAssociated)) {
throw new JeroBootException("已关联合同不可删除!");
}
} catch (Exception e) {
log.error("标协会员-批量删除异常", e);
throw new JeroBootException("已关联合同不可删除!");
}
});
removeByIds(ids);
} }
/** /**
@@ -63,4 +102,9 @@ public class TbMemberProjectSubitemServiceImpl extends ServiceImpl<TbMemberProje
public List<TbMemberProjectSubitem> queryList() { public List<TbMemberProjectSubitem> queryList() {
return list(); return list();
} }
@Override
public IPage<TbMemberProjectSubitem> queryListByCompany(Page<TbMemberProjectSubitem> page, String companyId, String projectType,Integer pack,String packYear) {
return tbMemberProjectSubitemMapper.queryListByCompany(page, companyId, projectType,pack,packYear);
}
} }