add 合并开票

This commit is contained in:
lijiarao
2021-09-14 15:10:17 +08:00
parent fbfab7612d
commit 8506482f1e
5 changed files with 64 additions and 13 deletions
@@ -114,7 +114,7 @@ public class PayMailBillServiceImpl extends ServiceImpl<PayMailBillMapper, PayMa
List<PayMailBillProject> type5List = payMailBillProjectService.list(wrapper); List<PayMailBillProject> type5List = payMailBillProjectService.list(wrapper);
if (type5List != null && type5List.size() > 0) { if (type5List != null && type5List.size() > 0) {
return Result.error("标协会员项目,只能开票一次。"); throw new JeroBootException("标协会员项目,只能开票一次。");
} }
} }
} }
@@ -190,7 +190,7 @@ public class PayMeetingSituationController extends JeroController<PayMeetingSitu
@PostMapping(value = "/batchPayBill") @PostMapping(value = "/batchPayBill")
public Result<?> mergePayBill(@RequestBody MergePayBillVO mergePayBillVO) { public Result<?> mergePayBill(@RequestBody MergePayBillVO mergePayBillVO) {
payMeetingSituationService.mergePayBill(mergePayBillVO); payMeetingSituationService.mergePayBill(mergePayBillVO);
return Result.OK("审核成功!"); return Result.OK("合并开票成功!");
} }
} }
@@ -10,6 +10,9 @@ import com.jero.company.entity.PayCompanyManagement;
import com.jero.company.entity.PayContactsManagement; import com.jero.company.entity.PayContactsManagement;
import com.jero.company.service.IPayCompanyManagementService; import com.jero.company.service.IPayCompanyManagementService;
import com.jero.company.service.IPayContactsManagementService; 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.MeetingCommon;
import com.jero.meeting.common.MeetingSubitemCommon; import com.jero.meeting.common.MeetingSubitemCommon;
import com.jero.meeting.entity.PayMeeting; import com.jero.meeting.entity.PayMeeting;
@@ -30,6 +33,7 @@ import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.List; import java.util.List;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -59,6 +63,8 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
private IMemberInfoService memberInfoService; private IMemberInfoService memberInfoService;
@Resource @Resource
private ISysBaseAPI iSysBaseApi; private ISysBaseAPI iSysBaseApi;
@Resource
private IPayMailBillService payMailBillService;
/** /**
* 保存 * 保存
*/ */
@@ -130,6 +136,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
public void check(CheckVO checkVO) { public void check(CheckVO checkVO) {
String id = checkVO.getId(); String id = checkVO.getId();
PayMeetingSituation meetingSituation = getById(id); PayMeetingSituation meetingSituation = getById(id);
Integer checkResult = checkVO.getCheckResult(); Integer checkResult = checkVO.getCheckResult();
if (checkResult.equals(MeetingSubitemCommon.SIGNUP_STATUS_2)){ if (checkResult.equals(MeetingSubitemCommon.SIGNUP_STATUS_2)){
//TODO 提示信息 //TODO 提示信息
@@ -140,7 +147,54 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
@Override @Override
public void mergePayBill(MergePayBillVO mergePayBillVO) { public void mergePayBill(MergePayBillVO mergePayBillVO) {
mergePayBillVO.getInvoiceAmount(); List<String> meetingSituationIds = mergePayBillVO.getMeetingSituationIds();
List<PayMeetingSituation> 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);
} }
/** /**
@@ -1,13 +1,12 @@
package com.jero.meeting.vo; 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 io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.DecimalMax; import javax.validation.constraints.DecimalMax;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.List; import java.util.List;
@@ -35,6 +34,8 @@ public class MergePayBillVO {
@DecimalMax(value = "9999999999.99", message = "开票金额格式错误") @DecimalMax(value = "9999999999.99", message = "开票金额格式错误")
private BigDecimal invoiceAmount; private BigDecimal invoiceAmount;
@NotNull(message = "请选择参会人")
@Size(min = 1, message = "请选择参会人")
private List<String> meetingSituationIds; private List<String> meetingSituationIds;
} }
@@ -96,10 +96,7 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
*/ */
public Result<?> addPhase(PayPaymentRecord payPaymentRecord){ public Result<?> addPhase(PayPaymentRecord payPaymentRecord){
//来款记录表新增 //来款记录表新增
String res = insertPayPaymentRecord(payPaymentRecord); insertPayPaymentRecord(payPaymentRecord);
if(!"success".equals(res)){
return Result.error(res);
}
BigDecimal receivableAmount; BigDecimal receivableAmount;
Boolean isAdd; Boolean isAdd;
@@ -219,7 +216,7 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
} }
//来款记录表新增 //来款记录表新增
private String insertPayPaymentRecord(PayPaymentRecord payPaymentRecord){ private void insertPayPaymentRecord(PayPaymentRecord payPaymentRecord){
//如果是标协会员类型,只能新增一次 //如果是标协会员类型,只能新增一次
if(PayIncomeContractCommon.PROJECT_TYPE5.equals(String.valueOf(payPaymentRecord.getProjectType()))){ if(PayIncomeContractCommon.PROJECT_TYPE5.equals(String.valueOf(payPaymentRecord.getProjectType()))){
@@ -229,7 +226,7 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
List<PayPaymentRecord> type5List = payPaymentRecordMapper.selectList(wrapper); List<PayPaymentRecord> type5List = payPaymentRecordMapper.selectList(wrapper);
if(type5List!=null && type5List.size()>0){ if(type5List!=null && type5List.size()>0){
return "标协会员项目,只能来款一次。"; throw new JeroBootException("标协会员项目,只能来款一次。");
} }
TbMemberProjectSubitem tbMemberInsert = tbMemberProjectSubitemMapper.selectById(payPaymentRecord.getProjectId()); TbMemberProjectSubitem tbMemberInsert = tbMemberProjectSubitemMapper.selectById(payPaymentRecord.getProjectId());
@@ -240,11 +237,10 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
//欠款 //欠款
BigDecimal debtInsert = rAInsert.subtract(pAInsert); BigDecimal debtInsert = rAInsert.subtract(pAInsert);
if(aRInsert.compareTo(debtInsert) != 0){ if(aRInsert.compareTo(debtInsert) != 0){
return "标协会员项目,到账金额不等于欠款金额。"; throw new JeroBootException("标协会员项目,到账金额不等于欠款金额。");
} }
} }
payPaymentRecordMapper.insert(payPaymentRecord); payPaymentRecordMapper.insert(payPaymentRecord);
return "success";
} }
/** /**