winter пре 1 година
родитељ
комит
a6b61be3e3
3 измењених фајлова са 39 додато и 10 уклоњено
  1. +18
    -0
      mallinkService/src/main/java/com/iformall/domain/dto/FinanceSetOffCalcuteDTO.java
  2. +2
    -2
      mallinkService/src/main/java/com/iformall/domain/po/base/WxBillBaseEntity.java
  3. +19
    -8
      mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java

+ 18
- 0
mallinkService/src/main/java/com/iformall/domain/dto/FinanceSetOffCalcuteDTO.java Прегледај датотеку

@@ -0,0 +1,18 @@
package com.iformall.domain.dto;

import java.util.List;

import com.iformall.domain.po.WxFinanceReceive;
import com.iformall.domain.po.base.TenantEntity;
import lombok.Data;

/**
*/
@Data
public class FinanceSetOffCalcuteDTO extends TenantEntity{
private static final long serialVersionUID = -5605457206509995420L;
//可抵扣的预充值列表
List<WxFinanceReceive> advanceList;
//预充值列表计数开始位置(预充值为0了会往后移)
Integer currentIndex;
}

+ 2
- 2
mallinkService/src/main/java/com/iformall/domain/po/base/WxBillBaseEntity.java Прегледај датотеку

@@ -215,9 +215,9 @@ public class WxBillBaseEntity extends TenantEntity {
private List<FinanceSetOffDetailVo> setOffDetailList;
@TableField(exist = false)
public String currentSetOff = "0";
private String currentSetOff;
@TableField(exist = false)
public String currentReceive = "0";
private String currentReceive;
}

+ 19
- 8
mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java Прегледај датотеку

@@ -8,6 +8,7 @@ import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.domain.dto.FinanceSetOffCalcuteDTO;
import com.iformall.domain.dto.FinanceSetOffDTO;
import com.iformall.domain.dto.WxBillPayDTO;
import com.iformall.domain.po.MallUserInfo;
@@ -247,15 +248,16 @@ public class WxFinanceServiceImpl implements WxFinanceService {
}
}
private void setSetOff(WxBillBaseEntity bill,List<WxFinanceReceive> advanceList,Integer currentIndex) {
//根据预充值收款单来冲抵账单
private void setSetOff(WxBillBaseEntity bill,FinanceSetOffCalcuteDTO calcuteDto) {
BigDecimal owe = new BigDecimal(bill.getOwe());
BigDecimal b0 = new BigDecimal(0);
if (owe.compareTo(b0) <= 0) {
return;
}else {
List<FinanceSetOffDetailVo> setoffList = bill.getSetOffDetailList();
for (int j = currentIndex ; j < advanceList.size() ; j++) {
WxFinanceReceive advance = advanceList.get(j);
for (int j = calcuteDto.getCurrentIndex(); j < calcuteDto.getAdvanceList().size() ; j++) {
WxFinanceReceive advance = calcuteDto.getAdvanceList().get(j);
BigDecimal remain = new BigDecimal(advance.getRemain());
if (remain.compareTo(b0) > 0) {
if (null == setoffList) {
@@ -269,7 +271,10 @@ public class WxFinanceServiceImpl implements WxFinanceService {
}else {
billSetOff = b0;
}
BigDecimal billCurrentSetOff = new BigDecimal(bill.getCurrentSetOff());
BigDecimal billCurrentSetOff = new BigDecimal(0);
if (StringUtils.isNotBlank(bill.getCurrentSetOff())) {
billCurrentSetOff = new BigDecimal(bill.getCurrentSetOff());
}
//如果前面的不够,则后面的继续补
if (remain.compareTo(owe) <= 0 ) {
//设置账单历史抵扣
@@ -280,16 +285,18 @@ public class WxFinanceServiceImpl implements WxFinanceService {
advance.setUseMoney(advance.getReceiveMoney());
dv.setSetoff(remain.toPlainString());
setoffList.add(dv);
setSetOff(bill,advanceList,currentIndex);
bill.setSetOffDetailList(setoffList);
setSetOff(bill,calcuteDto);
}else {
bill.setSetOff(billSetOff.add(owe).toPlainString());
bill.setCurrentSetOff(billCurrentSetOff.add(owe).toPlainString());
advance.setUseMoney(new BigDecimal(advance.getUseMoney()).add(owe).toPlainString());
dv.setSetoff(owe.toPlainString());
setoffList.add(dv);
bill.setSetOffDetailList(setoffList);
}
}else {
currentIndex = currentIndex+1;
calcuteDto.setCurrentIndex(calcuteDto.getCurrentIndex()+1);
}
}
}
@@ -313,7 +320,9 @@ public class WxFinanceServiceImpl implements WxFinanceService {
//每个账单去计算抵扣
WxMerchant merchant = new WxMerchant();
merchant.updateTenantInfo(dto);
Integer currentIndex = 0;
FinanceSetOffCalcuteDTO calcuteDto = new FinanceSetOffCalcuteDTO();
calcuteDto.setCurrentIndex(0);
calcuteDto.setAdvanceList(advanceList);
List<WxBillBaseEntity> retList = new ArrayList<WxBillBaseEntity>();
for (int i = 0 ; i < bills.size() ; i ++) {
WxBillBaseEntity be = bills.get(i);
@@ -321,10 +330,12 @@ public class WxFinanceServiceImpl implements WxFinanceService {
be.setReceivePay(bill.getReceivePay());
be.setPay(bill.getPay());
be.setSetOff(bill.getSetOff());
setSetOff(be, advanceList,currentIndex);
setSetOff(be, calcuteDto);
WxBillBaseEntity retb = new WxBillBaseEntity();
retb.setId(be.getId());
retb.setSetOffDetailList(be.getSetOffDetailList());
retb.setCurrentSetOff(be.getCurrentSetOff());
retb.setCurrentReceive(be.getCurrentReceive());
retList.add(retb);
}
return retList;


Loading…
Откажи
Сачувај