From 532983fefa2d393a83bcf15be23818921c2a0eb2 Mon Sep 17 00:00:00 2001 From: baozhipeng <961815525@qq.com> Date: Fri, 8 Oct 2021 11:02:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9D=A5=E6=AC=BE=E5=BC=80=E7=A5=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jero/mail/PayMailBillVO.java | 7 + .../jero/mail/mapper/PayMailBillMapper.java | 2 +- .../mail/mapper/xml/PayMailBillMapper.xml | 4 +- .../mail/service/IPayMailBillService.java | 10 +- .../service/impl/PayMailBillServiceImpl.java | 195 +++++++++++++++++- .../PayPaymentRecordController.java | 6 +- .../service/IPayPaymentRecordService.java | 5 + .../impl/PayPaymentRecordServiceImpl.java | 115 ++++++++++- 8 files changed, 326 insertions(+), 18 deletions(-) diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/mail/PayMailBillVO.java b/jero-boot-incoming-payment/src/main/java/com/jero/mail/PayMailBillVO.java index de47c8ed..0360bb3e 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/mail/PayMailBillVO.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/mail/PayMailBillVO.java @@ -1,6 +1,8 @@ package com.jero.mail; +import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; import com.jero.mail.entity.PayMailBill; import com.jero.mail.entity.PayMailBillProject; import io.swagger.annotations.ApiModelProperty; @@ -21,4 +23,9 @@ public class PayMailBillVO extends PayMailBill { */ @TableField(exist = false) List bmpList; + + /**邮寄票据关联项目表id*/ + @TableField(exist = false) + @ApiModelProperty(value = "bmpId") + private java.lang.String bmpId; } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/mail/mapper/PayMailBillMapper.java b/jero-boot-incoming-payment/src/main/java/com/jero/mail/mapper/PayMailBillMapper.java index 13a52b17..3d216206 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/mail/mapper/PayMailBillMapper.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/mail/mapper/PayMailBillMapper.java @@ -31,7 +31,7 @@ public interface PayMailBillMapper extends BaseMapper { */ List selectCommonProjectMailBillVO(@Param("projectId") String projectId); - List selectInvoicingStage(@Param("projectId")String projectId); + List selectInvoicingStage(@Param("projectId")String projectId); /** * @Description 查询月份邮寄数量 diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/mail/mapper/xml/PayMailBillMapper.xml b/jero-boot-incoming-payment/src/main/java/com/jero/mail/mapper/xml/PayMailBillMapper.xml index bdc729ba..43d217ac 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/mail/mapper/xml/PayMailBillMapper.xml +++ b/jero-boot-incoming-payment/src/main/java/com/jero/mail/mapper/xml/PayMailBillMapper.xml @@ -43,8 +43,8 @@ WHERE pmb.id IN (SELECT bill_id FROM pay_mail_bill_project WHERE project_id=#{projectId}) - + select pmb.id as id,pmbp.id as bmpId,pmb.project_name,pmbp.invoice_amount,pmb.bill_no,pmb.bill_date,pmbp.remark from pay_mail_bill pmb inner JOIN pay_mail_bill_project pmbp on pmb.id = pmbp.bill_id where pmbp.project_id=#{projectId} diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/IPayMailBillService.java b/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/IPayMailBillService.java index 8b5a7fb9..831b74b3 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/IPayMailBillService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/mail/service/IPayMailBillService.java @@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.jero.common.api.vo.Result; import com.jero.mail.PayMailBillVO; import com.jero.mail.entity.PayMailBill; +import com.jero.payment.entity.PayPaymentRecord; import java.util.List; @@ -33,7 +34,7 @@ public interface IPayMailBillService extends IService { * @param projectId * @return */ - List selectInvoicingStage(String projectId); + List selectInvoicingStage(String projectId); /** * 添加开票 @@ -42,6 +43,13 @@ public interface IPayMailBillService extends IService { */ Result addPayBill(PayMailBillVO payMailBill); + /** + * 编辑开票 + * @param payMailBillVo + * @return + */ + Result editPayBill(PayMailBillVO payMailBillVo); + /** * 推送邮寄数据到会员系统 * @param payMailBill 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 1a5cd3fc..6d5eddc0 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 @@ -21,6 +21,7 @@ import com.jero.mail.entity.BillingInfo; import com.jero.mail.entity.PayMailBill; import com.jero.mail.entity.PayMailBillProject; import com.jero.mail.mapper.PayMailBillMapper; +import com.jero.mail.mapper.PayMailBillProjectMapper; import com.jero.mail.service.IPayMailBillProjectService; import com.jero.mail.service.IPayMailBillService; import com.jero.meeting.entity.PayMeeting; @@ -35,6 +36,7 @@ import com.jero.member.mapper.PayMemberProjectMapper; import com.jero.member.mapper.PayMemberProjectSubitemMapper; import com.jero.member.mapper.TbMemberProjectMapper; import com.jero.member.mapper.TbMemberProjectSubitemMapper; +import com.jero.payment.entity.PayPaymentRecord; import com.jero.project.entity.PayCommonProject; import com.jero.project.entity.PayWorkingGroup; import com.jero.project.entity.PayWorkingGroupSubItem; @@ -88,7 +90,7 @@ public class PayMailBillServiceImpl extends ServiceImpl selectMailBillVO(String projectId) { @@ -109,7 +111,7 @@ public class PayMailBillServiceImpl extends ServiceImpl selectInvoicingStage(String projectId) { + public List selectInvoicingStage(String projectId) { return payMailBillMapper.selectInvoicingStage(projectId); } @@ -124,7 +126,7 @@ public class PayMailBillServiceImpl extends ServiceImpl bmpList = payMailBill.getBmpList(); - //校验不同项目是否属于同一个公司 + //校验不同项目是否属于同一个公司,开票金额是否大于当前欠未开票金额 String res = checkCompanyProject(bmpList); if (!"success".equals(res)) { return Result.error(res); @@ -158,7 +160,7 @@ public class PayMailBillServiceImpl extends ServiceImpl bmpList) { String standardCompanyId = null;//基准公司id @@ -414,7 +416,7 @@ public class PayMailBillServiceImpl extends ServiceImpl editPayBill(PayMailBillVO payMailBillVo){ + //查出没编辑之前的开票记录 + PayMailBillProject oldBmp = payMailBillProjectMapper.selectById(payMailBillVo.getBmpId()); + //校验开票金额是否大于当前欠未开票金额 + String res = editCheckCompanyProject(payMailBillVo,oldBmp); + if (!"success".equals(res)) { + return Result.error(res); + } + + //更新票据邮寄表 + payMailBillMapper.updateById(payMailBillVo); + + //更新票据关联项目表 + PayMailBillProject payMailBillProject = new PayMailBillProject(); + payMailBillProject.setId(payMailBillVo.getBmpId()); + payMailBillProject.setInvoiceAmount(payMailBillVo.getInvoiceAmount()); + payMailBillProject.setRemark(payMailBillVo.getRemark()); + payMailBillProjectService.updateById(payMailBillProject); + + return Result.OK("更新成功!"); + } + + //编辑时开票金额是否大于当前欠未开票金额 + private String editCheckCompanyProject(PayMailBillVO bm,PayMailBillProject oldBmp) { + + int makeInvoice=4; + BigDecimal amountReceivable=new BigDecimal("0");//应收金额 + Integer needInvoice = 0;//是否需要发票 + + //之前开票总额-编辑之前的开票金额=原始开票总额 + BigDecimal oldInvoiceAmount ; + //原始开票总额+本次开票金额 + BigDecimal invoiceAmount=new BigDecimal("0"); + + switch (oldBmp.getProjectType().toString()) { + // 普通项目 + case PayIncomeContractCommon.PROJECT_TYPE1: + PayCommonProject payCommonProject = payCommonProjectMapper.selectById(oldBmp.getProjectId()); + amountReceivable = payCommonProject.getReceivableAmount();//应收 + needInvoice = payCommonProject.getNeedInvoice();//是否需要发票 + + //之前开票总额-编辑之前的开票金额 + oldInvoiceAmount = payCommonProject.getInvoiceAmount().subtract(oldBmp.getInvoiceAmount()).setScale(2, BigDecimal.ROUND_HALF_UP); + if(oldInvoiceAmount==null){ + oldInvoiceAmount= new BigDecimal("0"); + } + //原始开票总额+本次开票金额 + invoiceAmount = oldInvoiceAmount.add(bm.getInvoiceAmount()).setScale(2, BigDecimal.ROUND_HALF_UP); + //开票总额>应收 + if(invoiceAmount.compareTo(payCommonProject.getReceivableAmount()) == 1){ + return "开票金额大于当前欠未开票金额,输入有误!"; + } + break; + // 工作组项目 + case PayIncomeContractCommon.PROJECT_TYPE2: + PayWorkingGroupSubItem workingGroup = payWorkingGroupSubItemMapper.selectById(oldBmp.getProjectId()); + amountReceivable = workingGroup.getReceivableAmount();//应收 + needInvoice = workingGroup.getNeedInvoice();//是否需要发票 + + //之前开票总额-编辑之前的开票金额 + oldInvoiceAmount = workingGroup.getInvoiceAmount().subtract(oldBmp.getInvoiceAmount()).setScale(2, BigDecimal.ROUND_HALF_UP); + if(oldInvoiceAmount==null){ + oldInvoiceAmount= new BigDecimal("0"); + } + //原始开票总额+本次开票金额 + invoiceAmount = oldInvoiceAmount.add(bm.getInvoiceAmount()).setScale(2, BigDecimal.ROUND_HALF_UP); + //开票总额>应收 + if(invoiceAmount.compareTo(workingGroup.getReceivableAmount()) == 1){ + return "开票金额大于当前欠未开票金额,输入有误!"; + } + break; + //会议项目 + case PayIncomeContractCommon.PROJECT_TYPE3: + PayMeetingSituation meeting = payMeetingSituationMapper.selectById(oldBmp.getProjectId()); + amountReceivable = meeting.getAmountReceivable();//应收 + needInvoice = meeting.getNeedInvoice();//是否需要发票 + + //之前开票总额-编辑之前的开票金额 + oldInvoiceAmount = meeting.getInvoiceAmount().subtract(oldBmp.getInvoiceAmount()).setScale(2, BigDecimal.ROUND_HALF_UP); + if(oldInvoiceAmount==null){ + oldInvoiceAmount= new BigDecimal("0"); + } + //原始开票总额+本次开票金额 + invoiceAmount = oldInvoiceAmount.add(bm.getInvoiceAmount()).setScale(2, BigDecimal.ROUND_HALF_UP); + //开票总额>应收 + if(invoiceAmount.compareTo(meeting.getAmountReceivable()) == 1){ + return "开票金额大于当前欠未开票金额,输入有误!"; + } + break; + //会员项目 + case PayIncomeContractCommon.PROJECT_TYPE4: + PayMemberProjectSubitem memberProject = payMemberProjectSubitemMapper.selectById(oldBmp.getProjectId()); + amountReceivable = memberProject.getAmountReceivable();//应收 + needInvoice = memberProject.getNeedInvoice();//是否需要发票 + + //之前开票总额-编辑之前的开票金额 + oldInvoiceAmount = memberProject.getInvoiceAmount().subtract(oldBmp.getInvoiceAmount()).setScale(2, BigDecimal.ROUND_HALF_UP); + if(oldInvoiceAmount==null){ + oldInvoiceAmount= new BigDecimal("0"); + } + //原始开票总额+本次开票金额 + invoiceAmount = oldInvoiceAmount.add(bm.getInvoiceAmount()).setScale(2, BigDecimal.ROUND_HALF_UP); + //开票总额>应收 + if(invoiceAmount.compareTo(memberProject.getAmountReceivable()) == 1){ + return "开票金额大于当前欠未开票金额,输入有误!"; + } + break; + //标协会员 + case PayIncomeContractCommon.PROJECT_TYPE5: + return "标协会员类型不可编辑!"; + default: + break; + } + if(amountReceivable==null){ + amountReceivable =new BigDecimal("0"); + } + + BigDecimal zero =new BigDecimal("0"); + + //应收=0 || 不需要开票 + if(amountReceivable.compareTo(zero)==0 || needInvoice.equals(0)){ + makeInvoice= 3; + } + //应收>开票总额 && 开票总额!=0 + if(amountReceivable.compareTo(invoiceAmount) == 1 && !(invoiceAmount.compareTo(zero) == 0)){ + makeInvoice= 2; + } + //开票总额>=应收 + if(invoiceAmount.compareTo(amountReceivable) > -1){ + makeInvoice= 1; + } + //开票总额为0 + if(invoiceAmount.compareTo(zero)==0){ + makeInvoice= 0; + } + + //更新项目表开票状态 + switch (oldBmp.getProjectType().toString()) { + // 普通项目 + case PayIncomeContractCommon.PROJECT_TYPE1: + PayCommonProject newCommon = new PayCommonProject(); + newCommon.setId(oldBmp.getProjectId()); + newCommon.setMakeInvoice(makeInvoice); + newCommon.setInvoiceAmount(invoiceAmount); + payCommonProjectMapper.updateById(newCommon); + break; + // 工作组项目 + case PayIncomeContractCommon.PROJECT_TYPE2: + PayWorkingGroupSubItem newWorkingGroup = new PayWorkingGroupSubItem(); + newWorkingGroup.setId(oldBmp.getProjectId()); + newWorkingGroup.setMakeInvoice(makeInvoice); + newWorkingGroup.setInvoiceAmount(invoiceAmount); + payWorkingGroupSubItemMapper.updateById(newWorkingGroup); + break; + //会议项目 + case PayIncomeContractCommon.PROJECT_TYPE3: + PayMeetingSituation newMeeting = new PayMeetingSituation(); + newMeeting.setId(oldBmp.getProjectId()); + newMeeting.setMakeInvoice(makeInvoice); + newMeeting.setInvoiceAmount(invoiceAmount); + payMeetingSituationMapper.updateById(newMeeting); + break; + //会员项目 + case PayIncomeContractCommon.PROJECT_TYPE4: + PayMemberProjectSubitem newMemberProject = new PayMemberProjectSubitem(); + newMemberProject.setId(oldBmp.getProjectId()); + newMemberProject.setMakeInvoice(makeInvoice); + newMemberProject.setInvoiceAmount(invoiceAmount); + payMemberProjectSubitemMapper.updateById(newMemberProject); + break; + default: + break; + } + + return "success"; + } } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/payment/controller/PayPaymentRecordController.java b/jero-boot-incoming-payment/src/main/java/com/jero/payment/controller/PayPaymentRecordController.java index 779e6c00..f2ba4f1b 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/payment/controller/PayPaymentRecordController.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/payment/controller/PayPaymentRecordController.java @@ -134,7 +134,7 @@ public class PayPaymentRecordController extends JeroController editAmountReceived(@RequestBody PayPaymentRecord payPaymentRecord) { - payPaymentRecordService.updateById(payPaymentRecord); + payPaymentRecordService.editAmountReceived(payPaymentRecord); return Result.OK("编辑成功!"); } @@ -164,8 +164,8 @@ public class PayPaymentRecordController extends JeroController editPayBill(@RequestBody PayMailBill payMailBill) { - payMailBillService.updateById(payMailBill); + public Result editPayBill(@RequestBody PayMailBillVO payMailBillVo) { + payMailBillService.editPayBill(payMailBillVo); return Result.OK("编辑成功!"); } diff --git a/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/IPayPaymentRecordService.java b/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/IPayPaymentRecordService.java index 1734c74b..af8add02 100644 --- a/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/IPayPaymentRecordService.java +++ b/jero-boot-incoming-payment/src/main/java/com/jero/payment/service/IPayPaymentRecordService.java @@ -47,6 +47,11 @@ public interface IPayPaymentRecordService extends IService { */ Result standardsAddAR(String tbPaymentId,PayPaymentRecord payPaymentRecord); + /** + * 编辑来款 + * @param payPaymentRecord + */ + void editAmountReceived(PayPaymentRecord payPaymentRecord); /** * 导出 * @param request 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 d833d2ef..307e1867 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 @@ -84,7 +84,6 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl list){ List typr5List = new ArrayList<>(); @@ -92,10 +91,8 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl0){ -// HashMap paramMap = new HashMap<>(); -// paramMap.put("voList",typr5List); AuthenticationUtils.post("/paymentInfo/incomingPaymentCheck",null,typr5List); } } @@ -322,7 +319,7 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl