From d3d1b082c49f13abda7e1b73964f7f7fa62105b0 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期日, 08 十月 2023 14:43:28 +0800
Subject: [PATCH] 账单接口

---
 server/services/src/main/java/com/doumee/dao/business/model/WxBill.java                     |   35 ++++-
 server/services/src/main/java/com/doumee/dao/business/vo/WxBillDetailTotalVO.java           |   33 +++++
 server/services/src/main/java/com/doumee/service/business/impl/WxBillDetailServiceImpl.java |    4 
 server/platform/src/main/java/com/doumee/api/business/WxBillDetailController.java           |    1 
 server/services/src/main/java/com/doumee/core/utils/DateUtil.java                           |    9 +
 server/services/src/main/java/com/doumee/dao/business/model/WxBillDetail.java               |   14 ++
 server/platform/src/main/java/com/doumee/task/ScheduleTool.java                             |   13 +
 server/services/src/main/java/com/doumee/service/business/WxBillService.java                |    6 
 server/platform/src/main/java/com/doumee/api/business/WxBillController.java                 |   21 +++
 server/services/src/main/java/com/doumee/core/model/PageData.java                           |   15 ++
 server/platform/src/main/resources/application.yml                                          |    3 
 server/web/src/main/resources/application.yml                                               |    2 
 server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java       |  162 ++++++++++++++++++++++++--
 13 files changed, 283 insertions(+), 35 deletions(-)

diff --git a/server/platform/src/main/java/com/doumee/api/business/WxBillController.java b/server/platform/src/main/java/com/doumee/api/business/WxBillController.java
index 1517eb8..b2cd2f2 100644
--- a/server/platform/src/main/java/com/doumee/api/business/WxBillController.java
+++ b/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")
diff --git a/server/platform/src/main/java/com/doumee/api/business/WxBillDetailController.java b/server/platform/src/main/java/com/doumee/api/business/WxBillDetailController.java
index 8358d4e..3855286 100644
--- a/server/platform/src/main/java/com/doumee/api/business/WxBillDetailController.java
+++ b/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;
diff --git a/server/platform/src/main/java/com/doumee/task/ScheduleTool.java b/server/platform/src/main/java/com/doumee/task/ScheduleTool.java
index ad8077e..84637d1 100644
--- a/server/platform/src/main/java/com/doumee/task/ScheduleTool.java
+++ b/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);
 
     }
 }
diff --git a/server/platform/src/main/resources/application.yml b/server/platform/src/main/resources/application.yml
index 821f382..f1d3d21 100644
--- a/server/platform/src/main/resources/application.yml
+++ b/server/platform/src/main/resources/application.yml
@@ -42,7 +42,6 @@
   # 鎺掗櫎璺熻釜鐨刄RL姝e垯
   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灞傜殑鏃ュ織璁剧疆涓篸ebug锛屾柟渚挎煡鐪媠ql
 logging:
   level:
-    com.tielangtou.dao: debug
+    com.doumee.dao: debug
 
 pagehelper:
   # 鎸囧畾浣跨敤鐨勬暟鎹簱鏁版嵁搴�
diff --git a/server/services/src/main/java/com/doumee/core/model/PageData.java b/server/services/src/main/java/com/doumee/core/model/PageData.java
index 9ac6137..855889c 100644
--- a/server/services/src/main/java/com/doumee/core/model/PageData.java
+++ b/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鍘熺敓鍒嗛〉瀵硅薄缁勮
diff --git a/server/services/src/main/java/com/doumee/core/utils/DateUtil.java b/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
index 658895b..c101128 100644
--- a/server/services/src/main/java/com/doumee/core/utils/DateUtil.java
+++ b/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
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/WxBill.java b/server/services/src/main/java/com/doumee/dao/business/model/WxBill.java
index d739a99..9bfcd66 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/WxBill.java
+++ b/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;
 
 }
diff --git a/server/services/src/main/java/com/doumee/dao/business/model/WxBillDetail.java b/server/services/src/main/java/com/doumee/dao/business/model/WxBillDetail.java
index 84215f0..c0146c5 100644
--- a/server/services/src/main/java/com/doumee/dao/business/model/WxBillDetail.java
+++ b/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;
+    ;
 
 }
diff --git a/server/services/src/main/java/com/doumee/dao/business/vo/WxBillDetailTotalVO.java b/server/services/src/main/java/com/doumee/dao/business/vo/WxBillDetailTotalVO.java
new file mode 100644
index 0000000..245d376
--- /dev/null
+++ b/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;
+}
diff --git a/server/services/src/main/java/com/doumee/service/business/WxBillService.java b/server/services/src/main/java/com/doumee/service/business/WxBillService.java
index 27244f4..4d62ffa 100644
--- a/server/services/src/main/java/com/doumee/service/business/WxBillService.java
+++ b/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);
 }
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/WxBillDetailServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/WxBillDetailServiceImpl.java
index 7239413..6e0e3a2 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/WxBillDetailServiceImpl.java
+++ b/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());
diff --git a/server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java b/server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
index 429e6eb..1181f86 100644
--- a/server/services/src/main/java/com/doumee/service/business/impl/WxBillServiceImpl.java
+++ b/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,7 +103,70 @@
         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) {
         IPage<WxBill> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
@@ -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);
             }
         }
diff --git a/server/web/src/main/resources/application.yml b/server/web/src/main/resources/application.yml
index 343e977..8f71211 100644
--- a/server/web/src/main/resources/application.yml
+++ b/server/web/src/main/resources/application.yml
@@ -50,7 +50,7 @@
 # dao灞傜殑鏃ュ織璁剧疆涓篸ebug锛屾柟渚挎煡鐪媠ql
 logging:
   level:
-    com.tielangtou.dao: debug
+    com.doumee.dao: debug
 
 pagehelper:
   # 鎸囧畾浣跨敤鐨勬暟鎹簱鏁版嵁搴�

--
Gitblit v1.9.3