Quellcode durchsuchen

1、修改银行缴费设置

Bingo vor 4 Jahren
Ursprung
Commit
d3f863ccf0
47 geänderte Dateien mit 1706 neuen und 787 gelöschten Zeilen
  1. 4 1
      src/main/java/com/chuanghai/smartschool/tuitionpayment/common/exception/BizCodeEnume.java
  2. 3 3
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/AdminInfoController.java
  3. 81 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/BankController.java
  4. 138 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/BankDetailController.java
  5. 167 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/BankItemDetailController.java
  6. 45 2
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayDetailBankController.java
  7. 75 29
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayItemController.java
  8. 2 8
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayMethodSettingController.java
  9. 39 26
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayOrderController.java
  10. 177 380
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayableInfoController.java
  11. 30 13
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayableInfoWaterController.java
  12. 76 50
      src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/WechatController.java
  13. 15 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/dao/BankDao.java
  14. 15 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/dao/BankDetailDao.java
  15. 15 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/dao/BankItemDetailDao.java
  16. 55 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/Bank.java
  17. 63 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/BankDetail.java
  18. 29 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/BankItemDetail.java
  19. 1 11
      src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/PayItem.java
  20. 1 1
      src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/PayOrderEntity.java
  21. 13 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/BankDetailService.java
  22. 13 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/BankItemDetailService.java
  23. 13 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/BankService.java
  24. 3 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/PayOrderService.java
  25. 2 4
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/PayableInfoService.java
  26. 17 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/BankDetailServiceImpl.java
  27. 21 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/BankItemDetailServiceImpl.java
  28. 17 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/BankServiceImpl.java
  29. 279 186
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayOrderServiceImpl.java
  30. 0 2
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayServiceImpl.java
  31. 30 18
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayableInfoServiceImpl.java
  32. 70 39
      src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayableInfoWaterServiceImpl.java
  33. 16 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/to/BankItemDetailTO/BankDetailListVO.java
  34. 15 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/to/BankItemDetailTO/ReceiveBankItemDetailTO.java
  35. 1 1
      src/main/java/com/chuanghai/smartschool/tuitionpayment/to/FeedbackMsgCreateTO.java
  36. 4 2
      src/main/java/com/chuanghai/smartschool/tuitionpayment/to/PayOrderQueryTO.java
  37. 0 7
      src/main/java/com/chuanghai/smartschool/tuitionpayment/utils/MyUtil.java
  38. 29 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/BankDetailVO/BankDetailListVO.java
  39. 18 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/BankVO/BankStoreVO.java
  40. 25 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/BankVO/BankVO.java
  41. 21 0
      src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/PayItemInfoDetailVO/ItemInfoDetailVO.java
  42. 1 1
      src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/PayOrderReceiveVO.java
  43. 23 0
      src/main/resources/mapper/tuitionpayment/BankDao.xml
  44. 25 0
      src/main/resources/mapper/tuitionpayment/BankDetailDao.xml
  45. 16 0
      src/main/resources/mapper/tuitionpayment/BankItemDetailDao.xml
  46. 2 2
      src/main/resources/mapper/tuitionpayment/PayItemDao.xml
  47. 1 1
      src/main/resources/mapper/tuitionpayment/PayOrderDao.xml

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

