Procházet zdrojové kódy

1、完善银行缴费设置
2、完善缴费模板导入
3、完成cardNumber的关联
4、测试微校通知服务

Bingo před 4 roky
rodič
revize
91d6110820

+ 0 - 21
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/BankDetailController.java

@@ -64,25 +64,4 @@ public class BankDetailController {
         return bank;
     }
 
-
-//    /**
-//     * 通过银行的门店+卡号查询缴费明细
-//     * @param bankStoreCard
-//     * @return
-//     */
-//    @GetMapping("queryBankDetailInSql")
-//    public CommonResult<T> queryBankDetailInSql(String bankStoreCard, String itemName) {
-//        String bankDetailStr = "";
-//        QueryWrapper<BankDetail> wrapper = new QueryWrapper<>();
-//        wrapper.eq("item_name", itemName);
-//        List<BankDetail> list = bankDetailService.list(wrapper);
-//        for (int i = 0; i < list.size(); i++) {
-//            String storeCard = list.get(i).getBankStoreName() + "(" + list.get(i).getBankCardNumber() + ")";
-//            if (storeCard.equals(bankStoreCard)) {
-//                bankDetailStr = list.get(i).getBankDetailStr();
-//            }
-//        }
-//        return CommonResult.ok().setResult(bankDetailStr);
-//    }
-
 }

+ 25 - 17
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayItemController.java

