Browse Source

fix

release_toaliyun_real
winter 1 year ago
parent
commit
79961c8a45
9 changed files with 127 additions and 34 deletions
  1. +1
    -1
      mallinkAdmin/src/main/java/com/iformall/controller/market/WxFinanceController.java
  2. +0
    -13
      mallinkAdmin/src/main/java/com/iformall/controller/rent/WxAllBillController.java
  3. +1
    -0
      mallinkService/src/main/java/com/iformall/domain/dto/FinanceReceiveCalcuteDTO.java
  4. +1
    -0
      mallinkService/src/main/java/com/iformall/domain/dto/WxBillPayDTO.java
  5. +1
    -1
      mallinkService/src/main/java/com/iformall/service/WxAllBillService.java
  6. +2
    -6
      mallinkService/src/main/java/com/iformall/service/WxFinanceService.java
  7. +2
    -2
      mallinkService/src/main/java/com/iformall/service/helper/WxBillAllHelper.java
  8. +2
    -2
      mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java
  9. +117
    -9
      mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java

+ 1
- 1
mallinkAdmin/src/main/java/com/iformall/controller/market/WxFinanceController.java View File

@@ -228,7 +228,7 @@ public class WxFinanceController extends BaseController {
if (null == record.getBills() || null == record.getPayWays()) {
return new ResultData(Result.ERROR,"请选择账单和支付方式");
}
List<WxAllBill> list = wxFinanceService.createReceive(record,this.getUser());
List<WxAllBill> list = wxFinanceService.createPay(record,this.getUser());
return new ResultData(list);
}


+ 0
- 13
mallinkAdmin/src/main/java/com/iformall/controller/rent/WxAllBillController.java View File