@@ -39,7 +39,10 @@ public enum BizCodeEnume {
     BATCH_EXECUTOR_ERROR(10100, "批量操作数据库失败"),
     PAY_AMOUNT_ERROR(10021,"付款金额错误"),
     PAY_ITEM_EXIST(10022,"缴费项目已存在"),
-    ID_IS_NULL(1023,"id为null");
+    PAY_ITEM_NOT_EXIST(10025,"缴费项目不存在"),
+    ID_IS_NULL(10023,"id为空"),
+    PAY_ITEM_NOT_SUPPORT(10024,"该缴费项目不支持导出TXT"),
+    IS_PAY(10025,"该缴费宿舍已缴费");
 
     private int code;
     private String msg;

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

@@ -77,7 +77,7 @@ public class AdminInfoController {
      */
     @AdminLoginCheck
     @PostMapping("/save")
-    public CommonResult<String> save(@RequestHeader("admin-token") String adminToken,
+    public CommonResult<String> save(@RequestHeader("admin_token") String adminToken,
                                      @RequestBody @Valid AdminInfoEntity adminInfo,
                                      BindingResult result){
         if (result.hasErrors()) {
@@ -101,7 +101,7 @@ public class AdminInfoController {
      */
     @AdminLoginCheck
     @PutMapping("/update")
-    public CommonResult<String> update(@RequestHeader("admin-token") String adminToken,
+    public CommonResult<String> update(@RequestHeader("admin_token") String adminToken,
                                        @RequestBody @Valid AdminInfoEntity adminInfo,
                                        BindingResult result){
         if (result.hasErrors()) {
@@ -120,7 +120,7 @@ public class AdminInfoController {
      */
     @AdminLoginCheck
     @DeleteMapping("/delete/{id}")
-    public CommonResult<String> delete(@RequestHeader("admin-token") String adminToken,
+    public CommonResult<String> delete(@RequestHeader("admin_token") String adminToken,
                                        @PathVariable("id") Long id){
         AdminInfoEntity adminInfoEntity = adminInfoService.getById(id);
         if ("0".equals(adminInfoEntity.getStatus())) {

+ 81 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/BankController.java

@@ -0,0 +1,81 @@
+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.BankStoreVO;
+import com.chuanghai.smartschool.tuitionpayment.vo.BankVO.BankVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
+import java.util.TreeSet;
+import java.util.stream.Collectors;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/20 星期三 19:38
+ * @Description: com.chuanghai.smartschool.tuitionpayment.controller
+ * @Version: 1.0
+ */
+@RestController
+@RequestMapping("tuitionpayment/bank")
+public class BankController {
+
+    @Autowired
+    private BankService bankService;
+
+    @GetMapping("queryBankStore")
+    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(()
+                -> new TreeSet<>(Comparator.comparing(Bank :: getBankName))), ArrayList::new));
+        arrays.forEach(bank -> {
+            BankStoreVO bankStoreVO = new BankStoreVO();
+            bankStoreVO.setId(bank.getId());
+            bankStoreVO.setLabel(bank.getBankName());
+            List<BankVO> bankVOS = queryBankName(bank.getBankName(), bank.getId());
+            bankStoreVO.setChildren(bankVOS);
+            bankStoreVOList.add(bankStoreVO);
+
+        });
+        List uniqueStr = bankStoreVOList.stream().distinct().collect(Collectors.toList());
+        return CommonResult.ok().setResult(uniqueStr);
+    }
+
+    /**
+     *
+     *
+     * @param bankName
+     * @param id   设置ID
+     * @return
+     */
+    public List<BankVO> queryBankName(@RequestParam("bankName") String bankName , Integer id) {
+        QueryWrapper<Bank> wrapper = new QueryWrapper<>();
+        List<BankVO> bankVOList = new ArrayList<>();
+        wrapper.eq("bank_name", bankName);
+        List<Bank> bankDetailList = bankService.list(wrapper);
+        for (int i = 0; i < bankDetailList.size(); i++) {
+            BankVO bankVO = new BankVO();
+            bankVO.setId(String.valueOf(id )+ i);
+            bankVO.setBankId(bankDetailList.get(i).getId());
+            bankVO.setLabel(bankDetailList.get(i).getBankStoreName() + " (" + bankDetailList.get(i).getBankCardNumber() + ")");
+            bankVOList.add(bankVO);
+        }
+        return bankVOList;
+    }
+
+
+
+}

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

@@ -0,0 +1,138 @@
+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.BankDetail;
+import com.chuanghai.smartschool.tuitionpayment.service.BankDetailService;
+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;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/20 星期三 19:38
+ * @Description: com.chuanghai.smartschool.tuitionpayment.controller
+ * @Version: 1.0
+ */
+@RestController
+@RequestMapping("tuitionpayment/bankdetail")
+public class BankDetailController {
+
+    @Autowired
+    private BankDetailService bankDetailService;
+
+
+    /**
+     * 通过项目查询缴费银行设置
+     *
+     * @param itemName
+     * @return
+     */
+    @GetMapping("queryBankDeatilByItem")
+    public CommonResult<List<BankDetail>> queryBankDeatilByItem(@RequestParam("itemName") String itemName) {
+        QueryWrapper<BankDetail> wrapper = new QueryWrapper<>();
+        wrapper.eq("item_name", itemName);
+        List<BankDetail> bankDetailList = bankDetailService.list(wrapper);
+        return CommonResult.ok().setResult(bankDetailList);
+    }
+
+
+    /**
+     * 通过项目明细查询支付银行
+     *
+     * @param itemName
+     * @return
+     */
+    public String queryBankByDeatilItem(@RequestParam("itemName") String itemName, @RequestParam("detail") String detail) {
+        QueryWrapper<BankDetail> wrapper = new QueryWrapper<>();
+        wrapper.eq("item_name", itemName);
+        List<BankDetail> bankDetailList = bankDetailService.list(wrapper);
+        String bank = "";
+        for (int j = 0; j < bankDetailList.size(); j++) {
+            String[] splitDetail = detail.split("/");
+            for (int i = 0; i < splitDetail.length; i++) {
+                //判断银行缴费详情里面是否包含实际缴费明细,用于判断本次缴费方式为哪种银行缴费
+                if (bankDetailList.get(j).getBankDetailStr().contains(splitDetail[i].split(":")[0])) {
+                    bank = bankDetailList.get(j).getBankName() + " (" + bankDetailList.get(j).getBankCardNumber() + ")";
+                }
+            }
+        }
+        return bank;
+    }
+
+
+//    /**
+//     * 根据cardNumber 查询用户所交的项目及时间
+//     *
+//     * @param itemName
+//     * @return
+//     */
+//    @GetMapping("queryBankDetail")
+//    public CommonResult<List<BankDetailListVo>> queryBankDetail(String itemName) {
+//
+//        List<BankDetailListVo> BankDetailListVoList = new ArrayList<>();
+//        QueryWrapper<BankDetail> wrapper = new QueryWrapper<>();
+//        wrapper.eq(StringUtils.hasText(itemName), "item_name", itemName);
+//        List<BankDetail> bankDetailList = bankDetailService.list(wrapper);
+//        bankDetailList.forEach(bankDetail -> {
+//            BankDetailListVo bankDetailListVo = new BankDetailListVo();
+//            bankDetailListVo.setId(bankDetail.getId());
+//            bankDetailListVo.setLabel(bankDetail.getBankName());
+//            List<BankVO> bankVOS = queryBankCard(itemName, bankDetail.getBankName(), bankDetail.getId());
+//            bankDetailListVo.setChildren(bankVOS);
+//            BankDetailListVoList.add(bankDetailListVo);
+//
+//        });
+//        List uniqueStr = BankDetailListVoList.stream().distinct().collect(Collectors.toList());
+//        return CommonResult.ok().setResult(uniqueStr);
+//    }
+//
+//
+//    /**
+//     * 通过缴费项目查询银行下面的门店
+//     *
+//     * @param itemName
+//     * @return
+//     */
+//    @GetMapping("queryBankCard")
+//    public List<BankVO> queryBankCard(@RequestParam("itemName") String itemName, String bankName, String id) {
+//        QueryWrapper<BankDetail> wrapper = new QueryWrapper<>();
+//        List<BankVO> bankVOList = new ArrayList<>();
+//        wrapper.eq(StringUtils.hasText(itemName), "item_name", itemName)
+//                .eq("bank_name", bankName);
+//        List<BankDetail> bankDetailList = bankDetailService.list(wrapper);
+//        for (int i = 0; i < bankDetailList.size(); i++) {
+//            BankVO bankVO = new BankVO();
+//            bankVO.setId(id + i);
+//            bankVO.setLabel(bankDetailList.get(i).getBankStoreName() + "(" + bankDetailList.get(i).getBankCardNumber() + ")");
+//            bankVOList.add(bankVO);
+//        }
+//        return bankVOList;
+//    }
+
+    /**
+     * 通过银行的门店+卡号查询缴费明细
+     * @param bankStoreCard
+     * @return
+     */
+    @GetMapping("queryBankDetailInSql")
+    public CommonResult<T> queryBankDetailInSql(String bankStoreCard, String itemName) {
+        String bankDetailStr = "";
+        QueryWrapper<BankDetail> wrapper = new QueryWrapper<>();
+        wrapper.eq("item_name", itemName);
+        List<BankDetail> list = bankDetailService.list(wrapper);
+        for (int i = 0; i < list.size(); i++) {
+            String storeCard = list.get(i).getBankStoreName() + "(" + list.get(i).getBankCardNumber() + ")";
+            if (storeCard.equals(bankStoreCard)) {
+                bankDetailStr = list.get(i).getBankDetailStr();
+            }
+        }
+        return CommonResult.ok().setResult(bankDetailStr);
+    }
+
+}

+ 167 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/BankItemDetailController.java

@@ -0,0 +1,167 @@
+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.BankItemDetail;
+import com.chuanghai.smartschool.tuitionpayment.service.BankItemDetailService;
+import com.chuanghai.smartschool.tuitionpayment.service.BankService;
+import com.chuanghai.smartschool.tuitionpayment.to.BankItemDetailTO.BankDetailListVO;
+import com.chuanghai.smartschool.tuitionpayment.to.BankItemDetailTO.ReceiveBankItemDetailTO;
+import org.apache.poi.ss.formula.functions.T;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/21 星期四 16:25
+ * @Description: com.chuanghai.smartschool.tuitionpayment.controller
+ * @Version: 1.0
+ */
+@RestController
+@RequestMapping("tuitionpayment/bankitemdetail")
+public class BankItemDetailController {
+    @Autowired
+    private BankItemDetailService bankItemDetailService;
+    @Autowired
+    private BankService bankService;
+
+//    /**
+//     * 更新银行缴费明细
+//     *
+//     * @param jsonObject
+//     * @return
+//     */
+//    @PostMapping("saveOrUpdateBankDetail")
+//    public CommonResult<T> saveBankDetail(@RequestBody JSONObject jsonObject) {
+//        boolean flag = Boolean.FALSE;
+//        String itemName = jsonObject.get("itemName").toString();
+//        JSONArray jsonArr = jsonObject.getJSONArray("list");
+//
+//        for (int i = 0; i < jsonArr.size(); i++) {
+//            String bankId = "";
+//            String detail = "";
+//            String vo = jsonArr.get(i).toString().substring(1, jsonArr.get(i).toString().length() - 1);
+//            String[] split = vo.split(",");
+//            for (int m = 0; m < split.length; m++) {
+//                if (split[m].split("=")[0].contains("bankId")) {
+//                    bankId = String.valueOf(split[m].split("=")[1]);
+//                }
+//                if (split[m].split("=")[0].contains("detail")) {
+//                    detail = String.valueOf(split[m].split("=")[1]);
+//                }
+//            }
+//            QueryWrapper<BankItemDetail> bankWrapper = new QueryWrapper<>();
+//            bankWrapper.eq("item_name", itemName)
+//                    .eq("bank_id", bankId);
+//            BankItemDetail one = bankItemDetailService.getOne(bankWrapper);
+//            if (one == null) {
+//                BankItemDetail bankItemDetail = new BankItemDetail();
+//                bankItemDetail.setItemName(itemName);
+//                bankItemDetail.setBankDetailStr(detail);
+//                bankItemDetail.setBankId(Integer.parseInt(bankId));
+//                flag = bankItemDetailService.save(bankItemDetail);
+//            }else {
+//                one.setBankDetailStr(detail);
+//                flag = bankItemDetailService.updateById(one);
+//            }
+//
+//
+//        }
+//        return CommonResult.ok().setResult(flag);
+//    }
+
+
+
+    /**
+     * 更新银行缴费明细
+     *
+     * @param
+     * @return
+     */
+    @PostMapping("saveOrUpdateBankDetail")
+    public CommonResult<Boolean> saveBankDetail(String itemName, List<ReceiveBankItemDetailTO> list) {
+        boolean flag = Boolean.FALSE;
+
+        for (int i = 0; i < list.size(); i++) {
+            ReceiveBankItemDetailTO receiveBankItemDetailTO = (ReceiveBankItemDetailTO)list.get(i);
+            String bankId = String.valueOf(receiveBankItemDetailTO.getBankId());
+            String detail = receiveBankItemDetailTO.getDetail();
+            QueryWrapper<BankItemDetail> bankWrapper = new QueryWrapper<>();
+            bankWrapper.eq("item_name", itemName)
+                    .eq("bank_id", bankId);
+            BankItemDetail one = bankItemDetailService.getOne(bankWrapper);
+            if (one == null) {
+                BankItemDetail bankItemDetail = new BankItemDetail();
+                bankItemDetail.setItemName(itemName);
+                bankItemDetail.setBankDetailStr(detail);
+                bankItemDetail.setBankId(Integer.parseInt(bankId));
+                flag = bankItemDetailService.save(bankItemDetail);
+            }else {
+                one.setBankDetailStr(detail);
+                flag = bankItemDetailService.updateById(one);
+            }
+
+        }
+        return CommonResult.ok().setResult(flag);
+    }
+
+
+
+
+
+
+
+    /**
+     * 通过缴费项目和银行ID查询缴费详情
+     *
+     * @param bankId
+     * @param itemName
+     * @return
+     */
+    @GetMapping("queryBankDetailById")
+    public CommonResult<T> queryBankDetailById(@RequestParam("bankId") String bankId, @RequestParam("itemName") String itemName) {
+        QueryWrapper<BankItemDetail> wrapper = new QueryWrapper<>();
+        wrapper.eq("bank_id", bankId)
+                .eq("item_name", itemName);
+        BankItemDetail bankItemDetail = bankItemDetailService.getOne(wrapper);
+        if (bankItemDetail == null) {
+            return CommonResult.ok().setResult("");
+        }
+        String bankDetailStr = bankItemDetail.getBankDetailStr();
+        return CommonResult.ok().setResult(bankDetailStr);
+    }
+
+
+    /**
+     *
+     * @param itemName
+     * @return
+     */
+    @GetMapping("queryByItem")
+    public List<BankDetailListVO> queryByItem(String itemName){
+        QueryWrapper<BankItemDetail> wrapper = new QueryWrapper<>();
+        wrapper.eq("item_name", itemName);
+        List<BankItemDetail> itemDetails = bankItemDetailService.list(wrapper);
+        List<BankDetailListVO> bankDetailListVOS = new ArrayList<>();
+        for (BankItemDetail itemDetail : itemDetails) {
+            System.out.println(itemDetail);
+            BankDetailListVO bankDetailListVO = new BankDetailListVO();
+            Bank bank = bankService.getById(itemDetail.getBankId());
+            System.out.println(bank);
+
+            String bankName = bank.getBankName();
+            String detailStr = itemDetail.getBankDetailStr();
+            bankDetailListVO.setBankId(bank.getId());
+            bankDetailListVO.setBankName(bankName);
+            bankDetailListVO.setDetail(detailStr);
+            bankDetailListVOS.add(bankDetailListVO);
+        }
+
+        return bankDetailListVOS;
+    }
+
+}

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

@@ -56,6 +56,11 @@ public class PayDetailBankController {
         return CommonResult.ok().setResult(payDetailBank);
     }
 
+    /**
+     * 通过缴费项目查询银行缴费设置
+     * @param itemName
+     * @return
+     */
     public PayDetailBank queryBank(String itemName){
         QueryWrapper<PayDetailBank> wrapper = new QueryWrapper<>();
         wrapper.eq("item_name", itemName);
@@ -68,15 +73,53 @@ public class PayDetailBankController {
      * @param jsonObject     payDetailBank 的json结构体
      * @return
      */
-    @PostMapping("saveOrUpdateBank")
+    @PostMapping("updateBank")
     public CommonResult<T> updatePayDetailBank(@RequestBody JSONObject jsonObject){
         PayDetailBank payDetailBank = JSONObject.toJavaObject(jsonObject, PayDetailBank.class);
         if (payDetailBank.getBId() == null) {
             throw new RRException(BizCodeEnume.ID_IS_NULL, "ID字段为空");
         }
-       payDetailBankService.saveOrUpdate(payDetailBank);
+       payDetailBankService.updateById(payDetailBank);
+        return CommonResult.ok();
+    }
+
+
+    /**
+     * 更新银行缴费明细数组
+     * @param jsonObject     payDetailBank 的json结构体
+     * @return
+     */
+    @PostMapping("saveBank")
+    public CommonResult<T> savePayDetailBank(@RequestBody JSONObject jsonObject){
+        PayDetailBank payDetailBank = JSONObject.toJavaObject(jsonObject, PayDetailBank.class);
+        PayDetailBank data = queryBankDetailByName(payDetailBank.getItemName()).getData();
+        if (data.getItemName().equals(payDetailBank.getItemName())) {
+            payDetailBank.setBId(data.getBId());
+            payDetailBankService.updateById(payDetailBank);
+        }else {
+            payDetailBankService.save(payDetailBank);
+        }
         return CommonResult.ok();
     }
 
 
+    public void queryBankByDetail(String itemName, String detail){
+        PayDetailBank payDetailBank = queryBank(itemName);
+        String ccbStr = payDetailBank.getCcbStr();
+        String rcbStr = payDetailBank.getRcbStr();
+        String[] splitDetail = detail.split("/");
+        for (int i=0; i<splitDetail.length; i++){
+            if (ccbStr.contains(splitDetail[i].split(":")[0])) {
+
+            }
+        }
+        if (ccbStr != null) {
+            String[] splitCCBStr = ccbStr.split("/");
+        }
+        if (rcbStr != null) {
+            String[] splitRCBStr = rcbStr.split("/");
+        }
+
+
+    }
 }

+ 75 - 29
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayItemController.java

@@ -1,5 +1,6 @@
 package com.chuanghai.smartschool.tuitionpayment.controller;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.chuanghai.smartschool.tuitionpayment.anno.AdminLoginCheck;
@@ -8,13 +9,16 @@ import com.chuanghai.smartschool.tuitionpayment.common.exception.RRException;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.CommonResult;
 import com.chuanghai.smartschool.tuitionpayment.entity.PayDetailBank;
 import com.chuanghai.smartschool.tuitionpayment.entity.PayItem;
+import com.chuanghai.smartschool.tuitionpayment.service.PayDetailBankService;
 import com.chuanghai.smartschool.tuitionpayment.service.PayItemService;
+import com.chuanghai.smartschool.tuitionpayment.to.BankItemDetailTO.ReceiveBankItemDetailTO;
 import com.chuanghai.smartschool.tuitionpayment.vo.PayItemDetailVO;
 import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -30,7 +34,11 @@ public class PayItemController {
     @Autowired
     private PayItemService payItemService;
     @Autowired
+    private PayDetailBankService payDetailBankService;
+    @Autowired
     private PayDetailBankController payDetailBankController;
+    @Autowired
+    private BankItemDetailController bankItemDetailController;
 
     /**
      * 用于缴费项目的新增
@@ -83,26 +91,26 @@ public class PayItemController {
         return CommonResult.fail();
     }
 
-    /**
-     * 查询所有缴费项目
-     *
-     * @return
-     */
-    @PostMapping("/queryPayItemByName")
-    public String queryPayItemByName(String name) {
-        QueryWrapper<PayItem> wapper = new QueryWrapper<>();
-        wapper.eq("item_name", name);
-        List<PayItem> list = payItemService.list(wapper);
-        String itemAccount = "";
-        if (list.size() > 0) {
-            PayItem payItem = list.get(0);
-            itemAccount = payItem.getItemAccount();
-            String start = itemAccount.substring(0, 3);
-            String end = itemAccount.substring(itemAccount.length() - 4);
-            itemAccount = payItem.getItemBank() + " (" + start + "****" + end + ")";
-        }
-        return itemAccount;
-    }
+//    /**
+//     * 查询所有缴费项目
+//     *
+//     * @return
+//     */
+//    @PostMapping("/queryPayItemByName")
+//    public String queryPayItemByName(String name) {
+//        QueryWrapper<PayItem> wapper = new QueryWrapper<>();
+//        wapper.eq("item_name", name);
+//        List<PayItem> list = payItemService.list(wapper);
+//        String itemAccount = "";
+//        if (list.size() > 0) {
+//            PayItem payItem = list.get(0);
+//            itemAccount = payItem.getItemAccount();
+//            String start = itemAccount.substring(0, 3);
+//            String end = itemAccount.substring(itemAccount.length() - 4);
+//            itemAccount = payItem.getItemBank() + " (" + start + "****" + end + ")";
+//        }
+//        return itemAccount;
+//    }
 
 
     /**
@@ -121,32 +129,70 @@ public class PayItemController {
         PayDetailBank payDetailBank = new PayDetailBank();
         BeanUtils.copyProperties(payItemDetailVO, payItem);
         BeanUtils.copyProperties(payItemDetailVO, payDetailBank);
-        System.out.println(payDetailBank);
-        System.out.println(payItem);
+
+
+        String itemName = jsonObject.get("itemName").toString();
+        JSONArray jsonArr = jsonObject.getJSONArray("list");
+        List<ReceiveBankItemDetailTO> ReceiveBankItemDetailTOList = new ArrayList<>();
+        for (int i = 0; i < jsonArr.size(); i++) {
+            ReceiveBankItemDetailTO receiveBankItemDetailTO = new ReceiveBankItemDetailTO();
+            String bankId = "";
+            String detail = "";
+            String vo = jsonArr.get(i).toString().substring(1, jsonArr.get(i).toString().length() - 1);
+            String[] split = vo.split(",");
+            for (int m = 0; m < split.length; m++) {
+                if (split[m].split("=")[0].contains("bankId")) {
+                    bankId = String.valueOf(split[m].split("=")[1]);
+                }
+                if (split[m].split("=")[0].contains("detail")) {
+                    detail = String.valueOf(split[m].split("=")[1]);
+                }
+            }
+            receiveBankItemDetailTO.setBankId(Integer.parseInt(bankId));
+            receiveBankItemDetailTO.setDetail(detail);
+            ReceiveBankItemDetailTOList.add(receiveBankItemDetailTO);
+        }
+       bankItemDetailController.saveBankDetail(itemName, ReceiveBankItemDetailTOList);
+
         //将催缴发送请求计数器归零
         payItem.setRequestCount("0");
-        JSONObject payDetailBankJson = JSONObject.parseObject(payDetailBank.toString());
-        payDetailBankController.updatePayDetailBank(payDetailBankJson);
-        boolean b = payItemService.updateById(payItem);
-        return CommonResult.ok().setResult(b);
+
+        payItemService.updateById(payItem);
+        return CommonResult.ok().setResult(Boolean.TRUE);
     }
 
 
     /**
      * 通过itemName 查询缴费项目的设置
      *
-     * @param itemName   缴费项目名称
+     * @param itemName 缴费项目名称
      * @return
      */
     @GetMapping("/queryByItemNameSetting")
-    public CommonResult<PayItem> queryByItemNameSetting( @RequestParam("itemName") String itemName) {
+    public CommonResult<PayItem> queryByItemNameSetting(@RequestParam("itemName") String itemName) {
         QueryWrapper<PayItem> wrapper = new QueryWrapper<>();
         wrapper.eq("item_name", itemName);
         PayItem payItem = payItemService.getOne(wrapper);
+        if (payItem.getItemGrade() == null) {
+            payItem.setItemGrade("[]");
+
+        }
         return CommonResult.ok().setResult(payItem);
     }
 
-
+    /**
+     * 通过itemName 查询缴费项目的设置
+     *
+     * @param itemName 缴费项目名称
+     * @return
+     */
+    @GetMapping("/queryByItem")
+    public CommonResult<PayItem> queryByItem(@RequestParam("itemName") String itemName) {
+        QueryWrapper<PayItem> wrapper = new QueryWrapper<>();
+        wrapper.eq("item_name", itemName);
+        PayItem payItem = payItemService.getOne(wrapper);
+        return CommonResult.ok().setResult(payItem);
+    }
 
 
 }

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

@@ -1,6 +1,5 @@
 package com.chuanghai.smartschool.tuitionpayment.controller;
 
-import com.baomidou.mybatisplus.annotation.Version;
 import com.chuanghai.smartschool.tuitionpayment.anno.AdminLoginCheck;
 import com.chuanghai.smartschool.tuitionpayment.common.exception.BizCodeEnume;
 import com.chuanghai.smartschool.tuitionpayment.common.exception.RRException;
@@ -9,13 +8,7 @@ import com.chuanghai.smartschool.tuitionpayment.entity.PayMethodSettingEntity;
 import com.chuanghai.smartschool.tuitionpayment.service.PayMethodSettingService;
 import com.chuanghai.smartschool.tuitionpayment.vo.CurrentPayMethodVO;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -91,4 +84,5 @@ public class PayMethodSettingController {
                                                         .currentPayMethod(currentPayMethod)
                                                         .build());
     }
+
 }

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

@@ -101,14 +101,15 @@ public class PayOrderController {
 
     /**
      * 查询订单状态【用户端】
+     * <p>
+     * // * @param cardNumber 当前登录用户cardNumber
      *
-    // * @param cardNumber 当前登录用户cardNumber
-     * @param orderNo    订单号
+     * @param orderNo 订单号
      * @return
      */
     @GetMapping("{orderNo}/orderStatu")
     public CommonResult<OrderStatusVO> queryOrderStatus( //@RequestHeader("card_number") String cardNumber,
-                                                        @PathVariable("orderNo") String orderNo) {
+                                                         @PathVariable("orderNo") String orderNo) {
         OrderStatusVO orderStatusVO = payOrderService.queryOrderStatus(orderNo);
         return CommonResult.ok().setResult(orderStatusVO);
     }
@@ -142,20 +143,19 @@ public class PayOrderController {
         }
         PageUtils page = payOrderService.queryPage(queryTO, pageParam);
 
-        page.getList().forEach(payOrder -> {
-            PayOrderEntity payOrderEntity = (PayOrderEntity) payOrder;
-            String payItem = payOrderEntity.getPayItem();
-            String payBank = payItemController.queryPayItemByName(payItem);
-            payOrderEntity.setPayBank(payBank);
-            this.payOrderService.updateById(payOrderEntity);
-
-        });
+//        page.getList().forEach(payOrder -> {
+//            PayOrderEntity payOrderEntity = (PayOrderEntity) payOrder;
+//            String payItem = payOrderEntity.getPayItem();
+//            if (payOrderEntity.getPayMethod().equals("1")){
+//                payOrderEntity.setPayBank("建设银行");
+//            }else {
+//                payOrderEntity.setPayBank("农商银行");
+//            }
+//            this.payOrderService.updateById(payOrderEntity);
+//
+//        });
 
         String amountCount = payOrderService.queryPayOrderAmount(queryTO);
-//        // 计算总金额
-//        BigDecimal bigDecimal = payOrderService.queryCurrentPayedAmount(queryTO);
-//        // 计算当前完成支付记录数量
-//        Integer recordNums = payOrderService.queryCurrentPayedRecordNum(queryTO);
 
         PayOrderListVO payOrderListVO = new PayOrderListVO();
         payOrderListVO.setTotal(new BigDecimal(amountCount.split("-")[0]).setScale(2, RoundingMode.HALF_UP));
@@ -179,7 +179,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).getRealPayAmount()).setScale(2, BigDecimal.ROUND_HALF_UP);
             }
         }
         Integer totalCount = orderlist.size();
@@ -250,12 +250,27 @@ public class PayOrderController {
      * @throws IOException
      */
     @RequestMapping("exportOrderTxt")
-    @AdminLoginCheck
-    public void exportTxt(@RequestHeader("admin_token") String adminToken,
-                          PayOrderQueryTO queryTO,
+    public void exportTxt(PayOrderQueryTO queryTO,
                           HttpServletResponse response) throws IOException {
-        payOrderService.exportOrderTxt(response, queryTO);
-
+        try {
+            if (!queryTO.getItemName().equals("学杂费")) {
+                throw new RRException(BizCodeEnume.PAY_ITEM_NOT_SUPPORT, "该项目不支持导出TXT文件");
+            }
+            String flag = queryTO.getFlag();
+            String createDateStr = queryTO.getCreateDateStr();
+            String payDateStr = queryTO.getPayDateStr();
+            if (!("1".equals(flag) || "2".equals(flag) || "3".equals(flag))) {
+                throw new RRException(BizCodeEnume.PARAMETER_ERROR, "flag只允许传1、2、3");
+            }
+            if (!"1".equals(flag)) {
+                if (!(StringUtils.hasText(payDateStr) || StringUtils.hasText(createDateStr))) {
+                    throw new RRException(BizCodeEnume.PARAMETER_ERROR, "查询时间不能为空");
+                }
+            }
+            payOrderService.exportOrderTxt(response, queryTO);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
     }
 
 
@@ -392,7 +407,6 @@ public class PayOrderController {
             orderQueryVOList.add(orderQueryVO);
         });
         List uniqueStr = orderQueryVOList.stream().distinct().collect(Collectors.toList());
-
         return CommonResult.ok().setResult(uniqueStr);
     }
 
@@ -407,9 +421,8 @@ public class PayOrderController {
      */
     @GetMapping("queryYearByItem")
     public List<YearVo> queryYearByItem(String cardNumber,
-                                           String status,
-                                           @RequestParam("itemName") String itemName) {
-        List<List<YearVo>>  yearLists = new ArrayList<>();
+                                        String status,
+                                        @RequestParam("itemName") String itemName) {
         QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
         List<YearVo> yearList = new ArrayList<>();
         wrapper.eq(StringUtils.hasText(itemName), "pay_item", itemName)
@@ -423,7 +436,7 @@ public class PayOrderController {
             yearList.add(yearVo);
 
         });
-      //  List uniqueStr = yearList.stream().distinct().collect(Collectors.toList());
+        //  List uniqueStr = yearList.stream().distinct().collect(Collectors.toList());
 
         return yearList;
     }

+ 177 - 380
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayableInfoController.java

@@ -2,6 +2,8 @@ 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;
@@ -20,11 +22,19 @@ import com.chuanghai.smartschool.tuitionpayment.to.DeletePayableInfoTO;
 import com.chuanghai.smartschool.tuitionpayment.to.PayOrderQueryTO;
 import com.chuanghai.smartschool.tuitionpayment.utils.ListPageUtil;
 import com.chuanghai.smartschool.tuitionpayment.vo.*;
+import com.chuanghai.smartschool.tuitionpayment.vo.PayItemInfoDetailVO.ItemInfoDetailVO;
 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;
@@ -65,6 +75,7 @@ public class PayableInfoController {
     private WechatController wechatController;
 
 
+
     /**
      * 根据card_number获取缴费信息 整合各缴费项目的集合
      *
@@ -89,6 +100,31 @@ public class PayableInfoController {
 
             List<PayableInfoWaterEntity> payableWater = payableInfoWaterService.getPayableInfoWaterByCardNumber(cardNumber, studentName);
             payableWater.forEach(payableInfoWater -> {
+                //如果查询到已经完成水费缴纳,则删除该寝室的缴费名单信息
+                QueryWrapper<PayableInfoWaterEntity> wrapperWater = new QueryWrapper<>();
+                wrapperWater.eq("dorm", payableInfoWater.getDorm());
+                List<PayableInfoWaterEntity> listWater = payableInfoWaterService.list(wrapperWater);
+                List<PayableInfoWaterEntity> listWaterStatusFinish = new ArrayList<>();
+                //收集寝室缴费完成的对象
+                if (listWater.size() > 0) {
+                    listWater.forEach(water -> {
+                        if (water.getPayItemType().endsWith("2")) {
+                            listWaterStatusFinish.add(water);
+                        }
+                    });
+                }
+                //得到去除完成缴费的寝室缴费订单对象
+                List<PayableInfoWaterEntity> accountWaterList = listWaterStatusFinish.stream().filter(listWater::contains).collect(Collectors.toList());
+                List<PayableInfoWaterEntity> accountWaterList1 = accountWaterList.stream().filter(listWater::contains).collect(Collectors.toList());
+                List<Long> idList = new ArrayList<>();
+                //通过id批量删除信息
+                if (accountWaterList1.size() > 0) {
+                    accountWaterList.forEach(water -> {
+                        idList.add(water.getId());
+                    });
+                    payableInfoWaterService.removeByIds(idList);
+                }
+
                 PayableInfoWaterListVO payableInfoWaterListVO = new PayableInfoWaterListVO();
                 BeanUtils.copyProperties(payableInfoWater, payableInfoWaterListVO);
                 objectList.add(payableInfoWaterListVO);
@@ -148,10 +184,6 @@ public class PayableInfoController {
     @AdminLoginCheck
     @GetMapping("/list")
     public CommonResult<PageUtils<PayableInfoEntity>> list(@RequestHeader("admin_token") String adminToken,
-//                                                           String keyword, String payStatus, String createTime,
-//                                                           String payTime, PageParam pageParam,
-//                                                           String payItemType,
-//                                                           @RequestParam("itemName") String itemName
                                                            PayOrderQueryTO queryTO, PageParam pageParam) {
         PageUtils page = null;
         BigDecimal totalAmount = BigDecimal.ZERO;
@@ -271,16 +303,22 @@ public class PayableInfoController {
     @PutMapping("updatePayInfo")
     public CommonResult<T> updatePayInfo(String itemName) {
         QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq("payMent_item", itemName);
+        wrapper.eq("payment_item", itemName);
         //更新时间等参数
         List<PayableInfoEntity> infoEntityList = payableInfoService.list(wrapper);
 
         List<PayableInfoEntity> objectList = new ArrayList<>();
+
         infoEntityList.forEach(payableInfoEntity -> {
-            payableInfoEntity.setCardNumber(payableInfoEntity.getStudentNo());
+            String cardNumberByIdCard = getCardNumberByIdCard(payableInfoEntity.getStudentNo(), "1", payableInfoEntity.getStudentNo(), "2", payableInfoEntity.getGrade());
+            payableInfoEntity.setCardNumber(cardNumberByIdCard);
             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());
@@ -289,7 +327,8 @@ public class PayableInfoController {
             }
             String[] split = payableInfoEntity.getNotPayDetail().split("/");
             payableInfoEntity.setNotPaySize(split.length);
-            payableInfoEntity.setPayableAccount(payableInfoService.queryPayItemByName(payableInfoEntity.getPaymentItem()));
+
+          //  payableInfoEntity.setPayableAccount(payableInfoService.queryPayItemByName(payableInfoEntity.getPaymentItem()));
             objectList.add(payableInfoEntity);
         });
         payableInfoService.updateBatchById(objectList);
@@ -297,42 +336,42 @@ public class PayableInfoController {
     }
 
 
-//    /**
-//     * 通过身份证调用活动管理平台数据库换取 微笑的cardNumber信息
-//     *
-//     * @param idCard
-//     * @return
-//     */
-//    public String getCardNumberByIdCard(String idCard, String inputType, String inputStr, String outPutType) {
-//        //表示输入的参数为身份证
-//        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 = "";
-//        try {
-//            cardNumber = jsonObj.get("result").toString();
-//        } catch (NullPointerException e) {
-//            throw new NullPointerException("未匹配到该用户!");
-//        }
-//        return cardNumber == null ? idCard : cardNumber;
-//    }
+    /**
+     * 通过身份证调用活动管理平台数据库换取 微笑的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) > 2019) {
+            //表示输入的参数为身份证
+            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 == null ? idCard : cardNumber;
+        } else {
+            return idCard;
+        }
+    }
 
 
     /**
@@ -403,86 +442,6 @@ public class PayableInfoController {
     }
 
 
-    /**
-     * 查询缴费名单的缴费详情
-     *
-     * @param id
-     * @return
-     */
-//    @GetMapping("/queryPayInfoDetail")
-//    public CommonResult queryPayInfoDetail(@RequestParam String id, @RequestParam("itemName") String itemName, String realPayDetail) {
-//        PayInfoDetailVO payInfoDetailVO = new PayInfoDetailVO();
-//        if (itemName.equals("水费缴纳")) {
-//            QueryWrapper<PayableInfoWaterEntity> wrapperWater = new QueryWrapper<>();
-//            wrapperWater.eq("id", id)
-//                    .eq("payment_item", itemName);
-//            PayableInfoWaterEntity water = payableInfoWaterService.getOne(wrapperWater);
-//
-//            if (water.getPayAmountDetail() != null) {
-//                payInfoDetailVO.setPayAmountDetail(water.getPayAmountDetail());
-//            }
-//            payInfoDetailVO.setRealPayAmount(water.getRealPayAmount());
-//        } else {
-//            QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
-//            wrapper.eq("id", id)
-//                    .eq("payment_item", itemName);
-//            PayableInfoEntity payableInfoEntity = payableInfoService.getOne(wrapper);
-//
-//            if (payableInfoEntity.getMustMoney() != null) {
-//                payInfoDetailVO.setMustMoney(payableInfoEntity.getMustMoney());
-//            }
-//            if (payableInfoEntity.getNotMustMoney() != null) {
-//                payInfoDetailVO.setNotMustMoney(payableInfoEntity.getNotMustMoney());
-//            }
-//            if (StringUtils.hasText(realPayDetail)){
-//
-//            }
-//            String[] realPayDetailStr = realPayDetail.split("/");
-//            BigDecimal realMount = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
-//            for (int i = 0; i < realPayDetailStr.length; i++) {
-//                String detail = realPayDetailStr[i];
-//                String[] detailAMount = detail.split(":");
-//                realMount = realMount.add(new BigDecimal(detailAMount[1]).setScale(2, RoundingMode.HALF_UP));
-//            }
-//            String notPayDetail = payableInfoEntity.getMustMoney() + "/" + payableInfoEntity.getNotMustMoney();
-//            payInfoDetailVO.setRealPayAmount(realMount);
-//
-//
-//            int notPayDetailCount = 0;
-//            String notPayDetailStr = "";
-//            String[] realPayDetailArray;
-//            String[] notPayDetailArray;
-//            ArrayList<String> listA;
-//            ArrayList<String> listB;
-//            if (StringUtils.hasText(payableInfoEntity.getPayDetail())) {
-//                payInfoDetailVO.setRealPayDetail(payableInfoEntity.getPayDetail() + "/" + realPayDetail);
-//            } else {
-//                payInfoDetailVO.setRealPayDetail(realPayDetail);
-//            }
-//            realPayDetailArray = payInfoDetailVO.getRealPayDetail().split("/");
-//            notPayDetailArray = notPayDetail.split("/");
-//            listA = new ArrayList<>(Arrays.asList(realPayDetailArray));
-//            listB = new ArrayList<>(Arrays.asList(notPayDetailArray));
-//            listB.removeAll(listA);
-//
-//            if (listB.size() == 1) {
-//                payInfoDetailVO.setNotPayDetail(listB.get(0));
-//                notPayDetailCount = 1;
-//            } else if (listB.size() > 1) {
-//                for (int i = 0; i < listB.size(); i++) {
-//                    notPayDetailStr += listB.get(i) + "/";
-//                    notPayDetailCount++;
-//                }
-//                payInfoDetailVO.setNotPayDetail(notPayDetailStr.substring(0, notPayDetailStr.length() - 1));
-//            } else {
-//                payInfoDetailVO.setNotPayDetail(notPayDetailStr);
-//            }
-//            payInfoDetailVO.setNotPaySize(notPayDetailCount);
-//
-//        }
-//
-//        return CommonResult.ok().setResult(payInfoDetailVO);
-//    }
     @GetMapping("/queryPayInfoDetail")
     public CommonResult queryPayInfoDetail(@RequestParam String id, @RequestParam("itemName") String itemName, String realPayDetail) {
         PayInfoDetailVO payInfoDetailVO = new PayInfoDetailVO();
@@ -537,11 +496,6 @@ public class PayableInfoController {
                     realPayDetail1 = realPayDetail;
                 }
             }
-            // 本次缴费明细为空和缴费订单所有已交的项目明细为空
-//            if (StringUtils.hasText(realPayDetail) && StringUtils.hasText(payableInfoEntity.getPayDetail())) {
-//                System.out.println(realPayDetail1);
-//                realPayDetail1 =  realPayDetail1.substring(0,realPayDetail1.length()/2);
-//            }
 
             String notPayDetail = "";
             if (StringUtils.hasText(payableInfoEntity.getNotMustMoney())) {
@@ -557,19 +511,7 @@ public class PayableInfoController {
             String[] notPayDetailArray;
             ArrayList<String> listA;
             ArrayList<String> listB;
-//            if (StringUtils.hasText(realPayDetail)) {
-//                if (StringUtils.hasText(payableInfoEntity.getPayDetail())) {
-//                    payInfoDetailVO.setRealPayDetail(payableInfoEntity.getPayDetail() + "/" + realPayDetail);
-//                } else {
-//                    payInfoDetailVO.setRealPayDetail(realPayDetail);
-//                }
-//            } else {
-//                if (StringUtils.hasText(payableInfoEntity.getPayDetail())) {
-//                    payInfoDetailVO.setRealPayDetail(payableInfoEntity.getPayDetail());
-//                } else {
-//                    payInfoDetailVO.setRealPayDetail(realPayDetail == null ? "" : realPayDetail);
-//                }
-//            }
+
             payInfoDetailVO.setRealPayDetail(realPayDetail1);
             realPayDetailArray = payInfoDetailVO.getRealPayDetail().split("/");
             notPayDetailArray = notPayDetail.split("/");
@@ -614,81 +556,6 @@ public class PayableInfoController {
         return CommonResult.ok().setResult(payInfoDetailVO);
     }
 
-//    /**
-//     * 查询缴费名单的缴费详情
-//     *
-//     * @param id
-//     * @return
-//     */
-//    @GetMapping("/queryPayDetail")
-//    public CommonResult<T> queryPayDetail(@RequestParam String id, @RequestParam("itemName") String
-//            itemName, String realPayDetail) {
-//        PayInfoDetailVO payInfoDetailVO = new PayInfoDetailVO();
-//        if (itemName.equals("水费缴纳")) {
-//            QueryWrapper<PayableInfoWaterEntity> wrapperWater = new QueryWrapper<>();
-//            wrapperWater.eq("id", id)
-//                    .eq("payment_item", itemName);
-//            PayableInfoWaterEntity water = payableInfoWaterService.getOne(wrapperWater);
-//
-//            if (water.getPayAmountDetail() != null) {
-//                payInfoDetailVO.setPayAmountDetail(water.getPayAmountDetail());
-//            }
-//            payInfoDetailVO.setRealPayAmount(water.getRealPayAmount());
-//        } else {
-//            QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
-//            wrapper.eq("id", id)
-//                    .eq("payment_item", itemName);
-//            PayableInfoEntity payableInfoEntity = payableInfoService.getOne(wrapper);
-//
-//            payInfoDetailVO.setRealPayDetail(realPayDetail);
-//
-//            if (payableInfoEntity.getNotPayDetail() != null) {
-//                payInfoDetailVO.setNotPayDetail(payableInfoEntity.getNotPayDetail());
-//            }
-//            String detail = "";
-//            if (StringUtils.hasText(payableInfoEntity.getNotPayDetail())) {
-//                detail = payableInfoEntity.getNotPayDetail();
-//            }
-//
-//            String notPayDetail = "";
-//            if (StringUtils.hasText(realPayDetail)) {
-//                String[] realPayDetailArray = realPayDetail.split("/");
-//
-//                String[] payDetailArray = detail.split("/");
-//                ArrayList<String> listA = new ArrayList<>(Arrays.asList(realPayDetailArray));
-//                ArrayList<String> listB = new ArrayList<>(Arrays.asList(payDetailArray));
-//                listB.removeAll(listA);
-//                if (listB.size() == 1) {
-//                    payInfoDetailVO.setNotPayDetail(listB.get(0));
-//                } else if (listB.size() > 1) {
-//                    for (int i = 0; i < listB.size(); i++) {
-//                        notPayDetail += listB.get(i) + "/";
-//                    }
-//                    payInfoDetailVO.setNotPayDetail(notPayDetail.substring(0, notPayDetail.length() - 1));
-//                } else {
-//                    payInfoDetailVO.setNotPayDetail(notPayDetail);
-//                }
-//
-//            } else {
-//                detail = detail.endsWith("/") == true ? detail.substring(0, detail.length() - 1) : detail;
-//                payInfoDetailVO.setNotPayDetail(detail);
-//            }
-//
-//            String[] split = payInfoDetailVO.getNotPayDetail().split("/");
-//
-//            BigDecimal realMount = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
-//            for (int i = 0; i < split.length; i++) {
-//                String detail1 = split[i];
-//                String[] detailAMount = detail1.split(":");
-//                realMount = realMount.add(new BigDecimal(detailAMount[1]).setScale(2, RoundingMode.HALF_UP));
-//            }
-//            payInfoDetailVO.setRealPayAmount(realMount);
-//        }
-//
-//        return CommonResult.ok().setResult(payInfoDetailVO);
-//    }
-
-
 
 
     /**
@@ -699,7 +566,7 @@ public class PayableInfoController {
      * @return
      */
     @GetMapping("/queryStudentInfo")
-    public CommonResult<PayableInfoStudentResultVO>  queryStudentInfo(String cardNumber, String name) {
+    public CommonResult<PayableInfoStudentResultVO> queryStudentInfo(String cardNumber, String name) {
         PayableInfoStudentResultVO payableInfoStudentResultVO = new PayableInfoStudentResultVO();
         QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
         QueryWrapper<PayableInfoWaterEntity> wrapper1 = new QueryWrapper<>();
@@ -742,21 +609,7 @@ public class PayableInfoController {
         PayOrderEntity one = payOrderService.getOne(wrapper);
         String parentOrderNo = "";
         BigDecimal parentOrderLone = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP);
-//        if (one.getParentOrder() == null) {
-////            if (one.getNotPaySize() == 0) {
-////                one.setStatus("2");
-////            } else {
-////                one.setStatus("3");
-////            }
-//        } else {
-//            parentOrderNo = one.getParentOrder();
-//            PayOrderEntity byOrderNo = payOrderService.getByOrderNo(parentOrderNo);
-//
-//            one.setStatus("2");
-//        }
 
-
-        //payOrderService.updateById(one);
         String payDetail = "";
         if (StringUtils.hasText(one.getPayDetail())) {
             payDetail = one.getPayDetail();
@@ -796,7 +649,6 @@ public class PayableInfoController {
             PayableInfoEntity pInfo = payableInfoService.getOne(wrapper1);
             String notPayDetail1 = "";
             String payDetail1 = "";
-            //  System.out.println(parentOrderNo);
 
             QueryWrapper<PayOrderEntity> orderWapper = new QueryWrapper<>();
             orderWapper.eq("pay_for_identify", payForIdentify)
@@ -811,7 +663,6 @@ public class PayableInfoController {
                     if (StringUtils.hasText(payOrderList.get(i).getPayDetail())) {
                         payDetail1 += payOrderList.get(i).getPayDetail() + "/";
                     }
-                    // PayInfoDetailVO payInfoDetailVO = (PayInfoDetailVO) queryPayInfoDetail(String.valueOf(pInfo.getId()), pInfo.getPaymentItem(), payDetail1).getData();
                     payOrderLoan = payOrderLoan.add(payOrderList.get(i).getPayOrderLoan()).setScale(2, BigDecimal.ROUND_HALF_UP);
 
                 }
@@ -819,9 +670,6 @@ public class PayableInfoController {
             pInfo.setPayOrderLoan(payOrderLoan);
 
             payDetail1 = payDetail1.endsWith("/") == true ? payDetail1.substring(0, payDetail1.length() - 1) : payDetail1;
-            //notPayDetail1 =  notPayDetail1.endsWith("/") == true ? notPayDetail1.substring(0,notPayDetail1.length() -1 ) : notPayDetail1;
-            // notPayDetail1= notPayDetail1.startsWith("/") == true ? notPayDetail1.substring(1) : notPayDetail1;
-            //  payDetail1= payDetail1.startsWith("/") == true ? payDetail1.substring(1) : payDetail1;
             PayInfoDetailVO payInfoDetailVO = (PayInfoDetailVO) this.queryPayInfoDetail(String.valueOf(pInfo.getId()), pInfo.getPaymentItem(), one.getPayDetail()).getData();
             pInfo.setPayDetail(payDetail1);
             String payInfoPayAllDetail = "";
@@ -845,9 +693,6 @@ public class PayableInfoController {
                 }
                 notPayDetail1 = notPayDetail1.endsWith("/") == true ? notPayDetail1.substring(0, notPayDetail1.length() - 1) : notPayDetail1;
             }
-//            System.out.println(payOrderList.size());
-//            System.out.println(payDetail1 + "-------------------------payDetail1-------------------------");
-//            System.out.println(notPayDetail1 + "-------------------notPayDetail1-----------------------");
 
             pInfo.setNotPayDetail(notPayDetail1);
             pInfo.setNotPaySize(notPaySize);
@@ -865,153 +710,105 @@ public class PayableInfoController {
             }
             pInfo.setPayOrderLoan(payOrderLoan);
             one.setNotPayDetail(notPayDetail1);
-//            System.out.println(pInfo);
             payOrderService.updateById(one);
             payableInfoService.updateById(pInfo);
         }
     }
 
 
-//    /**
-//     * 根据订单编号修改相应的缴费订单
-//     *
-//     * @param orderNo
-//     */
-//    @GetMapping("tt")
-//    public void updatePayinfoByOrder(String orderNo) {
-//        QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
-//        wrapper.eq("order_no", orderNo);
-//        PayOrderEntity one = payOrderService.getOne(wrapper);
-//        String parentOrderNo = "";
-//        BigDecimal parentOrderLone = BigDecimal.ZERO.setScale(2,BigDecimal.ROUND_HALF_UP);
-//        if (one.getParentOrder() == null) {
-//            if (one.getNotPaySize() == 0) {
-//                one.setStatus("2");
-//            } else {
-//                one.setStatus("3");
-//            }
-//            //TODO 更新缴费订单的贷款金额
-//            parentOrderNo = one.getOrderNo();
-//            parentOrderLone = parentOrderLone.add(one.getPayOrderLoan()).setScale(2,BigDecimal.ROUND_HALF_UP);
-//        } else {
-//            parentOrderNo = one.getParentOrder();
-//            PayOrderEntity byOrderNo = payOrderService.getByOrderNo(parentOrderNo);
-//            parentOrderLone = parentOrderLone.add(byOrderNo.getPayOrderLoan()).setScale(2,BigDecimal.ROUND_HALF_UP);
-//
-//            one.setStatus("2");
-//        }
-//
-//
-//        payOrderService.updateById(one);
-//        String payDetail = "";
-//        if (StringUtils.hasText(one.getPayDetail())) {
-//            payDetail = one.getPayDetail();
-//        }
-//        String notPayDetail = "";
-//        if (StringUtils.hasText(one.getNotPayDetail())) {
-//            notPayDetail = one.getNotPayDetail();
-//        }
-//
-//        Integer notPaySize = one.getNotPaySize();
-//        String payYear = one.getPayYear();
-//        String studentName = one.getStudentName();
-//        String payForIdentify = one.getPayForIdentify();
-//        String payItem = one.getPayItem();
-//        BigDecimal payOrderLoan = one.getPayOrderLoan();
-//        PayableInfoEntity payableInfoEntity = new PayableInfoEntity();
-//        PayableInfoWaterEntity payableInfoWaterEntity = new PayableInfoWaterEntity();
-//        if (payItem.equals("水费缴纳")) {
-//            QueryWrapper<PayableInfoWaterEntity> wrapper1 = new QueryWrapper<>();
-//            wrapper1.eq("student_no", payForIdentify)
-//                    .eq("student_name", studentName)
-//                    .eq("pay_month", payYear);
-//            PayableInfoWaterEntity water = payableInfoWaterService.getOne(wrapper1);
-//            water.setPayItemType("2");
-//            if (water.getPayFinishTime() == null) {
-//                water.setPayFinishTime(LocalDateTime.now());
-//            }
-//            payableInfoWaterService.updateById(water);
-//
-//        }else {
-//            QueryWrapper<PayableInfoEntity> wrapper1 = new QueryWrapper<>();
-//            wrapper1.eq("student_no", payForIdentify)
-//                    .eq("student_name", studentName)
-//                    .eq("years", payYear);
-//            PayableInfoEntity pInfo = payableInfoService.getOne(wrapper1);
-//            String notPayDetail1 = "";
-//            String payDetail1 = "";
-//            System.out.println(parentOrderNo);
-//            List<PayOrderEntity> payOrderList = payOrderService.queryAllOrderByParent(parentOrderNo, new PageParam()).getList();
-//            if (payOrderList.size() > 0) {
-//
-//                for (int i = 0; i < payOrderList.size(); i++) {
-//                    System.out.println(payOrderList.get(i));
-//
-//                    // System.out.println(payOrderList.get(i));
-//                    // parentOrderLone  = parentOrderLone.add(payOrderList.get(i).getPayOrderLoan()).setScale(2,BigDecimal.ROUND_HALF_UP);
-////                if (StringUtils.hasText(payOrderList.get(i).getNotPayDetail() )) {
-////                    notPayDetail1 = payOrderList.get(i).getNotPayDetail() + "/";
-////                }
-//
-//
-//                    if (StringUtils.hasText(payOrderList.get(i).getPayDetail())) {
-//                        payDetail1 += payOrderList.get(i).getPayDetail() + "/";
-//                    }
-//                    if (StringUtils.hasText(payOrderList.get(payOrderList.size() - 1).getNotPayDetail())) {
-//                        notPayDetail1 = payOrderList.get(payOrderList.size() - 1).getNotPayDetail();
-//                    }
-//                    PayInfoDetailVO payInfoDetailVO = (PayInfoDetailVO) queryPayInfoDetail(String.valueOf(pInfo.getId()), pInfo.getPaymentItem(), payDetail1).getData();
-//                    //  System.out.println(payInfoDetailVO);
-////                if (StringUtils.hasText(payOrderList.get(i).getPayOrderLoan())) {
-////
-////                }
-//                    payOrderLoan = payOrderList.get(i).getPayOrderLoan();
-//                    pInfo.setPayOrderLoan(payOrderLoan);
-//                }
-//            }
-////            if (StringUtils.hasText(pInfo.getNotPayDetail())) {
-////                notPayDetail1 += notPayDetail +"/";
-////            }
-////            if (StringUtils.hasText(pInfo.getPayDetail())) {
-////                payDetail1 += payDetail + "/";
-////            }
-//
-//            payDetail1 = payDetail1.endsWith("/") == true ? payDetail1.substring(0, payDetail1.length() - 1) : payDetail1;
-//            //notPayDetail1 =  notPayDetail1.endsWith("/") == true ? notPayDetail1.substring(0,notPayDetail1.length() -1 ) : notPayDetail1;
-//            // notPayDetail1= notPayDetail1.startsWith("/") == true ? notPayDetail1.substring(1) : notPayDetail1;
-//            //  payDetail1= payDetail1.startsWith("/") == true ? payDetail1.substring(1) : payDetail1;
-//            PayInfoDetailVO payInfoDetailVO = (PayInfoDetailVO) this.queryPayInfoDetail(String.valueOf(pInfo.getId()), pInfo.getPaymentItem(), one.getPayDetail()).getData();
-//
-//            pInfo.setPayDetail(payDetail1);
-//            pInfo.setNotPayDetail(notPayDetail1);
-//            pInfo.setNotPaySize(notPaySize);
-//            if (pInfo.getPayFinishTime() == null) {
-//                pInfo.setPayFinishTime(LocalDateTime.now());
-//            }
-//            //当所有待缴费明细的数量为0 时表示该订单已经完成缴费
-////            QueryWrapper<PayOrderEntity> wrapper2 = new QueryWrapper<>();
-////            wrapper2.eq("order_no", one.getParentOrder());
-////            PayOrderEntity one1 = payOrderService.getOne(wrapper2);
-//            if (one != null) {
-//                if (notPaySize == 0) {
-//                    pInfo.setPayItemType("2");
-//                } else {
-//                    pInfo.setPayItemType("3");
-//                }
-//            }
-//            pInfo.setPayOrderLoan(parentOrderLone);
-//            payableInfoService.updateById(pInfo);
-//        }
-//    }
+    /**
+     * 通过缴费项目名称获取缴费明细
+     *
+     * @param itemName
+     * @return
+     */
+    @GetMapping("queryByItemGetDetail")
+    public CommonResult<ItemInfoDetailVO> queryByItemGetDetail(@RequestParam("itemName") String itemName) {
+        String detailStr = "";
+        ItemInfoDetailVO itemInfoDetailVO = new ItemInfoDetailVO();
+        itemInfoDetailVO.setItemName(itemName);
+        if (!itemName.equals("水费缴纳")) {
+            QueryWrapper<PayableInfoEntity> info = new QueryWrapper<>();
+            info.eq("payment_item", itemName)
+                    .last("limit 1");
+            PayableInfoEntity infoOne = payableInfoService.getOne(info);
+            if (infoOne == null) {
+                return CommonResult.ok().setResult(itemInfoDetailVO);
+            }
+            if (StringUtils.hasText(infoOne.getNotMustMoney())) {
+                String notMustMoney = infoOne.getNotMustMoney();
+                String[] notSplit = notMustMoney.split("/");
+                for (int i = 0; i < notSplit.length; i++) {
+                    detailStr += notSplit[i].split(":")[0] + "/";
+                }
+            }
+            if (StringUtils.hasText(infoOne.getMustMoney())) {
+                String mustMoney = infoOne.getMustMoney();
+                String[] split = mustMoney.split("/");
+                for (int i = 0; i < split.length; i++) {
+                    detailStr += split[i].split(":")[0] + "/";
+                }
+            }
+            if (detailStr.endsWith("/")) {
+                detailStr = detailStr.substring(0, detailStr.length() - 1);
+            }
+            if (!detailStr.contains("/")) {
+                detailStr = itemName;
+            }
+        } else {
+            detailStr = itemName;
+        }
 
 
-//    /**
-//     * 根据缴费项目查询所有的缴费明细用于选定明细金额进入的账户(建行/农商)
-//     * @param itemName
-//     * @return
-//     */
-//    @GetMapping("/queryItemDetail")
-//     public CommonResult<T> queryItemDetail(String itemName){
-//        return CommonResult.ok();
-//     }
+        itemInfoDetailVO.setItemNameDetail(detailStr);
+
+        return CommonResult.ok().setResult(itemInfoDetailVO);
+    }
+
+
+    /**
+     * 通过缴费项目查询项目的所有缴费明细
+     * @param itemName
+     * @return
+     */
+    @GetMapping("queryInfoAllDetailByItem")
+    public CommonResult<T> queryInfoAllDetailByItem( @RequestParam("itemName") String itemName){
+        String detailStr = "";
+        if (itemName.equals("水费缴纳")){
+            detailStr = itemName;
+        }else {
+            QueryWrapper<PayableInfoEntity> info = new QueryWrapper<>();
+
+            info.eq("payment_item", itemName)
+                .last("limit 1");
+            PayableInfoEntity one = payableInfoService.getOne(info);
+            if (one == null) {
+                return CommonResult.ok().setResult("该项目暂无缴费明细");
+            }
+            String notMustMoney = "";
+            String mustMoney = "";
+            if (one.getNotMustMoney() != null && !one.getNotMustMoney().equals("")) {
+                String[] split = one.getNotMustMoney().split("/");
+                for (int i = 0; i < split.length; i++) {
+                    notMustMoney += split[i].split(":")[0] +"/";
+                }
+            }
+            if (one.getMustMoney() != null) {
+                String[] split = one.getMustMoney().split("/");
+                for (int i = 0; i < split.length; i++) {
+                    mustMoney += split[i].split(":")[0] +"/";
+                }
+            }
+            if (notMustMoney.equals("")) {
+                mustMoney = mustMoney.endsWith("/") == true ? mustMoney.substring(0,mustMoney.length()-1) :mustMoney;
+                detailStr = mustMoney;
+            }else {
+                notMustMoney = notMustMoney.endsWith("/") == true ? notMustMoney.substring(0,notMustMoney.length()-1) :notMustMoney;
+                detailStr = mustMoney + notMustMoney;
+            }
+
+        }
+
+        return CommonResult.ok().setResult(detailStr);
+    }
 }

+ 30 - 13
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/PayableInfoWaterController.java

@@ -1,5 +1,6 @@
 package com.chuanghai.smartschool.tuitionpayment.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.chuanghai.smartschool.tuitionpayment.anno.AdminLoginCheck;
 import com.chuanghai.smartschool.tuitionpayment.common.exception.BizCodeEnume;
 import com.chuanghai.smartschool.tuitionpayment.common.exception.RRException;
@@ -52,7 +53,7 @@ public class PayableInfoWaterController {
     @PostMapping("importWaterByExcel")
     @AdminLoginCheck
     public CommonResult<String> importWaterByExcel(@RequestHeader("admin_token") String adminToken,
-                                              @RequestParam MultipartFile file) throws IOException {
+                                                   @RequestParam MultipartFile file) throws IOException {
         if (file.isEmpty()) {
             throw new RRException(BizCodeEnume.PARAMETER_ERROR, "文件不能为空");
         }
@@ -64,19 +65,20 @@ public class PayableInfoWaterController {
      * 更新缴费订单的时间参数
      */
     @PutMapping("updatePayInfoWater")
-    public CommonResult<T> updatePayInfoWater( ) {
+    public CommonResult<T> updatePayInfoWater() {
 
         //更新时间等参数
         List<PayableInfoWaterEntity> InfoEntityList = payableInfoWaterService.list();
         List<PayableInfoWaterEntity> objectList = new ArrayList<>();
         InfoEntityList.forEach(payableInfoWaterEntity -> {
-           // String cardNumber = payableInfoController.getCardNumberByIdCard(payableInfoWaterEntity.getStudentNo(),null,null,null);
+            String cardNumberByIdCard = payableInfoController.getCardNumberByIdCard(payableInfoWaterEntity.getStudentNo(), "1", payableInfoWaterEntity.getStudentNo(), "2", payableInfoWaterEntity.getGrade());
 
-            payableInfoWaterEntity.setCardNumber(payableInfoWaterEntity.getStudentNo());
+            payableInfoWaterEntity.setCardNumber(cardNumberByIdCard);
             payableInfoWaterEntity.setPayCreateTime(LocalDateTime.now());
             payableInfoWaterEntity.setPayItemType("1");
             payableInfoWaterEntity.setPayNoticeType("1");
-            payableInfoWaterEntity.setPayableAccount(payableInfoService.queryPayItemByName(payableInfoWaterEntity.getPaymentItem()));
+            payableInfoWaterEntity.getPayAmountDetail();
+          //  payableInfoWaterEntity.setPayableAccount(payableInfoService.queryPayItemByName(payableInfoWaterEntity.getPaymentItem()));
             objectList.add(payableInfoWaterEntity);
         });
         payableInfoWaterService.updateBatchById(objectList);
@@ -99,22 +101,37 @@ public class PayableInfoWaterController {
 
     /**
      * 修改学生宿舍信息
+     *
      * @param id
      * @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) {
         PayableInfoWaterEntity waterEntity = new PayableInfoWaterEntity();
         Long ID = Long.parseLong(id);
         waterEntity.setDorm(dorm);
-        if (dorm.contains("栋")) {
-            String[] dormSplit = dorm.split("栋");
-            if (dormSplit[1].length() != 3) {
-                throw new RRException(BizCodeEnume.VAILD_EXCEPTION, "宿舍信息填写异常");
-            }
+        if (!dorm.contains("栋")) {
+            throw new RRException(BizCodeEnume.VAILD_EXCEPTION, "宿舍信息填写异常");
         }
         waterEntity.setId(ID);
-        boolean b = payableInfoWaterService.updateById(waterEntity);
-        return CommonResult.ok().setResult(b);
+        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);
+        }
+
+        return CommonResult.ok().setResult(Boolean.TRUE);
     }
 }

+ 76 - 50
src/main/java/com/chuanghai/smartschool/tuitionpayment/controller/WechatController.java

@@ -4,6 +4,8 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.chuanghai.smartschool.tuitionpayment.common.exception.BizCodeEnume;
+import com.chuanghai.smartschool.tuitionpayment.common.exception.RRException;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.CommonResult;
 import com.chuanghai.smartschool.tuitionpayment.config.WechatConfig;
 import com.chuanghai.smartschool.tuitionpayment.config.WeixiaoConfig;
@@ -151,7 +153,6 @@ public class WechatController {
             Map<String, Object> jsonMap = mapper.readValue(tokenResponse.getBody(), new TypeReference<Map<String, Object>>() {
             });
             String accessToken = (String) jsonMap.get("access_token");
-            accessTokenPublic = accessToken;
 
             // token换取用户信息
             String userInfoUrl = "https://open.wecard.qq.com/connect/oauth/get-user-info";
@@ -172,48 +173,34 @@ public class WechatController {
     }
 
 
+    /**
+     * 获取微校的应用有效凭证 7200s有效 两小时内有效
+     * @return
+     */
+    @Scheduled(fixedDelay = 7190000)
+    public void  getWeiXiaoToken() {
+        try {
+
+            RestTemplate client = new RestTemplate();
+            ObjectMapper mapper = new ObjectMapper();
+            String userInfoUrl = "https://open.wecard.qq.com/cgi-bin/oauth2/token";
+            Map<String, String> userInfoParam = new HashMap<>();
+            userInfoParam.put("app_key", weixiaoConfig.getAppKey());
+            userInfoParam.put("app_secret", weixiaoConfig.getAppSecret());
+            userInfoParam.put("grant_type", "client_credentials");
+            userInfoParam.put("scope", "base");
+            userInfoParam.put("ocode", "1015730314");
+            ResponseEntity<String> userInfoResponse = client.postForEntity(userInfoUrl, userInfoParam, String.class);
+
+            Map<String, Object> userInfoMap = mapper.readValue(userInfoResponse.getBody(), new TypeReference<Map<String, Object>>() {
+            });
+            accessTokenPublic  = userInfoMap.get("access_token").toString();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
 
-//    /**
-//     * 查询用户的基本信息
-//     *
-//     * @param cardNumber
-//     * @param name
-//     * @return
-//     */
-//    public PayableInfoStudentResultVO queryStudentInfo(String cardNumber, String name) {
-//        PayableInfoStudentResultVO payableInfoStudentResultVO = new PayableInfoStudentResultVO();
-//        QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
-//        QueryWrapper<PayableInfoWaterEntity> wrapper1 = new QueryWrapper<>();
-//        wrapper.eq("student_no", cardNumber)
-//                .eq("student_name", name);
-//        wrapper1.eq("student_no", cardNumber)
-//                .eq("student_name", name);
-//        List<PayableInfoWaterEntity> waterList = payableInfoWaterService.list(wrapper1);
-//        if (waterList.size() > 0) {
-//            waterList.forEach(water -> {
-//                payableInfoStudentResultVO.setIdCard(cardNumber);
-//                payableInfoStudentResultVO.setStudentName(name);
-//                payableInfoStudentResultVO.setMajor(water.getCollegeName() + water.getClassName());
-//            });
-//        }
-//
-//        List<PayableInfoEntity> infoList = payableInfoService.list(wrapper);
-//        if (infoList.size() > 0) {
-//            infoList.forEach(info -> {
-//                payableInfoStudentResultVO.setIdCard(cardNumber);
-//                payableInfoStudentResultVO.setStudentName(name);
-//                if (info.getCollegeName() != null || info.getClassName() != null) {
-//
-//                }
-//                payableInfoStudentResultVO.setMajor(info.getCollegeName() + info.getClassName());
-//            });
-//        }
-//
-//
-//        return payableInfoStudentResultVO;
-
-//
-//    }
 
     public PayableInfoStudentResultVO queryStudent() {
         PayableInfoStudentResultVO payableInfoStudentResultVO = new PayableInfoStudentResultVO();
@@ -253,9 +240,13 @@ public class WechatController {
     public CommonResult<T> oneKey(String itemName) {
         WeixiaoVO weixiaoVO = new WeixiaoVO();
         QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
+        QueryWrapper<PayableInfoWaterEntity> water = new QueryWrapper<>();
         wrapper.eq("pay_notice_type", "1")
                 .eq("payment_item", itemName);
+        water.eq("pay_notice_type", "1")
+                .eq("payment_item", itemName);
         List<PayableInfoEntity> payableInfoEntityList = payableInfoService.list(wrapper);
+        List<PayableInfoWaterEntity> payableInfoWaterEntityList = payableInfoWaterService.list(water);
 
         List<String> cardNumberList = new ArrayList<>();
         if (payableInfoEntityList.size() > 0) {
@@ -265,6 +256,13 @@ public class WechatController {
                 payableInfoService.updateById(payableInfoEntity);
             });
         }
+        if (payableInfoWaterEntityList.size() > 0) {
+            payableInfoWaterEntityList.forEach(payableInfoEntityWater -> {
+                payableInfoEntityWater.setPayNoticeType("2");
+                cardNumberList.add(payableInfoEntityWater.getCardNumber());
+                payableInfoWaterService.updateById(payableInfoEntityWater);
+            });
+        }
         weixiaoVO.setCardNumberList(cardNumberList);
         weixiaoVO.setTitle(itemName + "缴纳通知");
         weixiaoVO.setSender("财务办公室");
@@ -274,7 +272,7 @@ public class WechatController {
     }
 
     /**
-     * 实现同步下发缴费订单功能
+     * 实现催缴下发缴费订单功能
      *
      * @param jsonObject
      * @return
@@ -284,6 +282,29 @@ public class WechatController {
     public CommonResult<T> oneKeyNotice(@RequestBody JSONObject jsonObject) {
         String itemName = jsonObject.get("itemName").toString();
         JSONArray cardNumberList = jsonObject.getJSONArray("cardNumberList");
+        if (cardNumberList.size() == 0) {
+            QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
+            QueryWrapper<PayableInfoWaterEntity> water = new QueryWrapper<>();
+            wrapper.in("pay_item_type", "1","3")
+                    .eq("payment_item", itemName);
+            water.eq("pay_notice_type", "1")
+                    .eq("payment_item", itemName);
+            List<PayableInfoEntity> payableInfoEntityList = payableInfoService.list(wrapper);
+            List<PayableInfoWaterEntity> payableInfoWaterEntityList = payableInfoWaterService.list(water);
+
+            if (payableInfoEntityList.size() > 0) {
+                payableInfoEntityList.forEach(payableInfoEntity -> {
+                    cardNumberList.add(payableInfoEntity.getCardNumber());
+                });
+            }
+            if (payableInfoWaterEntityList.size() > 0) {
+                payableInfoWaterEntityList.forEach(payableInfoEntityWater -> {
+                    cardNumberList.add(payableInfoEntityWater.getCardNumber());
+                });
+            }
+        }
+
+
         WeixiaoVO weixiaoVO = new WeixiaoVO();
         weixiaoVO.setCardNumberList(cardNumberList);
         weixiaoVO.setTitle(itemName + "催缴通知");
@@ -291,7 +312,8 @@ public class WechatController {
         weixiaoVO.setContent("同学你好," + weixiaoVO.getTitle() + "缴费已经开始,请尽快查看缴费详情完成缴费,谢谢合作!");
         JSONObject json = (JSONObject) JSONObject.toJSON(weixiaoVO);
         return notice(json);
-    }
+
+}
 
     /**
      * @param jsonObject 封装了发送微校通知的参数信息
@@ -309,12 +331,16 @@ public class WechatController {
         param.put("content", weixiaoVO.getContent());
         param.put("sender", weixiaoVO.getSender());
         String url = "https://open.wecard.qq.com/cgi-bin/notice/send?access_token=" + accessTokenPublic;
+        try {
+            RestTemplate restTemplate = new RestTemplate();
+            HttpHeaders headers = new HttpHeaders();
+            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){
+            throw new RRException(BizCodeEnume.TOKET_INVALID);
+        }
 
-        RestTemplate restTemplate = new RestTemplate();
-        HttpHeaders headers = new HttpHeaders();
-        headers.setContentType(MediaType.APPLICATION_JSON);
-        HttpEntity<Map<String, String>> request = new HttpEntity<>(param, headers);
-        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, request, String.class);
         return CommonResult.ok();
     }
 
@@ -360,7 +386,7 @@ public class WechatController {
     }
 
     /**
-     * 每天执行一次催缴
+     * 每天执行一次催缴 下午15点
      */
 //    @Scheduled(fixedDelay = 20000)
     @Scheduled(cron = "0 0 15 * * ?")

+ 15 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/dao/BankDao.java

@@ -0,0 +1,15 @@
+package com.chuanghai.smartschool.tuitionpayment.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.smartschool.tuitionpayment.entity.Bank;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/20 星期三 19:32
+ * @Description: com.chuanghai.smartschool.tuitionpayment.dao
+ * @Version: 1.0
+ */
+@Mapper
+public interface BankDao extends BaseMapper<Bank> {
+}

+ 15 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/dao/BankDetailDao.java

@@ -0,0 +1,15 @@
+package com.chuanghai.smartschool.tuitionpayment.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.smartschool.tuitionpayment.entity.BankDetail;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/20 星期三 19:32
+ * @Description: com.chuanghai.smartschool.tuitionpayment.dao
+ * @Version: 1.0
+ */
+@Mapper
+public interface BankDetailDao extends BaseMapper<BankDetail> {
+}

+ 15 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/dao/BankItemDetailDao.java

@@ -0,0 +1,15 @@
+package com.chuanghai.smartschool.tuitionpayment.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.chuanghai.smartschool.tuitionpayment.entity.BankItemDetail;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/20 星期三 19:32
+ * @Description: com.chuanghai.smartschool.tuitionpayment.dao
+ * @Version: 1.0
+ */
+@Mapper
+public interface BankItemDetailDao extends BaseMapper<BankItemDetail> {
+}

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

@@ -0,0 +1,55 @@
+package com.chuanghai.smartschool.tuitionpayment.entity;
+
+import lombok.Data;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/19 星期二 16:10
+ * @Description: com.chuanghai.smartschool.tuitionpayment.entity
+ * @Version: 1.0
+ */
+@Data
+public class Bank {
+    /**
+     * 主键ID
+     */
+    private Integer id;
+    /**
+     * 银行名称
+     */
+    private String bankName;
+    /**
+     * 门店名称
+     */
+    private String bankStoreName;
+    /**
+     * 门店编号
+     */
+    private String bankStoreNo;
+
+    /**
+     * 商户编号
+     */
+    private String bankMchidNo;
+    /**
+     * 商户名称
+     */
+    private String bankMchidName;
+    /**
+     * 对应openId  只有农商行拥有
+     */
+    private String openId;
+    /**
+     * 对应openKey  只有农商行拥有
+     */
+    private String openKey;
+    /**
+     * 银行卡号
+     */
+    private String bankCardNumber;
+    /**
+     * 到账单位
+     */
+    private String toUnit;
+
+}

+ 63 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/BankDetail.java

@@ -0,0 +1,63 @@
+package com.chuanghai.smartschool.tuitionpayment.entity;
+
+import lombok.Data;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/19 星期二 16:10
+ * @Description: com.chuanghai.smartschool.tuitionpayment.entity
+ * @Version: 1.0
+ */
+@Data
+public class BankDetail {
+    /**
+     * 主键ID
+     */
+    private String id;
+    /**
+     * 银行名称
+     */
+    private String bankName;
+    /**
+     * 门店名称
+     */
+    private String bankStoreName;
+    /**
+     * 门店编号
+     */
+    private String bankStoreNo;
+
+    /**
+     * 商户编号
+     */
+    private String bankMchidNo;
+    /**
+     * 商户名称
+     */
+    private String bankMchidName;
+    /**
+     * 对应openId  只有农商行拥有
+     */
+    private String openId;
+    /**
+     * 对应openKey  只有农商行拥有
+     */
+    private String openKey;
+    /**
+     * 银行卡号
+     */
+    private String bankCardNumber;
+    /**
+     * 到账单位
+     */
+    private String toUnit;
+
+    /**
+     * 银行收费明细
+     */
+    private String bankDetailStr;
+    /**
+     * 缴费项目
+     */
+    private String itemName;
+}

+ 29 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/BankItemDetail.java

@@ -0,0 +1,29 @@
+package com.chuanghai.smartschool.tuitionpayment.entity;
+
+import lombok.Data;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/21 星期四 15:01
+ * @Description: com.chuanghai.smartschool.tuitionpayment.entity
+ * @Version: 1.0
+ */
+@Data
+public class BankItemDetail {
+    /**
+     * 主键编号
+     */
+    private Integer id;
+    /**
+     * 缴费项目名称
+     */
+    private String itemName;
+    /**
+     * 银行ID
+     */
+    private Integer bankId;
+    /**
+     * 银行收费详情
+     */
+    private String bankDetailStr;
+}

+ 1 - 11
src/main/java/com/chuanghai/smartschool/tuitionpayment/entity/PayItem.java

@@ -1,11 +1,8 @@
 package com.chuanghai.smartschool.tuitionpayment.entity;
 
 import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
 
-import java.util.Arrays;
-
 /**
  * @Author: bingo
  * @Date: 2022/6/22 星期三 14:22
@@ -27,14 +24,7 @@ public class PayItem {
      * 项目状态
      */
     private String itemStatus;
-    /**
-     * 项目缴费银行
-     */
-    private String itemBank;
-    /**
-     * 项目缴费账户
-     */
-    private String itemAccount;
+
 
     /**
      * 可缴费年级 [1,2,3,4,5]

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

@@ -177,7 +177,7 @@ public class PayOrderEntity implements Serializable {
 	 */
 	@ExcelProperty("宿舍")
 	@ColumnWidth(15)
-	private String drom ;
+	private String dorm ;
 
 
 }

+ 13 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/BankDetailService.java

@@ -0,0 +1,13 @@
+package com.chuanghai.smartschool.tuitionpayment.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.chuanghai.smartschool.tuitionpayment.entity.BankDetail;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/20 星期三 19:29
+ * @Description: com.chuanghai.smartschool.tuitionpayment.service
+ * @Version: 1.0
+ */
+public interface BankDetailService  extends IService<BankDetail> {
+}

+ 13 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/BankItemDetailService.java

@@ -0,0 +1,13 @@
+package com.chuanghai.smartschool.tuitionpayment.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.chuanghai.smartschool.tuitionpayment.entity.BankItemDetail;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/21 星期四 15:05
+ * @Description: com.chuanghai.smartschool.tuitionpayment.service
+ * @Version: 1.0
+ */
+public interface BankItemDetailService extends IService<BankItemDetail> {
+}

+ 13 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/BankService.java

@@ -0,0 +1,13 @@
+package com.chuanghai.smartschool.tuitionpayment.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.chuanghai.smartschool.tuitionpayment.entity.Bank;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/20 星期三 19:29
+ * @Description: com.chuanghai.smartschool.tuitionpayment.service
+ * @Version: 1.0
+ */
+public interface BankService extends IService<Bank> {
+}

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

@@ -38,7 +38,10 @@ public interface PayOrderService extends IService<PayOrderEntity> {
      */
     boolean isAlreadyPay(String studentNo, String itemName, String payYears, Integer notPaySize, String payMethod, String payDetail);
 
+    boolean isAlreadyPayWater(String dorm, String itemName, String payYears);
+
     List<CreateOrderResultVO> createOrder(String cardNumber, PayOrderReceiveVO payOrderReceiveVO);
+
     List<OrderReceiveTO> receiveOrder(String cardNumber, PayOrderReceiveVO payOrderReceiveVO);
 
     PayOrderEntity getByOrderNo(String orderNo);

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

@@ -1,16 +1,14 @@
 package com.chuanghai.smartschool.tuitionpayment.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.chuanghai.smartschool.tuitionpayment.common.utils.PageUtils;
 import com.chuanghai.smartschool.tuitionpayment.common.utils.PageParam;
+import com.chuanghai.smartschool.tuitionpayment.common.utils.PageUtils;
 import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoEntity;
 import com.chuanghai.smartschool.tuitionpayment.to.PayOrderQueryTO;
-import com.chuanghai.smartschool.tuitionpayment.vo.StudentPayableInfoVO;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
-import java.math.BigDecimal;
 import java.util.List;
 
 /**
@@ -26,7 +24,7 @@ public interface PayableInfoService extends IService<PayableInfoEntity> {
     String queryAmount( PayOrderQueryTO queryTO);
    // PageUtils queryPage(PayOrderQueryTO queryTO, PageParam pageParam);
 
-    String queryPayItemByName(String itemName);
+ //   String queryPayItemByName(String itemName);
 
     List<PayableInfoEntity> getPayableInfoByCardNumber(String cardNumber, String studentName);
 

+ 17 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/BankDetailServiceImpl.java

@@ -0,0 +1,17 @@
+package com.chuanghai.smartschool.tuitionpayment.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.chuanghai.smartschool.tuitionpayment.dao.BankDetailDao;
+import com.chuanghai.smartschool.tuitionpayment.entity.BankDetail;
+import com.chuanghai.smartschool.tuitionpayment.service.BankDetailService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/20 星期三 19:31
+ * @Description: com.chuanghai.smartschool.tuitionpayment.service.impl
+ * @Version: 1.0
+ */
+@Service("bankDetailService")
+public class BankDetailServiceImpl  extends ServiceImpl<BankDetailDao, BankDetail> implements BankDetailService {
+}

+ 21 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/BankItemDetailServiceImpl.java

@@ -0,0 +1,21 @@
+package com.chuanghai.smartschool.tuitionpayment.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.chuanghai.smartschool.tuitionpayment.dao.BankDao;
+import com.chuanghai.smartschool.tuitionpayment.dao.BankItemDetailDao;
+import com.chuanghai.smartschool.tuitionpayment.entity.Bank;
+import com.chuanghai.smartschool.tuitionpayment.entity.BankItemDetail;
+import com.chuanghai.smartschool.tuitionpayment.service.BankItemDetailService;
+import com.chuanghai.smartschool.tuitionpayment.service.BankService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/20 星期三 19:31
+ * @Description: com.chuanghai.smartschool.tuitionpayment.service.impl
+ * @Version: 1.0
+ */
+@Service("bankItemDetailService")
+public class BankItemDetailServiceImpl extends ServiceImpl< BankItemDetailDao ,BankItemDetail> implements BankItemDetailService {
+}
+

+ 17 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/BankServiceImpl.java

@@ -0,0 +1,17 @@
+package com.chuanghai.smartschool.tuitionpayment.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.chuanghai.smartschool.tuitionpayment.dao.BankDao;
+import com.chuanghai.smartschool.tuitionpayment.entity.Bank;
+import com.chuanghai.smartschool.tuitionpayment.service.BankService;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/20 星期三 19:31
+ * @Description: com.chuanghai.smartschool.tuitionpayment.service.impl
+ * @Version: 1.0
+ */
+@Service("bankService")
+public class BankServiceImpl extends ServiceImpl<BankDao, Bank> implements BankService {
+}

+ 279 - 186
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayOrderServiceImpl.java

@@ -18,6 +18,7 @@ import com.chuanghai.smartschool.tuitionpayment.entity.*;
 import com.chuanghai.smartschool.tuitionpayment.enume.PayMethod;
 import com.chuanghai.smartschool.tuitionpayment.enume.PayStatus;
 import com.chuanghai.smartschool.tuitionpayment.service.*;
+import com.chuanghai.smartschool.tuitionpayment.to.BankItemDetailTO.BankDetailListVO;
 import com.chuanghai.smartschool.tuitionpayment.to.OrderReceiveTO;
 import com.chuanghai.smartschool.tuitionpayment.to.PayOrderQueryTO;
 import com.chuanghai.smartschool.tuitionpayment.utils.MyUtil;
@@ -56,6 +57,8 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
     @Autowired
     private PayService payService;
     @Autowired
+    private BankService bankService;
+    @Autowired
     private PayOrderService payOrderService;
     @Autowired
     private PayItemController payItemController;
@@ -67,6 +70,10 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
     private PayableInfoController payableInfoController;
     @Autowired
     private PayDetailBankController payDetailBankController;
+    @Autowired
+    private BankDetailController bankDetailController;
+    @Autowired
+    private BankItemDetailController bankItemDetailController;
 
     @Override
     public PageUtils queryPage(PayOrderQueryTO queryTO, PageParam pageParam) {
@@ -172,6 +179,23 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
         }
     }
 
+    @Override
+    public boolean isAlreadyPayWater(String dorm, String itemName, String payYears) {
+        QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq("pay_item", itemName);
+        wrapper.eq(StringUtils.hasText(payYears), "pay_year", payYears);
+        wrapper.eq("dorm", dorm);
+        wrapper.eq("status", PayStatus.ALREADY_PAY.getCode());
+
+        List<PayOrderEntity> payList = this.list(wrapper);
+
+        if (payList != null && payList.size() > 0) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
     /**
      * 收集用户的支付参数信息
      *
@@ -181,7 +205,6 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
      */
     @Override
     public List<OrderReceiveTO> receiveOrder(String cardNumber, PayOrderReceiveVO payOrderReceiveVO) {
-        System.out.println(payOrderReceiveVO);
         List<OrderReceiveTO> orderReceiveTOList = new ArrayList<>();
         PayOrderReceiveVO payOrderReceiveVO1 = new PayOrderReceiveVO();
         //备份支付参数
@@ -191,109 +214,157 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
         String payOrderLoan = payOrderReceiveVO.getPayOrderLoan();
         payOrderLoan = payOrderLoan.equals("") == true ? "0" : payOrderLoan;
         //payOrderReceiveVO.setPayOrderLoan(payOrderLoan);
-        PayDetailBank payDetailBank = payDetailBankController.queryBank(itemName);
-        if (payDetailBank != null) {
-            //建设银行的支付明细
-            String ccbStr = payDetailBank.getCcbStr();
-            String[] ccbStrArr = ccbStr.split("/");
-            List<String> ccbStrList = new ArrayList<>(Arrays.asList(ccbStrArr));
-            //建行实际支付的明细
-            String ccbRealPayStr = "";
-            //农商银行的支付明细
-            String rcbStr = payDetailBank.getRcbStr();
-            String[] rcbStrArr = rcbStr.split("/");
-            List<String> rcbStrList = new ArrayList<>(Arrays.asList(rcbStrArr));
-            //农商实际支付的明细
-            String rcbRealPayStr = "";
-            //实际收集的订单支付明细
-            String[] payDetailArr = payDetail.split("/");
-            List<String> payDetailList = new ArrayList<>(Arrays.asList(payDetailArr));
-
-            //提取本次缴费中需要交付于建设银行的明细
-
-            List<String> accountIdList = payDetailList.stream().filter(ccbStrList::contains).collect(Collectors.toList());
-
-            for (int i = 0; i < accountIdList.size(); i++) {
-                ccbRealPayStr += accountIdList.get(i) + "/";
+        List<BankDetailListVO> bankDetailListVOS = bankItemDetailController.queryByItem(itemName);
+        String ccbStr = "";
+        String rcbStr = "";
+        for (int a = 0; a < bankDetailListVOS.size(); a++) {
+            if (bankDetailListVOS.get(a).getBankName().equals("建设银行")) {
+                ccbStr = bankDetailListVOS.get(a).getDetail();
             }
-            if (ccbRealPayStr.endsWith("/")) {
-                ccbRealPayStr = ccbRealPayStr.substring(0, ccbRealPayStr.length() - 1);
-            }
-            OrderReceiveTO orderReceiveTOCCB = new OrderReceiveTO();
-            orderReceiveTOCCB.setCardNumber(cardNumber);
-            payOrderReceiveVO.setPayDetail(ccbRealPayStr);
-            String[] ccbRealPaySplit = ccbRealPayStr.split("/");
-            BigDecimal payAmountCCB = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP);
-            if (!ccbRealPaySplit[0].isEmpty()) {
-                for (int i = 0; i < ccbRealPaySplit.length; i++) {
-                    String[] split = ccbRealPaySplit[i].split(":");
-                    String payAmountStr = ccbRealPaySplit[i].split(":")[1];
-                    payAmountCCB = payAmountCCB.add(new BigDecimal(payAmountStr).setScale(2, BigDecimal.ROUND_HALF_UP));
-                }
+            if (bankDetailListVOS.get(a).getBankName().equals("农商银行")) {
+                rcbStr = bankDetailListVOS.get(a).getDetail();
             }
+        }
 
-            if (!payOrderReceiveVO.getPayDetail().isEmpty()) {
-                if (!payOrderLoan.isEmpty()) {
-                    payAmountCCB = payAmountCCB.subtract(new BigDecimal(payOrderLoan)).setScale(2, BigDecimal.ROUND_HALF_UP);
-                }
 
-                payOrderReceiveVO.setNowRealPayAmount(payAmountCCB);
-                payOrderReceiveVO.setPayMethod("1");
-                orderReceiveTOCCB.setPayOrderReceiveVO(payOrderReceiveVO);
-                orderReceiveTOList.add(orderReceiveTOCCB);
-            }
-//---------------------------------------------------------------        生成农商银行的支付参数             ---------------------------------------------------
-            String payDetail1 = payOrderReceiveVO1.getPayDetail();
-            String[] payDetailArr1 = payDetail1.split("/");
-            List<String> payDetailList1 = new ArrayList<>(Arrays.asList(payDetailArr1));
-            List<String> accountIdList1 = payDetailList1.stream().filter(rcbStrList::contains).collect(Collectors.toList());
-
-            //提取本次缴费中需要交付于建设银行的明细
-            for (int i = 0; i < accountIdList1.size(); i++) {
-                rcbRealPayStr += accountIdList1.get(i) + "/";
+        //建设银行的支付明细
+        String[] ccbStrArr = new String[20];
+        if (itemName.equals("水费缴纳")) {
+            String detailWater = "";
+            String[] split = payDetail.split("/");
+            for (int m = 0; m < split.length; m++) {
+                detailWater += split[m].split(":")[0] + "/";
             }
-            if (rcbRealPayStr.endsWith("/")) {
-                rcbRealPayStr = rcbRealPayStr.substring(0, rcbRealPayStr.length() - 1);
+            if (detailWater.endsWith("/")) {
+                detailWater = detailWater.substring(0, detailWater.length() - 1);
             }
-            OrderReceiveTO orderReceiveTORCB = new OrderReceiveTO();
-            orderReceiveTORCB.setCardNumber(cardNumber);
-            payOrderReceiveVO1.setPayDetail(rcbRealPayStr);
-            String[] rcbRealPaySplit = rcbRealPayStr.split("/");
-            BigDecimal payAmountRCB = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP);
-            if (!rcbRealPaySplit[0].isEmpty()) {
-                for (int i = 0; i < rcbRealPaySplit.length; i++) {
-                    String payAmountStr = rcbRealPaySplit[i].split(":")[1];
-                    payAmountRCB = payAmountRCB.add(new BigDecimal(payAmountStr).setScale(2, BigDecimal.ROUND_HALF_UP));
+            ccbStr = detailWater;
+        }
+        if (ccbStr != null) {
+            ccbStrArr = ccbStr.split("/");
+        }
+        List<String> ccbStrList = new ArrayList<>(Arrays.asList(ccbStrArr));
+        //建行实际支付的明细
+        String ccbRealPayStr = "";
+        //农商银行的支付明细
+        String[] rcbStrArr = new String[20];
+        if (rcbStr != null) {
+            rcbStrArr = rcbStr.split("/");
+        }
+        List<String> rcbStrList = new ArrayList<>(Arrays.asList(rcbStrArr));
+        //农商实际支付的明细
+        String rcbRealPayStr = "";
+        //实际收集的订单支付明细
+        String[] payDetailArr = payDetail.split("/");
+        String realDetailStr = "";
+        for (int i = 0; i < payDetailArr.length; i++) {
+            realDetailStr += payDetailArr[i].split(":")[0] + "/";
+        }
+        if (realDetailStr.equals("/")) {
+            realDetailStr = realDetailStr.substring(0, realDetailStr.length() - 1);
+        }
+        //无支付金额的缴费明细
+        String[] payDetailArrNotAmount = realDetailStr.split("/");
+        List<String> payDetailList = new ArrayList<>(Arrays.asList(payDetailArrNotAmount));
+
+        //提取本次缴费中需要交付于建设银行的明细
+
+        List<String> accountIdList = payDetailList.stream().filter(ccbStrList::contains).collect(Collectors.toList());
+
+        for (int i = 0; i < accountIdList.size(); i++) {
+            for (int j = 0; j < payDetailArr.length; j++) {
+                if (payDetailArr[j].contains(accountIdList.get(i))) {
+                    ccbRealPayStr += payDetailArr[j] + "/";
                 }
             }
+        }
+        if (ccbRealPayStr.endsWith("/")) {
+            ccbRealPayStr = ccbRealPayStr.substring(0, ccbRealPayStr.length() - 1);
+        }
 
-            if (!payOrderReceiveVO1.getPayDetail().isEmpty()) {
-                payOrderReceiveVO1.setPayOrderLoan("0");
-                payOrderReceiveVO1.setNowRealPayAmount(payAmountRCB);
-                payOrderReceiveVO1.setPayMethod("2");
-                orderReceiveTORCB.setPayOrderReceiveVO(payOrderReceiveVO1);
-                orderReceiveTOList.add(orderReceiveTORCB);
+        OrderReceiveTO orderReceiveTOCCB = new OrderReceiveTO();
+        orderReceiveTOCCB.setCardNumber(cardNumber);
+        payOrderReceiveVO.setPayDetail(ccbRealPayStr);
+        String[] ccbRealPaySplit = ccbRealPayStr.split("/");
+        BigDecimal payAmountCCB = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP);
+        if (!ccbRealPaySplit[0].isEmpty()) {
+            for (int i = 0; i < ccbRealPaySplit.length; i++) {
+                String payAmountStr = ccbRealPaySplit[i].split(":")[1];
+                payAmountCCB = payAmountCCB.add(new BigDecimal(payAmountStr).setScale(2, BigDecimal.ROUND_HALF_UP));
             }
-        } else {
-            OrderReceiveTO orderReceiveTO = new OrderReceiveTO();
-            //支付方式根据项目的设置交付于规定的项目银行账户
-            String s = payItemController.queryPayItemByName(itemName);
-            if (s.contains("建设银行")) {
-                payOrderReceiveVO.setPayMethod("1");
-            } else if (s.contains("农商银行")) {
-                payOrderReceiveVO.setPayMethod("2");
+        }
+
+        if (!payOrderReceiveVO.getPayDetail().isEmpty()) {
+            if (!payOrderLoan.isEmpty()) {
+                payAmountCCB = payAmountCCB.subtract(new BigDecimal(payOrderLoan)).setScale(2, BigDecimal.ROUND_HALF_UP);
+            }
+            payOrderReceiveVO.setNowRealPayAmount(payAmountCCB);
 
+            //TODO
+//                String bankCard = bankDetailController.queryBankByDeatilItem(itemName, ccbRealPayStr);
+//                if (bankCard.contains("建设银行")) {
+//                    payOrderReceiveVO.setPayMethod("1");
+//                }
+            payOrderReceiveVO.setPayMethod("1");
+
+
+            orderReceiveTOCCB.setPayOrderReceiveVO(payOrderReceiveVO);
+            orderReceiveTOList.add(orderReceiveTOCCB);
+        }
+//---------------------------------------------------------------        生成农商银行的支付参数             ---------------------------------------------------
+        String payDetail1 = payOrderReceiveVO1.getPayDetail();
+        String[] payDetailArr1 = payDetail1.split("/");
+        String realDetailStr1 = "";
+        for (int i = 0; i < payDetailArr1.length; i++) {
+            realDetailStr1 += payDetailArr1[i].split(":")[0] + "/";
+        }
+        if (realDetailStr1.endsWith("/")) {
+            realDetailStr1 = realDetailStr1.substring(0, realDetailStr1.length() - 1);
+        }
+        //无支付金额的缴费明细
+        String[] payDetailArrNotAmount1 = realDetailStr1.split("/");
+        List<String> payDetailList1 = new ArrayList<>(Arrays.asList(payDetailArrNotAmount1));
+        //提取本次缴费中需要交付于农商银行的明细
+        List<String> accountIdList1 = payDetailList1.stream().filter(rcbStrList::contains).collect(Collectors.toList());
+
+        for (int i = 0; i < accountIdList1.size(); i++) {
+            for (int j = 0; j < payDetailArr1.length; j++) {
+                if (payDetailArr1[j].contains(accountIdList1.get(i))) {
+                    rcbRealPayStr += payDetailArr1[j] + "/";
+                }
+            }
+        }
+        if (rcbRealPayStr.endsWith("/")) {
+            rcbRealPayStr = rcbRealPayStr.substring(0, rcbRealPayStr.length() - 1);
+        }
+        OrderReceiveTO orderReceiveTORCB = new OrderReceiveTO();
+        orderReceiveTORCB.setCardNumber(cardNumber);
+        payOrderReceiveVO1.setPayDetail(rcbRealPayStr);
+        String[] rcbRealPaySplit = rcbRealPayStr.split("/");
+        BigDecimal payAmountRCB = BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP);
+        if (!rcbRealPaySplit[0].isEmpty()) {
+            for (int i = 0; i < rcbRealPaySplit.length; i++) {
+                String payAmountStr = rcbRealPaySplit[i].split(":")[1];
+                payAmountRCB = payAmountRCB.add(new BigDecimal(payAmountStr).setScale(2, BigDecimal.ROUND_HALF_UP));
             }
-            orderReceiveTO.setPayOrderReceiveVO(payOrderReceiveVO);
-            orderReceiveTO.setCardNumber(cardNumber);
-            orderReceiveTOList.add(orderReceiveTO);
-        }
-        System.out.println(orderReceiveTOList);
-//        orderReceiveTOList.forEach(orderList->{
-//            String cardNumber1 = orderList.getCardNumber();
-//            PayOrderReceiveVO payOrderReceiveVO2 = orderList.getPayOrderReceiveVO();
-//            createOrder(cardNumber1, payOrderReceiveVO2);
-//        });
+        }
+
+        if (!payOrderReceiveVO1.getPayDetail().isEmpty()) {
+            payOrderReceiveVO1.setPayOrderLoan("0");
+            payOrderReceiveVO1.setNowRealPayAmount(payAmountRCB);
+
+            //TODO
+//                String bankCard = bankDetailController.queryBankByDeatilItem(itemName, ccbRealPayStr);
+//                if (bankCard.contains("农商银行")) {
+//                    payOrderReceiveVO1.setPayMethod("2");
+//                }
+            payOrderReceiveVO1.setPayMethod("2");
+
+            orderReceiveTORCB.setPayOrderReceiveVO(payOrderReceiveVO1);
+            orderReceiveTOList.add(orderReceiveTORCB);
+
+        }
+
         return orderReceiveTOList;
     }
 
@@ -314,7 +385,10 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
             String cardNumber1 = orderReceiveTO.getCardNumber();
             PayOrderReceiveVO payOrderReceiveVO1 = orderReceiveTO.getPayOrderReceiveVO();
             String studentNo = payOrderReceiveVO1.getStudentNo();
-            String drom = payOrderReceiveVO1.getDrom();
+            String dorm = payOrderReceiveVO1.getDorm();
+            if (dorm == null || dorm.equals("")) {
+                dorm = "";
+            }
             String itemName = payOrderReceiveVO1.getItemName();
             String payDetial = payOrderReceiveVO1.getPayDetail();
             String payYear = payOrderReceiveVO1.getPayYear();
@@ -324,11 +398,24 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
             String payOrderLoan = payOrderReceiveVO1.getPayOrderLoan();
             payOrderLoan = payOrderLoan.equals("") == true ? "0" : payOrderLoan;
             BigDecimal orderLoan = new BigDecimal(payOrderLoan).setScale(2, BigDecimal.ROUND_HALF_UP);
+
+
             // 查询用户是否已经缴费
-            boolean alreadyPay = isAlreadyPay(studentNo, itemName, payYear, payOrderReceiveVO1.getNotPaySize(), payOrderReceiveVO1.getPayMethod(), payDetial);
-            if (alreadyPay) {
-                throw new RRException(BizCodeEnume.DATA_IS_EXIST, "学号【" + studentNo + "】已缴费,请勿重复缴费");
+            if (itemName.equals("水费缴纳")) {
+                // 判断水费是否缴纳
+                boolean alreadyPay = isAlreadyPayWater(dorm, itemName, payYear);
+                if (alreadyPay) {
+                    throw new RRException(BizCodeEnume.DATA_IS_EXIST, "宿舍【" + dorm + "】已缴费,请勿重复缴费");
+                }
+            } else {
+                // 判断除水费外其他费用是否缴纳
+                boolean alreadyPay = isAlreadyPay(studentNo, itemName, payYear, payOrderReceiveVO1.getNotPaySize(), payOrderReceiveVO1.getPayMethod(), payDetial);
+                if (alreadyPay) {
+                    throw new RRException(BizCodeEnume.DATA_IS_EXIST, "学号【" + studentNo + "】已缴费,请勿重复缴费");
+                }
             }
+
+
             PayableInfoEntity payableInfo = null;
             PayableInfoWaterEntity payableInfoWater = null;
             String grade = "";
@@ -361,17 +448,31 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
             // 获取当前支付方式
             String currentPayMethod = payMethodSettingService.getCurrentPayMethod();
 
-            QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
-            wrapper.eq("payer_identify", cardNumber1);
-            wrapper.eq("pay_for_identify", studentNo);
-            wrapper.eq("pay_item", itemName);
-            wrapper.eq("pay_detail", payDetial);
-            wrapper.in("pay_method", "1", "2");
-            wrapper.eq(StringUtils.hasText(payYear), "pay_year", payYear);
-            wrapper.eq("not_pay_size", payOrderReceiveVO1.getNotPaySize());
-            wrapper.orderByDesc("create_time");
-            wrapper.last("limit 1");
-            PayOrderEntity payOrderEntity = this.getOne(wrapper);
+
+            PayOrderEntity payOrderEntity = new PayOrderEntity();
+            if (itemName.equals("水费缴纳")) {
+                QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
+                wrapper.eq("dorm", dorm);
+                wrapper.eq("pay_item", itemName);
+                wrapper.eq(StringUtils.hasText(payYear), "pay_year", payYear);
+                wrapper.in("pay_method", "1", "2");
+                wrapper.orderByDesc("create_time");
+                wrapper.last("limit 1");
+                payOrderEntity = this.getOne(wrapper);
+            } else {
+                QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
+                wrapper.eq("payer_identify", cardNumber1);
+                wrapper.eq("pay_for_identify", studentNo);
+                wrapper.eq("pay_item", itemName);
+                wrapper.eq("pay_detail", payDetial);
+                wrapper.in("pay_method", "1", "2");
+                wrapper.eq(StringUtils.hasText(payYear), "pay_year", payYear);
+                wrapper.eq("not_pay_size", payOrderReceiveVO1.getNotPaySize());
+                wrapper.orderByDesc("create_time");
+                wrapper.last("limit 1");
+                payOrderEntity = this.getOne(wrapper);
+            }
+
 
             // 订单已经存在超过30分钟没有支付,直接删除该订单
             if (payOrderEntity != null && PayStatus.NON_PAY.getCode().equals(payOrderEntity.getStatus())) {
@@ -410,25 +511,25 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                 payOrderEntity.setPayYear(payYear);
                 payOrderEntity.setPayDetail(payDetial);
 
-                payOrderEntity.setOrderNotice(orderNotice);
                 payOrderEntity.setExceptType("1");
-                payOrderEntity.setPayBank(payItemController.queryPayItemByName(itemName));
-                //计算助学贷款相关的费用  第一次缴费使用助学贷款
-//                String payOrderLoan = "0";
-//                if (m == 0) {
-//                    payOrderLoan = payOrderReceiveVO1.getPayOrderLoan();
-//                }
-//                payOrderLoan = payOrderLoan.equals("") ? "0" : payOrderLoan;
-// ---               BigDecimal orderLoan = BigDecimal.ZERO;
 
+              //  String bankCard = bankDetailController.queryBankByDeatilItem(itemName, payOrderEntity.getPayDetail());
+
+                List<BankDetailListVO> bankDetailListVOS = bankItemDetailController.queryByItem(itemName);
+
+                for (int a = 0; a < bankDetailListVOS.size(); a++) {
+                    Integer bankId = bankDetailListVOS.get(a).getBankId();
+                    Bank bank = bankService.getById(bankId);
+                    if (payOrderEntity.getPayMethod().equals("1")) {
+                        payOrderEntity.setPayBank(bank.getBankStoreName() + " (" + bank.getBankCardNumber() + ")");
+                    }
+                    if (payOrderEntity.getPayMethod().equals("2")) {
+                        payOrderEntity.setPayBank(bank.getBankStoreName() + " (" + bank.getBankCardNumber() + ")");
+                    }
+                }
+              //  payOrderEntity.setPayBank(bankCard);
 
-//            if (StringUtils.hasText(payOrderLoan)) {
-//                orderLoan = orderLoan.add(new BigDecimal(payOrderLoan)).setScale(2,BigDecimal.ROUND_HALF_UP);
-//            }
 
-//                if (StringUtils.hasText(payOrderLoan)) {
-//                    orderLoan = orderLoan.add(new BigDecimal(payOrderLoan)).setScale(2, BigDecimal.ROUND_UP);
-//                }
                 payOrderEntity.setPayOrderLoan(orderLoan);
                 payOrderEntity.setPayMethod(payOrderReceiveVO1.getPayMethod());
 
@@ -436,7 +537,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                 // 支付金额、被支付用户信息
                 if (itemName.equals("水费缴纳")) {
                     //更新对应项目的缴费参数
-                    payOrderEntity.setDrom(drom.isEmpty() ? "" : drom);
+                    payOrderEntity.setDorm(dorm);
                     payOrderEntity.setRealPayAmount(payableInfoWater.getRealPayAmount());
                     //payOrderEntity.setNowPayAmount(payableInfoWater.getRealPayAmount());
                     payOrderEntity.setStudentName(payableInfoWater.getStudentName());
@@ -446,15 +547,6 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                     // payOrderEntity.setNowPayAmount(payInfoDetailVO.getPayDetailAmount());
                     payOrderEntity.setStudentName(payableInfo.getStudentName());
                     payOrderEntity.setClassName(payableInfo.getClassName());
-                    //更新缴费名单的缴费明细
-                    if (StringUtils.hasText(payableInfo.getPayDetail())) {
-                        payableInfo.setPayDetail(payableInfo.getPayDetail() + "/" + payDetial);
-                    } else {
-                        payableInfo.setPayDetail(payDetial);
-                    }
-                    payableInfo.setNotPayDetail(payOrderEntity.getNotPayDetail());
-                    payableInfo.setNotPaySize(payOrderReceiveVO1.getNotPaySize());
-                    //  payableInfoService.updateById(payableInfo);
 
                 }
                 BigDecimal parentNowPayDetailAmount = BigDecimal.ZERO;
@@ -467,27 +559,14 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                     wrapper1.eq("is_parent", "1");
                     wrapper1.eq(StringUtils.hasText(payYear), "pay_year", payYear);
                     wrapper1.in("status", "2", "3");
-//                wrapper1.orderByAsc("create_time");
-//                wrapper1.last("limit 1");
                     List<PayOrderEntity> payOrderList = this.list(wrapper1);
 
-                    // List<PayOrderEntity> payOrderList = queryAllOrderByParent(one.getOrderNo(), new PageParam()).getList();
-                    System.out.println(payInfoDetailVO);
                     for (int i = 0; i < payOrderList.size(); i++) {
-//                        System.out.println(payOrderList.get(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);
                     }
 
-//                    System.out.println(parentOrderLone);
-//                  //  parentNowPayDetailAmount = parentNowPayDetailAmount.add(parentOrderLone);
-//                    System.out.println(parentNowPayDetailAmount);
-//                    System.out.println(payInfoDetailVO+"------------1111111111111111111111");
                     BigDecimal notPayDetailAmount = payInfoDetailVO.getNotPayDetailAmount();
-                    // parentOrderLone = one.getPayOrderLoan().setScale(2, BigDecimal.ROUND_HALF_UP);
-                    //     payOrderEntity.setParentOrder(one.getOrderNo());
-                    // parentNowPayDetailAmount = (parentNowPayDetailAmount.add(one.getNowPayAmount())).setScale(2, BigDecimal.ROUND_HALF_UP);
-                    //  System.out.println(payOrderEntity.getRealPayAmount()+ " --- "+parentNowPayDetailAmount +"     "+notPayDetailAmount);
                     payOrderEntity.setNowPayAmount(
                             payOrderEntity.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP)
                                     .subtract(parentNowPayDetailAmount).setScale(2, BigDecimal.ROUND_HALF_UP)
@@ -509,37 +588,24 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
                 if (itemName.equals("水费缴纳")) {
                     flag = payOrderEntity.getNowPayAmount().compareTo(payableInfoWater.getRealPayAmount()) == 0 ? Boolean.TRUE : Boolean.FALSE;
                 } else {
-                    //  System.out.println(payOrderReceiveVO);
-                    System.out.println(payInfoDetailVO);
-                    //  System.out.println(payOrderEntity);
-                    //  System.out.println(payOrderEntity.getPayOrderLoan()+"       getPayOrderLoan");
-                    //   BigDecimal aBoolean = payOrderEntity.getNowPayAmount().add(payOrderEntity.getPayOrderLoan()).add(payInfoDetailVO.getNotPayDetailAmount());
-                    System.out.println(payOrderEntity.getNowPayAmount());
-                    System.out.println(payInfoDetailVO.getNotPayDetailAmount());
                     orderLoan = orderLoan.add(parentOrderLone);
                     BigDecimal nowPayAllMount = payOrderEntity.getNowPayAmount().add(payInfoDetailVO.getNotPayDetailAmount()).add(parentNowPayDetailAmount).add(orderLoan);
 
-                    //  BigDecimal bBoolean = (payableInfo.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP)).subtract(parentOrderLone).subtract(parentNowPayDetailAmount);
-                    //  BigDecimal bBoolean = (payableInfo.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP)).subtract(parentOrderLone).subtract(parentNowPayDetailAmount);
                     BigDecimal realAmount = (payableInfo.getRealPayAmount().setScale(2, BigDecimal.ROUND_HALF_UP));
                     flag = nowPayAllMount.compareTo(realAmount) == 0 ? Boolean.TRUE : Boolean.FALSE;
-                    //i = payOrderEntity.getNowPayAmount().add(payOrderEntity.getPayOrderLoan()).compareTo(payableInfo.getRealPayAmount());
-//                System.out.println(payOrderEntity.getNowPayAmount()+"  payOrderEntity");
-                    System.out.println(nowPayAllMount + "---------- " + realAmount);
-//                System.out.println(2+"      "+flag);
-                    System.out.println(2 + "      " + flag);
+
                 }
-                System.out.println(realPayAmount);
-                System.out.println(payOrderEntity.getNowPayAmount());
 
+                if (Double.parseDouble(String.valueOf(payOrderEntity.getNowPayAmount())) < 0.00 ) {
+                    flag = Boolean.FALSE;
+                }
                 if (!(realPayAmount.compareTo(payOrderEntity.getNowPayAmount()) == 0)) {
                     flag = Boolean.FALSE;
-                    System.out.println(3 + "      " + flag);
                 }
                 if (!flag) {
                     throw new RRException(BizCodeEnume.PAY_AMOUNT_ERROR, "支付金额异常。");
                 }
-
+                payOrderEntity.setOrderNotice(orderNotice);
           /*  首次订单支付成功之后如果还有未支付的 状态为 3 无未支付的状态为 2
               当所有未支付的明细完成缴费之后 首单状态变为 2 状态:支付成功且完成所有缴费
 
@@ -550,10 +616,6 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
 
 
             } else {
-//                if (!payOrderEntity.getPayMethod().equals(currentPayMethod)) {
-//                    payOrderEntity.setPayMethod(currentPayMethod);
-//                    this.updateById(payOrderEntity);
-//                }
                 createOrderResultVO.setMsg("订单早已创建");
             }
             createOrderResultVO.setAmount(payOrderEntity.getNowPayAmount());
@@ -594,8 +656,6 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
     @Override
     public OrderStatusVO queryOrderStatus(String cardNumber, String orderNo) {
         OrderStatusVO orderStatusVO = queryOrderStatus(orderNo);
-        System.out.println(cardNumber+" -----------cardNumber------------- ");
-        System.out.println(orderStatusVO.getPayerId()+" -----------orderStatusVO.getPayerId()------------- ");
         if (!orderStatusVO.getPayerId().equals(cardNumber)) {
             throw new RRException(BizCodeEnume.NO_PERMISSION);
         }
@@ -695,14 +755,32 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
     @Override
     public void exportOrderTxt(HttpServletResponse response, PayOrderQueryTO queryTO) throws IOException {
 
+//        QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
+//
+//        commonWrapper(wrapper, queryTO);
+//        if (queryTO.getDownIds() != null && queryTO.getDownIds().size() > 0) {
+//            wrapper.in("order_no", queryTO.getDownIds());
+//        }
+//        wrapper.orderByDesc("finish_time").orderByDesc("create_time").orderByAsc("pay_for_identify");
+//        List<PayOrderEntity> parOrder = this.list(wrapper);
+
         QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
 
         commonWrapper(wrapper, queryTO);
         if (queryTO.getDownIds() != null && queryTO.getDownIds().size() > 0) {
             wrapper.in("order_no", queryTO.getDownIds());
         }
+        if (StringUtils.hasText(queryTO.getPayStatus())) {
+            if (!(queryTO.getPayStatus().isEmpty()) && !(queryTO.getPayStatus().equals("1"))) {
+                wrapper.in("status", "2", "3");
+            } else {
+                wrapper.eq("status", "1");
+            }
+        }
+
         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) {
             JSONArray jsonArray = new JSONArray();
@@ -739,6 +817,14 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
         if (queryTO.getDownIds() != null && queryTO.getDownIds().size() > 0) {
             wrapper.in("order_no", queryTO.getDownIds());
         }
+        if (StringUtils.hasText(queryTO.getPayStatus())) {
+            if (!(queryTO.getPayStatus().isEmpty()) && !(queryTO.getPayStatus().equals("1"))) {
+                wrapper.in("status", "2", "3");
+            } else {
+                wrapper.eq("status", "1");
+            }
+        }
+
         wrapper.orderByDesc("finish_time").orderByDesc("create_time").orderByAsc("pay_for_identify");
         List<PayOrderEntity> parOrder = this.list(wrapper);
         String fileName = "";
@@ -794,6 +880,7 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
     private void commonWrapper(QueryWrapper<PayOrderEntity> wrapper, PayOrderQueryTO queryTO) {
         //wrapper.eq(StringUtils.hasText(queryTO.getPayStatus()), "status", queryTO.getPayStatus());
         wrapper.eq(StringUtils.hasText(queryTO.getPayMethod()), "pay_method", queryTO.getPayMethod());
+        wrapper.eq(StringUtils.hasText(queryTO.getPayStatus()), "status", queryTO.getPayStatus());
         String keyword = queryTO.getKeyword();
         if (StringUtils.hasText(keyword)) {
             wrapper.and(w -> w.like("student_name", keyword)
@@ -826,28 +913,34 @@ public class PayOrderServiceImpl extends ServiceImpl<PayOrderDao, PayOrderEntity
         QueryWrapper<PayOrderEntity> wrapper = new QueryWrapper<>();
         commonWrapper(wrapper, queryTO);
 
-
-        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(real_pay_amount), 0) as total,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"));
-            return new BigDecimal(String.valueOf(resultMap.get("total"))).setScale(2, BigDecimal.ROUND_HALF_UP) + "-" + count;
-        } else {
-            return "0-0";
+        if (StringUtils.hasText(queryTO.getPayStatus())) {
+            if (queryTO.getPayStatus().endsWith("2")) {
+                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(real_pay_amount), 0) as total, ifnull(sum(pay_order_loan),0) as loan,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);
+                    BigDecimal orderLoan = new BigDecimal(String.valueOf(resultMap.get("loan"))).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    BigDecimal nowAmount = realPayAmount.subtract(orderLoan).setScale(2, BigDecimal.ROUND_HALF_UP);
+                    return nowAmount + "-" + count;
+                }
+            }
         }
+        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)
                 .eq("status", status)
-                .eq(StringUtils.hasText(itemName),"pay_item", itemName)
-                .eq(StringUtils.hasText(payYear),"pay_year", payYear);
+                .eq(StringUtils.hasText(itemName), "pay_item", itemName)
+                .eq(StringUtils.hasText(payYear), "pay_year", payYear);
 
 
         IPage<PayOrderEntity> page = this.page(

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

@@ -307,7 +307,6 @@ public class PayServiceImpl implements PayService {
         // "rand_str":"","sign":"","pay_time":"",
         // "status":"1","timestamp":"1629255539", "amount": ""}
         boolean isHandleSuccess = false;
-        System.out.println("农商验签--------------------------verifySign-----------------" + verifySign);
         if (verifySign) {
             String orderNo = params.get("out_no");
             String status = params.get("status");
@@ -448,7 +447,6 @@ public class PayServiceImpl implements PayService {
                 // 订单最终支付金额验证成功
                 payOrder.setFinishTime(LocalDateTime.now());
                 payOrder.setStatus(PayStatus.ALREADY_PAY.getCode());
-                System.out.println(payOrder+   "updateOrderStatusupdateOrde22222222222222222222222222222222222222derStatusupdateOrderStatus");
                 payOrderService.updateById(payOrder);
             }
         }

+ 30 - 18
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayableInfoServiceImpl.java

@@ -11,7 +11,6 @@ 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.PayableInfoDao;
-import com.chuanghai.smartschool.tuitionpayment.entity.PayItem;
 import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoEntity;
 import com.chuanghai.smartschool.tuitionpayment.listener.aliexcel.MyPayableInfoImportListener;
 import com.chuanghai.smartschool.tuitionpayment.service.EnablePayLimitByGradeService;
@@ -119,20 +118,20 @@ public class PayableInfoServiceImpl extends ServiceImpl<PayableInfoDao, PayableI
         }
     }
 
-    public String queryPayItemByName(String name) {
-        QueryWrapper<PayItem> wapper = new QueryWrapper<>();
-        wapper.eq("item_name", name);
-        List<PayItem> list = payItemService.list(wapper);
-        String itemAccount = "";
-        if (list.size() > 0) {
-            PayItem payItem = list.get(0);
-            itemAccount = payItem.getItemAccount();
-            String start = itemAccount.substring(0, 3);
-            String end = itemAccount.substring(itemAccount.length() - 4);
-            itemAccount = payItem.getItemBank() + " (" + start + "****" + end + ")";
-        }
-        return itemAccount;
-    }
+//    public String queryPayItemByName(String name) {
+//        QueryWrapper<PayItem> wapper = new QueryWrapper<>();
+//        wapper.eq("item_name", name);
+//        List<PayItem> list = payItemService.list(wapper);
+//        String itemAccount = "";
+//        if (list.size() > 0) {
+//            PayItem payItem = list.get(0);
+//            itemAccount = payItem.getItemAccount();
+//            String start = itemAccount.substring(0, 3);
+//            String end = itemAccount.substring(itemAccount.length() - 4);
+//            itemAccount = payItem.getItemBank() + " (" + start + "****" + end + ")";
+//        }
+//        return itemAccount;
+//    }
 
     /**
      * 根据学号查询用户缴费信息
@@ -200,9 +199,9 @@ public class PayableInfoServiceImpl extends ServiceImpl<PayableInfoDao, PayableI
 
         EasyExcel.read(file.getInputStream(),
                 PayableInfoEntity.class,
-              //  saas.class,
                 new MyPayableInfoImportListener(this))
                 .sheet()
+                .headRowNumber(7)
                 .doRead();
 
     }
@@ -266,12 +265,25 @@ public class PayableInfoServiceImpl extends ServiceImpl<PayableInfoDao, PayableI
     @Override
     public void downloadResult(HttpServletResponse response, PayOrderQueryTO queryTO) throws IOException {
 
-        QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
+      //  QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
 
-        commonWrapper(wrapper, queryTO);
+       // commonWrapper(wrapper, queryTO);
 //        if (queryTO.getDownIds().size() > 0) {
 //            wrapper.in("student_no", queryTO.getDownIds());
 //        }
+        QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
+        wrapper.eq(StringUtils.hasText(queryTO.getItemName()), "payment_item", queryTO.getItemName());
+        if (StringUtils.hasText(queryTO.getKeyword())) {
+            wrapper.and(w -> w.like("student_no", queryTO.getKeyword())
+                    .or()
+                    .like("student_name", queryTO.getKeyword()));
+        }
+        if (StringUtils.hasText(queryTO.getPayStatus())) {
+            wrapper.eq("pay_item_type", queryTO.getPayStatus());
+        }
+        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());
+
         wrapper.orderByDesc("pay_finish_time").orderByDesc("pay_create_time");
         List<PayableInfoEntity> parOrder = this.list(wrapper);
         String fileName = URLEncoder.encode("缴费学生名单" + new Date().getTime(), "UTF-8");

+ 70 - 39
src/main/java/com/chuanghai/smartschool/tuitionpayment/service/impl/PayableInfoWaterServiceImpl.java

@@ -11,7 +11,6 @@ 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.PayableInfoWaterDao;
-import com.chuanghai.smartschool.tuitionpayment.entity.PayItem;
 import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoWaterEntity;
 import com.chuanghai.smartschool.tuitionpayment.listener.aliexcel.MyPayableInfoWaterImportListener;
 import com.chuanghai.smartschool.tuitionpayment.service.PayItemService;
@@ -68,30 +67,52 @@ public class PayableInfoWaterServiceImpl extends ServiceImpl<PayableInfoWaterDao
                 PayableInfoWaterEntity.class,
                 new MyPayableInfoWaterImportListener(this))
                 .sheet()
+                .headRowNumber(6)
                 .doRead();
 
     }
 
 
-    public String queryPayItemByName(String name) {
-        QueryWrapper<PayItem> wapper = new QueryWrapper<>();
-        wapper.eq("item_name", name);
-        List<PayItem> list = payItemService.list(wapper);
-        String itemAccount = "";
-        if (list.size() > 0) {
-            PayItem payItem = list.get(0);
-            itemAccount = payItem.getItemAccount();
-            String start = itemAccount.substring(0, 3);
-            String end = itemAccount.substring(itemAccount.length() - 4);
-            itemAccount = payItem.getItemBank() + " (" + start + "****" + end + ")";
-        }
-        return itemAccount;
-    }
-
+//    public String queryPayItemByName(String name) {
+//        QueryWrapper<PayItem> wapper = new QueryWrapper<>();
+//        wapper.eq("item_name", name);
+//        List<PayItem> list = payItemService.list(wapper);
+//        String itemAccount = "";
+//        if (list.size() > 0) {
+//            PayItem payItem = list.get(0);
+//            itemAccount = payItem.getItemAccount();
+//            String start = itemAccount.substring(0, 3);
+//            String end = itemAccount.substring(itemAccount.length() - 4);
+//            itemAccount = payItem.getItemBank() + " (" + start + "****" + end + ")";
+//        }
+//        return itemAccount;
+//    }
+
+    //    @Override
+//    public PageUtils queryPage(PayOrderQueryTO queryTO,PageParam pageParam ) {
+//        QueryWrapper<PayableInfoWaterEntity> wrapper = new QueryWrapper<>();
+//        wrapper.eq(StringUtils.hasText(queryTO.getItemName()),"payment_item",queryTO.getItemName());
+//        if (StringUtils.hasText(queryTO.getKeyword())) {
+//            wrapper.and(w -> w.like("student_no", queryTO.getKeyword())
+//                    .or()
+//                    .like("student_name", queryTO.getKeyword()));
+//        }
+//        if (StringUtils.hasText(queryTO.getPayStatus())) {
+//            wrapper.eq("pay_item_type", queryTO.getPayStatus());
+//        }
+//        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());
+//
+//        IPage<PayableInfoWaterEntity> page = this.page(
+//                new MyQuery<PayableInfoWaterEntity>().getPage(pageParam),
+//                wrapper
+//        );
+//        return new PageUtils(page);
+//    }
     @Override
-    public PageUtils queryPage(PayOrderQueryTO queryTO,PageParam pageParam ) {
+    public PageUtils queryPage(PayOrderQueryTO queryTO, PageParam pageParam) {
         QueryWrapper<PayableInfoWaterEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq(StringUtils.hasText(queryTO.getItemName()),"payment_item",queryTO.getItemName());
+        wrapper.eq(StringUtils.hasText(queryTO.getItemName()), "payment_item", queryTO.getItemName());
         if (StringUtils.hasText(queryTO.getKeyword())) {
             wrapper.and(w -> w.like("student_no", queryTO.getKeyword())
                     .or()
@@ -143,17 +164,16 @@ public class PayableInfoWaterServiceImpl extends ServiceImpl<PayableInfoWaterDao
     /**
      * 下载缴费的名单的txt文件
      *
-     * @param response
-    //     * @param flag
-    //     * @param dateStr
+     * @param response //     * @param flag
+     *                 //     * @param dateStr
      */
     @Override
     public void exportTxt(HttpServletResponse response, PayOrderQueryTO queryTO) throws IOException {
 
         QueryWrapper<PayableInfoWaterEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq(StringUtils.hasText(queryTO.getItemName()),"payment_item",queryTO.getItemName());
+        wrapper.eq(StringUtils.hasText(queryTO.getItemName()), "payment_item", queryTO.getItemName());
 
-        wrapper.eq(StringUtils.hasText(queryTO.getPayStatus()),"pay_item_type", queryTO.getPayStatus());
+        wrapper.eq(StringUtils.hasText(queryTO.getPayStatus()), "pay_item_type", queryTO.getPayStatus());
         wrapper.eq(StringUtils.hasText(queryTO.getPayMethod()), "pay_method", queryTO.getPayMethod());
         if (queryTO.getDownIds() != null && queryTO.getDownIds().size() > 0) {
             wrapper.in("student_no", queryTO.getDownIds());
@@ -176,14 +196,14 @@ public class PayableInfoWaterServiceImpl extends ServiceImpl<PayableInfoWaterDao
         wrapper.orderByDesc("pay_finish_time");
         List<PayableInfoWaterEntity> parOrder = this.list(wrapper);
         String outPutStr = "";
-        if (parOrder.size() > 0){
+        if (parOrder.size() > 0) {
             JSONArray jsonArray = new JSONArray();
             jsonArray.addAll(parOrder);
             for (int i = 0; i < jsonArray.size(); i++) {
                 PayableInfoWaterEntity payableInfoWaterEntity = (PayableInfoWaterEntity) jsonArray.get(i);
                 outPutStr += payableInfoWaterEntity.getStudentNo() + "\t" + payableInfoWaterEntity.getStudentName() + "\t" + payableInfoWaterEntity.getRealPayAmount() + "\t" +
-                        payableInfoWaterEntity.getPayableAccount() + "\t" +payableInfoWaterEntity.getPayAmountDetail() + "\t" +payableInfoWaterEntity.getDorm() + "\t" +
-                        payableInfoWaterEntity.getOrderNotice() + "\t" +payableInfoWaterEntity.getPaymentItem() + "\r";
+                        payableInfoWaterEntity.getPayableAccount() + "\t" + payableInfoWaterEntity.getPayAmountDetail() + "\t" + payableInfoWaterEntity.getDorm() + "\t" +
+                        payableInfoWaterEntity.getOrderNotice() + "\t" + payableInfoWaterEntity.getPaymentItem() + "\r";
             }
         }
 
@@ -195,9 +215,9 @@ public class PayableInfoWaterServiceImpl extends ServiceImpl<PayableInfoWaterDao
         // 查询用户基本的缴费信息
         QueryWrapper<PayableInfoWaterEntity> wrapper = new QueryWrapper();
         wrapper.eq("student_no", cardNumber);
-        wrapper.eq(StringUtils.hasText(studentName),"student_name", studentName);
-        wrapper.eq("pay_item_type","1");
-        wrapper.eq("pay_notice_type","2");
+        wrapper.eq(StringUtils.hasText(studentName), "student_name", studentName);
+        wrapper.eq("pay_item_type", "1");
+        wrapper.eq("pay_notice_type", "2");
         return getPayableInfoWater(wrapper);
     }
 
@@ -212,20 +232,31 @@ public class PayableInfoWaterServiceImpl extends ServiceImpl<PayableInfoWaterDao
     }
 
 
-
     /**
      * 下载完成缴费的名单
      *
      * @param response
-     * @param queryTO 查询条件
-    // * @param downIds  勾选的id
+     * @param queryTO  查询条件
+     *                 // * @param downIds  勾选的id
      */
     @Override
     public void downloadResult(HttpServletResponse response, PayOrderQueryTO queryTO) throws IOException {
 
+//        QueryWrapper<PayableInfoWaterEntity> wrapper = new QueryWrapper<>();
+//
+//        commonWrapper(wrapper, queryTO);
         QueryWrapper<PayableInfoWaterEntity> wrapper = new QueryWrapper<>();
-
-        commonWrapper(wrapper, queryTO);
+        wrapper.eq(StringUtils.hasText(queryTO.getItemName()), "payment_item", queryTO.getItemName());
+        if (StringUtils.hasText(queryTO.getKeyword())) {
+            wrapper.and(w -> w.like("student_no", queryTO.getKeyword())
+                    .or()
+                    .like("student_name", queryTO.getKeyword()));
+        }
+        if (StringUtils.hasText(queryTO.getPayStatus())) {
+            wrapper.eq("pay_item_type", queryTO.getPayStatus());
+        }
+        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());
 
         wrapper.orderByDesc("pay_finish_time").orderByDesc("pay_create_time");
         List<PayableInfoWaterEntity> parOrder = this.list(wrapper);
@@ -271,13 +302,13 @@ public class PayableInfoWaterServiceImpl extends ServiceImpl<PayableInfoWaterDao
     }
 
     @Override
-   public PayableInfoWaterEntity getByStudentNo(String studentNo,String itemName,String payYear){
+    public PayableInfoWaterEntity getByStudentNo(String studentNo, String itemName, String payYear) {
         QueryWrapper<PayableInfoWaterEntity> wrapper = new QueryWrapper<>();
-        wrapper.eq("student_no",studentNo);
-        wrapper.eq("payment_item",itemName);
-        wrapper.eq("pay_month",payYear);
+        wrapper.eq("student_no", studentNo);
+        wrapper.eq("payment_item", itemName);
+        wrapper.eq("pay_month", payYear);
         PayableInfoWaterEntity one = payableInfoWaterService.getOne(wrapper);
-        return  one;
+        return one;
     }
 
 

+ 16 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/to/BankItemDetailTO/BankDetailListVO.java

@@ -0,0 +1,16 @@
+package com.chuanghai.smartschool.tuitionpayment.to.BankItemDetailTO;
+
+import lombok.Data;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/21 星期四 16:28
+ * @Description: com.chuanghai.smartschool.tuitionpayment.to.BankItemDetailTO
+ * @Version: 1.0
+ */
+@Data
+public class BankDetailListVO {
+    private Integer bankId;
+    private String bankName;
+    private String detail;
+}

+ 15 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/to/BankItemDetailTO/ReceiveBankItemDetailTO.java

@@ -0,0 +1,15 @@
+package com.chuanghai.smartschool.tuitionpayment.to.BankItemDetailTO;
+
+import lombok.Data;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/21 星期四 19:11
+ * @Description: com.chuanghai.smartschool.tuitionpayment.to.BankItemDetailTO
+ * @Version: 1.0
+ */
+@Data
+public class ReceiveBankItemDetailTO {
+    private Integer bankId;
+    private String  detail;
+}

+ 1 - 1
src/main/java/com/chuanghai/smartschool/tuitionpayment/to/FeedbackMsgCreateTO.java

@@ -23,7 +23,7 @@ public class FeedbackMsgCreateTO {
     /**
      * 反馈者电话
      */
-    @Pattern(regexp ="/^(13[0-9]{9}$|14[0-9]{9}|15[0-9]{9}$|18[0-9]{9})$|(^(0\\d{10})|^(0\\d{2}-\\d{8}))$/\n" ,message = "反馈者 电话格式错误")
+    @Pattern(regexp ="^((13[0-9])|(14[0|5|6|7|9])|(15[0-3])|(15[5-9])|(16[6|7])|(17[2|3|5|6|7|8])|(18[0-9])|(19[1|8|9]))\\d{8}$" ,message = "反馈者 电话格式错误")
     private String feedbackPersonPhone;
     /**
      * 反馈类别

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

@@ -1,8 +1,6 @@
 package com.chuanghai.smartschool.tuitionpayment.to;
 
 import lombok.Data;
-import lombok.Getter;
-import lombok.Setter;
 
 import java.util.List;
 
@@ -56,4 +54,8 @@ public class PayOrderQueryTO {
      * 勾选的学号
      */
     private List<String> downIds;
+    /**
+     * 学生宿舍信息
+     */
+    private String dorm;
 }

+ 0 - 7
src/main/java/com/chuanghai/smartschool/tuitionpayment/utils/MyUtil.java

@@ -55,13 +55,6 @@ public class MyUtil {
         LocalDateTime dateTime = LocalDateTime.parse(orderDate, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
         return dateTime;
     }
-    public static void main(String[] args) {
-        LocalDateTime localDateTime = new MyUtil().changeTime("20220708091308");
-
-
-
-
-    }
 
 
 }

+ 29 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/BankDetailVO/BankDetailListVO.java

@@ -0,0 +1,29 @@
+package com.chuanghai.smartschool.tuitionpayment.vo.BankDetailVO;
+
+import com.chuanghai.smartschool.tuitionpayment.vo.BankVO.BankVO;
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/20 星期三 19:40
+ * @Description: com.chuanghai.smartschool.tuitionpayment.vo.BankDetailVO
+ * @Version: 1.0
+ */
+@Data
+public class BankDetailListVO {
+    /**
+     * 编号
+     */
+    private String id;
+    /**
+     * 银行名称
+     */
+    private String label;
+    /**
+     * 包含门店名称
+     */
+    private List<BankVO> children;
+
+}

+ 18 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/BankVO/BankStoreVO.java

@@ -0,0 +1,18 @@
+package com.chuanghai.smartschool.tuitionpayment.vo.BankVO;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/21 星期四 15:26
+ * @Description: com.chuanghai.smartschool.tuitionpayment.vo.BankVO
+ * @Version: 1.0
+ */
+@Data
+public class BankStoreVO {
+    private Integer id;
+    private String label;
+    private List<BankVO> children;
+}

+ 25 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/BankVO/BankVO.java

@@ -0,0 +1,25 @@
+package com.chuanghai.smartschool.tuitionpayment.vo.BankVO;
+
+import lombok.Data;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/21 星期四 12:53
+ * @Description: com.chuanghai.smartschool.tuitionpayment.vo.BankDetailVO
+ * @Version: 1.0
+ */
+@Data
+public class BankVO {
+    /**
+     * 编号
+     */
+    private String id;
+    /**
+     * 标识门店银行ID
+     */
+    private Integer bankId;
+    /***
+     * 银行门店名称
+     */
+    private String label;
+}

+ 21 - 0
src/main/java/com/chuanghai/smartschool/tuitionpayment/vo/PayItemInfoDetailVO/ItemInfoDetailVO.java

@@ -0,0 +1,21 @@
+package com.chuanghai.smartschool.tuitionpayment.vo.PayItemInfoDetailVO;
+
+import lombok.Data;
+
+/**
+ * @Author: binguo
+ * @Date: 2022/7/19 星期二 16:18
+ * @Description: com.chuanghai.smartschool.tuitionpayment.vo.PayItemInfoDetailVO
+ * @Version: 1.0
+ */
+@Data
+public class ItemInfoDetailVO {
+    /**
+     * 缴费项目
+     */
+    private String itemName;
+    /**
+     * 缴费项目明细
+     */
+    private String itemNameDetail;
+}

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

@@ -36,7 +36,7 @@ public class PayOrderReceiveVO {
     /**
      * 水费缴费宿舍
      */
-    private String drom;
+    private String dorm;
     /**
      * 助学贷款
      */

+ 23 - 0
src/main/resources/mapper/tuitionpayment/BankDao.xml

@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.chuanghai.smartschool.tuitionpayment.dao.BankDao">
+
+    <!-- 可根据自己的需求,是否要使用 -->
+    <resultMap type="com.chuanghai.smartschool.tuitionpayment.entity.Bank" id="bankMap">
+        <result property="id" column="id"/>
+        <result property="bankName" column="bank_name"/>
+        <result property="bankStore" column="bank_store"/>
+        <result property="bankStoreName" column="bank_store_name"/>
+        <result property="bankStoreNo" column="bank_store_no"/>
+        <result property="bankMchidNo" column="bank_mchid_no"/>
+        <result property="bankMchidName" column="bank_mchid_name"/>
+        <result property="openId" column="open_id"/>
+        <result property="openKey" column="open_key"/>
+        <result property="bankCardNumber" column="bank_card_number"/>
+        <result property="toUnit" column="to_unit"/>
+
+    </resultMap>
+
+
+</mapper>

+ 25 - 0
src/main/resources/mapper/tuitionpayment/BankDetailDao.xml

@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.chuanghai.smartschool.tuitionpayment.dao.BankDetailDao">
+
+    <!-- 可根据自己的需求,是否要使用 -->
+    <resultMap type="com.chuanghai.smartschool.tuitionpayment.entity.BankDetail" id="bankDetailMap">
+        <result property="id" column="id"/>
+        <result property="bankName" column="bank_name"/>
+        <result property="bankStore" column="bank_store"/>
+        <result property="bankStoreName" column="bank_store_name"/>
+        <result property="bankStoreNo" column="bank_store_no"/>
+        <result property="bankMchidNo" column="bank_mchid_no"/>
+        <result property="bankMchidName" column="bank_mchid_name"/>
+        <result property="openId" column="open_id"/>
+        <result property="openKey" column="open_key"/>
+        <result property="bankCardNumber" column="bank_card_number"/>
+        <result property="toUnit" column="to_unit"/>
+        <result property="bankDetailStr" column="bank_detail_str"/>
+        <result property="itemName" column="item_name"/>
+
+    </resultMap>
+
+
+</mapper>

+ 16 - 0
src/main/resources/mapper/tuitionpayment/BankItemDetailDao.xml

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+
+<mapper namespace="com.chuanghai.smartschool.tuitionpayment.dao.BankItemDetailDao">
+
+    <!-- 可根据自己的需求,是否要使用 -->
+    <resultMap type="com.chuanghai.smartschool.tuitionpayment.entity.BankItemDetail" id="bankItemDetailMap">
+        <result property="id" column="id"/>
+        <result property="bankDetailStr" column="bank_detail_str"/>
+        <result property="itemName" column="item_name"/>
+        <result property="bankId" column="bank_id"/>
+
+    </resultMap>
+
+
+</mapper>

+ 2 - 2
src/main/resources/mapper/tuitionpayment/PayItemDao.xml

@@ -8,8 +8,8 @@
         <result property="itemId" column="item_id"/>
         <result property="itemName" column="item_name"/>
         <result property="itemStatus" column="item_status"/>
-        <result property="itemBank" column="item_bank"/>
-        <result property="itemAccount" column="item_account"/>
+<!--        <result property="itemBank" column="item_bank"/>-->
+<!--        <result property="itemAccount" column="item_account"/>-->
         <result property="itemGrade" column="item_grade"/>
         <result property="itemAsk" column="item_ask"/>
         <result property="itemExcept" column="item_except"/>

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

@@ -21,7 +21,7 @@
         <result property="isParent" column="is_parent"/>
         <result property="payOrderLoan" column="pay_order_loan"/>
         <result property="exceptType" column="except_type"/>
-        <result property="drom" column="drom"/>
+        <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"/>