This commit is contained in:
linfso 2024-09-28 14:39:02 +08:00
parent 76fd13e3cd
commit 3e8a3dc7ec
10 changed files with 229 additions and 201 deletions

View File

@ -88,6 +88,9 @@ public class EmisCommonController extends EmisBaseController
@Autowired
private IEmisSettlePayRecordService emisSettlePayRecordService;
@Autowired
private IEmisSettleBillService emisSettleBillService;
@Autowired
@ -942,7 +945,7 @@ public class EmisCommonController extends EmisBaseController
@RequestMapping("/reCalcSettleBillInvoiceStatus")
public void reCalcSettleBillInvoiceStatus(String settleBillNo) {
try{
emisSettleInvoiceRecordService.reCalcSettleBillInvoiceStatus(settleBillNo);
emisSettleBillService.reCalcSettleBillInvoiceStatus(settleBillNo);
}
catch (Exception ex){
ex.printStackTrace();
@ -957,7 +960,7 @@ public class EmisCommonController extends EmisBaseController
@RequestMapping("/reCalcSettleBillPayStatus")
public void reCalcSettleBillPayStatus(String settleBillNo) {
try{
emisSettlePayRecordService.reCalcSettleBillPayStatus(settleBillNo);
emisSettleBillService.reCalcSettleBillPayStatus(settleBillNo);
}
catch (Exception ex){
ex.printStackTrace();

View File

@ -317,6 +317,8 @@ public class EmisSettleBillController extends BaseController
}
/**
* 站点确认账单
*/

View File

@ -273,7 +273,12 @@ public class EmisSettleSubBillController extends EmisBaseController
if(!StringUtils.isEmpty(old.getSettleBillNo())) {
EmisSettleBill oldSettleBill=emisSettleBillService.selectEmisSettleBillBySettleBillNo(old.getSettleBillNo());
if(oldSettleBill!=null) {
// 重新计算账单费用,计算开票状态,计算收款状态
emisSettleBillService.reCalcSettleBillFee(oldSettleBill);
emisSettleBillService.reCalcSettleBillInvoiceStatus(old.getSettleBillNo());
emisSettleBillService.reCalcSettleBillPayStatus(old.getSettleBillNo());
}
}

View File

@ -107,4 +107,20 @@ public interface IEmisSettleBillService extends IDataAuditService
* @return 结果
*/
public int deleteEmisSettleBillById(Long id) throws EmisBizError;
/**
* 重新计算账单开票状态
* @param settleBillNo
* @return
*/
public int reCalcSettleBillInvoiceStatus(String settleBillNo);
/**
* 重算账单收款状态
* @param settleBillNo
* @return
*/
public int reCalcSettleBillPayStatus(String settleBillNo);
}

View File

@ -89,13 +89,7 @@ public interface IEmisSettleInvoiceRecordService
public int auditCenterPass(EmisSettleInvoiceRecord inputObj) throws EmisBizError;
/**
* 重新计算账单开票状态
* @param settleBillNo
* @return
*/
public int reCalcSettleBillInvoiceStatus(String settleBillNo);

View File

@ -78,10 +78,5 @@ public interface IEmisSettlePayRecordService
public int deleteEmisSettlePayRecordById(Long id);
/**
* 重新计算收款状态
* @param settleBillNo
* @return
*/
public int reCalcSettleBillPayStatus(String settleBillNo);
}

View File

@ -11,29 +11,25 @@
package com.xdadan.erp.emis.service.impl;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.*;
import cn.hutool.core.collection.CollectionUtil;
import com.xdadan.erp.common.core.domain.AjaxResult;
import com.xdadan.erp.common.utils.DateUtils;
import com.xdadan.erp.common.utils.StringUtils;
import com.xdadan.erp.emis.domain.EmisCustomerUser;
import com.xdadan.erp.emis.domain.EmisSettleInvoiceRel;
import com.xdadan.erp.emis.domain.EmisSettleSubBill;
import com.xdadan.erp.emis.domain.*;
import com.xdadan.erp.emis.domain.enumtype.EmisBizErrorType;
import com.xdadan.erp.emis.domain.exception.EmisBizError;
import com.xdadan.erp.emis.domain.stat.BillPayStatInfo;
import com.xdadan.erp.emis.domain.stat.OpenBillStatInfo;
import com.xdadan.erp.emis.mapper.EmisSettleSubBillMapper;
import com.xdadan.erp.emis.mapper.*;
import com.xdadan.erp.emis.service.EmisBaseService;
import com.xdadan.erp.emis.utils.WaybillHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.xdadan.erp.emis.domain.EmisSettleBill;
import com.xdadan.erp.emis.mapper.EmisSettleBillMapper;
import com.xdadan.erp.emis.service.IEmisSettleBillService;
import org.springframework.transaction.annotation.Transactional;
@ -43,6 +39,8 @@ import org.springframework.transaction.annotation.Transactional;
* @author linfso
* @date 2024-07-03 18:54:51
*/
@Slf4j
@Service
public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisSettleBillService
{
@ -52,6 +50,15 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS
@Autowired
private EmisSettleSubBillMapper emisSettleSubBillMapper;
@Autowired
private EmisSettleInvoiceRelMapper emisSettleInvoiceRelMapper;
@Autowired
private EmisSettlePayRecordMapper emisSettlePayRecordMapper;
@Autowired
private EmisSettlePayRelMapper emisSettlePayRelMapper;
/**
* 获取稽核数据
* @param id
@ -456,6 +463,174 @@ public class EmisSettleBillServiceImpl extends EmisBaseService implements IEmisS
return emisSettleBillMapper.updateEmisSettleBill(emisSettleBill);
}
/**
* 打开票标记
* @param settleBillNo
* @return
*/
@Override
public int reCalcSettleBillInvoiceStatus(String settleBillNo){
EmisSettleBill oldBill = getSettleBillBySettleBillNo(settleBillNo);
if(oldBill==null){
log.error("reCalcSettleBillInvoiceStatus==>账单不存在:"+settleBillNo);
return 0;
}
BigDecimal totalMoney = BigDecimal.ZERO;
// 获取运单已经开票记录 // 查询关联的运单表
List<Map> listRel=emisSettleInvoiceRelMapper.selectHasOpenInvoiceMapList(settleBillNo);
if(!CollectionUtils.isEmpty(listRel)) {
for(Map item:listRel){
BigDecimal sumMoney = BigDecimal.valueOf(Double.valueOf(item.get("sumMoney").toString()));
totalMoney = totalMoney.add(sumMoney);
}
}
log.error("==>reCalcSettleBillInvoiceStatus:totalMoney={},recMoney={},recMoney-totalMoney:{}",totalMoney,oldBill.getRecMoney());
log.error("==>reCalcSettleBillInvoiceStatus:recMoney-totalMoney:{}",oldBill.getRecMoney().compareTo(totalMoney));
EmisSettleBill newBill = new EmisSettleBill();
newBill.setId(oldBill.getId());
if(BigDecimal.ZERO.compareTo(totalMoney)==0){
newBill.setOpenBillStatus("0");
}else {
if (oldBill.getRecMoney().compareTo(totalMoney) > 0) {
newBill.setOpenBillStatus("2");
} else {
newBill.setOpenBillStatus("1");
}
}
// 更新账单开票状态
emisSettleBillMapper.updateEmisSettleBill(newBill);
return 1;
}
/**
* 重算账单收款状态
* @param settleBillNo
* @return
*/
@Override
public int reCalcSettleBillPayStatus(String settleBillNo){
EmisSettleBill oldBill =getSettleBillBySettleBillNo(settleBillNo);
// 获取收款记录
List<EmisSettlePayRecord> payRecordList=emisSettlePayRecordMapper.selectSettlePayRecordListBySettleBillNo(settleBillNo);
// 全部收款金额
BigDecimal totalAllPayMoney = BigDecimal.ZERO;
// 计算已收款金额
BigDecimal totalPayMoney = BigDecimal.ZERO;
// 抵扣金额
BigDecimal satisfyMoney = BigDecimal.ZERO;
/* allowance_money */
BigDecimal allowanceMoney = BigDecimal.ZERO;
/* deduction_money */
BigDecimal deductionMoney = BigDecimal.ZERO;
/* other_money */
BigDecimal otherMoney = BigDecimal.ZERO;
// refund_money
BigDecimal refundMoney = BigDecimal.ZERO;
log.debug("reCalcSettleBillPayStatus===>应收:{}",oldBill.getRecMoney());
for(EmisSettlePayRecord item:payRecordList){
if("1".equals(item.getRecType())) {
totalPayMoney = totalPayMoney.add(item.getPayMoney());
satisfyMoney = satisfyMoney.add(item.getSatisfyMoney() == null ? BigDecimal.ZERO : item.getSatisfyMoney());
allowanceMoney = allowanceMoney.add(item.getAllowanceMoney() == null ? BigDecimal.ZERO : item.getAllowanceMoney());
deductionMoney = deductionMoney.add(item.getDeductionMoney() == null ? BigDecimal.ZERO : item.getDeductionMoney());
otherMoney = otherMoney.add(item.getOtherMoney() == null ? BigDecimal.ZERO : item.getOtherMoney());
}
else if("2".equals(item.getRecType())) {
refundMoney = refundMoney.add(item.getRefundMoney() == null ? BigDecimal.ZERO : item.getRefundMoney());
}
}
// 总应收金额
log.debug("reCalcSettleBillPayStatus===>totalPayMoney:{},satisfyMoney:{},allowanceMoney:{},deductionMoney:{},otherMoney:{}"
,totalPayMoney,satisfyMoney,allowanceMoney,allowanceMoney,deductionMoney,otherMoney);
// 收款金额-退款金额
totalAllPayMoney=totalAllPayMoney
.add(totalPayMoney)
.add(satisfyMoney)
.add(allowanceMoney)
.add(deductionMoney)
.add(otherMoney)
.subtract(refundMoney);
EmisSettleBill newBill = new EmisSettleBill();
newBill.setId(oldBill.getId());
newBill.setRecedMoney(totalPayMoney);
newBill.setSatisfyMoney(satisfyMoney);
newBill.setAllowanceMoney(allowanceMoney);
newBill.setOtherMoney(otherMoney);
// 退款金额
newBill.setRefundMoney(refundMoney);
// 更新账单收款状态 收款金额
int rstDif=totalAllPayMoney.compareTo(oldBill.getRecMoney());
log.debug("reCalcSettleBillPayStatus===>收款金额:{},应收:{}",totalAllPayMoney,oldBill.getRecMoney());
if( totalAllPayMoney.compareTo(BigDecimal.ZERO) == 0 ){
newBill.setPaymentStatus("0");
}else{
if( rstDif >= 0 ){
// 已收款
newBill.setPaymentStatus("1");
emisSettleBillMapper.updateEmisSettleBill(newBill);
}
else{
// 部分收款
newBill.setPaymentStatus("2");
emisSettleBillMapper.updateEmisSettleBill(newBill);
}
}
emisSettleBillMapper.updateEmisSettleBill(newBill);
// 更新运单的收款状态
if(totalAllPayMoney.compareTo(BigDecimal.ZERO) > 0){
BigDecimal totalMoney = BigDecimal.ZERO;
// 更新运单收款记录
List<Map> listRel=emisSettlePayRelMapper.selectHasPayMapList(settleBillNo);
if(!CollectionUtils.isEmpty(listRel)) {
for(Map item:listRel){
String billNo= MapUtils.getString(item,"billNo",null);
if(org.apache.commons.lang3.StringUtils.isEmpty(billNo)){
continue;
}
EmisSettleSubBill subBill = emisSettleSubBillMapper.selectSettleSubBillBySubBillNo(billNo);
BigDecimal sumMoney = BigDecimal.valueOf(Double.valueOf(item.get("sumMoney").toString()));
totalMoney = totalMoney.add(sumMoney);
EmisWaybill emisWaybill = new EmisWaybill();
emisWaybill.setBillCode(subBill.getBillCode());
if(totalMoney.compareTo(subBill.getBillFee())>=0) {
emisWaybill.setPaymentStatus("1");
}else{
emisWaybill.setPaymentStatus("2");
}
emisWaybillMapper.updatePayedStatus(emisWaybill);
}
}
}
return 1;
}
/**
* 修改结算总账单
*

View File

@ -22,6 +22,7 @@ import com.xdadan.erp.emis.mapper.EmisSettleBillMapper;
import com.xdadan.erp.emis.mapper.EmisSettleInvoiceRelMapper;
import com.xdadan.erp.emis.mapper.EmisSettleSubBillMapper;
import com.xdadan.erp.emis.service.EmisBaseService;
import com.xdadan.erp.emis.service.IEmisSettleBillService;
import com.xdadan.erp.emis.utils.WaybillHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
@ -57,6 +58,9 @@ public class EmisSettleInvoiceRecordServiceImpl extends EmisBaseService implemen
@Autowired
private EmisSettleInvoiceRelMapper emisSettleInvoiceRelMapper;
@Autowired
private IEmisSettleBillService emisSettleBillService;
/**
* 查询开票记录表
@ -179,58 +183,13 @@ public class EmisSettleInvoiceRecordServiceImpl extends EmisBaseService implemen
// 重算账单已开票金额
for(int i=0;i<settBillNoArr.length;i++) {
String billNo=settBillNoArr[i];
reCalcSettleBillInvoiceStatus(billNo);
emisSettleBillService.reCalcSettleBillInvoiceStatus(billNo);
}
return 1;
}
/**
* 打开票标记
* @param settleBillNo
* @return
*/
@Override
public int reCalcSettleBillInvoiceStatus(String settleBillNo){
EmisSettleBill oldBill = getSettleBillBySettleBillNo(settleBillNo);
if(oldBill==null){
log.error("reCalcSettleBillInvoiceStatus==>账单不存在:"+settleBillNo);
return 0;
}
BigDecimal totalMoney = BigDecimal.ZERO;
// 获取运单已经开票记录 // 查询关联的运单表
List<Map> listRel=emisSettleInvoiceRelMapper.selectHasOpenInvoiceMapList(settleBillNo);
if(!CollectionUtils.isEmpty(listRel)) {
for(Map item:listRel){
BigDecimal sumMoney = BigDecimal.valueOf(Double.valueOf(item.get("sumMoney").toString()));
totalMoney = totalMoney.add(sumMoney);
}
}
log.error("==>reCalcSettleBillInvoiceStatus:totalMoney={},recMoney={},recMoney-totalMoney:{}",totalMoney,oldBill.getRecMoney());
log.error("==>reCalcSettleBillInvoiceStatus:recMoney-totalMoney:{}",oldBill.getRecMoney().compareTo(totalMoney));
EmisSettleBill newBill = new EmisSettleBill();
newBill.setId(oldBill.getId());
if(BigDecimal.ZERO.compareTo(totalMoney)==0){
newBill.setOpenBillStatus("0");
}else {
if (oldBill.getRecMoney().compareTo(totalMoney) > 0) {
newBill.setOpenBillStatus("2");
} else {
newBill.setOpenBillStatus("1");
}
}
// 更新账单开票状态
emisSettleBillMapper.updateEmisSettleBill(newBill);
return 1;
}
/**
* 修改开票记录表
@ -298,7 +257,7 @@ public class EmisSettleInvoiceRecordServiceImpl extends EmisBaseService implemen
// 重新计算开票状态
String[] settleBillArr=emisSettleInvoiceRecord.getSettleBillNo().split(",");
for(int i=0;i<settleBillArr.length;i++){
reCalcSettleBillInvoiceStatus(settleBillArr[i]);
emisSettleBillService.reCalcSettleBillInvoiceStatus(settleBillArr[i]);
}
return 1;
@ -333,7 +292,7 @@ public class EmisSettleInvoiceRecordServiceImpl extends EmisBaseService implemen
// 重新计算开票状态
String[] settleBillArr=emisSettleInvoiceRecord.getSettleBillNo().split(",");
for(int i=0;i<settleBillArr.length;i++){
reCalcSettleBillInvoiceStatus(settleBillArr[i]);
emisSettleBillService.reCalcSettleBillInvoiceStatus(settleBillArr[i]);
}
return 1;

View File

@ -21,6 +21,7 @@ import com.xdadan.erp.emis.mapper.EmisSettleBillMapper;
import com.xdadan.erp.emis.mapper.EmisSettlePayRelMapper;
import com.xdadan.erp.emis.mapper.EmisSettleSubBillMapper;
import com.xdadan.erp.emis.service.EmisBaseService;
import com.xdadan.erp.emis.service.IEmisSettleBillService;
import com.xdadan.erp.emis.utils.WaybillHelper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections.CollectionUtils;
@ -53,6 +54,9 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I
@Autowired
private EmisSettleSubBillMapper emisSettleSubBillMapper;
@Autowired
private IEmisSettleBillService emisSettleBillService;
/**
@ -144,128 +148,12 @@ public class EmisSettlePayRecordServiceImpl extends EmisBaseService implements I
emisSettlePayRecordMapper.insertEmisSettlePayRecord(emisSettlePayRecord);
// 重新计算账单收款信息
reCalcSettleBillPayStatus(emisSettlePayRecord.getSettleBillNo());
emisSettleBillService.reCalcSettleBillPayStatus(emisSettlePayRecord.getSettleBillNo());
return 1;
}
/**
* 重算账单收款金额
* @param settleBillNo
* @return
*/
@Override
public int reCalcSettleBillPayStatus(String settleBillNo){
EmisSettleBill oldBill =getSettleBillBySettleBillNo(settleBillNo);
// 获取收款记录
List<EmisSettlePayRecord> payRecordList=emisSettlePayRecordMapper.selectSettlePayRecordListBySettleBillNo(settleBillNo);
// 全部收款金额
BigDecimal totalAllPayMoney = BigDecimal.ZERO;
// 计算已收款金额
BigDecimal totalPayMoney = BigDecimal.ZERO;
// 抵扣金额
BigDecimal satisfyMoney = BigDecimal.ZERO;
/* allowance_money */
BigDecimal allowanceMoney = BigDecimal.ZERO;
/* deduction_money */
BigDecimal deductionMoney = BigDecimal.ZERO;
/* other_money */
BigDecimal otherMoney = BigDecimal.ZERO;
// refund_money
BigDecimal refundMoney = BigDecimal.ZERO;
log.debug("reCalcSettleBillPayStatus===>应收:{}",oldBill.getRecMoney());
for(EmisSettlePayRecord item:payRecordList){
if("1".equals(item.getRecType())) {
totalPayMoney = totalPayMoney.add(item.getPayMoney());
satisfyMoney = satisfyMoney.add(item.getSatisfyMoney() == null ? BigDecimal.ZERO : item.getSatisfyMoney());
allowanceMoney = allowanceMoney.add(item.getAllowanceMoney() == null ? BigDecimal.ZERO : item.getAllowanceMoney());
deductionMoney = deductionMoney.add(item.getDeductionMoney() == null ? BigDecimal.ZERO : item.getDeductionMoney());
otherMoney = otherMoney.add(item.getOtherMoney() == null ? BigDecimal.ZERO : item.getOtherMoney());
}
else if("2".equals(item.getRecType())) {
refundMoney = refundMoney.add(item.getRefundMoney() == null ? BigDecimal.ZERO : item.getRefundMoney());
}
}
// 总应收金额
log.debug("reCalcSettleBillPayStatus===>totalPayMoney:{},satisfyMoney:{},allowanceMoney:{},deductionMoney:{},otherMoney:{}"
,totalPayMoney,satisfyMoney,allowanceMoney,allowanceMoney,deductionMoney,otherMoney);
// 收款金额-退款金额
totalAllPayMoney=totalAllPayMoney
.add(totalPayMoney)
.add(satisfyMoney)
.add(allowanceMoney)
.add(deductionMoney)
.add(otherMoney)
.subtract(refundMoney);
EmisSettleBill newBill = new EmisSettleBill();
newBill.setId(oldBill.getId());
newBill.setRecedMoney(totalPayMoney);
newBill.setSatisfyMoney(satisfyMoney);
newBill.setAllowanceMoney(allowanceMoney);
newBill.setOtherMoney(otherMoney);
// 退款金额
newBill.setRefundMoney(refundMoney);
// 更新账单收款状态 收款金额
int rstDif=totalAllPayMoney.compareTo(oldBill.getRecMoney());
log.debug("reCalcSettleBillPayStatus===>收款金额:{},应收:{}",totalAllPayMoney,oldBill.getRecMoney());
if( totalAllPayMoney.compareTo(BigDecimal.ZERO) == 0 ){
newBill.setPaymentStatus("0");
}else{
if( rstDif >= 0 ){
// 已收款
newBill.setPaymentStatus("1");
emisSettleBillMapper.updateEmisSettleBill(newBill);
}
else{
// 部分收款
newBill.setPaymentStatus("2");
emisSettleBillMapper.updateEmisSettleBill(newBill);
}
}
emisSettleBillMapper.updateEmisSettleBill(newBill);
// 更新运单的收款状态
if(totalAllPayMoney.compareTo(BigDecimal.ZERO) > 0){
BigDecimal totalMoney = BigDecimal.ZERO;
// 更新运单收款记录
List<Map> listRel=emisSettlePayRelMapper.selectHasPayMapList(settleBillNo);
if(!CollectionUtils.isEmpty(listRel)) {
for(Map item:listRel){
String billNo= MapUtils.getString(item,"billNo",null);
if(StringUtils.isEmpty(billNo)){
continue;
}
EmisSettleSubBill subBill = emisSettleSubBillMapper.selectSettleSubBillBySubBillNo(billNo);
BigDecimal sumMoney = BigDecimal.valueOf(Double.valueOf(item.get("sumMoney").toString()));
totalMoney = totalMoney.add(sumMoney);
EmisWaybill emisWaybill = new EmisWaybill();
emisWaybill.setBillCode(subBill.getBillCode());
if(totalMoney.compareTo(subBill.getBillFee())>=0) {
emisWaybill.setPaymentStatus("1");
}else{
emisWaybill.setPaymentStatus("2");
}
emisWaybillMapper.updatePayedStatus(emisWaybill);
}
}
}
return 1;
}
/**
* 修改账单收退款记录

View File

@ -3455,19 +3455,10 @@ public class EmisWaybillServiceImpl extends EmisBaseService implements IEmisWayb
public static void main(String[] args) {
// Snowflake snowflake = IdUtil.getSnowflake(0, 0);
// Long orderId = snowflake.nextId();
// String orderSn = "TO" + orderId.toString();
// System.out.println(orderSn);
String calcExp="100+(w-1)*52";
String calcExprStr=calcExp.replaceAll("w","28")
.replaceAll("s","0")
.replaceAll("d","0");
System.out.println(calcExprStr);
double volumeWeight=0.8 * (1000000 / Double.valueOf(4000));
System.out.println(volumeWeight);
// log.info("计算公式:"+calcExprStr+",重量:"+emisWaybill.getSettlementWeight());
double fee = Double.valueOf(AviatorEvaluator.execute(calcExprStr).toString());
System.out.println(fee);
}