@@ -499,19 +499,6 @@ public class WxAllBillController extends BillBaseController {
return new ResultData(retMap);
}
//退回押金
@PostMapping("returnDeposit")
public ResultData returnDeposit(@RequestBody WxBillPayDTO dto) {
dto.updateTenantInfo(getTenantInfo());
//如果是管理费,默认一个商业管理费
if (dto.getBillTypeValue().intValue() == Constant.bill_all_type_manage_fee) {
dto.setBillTypeValue(EnumBillAllType.RENT_BUSSINESS_MANAGE.getCode());
}
billAllHelper.returnDeposit(dto, getUser());
return new ResultData();
//return wxBillAllService.updateReceivePay(wxBillAll, getUser(),false);
}
//坏账
@PostMapping("bad")
public ResultData bad(@RequestBody WxBillPayDTO dto) {


+ 1
- 0
mallinkService/src/main/java/com/iformall/domain/dto/FinanceReceiveCalcuteDTO.java View File

@@ -15,4 +15,5 @@ public class FinanceReceiveCalcuteDTO extends TenantEntity{
private static final long serialVersionUID = 5653697108361199126L;
private BigDecimal totalRemainReceive;
private BigDecimal totalSetoff;
private BigDecimal totalRemainPay;
}

+ 1
- 0
mallinkService/src/main/java/com/iformall/domain/dto/WxBillPayDTO.java View File

@@ -15,6 +15,7 @@ public class WxBillPayDTO extends TenantEntity{
private Long id;
private Integer billTypeValue;// EnumBillAllType
private String addpay;//支付金额
private String payToMerchant;//支付给商户金额
private String setOff="0";//冲抵金额
private WxBillPayWay payWayObject;//支付方式
private Long payWay;//传值


+ 1
- 1
mallinkService/src/main/java/com/iformall/service/WxAllBillService.java View File

@@ -45,7 +45,7 @@ public interface WxAllBillService {
void updatePayByMerchant(WxBillPayDTO dto,WxMerchantBUser user,boolean isOnline);
void returnDeposit(WxBillPayDTO dto, MallUserInfo user);
void updatePayToMerchant(WxBillPayDTO dto, MallUserInfo user);
void bad(WxBillPayDTO dto,MallUserInfo user);


+ 2
- 6
mallinkService/src/main/java/com/iformall/service/WxFinanceService.java View File

@@ -27,9 +27,10 @@ public interface WxFinanceService {
Map<Long,WxBillPayWay> getPayWayMap(WxBillPayWay record);
void payWayInit(TenantEntity tenantInfo);
//收款
//收
PageInfo<WxFinanceReceiveVo> receiveVoListAsPage(WxFinanceReceive record, Integer pageIndex, Integer pageSize);
List<WxAllBill> createReceive(WxFinanceReceive record,MallUserInfo user);
List<WxAllBill> createPay(WxFinanceReceive record,MallUserInfo user);
WxFinanceReceive getReceiveById(TenantEntity tenantEntity,Long id);
void invalidReceive(WxFinanceReceive record,MallUserInfo user,String remark);
void redSetoffReceive(WxFinanceReceive record,MallUserInfo user);
@@ -41,11 +42,6 @@ public interface WxFinanceService {
void createAdvance(WxFinanceReceive record,MallUserInfo user);
PageInfo<WxFinanceReceiveSetoff> receiveSetoffListAsPage(WxFinanceReceive record, Integer pageIndex, Integer pageSize);
//打印
List<WxFinancePrintData> printDataList(WxFinancePrintData record);
List<WxFinancePrintTemplate> printTemplateList(WxFinancePrintTemplate record);


+ 2
- 2
mallinkService/src/main/java/com/iformall/service/helper/WxBillAllHelper.java View File

@@ -344,8 +344,8 @@ public class WxBillAllHelper {
return wxAllBillService.getById(wxMerchant,billId);
}
public void returnDeposit(WxBillPayDTO dto,MallUserInfo user) {
wxAllBillService.returnDeposit(dto, user);
public void updatePayToMerchant(WxBillPayDTO dto,MallUserInfo user) {
wxAllBillService.updatePayToMerchant(dto, user);
}
public void bad(WxBillPayDTO dto,MallUserInfo user) {


+ 2
- 2
mallinkService/src/main/java/com/iformall/service/impl/WxAllBillServiceImpl.java View File

@@ -319,7 +319,7 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill
}
@Override
public void returnDeposit(WxBillPayDTO dto, MallUserInfo user) {
public void updatePayToMerchant(WxBillPayDTO dto, MallUserInfo user) {
WxAllBill dbBill = wxAllBillMapper.selectById(dto.getId(),dto.getTenantId());
BigDecimal oldpay = new BigDecimal(0);
if (StringUtils.isNotBlank(dbBill.getReturnPay())) {
@@ -329,7 +329,7 @@ public class WxAllBillServiceImpl extends WxBillBaseService implements WxAllBill
wxBillRent.setId(dto.getId());
wxBillRent.updateTenantInfo(dto);
wxBillRent.setUpdatetime(new Date());
wxBillRent.setReturnPay(oldpay.add(new BigDecimal(dto.getAddpay())).toPlainString());
wxBillRent.setReturnPay(oldpay.add(new BigDecimal(dto.getPayToMerchant())).toPlainString());
wxAllBillMapper.updateById(wxBillRent);
this.addBillAction(EnumBillAction.RETURN, dto.getBillTypeValue(),dto.getId(),
dto.getAddpay(), dto.getAddpay(),null,wxBillRent.getPayDate(),dto.getPayWayObject(),dto.getRemark(),null,null, user);


+ 117
- 9
mallinkService/src/main/java/com/iformall/service/impl/WxFinanceServiceImpl.java View File

@@ -543,7 +543,7 @@ public class WxFinanceServiceImpl implements WxFinanceService {
sortBills(bills);
//创建主收款单
WxFinanceReceive addreceive = generateReceive(receiveId,user, EnumFinanceReceiveType.RECEIVE, receiveTotal.toPlainString(), record.getMerchantId(), null, record.getRemark());
WxFinanceReceive addreceive = generateReceive(receiveId,user, EnumFinanceCashierType.RECEIVE,EnumFinanceReceiveType.RECEIVE, receiveTotal.toPlainString(),null, record.getMerchantId(), null, record.getRemark());
if (receiveTotal.compareTo(new BigDecimal(0)) > 0) {
addreceive.setMoneyDetail(JSON.toJSONString(record.getPayWays()));
wxFinanceReceivePaywayMapper.insertPayWays(record.getTenantId(),receivePayWayList);
@@ -615,14 +615,14 @@ public class WxFinanceServiceImpl implements WxFinanceService {
be.setCurrentReceive(money);
//创建一个实收款单关联
createFinanceReceiveBill(addreceive,bill,money,payWay0.getId());
createFinanceReceiveBill(addreceive,bill,money,null,payWay0.getId());
bill.setCurrentReceive(money);
//并且有抵扣
if(StringUtils.isNotBlank(be.getCurrentSetOff())) {
calcuteDto.setTotalSetoff(calcuteDto.getTotalSetoff().add(new BigDecimal(be.getCurrentSetOff())));
payDto.setSetOff(be.getCurrentSetOff());
//创建一个冲抵收款单
createFinanceReceiveBill(addreceive,bill,be.getCurrentSetOff(),Constant.bill_pay_way_setoff);
createFinanceReceiveBill(addreceive,bill,be.getCurrentSetOff(),null,Constant.bill_pay_way_setoff);
//处理关联抵扣的预收单
createFinanceReceiveSetoff(addreceive,be,bill);
}
@@ -633,21 +633,22 @@ public class WxFinanceServiceImpl implements WxFinanceService {
calcuteDto.setTotalSetoff(calcuteDto.getTotalSetoff().add(new BigDecimal(be.getCurrentSetOff())));
//没收款,有冲抵,就要更新账单的冲抵,然后把对应的预充值使用金额更新,并进行关联
//创建一个冲抵收款单
createFinanceReceiveBill(addreceive,bill,be.getCurrentSetOff(),Constant.bill_pay_way_setoff);
createFinanceReceiveBill(addreceive,bill,be.getCurrentSetOff(),null,Constant.bill_pay_way_setoff);
//处理预充关联
createFinanceReceiveSetoff(addreceive,be,bill);
}
return noNeedCreate;
}
public WxFinanceReceive generateReceive(Long receiveId,MallUserInfo user,EnumFinanceReceiveType type,String receiveMoney,Long merchantId,Long feesId,String remark) {
public WxFinanceReceive generateReceive(Long receiveId,MallUserInfo user,EnumFinanceCashierType cashierType,EnumFinanceReceiveType type,String receiveMoney,String payMoney,Long merchantId,Long feesId,String remark) {
WxFinanceReceive addreceive = new WxFinanceReceive();
addreceive.setId(receiveId);
addreceive.updateTenantInfo(user);
addreceive.setType(EnumFinanceCashierType.RECEIVE.getCode());
addreceive.setType(cashierType.getCode());
addreceive.setStatus(EnumFinanceReceiveStatus.NORMAL.getCode());
addreceive.setType(type.getCode());
addreceive.setReceiveMoney(receiveMoney);
addreceive.setPayMoney(payMoney);
addreceive.setMerchantId(merchantId);
addreceive.setCreateTime(new Date());
addreceive.setCreateBy(user.getId());
@@ -660,7 +661,7 @@ public class WxFinanceServiceImpl implements WxFinanceService {
return addreceive;
}
public void createFinanceReceiveBill(WxFinanceReceive addreceive,WxAllBill bill,String billMoney,Long payway) {
public void createFinanceReceiveBill(WxFinanceReceive addreceive,WxAllBill bill,String receiveMoney,String payMoeny,Long payway) {
WxFinanceReceiveBill frbs = new WxFinanceReceiveBill();
frbs.updateTenantInfo(addreceive);
final IdWorker idWorker = IdWorker.get();
@@ -670,7 +671,8 @@ public class WxFinanceServiceImpl implements WxFinanceService {
frbs.setBillType(bill.getBillType());
frbs.setFeesId(bill.getEnergyFeesId());
frbs.setPayWay(payway);
frbs.setReceive(billMoney);
frbs.setReceive(receiveMoney);
frbs.setPay(payMoeny);
frbs.setCreateTime(new Date());
frbs.setUpdateTime(new Date());
frbs.setMerchantId(bill.getMerchantId());
@@ -704,6 +706,112 @@ public class WxFinanceServiceImpl implements WxFinanceService {
}
}
@Transactional(propagation = Propagation.REQUIRED, readOnly = false, rollbackFor = {Exception.class})
@Override
public List<WxAllBill> createPay(WxFinanceReceive record,MallUserInfo user) {
//费用计算自动优先匹配时间最早的那个
//单保存冲抵的时候,实收金额为0
BigDecimal payTotal = new BigDecimal(0);
WxBillPayWay payWay0 = null;
final IdWorker idWorker = IdWorker.get();
Long receiveId = idWorker.nextId();
List<WxFinanceReceivePayway> receivePayWayList = new ArrayList<WxFinanceReceivePayway>();
if (null != record.getPayWays()) {
for (int i = 0 ; i < record.getPayWays().size() ; i ++) {
WxBillPayWay payWay = record.getPayWays().get(i);
if (null == payWay.getId() || StringUtils.isBlank(payWay.getMoney())) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"收款方式,收款金额不能为空");
}
payTotal = payTotal.add(new BigDecimal(payWay.getMoney()));
if (null == payWay0) {
payWay0 = payWay;
}
WxFinanceReceivePayway rpw = new WxFinanceReceivePayway();
rpw.updateTenantInfo(record);
rpw.setReceiveId(receiveId);
rpw.setPay(payWay.getMoney());
rpw.setPayWay(payWay.getId());
rpw.setCreateTime(new Date());
rpw.setUpdateTime(new Date());
rpw.setIsDel(EnumYesOrNo.NO.getCode());
receivePayWayList.add(rpw);
}
}
List<WxAllBill> bills = record.getBills();
sortBills(bills);
//创建主收款单
WxFinanceReceive addreceive = generateReceive(receiveId,user,EnumFinanceCashierType.PAY ,EnumFinanceReceiveType.RECEIVE, null,payTotal.toPlainString(), record.getMerchantId(), null, record.getRemark());
if (payTotal.compareTo(new BigDecimal(0)) > 0) {
addreceive.setMoneyDetail(JSON.toJSONString(record.getPayWays()));
wxFinanceReceivePaywayMapper.insertPayWays(record.getTenantId(),receivePayWayList);
}
WxMerchant merchant = new WxMerchant();
merchant.updateTenantInfo(record);
boolean isAllEmpity = true;
FinanceReceiveCalcuteDTO calcuteDto = new FinanceReceiveCalcuteDTO();
calcuteDto.setTotalRemainPay(payTotal);
//建立子账单关联单
for (int i = 0 ; i < record.getBills().size(); i++) {
WxAllBill be = record.getBills().get(i);
//每个账单要创建一个收款关联单,如果有冲抵,要额外创建
boolean noNeedCreate = createBillPay(calcuteDto,user,addreceive,be,merchant,payWay0);
if (!noNeedCreate) {
isAllEmpity = false;
}
}
if (isAllEmpity) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(),"请付款");
}
addreceive.setMerchantId(record.getMerchantId());
addreceive.setRemark(record.getRemark());
wxFinanceReceiveMapper.insert(addreceive);
return bills;
}
public boolean createBillPay(FinanceReceiveCalcuteDTO calcuteDto,MallUserInfo user,WxFinanceReceive addreceive,WxAllBill be,WxMerchant merchant,WxBillPayWay payWay0) {
//如果既没有收款,也没有冲抵,则不更新
boolean noNeedCreate = true;
//计算账单收款费用,更新账单收款
BigDecimal b0 = new BigDecimal(0);
WxAllBill bill = wxBillAllHelper.getBillDetail(EnumBillAllType.getEnum(be.getBillType()), merchant, be.getId());
if (calcuteDto.getTotalRemainPay().compareTo(b0) > 0) {
noNeedCreate = false;
//有收款,就要更新账单的收款
//更新账单收款信息
String money = "";
BigDecimal oweDecimal = new BigDecimal(bill.getOwe());
//只有没有有欠款才会支付
if (oweDecimal.compareTo(b0) > 0 ) {
noNeedCreate = true;
return noNeedCreate;
}
if (calcuteDto.getTotalRemainPay().add(oweDecimal).compareTo(b0) > 0 ) {
money = oweDecimal.multiply(new BigDecimal(-1)).toPlainString();
calcuteDto.setTotalRemainPay(calcuteDto.getTotalRemainPay().add(oweDecimal));
}else {
money = calcuteDto.getTotalRemainPay().toPlainString();
calcuteDto.setTotalRemainPay(new BigDecimal(0));
}
WxBillPayDTO payDto = new WxBillPayDTO();
payDto.updateTenantInfo(addreceive);
payDto.setId(be.getId());
payDto.setBillTypeValue(be.getBillType());
payDto.setPayToMerchant(money);
payDto.setPayWay(payWay0.getId());
payDto.setPayWayObject(payWay0);
payDto.setRemark("付款单付款["+addreceive.getId()+"]"+addreceive.getRemark());
be.setCurrentReceive(money);
//创建一个实收款单关联
createFinanceReceiveBill(addreceive,bill,null,money,payWay0.getId());
bill.setCurrentReceive(money);
wxBillAllHelper.updatePayToMerchant(payDto, user);
}
return noNeedCreate;
}

@Override
public WxFinanceReceive getReceiveById(TenantEntity tenantEntity, Long id) {
@@ -715,7 +823,7 @@ public class WxFinanceServiceImpl implements WxFinanceService {
//创建预收主单
final IdWorker idWorker = IdWorker.get();
Long receiveId = idWorker.nextId();
WxFinanceReceive addreceive = generateReceive(receiveId,user, EnumFinanceReceiveType.ADVANCE, record.getReceiveMoney(),
WxFinanceReceive addreceive = generateReceive(receiveId,user,EnumFinanceCashierType.RECEIVE ,EnumFinanceReceiveType.ADVANCE, record.getReceiveMoney(), null,
record.getMerchantId(), record.getFeesId(), record.getRemark());
wxFinanceReceiveMapper.insert(addreceive);
//创建预收账单? WxBillAdvance


Loading…
Cancel
Save