diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/drafting/controller/PayDraftingGroupSubItemController.java b/jero-boot-incoming-payment/src/main/java/com/jero/drafting/controller/PayDraftingGroupSubItemController.java index cd5af935..b482463e 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/drafting/controller/PayDraftingGroupSubItemController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/drafting/controller/PayDraftingGroupSubItemController.java @@ -12,10 +12,6 @@ import com.jero.common.system.vo.LoginUser; import com.jero.common.util.PasswordUtil; import com.jero.common.util.ValidUtil; import com.jero.common.util.oConvertUtils; -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.drafting.common.DraftingConstant; import com.jero.drafting.entity.PayDraftingGroup; import com.jero.drafting.entity.PayDraftingGroupSubItem; @@ -25,17 +21,8 @@ import com.jero.drafting.service.IPayDraftingGroupSubItemContactsService; import com.jero.drafting.service.IPayDraftingGroupSubItemService; import com.jero.drafting.vo.CheckVo; import com.jero.drafting.vo.PayDraftingGroupSubItemExcel; -import com.jero.mail.entity.PayMailBill; -import com.jero.mail.entity.PayMailBillProject; -import com.jero.mail.service.IPayMailBillProjectService; -import com.jero.mail.service.IPayMailBillService; 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; -import com.jero.project.common.PayProjectCommon; import com.jero.temporary.entity.PayContactsManagementTemporary; import com.jero.temporary.service.IPayContactsManagementTemporaryService; import io.swagger.annotations.Api; @@ -305,7 +292,7 @@ public class PayDraftingGroupSubItemController extends JeroController queryDraftingGroupSubItemContacts = new LambdaQueryWrapper<>(); + queryDraftingGroupSubItemContacts.eq(PayDraftingGroupSubItemContacts::getDraftingGroupSubId, draftingGroupSubItemId); + queryDraftingGroupSubItemContacts.eq(PayDraftingGroupSubItemContacts::getContactsId,sysUser.getId()); + long l = payDraftingGroupSubItemContactsService.count(queryDraftingGroupSubItemContacts); + if(l == 0){ + throw new JeroBootException("非起草组成员不可操作!"); + } + + try { + // 编辑保存前再次校验来款项目是否存在 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(PayDraftingGroupSubItem::getDraftingGroupId, payDraftingGroupSubItem.getDraftingGroupId()); + queryWrapper.eq(PayDraftingGroupSubItem::getChargeCompanyId, payDraftingGroupSubItem.getChargeCompanyId()); + PayDraftingGroupSubItem payDraftingGroupSubItemNew = payDraftingGroupSubItemService.getOne(queryWrapper); + // 企业和联系人同时存在,则校验不通过 + if (!Objects.isNull(payDraftingGroupSubItemNew) && !Objects.equals(payDraftingGroupSubItemNew.getId(), draftingGroupSubItemId)) { + throw new JeroBootException("起草组成员单位已存在!"); + } + } catch (Exception e) { + throw new JeroBootException("起草组成员单位已存在!"); + } + LambdaQueryWrapper queryPayDraftingGroupSubItemContacts = new LambdaQueryWrapper<>(); + queryPayDraftingGroupSubItemContacts.eq(PayDraftingGroupSubItemContacts::getDraftingGroupSubId, payDraftingGroupSubItemOld.getId()); + List listPayDraftingGroupSubItemContacts = payDraftingGroupSubItemContactsService.list(queryPayDraftingGroupSubItemContacts); + if (!CollectionUtils.isEmpty(listPayDraftingGroupSubItemContacts)) { + payDraftingGroupSubItemOld.setPayDraftingGroupSubItemContactsList(listPayDraftingGroupSubItemContacts); + } + setPayDraftingGroupSubItemEdit(payDraftingGroupSubItem, payDraftingGroupSubItemOld); + List listPayDraftingGroupSubItemContactsNew = payDraftingGroupSubItem.getPayDraftingGroupSubItemContactsList(); + // 添加联系人表 + if (!CollectionUtils.isEmpty(listPayDraftingGroupSubItemContactsNew)) { + // 先删除之前的企业联系人 + LambdaUpdateWrapper updatePayWorkingGroupSubItemContacts = new LambdaUpdateWrapper<>(); + updatePayWorkingGroupSubItemContacts.eq(PayDraftingGroupSubItemContacts::getDraftingGroupSubId, draftingGroupSubItemId); + payDraftingGroupSubItemContactsService.remove(updatePayWorkingGroupSubItemContacts); + // 添加新的企业联系人 + for (int i = 0; i < listPayDraftingGroupSubItemContactsNew.size(); i++) { + listPayDraftingGroupSubItemContactsNew.get(i).setOrderNum(i + 1); + listPayDraftingGroupSubItemContactsNew.get(i).setDraftingGroupSubId(draftingGroupSubItemId); + listPayDraftingGroupSubItemContactsNew.get(i).setDraftingGroupId(payDraftingGroupSubItem.getDraftingGroupId()); + } + payDraftingGroupSubItemContactsService.saveBatch(listPayDraftingGroupSubItemContactsNew); + } + payDraftingGroupSubItemService.updateById(payDraftingGroupSubItem); + } + /** * 插入企业信息,联系人信息到临时表,更新项目记录 * diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupSubItemController.java b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupSubItemController.java index 19c37896..89a7c272 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupSubItemController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/project/controller/PayWorkingGroupSubItemController.java @@ -445,7 +445,6 @@ public class PayWorkingGroupSubItemController extends JeroController editCompany(@RequestBody PayWorkingGroupSubItem payWorkingGroupSubItem) { @@ -456,7 +455,7 @@ public class PayWorkingGroupSubItemController extends JeroController queryWorkingGroupSubItemContacts = new LambdaQueryWrapper<>(); + queryWorkingGroupSubItemContacts.eq(PayWorkingGroupSubItemContacts::getWorkingGroupSubId, workingGroupSubItemId); + queryWorkingGroupSubItemContacts.eq(PayWorkingGroupSubItemContacts::getContactsId,sysUser.getId()); + long l = payWorkingGroupSubItemContactsService.count(queryWorkingGroupSubItemContacts); + if(l == 0){ + throw new JeroBootException("非工作组成员不可操作!"); + } + + // 项目为打包状态 || 到账!=0 || 开票!=0 || 邮寄!=0 + if(!Objects.equals(payWorkingGroupSubItem.getChargeCompanyId(),payWorkingGroupSubItemOld.getChargeCompanyId()) + && (Objects.equals(payWorkingGroupSubItem.getPack(),PayProjectCommon.PACKAGING1) + || !Objects.equals(payWorkingGroupSubItem.getInAccount(),PayProjectCommon.IN_ACCOUNT0) + || !Objects.equals(payWorkingGroupSubItem.getMakeInvoice(),PayProjectCommon.MAKE_INVOICE0) + || !Objects.equals(payWorkingGroupSubItem.getMail(),PayProjectCommon.MAIL0))){ + throw new JeroBootException("来款企业不可更改!"); + } + if(Objects.equals(payWorkingGroupSubItem.getChargeWay(),PayProjectCommon.CHARGE_WAY2)){ + if(Objects.isNull(payWorkingGroupSubItem.getReceivableAmount())){ + throw new JeroBootException("待确收金额不能为空"); + } + if(StringUtils.isBlank(payWorkingGroupSubItem.getContractNum())){ + throw new JeroBootException("合同号不能为空"); + } + } + if(Objects.equals(payWorkingGroupSubItem.getChargeWay(),PayProjectCommon.CHARGE_WAY3)){ + if(Objects.isNull(payWorkingGroupSubItem.getChargeNoticeNo())){ + throw new JeroBootException("收费通知号不能为空"); + } + if(Objects.isNull(payWorkingGroupSubItem.getReceivableAmount())){ + throw new JeroBootException("待确收金额不能为空"); + } + } + + try { + // 编辑保存前再次校验来款项目是否存在 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(PayWorkingGroupSubItem::getWorkingGroupId,payWorkingGroupSubItem.getWorkingGroupId()); + queryWrapper.eq(PayWorkingGroupSubItem::getChargeCompanyId,payWorkingGroupSubItem.getChargeCompanyId()); +// queryWrapper.eq(PayWorkingGroupSubItem::getContactsIdOne,payWorkingGroupSubItem.getContactsIdOne()); + PayWorkingGroupSubItem payWorkingGroupSubItemNew = payWorkingGroupSubItemService.getOne(queryWrapper); + // 来款项目存在,并且编辑id与查询不同,则校验不通过 + if(!Objects.isNull(payWorkingGroupSubItemNew) + && !Objects.equals(payWorkingGroupSubItemNew.getId(), workingGroupSubItemId)) { + throw new JeroBootException("工作组成员单位已存在!"); + } + }catch (Exception e){ + log.info("工作组成员-编辑异常",e); + throw new JeroBootException("工作组成员单位已存在!"); + } + // 校验项目是否已关联合同 + PayIncomeContract payIncomeContract = payIncomeContractService.checkPayIncomeContractAssociated(workingGroupSubItemId); + if(!Objects.isNull(payIncomeContract)){ + if(!Objects.equals(payWorkingGroupSubItem.getChargeWay(),payWorkingGroupSubItemOld.getChargeWay())){ + throw new JeroBootException("项目已关联合同,来款方式不可修改!"); + } + if(Objects.equals(payWorkingGroupSubItemOld.getChargeWay(),PayProjectCommon.CHARGE_WAY2) && !Objects.equals(payWorkingGroupSubItemOld.getContractNum(),payWorkingGroupSubItem.getContractNum())){ + throw new JeroBootException("项目已关联合同,合同编号不可修改!"); + } + }else{ + PayIncomeContract payIncomeContractAdd = null; + // 来款方式为合同,校验合同编号 + if(Objects.equals(payWorkingGroupSubItem.getChargeWay(),PayProjectCommon.CHARGE_WAY2)){ + payIncomeContractAdd = payIncomeContractService.setPayIncomeContractAssociated(payWorkingGroupSubItem.getContractNum(),payWorkingGroupSubItem.getChargeCompanyId(), workingGroupSubItemId); + } + if(!Objects.isNull(payIncomeContractAdd)){ + // 合同存在 && 合同状态不为草稿,不为未通过 关联合同 + payIncomeContractService.insertPayIncomeContract(payIncomeContractAdd, workingGroupSubItemId,Integer.parseInt(PayProjectCommon.PROJECT_TYPE2)); + Integer pack = payIncomeContractAdd.getPack(); + if (Objects.equals(pack,PayProjectCommon.PACKAGING1)){ + payWorkingGroupSubItem.setPack(PayProjectCommon.PACKAGING1); + } + }else{ + payWorkingGroupSubItem.setPack(payWorkingGroupSubItemOld.getPack()); + } + // 关联了合同,判断合同是否打包,更新项目打包状态,添加打包 + if(!Objects.isNull(payIncomeContractAdd) && Objects.equals(payIncomeContractAdd.getPack(),PayProjectCommon.PACKAGING1)){ + String masterContactsId = payWorkingGroupSubItemContactsMapper.getMasterContactsId(workingGroupSubItemId); + payPackCompanyProjectService.setPack(payWorkingGroupSubItem.getChargeCompanyId(),masterContactsId,payIncomeContractAdd.getPackYear(), workingGroupSubItemId,PayProjectCommon.PROJECT_TYPE2,payIncomeContractAdd.getPack()); + } + } + LambdaQueryWrapper queryPayWorkingGroupSubItemContacts = new LambdaQueryWrapper<>(); + queryPayWorkingGroupSubItemContacts.eq(PayWorkingGroupSubItemContacts::getWorkingGroupSubId,payWorkingGroupSubItemOld.getId()); + List listPayWorkingGroupSubItemContacts = payWorkingGroupSubItemContactsService.list(queryPayWorkingGroupSubItemContacts); + if(!CollectionUtils.isEmpty(listPayWorkingGroupSubItemContacts)){ + payWorkingGroupSubItemOld.setPayWorkingGroupSubItemContactsList(listPayWorkingGroupSubItemContacts); + } + setPayWorkingGroupSubItemEdit(payWorkingGroupSubItem,payWorkingGroupSubItemOld); + List listPayWorkingGroupSubItemContactsNew = payWorkingGroupSubItem.getPayWorkingGroupSubItemContactsList(); + // 添加联系人表 + if(!CollectionUtils.isEmpty(listPayWorkingGroupSubItemContactsNew)){ + for (int i = 0; i < listPayWorkingGroupSubItemContactsNew.size(); i++) { + listPayWorkingGroupSubItemContactsNew.get(i).setOrderNum(i+1); + listPayWorkingGroupSubItemContactsNew.get(i).setWorkingGroupId(payWorkingGroupSubItem.getWorkingGroupId()); + listPayWorkingGroupSubItemContactsNew.get(i).setWorkingGroupSubId(workingGroupSubItemId); + } + payWorkingGroupSubItemContactsService.saveBatch(listPayWorkingGroupSubItemContactsNew); + } + payWorkingGroupSubItem.setChargeUse(PayProjectCommon.CHARGE_USE1); + // 变更待确收金额,重新校验状态 + ProjectStatusVO projectStatusVO = projectDetailService.getStatus(workingGroupSubItemId,payWorkingGroupSubItem.getReceivableAmount(),payWorkingGroupSubItem.getNeedInvoice()); + if(!Objects.isNull(projectStatusVO)){ + if(!Objects.isNull(projectStatusVO.getInAccount())){ + payWorkingGroupSubItem.setInAccount(projectStatusVO.getInAccount()); + } + if(!Objects.isNull(projectStatusVO.getMakeInvoice())){ + payWorkingGroupSubItem.setMakeInvoice(projectStatusVO.getMakeInvoice()); + } + if(!Objects.isNull(projectStatusVO.getMail())){ + payWorkingGroupSubItem.setMail(projectStatusVO.getMail()); + } + } + String paymentStatus = payPaymentCheckService.getPaymentStatus(payWorkingGroupSubItem.getReceivableAmount(),payWorkingGroupSubItemOld.getPaidAmount(),payWorkingGroupSubItemOld.getPaymentStatus()); + payWorkingGroupSubItem.setPaymentStatus(paymentStatus); + payWorkingGroupSubItem.setInAccount(null); + payWorkingGroupSubItem.setPaidAmount(null); + + BigDecimal taxRate = payWorkingGroupSubItem.getTaxRate(); + BigDecimal receivableAmount = payWorkingGroupSubItem.getReceivableAmount(); + BigDecimal noTaxAmount = receivableAmount.divide(taxRate.add(BigDecimal.ONE), 2, RoundingMode.HALF_UP); + BigDecimal tax = receivableAmount.subtract(noTaxAmount); + payWorkingGroupSubItem.setNoTaxAmount(noTaxAmount); + payWorkingGroupSubItem.setTax(tax); + payWorkingGroupSubItemService.updateById(payWorkingGroupSubItem); + LambdaUpdateWrapper updatePayWorkingGroupSubItem = new LambdaUpdateWrapper<>(); + updatePayWorkingGroupSubItem.eq(PayWorkingGroupSubItem::getId, workingGroupSubItemId); + // 选择无 + if(Objects.equals(payWorkingGroupSubItem.getChargeWay(),PayProjectCommon.CHARGE_WAY1)){ + //updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getReceivableAmount,null); + updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getContractNum,null); + updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getCharge,null); + updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getChargeNoticeNo,null); + updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getChargeNoticeId,null); + } + // 选择合同 + if(Objects.equals(payWorkingGroupSubItem.getChargeWay(),PayProjectCommon.CHARGE_WAY2)){ + updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getCharge,null); + updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getChargeNoticeNo,null); + updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getChargeNoticeId,null); + } + // 选择收费通知 + if(Objects.equals(payWorkingGroupSubItem.getChargeWay(),PayProjectCommon.CHARGE_WAY3)){ + updatePayWorkingGroupSubItem.set(PayWorkingGroupSubItem::getContractNum,null); + } + payWorkingGroupSubItemService.update(updatePayWorkingGroupSubItem); + // 如果有邮寄信息更新邮寄联系人信息 + String mailContactsId = payWorkingGroupSubItem.getMailContactsId(); + payMailBillService.updateContactByProjectId(mailContactsId, workingGroupSubItemId, null); + } + @Override @Transactional(rollbackFor = JeroBootException.class) public void importExcel(HttpServletRequest request) {