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 90ac71c3..e43d5d48 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 @@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.jero.mail.entity.PayMailBill; import io.lettuce.core.dynamic.annotation.Param; +import java.math.BigDecimal; import java.util.List; /** @@ -24,4 +25,6 @@ public interface PayMailBillMapper extends BaseMapper { */ List selectCommonProjectMailBillVO(@Param("projectId") String projectId); +// 开票总额 + BigDecimal sumInvoiceAmount(@Param("projectId") String projectId); } 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 fa6aea78..acd3b37c 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 @@ -15,7 +15,7 @@ - + @@ -34,11 +34,19 @@ pmb.post_no, pmb.liaison_man, pmb.mobile, - pmb.payment_date, + pmb.bill_date, pmb.send_date, pmb.remark, pmb.project_name FROM pay_mail_bill pmb WHERE pmb.id IN (SELECT bill_id FROM pay_mail_bill_project WHERE project_id=#{projectId}) + + + \ No newline at end of file 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 8fb744ec..82c5020d 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 @@ -27,6 +27,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -53,20 +54,22 @@ public class PayMailBillServiceImpl extends ServiceImpl selectMailBillVO(String projectId) { - if(StringUtils.isBlank(projectId)){ + if (StringUtils.isBlank(projectId)) { throw new JeroBootException("项目id不能为空!"); } List list = new ArrayList<>(); LambdaQueryWrapper queryMailBillProject = new LambdaQueryWrapper<>(); - queryMailBillProject.eq(PayMailBillProject::getProjectId,projectId); + queryMailBillProject.eq(PayMailBillProject::getProjectId, projectId); List listPayMailBillProject = payMailBillProjectService.list(); - if(!CollectionUtils.isEmpty(listPayMailBillProject)){ + if (!CollectionUtils.isEmpty(listPayMailBillProject)) { List listBill = listPayMailBillProject.stream().map(PayMailBillProject::getBillId).collect(Collectors.toList()); LambdaQueryWrapper queryPayMailBill = new LambdaQueryWrapper<>(); - queryPayMailBill.in(PayMailBill::getId,listBill); + queryPayMailBill.in(PayMailBill::getId, listBill); list = payMailBillService.list(queryPayMailBill); } return list; @@ -74,30 +77,31 @@ public class PayMailBillServiceImpl extends ServiceImpl addPayBill(PayMailBill payMailBill,String projectIds,String projectTypes){ + public Result addPayBill(PayMailBill payMailBill, String projectIds, String projectTypes) { String[] projectIdArray = projectIds.split(","); String[] projectTypeArray = projectTypes.split(","); //校验不同项目是否属于同一个公司 - String res=checkCompanyProject(projectIdArray,projectTypeArray); - if(!"success".equals(res)){ + String res = checkCompanyProject(projectIdArray, projectTypeArray); + if (!"success".equals(res)) { return Result.error(res); } for (int i = 0; i < projectIdArray.length; i++) { - if(PayIncomeContractCommon.PROJECT_TYPE5.equals(String.valueOf(projectIdArray[i]))){ + if (PayIncomeContractCommon.PROJECT_TYPE5.equals(String.valueOf(projectIdArray[i]))) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(PayMailBillProject::getProjectId, projectIdArray[i]); wrapper.eq(PayMailBillProject::getProjectType, PayIncomeContractCommon.PROJECT_TYPE5); List type5List = payMailBillProjectService.list(wrapper); - if(type5List!=null && type5List.size()>0){ + if (type5List != null && type5List.size() > 0) { return Result.error("标协会员项目,只能开票一次。"); } } @@ -106,20 +110,23 @@ public class PayMailBillServiceImpl extends ServiceImpl开票总额 && 开票总额!=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 (projectType) { + // 普通项目 + case PayIncomeContractCommon.PROJECT_TYPE1: + PayCommonProject newCommon = new PayCommonProject(); + newCommon.setId(projectId); + newCommon.setMakeInvoice(makeInvoice); + payCommonProjectMapper.updateById(newCommon); + break; + // 工作组项目 + case PayIncomeContractCommon.PROJECT_TYPE2: + PayWorkingGroupSubItem newWorkingGroup = new PayWorkingGroupSubItem(); + newWorkingGroup.setId(projectId); + newWorkingGroup.setMakeInvoice(makeInvoice); + payWorkingGroupSubItemMapper.updateById(newWorkingGroup); + break; + //会议项目 + case PayIncomeContractCommon.PROJECT_TYPE3: + PayMeetingSituation newMeeting = new PayMeetingSituation(); + newMeeting.setId(projectId); + newMeeting.setMakeInvoice(makeInvoice); + payMeetingSituationMapper.updateById(newMeeting); + break; + //会员项目 + case PayIncomeContractCommon.PROJECT_TYPE4: + PayMemberProjectSubitem newMemberProject = new PayMemberProjectSubitem(); + newMemberProject.setId(projectId); + newMemberProject.setMakeInvoice(makeInvoice); + payMemberProjectSubitemMapper.updateById(newMemberProject); + break; + //标协会员 + case PayIncomeContractCommon.PROJECT_TYPE5: + TbMemberProjectSubitem newTbMemberProject = new TbMemberProjectSubitem(); + newTbMemberProject.setId(projectId); + newTbMemberProject.setMakeInvoice(makeInvoice); + tbMemberProjectSubitemMapper.updateById(newTbMemberProject); + break; + default: + break; + } + } + } 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 7ca71a75..89eeaeb3 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 @@ -271,12 +271,19 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl实收>0 - if(receivableAmount.compareTo(paidAmount) == 1 && paidAmount!=null && paidAmount.compareTo(zero)==1){ + if(receivableAmount.compareTo(paidAmount) == 1 && paidAmount.compareTo(zero)==1){ return 2; } //应收=实收