jiangping
2023-10-08 d3d1b082c49f13abda7e1b73964f7f7fa62105b0
账单接口
已添加1个文件
已修改12个文件
316 ■■■■ 文件已修改
server/platform/src/main/java/com/doumee/api/business/WxBillController.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/business/WxBillDetailController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/task/ScheduleTool.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/resources/application.yml 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/core/model/PageData.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/core/utils/DateUtil.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/model/WxBill.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/model/WxBillDetail.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/dao/business/vo/WxBillDetailTotalVO.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/WxBillService.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/WxBillDetailServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java 160 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/web/src/main/resources/application.yml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/platform/src/main/java/com/doumee/api/business/WxBillController.java
@@ -6,7 +6,9 @@
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.model.WxBill;
import com.doumee.dao.business.model.WxBillDetail;
import com.doumee.service.business.WxBillService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
@@ -16,6 +18,7 @@
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
/**
@@ -35,6 +38,14 @@
    @PostMapping("/create")
    @RequiresPermissions("business:wxbill:create")
    public ApiResponse create(@RequestBody WxBill wxBill) {
        return ApiResponse.success(wxBillService.create(wxBill));
    }
    @PreventRepeat
    @ApiOperation("手动同步微信某天账单信息")
    @PostMapping("/syncWxBill")
    @RequiresPermissions("business:wxbill:create")
    public ApiResponse syncWxBill(@RequestBody WxBill wxBill) {
        wxBillService.getWxBill(wxBill.getCreateDate());
        return ApiResponse.success(wxBillService.create(wxBill));
    }
@@ -69,7 +80,7 @@
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @RequiresPermissions("business:wxbill:query")
//    @RequiresPermissions("business:wxbill:query")
    public ApiResponse<PageData<WxBill>> findPage (@RequestBody PageWrap<WxBill> pageWrap) {
        return ApiResponse.success(wxBillService.findPage(pageWrap));
    }
@@ -81,6 +92,14 @@
        ExcelExporter.build(WxBill.class).export(wxBillService.findPage(pageWrap).getRecords(), "WxBillController", response);
    }
    @ApiOperation("微信对账明细统计查询")
    @PostMapping("/getTotalBill")
//    @RequiresPermissions("business:wxbilldetail:query")
    public ApiResponse<List<WxBill>> getTotalBill (@RequestBody WxBill  param) {
        return ApiResponse.success(wxBillService.getTotalBill(param));
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @RequiresPermissions("business:wxbill:query")
server/platform/src/main/java/com/doumee/api/business/WxBillDetailController.java
@@ -6,6 +6,7 @@
import com.doumee.core.model.ApiResponse;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.WxBill;
import com.doumee.dao.business.model.WxBillDetail;
import com.doumee.service.business.WxBillDetailService;
import io.swagger.annotations.Api;
server/platform/src/main/java/com/doumee/task/ScheduleTool.java
@@ -2,11 +2,14 @@
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.utils.DateUtil;
import com.doumee.service.business.WxBillService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import java.util.Date;
/**
 * å®šæ—¶ä»»åŠ¡
@@ -30,15 +33,19 @@
     */
    @Scheduled(cron = "0 0 11 * * ? ")
    public void syncStudent() throws Exception {
        wxBillService.getWxBill();
        //前一天的數據
        Date ydate = DateUtil.addDaysToDate(new Date(), -1);
        wxBillService.getWxBill(ydate);
    }
    /**
     * æ¸¬è©¦
     * @throws Exception
     */
    @Scheduled(fixedDelay = 1000*60)
//    @Scheduled(fixedDelay = 1000*60)
    public void getYesterdayBill() throws Exception {
        wxBillService.getWxBill();
        Date ydate = DateUtil.addDaysToDate(new Date(), -1);
        wxBillService.getWxBill(ydate);
    }
}
server/platform/src/main/resources/application.yml
@@ -42,7 +42,6 @@
  # æŽ’除跟踪的URL正则
  exclude-patterns: .+/list[a-zA-Z0-9\-\_]*$, .+/tree[a-zA-Z0-9\-\_]*$, .+/page[a-zA-Z0-9\-\_]*$, .+/all[a-zA-Z0-9\-\_]*$, /swagger-resources.*
