Kaynağa Gözat

1、修改银行缴费逻辑
2、优化缴费模板导入方法
3、修改缴费项目新增问题

Bingo 4 yıl önce
ebeveyn
işleme
ba3bcc911b
22 değiştirilmiş dosya ile 455 ekleme ve 149 silme
  1. 2 1
      src/main/java/com/chuanghai/smartschool/tuitionpayment/common/exception/BizCodeEnume.java
  2. 8 3
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayItemController.java
  3. 19 3
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayOrderController.java
  4. 151 68
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayableInfoController.java
  5. 15 7
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayableInfoWaterController.java
  6. 42 33
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/WechatController.java
  7. 4 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/PayItem.java
  8. 10 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/PayOrderEntity.java
  9. 5 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/PayableInfoEntity.java
  10. 5 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/PayableInfoWaterEntity.java
  11. 17 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/listener/aliexcel/MyPayableInfoImportListener.java
  12. 4 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/listener/aliexcel/MyPayableInfoWaterImportListener.java
  13. 2 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/PayOrderService.java
  14. 128 29
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayOrderServiceImpl.java
  15. 15 1
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayServiceImpl.java
  16. 3 1
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayableInfoServiceImpl.java
  17. 4 2
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayableInfoWaterServiceImpl.java
  18. 1 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/OrderStatusVO.java
  19. 15 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/StudentInfoVO.java
  20. 3 1
      src/main/resources/mapper/tuitionpayment/PayOrderDao.xml
  21. 1 0
      src/main/resources/mapper/tuitionpayment/PayableInfoDao.xml
  22. 1 0
      src/main/resources/mapper/tuitionpayment/PayableInfoWaterDao.xml

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

