From 7a48005fefc821db4da18057db869251ca961559 Mon Sep 17 00:00:00 2001 From: lin <642018748@qq.com> Date: Thu, 13 Apr 2023 21:18:26 +0800 Subject: [PATCH] fix trade daily --- .../WxMerchantTradeDailyController.java | 8 +- .../service/WxMerchantTradeDailyService.java | 2 +- .../impl/WxMerchantTradeDailyServiceImpl.java | 6 +- .../impl/WxRentContractServiceImpl.java | 83 ++++++++++--------- 4 files changed, 53 insertions(+), 46 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxMerchantTradeDailyController.java b/mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxMerchantTradeDailyController.java index 5d3ef1b49..fa668aa35 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxMerchantTradeDailyController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/datatower/WxMerchantTradeDailyController.java @@ -75,9 +75,13 @@ public class WxMerchantTradeDailyController extends BaseController { @TenantIgnore @ApiOperation("获得商场近30日解单") @GetMapping("/listMonth") - public ResultData listMonth() { + public ResultData listMonth(@ModelAttribute WxMerchantTradeDaily wxMerchantTradeDaily) { logger.debug("[" + getIpAddr() + "] WxMerchantTradeDailyController::listMonth"); - return wxMerchantTradeDailyService.getVolumeTotalOfMonth(getTenantInfo()); + if (null == wxMerchantTradeDaily) { + wxMerchantTradeDaily = new WxMerchantTradeDaily(); + } + wxMerchantTradeDaily.updateTenantInfo(getTenantInfo()); + return wxMerchantTradeDailyService.getVolumeTotalOfMonth(wxMerchantTradeDaily); } @TenantIgnore diff --git a/mallinkService/src/main/java/com/iformall/service/WxMerchantTradeDailyService.java b/mallinkService/src/main/java/com/iformall/service/WxMerchantTradeDailyService.java index d8b241bd7..b34bdc1ed 100644 --- a/mallinkService/src/main/java/com/iformall/service/WxMerchantTradeDailyService.java +++ b/mallinkService/src/main/java/com/iformall/service/WxMerchantTradeDailyService.java @@ -76,7 +76,7 @@ public interface WxMerchantTradeDailyService { /** * 获取近30日解单数据(总额) ADMIN 端 */ - ResultData getVolumeTotalOfMonth(TenantEntity tenantEntity); + ResultData getVolumeTotalOfMonth(WxMerchantTradeDaily wxMerchantTradeDaily); /** * 根据实体查询分页列表 * diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantTradeDailyServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantTradeDailyServiceImpl.java index afe5d2cc0..e90f5cd50 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantTradeDailyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantTradeDailyServiceImpl.java @@ -514,11 +514,7 @@ public class WxMerchantTradeDailyServiceImpl implements WxMerchantTradeDailyServ } @Override - public ResultData getVolumeTotalOfMonth(TenantEntity tenantEntity) { - - - WxMerchantTradeDaily wxMerchantTradeDaily = new WxMerchantTradeDaily(); - wxMerchantTradeDaily.updateTenantInfo(tenantEntity);; + public ResultData getVolumeTotalOfMonth(WxMerchantTradeDaily wxMerchantTradeDaily) { List recordList = wxMerchantTradeDailyMapper.findTotalListOfMonth(wxMerchantTradeDaily); Map recordMap = recordList.stream().collect(Collectors.toMap(WxMerchantTradeDaily::getReportDate, r -> r)); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index 26d3a43e9..212612a81 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -3254,47 +3254,54 @@ public class WxRentContractServiceImpl implements WxRentContractService { bq.setIsDel(EnumDelStatus.NOT_DEL.getCode()); List billList = wxBillRentMapper.findList(bq); if (null != billList && billList.size() > 0 ) { - WxBillRent br = billList.get(0); - //判断账单是否跨月,如果跨月,需要按照每月来查询解单金额 - int needPay = 0 ; - int months = DateUtils.monthsBetween(br.getStarttime(), br.getEndtime()); - if ( months > 0 ) { - for (int i = 0 ; i < months ; i++ ) { - int _money = 0; - if (i == 0 ) { - _money = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), br.getStarttime(), - DateUtils.getLastDayForMonth(br.getStarttime())); - }else if (i == (months-1)){ - _money = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), - DateUtils.getFirstDayForCurrMonth(DateUtils.getTimeAfterMonths(i,br.getStarttime())), - DateUtils.getDayEnd(DateUtils.getTimeAfterDays(-1, br.getEndtime()))); + for (int j = 0 ; j < billList.size(); j++) { + WxBillRent br = billList.get(j); + try { + //判断账单是否跨月,如果跨月,需要按照每月来查询解单金额 + int needPay = 0 ; + int months = DateUtils.monthsBetween(br.getStarttime(), br.getEndtime()); + if ( months > 0 ) { + for (int i = 0 ; i < months ; i++ ) { + int _money = 0; + if (i == 0 ) { + _money = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), br.getStarttime(), + DateUtils.getLastDayForMonth(br.getStarttime())); + }else if (i == (months-1)){ + _money = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), + DateUtils.getFirstDayForCurrMonth(DateUtils.getTimeAfterMonths(i,br.getStarttime())), + DateUtils.getDayEnd(DateUtils.getTimeAfterDays(-1, br.getEndtime()))); + }else { + Date _date = DateUtils.getTimeAfterMonths(i,br.getStarttime()); + _money = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), + DateUtils.getFirstDayForCurrMonth(_date), + DateUtils.getLastDayForMonth(_date)); + } + needPay = needPay + _money; + } }else { - Date _date = DateUtils.getTimeAfterMonths(i,br.getStarttime()); - _money = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), - DateUtils.getFirstDayForCurrMonth(_date), - DateUtils.getLastDayForMonth(_date)); + //同一个月 + //合同账单结束的时间是00:00:00,取日期要取前一天 + needPay = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), + br.getStarttime(), DateUtils.getTimeAfterDays(-1, br.getEndtime())); + } + needPay = new BigDecimal(needPay).multiply(new BigDecimal(wxRentContract.getPayRatio())) + .divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP).intValue(); + Long oldNeedPay = br.getNeedPay(); + if (needPay > br.getNeedPay()) { + Long newPay = Long.parseLong(String.valueOf(needPay)); + br.setNeedPay(newPay); + br.setOwe(newPay); + br.setReceivePay(newPay); + br.setUpdatetime(new Date()); + BigDecimal servicePay = new BigDecimal(br.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP); + br.setServiceChargePay(servicePay.intValue()); + br.setOwe(br.getReceivePay() + br.getServiceChargePay()); + br.setComments("原金额["+oldNeedPay+"(分)]小于解单金额,系统自动更新"); + wxBillRentMapper.updateById(br); } - needPay = needPay + _money; + }catch(Exception e) { + logger.error("calcuteByTradeDaily error:"+br.getId(),e); } - }else { - //同一个月 - //合同账单结束的时间是00:00:00,取日期要取前一天 - needPay = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), - br.getStarttime(), DateUtils.getTimeAfterDays(-1, br.getEndtime())); - } - needPay = new BigDecimal(needPay).multiply(new BigDecimal(wxRentContract.getPayRatio())) - .divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP).intValue(); - if (needPay > br.getNeedPay()) { - Long newPay = Long.parseLong(String.valueOf(needPay)); - br.setNeedPay(newPay); - br.setOwe(newPay); - br.setReceivePay(newPay); - br.setUpdatetime(new Date()); - BigDecimal servicePay = new BigDecimal(br.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP); - br.setServiceChargePay(servicePay.intValue()); - br.setOwe(br.getReceivePay() + br.getServiceChargePay()); - br.setComments("解单金额["+newPay+"(分)]大于合同计算金额,系统自动更新"); - wxBillRentMapper.updateById(br); } } }