@@ -133,26 +133,34 @@ public class PayItemController {
 
         String itemName = jsonObject.get("itemName").toString();
         JSONArray jsonArr = jsonObject.getJSONArray("list");
-        List<ReceiveBankItemDetailTO> ReceiveBankItemDetailTOList = new ArrayList<>();
-        for (int i = 0; i < jsonArr.size(); i++) {
-            ReceiveBankItemDetailTO receiveBankItemDetailTO = new ReceiveBankItemDetailTO();
-            String bankId = "";
-            String detail = "";
-            String vo = jsonArr.get(i).toString().substring(1, jsonArr.get(i).toString().length() - 1);
-            String[] split = vo.split(",");
-            for (int m = 0; m < split.length; m++) {
-                if (split[m].split("=")[0].contains("bankId")) {
-                    bankId = String.valueOf(split[m].split("=")[1]);
-                }
-                if (split[m].split("=")[0].contains("detail")) {
-                    detail = String.valueOf(split[m].split("=")[1]);
+        if (jsonObject.getJSONArray("list") != null) {
+            List<ReceiveBankItemDetailTO> ReceiveBankItemDetailTOList = new ArrayList<>();
+            for (int i = 0; i < jsonArr.size(); i++) {
+                ReceiveBankItemDetailTO receiveBankItemDetailTO = new ReceiveBankItemDetailTO();
+                String bankId = "";
+                String detail = "";
+                String vo = jsonArr.get(i).toString().substring(1, jsonArr.get(i).toString().length() - 1);
+                String[] split = vo.split(",");
+                if (split.length > 0) {
+                    for (int m = 0; m < split.length; m++) {
+                        if (split[m].split("=")[0].contains("bankId")) {
+                            bankId = String.valueOf(split[m].split("=")[1]);
+                        }
+                        if (!split[m].endsWith("=")) {
+                            if (split[m].split("=")[0].contains("detail") ) {
+                                detail = String.valueOf(split[m].split("=")[1]);
+                            }
+                        }
+                    }
                 }
+
+                receiveBankItemDetailTO.setBankId(Integer.parseInt(bankId));
+                receiveBankItemDetailTO.setDetail(detail);
+                ReceiveBankItemDetailTOList.add(receiveBankItemDetailTO);
             }
-            receiveBankItemDetailTO.setBankId(Integer.parseInt(bankId));
-            receiveBankItemDetailTO.setDetail(detail);
-            ReceiveBankItemDetailTOList.add(receiveBankItemDetailTO);
+            bankItemDetailController.saveBankDetail(itemName, ReceiveBankItemDetailTOList);
         }
-       bankItemDetailController.saveBankDetail(itemName, ReceiveBankItemDetailTOList);
+
 
         //将催缴发送请求计数器归零
         payItem.setRequestCount("0");

+ 2 - 2
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayOrderController.java

@@ -441,9 +441,9 @@ public class PayOrderController {
             yearList.add(yearVo);
 
         });
-        //  List uniqueStr = yearList.stream().distinct().collect(Collectors.toList());
+          List uniqueStr = yearList.stream().distinct().collect(Collectors.toList());
 
-        return yearList;
+        return uniqueStr;
     }
 }
 

+ 13 - 11
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayableInfoController.java

@@ -72,11 +72,12 @@ public class PayableInfoController {
     @Autowired
     private PayOrderService payOrderService;
     @Autowired
-    private PayItemDetailController payItemDetailController;
+    private WechatController wechatController;
     @Autowired
     private BankItemDetailService bankItemDetailService;
 
 
+
     /**
      * 根据card_number获取缴费信息 整合各缴费项目的集合
      *
@@ -291,15 +292,17 @@ public class PayableInfoController {
     @PutMapping("updatePayInfo")
     public CommonResult<T> updatePayInfo(String itemName) {
         QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq("payment_item", itemName);
+        wrapper.eq("payment_item", itemName)
+                .isNull("pay_create_time");
         //更新时间等参数
         List<PayableInfoEntity> infoEntityList = payableInfoService.list(wrapper);
-
         List<PayableInfoEntity> objectList = new ArrayList<>();
-
+        if (infoEntityList.size() == 0) {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "当前项目为"+itemName+",无法查询到项目数据,请核对");
+        }
         infoEntityList.forEach(payableInfoEntity -> {
-            String cardNumberByIdCard = getCardNumberByIdCard(payableInfoEntity.getStudentNo(), "1", payableInfoEntity.getStudentNo(), "2", payableInfoEntity.getGrade());
-            payableInfoEntity.setCardNumber(cardNumberByIdCard);
+            String cardNumber = wechatController.getCardNumber(payableInfoEntity.getStudentName(), payableInfoEntity.getStudentNo());
+            payableInfoEntity.setCardNumber(cardNumber);
             payableInfoEntity.setPayCreateTime(LocalDateTime.now());
             payableInfoEntity.setPayItemType("1");
             payableInfoEntity.setPayNoticeType("1");
@@ -315,8 +318,7 @@ public class PayableInfoController {
             }
             String[] split = payableInfoEntity.getNotPayDetail().split("/");
             payableInfoEntity.setNotPaySize(split.length);
-
-            //  payableInfoEntity.setPayableAccount(payableInfoService.queryPayItemByName(payableInfoEntity.getPaymentItem()));
+            payableInfoEntity.setPayOrderLoan(new BigDecimal("0.00"));
             objectList.add(payableInfoEntity);
         });
         payableInfoService.updateBatchById(objectList);
@@ -332,7 +334,7 @@ public class PayableInfoController {
      */
     public String getCardNumberByIdCard(String idCard, String inputType, String inputStr, String outPutType, String grade) {
         // 2020级以前学生的cardNumber不为身份证号,需要其他平台查询其card Number信息
-        if (Integer.parseInt(grade) > 2019) {
+        if (Integer.parseInt(grade) < 2021 ) {
             //表示输入的参数为身份证
             inputType = inputType == null ? "1" : inputType;
             //输入的参数
@@ -355,7 +357,7 @@ public class PayableInfoController {
             ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, request, String.class);
             JSONObject jsonObj = JSON.parseObject(responseEntity.getBody());
             String cardNumber = jsonObj.get("result").toString();
-            return cardNumber == null ? idCard : cardNumber;
+            return cardNumber.equals("该用户暂无返回的身份标识") ? idCard : cardNumber;
         } else {
             return idCard;
         }
@@ -775,7 +777,7 @@ public class PayableInfoController {
                     .last("limit 1");
             PayableInfoEntity one = payableInfoService.getOne(info);
             if (one == null) {
-                return CommonResult.ok().setResult("该项目暂无缴费明细");
+                return CommonResult.ok();
             }
             String notMustMoney = "";
             String mustMoney = "";

+ 2 - 3
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayableInfoWaterController.java

@@ -71,9 +71,8 @@ public class PayableInfoWaterController {
         List<PayableInfoWaterEntity> InfoEntityList = payableInfoWaterService.list();
         List<PayableInfoWaterEntity> objectList = new ArrayList<>();
         InfoEntityList.forEach(payableInfoWaterEntity -> {
-            String cardNumberByIdCard = payableInfoController.getCardNumberByIdCard(payableInfoWaterEntity.getStudentNo(), "1", payableInfoWaterEntity.getStudentNo(), "2", payableInfoWaterEntity.getGrade());
-
-            payableInfoWaterEntity.setCardNumber(cardNumberByIdCard);
+            String cardNumber = wechatController.getCardNumber(payableInfoWaterEntity.getStudentName(), payableInfoWaterEntity.getStudentNo());
+            payableInfoWaterEntity.setCardNumber(cardNumber);
             payableInfoWaterEntity.setPayCreateTime(LocalDateTime.now());
             payableInfoWaterEntity.setPayItemType("1");
             payableInfoWaterEntity.setPayNoticeType("1");

+ 0 - 3
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/TestController.java

@@ -9,8 +9,6 @@ import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.util.Map;
-import java.util.Set;
 
 /**
  * @Author: codingliang
@@ -47,7 +45,6 @@ public class TestController {
                 }
             }
         }
-        System.out.println("body:" + stringBuilder.toString());
 
         return "code=1111";
     }

+ 44 - 7
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/WechatController.java

@@ -107,9 +107,7 @@ public class WechatController {
             JsonNode jsonNode = mapper.readTree(response);
             String openid = jsonNode.get("openid").asText();
 
-            // System.out.println("redirect:" + wechatConfig.getFontendUrl() + "/#/pages/Pay/pay/?openId=" + openid);
             return "redirect:" + wechatConfig.getFontendUrl() + "/#/" + state + "/?openId=" + openid;
-            // return "redirect:" + "http://192.168.161.182:8080/jiaofei/jiaofeiH5/" + state + "/?openId=" + openid;
         } catch (Exception e) {
             return "redirect:" + wechatConfig.getFontendUrl() + "/error/?errorMsg=获取用户openId失败";
         }
@@ -198,10 +196,49 @@ public class WechatController {
         } catch (Exception e) {
             e.printStackTrace();
         }
+    }
+
+    /**
+     * 通过学生姓名 身份证查找用户的cardNumber
+     * @param studentName
+     * @param idCard
+     * @return
+     */
+    @GetMapping("getWeiXiaoToken1")
+    @ResponseBody
+    public String  getCardNumber(String studentName, String idCard) {
+        String card_number = "";
+        try {
+            RestTemplate client = new RestTemplate();
+            ObjectMapper mapper = new ObjectMapper();
+            String userInfoUrl ="https://open.wecard.qq.com/cgi-bin/user/search";
+            Map<String, String> userInfoParam = new HashMap<>();
+            userInfoParam.put("access_token", accessTokenPublic);
+            userInfoParam.put("keywords", studentName);
+            ResponseEntity<String> userInfoResponse = client.postForEntity(userInfoUrl, userInfoParam, String.class);
+            JSONObject jsonObj = JSON.parseObject(userInfoResponse.getBody());
+            JSONArray userlist = jsonObj.getJSONArray("userlist");
 
+            Map<String, Object> userInfoMap = mapper.readValue(userlist.get(0).toString(), new TypeReference<Map<String, Object>>() {
+            });
+            String id_card = "";
+            if (userInfoMap.get("card_number") != null) {
+                card_number = userInfoMap.get("card_number").toString();
+            }
+            if (userInfoMap.get("id_card") != null) {
+                id_card = userInfoMap.get("id_card").toString();
+            }
+            if (idCard.equals(id_card)) {
+                return card_number;
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return card_number;
     }
 
 
+
     public PayableInfoStudentResultVO queryStudent() {
         PayableInfoStudentResultVO payableInfoStudentResultVO = new PayableInfoStudentResultVO();
         try {
@@ -266,7 +303,7 @@ public class WechatController {
         weixiaoVO.setCardNumberList(cardNumberList);
         weixiaoVO.setTitle(itemName + "缴纳通知");
         weixiaoVO.setSender("财务办公室");
-        weixiaoVO.setContent("同学你好," + weixiaoVO.getTitle() + "缴费已经开始,请尽快查看缴费详情完成缴费,谢谢合作!");
+        weixiaoVO.setContent("同学你好," + itemName + "缴费已经开始,请尽快查看缴费详情完成缴费,谢谢合作!");
         JSONObject jsonObject = (JSONObject) JSONObject.toJSON(weixiaoVO);
         return notice(jsonObject);
     }
@@ -309,7 +346,7 @@ public class WechatController {
         weixiaoVO.setCardNumberList(cardNumberList);
         weixiaoVO.setTitle(itemName + "催缴通知");
         weixiaoVO.setSender("财务办公室");
-        weixiaoVO.setContent("同学你好," + weixiaoVO.getTitle() + "缴费已经开始,请尽快查看缴费详情完成缴费,谢谢合作!");
+        weixiaoVO.setContent("同学你好," + itemName + "缴费已经开始,请尽快查看缴费详情完成缴费,谢谢合作!");
         JSONObject json = (JSONObject) JSONObject.toJSON(weixiaoVO);
         return notice(json);
 
@@ -374,7 +411,7 @@ public class WechatController {
 
             }
             weixiaoVO.setCardNumberList(cardNumberList);
-            weixiaoVO.setContent("同学你好,你的" + weixiaoVO.getTitle() + "缴费订单异常缴费失败,请尽快查看缴费详情,并再次缴费。若为系统原因,请及时反馈!");
+            weixiaoVO.setContent("同学你好,你的" + itemName + "缴费订单异常缴费失败,请尽快查看缴费详情,并再次缴费。若为系统原因,请及时反馈!");
             weixiaoVO.setSender("财务办公室");
             JSONObject jsonObject = (JSONObject) JSONObject.toJSON(weixiaoVO);
             notice(jsonObject);
@@ -388,8 +425,8 @@ public class WechatController {
     /**
      * 每天执行一次催缴 下午15点
      */
-//    @Scheduled(fixedDelay = 20000)
-    @Scheduled(cron = "0 0 15 * * ?")
+    @Scheduled(fixedDelay = 20000)
+   // @Scheduled(cron = "0 0 15 * * ?")
     public void autoTiming() {
 
         List<PayItem> payItemList = payItemService.list();

+ 17 - 11
src/main/java/com/chuanghai/smartschool/tuitionpayment/listener/aliexcel/MyPayableInfoImportListener.java

@@ -47,21 +47,28 @@ public class MyPayableInfoImportListener extends AnalysisEventListener<PayableIn
 
     private void inertData() {
         if (list.size() > 0) {
-            list.forEach(info->{
+            list.forEach(info -> {
                 PayableInfoEntity infoEntity = query(info.getPaymentItem(), info.getStudentNo(), info.getYears(), info.getStudentName());
-                if (infoEntity != null){
-                    throw new RRException(BizCodeEnume.DATA_IS_EXIST, "导入失败,"+info.getStudentName()+" "
-                            +info.getStudentNo()+" 已存在 "+info.getYears()+" 时间段的 "+info.getPaymentItem()+" 缴费信息,请核对完毕之后重新导入");
+                if (info.getPaymentItem().equals("水费缴纳")) {
+                    throw new RRException(BizCodeEnume.FILE_IMPORT_ERROR,"当前为"+infoEntity.getPaymentItem()+"模板,请使用正确的模板导入数据");
+                }
+                if (infoEntity != null) {
+                    throw new RRException(BizCodeEnume.DATA_IS_EXIST, "导入失败," + info.getStudentName() + " "
+                            + info.getStudentNo() + " 已存在 " + info.getYears() + " 时间段的 " + info.getPaymentItem() + " 缴费信息,请核对完毕之后重新导入");
                 }
             });
         }
-        payableInfoService.saveBatch(list);
-
+        try {
+            payableInfoService.saveBatch(list);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RRException(BizCodeEnume.DATA_IS_EXIST,"导入失败,导入模板中存在冲突数据,请核查后重新导入");
+        }
         list.clear();
     }
 
     /**
-     *  清除之前的表数据
+     * 清除之前的表数据
      *
      * @param itemName 缴费项目
      */
@@ -69,7 +76,7 @@ public class MyPayableInfoImportListener extends AnalysisEventListener<PayableIn
         QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
         wrapper.eq("payment_item", itemName);
         List<PayableInfoEntity> infoEntityList = payableInfoService.list(wrapper);
-        if (infoEntityList.size() > 0){
+        if (infoEntityList.size() > 0) {
             List<Long> idList = infoEntityList.stream().map(PayableInfoEntity::getId).collect(Collectors.toList());
             boolean b = payableInfoService.removeByIds(idList);
             System.out.println(b);
@@ -78,11 +85,11 @@ public class MyPayableInfoImportListener extends AnalysisEventListener<PayableIn
     }
 
     /**
-     *  查询之前的表数据是否与导入的数据相同
+     * 查询之前的表数据是否与导入的数据相同
      *
      * @param itemName 缴费项目
      */
-    public PayableInfoEntity query(String itemName, String studentNo, String years ,String studentName) {
+    public PayableInfoEntity query(String itemName, String studentNo, String years, String studentName) {
         QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
         wrapper.eq("payment_item", itemName)
                 .eq("student_no", studentNo)
@@ -94,5 +101,4 @@ public class MyPayableInfoImportListener extends AnalysisEventListener<PayableIn
     }
 
 
-
 }

+ 16 - 10
src/main/java/com/chuanghai/smartschool/tuitionpayment/listener/aliexcel/MyPayableInfoWaterImportListener.java

@@ -30,7 +30,6 @@ public class MyPayableInfoWaterImportListener extends AnalysisEventListener<Paya
     }
 
 
-
     @Transactional
     @Override
     public void invoke(PayableInfoWaterEntity data, AnalysisContext context) {
@@ -48,20 +47,26 @@ public class MyPayableInfoWaterImportListener extends AnalysisEventListener<Paya
 
     private void inertData() {
         if (list.size() > 0) {
-            list.forEach(info->{
+            list.forEach(info -> {
                 PayableInfoWaterEntity waterEntity = query(info.getPaymentItem(), info.getStudentNo(), info.getPayMonth(), info.getStudentName());
-                if (waterEntity != null){
-                    throw new RRException(BizCodeEnume.DATA_IS_EXIST, "导入失败,"+info.getStudentName()+" "
-                            +info.getStudentNo()+" 已存在 "+info.getPayMonth()+" 时间段的 "+info.getPaymentItem()+" 缴费信息,请核对完毕之后重新导入");
+                if (waterEntity != null) {
+                    throw new RRException(BizCodeEnume.DATA_IS_EXIST, "导入失败," + info.getStudentName() + " "
+                            + info.getStudentNo() + " 已存在 " + info.getPayMonth() + " 时间段的 " + info.getPaymentItem() + " 缴费信息,请核对完毕之后重新导入");
                 }
             });
         }
-        payableInfoWaterService.saveBatch(list);
+        try {
+            payableInfoWaterService.saveBatch(list);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RRException(BizCodeEnume.DATA_IS_EXIST, "导入失败,导入模板中存在冲突数据,请核查后重新导入");
+        }
+
         list.clear();
     }
 
     /**
-     *  清除之前的表数据
+     * 清除之前的表数据
      *
      * @param itemName 缴费项目
      */
@@ -69,18 +74,19 @@ public class MyPayableInfoWaterImportListener extends AnalysisEventListener<Paya
         QueryWrapper<PayableInfoWaterEntity> wrapper = new QueryWrapper<>();
         wrapper.eq("payment_item", itemName);
         List<PayableInfoWaterEntity> infoEntityList = payableInfoWaterService.list(wrapper);
-        if (infoEntityList.size() >0){
+        if (infoEntityList.size() > 0) {
             List<Long> idList = infoEntityList.stream().map(PayableInfoWaterEntity::getId).collect(Collectors.toList());
             payableInfoWaterService.removeByIds(idList);
         }
 
     }
+
     /**
-     *  查询之前的表数据是否与导入的数据相同
+     * 查询之前的表数据是否与导入的数据相同
      *
      * @param itemName 缴费项目
      */
-    public PayableInfoWaterEntity query(String itemName, String studentNo, String years , String studentName) {
+    public PayableInfoWaterEntity query(String itemName, String studentNo, String years, String studentName) {
         QueryWrapper<PayableInfoWaterEntity> wrapper = new QueryWrapper<>();
         wrapper.eq("payment_item", itemName)
                 .eq("student_no", studentNo)

+ 3 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayableInfoServiceImpl.java

@@ -52,6 +52,8 @@ public class PayableInfoServiceImpl extends ServiceImpl<PayableInfoDao, PayableI
         if (StringUtils.hasText(queryTO.getPayStatus())) {
             wrapper.eq("pay_item_type", queryTO.getPayStatus());
         }
+        wrapper.eq(StringUtils.hasText(queryTO.getPayYear()), "years", queryTO.getPayYear());
+
         wrapper.apply(StringUtils.hasText(queryTO.getCreateDateStr()), "date_format(pay_create_time, '%Y-%m-%d') = {0}", queryTO.getCreateDateStr());
         wrapper.apply(StringUtils.hasText(queryTO.getPayDateStr()), "date_format(pay_finish_time, '%Y-%m-%d') = {0}", queryTO.getPayDateStr());
 
@@ -75,6 +77,7 @@ public class PayableInfoServiceImpl extends ServiceImpl<PayableInfoDao, PayableI
         if (StringUtils.hasText(queryTO.getPayStatus())) {
             wrapper.eq("pay_item_type", queryTO.getPayStatus());
         }
+        wrapper.eq(StringUtils.hasText(queryTO.getPayYear()), "years", queryTO.getPayYear());
         wrapper.select("ifnull(sum(real_pay_amount), 0) as total,count(id) as count");
         wrapper.apply(StringUtils.hasText(queryTO.getCreateDateStr()), "date_format(pay_create_time, '%Y-%m-%d') = {0}", queryTO.getCreateDateStr());
         wrapper.apply(StringUtils.hasText(queryTO.getPayDateStr()), "date_format(pay_finish_time, '%Y-%m-%d') = {0}", queryTO.getPayDateStr());

+ 2 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayableInfoWaterServiceImpl.java

@@ -121,6 +121,7 @@ public class PayableInfoWaterServiceImpl extends ServiceImpl<PayableInfoWaterDao
         if (StringUtils.hasText(queryTO.getPayStatus())) {
             wrapper.eq("pay_item_type", queryTO.getPayStatus());
         }
+        wrapper.eq(StringUtils.hasText(queryTO.getPayYear()), "pay_month", queryTO.getPayYear());
         wrapper.apply(StringUtils.hasText(queryTO.getCreateDateStr()), "date_format(pay_create_time, '%Y-%m-%d') = {0}", queryTO.getCreateDateStr());
         wrapper.apply(StringUtils.hasText(queryTO.getPayDateStr()), "date_format(pay_finish_time, '%Y-%m-%d') = {0}", queryTO.getPayDateStr());
 
@@ -173,6 +174,7 @@ public class PayableInfoWaterServiceImpl extends ServiceImpl<PayableInfoWaterDao
         if (StringUtils.hasText(queryTO.getPayStatus())) {
             wrapper.eq("pay_item_type", queryTO.getPayStatus());
         }
+        wrapper.eq(StringUtils.hasText(queryTO.getPayYear()), "years", queryTO.getPayYear());
         wrapper.select("ifnull(sum(real_pay_amount), 0) as total,count(id) as count");
         wrapper.apply(StringUtils.hasText(queryTO.getCreateDateStr()), "date_format(pay_create_time, '%Y-%m-%d') = {0}", queryTO.getCreateDateStr());
         wrapper.apply(StringUtils.hasText(queryTO.getPayDateStr()), "date_format(pay_finish_time, '%Y-%m-%d') = {0}", queryTO.getPayDateStr());