From 8506482f1ed1047805083ab7e0b07e80ee28d52a Mon Sep 17 00:00:00 2001 From: lijiarao Date: Tue, 14 Sep 2021 15:10:17 +0800 Subject: [PATCH] =?UTF-8?q?add=20=E5=90=88=E5=B9=B6=E5=BC=80=E7=A5=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/PayMailBillServiceImpl.java | 2 +- .../PayMeetingSituationController.java | 2 +- .../impl/PayMeetingSituationServiceImpl.java | 56 ++++++++++++++++++- .../com/jero/meeting/vo/MergePayBillVO.java | 5 +- .../impl/PayPaymentRecordServiceImpl.java | 12 ++-- 5 files changed, 64 insertions(+), 13 deletions(-) diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/impl/PayMailBillServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/impl/PayMailBillServiceImpl.java index 6402331e..a7f191e2 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/impl/PayMailBillServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/impl/PayMailBillServiceImpl.java @@ -114,7 +114,7 @@ public class PayMailBillServiceImpl extends ServiceImpl type5List = payMailBillProjectService.list(wrapper); if (type5List != null && type5List.size() > 0) { - return Result.error("标协会员项目,只能开票一次。"); + throw new JeroBootException("标协会员项目,只能开票一次。"); } } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/PayMeetingSituationController.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/PayMeetingSituationController.java index 3180fa39..bc99b991 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/PayMeetingSituationController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/controller/PayMeetingSituationController.java @@ -190,7 +190,7 @@ public class PayMeetingSituationController extends JeroController mergePayBill(@RequestBody MergePayBillVO mergePayBillVO) { payMeetingSituationService.mergePayBill(mergePayBillVO); - return Result.OK("审核成功!"); + return Result.OK("合并开票成功!"); } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingSituationServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingSituationServiceImpl.java index 09634b9b..8e6f5d8a 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingSituationServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/service/impl/PayMeetingSituationServiceImpl.java @@ -10,6 +10,9 @@ import com.jero.company.entity.PayCompanyManagement; import com.jero.company.entity.PayContactsManagement; import com.jero.company.service.IPayCompanyManagementService; import com.jero.company.service.IPayContactsManagementService; +import com.jero.contract.common.PayIncomeContractCommon; +import com.jero.mail.entity.PayMailBill; +import com.jero.mail.service.IPayMailBillService; import com.jero.meeting.common.MeetingCommon; import com.jero.meeting.common.MeetingSubitemCommon; import com.jero.meeting.entity.PayMeeting; @@ -30,6 +33,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.util.Date; import java.util.List; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -59,6 +63,8 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl meetingSituationIds = mergePayBillVO.getMeetingSituationIds(); + List payMeetingSituations = listByIds(meetingSituationIds); + if (payMeetingSituations.isEmpty()){ + throw new JeroBootException("参会人不正确"); + } + PayMeetingSituation payMeetingSituation = payMeetingSituations.get(0); + String meetingId = payMeetingSituation.getMeetingId(); + StringBuilder projectIds = new StringBuilder(); + BigDecimal allAmount = new BigDecimal("0"); + for (int i = 0; i < payMeetingSituations.size(); i++) { + PayMeetingSituation payMeetingSituation1 = payMeetingSituations.get(i); + BigDecimal amountReceivable = payMeetingSituation1.getAmountReceivable(); + if (!payMeetingSituation1.getMeetingId().equals(meetingId)) { + throw new JeroBootException("合并开票只能是同一会议"); + } + if (!payMeetingSituation1.getCompanyId().equals(payMeetingSituation.getCompanyId())) { + throw new JeroBootException("合并开票只能是同一企业"); + } + if (amountReceivable.equals(new BigDecimal("0"))) { + throw new JeroBootException("应收金额为0,不能合并开票"); + } + if (payMeetingSituation1.getPayMode().equals(MeetingSubitemCommon.PAY_MODE_PACK)) { + throw new JeroBootException("缴费方式为打包,不能合并开票"); + } + if (payMeetingSituation1.getNeedInvoice().equals(PayProjectCommon.NO)) { + throw new JeroBootException("不需要发票,不能合并开票"); + } + if (!payMeetingSituation1.getMakeInvoice().equals(PayProjectCommon.NO)) { + throw new JeroBootException("已经开票的,不能合并开票"); + } + allAmount = amountReceivable.add(allAmount); + projectIds.append(payMeetingSituation1.getId()); + //如果不是最后一次,就拼接"," + if (i != payMeetingSituations.size() - 1) { + projectIds.append(","); + } + } + //删除最后一位"," + //projectIds.deleteCharAt(projectIds.length()-1); + + PayMeeting payMeeting = meetingService.getById(meetingId); + PayMailBill payMailBill = new PayMailBill(); + payMailBill.setBillNo(mergePayBillVO.getBillNo()); + payMailBill.setInvoiceAmount(allAmount); + payMailBill.setBillDate(new Date()); + payMailBill.setProjectName(payMeeting.getMeetingName()); + payMailBill.setChargeCompanyName(payMeetingSituation.getCompanyName()); + payMailBillService.addPayBill(payMailBill,projectIds.toString(), PayIncomeContractCommon.PROJECT_TYPE3); } /** diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/vo/MergePayBillVO.java b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/vo/MergePayBillVO.java index 0abbaba4..608dd37e 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/meeting/vo/MergePayBillVO.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/meeting/vo/MergePayBillVO.java @@ -1,13 +1,12 @@ package com.jero.meeting.vo; -import com.jero.common.util.jsonschema.validate.StringProperty; -import com.jero.meeting.entity.PayMeetingSituation; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.DecimalMax; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; import java.math.BigDecimal; import java.util.List; @@ -35,6 +34,8 @@ public class MergePayBillVO { @DecimalMax(value = "9999999999.99", message = "开票金额格式错误") private BigDecimal invoiceAmount; + @NotNull(message = "请选择参会人") + @Size(min = 1, message = "请选择参会人") private List meetingSituationIds; } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/impl/PayPaymentRecordServiceImpl.java b/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/impl/PayPaymentRecordServiceImpl.java index 200c2090..ae3ce525 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/impl/PayPaymentRecordServiceImpl.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/impl/PayPaymentRecordServiceImpl.java @@ -96,10 +96,7 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl addPhase(PayPaymentRecord payPaymentRecord){ //来款记录表新增 - String res = insertPayPaymentRecord(payPaymentRecord); - if(!"success".equals(res)){ - return Result.error(res); - } + insertPayPaymentRecord(payPaymentRecord); BigDecimal receivableAmount; Boolean isAdd; @@ -219,7 +216,7 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl type5List = payPaymentRecordMapper.selectList(wrapper); if(type5List!=null && type5List.size()>0){ - return "标协会员项目,只能来款一次。"; + throw new JeroBootException("标协会员项目,只能来款一次。"); } TbMemberProjectSubitem tbMemberInsert = tbMemberProjectSubitemMapper.selectById(payPaymentRecord.getProjectId()); @@ -240,11 +237,10 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl