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);
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")
public Result<?> mergePayBill(@RequestBody MergePayBillVO 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.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<PayMeetingSituat
private IMemberInfoService memberInfoService;
@Resource
private ISysBaseAPI iSysBaseApi;
@Resource
private IPayMailBillService payMailBillService;
/**
* 保存
*/
@@ -130,6 +136,7 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
public void check(CheckVO checkVO) {
String id = checkVO.getId();
PayMeetingSituation meetingSituation = getById(id);
Integer checkResult = checkVO.getCheckResult();
if (checkResult.equals(MeetingSubitemCommon.SIGNUP_STATUS_2)){
//TODO 提示信息
@@ -140,7 +147,54 @@ public class PayMeetingSituationServiceImpl extends ServiceImpl<PayMeetingSituat
@Override
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;
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<String> meetingSituationIds;
}
@@ -96,10 +96,7 @@ public class PayPaymentRecordServiceImpl extends ServiceImpl<PayPaymentRecordMap
*/
public Result<?> 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<PayPaymentRecordMap
}
//来款记录表新增
private String insertPayPaymentRecord(PayPaymentRecord payPaymentRecord){
private void insertPayPaymentRecord(PayPaymentRecord payPaymentRecord){
//如果是标协会员类型,只能新增一次
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);
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<PayPaymentRecordMap
//欠款
BigDecimal debtInsert = rAInsert.subtract(pAInsert);
if(aRInsert.compareTo(debtInsert) != 0){
return "标协会员项目,到账金额不等于欠款金额。";
throw new JeroBootException("标协会员项目,到账金额不等于欠款金额。");
}
}
payPaymentRecordMapper.insert(payPaymentRecord);
return "success";
}
/**