# æ—¥å¿—配置
logback:
  level: INFO
@@ -50,7 +49,7 @@
# dao层的日志设置为debug,方便查看sql
logging:
  level:
    com.tielangtou.dao: debug
    com.doumee.dao: debug
pagehelper:
  # æŒ‡å®šä½¿ç”¨çš„æ•°æ®åº“数据库
server/services/src/main/java/com/doumee/core/model/PageData.java
@@ -8,6 +8,7 @@
import java.io.Serializable;
import java.util.List;
import java.util.Objects;
/**
 * @author Eva.Caesar Liu
@@ -28,6 +29,8 @@
    @ApiModelProperty("当前页的数据")
    private List<T> records;
    @ApiModelProperty("个性化参数")
    private Object extData;
    public PageData(long page, long capacity) {
        this.page = page;
@@ -45,6 +48,18 @@
        pageData.records = pageInfo.getRecords();
        return pageData;
    }
    /**
     * æ ¹æ®MyBatis Plus分页对象组装
     * @author Eva.Caesar Liu
     * @date 2022/03/15 09:54
     */
    public static <T> PageData<T> from(IPage<T> pageInfo, Object  object) {
        PageData<T> pageData = new PageData<T>(pageInfo.getCurrent(), pageInfo.getSize());
        pageData.total = pageInfo.getTotal();
        pageData.records = pageInfo.getRecords();
        pageData.extData = object;
        return pageData;
    }
    /**
     * æ ¹æ®MyBatis原生分页对象组装
server/services/src/main/java/com/doumee/core/utils/DateUtil.java
@@ -293,6 +293,15 @@
            throw e;
        }
    }
    public static String getShortDateStr(Date date)   {
        String nowDate = "";
        try {
            nowDate = sdfShort.format(date);
            return nowDate;
        } catch (Exception e) {
            throw e;
        }
    }
    /**
     * Descrption:取得当前日期,格式为:YYYY-MM-DD
server/services/src/main/java/com/doumee/dao/business/model/WxBill.java
@@ -1,6 +1,8 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.baomidou.mybatisplus.annotation.IdType;
@@ -8,6 +10,7 @@
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
 * 
@@ -27,16 +30,16 @@
    @ExcelColumn(name="收款交易单数")
    private Integer sumBill;
    @ApiModelProperty(value = "退款的订单数", example = "1")
    @ExcelColumn(name="退款的订单数")
    @ApiModelProperty(value = "退款笔数", example = "1")
    @ExcelColumn(name="退款笔数")
    private Integer sumRefundBill;
    @ApiModelProperty(value = "应结订单总金额", example = "1")
    @ExcelColumn(name="应结订单总金额")
    @ApiModelProperty(value = "应结订单总金额(交易金额)", example = "1")
    @ExcelColumn(name="交易金额")
    private BigDecimal sumSuccessFee;
    @ApiModelProperty(value = "退款总金额", example = "1")
    @ExcelColumn(name="退款总金额")
    @ApiModelProperty(value = "退款金额", example = "1")
    @ExcelColumn(name="退款金额")
    private BigDecimal sumRefundFee;
    @ApiModelProperty(value = "充值券退款总金额", example = "1")
@@ -51,12 +54,12 @@
    @ExcelColumn(name="订单总金额")
    private BigDecimal sumTotalFee;
    @ApiModelProperty(value = "申请退款总金额", example = "1")
    @ExcelColumn(name="申请退款总金额")
    @ApiModelProperty(value = "申请退款金额", example = "1")
    @ExcelColumn(name="申请退款金额")
    private BigDecimal sumApplyRefundFee;
    @ApiModelProperty(value = "退款手续费总金额", example = "1")
    @ExcelColumn(name="退款手续费总金额")
    @ApiModelProperty(value = "退款手续费", example = "1")
    @ExcelColumn(name="退款手续费")
    private BigDecimal sumRefundCmmsAmt;
    @ApiModelProperty(value = "结算金额", example = "1")
@@ -66,5 +69,17 @@
    @ApiModelProperty(value = "自行车收入", example = "1")
    @ExcelColumn(name="自行车收入")
    private BigDecimal bikeFee;
    @ApiModelProperty(value = "同步微信账单日期", example = "2023-10-08")
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date createDate;
    @ApiModelProperty(value = "查询开始日期(包含)", example = "20231008")
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyyMMdd")
    private Date startDate;
    @ApiModelProperty(value = "查询截止日期(包含)", example = "20231008")
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyyMMdd")
    private Date endDate;
}
server/services/src/main/java/com/doumee/dao/business/model/WxBillDetail.java
@@ -1,5 +1,6 @@
package com.doumee.dao.business.model;
import com.baomidou.mybatisplus.annotation.TableField;
import com.doumee.core.annotation.excel.ExcelColumn;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -147,5 +148,18 @@
    @ApiModelProperty(value = "费率备注")
    @ExcelColumn(name="费率备注")
    private String rateRemark;
    @ApiModelProperty(value = "查询开始日期(包含)", example = "20231008")
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyyMMdd")
    private Date startDate;
    @ApiModelProperty(value = "查询截止日期(包含)", example = "20231008")
    @TableField(exist = false)
    @JsonFormat(pattern = "yyyyMMdd")
    private Date endDate;
    @ApiModelProperty(value = "总交易单数", example = "1")
    @ExcelColumn(name="收款交易单数")
    @TableField(exist = false)
    private Integer sumBill;
    ;
}
server/services/src/main/java/com/doumee/dao/business/vo/WxBillDetailTotalVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
package com.doumee.dao.business.vo;
import com.doumee.dao.system.model.SystemDepartment;
import com.doumee.dao.system.model.SystemUser;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * @author Eva.Caesar Liu
 * @date 2022/03/15 09:54
 */