@@ -42,7 +42,8 @@ public enum BizCodeEnume {
     PAY_ITEM_NOT_EXIST(10025,"缴费项目不存在"),
     ID_IS_NULL(10023,"id为空"),
     PAY_ITEM_NOT_SUPPORT(10024,"该缴费项目不支持导出TXT"),
-    IS_PAY(10025,"该缴费宿舍已缴费");
+    IS_PAY(10025,"该缴费宿舍已缴费"),
+    TOO_LONG(10026,"内容超长");
 
     private int code;
     private String msg;

+ 8 - 3
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayItemController.java

@@ -53,7 +53,12 @@ public class PayItemController {
                                                @RequestBody JSONObject jsonParam) {
         try {
             PayItem payItem = JSONObject.toJavaObject(jsonParam, PayItem.class);
+            int length = payItem.getItemName().length();
+            if (length > 127) {
+                throw new RRException(BizCodeEnume.TOO_LONG);
+            }
             payItem.setItemAsk(Boolean.FALSE);
+            payItem.setItemStatus("1");
             payItem.setItemExcept(Boolean.FALSE);
             payItem.setItemAskDay("7");
             payItem.setItemAskCount("2");
@@ -62,14 +67,14 @@ public class PayItemController {
             wrapper.eq("item_name", payItem.getItemName());
             PayItem one = payItemService.getOne(wrapper);
             if (one != null) {
-                throw new RRException(BizCodeEnume.PAY_ITEM_EXIST);
+                throw new RRException(BizCodeEnume.PAY_ITEM_EXIST, "项目名称长度超出限定");
             }
             payItemService.saveOrUpdate(payItem);
-            return CommonResult.ok();
+
         } catch (NullPointerException n) {
             n.printStackTrace();
         }
-        return CommonResult.fail();
+        return CommonResult.ok();
     }
 
 

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

@@ -167,7 +167,7 @@ public class PayOrderController {
         BigDecimal totalAmount = BigDecimal.ZERO;
         if (orderlist.size() > 0) {
             for (int i = 0; i < orderlist.size(); i++) {
-                totalAmount = totalAmount.add(orderlist.get(i).getRealPayAmount()).setScale(2, BigDecimal.ROUND_HALF_UP);
+                totalAmount = totalAmount.add(orderlist.get(i).getNowPayAmount()).setScale(2, BigDecimal.ROUND_HALF_UP);
             }
         }
         Integer totalCount = orderlist.size();
@@ -236,9 +236,9 @@ public class PayOrderController {
         } catch (Exception e) {
             e.printStackTrace();
         }
-
     }
 
+
     /**
      * 下载缴费名单的txt
      *
@@ -280,6 +280,22 @@ public class PayOrderController {
 
 
     /**
+     * 下载缴费名单的txt点击开始计时十五分钟,导出十五分钟内的数据
+     *
+     * @param response
+     * @throws IOException
+     */
+    @RequestMapping("exportOrderTxtQuarter")
+    public void exportOrderTxtQuarter( HttpServletResponse response) throws IOException {
+        try {
+            payOrderService.exportOrderTxtQuarter(response);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+
+    /**
      * 通过订单编号查询缴费订单详情  查看订单详情 【用户端】
      *
      * @param orderNo 订单编号
@@ -312,6 +328,7 @@ public class PayOrderController {
         return CommonResult.ok().setResult(page);
     }
 
+
     @GetMapping("/updateOrderDetail")
     public void updateOrderDetail(String orderNo) {
         QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
@@ -398,7 +415,6 @@ public class PayOrderController {
                                                      @RequestParam("status") String status) {
 
         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);

+ 151 - 68
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayableInfoController.java

@@ -77,7 +77,6 @@ public class PayableInfoController {
     private BankItemDetailService bankItemDetailService;
 
 
-
     /**
      * 根据card_number获取缴费信息 整合各缴费项目的集合
      *
@@ -87,18 +86,21 @@ public class PayableInfoController {
      * @pageSize pageSize 每页记录数
      */
     @GetMapping("payableInfo")
-    public CommonResult<PayableInfoWaterListVO> getPayableInfoByCardNumber(@RequestHeader("card_number") String cardNumber, String studentName,
+    public CommonResult<PayableInfoWaterListVO> getPayableInfoByCardNumber(@RequestHeader("card_number") String cardNumber,
+                                                                           String studentName,
                                                                            Integer currPage, Integer pageSize) {
         currPage = currPage == null ? 1 : currPage;
         pageSize = pageSize == null ? 10 : pageSize;
         try {
             List<PayableInfoEntity> payableInfo = payableInfoService.getPayableInfoByCardNumber(cardNumber, studentName);
             List<PayableInfoWaterListVO> objectList = new ArrayList<>();
-            payableInfo.forEach(payable -> {
-                PayableInfoWaterListVO payableInfoWaterListVO = new PayableInfoWaterListVO();
-                BeanUtils.copyProperties(payable, payableInfoWaterListVO);
-                objectList.add(payableInfoWaterListVO);
-            });
+            if (payableInfo.size() > 0) {
+                payableInfo.forEach(payable -> {
+                    PayableInfoWaterListVO payableInfoWaterListVO = new PayableInfoWaterListVO();
+                    BeanUtils.copyProperties(payable, payableInfoWaterListVO);
+                    objectList.add(payableInfoWaterListVO);
+                });
+            }
 
             List<PayableInfoWaterEntity> payableWater = payableInfoWaterService.getPayableInfoWaterByCardNumber(cardNumber, studentName);
             payableWater.forEach(payableInfoWater -> {
@@ -132,27 +134,29 @@ public class PayableInfoController {
                 objectList.add(payableInfoWaterListVO);
             });
 
-            //将得到的payableInfoWaterListVOs集合数据按照payCreateTime进行
-            List<PayableInfoWaterListVO> payableInfoWaterListVOs = objectList.stream().sorted(Comparator.comparing(PayableInfoWaterListVO::getPayCreateTime).reversed()).collect(Collectors.toList());
-            payableInfoWaterListVOs.forEach(payableInfoWaterListVO -> {
-                payableInfoWaterListVO.setPayerIdentify(payableInfoWaterListVO.getStudentNo());
-                payableInfoWaterListVO.setPayForIdentify(payableInfoWaterListVO.getCardNumber());
-                payableInfoWaterListVO.setPayYear(payableInfoWaterListVO.getYears());
-            });
-            //判断是否传入分页信息
-            if (currPage != null && pageSize != null) {
-                ListPageUtil<PayableInfoWaterListVO> listPageUtil = new ListPageUtil<PayableInfoWaterListVO>(payableInfoWaterListVOs, currPage, pageSize);
-                payableInfoWaterListVOs = listPageUtil.getPagedList();
-                int totalCount = listPageUtil.getTotalCount();
-                int pageSize1 = listPageUtil.getPageSize();
-                int nowPage1 = listPageUtil.getNowPage();
-                PageUtils<PayableInfoWaterListVO> page = new PageUtils<PayableInfoWaterListVO>(payableInfoWaterListVOs, totalCount, pageSize1, nowPage1);
-                return CommonResult.ok().setResult(page);
+            if (objectList.size() > 0) {
+                //将得到的payableInfoWaterListVOs集合数据按照payCreateTime进行
+                List<PayableInfoWaterListVO> payableInfoWaterListVOs = objectList.stream().sorted(Comparator.comparing(PayableInfoWaterListVO::getPayCreateTime).reversed()).collect(Collectors.toList());
+                payableInfoWaterListVOs.forEach(payableInfoWaterListVO -> {
+                    payableInfoWaterListVO.setPayerIdentify(payableInfoWaterListVO.getStudentNo());
+                    payableInfoWaterListVO.setPayForIdentify(payableInfoWaterListVO.getCardNumber());
+                    payableInfoWaterListVO.setPayYear(payableInfoWaterListVO.getYears());
+                });
+                //判断是否传入分页信息
+                if (currPage != null && pageSize != null && payableInfoWaterListVOs.size() > 0) {
+                    ListPageUtil<PayableInfoWaterListVO> listPageUtil = new ListPageUtil<PayableInfoWaterListVO>(payableInfoWaterListVOs, currPage, pageSize);
+                    payableInfoWaterListVOs = listPageUtil.getPagedList();
+                    int totalCount = listPageUtil.getTotalCount();
+                    int pageSize1 = listPageUtil.getPageSize();
+                    int nowPage1 = listPageUtil.getNowPage();
+                    PageUtils<PayableInfoWaterListVO> page = new PageUtils<PayableInfoWaterListVO>(payableInfoWaterListVOs, totalCount, pageSize1, nowPage1);
+                    return CommonResult.ok().setResult(page);
+                }
             }
         } catch (Exception e) {
             return CommonResult.fail("0000", "该用户暂无缴费信息!");
         }
-        return CommonResult.fail();
+        return CommonResult.ok();
     }
 
 
@@ -292,33 +296,27 @@ public class PayableInfoController {
     @PutMapping("updatePayInfo")
     public CommonResult<T> updatePayInfo(String itemName) {
         QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq("payment_item", itemName)
-                .isNull("pay_create_time");
+        wrapper.isNull("card_number");
         //更新时间等参数
         List<PayableInfoEntity> infoEntityList = payableInfoService.list(wrapper);
         List<PayableInfoEntity> objectList = new ArrayList<>();
-        if (infoEntityList.size() == 0) {
-            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "当前项目为"+itemName+",无法查询到项目数据,请核对");
-        }
+//        if (infoEntityList.size() == 0) {
+//            throw new RRException(BizCodeEnume.PARAMETER_ERROR, "当前项目为" + itemName + ",无法查询到项目数据,请核对");
+//        }
         infoEntityList.forEach(payableInfoEntity -> {
             String cardNumber = wechatController.getCardNumber(payableInfoEntity.getStudentName(), payableInfoEntity.getStudentNo());
-            payableInfoEntity.setCardNumber(cardNumber);
-            payableInfoEntity.setPayCreateTime(LocalDateTime.now());
-            payableInfoEntity.setPayItemType("1");
-            payableInfoEntity.setPayNoticeType("1");
-            //判断导入时标准名单中的非必缴项目是否为空
-            if (payableInfoEntity.getNotMustMoney().equals("无")) {
-                payableInfoEntity.setNotMustMoney("");
-            }
-
-            if (StringUtils.hasText(payableInfoEntity.getNotMustMoney())) {
-                payableInfoEntity.setNotPayDetail(payableInfoEntity.getMustMoney() + "/" + payableInfoEntity.getNotMustMoney());
+            String serial_number = "";
+            if (!cardNumber.endsWith("-")) {
+                String[] split = cardNumber.split("-");
+                cardNumber = split[0];
+                serial_number = split[1];
             } else {
-                payableInfoEntity.setNotPayDetail(payableInfoEntity.getMustMoney());
+                cardNumber = cardNumber.substring(0, cardNumber.length() - 1);
+                serial_number = cardNumber;
             }
-            String[] split = payableInfoEntity.getNotPayDetail().split("/");
-            payableInfoEntity.setNotPaySize(split.length);
-            payableInfoEntity.setPayOrderLoan(new BigDecimal("0.00"));
+            payableInfoEntity.setCardNumber(cardNumber);
+            payableInfoEntity.setSerialNumber(serial_number);
+
             objectList.add(payableInfoEntity);
         });
         payableInfoService.updateBatchById(objectList);
@@ -334,7 +332,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) < 2021 ) {
+        if (Integer.parseInt(grade) < 2021) {
             //表示输入的参数为身份证
             inputType = inputType == null ? "1" : inputType;
             //输入的参数
@@ -458,6 +456,18 @@ public class PayableInfoController {
             wrapper.eq("id", id)
                     .eq("payment_item", itemName);
             PayableInfoEntity payableInfoEntity = payableInfoService.getOne(wrapper);
+            //查找已经缴费的订单详情
+            QueryWrapper<PayOrderEntity> orderWapper = new QueryWrapper<>();
+            orderWapper.eq("payinfo_id", payableInfoEntity.getId());
+            List<PayOrderEntity> list = payOrderService.list(orderWapper);
+            String orderPayDetail = "";
+            if (list.size() > 0) {
+                for (int m = 0; m< list.size(); m++) {
+                    orderPayDetail += list.get(m).getPayDetail() +"/";
+                }
+            }
+            orderPayDetail = orderPayDetail.endsWith("/") == true ? orderPayDetail.substring(0,orderPayDetail.length()-1) :orderPayDetail;
+
             if (payableInfoEntity == null) {
                 throw new RRException(BizCodeEnume.DATA_IS_EXIST, "该缴费订单不存在。");
             }
@@ -497,20 +507,56 @@ public class PayableInfoController {
                 notPayDetail = payableInfoEntity.getMustMoney();
             }
 
+
             int notPayDetailCount = 0;
             String notPayDetailStr = "";
-            String[] realPayDetailArray;
             String[] notPayDetailArray;
-            ArrayList<String> listA;
-            ArrayList<String> listB;
+            ArrayList<String> listReal;
+            ArrayList<String> listNot;
+            ArrayList<String> listBOrder;
+
+
+
+            String[] orderPayDetailArray = orderPayDetail.split("/");
+            String[] realPayDetailArray = realPayDetail1.split("/");
+//            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("------------------------------------------");
+            //从realPayDetail1中删除已经缴费的明细,剩下代缴明细
+            listReal.removeAll(listBOrder);
+//            listReal.forEach(s->{
+//                System.out.println(s);
+//            });
+            String newRealPayDetail = "";
+            if (listReal.size() == 1) {
+                payInfoDetailVO.setNotPayDetail(listReal.get(0));
+            } else if (listReal.size() > 1) {
+                for (int i = 0; i < listReal.size(); i++) {
+                    newRealPayDetail += listReal.get(i) + "/";
+                }
+                payInfoDetailVO.setRealPayDetail(newRealPayDetail.substring(0, newRealPayDetail.length() - 1));
+            } else {
+                payInfoDetailVO.setRealPayDetail(newRealPayDetail);
+            }
+
+
 
-            payInfoDetailVO.setRealPayDetail(realPayDetail1);
-            realPayDetailArray = payInfoDetailVO.getRealPayDetail().split("/");
             notPayDetailArray = notPayDetail.split("/");
-            listA = new ArrayList<>(Arrays.asList(realPayDetailArray));
-            String[] splitRealPayDetail = new String[listA.size()];
-            for (int j = 0; j < listA.size(); j++) {
-                splitRealPayDetail = listA.get(j).split("/");
+
+
+            String[] splitRealPayDetail = new String[listReal.size()];
+            for (int j = 0; j < listReal.size(); j++) {
+                splitRealPayDetail = listReal.get(j).split("/");
                 String detail = splitRealPayDetail[0];
                 if (StringUtils.hasText(detail)) {
                     String[] detailAMount = detail.split(":");
@@ -518,15 +564,15 @@ public class PayableInfoController {
                 }
             }
 
-            listB = new ArrayList<>(Arrays.asList(notPayDetailArray));
-            listB.removeAll(listA);
+            listNot = new ArrayList<>(Arrays.asList(notPayDetailArray));
+            listNot.removeAll(listReal);
 
-            if (listB.size() == 1) {
-                payInfoDetailVO.setNotPayDetail(listB.get(0));
+            if (listNot.size() == 1) {
+                payInfoDetailVO.setNotPayDetail(listNot.get(0));
                 notPayDetailCount = 1;
-            } else if (listB.size() > 1) {
-                for (int i = 0; i < listB.size(); i++) {
-                    notPayDetailStr += listB.get(i) + "/";
+            } else if (listNot.size() > 1) {
+                for (int i = 0; i < listNot.size(); i++) {
+                    notPayDetailStr += listNot.get(i) + "/";
                     notPayDetailCount++;
                 }
                 payInfoDetailVO.setNotPayDetail(notPayDetailStr.substring(0, notPayDetailStr.length() - 1));
@@ -561,14 +607,19 @@ public class PayableInfoController {
         PayableInfoStudentResultVO payableInfoStudentResultVO = new PayableInfoStudentResultVO();
         QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
         QueryWrapper<PayableInfoWaterEntity> wrapper1 = new QueryWrapper<>();
-        wrapper.eq("student_no", cardNumber)
+        wrapper.eq("card_number", cardNumber)
                 .eq("student_name", name);
-        wrapper1.eq("student_no", cardNumber)
+        wrapper1.eq("card_number", cardNumber)
                 .eq("student_name", name);
         List<PayableInfoWaterEntity> waterList = payableInfoWaterService.list(wrapper1);
         if (waterList.size() > 0) {
             waterList.forEach(water -> {
-                payableInfoStudentResultVO.setMajor(water.getCollegeName() + water.getClassName());
+                if (water.getCollegeName() != null || water.getClassName() != null) {
+                    payableInfoStudentResultVO.setMajor(water.getCollegeName() + water.getClassName());
+                }
+                payableInfoStudentResultVO.setIdCard(water.getStudentNo());
+                payableInfoStudentResultVO.setStudentName(water.getStudentName());
+
             });
         }
 
@@ -577,12 +628,13 @@ public class PayableInfoController {
             infoList.forEach(info -> {
 
                 if (info.getCollegeName() != null || info.getClassName() != null) {
+                    payableInfoStudentResultVO.setMajor(info.getCollegeName() + info.getClassName());
                 }
-                payableInfoStudentResultVO.setMajor(info.getCollegeName() + info.getClassName());
+                payableInfoStudentResultVO.setIdCard(info.getStudentNo());
+                payableInfoStudentResultVO.setStudentName(info.getStudentName());
             });
         }
-        payableInfoStudentResultVO.setIdCard(cardNumber);
-        payableInfoStudentResultVO.setStudentName(name);
+
 
         return CommonResult.ok().setResult(payableInfoStudentResultVO);
 
@@ -825,7 +877,38 @@ public class PayableInfoController {
             }
             realDetailStr = realDetailStr.endsWith("/") == true ? realDetailStr.substring(0, realDetailStr.length() - 1) : realDetailStr;
         }
-
         return CommonResult.ok().setResult(realDetailStr);
     }
+
+    /**
+     * 帮人代缴: 通过姓名 身份证 获取用户的cardNumber
+     *
+     * @param studentName
+     * @param idCard
+     * @return
+     */
+    @GetMapping("getUserInfo")
+    public CommonResult<StudentInfoVO> getUserInfo(@RequestParam("studentName") String studentName, @RequestParam("idCard") String idCard) {
+        StudentInfoVO studentInfoVO = new StudentInfoVO();
+        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);
+    }
 }

+ 15 - 7
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayableInfoWaterController.java

@@ -15,7 +15,6 @@ import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
-import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -66,17 +65,26 @@ public class PayableInfoWaterController {
      */
     @PutMapping("updatePayInfoWater")
     public CommonResult<T> updatePayInfoWater() {
-
+        QueryWrapper<PayableInfoWaterEntity> wrapper = new QueryWrapper<>();
+        wrapper.isNull("card_number");
         //更新时间等参数
-        List<PayableInfoWaterEntity> InfoEntityList = payableInfoWaterService.list();
+        List<PayableInfoWaterEntity> InfoEntityList = payableInfoWaterService.list(wrapper);
+        System.out.println(InfoEntityList.size());
         List<PayableInfoWaterEntity> objectList = new ArrayList<>();
         InfoEntityList.forEach(payableInfoWaterEntity -> {
             String cardNumber = wechatController.getCardNumber(payableInfoWaterEntity.getStudentName(), payableInfoWaterEntity.getStudentNo());
+            String serial_number = "";
+            if (!cardNumber.endsWith("-")) {
+                String[] split = cardNumber.split("-");
+                cardNumber = split[0];
+                serial_number = split[1];
+            } else {
+                cardNumber = cardNumber.substring(0, cardNumber.length() - 1);
+                serial_number = cardNumber;
+            }
             payableInfoWaterEntity.setCardNumber(cardNumber);
-            payableInfoWaterEntity.setPayCreateTime(LocalDateTime.now());
-            payableInfoWaterEntity.setPayItemType("1");
-            payableInfoWaterEntity.setPayNoticeType("1");
-            payableInfoWaterEntity.getPayAmountDetail();
+            payableInfoWaterEntity.setSerialNumber(serial_number);
+
           //  payableInfoWaterEntity.setPayableAccount(payableInfoService.queryPayItemByName(payableInfoWaterEntity.getPaymentItem()));
             objectList.add(payableInfoWaterEntity);
         });

+ 42 - 33
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/WechatController.java

@@ -173,10 +173,11 @@ public class WechatController {
 
     /**
      * 获取微校的应用有效凭证 7200s有效 两小时内有效
+     *
      * @return
      */
     @Scheduled(fixedDelay = 7190000)
-    public void  getWeiXiaoToken() {
+    public void getWeiXiaoToken() {
         try {
 
             RestTemplate client = new RestTemplate();
@@ -192,7 +193,7 @@ public class WechatController {
 
             Map<String, Object> userInfoMap = mapper.readValue(userInfoResponse.getBody(), new TypeReference<Map<String, Object>>() {
             });
-            accessTokenPublic  = userInfoMap.get("access_token").toString();
+            accessTokenPublic = userInfoMap.get("access_token").toString();
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -200,43 +201,51 @@ public class WechatController {
 
     /**
      * 通过学生姓名 身份证查找用户的cardNumber
+     *
      * @param studentName
      * @param idCard
      * @return
      */
     @GetMapping("getWeiXiaoToken1")
     @ResponseBody
-    public String  getCardNumber(String studentName, String idCard) {
+    public String getCardNumber(String studentName, String idCard) {
+        //学生cradNumber(2020级以后的为身份证号)
         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;
+        //学生编号(2020级以后的为学号)
+        String serial_number = "";
+
+        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");
+        for (int m = 0; m < userlist.size(); m++) {
+            try {
+                Map<String, Object> userInfoMap = mapper.readValue(userlist.get(m).toString(), new TypeReference<Map<String, Object>>() {
+                });
+                String id_card = "";
+                if (userInfoMap.get("id_card") != null) {
+                    id_card = userInfoMap.get("id_card").toString();
+                }
+                if (idCard.equals(id_card)) {
+                    if (userInfoMap.get("card_number") != null) {
+                        card_number = userInfoMap.get("card_number").toString();
+                    }
+                }
+                if (userInfoMap.get("serial_number") != null) {
+                    serial_number = userInfoMap.get("serial_number").toString();
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
             }
-        } catch (Exception e) {
-            e.printStackTrace();
         }
-        return card_number;
-    }
 
+        return card_number+"-"+serial_number;
+    }
 
 
     public PayableInfoStudentResultVO queryStudent() {
@@ -322,7 +331,7 @@ public class WechatController {
         if (cardNumberList.size() == 0) {
             QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
             QueryWrapper<PayableInfoWaterEntity> water = new QueryWrapper<>();
-            wrapper.in("pay_item_type", "1","3")
+            wrapper.in("pay_item_type", "1", "3")
                     .eq("payment_item", itemName);
             water.eq("pay_notice_type", "1")
                     .eq("payment_item", itemName);
@@ -350,7 +359,7 @@ public class WechatController {
         JSONObject json = (JSONObject) JSONObject.toJSON(weixiaoVO);
         return notice(json);
 
-}
+    }
 
     /**
      * @param jsonObject 封装了发送微校通知的参数信息
@@ -374,7 +383,7 @@ public class WechatController {
             headers.setContentType(MediaType.APPLICATION_JSON);
             HttpEntity<Map<String, String>> request = new HttpEntity<>(param, headers);
             ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, request, String.class);
-        }catch (Exception e){
+        } catch (Exception e) {
             throw new RRException(BizCodeEnume.TOKET_INVALID);
         }
 
@@ -426,7 +435,7 @@ public class WechatController {
      * 每天执行一次催缴 下午15点
      */
     @Scheduled(fixedDelay = 20000)
-   // @Scheduled(cron = "0 0 15 * * ?")
+    // @Scheduled(cron = "0 0 15 * * ?")
     public void autoTiming() {
 
         List<PayItem> payItemList = payItemService.list();

+ 4 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/PayItem.java

@@ -3,6 +3,8 @@ package com.chuanghai.smartschool.tuitionpayment.entity;
 import com.baomidou.mybatisplus.annotation.TableId;
 import lombok.Data;
 
+import javax.validation.constraints.Size;
+
 /**
  * @Author: bingo
  * @Date: 2022/6/22 星期三 14:22
@@ -19,6 +21,7 @@ public class PayItem {
     /**
      * 项目名称
      */
+    @Size(max = 126, message = "项目名称超长")
     private String itemName;
     /**
      * 项目状态
@@ -52,4 +55,5 @@ public class PayItem {
     private String requestCount;
 
 
+
 }

+ 10 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/PayOrderEntity.java

@@ -178,6 +178,16 @@ public class PayOrderEntity implements Serializable {
 	@ExcelProperty("宿舍")
 	@ColumnWidth(15)
 	private String dorm ;
+	/**
+	 * 学生编号(学号)
+	 */
+	@ExcelIgnore
+	private String serialNumber ;
+	/**
+	 * 缴费订单ID
+	 */
+	@ExcelIgnore
+	private Long payinfoId ;
 
 
 }

+ 5 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/PayableInfoEntity.java

@@ -169,5 +169,10 @@ public class PayableInfoEntity implements Serializable {
 	 */
 	@ExcelIgnore
 	private BigDecimal payOrderLoan;
+	/**
+	 * 微校编号(2020以后为学号)
+	 */
+	@ExcelIgnore
+	private String serialNumber;
 
 }

+ 5 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/PayableInfoWaterEntity.java

@@ -150,5 +150,10 @@ public class PayableInfoWaterEntity implements Serializable {
 	 */
 	@ExcelIgnore
 	private String cardNumber ;
+	/**
+	 * 微校编号(2020以后为学号)
+	 */
+	@ExcelIgnore
+	private String serialNumber;
 
 }

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

@@ -8,7 +8,10 @@ import com.chuanghai.smartschool.tuitionpayment.common.exception.RRException;
 import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoEntity;
 import com.chuanghai.smartschool.tuitionpayment.service.PayableInfoService;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.StringUtils;
 
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -56,6 +59,20 @@ public class MyPayableInfoImportListener extends AnalysisEventListener<PayableIn
                     throw new RRException(BizCodeEnume.DATA_IS_EXIST, "导入失败," + info.getStudentName() + " "
                             + info.getStudentNo() + " 已存在 " + info.getYears() + " 时间段的 " + info.getPaymentItem() + " 缴费信息,请核对完毕之后重新导入");
                 }
+                if (info.getNotMustMoney().equals("无")) {
+                    info.setNotMustMoney("");
+                }
+                info.setPayCreateTime(LocalDateTime.now());
+                info.setPayItemType("1");
+                info.setPayNoticeType("1");
+                info.setPayOrderLoan(new BigDecimal("0.00"));
+                if (StringUtils.hasText(info.getNotMustMoney())) {
+                    info.setNotPayDetail(info.getMustMoney() + "/" + info.getNotMustMoney());
+                } else {
+                    info.setNotPayDetail(info.getMustMoney());
+                }
+                String[] split = info.getNotPayDetail().split("/");
+                info.setNotPaySize(split.length);
             });
         }
         try {

+ 4 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/listener/aliexcel/MyPayableInfoWaterImportListener.java

@@ -9,6 +9,7 @@ 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;
@@ -53,6 +54,9 @@ public class MyPayableInfoWaterImportListener extends AnalysisEventListener<Paya
                     throw new RRException(BizCodeEnume.DATA_IS_EXIST, "导入失败," + info.getStudentName() + " "
                             + info.getStudentNo() + " 已存在 " + info.getPayMonth() + " 时间段的 " + info.getPaymentItem() + " 缴费信息,请核对完毕之后重新导入");
                 }
+                info.setPayCreateTime(LocalDateTime.now());
+                info.setPayItemType("1");
+                info.setPayNoticeType("1");
             });
         }
         try {

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

@@ -58,6 +58,8 @@ public interface PayOrderService extends IService<PayOrderEntity> {
 
     void exportOrderTxt(HttpServletResponse response, PayOrderQueryTO queryTO, List<String> downIDs) throws IOException;
 
+    void exportOrderTxtQuarter(HttpServletResponse response) throws IOException;
+
     Integer queryCurrentPayedRecordNum(PayOrderQueryTO queryTO);
 
     PageUtils queryAllOrder(String cardNumber, PageParam pageParam, String status, String itemName, String payYear);

+ 128 - 29
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.temporal.ChronoUnit;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -165,7 +164,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
         wrapper.eq("pay_for_identify", studentNo);
         wrapper.eq("pay_item", itemName);
         wrapper.eq(StringUtils.hasText(payYears), "pay_year", payYears);
-        if (notPaySize != null ) {
+        if (notPaySize != null) {
             wrapper.eq("not_pay_size", notPaySize);
         }
         if (payDetail != null) {
@@ -425,8 +424,10 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
             PayableInfoEntity payableInfo = null;
             PayableInfoWaterEntity payableInfoWater = null;
             String grade = "";
+
             if (itemName.equals("水费缴纳")) {
                 payableInfoWater = payableInfoWaterService.getByStudentNo(studentNo, itemName, payYear);
+                System.out.println(payableInfoWater);
                 // 获取学生入学年份
                 grade = payableInfoWater.getGrade();
             } else {
@@ -453,7 +454,6 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
             }
 
 
-
             PayOrderEntity payOrderEntity = new PayOrderEntity();
             if (itemName.equals("水费缴纳")) {
                 QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
@@ -479,12 +479,16 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
             }
 
 
-            // 订单已经存在超过30分钟没有支付,直接删除该订单
+            // 订单已经存在超过30分钟没有支付,直接删除该订单  农商订单直接删掉
             if (payOrderEntity != null && PayStatus.NON_PAY.getCode().equals(payOrderEntity.getStatus())) {
-                if (Math.abs(ChronoUnit.MINUTES.between(LocalDateTime.now(), payOrderEntity.getCreateTime())) > 30) {
+//                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;
                     }
@@ -526,14 +530,12 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                     Bank bank = bankService.getById(bankId);
                     if (payOrderEntity.getPayMethod().equals("1") && bank.getBankName().equals("建设银行")) {
                         bankCard = bank.getBankName() + " (" + bank.getBankCardNumber() + ")";
-                    }else if(payOrderEntity.getPayMethod().equals("2") && bank.getBankName().equals("农商银行")){
+                    } else if (payOrderEntity.getPayMethod().equals("2") && bank.getBankName().equals("农商银行")) {
                         bankCard = bank.getBankName() + " (" + bank.getBankCardNumber() + ")";
                     }
 
                 }
                 payOrderEntity.setPayBank(bankCard);
-
-
                 payOrderEntity.setPayOrderLoan(orderLoan);
 
 
@@ -541,15 +543,21 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                 if (itemName.equals("水费缴纳")) {
                     //更新对应项目的缴费参数
                     payOrderEntity.setDorm(dorm);
+                    payOrderEntity.setPayinfoId(payableInfoWater.getId());
                     payOrderEntity.setRealPayAmount(payableInfoWater.getRealPayAmount());
                     //payOrderEntity.setNowPayAmount(payableInfoWater.getRealPayAmount());
                     payOrderEntity.setStudentName(payableInfoWater.getStudentName());
                     payOrderEntity.setClassName(payableInfoWater.getClassName());
+                    payOrderEntity.setSerialNumber(payableInfoWater.getSerialNumber());
+                    payOrderEntity.setNowPayAmount(payableInfoWater.getRealPayAmount());
                 } else {
                     payOrderEntity.setRealPayAmount(payableInfo.getRealPayAmount());
                     // payOrderEntity.setNowPayAmount(payInfoDetailVO.getPayDetailAmount());
+                    payOrderEntity.setPayinfoId(payableInfo.getId());
+
                     payOrderEntity.setStudentName(payableInfo.getStudentName());
                     payOrderEntity.setClassName(payableInfo.getClassName());
+                    payOrderEntity.setSerialNumber(payableInfo.getSerialNumber());
 
                 }
                 BigDecimal parentNowPayDetailAmount = BigDecimal.ZERO;
@@ -559,27 +567,61 @@ 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.in("status", "2", "3");
+                    wrapper1.eq("status", "2");
                     List<PayOrderEntity> payOrderList = this.list(wrapper1);
-
+                    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();
-                    payOrderEntity.setNowPayAmount(
-                            payOrderEntity.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP)
-                                    .subtract(parentNowPayDetailAmount).setScale(2, BigDecimal.ROUND_HALF_UP)
-                                    .subtract(notPayDetailAmount)
-                                    .subtract(parentOrderLone)
-                            //.subtract(payInfoDetailVO.getPayDetailAmount())
-                    );
+                    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 {
+                        if (payableInfo.getPayDetail() == null || payableInfo.getPayDetail().equals("")) {
+                            System.out.println("1111111111111111111");
+                            System.out.println(payInfoDetailVO);
+                            payOrderEntity.setNowPayAmount(
+                                    payOrderEntity.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP)
+                                            /// .subtract(parentNowPayDetailAmount).setScale(2, BigDecimal.ROUND_HALF_UP)
+                                            .subtract(notPayDetailAmount)
+                                            .subtract(parentOrderLone)
+                                    //.subtract(payInfoDetailVO.getPayDetailAmount())
+                            );
+                            System.out.println( payOrderEntity.getNowPayAmount()+"1111111111111111111111111111111");
+
+                        }else {
+                            System.out.println("222222222222222222222");
+                            System.out.println(payInfoDetailVO);
+
+                            payOrderEntity.setNowPayAmount(
+                                    payOrderEntity.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP)
+                                            .subtract(parentNowPayDetailAmount).setScale(2, BigDecimal.ROUND_HALF_UP)
+                                            //  .subtract(notPayDetailAmount)
+                                            .subtract(parentOrderLone)
+                                    //.subtract(payInfoDetailVO.getPayDetailAmount())
+                            );
+                            System.out.println( payOrderEntity.getNowPayAmount()+"          222222222222222222222");
+
+                        }
+                    }
+
+                    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().setScale(2, BigDecimal.ROUND_HALF_UP).subtract(orderLoan));
+                    System.out.println(payOrderEntity.getNowPayAmount()+"           33333333333333333");
                 }
                 //  System.out.println(payOrderEntity.getNowPayAmount()+"     sjdhfuhsbdf getNowPayAmount");
                 //校验订单的支付金额是否异常
@@ -592,18 +634,39 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                     flag = payOrderEntity.getNowPayAmount().compareTo(payableInfoWater.getRealPayAmount()) == 0 ? Boolean.TRUE : Boolean.FALSE;
                 } else {
                     orderLoan = orderLoan.add(parentOrderLone);
-                    BigDecimal nowPayAllMount = payOrderEntity.getNowPayAmount().add(payInfoDetailVO.getNotPayDetailAmount()).add(parentNowPayDetailAmount).add(orderLoan);
+                    BigDecimal nowPayAllMount = BigDecimal.ZERO;
+                    if (count > 1) {
+                        System.out.println(payInfoDetailVO);
+                        if (payableInfo.getPayDetail() == null || payableInfo.getPayDetail().equals("")) {
+                            nowPayAllMount = nowPayAllMount.add(payInfoDetailVO.getNotPayDetailAmount()).add(payOrderEntity.getNowPayAmount());
+
+                        }else {
+                            System.out.println("4444444444444444444444");
+                            nowPayAllMount = nowPayAllMount.add(payInfoDetailVO.getNotPayDetailAmount()).add(payOrderEntity.getNowPayAmount().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).add(orderLoan));
+                    }
 
                     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);
                 }
 
-                if (Double.parseDouble(String.valueOf(payOrderEntity.getNowPayAmount())) < 0.00 ) {
+                if (Double.parseDouble(String.valueOf(payOrderEntity.getNowPayAmount())) < 0.00) {
                     flag = Boolean.FALSE;
+                    System.out.println(flag + "=====2=====" + payOrderEntity.getNowPayAmount());
+
                 }
+
                 if (!(realPayAmount.compareTo(payOrderEntity.getNowPayAmount()) == 0)) {
                     flag = Boolean.FALSE;
+                    System.out.println(flag+"--------------"+realPayAmount + "===realPayAmount==3=====" + payOrderEntity.getNowPayAmount());
+
                 }
                 if (!flag) {
                     throw new RRException(BizCodeEnume.PAY_AMOUNT_ERROR, "支付金额异常。");
@@ -615,7 +678,6 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
               检测该订单是否异常,订单异常自动发送 订单异常微校通知
               wechatController.sendException(itemName);
           */
-                System.out.println(payOrderEntity);
                 this.save(payOrderEntity);
 
 
@@ -625,6 +687,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
             createOrderResultVO.setAmount(payOrderEntity.getNowPayAmount());
             createOrderResultVO.setOrderNo(payOrderEntity.getOrderNo());
             createOrderResultVO.setPayMethod(payOrderEntity.getPayMethod());
+            System.out.println(createOrderResultVO.getMsg() + "------------------------------------msg");
             createOrderResultVOList.add(createOrderResultVO);
         }
 
@@ -646,7 +709,6 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
         if (payOrderEntity == null) {
             throw new RRException(BizCodeEnume.ORDER_IS_NOT_EXIT);
         }
-
         return payOrderEntity;
     }
 
@@ -753,8 +815,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
     /**
      * 下载缴费的名单的txt文件
      *
-     * @param response //     * @param flag
-     *                 //     * @param dateStr
+     * @param response
      */
     @Override
     public void exportOrderTxt(HttpServletResponse response, PayOrderQueryTO queryTO, List<String> downIDs) throws IOException {
@@ -774,7 +835,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
         }
 
         wrapper.orderByDesc("finish_time").orderByDesc("create_time").orderByAsc("pay_for_identify");
-       List<PayOrderEntity> parOrder = this.list(wrapper);
+        List<PayOrderEntity> parOrder = this.list(wrapper);
 
         String outPutStr = "";
         if (parOrder.size() > 0) {
@@ -798,6 +859,44 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
 
 
     /**
+     * 下载缴费的名单的txt文件
+     *
+     * @param response
+     */
+    @Override
+    public void exportOrderTxtQuarter(HttpServletResponse response) throws IOException {
+
+        QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
+
+        wrapper.eq("status", "2")
+                .le("finish_time", LocalDateTime.now())
+                .ge("finish_time", LocalDateTime.now().plusMinutes(-15L));
+        wrapper.orderByDesc("finish_time").orderByDesc("create_time").orderByAsc("pay_for_identify");
+        List<PayOrderEntity> parOrder = this.list(wrapper);
+
+        String outPutStr = "";
+        if (parOrder.size() > 0) {
+            JSONArray jsonArray = new JSONArray();
+            jsonArray.addAll(parOrder);
+            for (int i = 0; i < jsonArray.size(); i++) {
+                PayOrderEntity payOrderEntity = (PayOrderEntity) jsonArray.get(i);
+
+                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" +
+                            year + "\t" + split[0] + "\t" + "\"" + split[1] + "\"" + "\t" + "\r";
+                }
+            }
+        }
+
+        new OutputTxt().outTxt(response, outPutStr);
+    }
+
+
+    /**
      * 下载缴费的名单
      *
      * @param response
@@ -927,10 +1026,10 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
         return "0-0";
     }
 
-    public PageUtils queryAllOrder(String cardNumber, PageParam pageParam, String status, String itemName, String
-            payYear) {
+    public PageUtils queryAllOrder(String cardNumber, PageParam pageParam,
+                                   String status, String itemName, String payYear) {
         QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq("pay_for_identify", cardNumber)
+        wrapper.eq("payer_identify", cardNumber)
                 .eq("status", status)
                 .eq(StringUtils.hasText(itemName), "pay_item", itemName)
                 .eq(StringUtils.hasText(payYear), "pay_year", payYear);

+ 15 - 1
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayServiceImpl.java

@@ -83,6 +83,7 @@ public class PayServiceImpl implements PayService {
         // 查询订单
         PayOrderEntity payOrder = payOrderService.getByOrderNo(orderNo);
         secondOrderNo = secondOrderNo.equals("") == true ? "1": secondOrderNo;
+        log.info("第二次支付使用的订单号【{}】", secondOrderNo);
         if (!PayMethod.CCB_PAY.getCode().equals(payOrder.getPayMethod())) {
             throw new RRException(BizCodeEnume.NOT_CCB_PAY_ORDER);
         }
@@ -93,6 +94,8 @@ public class PayServiceImpl implements PayService {
             throw new RRException(BizCodeEnume.DATA_IS_EXIST, "学号【" + payOrder.getPayForIdentify() + "】已缴费,请勿重复缴费");
         }
 
+
+
         Map<String, String> param = new LinkedHashMap<>();
 
         param.put("MERCHANTID", ccbPayConfig.getMerchantid()); // 商户代码
@@ -262,7 +265,18 @@ public class PayServiceImpl implements PayService {
 //        for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
 //            System.out.println(entry.getKey() + "==>" + entry.getValue()[0]);
 //        }
-        return wechatConfig.getFontendUrl() + "/#/pages/payState/payState?orderNo=" + parameterMap.get("ORDERID")[0]+"&secondOrderNo="+parameterMap.get("REMARK1")[0];
+        String secondOrderNo = parameterMap.get("REMARK1")[0];
+        System.out.println(secondOrderNo+"----------------------------sdgbvfkyuhdsbukfgdsbukjvbdsukjvfbdsfukjjfvgbhyuj----");
+        QueryWrapper<PayOrderEntity> ordedrWapper = new QueryWrapper<>();
+        ordedrWapper.eq("order_no", secondOrderNo);
+        PayOrderEntity byOrderNo = payOrderService.getOne(ordedrWapper);
+        if (byOrderNo != null) {
+            if (byOrderNo.getStatus().equals("2")) {
+                secondOrderNo = "1";
+            }
+        }
+
+        return wechatConfig.getFontendUrl() + "/#/pages/payState/payState?orderNo=" + parameterMap.get("ORDERID")[0]+"&secondOrderNo="+secondOrderNo;
     }
 
     public static void main(String[] args) throws JsonProcessingException {

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

@@ -104,7 +104,7 @@ public class PayableInfoServiceImpl extends ServiceImpl<PayableInfoDao, PayableI
     public List<PayableInfoEntity> getPayableInfoByCardNumber(String cardNumber, String studentName) {
         // 查询用户基本的缴费信息
         QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper();
-        wrapper.eq("student_no", cardNumber);
+        wrapper.eq("card_number", cardNumber);
         wrapper.eq(StringUtils.hasText(studentName),"student_name",studentName);
         wrapper.in("pay_item_type", "1","3");
         wrapper.eq("pay_notice_type","2");
@@ -169,6 +169,7 @@ public class PayableInfoServiceImpl extends ServiceImpl<PayableInfoDao, PayableI
         if (downIDs.size() > 0) {
             wrapper.in("id", downIDs);
         }
+        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());
 
@@ -214,6 +215,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.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());
 

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

@@ -174,7 +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.eq(StringUtils.hasText(queryTO.getPayYear()), "pay_month", 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());
@@ -207,6 +207,7 @@ public class PayableInfoWaterServiceImpl extends ServiceImpl<PayableInfoWaterDao
         if (downIDs.size() > 0) {
             wrapper.in("id", downIDs);
         }
+        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());
 
@@ -232,7 +233,7 @@ public class PayableInfoWaterServiceImpl extends ServiceImpl<PayableInfoWaterDao
     public List<PayableInfoWaterEntity> getPayableInfoWaterByCardNumber(String cardNumber, String studentName) {
         // 查询用户基本的缴费信息
         QueryWrapper<PayableInfoWaterEntity> wrapper = new QueryWrapper();
-        wrapper.eq("student_no", cardNumber);
+        wrapper.eq("card_number", cardNumber);
         wrapper.eq(StringUtils.hasText(studentName), "student_name", studentName);
         wrapper.eq("pay_item_type", "1");
         wrapper.eq("pay_notice_type", "2");
@@ -276,6 +277,7 @@ public class PayableInfoWaterServiceImpl extends ServiceImpl<PayableInfoWaterDao
         if (downIDs.size() > 0) {
             wrapper.in("id", downIDs);
         }
+        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());
 

+ 1 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/OrderStatusVO.java

@@ -23,4 +23,5 @@ public class OrderStatusVO {
      * 支付者id
      */
     private String payerId;
+
 }

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

@@ -0,0 +1,15 @@
+package com.chuanghai.smartschool.tuitionpayment.vo;
+
+import lombok.Data;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/26 星期二 9:55
+ * @Description: com.chuanghai.smartschool.tuitionpayment.vo
+ * @Version: 1.0
+ */
+@Data
+public class StudentInfoVO {
+    private String studentName;
+    private String cardNumber;
+}

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

@@ -24,7 +24,9 @@
         <result property="dorm" column="dorm"/>
         <result property="notPayDetail" column="not_pay_detail"/>
         <result property="notPaySize" column="not_pay_size"/>
-        <result property="payDetail" column="ppay_detail"/>
+        <result property="payDetail" column="pay_detail"/>
+        <result property="serialNumber" column="serial_number"/>
+        <result property="payinfoId" column="payinfo_id"/>
 
     </resultMap>
 

+ 1 - 0
src/main/resources/mapper/tuitionpayment/PayableInfoDao.xml

@@ -27,6 +27,7 @@
         <result property="notPayDetail" column="not_pay_detail"/>
         <result property="notPaySize" column="not_pay_size"/>
         <result property="payOrderLoan" column="pay_order_loan"/>
+        <result property="serialNumber" column="serial_number"/>
     </resultMap>
 
     <update id="truncateTable" >

+ 1 - 0
src/main/resources/mapper/tuitionpayment/PayableInfoWaterDao.xml

@@ -23,6 +23,7 @@
         <result property="payableAccount" column="payable_account"/>
         <result property="cardNumber" column="card_number"/>
         <result property="payMonth" column="pay_month"/>
+        <result property="serialNumber" column="serial_number"/>
 
     </resultMap>