Ver código fonte

1、修改微校通知模板,定时任务
2、修改订单部分逻辑
3、添加支付人相关字段
4、修改管理端查询年度接口

Bingo 4 anos atrás
pai
commit
23d0546b40
19 arquivos alterados com 547 adições e 304 exclusões
  1. 3 1
      src/main/java/com/chuanghai/smartschool/tuitionpayment/common/exception/BizCodeEnume.java
  2. 20 2
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/BankController.java
  3. 31 4
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayOrderController.java
  4. 122 137
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayableInfoController.java
  5. 25 18
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayableInfoWaterController.java
  6. 78 22
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/WechatController.java
  7. 2 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/Bank.java
  8. 24 3
      src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/PayOrderEntity.java
  9. 9 12
      src/main/java/com/chuanghai/smartschool/tuitionpayment/listener/aliexcel/MyPayableInfoImportListener.java
  10. 6 9
      src/main/java/com/chuanghai/smartschool/tuitionpayment/listener/aliexcel/MyPayableInfoWaterImportListener.java
  11. 7 9
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/FeedbackMsgServiceImpl.java
  12. 174 72
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayOrderServiceImpl.java
  13. 4 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/to/PayOrderQueryTO.java
  14. 3 15
      src/main/java/com/chuanghai/smartschool/tuitionpayment/utils/OutputTxt.java
  15. 8 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/PayOrderListVO.java
  16. 9 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/PayOrderReceiveVO.java
  17. 4 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/PayableInfoWaterListVO.java
  18. 15 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/StudentNameTeleVO.java
  19. 3 0
      src/main/resources/mapper/tuitionpayment/PayOrderDao.xml

+ 3 - 1
src/main/java/com/chuanghai/smartschool/tuitionpayment/common/exception/BizCodeEnume.java