@Data
@ApiModel("微信对账明细统计对象返回")
public class WxBillDetailTotalVO extends SystemDepartment {
    @ApiModelProperty(value = "部门人数")
    private long userCount;
    @ApiModelProperty(value = "子部门列表")
    private List<WxBillDetailTotalVO> children;
    @ApiModelProperty(value = "是否包含子部门")
    private Boolean hasChildren;
    @ApiModelProperty(value = "创建人信息")
    private SystemUser createUserInfo;
    @ApiModelProperty(value = "更新人信息")
    private SystemUser updateUserInfo;
}
server/services/src/main/java/com/doumee/service/business/WxBillService.java
@@ -3,6 +3,8 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.WxBill;
import java.util.Date;
import java.util.List;
/**
@@ -94,5 +96,7 @@
     * @return long
     */
    long count(WxBill wxBill);
    void getWxBill(String billDate);
    void getWxBill(Date billDate);
    List<WxBill> getTotalBill(WxBill param);
}
server/services/src/main/java/com/doumee/service/business/impl/WxBillDetailServiceImpl.java
@@ -2,8 +2,10 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.WxBillDetailMapper;
import com.doumee.dao.business.model.WxBill;
import com.doumee.dao.business.model.WxBillDetail;
import com.doumee.service.business.WxBillDetailService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@@ -185,6 +187,8 @@
        if (pageWrap.getModel().getRateRemark() != null) {
            queryWrapper.lambda().eq(WxBillDetail::getRateRemark, pageWrap.getModel().getRateRemark());
        }
        queryWrapper.lambda().ge(pageWrap.getModel().getStartDate() !=null, WxBillDetail::getPid,DateUtil.getShortDateStr(pageWrap.getModel().getStartDate()));
        queryWrapper.lambda().le(pageWrap.getModel().getEndDate() !=null,WxBillDetail::getPid, DateUtil.getShortDateStr(pageWrap.getModel().getEndDate()));
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
@@ -23,9 +23,11 @@
import com.github.binarywang.wxpay.bean.result.WxPayBillInfo;
import com.github.binarywang.wxpay.bean.result.WxPayBillResult;
import com.github.binarywang.wxpay.exception.WxPayException;
import lombok.Synchronized;
import org.apache.commons.lang3.StringUtils;
import org.checkerframework.checker.units.qual.C;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
@@ -101,6 +103,69 @@
        QueryWrapper<WxBill> wrapper = new QueryWrapper<>(wxBill);
        return wxBillMapper.selectList(wrapper);
    }
    @Override
    public  List<WxBill> getTotalBill(WxBill param) {
        //获取汇总统计
        WxBill bill = getTotalDataByDate(param);
        WxBill bill1 = initBillData();//记录交易实收统计数据
        bill1.setSumBill(bill.getSumBill());//订单数量
        bill1.setSumTotalFee(bill.getSumTotalFee());//交易金额
        bill1.setSumCmmsAmt(bill.getSumCmmsAmt());//交易手续费
        bill1.setSumSuccessFee(bill.getSumSuccessFee());//成功交易金额
        WxBill bill2 = initBillData();//记录退款统计数据
        bill2.setSumRefundBill(bill.getSumRefundBill());//退款笔数
        bill2.setSumRefundCmmsAmt(bill.getSumRefundCmmsAmt());//退款手续费
        bill2.setSumRefundFee(bill.getSumRefundFee());//退款金额
        WxBill bill3 = initBillData();
        bill3.setSumBill(bill.getSumBill());
        bill3.setSumSuccessFee(bill.getSumSuccessFee());
        bill3.setSumCmmsAmt(bill.getSumCmmsAmt());
        bill3.setSumTotalFee(bill.getSumTotalFee());
        bill3.setSumRefundBill(bill.getSumRefundBill());//退款笔数
        bill3.setSumRefundCmmsAmt(Constants.formatDecimalNum(bill.getSumRefundCmmsAmt()).add(Constants.formatDecimalNum(bill.getSumCmmsAmt())));//手续费
        bill3.setSumRefundFee(bill.getSumRefundFee());//退款金额
        bill3.setTotal(bill.getTotal());
        QueryWrapper<WxBillDetail> queryWrapper = new QueryWrapper<>();
        queryWrapper.lambda().ge(param.getStartDate() !=null,WxBillDetail::getPid,DateUtil.getShortDateStr(param.getStartDate()));
        queryWrapper.lambda().le(param.getEndDate() !=null,WxBillDetail::getPid,DateUtil.getShortDateStr(param.getEndDate()));
        queryWrapper.lambda().ne(WxBillDetail::getAppid, WxMiniConfig.wxPayService.getConfig().getAppId());//非自行车收入统计
        queryWrapper.lambda().groupBy(WxBillDetail::getBillStatus);
        queryWrapper.select( "count(id) as sum_bill"
                ,"sum(settlement_total_fee) as settlement_total_fee"
                ,"sum(refund_fee) as refund_fee"
                ,"sum(cmms_amt) as cmms_amt" ,"bill_status");
        List<WxBillDetail> detailList = wxBillDetailMapper.selectList(queryWrapper);
        WxBill bill4 = initBillData();//记录交易实收统计数据
        if(detailList!=null){
            for(WxBillDetail detail : detailList){
                if(StringUtils.equals(detail.getBillStatus(), "SUCCESS")){
                    //实收数据
                    bill4.setSumBill(detail.getSumBill());//交易笔数
                    bill4.setSumSuccessFee(Constants.formatDecimalNum(detail.getSettlementTotalFee()));//交易金额
                    bill4.setSumCmmsAmt(Constants.formatDecimalNum(detail.getCmmsAmt()));//交易手续费
                } else if(StringUtils.equals(detail.getBillStatus(), "REFUND")){
                    //退款数据
                    bill4.setSumRefundBill(detail.getSumBill());//退款笔数
                    bill4.setSumRefundCmmsAmt(Constants.formatDecimalNum(detail.getCmmsAmt()));//退款手续费
                }
            }
            //结算金额
            bill4.setTotal(bill4.getSumSuccessFee()
                    .subtract(bill4.getSumRefundFee())
                    .subtract(bill4.getSumCmmsAmt())
                    .subtract(bill4.getSumRefundCmmsAmt()));
        }
        List<WxBill> list = new ArrayList<>();
        list.add(bill1);//实收交易
        list.add(bill2);//退款汇总
        list.add(bill3);//实收退款总计
        list.add(bill4);//非自行车收入
        return list;
    }
  
    @Override
    public PageData<WxBill> findPage(PageWrap<WxBill> pageWrap) {
@@ -143,16 +208,59 @@
        if (pageWrap.getModel().getBikeFee() != null) {
            queryWrapper.lambda().eq(WxBill::getBikeFee, pageWrap.getModel().getBikeFee());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
        queryWrapper.lambda().ge(pageWrap.getModel().getStartDate() !=null,WxBill::getId,DateUtil.getShortDateStr(pageWrap.getModel().getStartDate()));
        queryWrapper.lambda().le(pageWrap.getModel().getEndDate() !=null,WxBill::getId,DateUtil.getShortDateStr(pageWrap.getModel().getEndDate()));
        //按照时间升序显示
        queryWrapper.lambda().orderByAsc(WxBill::getId);
       /* for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(wxBillMapper.selectPage(page, queryWrapper));
        }*/
        return PageData.from(wxBillMapper.selectPage(page, queryWrapper),getTotalDataByDate(pageWrap.getModel()));
    }
    private WxBill getTotalDataByDate(WxBill model) {
        QueryWrapper<WxBill> param = new QueryWrapper<>();
        param.lambda().ge(model.getStartDate() !=null,WxBill::getId,DateUtil.getShortDateStr(model.getStartDate()));
        param.lambda().le(model.getEndDate() !=null,WxBill::getId,DateUtil.getShortDateStr(model.getEndDate()));
        param.select("sum(sum_bill) as sum_bill"
                ,"sum(sum_refund_bill) as sum_refund_bill"
                ,"sum(sum_success_fee) as sum_success_fee"
                ,"sum(sum_refund_fee) as sum_refund_fee"
                ,"sum(sum_cmms_amt) as sum_cmms_amt"
                ,"sum(sum_total_fee) as sum_total_fee"
                ,"sum(sum_apply_refund_fee) as sum_apply_refund_fee"
                ,"sum(sum_total_fee) as sum_total_fee"
                ,"sum(total) as total"
                ,"sum(sum_refund_cmms_amt) as sum_refund_cmms_amt"
                ,"sum(bike_fee) as bike_fee"
                );
        WxBill bill = wxBillMapper.selectOne(param.last("limit 1"));
        if(bill == null){
            bill = initBillData();
        }
        return bill;
    }
    public static WxBill initBillData(){
        WxBill bill = new WxBill();
        bill.setSumBill(0);
        bill.setSumTotalFee(new BigDecimal(0.00));
        bill.setSumSuccessFee(new BigDecimal(0.00));
        bill.setSumRefundFee(new BigDecimal(0.00));
        bill.setSumCouponRefundFee(new BigDecimal(0.00));
        bill.setSumApplyRefundFee(new BigDecimal(0.00));
        bill.setSumCmmsAmt(new BigDecimal(0.00));
        bill.setSumRefundBill(0);
        bill.setSumRefundCmmsAmt(new BigDecimal(0.00));
        bill.setTotal(new BigDecimal(0.00));
        bill.setBikeFee(new BigDecimal(0.00));
        return bill;
    }
    @Override
    public long count(WxBill wxBill) {
        QueryWrapper<WxBill> wrapper = new QueryWrapper<>(wxBill);
@@ -160,11 +268,13 @@
    }
    @Override
    @Transactional(rollbackFor = {BusinessException.class,Exception.class})
    public void getWxBill(String billDate) {
    @Synchronized//单例执行
    public void getWxBill(Date ydate ) {
        isValidDate(ydate);
        // èŽ·å–äº¤æ˜“è´¦å•æ•°æ®
        WxPayDownloadBillRequest request = new WxPayDownloadBillRequest();
//        String billDate =  DateUtil.beforeDateToStr(1);
        Date ydate = DateUtil.addDaysToDate(new Date(), -1);
        String billDate = DateUtil.getShortDateStr(ydate);
//        Date ydate = DateUtil.addDaysToDate(new Date(), -1);
        request.setBillDate(billDate);
        request.setBillType("SUCCESS");
        WxPayBillResult response = null;
@@ -181,18 +291,9 @@
        }catch (WxPayException e){
        }
        WxBill bill = new WxBill();
        WxBill bill = initBillData();
        //日期作为主键
        bill.setId(billDate);
        bill.setSumBill(0);
        bill.setSumTotalFee(new BigDecimal(0.00));
        bill.setSumSuccessFee(new BigDecimal(0.00));
        bill.setSumRefundFee(new BigDecimal(0.00));
        bill.setSumCouponRefundFee(new BigDecimal(0.00));
        bill.setSumApplyRefundFee(new BigDecimal(0.00));
        bill.setSumCmmsAmt(new BigDecimal(0.00));
        bill.setSumRefundBill(0);
        bill.setSumRefundCmmsAmt(new BigDecimal(0.00));
        List<WxBillDetail> detailList = new ArrayList<>();
        if(response !=null){
//                List<WxPayBillInfo> detailList = response.getBillInfoList();
@@ -232,6 +333,28 @@
            wxBillDetailMapper.insertBatch(detailList);
        }
    }
    private boolean isValidDate(Date ydate) {
        if(ydate == null  ){
            //时间不能为空
            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        int days =  DateUtil.daysBetweenDates(new Date(),ydate);
        if(days< 1){
            //只能同步昨天之前的数据
            throw  new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        if( days == 1){
            //只能同步昨天10之前的数据
            Calendar caln = Calendar.getInstance();
            caln.setTime(ydate);
            if(caln.get(Calendar.HOUR_OF_DAY) <= 9){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,最近同步时间只能截止到昨天10点前!");
            }
        }
        return true;
    }
    private void getTotalAndIncome(WxBill bill,Date date) {
        QueryWrapper<Goodsorder> queryWrapper = new QueryWrapper<>();
        queryWrapper.apply("to_char(create_date, 'yyyy-MM-dd') = {0}", date);
@@ -245,6 +368,10 @@
        if(billInfoList!=null){
            for (int i = 0; i <billInfoList.size(); i++) {
                WxPayBillInfo info =billInfoList.get(i);
                if(StringUtils.equals(info.getTradeType(),"REFUND" ) && !StringUtils.equals(info.getRefundState(),"SUCCESS" )){
                    //如果是非成功的退款数据,不进行同步
                    continue;
                }
                WxBillDetail detail = new WxBillDetail();
                detail.setId(UUID.randomUUID().toString());
                detail.setPid(bill.getId());
@@ -287,6 +414,7 @@
                        bill.setBikeFee(bill.getBikeFee().subtract(detail.getApplyRefundFee()));
                    }
                }
                detailList.add(detail);
            }
        }
server/web/src/main/resources/application.yml
@@ -50,7 +50,7 @@
# dao层的日志设置为debug,方便查看sql
logging:
  level:
    com.tielangtou.dao: debug
    com.doumee.dao: debug
pagehelper:
  # æŒ‡å®šä½¿ç”¨çš„æ•°æ®åº“数据库