批量开票
This commit is contained in:
@@ -29,8 +29,6 @@ public interface PayMailBillMapper extends BaseMapper<PayMailBill> {
|
|||||||
*/
|
*/
|
||||||
List<PayMailBill> selectCommonProjectMailBillVO(@Param("projectId") String projectId);
|
List<PayMailBill> selectCommonProjectMailBillVO(@Param("projectId") String projectId);
|
||||||
|
|
||||||
// 开票总额
|
|
||||||
BigDecimal sumInvoiceAmount(@Param("projectId") String projectId);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+5
@@ -2,6 +2,9 @@ package com.jero.mail.mapper;
|
|||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.jero.mail.entity.PayMailBillProject;
|
import com.jero.mail.entity.PayMailBillProject;
|
||||||
|
import io.lettuce.core.dynamic.annotation.Param;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: pay_mail_bill_project
|
* @Description: pay_mail_bill_project
|
||||||
@@ -11,4 +14,6 @@ import com.jero.mail.entity.PayMailBillProject;
|
|||||||
*/
|
*/
|
||||||
public interface PayMailBillProjectMapper extends BaseMapper<PayMailBillProject> {
|
public interface PayMailBillProjectMapper extends BaseMapper<PayMailBillProject> {
|
||||||
|
|
||||||
|
// 开票总额
|
||||||
|
BigDecimal sumInvoiceAmount(@Param("projectId") String projectId);
|
||||||
}
|
}
|
||||||
|
|||||||
-7
@@ -42,12 +42,5 @@
|
|||||||
WHERE pmb.id IN (SELECT bill_id FROM pay_mail_bill_project WHERE project_id=#{projectId})
|
WHERE pmb.id IN (SELECT bill_id FROM pay_mail_bill_project WHERE project_id=#{projectId})
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<!-- 开票总额-->
|
|
||||||
<select id="sumInvoiceAmount" resultType="Decimal">
|
|
||||||
select sum(b.invoice_amount)
|
|
||||||
from pay_mail_bill b
|
|
||||||
left join pay_mail_bill_project bp on b.id = bp.bill_id
|
|
||||||
where bp.project_id= #{projectId}
|
|
||||||
</select>
|
|
||||||
|
|
||||||
</mapper>
|
</mapper>
|
||||||
+7
-1
@@ -1,5 +1,11 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
<mapper namespace="org.jeecg.modules.demo.mailBill.mapper.PayMailBillProjectMapper">
|
<mapper namespace="com.jero.mail.mapper.PayMailBillProjectMapper">
|
||||||
|
|
||||||
|
<!-- 开票总额-->
|
||||||
|
<select id="sumInvoiceAmount" resultType="Decimal">
|
||||||
|
select sum(invoice_amount)
|
||||||
|
from pay_mail_bill_project
|
||||||
|
where project_id= #{projectId}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
+1
-1
@@ -33,7 +33,7 @@ public interface IPayMailBillService extends IService<PayMailBill> {
|
|||||||
* @param payMailBill
|
* @param payMailBill
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Result<?> addPayBill(PayMailBill payMailBill,String projectIds,String projectTypes);
|
Result<?> addPayBill(PayMailBill payMailBill,String projectIds,String projectTypes,String invoiceAmounts);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+35
-4
@@ -15,6 +15,7 @@ import com.jero.mail.entity.PayMailBill;
|
|||||||
import com.jero.mail.entity.PayMailBillProject;
|
import com.jero.mail.entity.PayMailBillProject;
|
||||||
import com.jero.mail.entity.PayMailBillSearch;
|
import com.jero.mail.entity.PayMailBillSearch;
|
||||||
import com.jero.mail.mapper.PayMailBillMapper;
|
import com.jero.mail.mapper.PayMailBillMapper;
|
||||||
|
import com.jero.mail.mapper.PayMailBillProjectMapper;
|
||||||
import com.jero.mail.service.IPayMailBillProjectService;
|
import com.jero.mail.service.IPayMailBillProjectService;
|
||||||
import com.jero.mail.service.IPayMailBillService;
|
import com.jero.mail.service.IPayMailBillService;
|
||||||
import com.jero.meeting.entity.PayMeetingSituation;
|
import com.jero.meeting.entity.PayMeetingSituation;
|
||||||
@@ -71,6 +72,8 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
|
|||||||
private TbMemberProjectSubitemMapper tbMemberProjectSubitemMapper;
|
private TbMemberProjectSubitemMapper tbMemberProjectSubitemMapper;
|
||||||
@Resource
|
@Resource
|
||||||
private PayMailBillMapper payMailBillMapper;
|
private PayMailBillMapper payMailBillMapper;
|
||||||
|
@Resource
|
||||||
|
private PayMailBillProjectMapper payMailBillProjectMapper;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<PayMailBill> selectMailBillVO(String projectId) {
|
public List<PayMailBill> selectMailBillVO(String projectId) {
|
||||||
@@ -96,13 +99,14 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
|
|||||||
* @param payMailBill
|
* @param payMailBill
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public Result<?> addPayBill(PayMailBill payMailBill, String projectIds, String projectTypes) {
|
public Result<?> addPayBill(PayMailBill payMailBill, String projectIds, String projectTypes,String invoiceAmounts) {
|
||||||
|
|
||||||
String[] projectIdArray = projectIds.split(",");
|
String[] projectIdArray = projectIds.split(",");
|
||||||
String[] projectTypeArray = projectTypes.split(",");
|
String[] projectTypeArray = projectTypes.split(",");
|
||||||
|
String[] invoiceAmountArrays = invoiceAmounts.split(",");
|
||||||
|
|
||||||
//校验不同项目是否属于同一个公司
|
//校验不同项目是否属于同一个公司
|
||||||
String res = checkCompanyProject(projectIdArray, projectTypeArray);
|
String res = checkCompanyProject(projectIdArray, projectTypeArray,invoiceAmountArrays);
|
||||||
if (!"success".equals(res)) {
|
if (!"success".equals(res)) {
|
||||||
return Result.error(res);
|
return Result.error(res);
|
||||||
}
|
}
|
||||||
@@ -120,6 +124,7 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
|
|||||||
throw new JeroBootException("标协会员项目,只能开票一次。");
|
throw new JeroBootException("标协会员项目,只能开票一次。");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//新增票据邮寄表
|
//新增票据邮寄表
|
||||||
@@ -131,6 +136,7 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
|
|||||||
payMailBillProject.setBillId(payMailBill.getId());
|
payMailBillProject.setBillId(payMailBill.getId());
|
||||||
payMailBillProject.setProjectId(projectIdArray[i]);
|
payMailBillProject.setProjectId(projectIdArray[i]);
|
||||||
payMailBillProject.setProjectType(Integer.valueOf(projectTypeArray[i]));
|
payMailBillProject.setProjectType(Integer.valueOf(projectTypeArray[i]));
|
||||||
|
payMailBillProject.setInvoiceAmount(new BigDecimal(invoiceAmountArrays[i]));
|
||||||
payMailBillProjectService.save(payMailBillProject);
|
payMailBillProjectService.save(payMailBillProject);
|
||||||
|
|
||||||
// 更新项目表开票状态
|
// 更新项目表开票状态
|
||||||
@@ -141,11 +147,16 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
|
|||||||
|
|
||||||
|
|
||||||
//校验不同项目是否属于同一个公司
|
//校验不同项目是否属于同一个公司
|
||||||
private String checkCompanyProject(String[] projectIdArray, String[] projectTypeArray) {
|
private String checkCompanyProject(String[] projectIdArray, String[] projectTypeArray,String[] invoiceAmountArrays) {
|
||||||
String standardCompanyId = null;//基准公司id
|
String standardCompanyId = null;//基准公司id
|
||||||
|
|
||||||
for (int i = 0; i < projectTypeArray.length; i++) {
|
for (int i = 0; i < projectTypeArray.length; i++) {
|
||||||
|
|
||||||
|
//之前开票总额
|
||||||
|
BigDecimal oldInvoiceAmount = payMailBillProjectMapper.sumInvoiceAmount(projectIdArray[i]);
|
||||||
|
//加上本次开票金额
|
||||||
|
BigDecimal invoiceAmount = oldInvoiceAmount.add(new BigDecimal(invoiceAmountArrays[i])).setScale(2, BigDecimal.ROUND_HALF_UP);
|
||||||
|
|
||||||
switch (projectTypeArray[i]) {
|
switch (projectTypeArray[i]) {
|
||||||
|
|
||||||
// 普通项目
|
// 普通项目
|
||||||
@@ -158,6 +169,10 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
|
|||||||
if (!standardCompanyId.equals(payCommonProject.getChargeCompanyId())) {
|
if (!standardCompanyId.equals(payCommonProject.getChargeCompanyId())) {
|
||||||
return "打包开票只能是同一个企业";
|
return "打包开票只能是同一个企业";
|
||||||
}
|
}
|
||||||
|
//开票总额>应收
|
||||||
|
if(invoiceAmount.compareTo(payCommonProject.getReceivableAmount()) == 1){
|
||||||
|
return "开票金额大于当前欠未开票金额,输入有误!";
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
// 工作组项目
|
// 工作组项目
|
||||||
case PayIncomeContractCommon.PROJECT_TYPE2:
|
case PayIncomeContractCommon.PROJECT_TYPE2:
|
||||||
@@ -169,6 +184,10 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
|
|||||||
if (!standardCompanyId.equals(workingGroup.getChargeCompanyId())) {
|
if (!standardCompanyId.equals(workingGroup.getChargeCompanyId())) {
|
||||||
return "打包开票只能是同一个企业";
|
return "打包开票只能是同一个企业";
|
||||||
}
|
}
|
||||||
|
//开票总额>应收
|
||||||
|
if(invoiceAmount.compareTo(workingGroup.getReceivableAmount()) == 1){
|
||||||
|
return "开票金额大于当前欠未开票金额,输入有误!";
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
//会议项目
|
//会议项目
|
||||||
case PayIncomeContractCommon.PROJECT_TYPE3:
|
case PayIncomeContractCommon.PROJECT_TYPE3:
|
||||||
@@ -180,6 +199,10 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
|
|||||||
if (!standardCompanyId.equals(meeting.getCompanyId())) {
|
if (!standardCompanyId.equals(meeting.getCompanyId())) {
|
||||||
return "打包开票只能是同一个企业";
|
return "打包开票只能是同一个企业";
|
||||||
}
|
}
|
||||||
|
//开票总额>应收
|
||||||
|
if(invoiceAmount.compareTo(meeting.getAmountReceivable()) == 1){
|
||||||
|
return "开票金额大于当前欠未开票金额,输入有误!";
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
//会员项目
|
//会员项目
|
||||||
case PayIncomeContractCommon.PROJECT_TYPE4:
|
case PayIncomeContractCommon.PROJECT_TYPE4:
|
||||||
@@ -191,6 +214,10 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
|
|||||||
if (!standardCompanyId.equals(memberProject.getCompanyId())) {
|
if (!standardCompanyId.equals(memberProject.getCompanyId())) {
|
||||||
return "打包开票只能是同一个企业";
|
return "打包开票只能是同一个企业";
|
||||||
}
|
}
|
||||||
|
//开票总额>应收
|
||||||
|
if(invoiceAmount.compareTo(memberProject.getAmountReceivable()) == 1){
|
||||||
|
return "开票金额大于当前欠未开票金额,输入有误!";
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
//标协会员
|
//标协会员
|
||||||
case PayIncomeContractCommon.PROJECT_TYPE5:
|
case PayIncomeContractCommon.PROJECT_TYPE5:
|
||||||
@@ -202,6 +229,10 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
|
|||||||
if (!standardCompanyId.equals(tbMemberProject.getCompanyId())) {
|
if (!standardCompanyId.equals(tbMemberProject.getCompanyId())) {
|
||||||
return "打包开票只能是同一个企业";
|
return "打包开票只能是同一个企业";
|
||||||
}
|
}
|
||||||
|
//开票总额>应收
|
||||||
|
if(invoiceAmount.compareTo(tbMemberProject.getAmountReceivable()) == 1){
|
||||||
|
return "开票金额大于当前欠未开票金额,输入有误!";
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -256,7 +287,7 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// 开票总额
|
// 开票总额
|
||||||
BigDecimal invoiceAmount = payMailBillMapper.sumInvoiceAmount(projectId);
|
BigDecimal invoiceAmount = payMailBillProjectMapper.sumInvoiceAmount(projectId);
|
||||||
if(invoiceAmount==null){
|
if(invoiceAmount==null){
|
||||||
invoiceAmount =new BigDecimal("0");
|
invoiceAmount =new BigDecimal("0");
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -231,7 +231,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
|
|||||||
payMailBill.setBillDate(new Date());
|
payMailBill.setBillDate(new Date());
|
||||||
payMailBill.setProjectName(payMeeting.getMeetingName());
|
payMailBill.setProjectName(payMeeting.getMeetingName());
|
||||||
payMailBill.setChargeCompanyName(payMeetingSituation.getCompanyName());
|
payMailBill.setChargeCompanyName(payMeetingSituation.getCompanyName());
|
||||||
payMailBillService.addPayBill(payMailBill, projectIds.toString(), PayIncomeContractCommon.PROJECT_TYPE3);
|
payMailBillService.addPayBill(payMailBill, projectIds.toString(), PayIncomeContractCommon.PROJECT_TYPE3,allAmount.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user