@@ -44,7 +44,9 @@ public enum BizCodeEnume {
     PAY_ITEM_NOT_SUPPORT(10024,"该缴费项目不支持导出TXT"),
     IS_PAY(10025,"该缴费宿舍已缴费"),
     TOO_LONG(10026,"内容超长"),
-    ERROR_DE(10027,"AES加密失败");
+    ERROR_DE(10027,"AES加密失败"),
+    DORM_EXIST(10028,"宿舍已缴费"),
+    ORDER_IS_PAY(10029,"该订单的部分项目已支付,请前往首页重新支付");
 
     private int code;
     private String msg;

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

@@ -3,11 +3,11 @@ package com.chuanghai.smartschool.tuitionpayment.controller;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.CommonResult;
 import com.chuanghai.smartschool.tuitionpayment.entity.Bank;
-import com.chuanghai.smartschool.tuitionpayment.entity.BankDetail;
 import com.chuanghai.smartschool.tuitionpayment.service.BankService;
 import com.chuanghai.smartschool.tuitionpayment.vo.BankVO.BankAppKeyVO;
 import com.chuanghai.smartschool.tuitionpayment.vo.BankVO.BankStoreVO;
 import com.chuanghai.smartschool.tuitionpayment.vo.BankVO.BankVO;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -37,7 +37,6 @@ public class BankController {
     public CommonResult<List<BankStoreVO>> queryBankStore() {
 
         List<BankStoreVO> bankStoreVOList = new ArrayList<>();
-        QueryWrapper<BankDetail> wrapper = new QueryWrapper<>();
         List<Bank> banks = bankService.list();
         //去除重复的银行
         List<Bank> arrays = banks.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()
@@ -92,4 +91,23 @@ public class BankController {
         return CommonResult.ok().setResult(bankAppKeyVO);
     }
 
+    /**
+     * 查询银行名称
+     *
+     * @return
+     */
+    @GetMapping("queryBankName")
+    public CommonResult<T> queryBankName() {
+        ArrayList<String> listbank = new ArrayList<>();
+        QueryWrapper<Bank> wrapper = new QueryWrapper<>();
+        wrapper.eq("bank_type", "1");
+        List<Bank> list = bankService.list(wrapper);
+        if (list.size() > 0) {
+            for(int m = 0; m< list.size(); m++) {
+                listbank.add(list.get(m).getBankName()+" ("+list.get(m).getBankCardNumber()+")");
+            }
+        }
+        List uniqueStr = listbank.stream().distinct().collect(Collectors.toList());
+        return CommonResult.ok().setResult(uniqueStr);
+    }
 }

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

@@ -62,6 +62,7 @@ public class PayOrderController {
 
         PayOrderReceiveVO payOrderReceiveVO = JSONObject.toJavaObject(jsonObject, PayOrderReceiveVO.class);
 
+
         List<CreateOrderResultVO> resultVOList = payOrderService.createOrder(cardNumber, payOrderReceiveVO);
 
         return CommonResult.ok().setResult(resultVOList);
@@ -146,10 +147,13 @@ public class PayOrderController {
         String amountCount = payOrderService.queryPayOrderAmount(queryTO);
 
         PayOrderListVO payOrderListVO = new PayOrderListVO();
-        payOrderListVO.setTotal(new BigDecimal(amountCount.split("-")[0]).setScale(2, RoundingMode.HALF_UP));
+        BigDecimal total = new BigDecimal(amountCount.split("-")[0]).setScale(2, RoundingMode.HALF_UP);
+        BigDecimal payOrderLoan = new BigDecimal(amountCount.split("-")[2]).setScale(2, RoundingMode.HALF_UP);
+        payOrderListVO.setTotal(total);
         payOrderListVO.setPage(page);
         payOrderListVO.setRecordsNum(Integer.parseInt(amountCount.split("-")[1]));
-
+        payOrderListVO.setPayOrderLoan(payOrderLoan);
+        payOrderListVO.setOrderAllAmount(total.add(payOrderLoan));
         return CommonResult.ok().setResult(payOrderListVO);
     }
 
@@ -419,7 +423,7 @@ public class PayOrderController {
         List<OrderQueryVO> orderQueryVOList = new ArrayList<>();
         QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
         wrapper.eq(StringUtils.hasText(status), "status", status)
-                .eq(StringUtils.hasText(cardNumber), "pay_for_identify", cardNumber);
+                .eq(StringUtils.hasText(cardNumber), "payer_identify", cardNumber);
         List<PayOrderEntity> orderList = payOrderService.list(wrapper);
         orderList.forEach(order -> {
             OrderQueryVO orderQueryVO = new OrderQueryVO();
@@ -450,7 +454,7 @@ public class PayOrderController {
         List<YearVo> yearList = new ArrayList<>();
         wrapper.eq(StringUtils.hasText(itemName), "pay_item", itemName)
                 .eq("status", status)
-                .eq(StringUtils.hasText(cardNumber), "pay_for_identify", cardNumber);
+                .eq(StringUtils.hasText(cardNumber), "payer_identify", cardNumber);
         List<PayOrderEntity> orderList = payOrderService.list(wrapper);
         orderList.forEach(order -> {
             YearVo yearVo = new YearVo();
@@ -463,6 +467,29 @@ public class PayOrderController {
 
         return uniqueStr;
     }
+
+
+    /**
+     * 通过缴费项目及缴费状态查询缴费年度信息
+     * @param itemName
+     * @param status
+     * @return
+     */
+    @GetMapping("queryOrderYearByItem")
+    public CommonResult<List<String>> queryYearByItem(String itemName, String status){
+        List<String> yearList = new ArrayList<>();
+        QueryWrapper<PayOrderEntity> orderWapper = new QueryWrapper<>();
+        orderWapper.eq("pay_item", itemName)
+                .eq("status", status);
+        List<PayOrderEntity> orderList = payOrderService.list(orderWapper);
+        if (orderList.size() > 0) {
+            orderList.forEach(order->{
+                yearList.add(order.getPayYear());
+            });
+        }
+        List uniqueStr = yearList.stream().distinct().collect(Collectors.toList());
+        return CommonResult.ok().setResult(uniqueStr);
+    }
 }
 
 

+ 122 - 137
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayableInfoController.java

@@ -2,8 +2,6 @@ package com.chuanghai.smartschool.tuitionpayment.controller;
 
 
 import com.alibaba.excel.EasyExcel;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.chuanghai.smartschool.tuitionpayment.anno.AdminLoginCheck;
 import com.chuanghai.smartschool.tuitionpayment.common.exception.BizCodeEnume;
@@ -22,15 +20,8 @@ import com.chuanghai.smartschool.tuitionpayment.vo.PayItemInfoDetailVO.ItemInfoD
 import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpEntity;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.MediaType;
-import org.springframework.http.ResponseEntity;
-import org.springframework.util.LinkedMultiValueMap;
-import org.springframework.util.MultiValueMap;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
@@ -137,6 +128,7 @@ public class PayableInfoController {
                     payableInfoWaterListVO.setPayerIdentify(payableInfoWaterListVO.getStudentNo());
                     payableInfoWaterListVO.setPayForIdentify(payableInfoWaterListVO.getCardNumber());
                     payableInfoWaterListVO.setPayYear(payableInfoWaterListVO.getYears());
+                    payableInfoWaterListVO.setShow(Boolean.TRUE);
                 });
                 //判断是否传入分页信息
                 if (currPage != null && pageSize != null && payableInfoWaterListVOs.size() > 0) {
@@ -339,42 +331,42 @@ public class PayableInfoController {
     }
 
 
-    /**
-     * 通过身份证调用活动管理平台数据库换取 微笑的cardNumber信息
-     *
-     * @param idCard
-     * @return
-     */
-    public String getCardNumberByIdCard(String idCard, String inputType, String inputStr, String outPutType, String grade) {
-        // 2020级以前学生的cardNumber不为身份证号,需要其他平台查询其card Number信息
-        if (Integer.parseInt(grade) < 2021) {
-            //表示输入的参数为身份证
-            inputType = inputType == null ? "1" : inputType;
-            //输入的参数
-            inputStr = idCard;
-            // 返回微校的cardNumber
-            outPutType = outPutType == null ? "2" : outPutType;
-
-            String url = "https://chtech.ncjti.edu.cn/lamp/recordApi/consume/getUserInfo";
-            MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
-            map.add("inputType", inputType);
-            map.add("inputStr", inputStr);
-            map.add("outPutType", outPutType);
-
-
-            RestTemplate restTemplate = new RestTemplate();
-            HttpHeaders headers = new HttpHeaders();
-            headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
-
-            HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(map, headers);
-            ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, request, String.class);
-            JSONObject jsonObj = JSON.parseObject(responseEntity.getBody());
-            String cardNumber = jsonObj.get("result").toString();
-            return cardNumber.equals("该用户暂无返回的身份标识") ? idCard : cardNumber;
-        } else {
-            return idCard;
-        }
-    }
+//    /**
+//     * 通过身份证调用活动管理平台数据库换取 微笑的cardNumber信息
+//     *
+//     * @param idCard
+//     * @return
+//     */
+//    public String getCardNumberByIdCard(String idCard, String inputType, String inputStr, String outPutType, String grade) {
+//        // 2020级以前学生的cardNumber不为身份证号,需要其他平台查询其card Number信息
+//        if (Integer.parseInt(grade) < 2021) {
+//            //表示输入的参数为身份证
+//            inputType = inputType == null ? "1" : inputType;
+//            //输入的参数
+//            inputStr = idCard;
+//            // 返回微校的cardNumber
+//            outPutType = outPutType == null ? "2" : outPutType;
+//
+//            String url = "https://chtech.ncjti.edu.cn/lamp/recordApi/consume/getUserInfo";
+//            MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
+//            map.add("inputType", inputType);
+//            map.add("inputStr", inputStr);
+//            map.add("outPutType", outPutType);
+//
+//
+//            RestTemplate restTemplate = new RestTemplate();
+//            HttpHeaders headers = new HttpHeaders();
+//            headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
+//
+//            HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(map, headers);
+//            ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, request, String.class);
+//            JSONObject jsonObj = JSON.parseObject(responseEntity.getBody());
+//            String cardNumber = jsonObj.get("result").toString();
+//            return cardNumber.equals("该用户暂无返回的身份标识") ? idCard : cardNumber;
+//        } else {
+//            return idCard;
+//        }
+//    }
 
 
     /**
@@ -500,6 +492,7 @@ public class PayableInfoController {
             wrapper.eq("id", id)
                     .eq("payment_item", itemName);
             PayableInfoEntity payableInfoEntity = payableInfoService.getOne(wrapper);
+            System.out.println("1267351653671271732------------- "+payableInfoEntity);
             //查找已经缴费的订单详情
             QueryWrapper<PayOrderEntity> orderWapper = new QueryWrapper<>();
             orderWapper.eq("payinfo_id", payableInfoEntity.getId())
@@ -546,12 +539,14 @@ public class PayableInfoController {
 
             String notPayDetail = "";
             if (StringUtils.hasText(payableInfoEntity.getNotMustMoney())) {
-
+                System.out.println("1");
                 notPayDetail = payableInfoEntity.getMustMoney() + "/" + payableInfoEntity.getNotMustMoney();
+//                notPayDetail = payableInfoEntity.getNotPayDetail();
             } else {
+                System.out.println("2");
                 notPayDetail = payableInfoEntity.getMustMoney();
             }
-
+            System.out.println("notPayDetailnotPayDetail"+notPayDetail);
 
             int notPayDetailCount = 0;
             String notPayDetailStr = "";
@@ -563,24 +558,24 @@ public class PayableInfoController {
 
             String[] orderPayDetailArray = orderPayDetail.split("/");
             String[] realPayDetailArray = realPayDetail1.split("/");
-            //  System.out.println(realPayDetail1);
-            //  System.out.println(orderPayDetail);
+              System.out.println(realPayDetail1);
+              System.out.println(orderPayDetail);
             listReal = new ArrayList<>(Arrays.asList(realPayDetailArray));
             listBOrder = new ArrayList<>(Arrays.asList(orderPayDetailArray));
-
-//            listReal.forEach(s -> {
-//                System.out.println(s);
-//            });
-//            System.out.println("------------------------------------------");
-//            listBOrder.forEach(s -> {
-//                System.out.println(s);
-//            });
-//            System.out.println("------------------------------------------");
+            System.out.println("--------------------------");
+            listReal.forEach(s -> {
+                System.out.println(s);
+            });
+            System.out.println("------------------------------------------");
+            listBOrder.forEach(s -> {
+                System.out.println(s);
+            });
+            System.out.println("------------------------------------------");
             //从realPayDetail1中删除已经缴费的明细,剩下代缴明细
             listReal.removeAll(listBOrder);
-//            listReal.forEach(s -> {
-//                System.out.println(s);
-//            });
+            listReal.forEach(s -> {
+                System.out.println(s);
+            });
             String newRealPayDetail = "";
             if (listReal.size() == 1) {
                 payInfoDetailVO.setRealPayDetail(listReal.get(0));
@@ -609,6 +604,10 @@ public class PayableInfoController {
 
             listNot = new ArrayList<>(Arrays.asList(notPayDetailArray));
             listNot.removeAll(listReal);
+            System.out.println("-----------------------------------");
+            listNot.forEach(a->{
+                System.out.println(a);
+            });
 
             if (listNot.size() == 1) {
                 payInfoDetailVO.setNotPayDetail(listNot.get(0));
@@ -629,10 +628,19 @@ public class PayableInfoController {
             payInfoDetailVO.setPayDetailAmount(realMount);
             //订单总金额
             payInfoDetailVO.setRealPayAmount(payableInfoEntity.getRealPayAmount().setScale(2, RoundingMode.HALF_UP));
+            BigDecimal notPayDetailAmount = BigDecimal.ZERO;
+//            if (payInfoDetailVO.getNotPayDetail() !=null && !(payInfoDetailVO.getNotPayDetail().equals(""))) {
+//                String[] split = payInfoDetailVO.getNotPayDetail().split("/");
+//                for (int m = 0; m < split.length; m++) {
+//                    BigDecimal bigDecimal = new BigDecimal(split[m].split(":")[1]);
+//                    notPayDetailAmount = notPayDetailAmount.add(bigDecimal);
+//                }
+//            }
             // 未支付明细金额
             payInfoDetailVO.setNotPayDetailAmount((payableInfoEntity.getRealPayAmount().subtract(realMount)).setScale(2, RoundingMode.HALF_UP));
 
         }
+        System.out.println("0000000-1-1-1-1-1 "+ payInfoDetailVO);
 
         return CommonResult.ok().setResult(payInfoDetailVO);
     }
@@ -647,44 +655,18 @@ public class PayableInfoController {
      */
     @GetMapping("/queryStudentInfo")
     public CommonResult<PayableInfoStudentResultVO> queryStudentInfo(String cardNumber, String name) {
-//        PayableInfoStudentResultVO payableInfoStudentResultVO = new PayableInfoStudentResultVO();
-//        QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
-//        QueryWrapper<PayableInfoWaterEntity> wrapper1 = new QueryWrapper<>();
-//        wrapper.eq("card_number", cardNumber)
-//                .eq("student_name", name);
-//        wrapper1.eq("card_number", cardNumber)
-//                .eq("student_name", name);
-//        List<PayableInfoWaterEntity> waterList = payableInfoWaterService.list(wrapper1);
-//        if (waterList.size() > 0) {
-//            waterList.forEach(water -> {
-//                if (water.getCollegeName() != null || water.getClassName() != null) {
-//                    payableInfoStudentResultVO.setMajor(water.getCollegeName() + water.getClassName());
-//                }
-//            });
-//        }
-//
-//        List<PayableInfoEntity> infoList = payableInfoService.list(wrapper);
-//        if (infoList.size() > 0) {
-//            infoList.forEach(info -> {
-//
-//                if (info.getCollegeName() != null || info.getClassName() != null) {
-//                    payableInfoStudentResultVO.setMajor(info.getCollegeName() + info.getClassName());
-//                }
-//            });
-//        }
-//
-//        QueryWrapper<SchoolUser> schoolUserWapper = new QueryWrapper<>();
-//        schoolUserWapper.eq("card_number", cardNumber);
-//        SchoolUser one = schoolUserService.getOne(schoolUserWapper);
-//        if (one != null) {
-//            payableInfoStudentResultVO.setIdCard(one.getIdCard());
-//            payableInfoStudentResultVO.setStudentName(one.getName());
-//        }
 
         PayableInfoStudentResultVO payableInfoStudentResultVO = new PayableInfoStudentResultVO();
-        String idCard = wechatController.getIdCard(cardNumber);
-        payableInfoStudentResultVO.setStudentName(name);
-        payableInfoStudentResultVO.setIdCard(idCard);
+        String idCardName = wechatController.getIdCard(cardNumber);
+        if (idCardName.startsWith("-") || idCardName.endsWith("-")) {
+            throw new RRException(BizCodeEnume.DATA_IS_NOT_EXIST,"用户信息不存在,请点击刷新重新授权");
+        }
+        String[] split = idCardName.split("-");
+        payableInfoStudentResultVO.setStudentName(split[1]);
+        payableInfoStudentResultVO.setIdCard(split[0]);
+        if (!payableInfoStudentResultVO.getStudentName().equals(name)) {
+            throw new RRException(BizCodeEnume.DATA_IS_NOT_EXIST,"姓名与身份证不匹配");
+        }
         return CommonResult.ok().setResult(payableInfoStudentResultVO);
 
     }
@@ -939,47 +921,50 @@ public class PayableInfoController {
     @GetMapping("getUserInfo")
     public CommonResult<StudentInfoVO> getUserInfo(@RequestParam("studentName") String studentName, @RequestParam("idCard") String idCard) {
         StudentInfoVO studentInfoVO = new StudentInfoVO();
-//        QueryWrapper<SchoolUser> wrapper = new QueryWrapper<>();
-//
-//        wrapper.eq("id_card", idCard)
-//                .eq("name", studentName);
-//        List<SchoolUser> list = schoolUserService.list(wrapper);
-//        list.forEach(s->{
-//            System.out.println(s);
-//        });
-//        if (list.size() > 0) {
-//            SchoolUser schoolUser = list.get(0);
-//            studentInfoVO.setCardNumber(schoolUser.getCardNumber());
-//            studentInfoVO.setStudentName(schoolUser.getName());
-//
-//        }
+        String userCardNumberName = wechatController.getUserCardNumber(studentName, idCard);
+        if (userCardNumberName.endsWith("-") ||userCardNumberName.startsWith("-")) {
+            throw new RRException(BizCodeEnume.DATA_IS_NOT_EXIST,"用户信息不存在,请核对身份信息");
+        }
+        String[] split = userCardNumberName.split("-");
+        studentInfoVO.setCardNumber(split[0]);
+        studentInfoVO.setStudentName(split[1]);
+        if (!studentInfoVO.getStudentName().equals(studentName)) {
+            throw new RRException(BizCodeEnume.DATA_IS_NOT_EXIST,"姓名与身份证不匹配");
+        }
 
-        String userCardNumber = wechatController.getUserCardNumber(studentName, idCard);
-        studentInfoVO.setCardNumber(userCardNumber);
-        studentInfoVO.setStudentName(studentName);
-//        String idCard = wechatController.getIdCard(cardNumber);
-//        payableInfoStudentResultVO.setStudentName(name);
-//        payableInfoStudentResultVO.setIdCard(idCard);
-//
-//        QueryWrapper<PayableInfoEntity> info = new QueryWrapper<>();
-//        QueryWrapper<PayableInfoWaterEntity> water = new QueryWrapper<>();
-//        info.eq("student_name", studentName)
-//                .eq("student_no", idCard)
-//                .last("limit 1");
-//        water.eq("student_name", studentName)
-//                .eq("student_no", idCard)
-//                .last("limit 1");
-//        PayableInfoEntity infoOne = payableInfoService.getOne(info);
-//        PayableInfoWaterEntity waterOne = payableInfoWaterService.getOne(water);
-//        if (waterOne != null) {
-//            studentInfoVO.setCardNumber(waterOne.getCardNumber());
-//            studentInfoVO.setStudentName(waterOne.getStudentName());
-//        }
-//
-//        if (infoOne != null) {
-//            studentInfoVO.setCardNumber(infoOne.getCardNumber());
-//            studentInfoVO.setStudentName(infoOne.getStudentName());
-//        }
         return CommonResult.ok().setResult(studentInfoVO);
     }
+
+
+    /**
+     * 通过缴费项目查询缴费年度信息
+     * @param itemName
+     * @return
+     */
+    @GetMapping("queryInfoYearByItem")
+    public CommonResult<List<String>> queryYearByItem(String itemName){
+        List<String> yearList = new ArrayList<>();
+        if (itemName.equals("水费缴纳")) {
+            QueryWrapper<PayableInfoWaterEntity> infoWapper = new QueryWrapper<>();
+            infoWapper.eq("payment_item", itemName);
+            List<PayableInfoWaterEntity> orderList = payableInfoWaterService.list(infoWapper);
+            if (orderList.size() > 0) {
+                orderList.forEach(order->{
+                    yearList.add(order.getPayMonth());
+                });
+            }
+        }else {
+            QueryWrapper<PayableInfoEntity> infoWapper = new QueryWrapper<>();
+            infoWapper.eq("payment_item", itemName);
+            List<PayableInfoEntity> orderList = payableInfoService.list(infoWapper);
+            if (orderList.size() > 0) {
+                orderList.forEach(order->{
+                    yearList.add(order.getYears());
+                });
+            }
+        }
+
+        List uniqueStr = yearList.stream().distinct().collect(Collectors.toList());
+        return CommonResult.ok().setResult(uniqueStr);
+    }
 }

+ 25 - 18
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayableInfoWaterController.java

@@ -103,7 +103,7 @@ public class PayableInfoWaterController {
             payableInfoWaterEntity.setPayItemType("1");
             payableInfoWaterEntity.setPayNoticeType("1");
 
-          //  payableInfoWaterEntity.setPayableAccount(payableInfoService.queryPayItemByName(payableInfoWaterEntity.getPaymentItem()));
+            //  payableInfoWaterEntity.setPayableAccount(payableInfoService.queryPayItemByName(payableInfoWaterEntity.getPaymentItem()));
             objectList.add(payableInfoWaterEntity);
         });
         payableInfoWaterService.updateBatchById(objectList);
@@ -131,32 +131,39 @@ public class PayableInfoWaterController {
      * @param dorm
      */
     @GetMapping("updateDormById")
-    public CommonResult<T> updateDormById(@RequestParam("id") String id, @RequestParam("dorm") String dorm) {
+    public CommonResult<T> updateDormById(@RequestParam("id") String id, @RequestParam("dorm") String dorm,
+                                          @RequestParam("payMonth") String payMonth) {
+
         PayableInfoWaterEntity waterEntity = new PayableInfoWaterEntity();
         Long ID = Long.parseLong(id);
+        waterEntity.setId(ID);
         waterEntity.setDorm(dorm);
         if (!dorm.contains("栋")) {
             throw new RRException(BizCodeEnume.VAILD_EXCEPTION, "宿舍信息填写异常");
         }
-        waterEntity.setId(ID);
+
         QueryWrapper<PayableInfoWaterEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq("dorm",dorm)
-                .last("limit 1");
-        PayableInfoWaterEntity water = payableInfoWaterService.getOne(wrapper);
-        if (water == null) {
-            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "该宿舍不存在缴费信息");
-        }
-        if (water.getPayItemType().equals("2")) {
-            payableInfoWaterService.removeById(waterEntity.getId());
-            return CommonResult.ok().setResult("该宿舍已经缴费,请与寝室长核对缴费信息");
-        }else {
-            waterEntity.setPayAmountDetail(water.getPayAmountDetail());
-            waterEntity.setOrderNotice(water.getOrderNotice());
-            waterEntity.setRealPayAmount(water.getRealPayAmount());
-            waterEntity.setPayMonth(water.getPayMonth());
-            payableInfoWaterService.updateById(waterEntity);
+        wrapper.eq("dorm", dorm)
+                .eq("pay_month", payMonth)
+                .orderByDesc("pay_item_type");
+        List<PayableInfoWaterEntity> listWater = payableInfoWaterService.list(wrapper);
+        if (listWater.size() > 0) {
+            if (listWater.get(0).getPayItemType().equals("2")) {
+                payableInfoWaterService.removeById(waterEntity.getId());
+                return CommonResult.ok().setResult("该宿舍已经缴费,请与寝室长核对缴费信息");
+            } else {
+                waterEntity.setPayAmountDetail(listWater.get(0).getPayAmountDetail());
+                waterEntity.setOrderNotice(listWater.get(0).getOrderNotice());
+                waterEntity.setRealPayAmount(listWater.get(0).getRealPayAmount());
+                waterEntity.setPayMonth(listWater.get(0).getPayMonth());
+                payableInfoWaterService.updateById(waterEntity);
+            }
+
+        } else {
+            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "该宿舍不存在"+payMonth+"缴费信息");
         }
 
+
         return CommonResult.ok().setResult(Boolean.TRUE);
     }
 }

+ 78 - 22
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/WechatController.java

@@ -12,6 +12,7 @@ import com.chuanghai.smartschool.tuitionpayment.config.WeixiaoConfig;
 import com.chuanghai.smartschool.tuitionpayment.entity.*;
 import com.chuanghai.smartschool.tuitionpayment.service.*;
 import com.chuanghai.smartschool.tuitionpayment.vo.PayableInfoStudentResultVO;
+import com.chuanghai.smartschool.tuitionpayment.vo.StudentNameTeleVO;
 import com.chuanghai.smartschool.tuitionpayment.vo.WeixiaoVO;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.JsonNode;
@@ -279,7 +280,7 @@ public class WechatController {
                     if (jsonMap.get("card_number") != null) {
                         schoolUser.setCardNumber(jsonMap.get("card_number").toString());
                         String card_number = jsonMap.get("card_number").toString();
-                        if (!card_number.startsWith("VIS") && !card_number.startsWith("REG") && !card_number.startsWith("p")) {
+                        if (!card_number.startsWith("V") && !card_number.startsWith("R") && !card_number.startsWith("p")) {
                             if (card_number.length() > 5 && card_number.length() < 18) {
                                 if (card_number.length() != 11) {
                                     schoolUser.setStudentNo(card_number);
@@ -313,7 +314,7 @@ public class WechatController {
             });
         }
         //批量添加数据
-        if (schoolUserList.size() > 0){
+        if (schoolUserList.size() > 0) {
             schoolUserService.saveOrUpdateBatch(schoolUserList);
         }
         if (userPage <= totalPage) {
@@ -329,15 +330,16 @@ public class WechatController {
 
     /**
      * 重置微校的计数页码
+     *
      * @param page
      * @return
      */
     @GetMapping("resetUserPage")
     @ResponseBody
-    public String resetUserPage(String page){
+    public String resetUserPage(String page) {
         Integer thisUserOage = userPage;
         userPage = Integer.parseInt(page);
-        return "修改前页码计数器 --"+thisUserOage+"  修改后页码计数器---"+userPage;
+        return "修改前页码计数器 --" + thisUserOage + "  修改后页码计数器---" + userPage;
     }
 
     /**
@@ -362,7 +364,7 @@ public class WechatController {
 
 
     /**
-         * 通过card_number查询身份证
+     * 通过card_number查询身份证
      *
      * @param cardNumber
      * @return
@@ -381,22 +383,25 @@ public class WechatController {
         JSONObject jsonObj = JSON.parseObject(userInfoResponse.getBody());
         JSONArray userlist = jsonObj.getJSONArray("userlist");
         String id_card = "";
-            try {
-                Map<String, Object> userInfoMap = mapper.readValue(userlist.get(0).toString(), new TypeReference<Map<String, Object>>() {
-                });
-
-                if (userInfoMap.get("id_card") != null) {
-                    id_card = userInfoMap.get("id_card").toString();
-                }
+        String name = "";
+        try {
+            Map<String, Object> userInfoMap = mapper.readValue(userlist.get(0).toString(), new TypeReference<Map<String, Object>>() {
+            });
 
-            } catch (Exception e) {
-                e.printStackTrace();
+            if (userInfoMap.get("id_card") != null) {
+                id_card = userInfoMap.get("id_card").toString();
+            }
+            if (userInfoMap.get("name") != null) {
+                name = userInfoMap.get("name").toString();
             }
 
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
 
-        return id_card;
-    }
 
+        return id_card + "-" + name;
+    }
 
 
     /**
@@ -419,33 +424,84 @@ public class WechatController {
         ResponseEntity<String> userInfoResponse = client.postForEntity(userInfoUrl, userInfoParam, String.class);
         JSONObject jsonObj = JSON.parseObject(userInfoResponse.getBody());
         JSONArray userlist = jsonObj.getJSONArray("userlist");
-        String id_card = "";
+        String name = "";
         String card_numbner = "";
         if (userlist.size() > 0) {
             for (int m = 0; m < userlist.size(); m++) {
-                System.out.println(userlist.get(m));
                 try {
                     Map<String, Object> userInfoMap = mapper.readValue(userlist.get(m).toString(), new TypeReference<Map<String, Object>>() {
                     });
                     //匹配传递的参数,匹配成功则返回相应的card_number
                     if (userInfoMap.get("id_card") != null) {
                         if (userInfoMap.get("id_card").toString().equals(idCard)) {
-                            if (userInfoMap.get("card_number") != null){
+                            if (userInfoMap.get("card_number") != null) {
                                 card_numbner = userInfoMap.get("card_number").toString();
                             }
                         }
                     }
+                    if (userInfoMap.get("name") != null) {
+                        name = userInfoMap.get("name").toString();
+                    }
 
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
             }
         }
-        return card_numbner;
+        return card_numbner + "-" + name;
     }
 
 
+    /**
+     * 通过学生姓名 身份证查找用户的cardNumber
+     *
+     * @param cardNumber
+     * @return
+     */
+    @GetMapping("getUserNameTele")
+    @ResponseBody
+    public CommonResult<StudentNameTeleVO> getUserNameTele(String cardNumber) {
 
+        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", cardNumber);
+        ResponseEntity<String> userInfoResponse = client.postForEntity(userInfoUrl, userInfoParam, String.class);
+        JSONObject jsonObj = JSON.parseObject(userInfoResponse.getBody());
+        JSONArray userlist = jsonObj.getJSONArray("userlist");
+        String name = "";
+        String telephone = "";
+        StudentNameTeleVO studentNameTeleVO = new StudentNameTeleVO();
+        if (userlist.size() > 0) {
+            for (int m = 0; m < userlist.size(); m++) {
+                try {
+                    Map<String, Object> userInfoMap = mapper.readValue(userlist.get(m).toString(), new TypeReference<Map<String, Object>>() {
+                    });
+                    //匹配传递的参数,匹配成功则返回相应的card_number
+                    if (userInfoMap.get("name") != null) {
+                        name = userInfoMap.get("name").toString();
+
+                    }
+                    if (userInfoMap.get("telephone") != null) {
+                        telephone = userInfoMap.get("telephone").toString();
+                        if (telephone.contains("(+86)")) {
+                            telephone = telephone.substring(5);
+                        }
+
+                    }
+
+                    studentNameTeleVO.setName(name);
+                    studentNameTeleVO.setTelephone(telephone);
+
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            }
+        }
+        return CommonResult.ok().setResult(studentNameTeleVO);
+    }
 
 
     public PayableInfoStudentResultVO queryStudent() {
@@ -635,8 +691,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();

+ 2 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/Bank.java

@@ -52,4 +52,6 @@ public class Bank {
      */
     private String toUnit;
 
+
+
 }

+ 24 - 3
src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/PayOrderEntity.java

@@ -5,7 +5,6 @@ import com.alibaba.excel.annotation.ExcelProperty;
 import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.chuanghai.smartschool.tuitionpayment.conver.aliexcel.CustomPayMethodConverter;
 import com.chuanghai.smartschool.tuitionpayment.conver.aliexcel.LocalDateTimeConverter;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import lombok.Data;
@@ -91,8 +90,9 @@ public class PayOrderEntity implements Serializable {
 	 * 支付方式 1建行支付、2农商行支付
 	 * @since 0.1.0
 	 */
-	@ExcelProperty(value = "支付方式", converter= CustomPayMethodConverter.class)
-	@ColumnWidth(15)
+//	@ExcelProperty(value = "支付方式", converter= CustomPayMethodConverter.class)
+//	@ColumnWidth(15)
+	@ExcelIgnore
 	private String payMethod;
 
 	/**
@@ -128,6 +128,19 @@ public class PayOrderEntity implements Serializable {
 	@ExcelProperty("支付银行账户")
 	@ColumnWidth(25)
 	private String payBank;
+	/**
+	 * 支付人姓名
+	 */
+	@ExcelProperty("支付人姓名")
+	@ColumnWidth(15)
+	private String payerName ;
+
+	/**
+	 * 支付人微校号
+	 */
+	@ExcelProperty("支付人微校号")
+	@ColumnWidth(25)
+	private String payerCardNumber ;
 
 	/**
 	 * 缴费年度
@@ -189,5 +202,13 @@ public class PayOrderEntity implements Serializable {
 	@ExcelIgnore
 	private Long payinfoId ;
 
+	/**
+	 * 订单TXT下载标识
+	 */
+	@ExcelIgnore
+	private String txtType ;
+
+
+
 
 }

+ 9 - 12
src/main/java/com/chuanghai/smartschool/tuitionpayment/listener/aliexcel/MyPayableInfoImportListener.java

@@ -46,20 +46,17 @@ public class MyPayableInfoImportListener extends AnalysisEventListener<PayableIn
     }
 
     private void inertData() {
-        if (list.size() > 0) {
-            if (list.get(0).getPaymentItem().equals("水费缴纳")) {
-                throw new RRException(BizCodeEnume.FILE_IMPORT_ERROR,"当前为"+list.get(0).getPaymentItem()+"模板,请使用正确的模板导入数据");
+
+        if (list.size() <= 0) {
+            throw new RRException(BizCodeEnume.FILE_IMPORT_ERROR, "请使用正确的模板导入数据");
+        } else {
+            if (list.get(0).getPaymentItem() == null) {
+                throw new RRException(BizCodeEnume.FILE_IMPORT_ERROR, "请使用正确的模板导入数据");
+            } else if(list.get(0).getPaymentItem().equals("水费缴纳")){
+                throw new RRException(BizCodeEnume.FILE_IMPORT_ERROR, "导入模板错误,当前的模板为" + list.get(0).getPaymentItem() + "请使用正确的模板导入数据");
             }
-            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() + " 缴费信息,请核对完毕之后重新导入");
-//                }
-
-            });
         }
+
         try {
             payableInfoService.saveBatch(list);
         } catch (Exception e) {

+ 6 - 9
src/main/java/com/chuanghai/smartschool/tuitionpayment/listener/aliexcel/MyPayableInfoWaterImportListener.java

@@ -9,7 +9,6 @@ import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoWaterEntity;
 import com.chuanghai.smartschool.tuitionpayment.service.PayableInfoWaterService;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -47,15 +46,13 @@ public class MyPayableInfoWaterImportListener extends AnalysisEventListener<Paya
     }
 
     private void inertData() {
-        if (list.size() > 0) {
-            list.forEach(info -> {
-//                PayableInfoWaterEntity waterEntity = query(info.getPaymentItem(), info.getStudentNo(), info.getPayMonth(), info.getStudentName());
-//                if (waterEntity != null) {
-//                    throw new RRException(BizCodeEnume.DATA_IS_EXIST, "导入失败," + waterEntity.getStudentName() + " "
-//                            + waterEntity.getStudentNo() + " 已存在 " + waterEntity.getPayMonth() + " 时间段的 " + waterEntity.getPaymentItem() + " 缴费信息,请核对完毕之后重新导入");
-//                }
+        if (list.size() <=0) {
+            throw new RRException(BizCodeEnume.FILE_IMPORT_ERROR,"请使用正确的模板导入数据");
+        }else {
+            if (list.get(0).getPaymentItem() == null) {
+                throw new RRException(BizCodeEnume.FILE_IMPORT_ERROR,"请使用正确的模板导入数据");
+            }
 
-            });
         }
         try {
             payableInfoWaterService.saveBatch(list);

+ 7 - 9
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/FeedbackMsgServiceImpl.java

@@ -1,23 +1,20 @@
 package com.chuanghai.smartschool.tuitionpayment.service.impl;
 
 import com.alibaba.excel.EasyExcel;
-import com.chuanghai.smartschool.tuitionpayment.entity.PayOrderEntity;
-import com.chuanghai.smartschool.tuitionpayment.enume.FeedbackMsgStatus;
-import com.chuanghai.smartschool.tuitionpayment.to.FeedbackMsgCreateTO;
-import com.chuanghai.smartschool.tuitionpayment.to.PayOrderQueryTO;
-import com.chuanghai.smartschool.tuitionpayment.vo.FeedbackMsgQueryVO;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.chuanghai.smartschool.tuitionpayment.common.utils.PageUtils;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.MyQuery;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.PageParam;
-
+import com.chuanghai.smartschool.tuitionpayment.common.utils.PageUtils;
 import com.chuanghai.smartschool.tuitionpayment.dao.FeedbackMsgDao;
 import com.chuanghai.smartschool.tuitionpayment.entity.FeedbackMsgEntity;
+import com.chuanghai.smartschool.tuitionpayment.enume.FeedbackMsgStatus;
 import com.chuanghai.smartschool.tuitionpayment.service.FeedbackMsgService;
+import com.chuanghai.smartschool.tuitionpayment.to.FeedbackMsgCreateTO;
+import com.chuanghai.smartschool.tuitionpayment.vo.FeedbackMsgQueryVO;
+import org.springframework.beans.BeanUtils;
+import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
 import javax.servlet.http.HttpServletResponse;
@@ -46,6 +43,7 @@ public class FeedbackMsgServiceImpl extends ServiceImpl<FeedbackMsgDao, Feedback
             wrapper.eq("statu",feedbackMsgQueryVO.getStatus());
         }
         wrapper.apply(StringUtils.hasText(feedbackMsgQueryVO.getCreateTime()), "date_format(publish_time, '%Y-%m-%d') = {0}", feedbackMsgQueryVO.getCreateTime());
+        wrapper.orderByAsc("statu").orderByDesc("publish_time").orderByDesc("handle_time");
 
         PageParam pageParam = new PageParam();
         if (feedbackMsgQueryVO.getPageParam()!= null){

+ 174 - 72
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayOrderServiceImpl.java

@@ -38,7 +38,6 @@ import java.io.IOException;
 import java.math.BigDecimal;
 import java.net.URLEncoder;
 import java.time.LocalDateTime;
-import java.time.LocalTime;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -68,7 +67,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
     private PayItemDetailController payItemDetailController;
     @Autowired
     private PayableInfoController payableInfoController;
-//    @Autowired
+    //    @Autowired
 //    private PayDetailBankController payDetailBankController;
     @Autowired
     private BankDetailController bankDetailController;
@@ -85,6 +84,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                 wrapper.eq("status", "1");
             }
         }
+        wrapper.eq(StringUtils.hasText(queryTO.getBankName()), "pay_bank", queryTO.getBankName());
 
 
         commonWrapper(wrapper, queryTO);
@@ -191,7 +191,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
         wrapper.eq("pay_item", itemName);
         wrapper.eq(StringUtils.hasText(payYears), "pay_year", payYears);
         wrapper.eq("dorm", dorm);
-        wrapper.eq("status", PayStatus.ALREADY_PAY.getCode());
+        wrapper.eq("status", "2");
 
         List<PayOrderEntity> payList = this.list(wrapper);
 
@@ -393,8 +393,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
             OrderReceiveTO orderReceiveTO = orderReceiveTOS.get(m);
             String cardNumber1 = orderReceiveTO.getCardNumber();
             PayOrderReceiveVO payOrderReceiveVO1 = orderReceiveTO.getPayOrderReceiveVO();
-         //   System.out.println("00000000000000000000000000000000");
-        //    System.out.println(payOrderReceiveVO1 );
+            //  System.out.println(payOrderReceiveVO1+"   00111------1-1-1-1-1-1--100");
             String studentNo = payOrderReceiveVO1.getStudentNo();
             String dorm = payOrderReceiveVO1.getDorm();
             if (dorm == null || dorm.equals("")) {
@@ -416,11 +415,27 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                 // 判断水费是否缴纳
                 boolean alreadyPay = isAlreadyPayWater(dorm, itemName, payYear);
                 if (alreadyPay) {
-                    throw new RRException(BizCodeEnume.DATA_IS_EXIST, "宿舍【" + dorm + "】已缴费,请勿重复缴费");
+                    QueryWrapper<PayableInfoWaterEntity> wrapper = new QueryWrapper<>();
+                    wrapper.eq("dorm", dorm)
+                            .eq("pay_month", payYear)
+                            .eq("payment_item", itemName)
+                            .eq("pay_item_type", "1");
+                    payableInfoWaterService.remove(wrapper);
+                    throw new RRException(BizCodeEnume.DORM_EXIST, "宿舍【" + dorm + " " + payYear + "】已缴费,请勿重复缴费");
+
                 }
             } else {
                 // 判断除水费外其他费用是否缴纳
                 boolean alreadyPay = isAlreadyPay(studentNo, itemName, payYear, payOrderReceiveVO1.getNotPaySize(), payOrderReceiveVO1.getPayMethod(), payDetial);
+                PayableInfoEntity byIdInfo = payableInfoService.getById(payOrderReceiveVO1.getId());
+                //如果在首页已经缴完本订单的全部项目,则将本订单删除,跳转到首页
+                if (byIdInfo != null && (byIdInfo.getNotPayDetail().equals("") || byIdInfo.getNotPayDetail() == null)) {
+                    QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
+                    wrapper.eq("payinfo_id", byIdInfo.getId())
+                            .eq("status", "1");
+                    payOrderService.remove(wrapper);
+                    throw new RRException(BizCodeEnume.ORDER_IS_PAY, "该订单已完成缴费,请勿重复缴费");
+                }
                 if (alreadyPay) {
                     throw new RRException(BizCodeEnume.DATA_IS_EXIST, "学号【" + studentNo + "】已缴费,请勿重复缴费");
                 }
@@ -433,7 +448,6 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
 
             if (itemName.equals("水费缴纳")) {
                 payableInfoWater = payableInfoWaterService.getByStudentNo(studentNo, itemName, payYear);
-                System.out.println(payableInfoWater);
                 // 获取学生入学年份
                 grade = payableInfoWater.getGrade();
             } else {
@@ -487,14 +501,12 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
 
             // 订单已经存在超过30分钟没有支付,直接删除该订单  农商订单直接删掉
             if (payOrderEntity != null && PayStatus.NON_PAY.getCode().equals(payOrderEntity.getStatus())) {
-//                if (Math.abs(ChronoUnit.MINUTES.between(LocalDateTime.now(), payOrderEntity.getCreateTime())) > 30
-//                        || !payOrderEntity.getPayMethod().equals("") ) {
+
                 if (!(payOrderEntity.getPayMethod().equals(""))) {
                     // 再次查询订单状态
                     OrderStatusVO orderStatusVO = queryOrderStatus(payOrderEntity);
 
                     if (PayStatus.NON_PAY.getCode().equals(orderStatusVO.getStatus())) {
-                        System.out.println((payOrderEntity + "需要二次删除的农商订单"));
                         this.removeById(payOrderEntity.getId());
                         payOrderEntity = null;
                     }
@@ -512,7 +524,9 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                     payOrderEntity.setIsParent(Boolean.TRUE);
                     // payInfoDetailVO =  payableInfoController.queryPayDetail(id, itemName, payOrderReceiveVO.getPayDetail());
                 }
+                System.out.println("000000" + payOrderReceiveVO1.getPayDetail());
                 payInfoDetailVO = (PayInfoDetailVO) payableInfoController.queryPayInfoDetail(id, itemName, payOrderReceiveVO1.getPayDetail()).getData();
+                System.out.println("00000000000000000000" + payInfoDetailVO);
                 payOrderEntity.setNotPayDetail(payInfoDetailVO.getNotPayDetail());
 
                 payOrderEntity.setOrderNo(generateOrderNo());
@@ -543,6 +557,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                 }
                 payOrderEntity.setPayBank(bankCard);
                 payOrderEntity.setPayOrderLoan(orderLoan);
+                //   System.out.println(payOrderEntity.getPayOrderLoan()+"       贷款---------------------------------------");
 
 
                 // 支付金额、被支付用户信息
@@ -557,6 +572,8 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                     payOrderEntity.setSerialNumber(payableInfoWater.getSerialNumber());
                     payOrderEntity.setNowPayAmount(payableInfoWater.getRealPayAmount());
                 } else {
+
+
                     payOrderEntity.setRealPayAmount(payableInfo.getRealPayAmount());
                     // payOrderEntity.setNowPayAmount(payInfoDetailVO.getPayDetailAmount());
                     payOrderEntity.setPayinfoId(payableInfo.getId());
@@ -573,42 +590,57 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                     wrapper1.eq("payer_identify", cardNumber1);
                     wrapper1.eq("pay_for_identify", studentNo);
                     wrapper1.eq("pay_item", itemName);
-                   // wrapper1.eq("is_parent", "1");
+                    // wrapper1.eq("is_parent", "1");
                     wrapper1.eq(StringUtils.hasText(payYear), "pay_year", payYear);
                     wrapper1.eq("status", "2");
                     List<PayOrderEntity> payOrderList = this.list(wrapper1);
-                   // System.out.println(payOrderList.size()+"    sajsa    size");
+                    System.out.println(payOrderList.size() + "    sajsa    size");
                     for (int i = 0; i < payOrderList.size(); i++) {
-
                         parentOrderLone = parentOrderLone.add(payOrderList.get(i).getPayOrderLoan()).setScale(2, BigDecimal.ROUND_HALF_UP);
                         parentNowPayDetailAmount = parentNowPayDetailAmount.add(payOrderList.get(i).getNowPayAmount()).setScale(2, BigDecimal.ROUND_HALF_UP);
                     }
 
                     BigDecimal notPayDetailAmount = payInfoDetailVO.getNotPayDetailAmount();
-//                    System.out.println(payOrderEntity.getRealPayAmount());
-//                    System.out.println(parentNowPayDetailAmount);
-//                    System.out.println(notPayDetailAmount);
-//                    System.out.println(parentOrderLone);
-//                    System.out.println(payableInfo);
+                    System.out.println(payOrderEntity.getRealPayAmount());
+                    System.out.println(parentNowPayDetailAmount);
+                    System.out.println(notPayDetailAmount);
+                    System.out.println(parentOrderLone);
+                    System.out.println(payableInfo);
                     if (itemName.equals("水费缴纳")) {
                         payOrderEntity.setNowPayAmount(payableInfoWater.getRealPayAmount());
-                    }else {
+                    } else {
+                        System.out.println(orderLoan);
+                        if (!(orderLoan.toString().contains("0.0"))) {
+                            parentOrderLone = orderLoan;
+                            //  parentOrderLone = parentOrderLone.add(orderLoan);
+                        }
                         if (payableInfo.getPayDetail() == null || payableInfo.getPayDetail().equals("")) {
-                         //   System.out.println("1111111111111111111");
-                         //   System.out.println(payInfoDetailVO);
+                            System.out.println("1111111111111111111");
+//                            System.out.println(payInfoDetailVO);
+                            //TODO
+
+
+//                            if (!String.valueOf(orderLoan).equals("")) {
+//                                parentOrderLone = orderLoan;
+//                            }
+
+
+//                            System.out.println(payOrderLoan);
                             payOrderEntity.setNowPayAmount(
                                     payOrderEntity.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP)
                                             /// .subtract(parentNowPayDetailAmount).setScale(2, BigDecimal.ROUND_HALF_UP)
                                             .subtract(notPayDetailAmount)
-                                            .subtract(parentOrderLone)
+                                            // .subtract(parentOrderLone)
+                                            .subtract(orderLoan)
                                     //.subtract(payInfoDetailVO.getPayDetailAmount())
                             );
-                         //   System.out.println( payOrderEntity.getNowPayAmount()+"1111111111111111111111111111111");
+                            System.out.println(payOrderEntity.getNowPayAmount() + "1111111111111111111111111111111");
+
+                        } else {
+                            System.out.println("222222222222222222222");
 
-                        }else {
-                          //  System.out.println("222222222222222222222");
-                         //   System.out.println(payInfoDetailVO);
-                            if ( payOrderReceiveVO1.getItemName().equals("学杂费") && !(payOrderReceiveVO1.getPayDetail().contains("/"))) {
+
+                            if (payOrderReceiveVO1.getItemName().equals("学杂费") && !(payOrderReceiveVO1.getPayDetail().contains("/"))) {
                                 payOrderEntity.setNowPayAmount(
                                         payOrderEntity.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP)
                                                 .subtract(parentNowPayDetailAmount).setScale(2, BigDecimal.ROUND_HALF_UP)
@@ -618,31 +650,34 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
 
                                         //.subtract(payInfoDetailVO.getPayDetailAmount())
                                 );
-                             //   System.out.println("+++++++++++++++++++++++++++   "+payInfoDetailVO.getNotPayDetailAmount().subtract(parentNowPayDetailAmount).subtract(parentOrderLone));
-                            }else {
+                                System.out.println("+++++++++++++++++++++++++++   " + payInfoDetailVO.getNotPayDetailAmount().subtract(parentNowPayDetailAmount).subtract(parentOrderLone));
+                            } else {
+                                System.out.println("-----------1-1111111111-1-1-1-1-1-1-1-1-1");
+                                System.out.println(payOrderReceiveVO1.getPayDetail());
                                 payOrderEntity.setNowPayAmount(
                                         payOrderEntity.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP)
                                                 .subtract(parentNowPayDetailAmount).setScale(2, BigDecimal.ROUND_HALF_UP)
-                                                //  .subtract(notPayDetailAmount)
+//                                                  .subtract(notPayDetailAmount)
                                                 .subtract(parentOrderLone)
+                                                .subtract(orderLoan)
+                                                .subtract(payInfoDetailVO.getNotPayDetailAmount().subtract(parentNowPayDetailAmount).subtract(parentOrderLone))
+
                                         //.subtract(payInfoDetailVO.getPayDetailAmount())
                                 );
                             }
-
-                        //    System.out.println( payOrderEntity.getNowPayAmount()+"          222222222222222222222");
-
+                            System.out.println(payOrderEntity.getNowPayAmount() + "          222222222222222222222");
                         }
                     }
 
-                   // System.out.println( payOrderEntity.getNowPayAmount()+"hyuwsegufgwf");
+                    System.out.println(payOrderEntity.getNowPayAmount() + "hyuwsegufgwf");
                 } else {
-                    // payOrderEntity.setNowPayAmount(payInfoDetailVO.getPayDetailAmount().subtract(payOrderEntity.getPayOrderLoan().setScale(2, BigDecimal.ROUND_HALF_UP)));
-                 //   System.out.println("3333333333333333333333333333");
-                  //  System.out.println(payInfoDetailVO);
+                    payOrderEntity.setNowPayAmount(payInfoDetailVO.getPayDetailAmount().subtract(payOrderEntity.getPayOrderLoan().setScale(2, BigDecimal.ROUND_HALF_UP)));
+                    System.out.println("3333333333333333333333333333");
+                    System.out.println(payInfoDetailVO);
                     payOrderEntity.setNowPayAmount(payInfoDetailVO.getPayDetailAmount().setScale(2, BigDecimal.ROUND_HALF_UP).subtract(orderLoan));
-                  //  System.out.println(payOrderEntity.getNowPayAmount()+"           33333333333333333");
+                    System.out.println(payOrderEntity.getNowPayAmount() + "           33333333333333333");
                 }
-                //  System.out.println(payOrderEntity.getNowPayAmount()+"     sjdhfuhsbdf getNowPayAmount");
+                System.out.println(payOrderEntity.getNowPayAmount() + "     sjdhfuhsbdf getNowPayAmount");
                 //校验订单的支付金额是否异常
                 Boolean flag = Boolean.TRUE;
                 //前端实付金额
@@ -652,51 +687,104 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                 if (itemName.equals("水费缴纳")) {
                     flag = payOrderEntity.getNowPayAmount().compareTo(payableInfoWater.getRealPayAmount()) == 0 ? Boolean.TRUE : Boolean.FALSE;
                 } else {
-                    orderLoan = orderLoan.add(parentOrderLone);
+                    //   orderLoan = orderLoan.add(parentOrderLone);
                     BigDecimal nowPayAllMount = BigDecimal.ZERO;
                     if (count > 1) {
-                      //  System.out.println(payInfoDetailVO);
+                        System.out.println(payInfoDetailVO);
                         if (payableInfo.getPayDetail() == null || payableInfo.getPayDetail().equals("")) {
+                            System.out.println("13331313131331");
+                            System.out.println(payInfoDetailVO.getNotPayDetailAmount());
+                            System.out.println(payOrderEntity.getNowPayAmount());
                             nowPayAllMount = nowPayAllMount.add(payInfoDetailVO.getNotPayDetailAmount()).add(payOrderEntity.getNowPayAmount());
 
-                        }else {
-                      //      System.out.println("4444444444444444444444");
-                            nowPayAllMount = nowPayAllMount.add(payInfoDetailVO.getNotPayDetailAmount()).add(payOrderEntity.getNowPayAmount().add(orderLoan));
-
+                        } else {
+                            System.out.println("4444444444444444444444");
+
+//                            nowPayAllMount = nowPayAllMount.add(payInfoDetailVO.getNotPayDetailAmount()).add(payOrderEntity.getNowPayAmount().add(orderLoan));
+                            // nowPayAllMount = nowPayAllMount.add(payInfoDetailVO.getNotPayDetailAmount()).add(payOrderEntity.getNowPayAmount().add(orderLoan));
+                            //nowPayAllMount = nowPayAllMount.add(payInfoDetailVO.getNotPayDetailAmount()).add(payOrderEntity.getNowPayAmount().add(orderLoan));
+
+//                            if (payableInfo.getPayDetail() == null || payableInfo.getPayDetail().equals("")) {
+//                                System.out.println("1");
+//                                nowPayAllMount = nowPayAllMount.add(payInfoDetailVO.getNotPayDetailAmount()).add(payOrderEntity.getNowPayAmount().add(orderLoan));
+//
+//                            }else {
+                            System.out.println("211111111111111111100000");
+                            System.out.println(payInfoDetailVO);
+                            System.out.println(payInfoDetailVO.getNotPayDetailAmount());
+                            System.out.println(payOrderEntity.getNowPayAmount());
+                            System.out.println(parentOrderLone);
+                            nowPayAllMount = nowPayAllMount.add(payInfoDetailVO.getNotPayDetailAmount()).add(payOrderEntity.getNowPayAmount()).add(orderLoan);//.subtract(parentOrderLone)
+
+//                            }
+                            System.out.println(nowPayAllMount);
                         }
-                       // nowPayAllMount = nowPayAllMount.add(payOrderEntity.getNowPayAmount().add(parentNowPayDetailAmount).add(orderLoan));
+                        // nowPayAllMount = nowPayAllMount.add(payOrderEntity.getNowPayAmount().add(parentNowPayDetailAmount).add(orderLoan));
+
+                    } else {
+                        System.out.println("555555555555555555555");
+                        nowPayAllMount = nowPayAllMount.add(payInfoDetailVO.getNotPayDetailAmount()).add(payOrderEntity.getNowPayAmount().add(parentNowPayDetailAmount));
+                    }
+                    System.out.println(orderLoan + "   666666666666666");
+                    // BigDecimal realAmount = (payableInfo.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP)).subtract(orderLoan);
+                    BigDecimal realAmount = BigDecimal.ZERO;
+                    if (payableInfo.getPayDetail() == null || payableInfo.getPayDetail().equals("")) {
+                        realAmount = (payableInfo.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP)).subtract(orderLoan);
+
+                    } else {
+                        if (count > 1) {
+                            System.out.println(count + "    count-----------------------2222222222");
+                            realAmount = (payableInfo.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP));
+                        } else {
+                            System.out.println(count + "    count-----------------------11111111111111111");
+
+                            realAmount = (payableInfo.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP)).subtract(orderLoan);
 
-                    }else {
-                    //    System.out.println("555555555555555555555");
-                        nowPayAllMount = nowPayAllMount.add(payInfoDetailVO.getNotPayDetailAmount()).add(payOrderEntity.getNowPayAmount().add(parentNowPayDetailAmount).add(orderLoan));
+                        }
                     }
 
-                    BigDecimal realAmount = (payableInfo.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP));
+
+                    //BigDecimal realAmount = (payableInfo.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP));
+
+
                     flag = nowPayAllMount.compareTo(realAmount) == 0 ? Boolean.TRUE : Boolean.FALSE;
-                 //   System.out.println(flag + "=====1=====" + nowPayAllMount + "------nowPayAllMount------realAmount------" + realAmount);
+                    System.out.println(flag + "=====1=====" + nowPayAllMount + "------nowPayAllMount------realAmount------" + realAmount);
                 }
 
                 if (Double.parseDouble(String.valueOf(payOrderEntity.getNowPayAmount())) < 0.00) {
                     flag = Boolean.FALSE;
-                  //  System.out.println(flag + "=====2=====" + payOrderEntity.getNowPayAmount());
+                    System.out.println(flag + "=====2=====" + payOrderEntity.getNowPayAmount());
 
                 }
-
+                System.out.println(payableInfo);
                 if (!(realPayAmount.compareTo(payOrderEntity.getNowPayAmount()) == 0)) {
                     flag = Boolean.FALSE;
-                   // System.out.println(flag+"--------------"+realPayAmount + "===realPayAmount==3=====" + payOrderEntity.getNowPayAmount());
+                    System.out.println(flag + "--------------" + realPayAmount + "===realPayAmount==3== payOrderEntity.getNowPayAmount===" + payOrderEntity.getNowPayAmount());
+                }
 
+                //如果在首页已经缴完本订单的部分项目,则将本订单删除,前往首页缴费
+                if (payableInfo != null && payableInfo.getNotPayDetail() != null && payOrderReceiveVO1.getPayDetail() != null) {
+                    String[] splitNotPayDetail = payableInfo.getNotPayDetail().split("/");
+                    String[] splitRealPayDetail = payOrderReceiveVO1.getPayDetail().split("/");
+                    if (splitRealPayDetail.length > splitNotPayDetail.length) {
+                        throw new RRException(BizCodeEnume.ORDER_IS_PAY);
+                    }
                 }
+
+
                 if (!flag) {
-                    throw new RRException(BizCodeEnume.PAY_AMOUNT_ERROR, "支付金额异常。");
+                    throw new RRException(BizCodeEnume.PAY_AMOUNT_ERROR, "支付金额异常");
                 }
+                payOrderEntity.setPayerCardNumber(payOrderReceiveVO1.getPayerCardNumber());
+                payOrderEntity.setPayerName(payOrderReceiveVO1.getPayerName());
                 payOrderEntity.setOrderNotice(orderNotice);
           /*  首次订单支付成功之后如果还有未支付的 状态为 3 无未支付的状态为 2
               当所有未支付的明细完成缴费之后 首单状态变为 2 状态:支付成功且完成所有缴费
 
               检测该订单是否异常,订单异常自动发送 订单异常微校通知
-              wechatController.sendException(itemName);
           */
+                //设置订单下载TXT类型为未下载
+                payOrderEntity.setTxtType("0");
                 this.save(payOrderEntity);
 
 
@@ -852,6 +940,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                 wrapper.eq("status", "1");
             }
         }
+        wrapper.eq(StringUtils.hasText(queryTO.getBankName()), "pay_bank", queryTO.getBankName());
 
         wrapper.orderByDesc("finish_time").orderByDesc("create_time").orderByAsc("pay_for_identify");
         List<PayOrderEntity> parOrder = this.list(wrapper);
@@ -867,7 +956,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                 String[] splitStr = payOrderDetail.split("/");
                 for (int j = 0; j < splitStr.length; j++) {
                     String[] split = splitStr[j].split(":");
-                    outPutStr += payOrderEntity.getPayForIdentify() + "\t" + payOrderEntity.getStudentName() + "\t" +
+                    outPutStr += payOrderEntity.getSerialNumber() + "\t" + payOrderEntity.getStudentName() + "\t" +
                             year + "\t" + split[0] + "\t" + "\"" + split[1] + "\"" + "\t" + "\r";
                 }
             }
@@ -887,17 +976,22 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
         QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
 
         if (type.equals("quarter")) {
-            wrapper.eq("status", "2")
-                    .le("finish_time", LocalDateTime.now())
-                    .ge("finish_time", LocalDateTime.now().plusMinutes(-15L));
-        }else if ( type.equals("today") ){
-
-                wrapper.eq("status", "2")
-                        .le("finish_time", LocalDateTime.of(LocalDateTime.now().toLocalDate(), LocalTime.MAX))
-                        .ge("finish_time", LocalDateTime.of(LocalDateTime.now().toLocalDate(), LocalTime.MIN));
-
-
-
+            wrapper.eq("pay_item", "学杂费");
+            wrapper.eq("status", "2");
+            wrapper.eq("txt_type", "0");
+
+//            QueryWrapper<PayOrderEntity> orderWapper = new QueryWrapper<>();
+//            orderWapper.eq("pay_item", "学杂费");
+//            orderWapper.eq("status", "2");
+//            orderWapper.eq("txt_type", "1");
+//            payOrderService.update(orderWapper);
+//                    .le("finish_time", LocalDateTime.now())
+//                    .ge("finish_time", LocalDateTime.now().plusMinutes(-15L));
+        } else if (type.equals("today")) {
+
+            wrapper.eq("pay_item", "学杂费");
+            wrapper.eq("status", "2");
+            wrapper.eq("txt_type", "0");
         }
 
 
@@ -910,10 +1004,12 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
             jsonArray.addAll(parOrder);
             for (int i = 0; i < jsonArray.size(); i++) {
                 PayOrderEntity payOrderEntity = (PayOrderEntity) jsonArray.get(i);
-
+                payOrderEntity.setTxtType("1");
+                payOrderService.updateById(payOrderEntity);
                 String year = payOrderEntity.getPayYear().split("-")[0];
                 String payOrderDetail = payItemDetailController.queryAllItemDetail(payOrderEntity.getPayDetail());
                 String[] splitStr = payOrderDetail.split("/");
+
                 for (int j = 0; j < splitStr.length; j++) {
                     String[] split = splitStr[j].split(":");
                     outPutStr += payOrderEntity.getSerialNumber() + "\t" + payOrderEntity.getStudentName() + "\t" +
@@ -948,7 +1044,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                 wrapper.eq("status", "1");
             }
         }
-
+        wrapper.eq(StringUtils.hasText(queryTO.getBankName()), "pay_bank", queryTO.getBankName());
         wrapper.orderByDesc("finish_time").orderByDesc("create_time").orderByAsc("pay_for_identify");
         List<PayOrderEntity> parOrder = this.list(wrapper);
         String fileName = "";
@@ -1042,15 +1138,20 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                 wrapper.eq(StringUtils.hasText(queryTO.getPayYear()), "pay_year", queryTO.getPayYear())
                         .eq(StringUtils.hasText(queryTO.getItemName()), "pay_item", queryTO.getItemName())
                         .eq(StringUtils.hasText(queryTO.getPayStatus()), "status", queryTO.getPayStatus())
-                        .select("ifnull(sum(now_pay_amount), 0) as total,count(id) as count");
+                        .eq(StringUtils.hasText(queryTO.getBankName()), "pay_bank", queryTO.getBankName())
+                        .select("ifnull(sum(now_pay_amount), 0) as total,ifnull(sum(pay_order_loan), 0) as orderLoan,count(id) as count");
                 List<PayOrderEntity> list = this.payOrderService.list(wrapper);
 
                 if (list.size() > 0) {
                     Map<String, Object> resultMap = this.getMap(wrapper);
                     String count = String.valueOf(resultMap.get("count"));
                     BigDecimal realPayAmount = new BigDecimal(String.valueOf(resultMap.get("total"))).setScale(2, BigDecimal.ROUND_HALF_UP);
-                    return realPayAmount + "-" + count;
+                    BigDecimal orderLoan = new BigDecimal(String.valueOf(resultMap.get("orderLoan"))).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    System.out.println(orderLoan+"-------");
+                    return realPayAmount + "-" + count+"-"+orderLoan;
                 }
+            }else {
+                return "0-0-0";
             }
         }
         return "0-0";
@@ -1063,6 +1164,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                 .eq("status", status)
                 .eq(StringUtils.hasText(itemName), "pay_item", itemName)
                 .eq(StringUtils.hasText(payYear), "pay_year", payYear);
+        wrapper.orderByDesc("create_time").orderByDesc("finish_time");
 
 
         IPage<PayOrderEntity> page = this.page(

+ 4 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/to/PayOrderQueryTO.java

@@ -56,4 +56,8 @@ public class PayOrderQueryTO {
      * 学生宿舍信息
      */
     private String dorm;
+    /**
+     * 银行信息
+     */
+    private String bankName;
 }

+ 3 - 15
src/main/java/com/chuanghai/smartschool/tuitionpayment/utils/OutputTxt.java

@@ -1,20 +1,8 @@
 package com.chuanghai.smartschool.tuitionpayment.utils;
 
-import ch.qos.logback.core.util.FileUtil;
-import com.alibaba.fastjson.JSONObject;
-import com.alibaba.fastjson.JSONReader;
-import com.chuanghai.smartschool.tuitionpayment.entity.PayOrderEntity;
-import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoEntity;
-import com.chuanghai.smartschool.tuitionpayment.vo.OutputTxtVO;
-import com.chuanghai.smartschool.tuitionpayment.vo.OutputTxtWaterVO;
-import jdk.nashorn.internal.scripts.JS;
-import org.apache.poi.ss.usermodel.DateUtil;
-
 import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
-import java.io.*;
-import java.text.MessageFormat;
-import java.util.Calendar;
+import java.io.BufferedOutputStream;
 
 /**
  * @Author: bingo
@@ -40,7 +28,7 @@ public class OutputTxt {
         response.setContentType("text/plain");
         //设置文件的名称和格式
         response.addHeader("Content-Disposition", "attachment;filename="
-                + FileUtilss.genAttachmentFileName("缴费名单"+ "_", "JSON_FOR_UCC_")
+                + FileUtilss.genAttachmentFileName("缴费名单", "JSON_FOR_UCC_")
                 + ".txt");
         BufferedOutputStream buff = null;
         ServletOutputStream outStr = null;
@@ -74,7 +62,7 @@ public class OutputTxt {
         response.setContentType("text/plain");
         //设置文件的名称和格式
         response.addHeader("Content-Disposition", "attachment;filename="
-                + FileUtilss.genAttachmentFileName("水费缴费名单"+ "_", "JSON_FOR_UCC_")
+                + FileUtilss.genAttachmentFileName("水费缴费名单", "JSON_FOR_UCC_")
                 + ".txt");
         BufferedOutputStream buff = null;
         ServletOutputStream outStr = null;

+ 8 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/PayOrderListVO.java

@@ -24,8 +24,16 @@ public class PayOrderListVO {
      * 当前已支付的数量
      */
     private Integer recordsNum;
+    /**
+     * 助学贷款金额
+     */
+    private BigDecimal payOrderLoan;
 
     /**
+     * 订单总金额
+     */
+    private BigDecimal orderAllAmount;
+    /**
      * 分页数据
      */
     private PageUtils<PayOrderEntity> page;

+ 9 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/PayOrderReceiveVO.java

@@ -74,4 +74,13 @@ public class PayOrderReceiveVO {
      * 银行对应的ID
      */
     private Integer bankId;
+    /**
+     * 支付人姓名
+     */
+    private String payerName ;
+
+    /**
+     * 支付人微校号
+     */
+    private String payerCardNumber ;
 }

+ 4 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/PayableInfoWaterListVO.java

@@ -141,6 +141,10 @@ public class PayableInfoWaterListVO {
      */
     private String notPayDetail ;
 
+    /**
+     * 前端状态校验
+     */
+    private Boolean show ;
 
 
 }

+ 15 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/StudentNameTeleVO.java

@@ -0,0 +1,15 @@
+package com.chuanghai.smartschool.tuitionpayment.vo;
+
+import lombok.Data;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/8/6 星期六 10:54
+ * @Description: com.chuanghai.smartschool.tuitionpayment.vo
+ * @Version: 1.0
+ */
+@Data
+public class StudentNameTeleVO {
+    private String name;
+    private String telephone;
+}

+ 3 - 0
src/main/resources/mapper/tuitionpayment/PayOrderDao.xml

@@ -27,6 +27,9 @@
         <result property="payDetail" column="pay_detail"/>
         <result property="serialNumber" column="serial_number"/>
         <result property="payinfoId" column="payinfo_id"/>
+        <result property="txtType" column="txt_type"/>
+        <result property="payerName" column="payer_ame"/>
+        <result property="payerCardNumber" column="payer_card_number"/>
 
     </resultMap>