package com.chuanghai.smartschool.tuitionpayment.controller; import com.alibaba.excel.EasyExcel; 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; import com.chuanghai.smartschool.tuitionpayment.common.utils.CommonResult; import com.chuanghai.smartschool.tuitionpayment.common.utils.PageParam; import com.chuanghai.smartschool.tuitionpayment.common.utils.PageUtils; import com.chuanghai.smartschool.tuitionpayment.entity.PayOrderEntity; import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoEntity; import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoWaterEntity; import com.chuanghai.smartschool.tuitionpayment.listener.aliexcel.MyStudentNoImportListener; import com.chuanghai.smartschool.tuitionpayment.service.PayOrderService; import com.chuanghai.smartschool.tuitionpayment.service.PayableInfoService; import com.chuanghai.smartschool.tuitionpayment.service.PayableInfoWaterService; 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 org.apache.poi.ss.formula.functions.T; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; //import cn.afterturn.easypoi.excel.ExcelExportUtil; //import cn.afterturn.easypoi.excel.ExcelImportUtil; //import cn.afterturn.easypoi.excel.entity.ExportParams; /** * 学生应缴数据 * * @author codingliang * @email codingliang@gmail.com * @date 2021-08-12 15:52:41 */ @RestController @RequestMapping("tuitionpayment/payableinfo") public class PayableInfoController { @Autowired private PayableInfoService payableInfoService; @Autowired private PayableInfoWaterService payableInfoWaterService; @Autowired private PayOrderService payOrderService; @Autowired private PayItemDetailController payItemDetailController; @Autowired private WechatController wechatController; /** * 根据card_number获取缴费信息 整合各缴费项目的集合 * * @param cardNumber 当前登录用户cardNumber * @return * @Param currPage 当前页 * @pageSize pageSize 每页记录数 */ @GetMapping("payableInfo") public CommonResult getPayableInfoByCardNumber(@RequestHeader("card_number") String cardNumber, String studentName, Integer currPage, Integer pageSize) { currPage = currPage == null ? 1 : currPage; pageSize = pageSize == null ? 10 : pageSize; try { List payableInfo = payableInfoService.getPayableInfoByCardNumber(cardNumber, studentName); List objectList = new ArrayList<>(); payableInfo.forEach(payable -> { PayableInfoWaterListVO payableInfoWaterListVO = new PayableInfoWaterListVO(); BeanUtils.copyProperties(payable, payableInfoWaterListVO); objectList.add(payableInfoWaterListVO); }); List payableWater = payableInfoWaterService.getPayableInfoWaterByCardNumber(cardNumber, studentName); payableWater.forEach(payableInfoWater -> { PayableInfoWaterListVO payableInfoWaterListVO = new PayableInfoWaterListVO(); BeanUtils.copyProperties(payableInfoWater, payableInfoWaterListVO); objectList.add(payableInfoWaterListVO); }); //将得到的payableInfoWaterListVOs集合数据按照payCreateTime进行 List payableInfoWaterListVOs = objectList.stream().sorted(Comparator.comparing(PayableInfoWaterListVO::getPayCreateTime).reversed()).collect(Collectors.toList()); payableInfoWaterListVOs.forEach(payableInfoWaterListVO -> { payableInfoWaterListVO.setPayerIdentify(payableInfoWaterListVO.getStudentNo()); payableInfoWaterListVO.setPayForIdentify(payableInfoWaterListVO.getCardNumber()); payableInfoWaterListVO.setPayYear(payableInfoWaterListVO.getYears()); }); //判断是否传入分页信息 if (currPage != null && pageSize != null) { ListPageUtil listPageUtil = new ListPageUtil(payableInfoWaterListVOs, currPage, pageSize); payableInfoWaterListVOs = listPageUtil.getPagedList(); int totalCount = listPageUtil.getTotalCount(); int pageSize1 = listPageUtil.getPageSize(); int nowPage1 = listPageUtil.getNowPage(); PageUtils page = new PageUtils(payableInfoWaterListVOs, totalCount, pageSize1, nowPage1); return CommonResult.ok().setResult(page); } } catch (Exception e) { return CommonResult.fail("0000", "该用户暂无缴费信息!"); } return CommonResult.fail(); } // // /** // * 根据学号和学生姓名获取缴费信息 // * // * @param cardNumber 当前登录用户cardNumber // * @param studentNo 学号,新生可用身份证号码代替学号 // * @param studentName 学生姓名 // * @return // */ // @GetMapping("payableInfo/{studentNo}/{studentName}") // public CommonResult< List> getPayableInfoByCardNumberAndName(@RequestHeader("card_number") String cardNumber, // @PathVariable("studentNo") String studentNo, // @PathVariable("studentName") String studentName) { // List info = payableInfoService.getPayableInfoByStudentNoAndName(studentNo, studentName); // return CommonResult.ok().setResult(info); // } /** * 学生应缴列表 * * @param adminToken // * @param keyword 搜索关键字 * // * @param payStatus 订单状态 * // * @param createTime 创建时间 * // * @param payTime 支付时间 * // * @param pageParam 分页参数 * // * @param payItemType 缴费项目支付状态 * // * @param itemName 缴费项目名 * @return */ @AdminLoginCheck @GetMapping("/list") public CommonResult> 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; int totalCount = 0; if (queryTO.getItemName().equals("水费缴纳")) { page = payableInfoWaterService.queryPage(queryTO, pageParam); totalCount = page.getTotalCount(); List list = page.getList(); for (int i = 0; i < list.size(); i++) { PayableInfoWaterEntity payableInfoWaterEntity = (PayableInfoWaterEntity) list.get(i); totalAmount = totalAmount.add(payableInfoWaterEntity.getRealPayAmount()); } } else { page = payableInfoService.queryPage(queryTO, pageParam); totalCount = page.getTotalCount(); List list = page.getList(); for (int i = 0; i < list.size(); i++) { PayableInfoEntity payableInfoEntity = (PayableInfoEntity) list.get(i); totalAmount = totalAmount.add(payableInfoEntity.getRealPayAmount()); } } PayableInfoListVO payableInfoListVO = new PayableInfoListVO(); payableInfoListVO.setPage(page); payableInfoListVO.setTotalCount(totalCount); payableInfoListVO.setTotalAmount(totalAmount); //如果选择支付状态查询对应状态的金额 if (StringUtils.hasText(queryTO.getPayStatus())) { String amount = payableInfoService.queryAmount(queryTO); payableInfoListVO.setTotalCount(Integer.parseInt(amount.split("-")[1])); payableInfoListVO.setTotalAmount(new BigDecimal(amount.split("-")[0]).setScale(2, RoundingMode.HALF_UP)); } return CommonResult.ok().setResult(payableInfoListVO); } /** * 下载缴费名单的txt * * @param queryTO 查询参数 * @param response * @throws IOException */ @RequestMapping("exportTxt") //@AdminLoginCheck public void exportTxt(PayOrderQueryTO queryTO, HttpServletResponse response) throws IOException { if (queryTO.getItemName().equals("水费缴纳")) { payableInfoWaterService.exportTxt(response, queryTO); } else { payableInfoService.exportTxt(response, queryTO); } } /** * 下载缴费的学生名单 * * @param queryTO 封装参数 * @param response * @throws IOException */ @RequestMapping("downloadResult") public void downloadResult(PayOrderQueryTO queryTO, HttpServletResponse response) throws IOException { if (queryTO.getItemName().equals("水费缴纳")) { payableInfoWaterService.downloadResult(response, queryTO); } else { payableInfoService.downloadResult(response, queryTO); } } /** * 学生应缴信息删除 * * @param adminToken 管理员token * @param ids 需要删除记录的id集合 * @return */ @AdminLoginCheck @DeleteMapping("/delete") public CommonResult delete(@RequestHeader("admin_token") String adminToken, @RequestBody Long[] ids) { payableInfoService.removeByIds(Arrays.asList(ids)); return CommonResult.ok(); } /** * excel 导入学生学费相关原始数据 * * @param adminToken 管理员token * @param file 文件,文件格式注意需要符合要求 * @return * @apiNote 导入学生学费相关原始数据 * 注意: * 1.需要提示用户上传的excel文件需要符合规定的格式; * 2.上传新文件将会导致所有的旧数据被删除,学费缴纳开始后不建议再上传新数据。 */ @PostMapping("importByExcel") @AdminLoginCheck public CommonResult importByExcel(@RequestHeader("admin_token") String adminToken, @RequestParam MultipartFile file) throws IOException { if (file.isEmpty()) { throw new RRException(BizCodeEnume.PARAMETER_ERROR, "文件不能为空"); } payableInfoService.importByExcel(file); return CommonResult.ok(); } /** * 更新缴费订单的时间参数 */ @PutMapping("updatePayInfo") public CommonResult updatePayInfo(String itemName) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("payMent_item", itemName); //更新时间等参数 List infoEntityList = payableInfoService.list(wrapper); List objectList = new ArrayList<>(); infoEntityList.forEach(payableInfoEntity -> { payableInfoEntity.setCardNumber(payableInfoEntity.getStudentNo()); payableInfoEntity.setPayCreateTime(LocalDateTime.now()); payableInfoEntity.setPayItemType("1"); payableInfoEntity.setPayNoticeType("1"); if (StringUtils.hasText(payableInfoEntity.getNotMustMoney())) { payableInfoEntity.setNotPayDetail(payableInfoEntity.getMustMoney() + "/" + payableInfoEntity.getNotMustMoney()); } else { payableInfoEntity.setNotPayDetail(payableInfoEntity.getMustMoney()); } String[] split = payableInfoEntity.getNotPayDetail().split("/"); payableInfoEntity.setNotPaySize(split.length); payableInfoEntity.setPayableAccount(payableInfoService.queryPayItemByName(payableInfoEntity.getPaymentItem())); objectList.add(payableInfoEntity); }); payableInfoService.updateBatchById(objectList); return CommonResult.ok(); } // /** // * 通过身份证调用活动管理平台数据库换取 微笑的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 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> request = new HttpEntity<>(map, headers); // ResponseEntity 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; // } /** * 删除缴费信息 * * @param adminToken 管理员token * @param file 文件 * @return * @apiNote 删除缴费信息 * 注意: * 文件需要符合规定的格式 * 不会删除已经在线缴费的学生。如果有没有删除的学生,会在接口返回没有被删除学生的列表。 * @since 0.1.0 */ @PostMapping("/deletePayableExecl") @AdminLoginCheck public CommonResult deletePayableInfo(@RequestHeader("admin_token") String adminToken, @RequestParam MultipartFile file) throws IOException { if (file.isEmpty()) { throw new RRException(BizCodeEnume.PARAMETER_ERROR, "文件不能为空"); } MyStudentNoImportListener studentNoImportListener = new MyStudentNoImportListener(); EasyExcel.read(file.getInputStream(), StudentNoVO.class, studentNoImportListener).sheet().doRead(); List studentNos = studentNoImportListener.getStudentNoList(); List alreadyPayList = new ArrayList<>(); studentNos.forEach(studentNo -> { StudentNoVO student = studentNo; if (student.getPaymentItem().equals("水费缴纳")) { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(student.getStudentNo() != null, "student_no", student.getStudentNo()); wrapper.eq(student.getPaymentItem() != null, "payment_item", student.getPaymentItem()); PayableInfoWaterEntity one = payableInfoWaterService.getOne(wrapper); if (one != null) { boolean alreadyPay = payOrderService.isAlreadyPay(one.getStudentNo(), one.getPaymentItem(), one.getPayMonth(), null, null, null); if (alreadyPay) { DeletePayableInfoTO to = new DeletePayableInfoTO(); BeanUtils.copyProperties(one, to); to.setMsg("学生已缴费,删除失败!"); alreadyPayList.add(to); } payableInfoWaterService.removeById(one); } } else { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq(student.getStudentNo() != null, "student_no", student.getStudentNo()); wrapper.eq(student.getPaymentItem() != null, "payment_item", student.getPaymentItem()); PayableInfoEntity one = payableInfoService.getOne(wrapper); if (one != null) { boolean alreadyPay = payOrderService.isAlreadyPay(one.getStudentNo(), one.getPaymentItem(), one.getYears(), one.getNotPaySize(), null, null); if (alreadyPay) { DeletePayableInfoTO to = new DeletePayableInfoTO(); BeanUtils.copyProperties(one, to); to.setMsg("学生已缴费,删除失败!"); alreadyPayList.add(to); } payableInfoService.removeById(one); } } }); return CommonResult.ok().setResult(alreadyPayList); } /** * 查询缴费名单的缴费详情 * * @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 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 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 listA; // ArrayList 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(); //未缴费明细金额 BigDecimal realMount = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP); if (itemName.equals("水费缴纳")) { QueryWrapper 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()); payInfoDetailVO.setNotPayDetailAmount(water.getRealPayAmount()); payInfoDetailVO.setPayDetailAmount(water.getRealPayAmount()); payInfoDetailVO.setNotPaySize(0); } else { QueryWrapper wrapper = new QueryWrapper<>(); wrapper.eq("id", id) .eq("payment_item", itemName); PayableInfoEntity payableInfoEntity = payableInfoService.getOne(wrapper); if (payableInfoEntity == null) { throw new RRException(BizCodeEnume.DATA_IS_EXIST, "该缴费订单不存在。"); } if (payableInfoEntity.getMustMoney() != null) { payInfoDetailVO.setMustMoney(payableInfoEntity.getMustMoney()); } if (payableInfoEntity.getNotMustMoney() != null) { payInfoDetailVO.setNotMustMoney(payableInfoEntity.getNotMustMoney()); } String[] realPayDetailStr; String realPayDetail1 = ""; // 缴费订单的已缴费明细不为null if (StringUtils.hasText(payableInfoEntity.getPayDetail())) { if (StringUtils.hasText(realPayDetail)) { //缴费订单所有已交的项目明细 realPayDetail1 = payableInfoEntity.getPayDetail() + "/" + realPayDetail; } else { realPayDetail1 = payableInfoEntity.getPayDetail(); } } // 本次缴费明细不为空 if (StringUtils.hasText(realPayDetail)) { //缴费订单所有已交的项目明细 if (StringUtils.hasText(payableInfoEntity.getPayDetail())) { realPayDetail1 = payableInfoEntity.getPayDetail() + "/" + realPayDetail; } else { 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())) { notPayDetail = payableInfoEntity.getMustMoney() + "/" + payableInfoEntity.getNotMustMoney(); } else { notPayDetail = payableInfoEntity.getMustMoney(); } int notPayDetailCount = 0; String notPayDetailStr = ""; String[] realPayDetailArray; String[] notPayDetailArray; ArrayList listA; ArrayList 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("/"); listA = new ArrayList<>(Arrays.asList(realPayDetailArray)); String[] splitRealPayDetail = new String[listA.size()]; for (int j = 0; j < listA.size(); j++) { splitRealPayDetail = listA.get(j).split("/"); String detail = splitRealPayDetail[0]; if (StringUtils.hasText(detail)) { String[] detailAMount = detail.split(":"); realMount = realMount.add(new BigDecimal(detailAMount[1]).setScale(2, RoundingMode.HALF_UP)); } } 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); //已支付明细金额 payInfoDetailVO.setPayDetailAmount(realMount); //订单总金额 payInfoDetailVO.setRealPayAmount(payableInfoEntity.getRealPayAmount().setScale(2, RoundingMode.HALF_UP)); // 未支付明细金额 payInfoDetailVO.setNotPayDetailAmount((payableInfoEntity.getRealPayAmount().subtract(realMount)).setScale(2, RoundingMode.HALF_UP)); } return CommonResult.ok().setResult(payInfoDetailVO); } // /** // * 查询缴费名单的缴费详情 // * // * @param id // * @return // */ // @GetMapping("/queryPayDetail") // public CommonResult queryPayDetail(@RequestParam String id, @RequestParam("itemName") String // itemName, String realPayDetail) { // PayInfoDetailVO payInfoDetailVO = new PayInfoDetailVO(); // if (itemName.equals("水费缴纳")) { // QueryWrapper 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 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 listA = new ArrayList<>(Arrays.asList(realPayDetailArray)); // ArrayList 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); // } /** * 查询用户的基本信息 * * @param cardNumber * @param name * @return */ @GetMapping("/queryStudentInfo") public CommonResult queryStudentInfo(String cardNumber, String name) { PayableInfoStudentResultVO payableInfoStudentResultVO = new PayableInfoStudentResultVO(); QueryWrapper wrapper = new QueryWrapper<>(); QueryWrapper wrapper1 = new QueryWrapper<>(); wrapper.eq("student_no", cardNumber) .eq("student_name", name); wrapper1.eq("student_no", cardNumber) .eq("student_name", name); List waterList = payableInfoWaterService.list(wrapper1); if (waterList.size() > 0) { waterList.forEach(water -> { payableInfoStudentResultVO.setMajor(water.getCollegeName() + water.getClassName()); }); } List infoList = payableInfoService.list(wrapper); if (infoList.size() > 0) { infoList.forEach(info -> { if (info.getCollegeName() != null || info.getClassName() != null) { } payableInfoStudentResultVO.setMajor(info.getCollegeName() + info.getClassName()); }); } payableInfoStudentResultVO.setIdCard(cardNumber); payableInfoStudentResultVO.setStudentName(name); return CommonResult.ok().setResult(payableInfoStudentResultVO); } /** * 根据订单编号修改相应的缴费订单 * * @param orderNo */ @GetMapping("tt") public void updatePayinfoByOrder(String orderNo) { QueryWrapper 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"); //// } // } 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(); } 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 = BigDecimal.ZERO; PayableInfoEntity payableInfoEntity = new PayableInfoEntity(); PayableInfoWaterEntity payableInfoWaterEntity = new PayableInfoWaterEntity(); if (payItem.equals("水费缴纳")) { QueryWrapper wrapper1 = new QueryWrapper<>(); wrapper1.eq("student_no", payForIdentify) .eq("student_name", studentName) .eq("payment_item", payItem) .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 wrapper1 = new QueryWrapper<>(); wrapper1.eq("student_no", payForIdentify) .eq("student_name", studentName) .eq("payment_item", payItem) .eq("years", payYear); PayableInfoEntity pInfo = payableInfoService.getOne(wrapper1); String notPayDetail1 = ""; String payDetail1 = ""; // System.out.println(parentOrderNo); QueryWrapper orderWapper = new QueryWrapper<>(); orderWapper.eq("pay_for_identify", payForIdentify) .eq("student_name", studentName) .eq("pay_item", payItem) .eq("pay_year", payYear) .in("status", "2", "3"); List payOrderList = payOrderService.list(orderWapper); //List payOrderList = payOrderService.queryAllOrderByParent(parentOrderNo, new PageParam()).getList(); if (payOrderList.size() > 0) { for (int i = 0; i < payOrderList.size(); i++) { 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); } } 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 = ""; if (StringUtils.hasText(pInfo.getMustMoney())) { payInfoPayAllDetail += pInfo.getMustMoney() + "/"; } if (StringUtils.hasText(pInfo.getNotMustMoney())) { payInfoPayAllDetail += pInfo.getNotMustMoney(); } String[] payDetail1Split = pInfo.getPayDetail().split("/"); List payDetail1List = new ArrayList<>(Arrays.asList(payDetail1Split)); String[] payInfoPayAllDetailSplit = payInfoPayAllDetail.split("/"); List payInfoPayAllDetailList = new ArrayList<>(Arrays.asList(payInfoPayAllDetailSplit)); payInfoPayAllDetailList.removeAll(payDetail1List); notPaySize = 0; if (payInfoPayAllDetailList.size() > 0) { for (int i = 0; i < payInfoPayAllDetailList.size(); i++) { notPayDetail1 += payInfoPayAllDetailList.get(i) + "/"; notPaySize++; } 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); if (pInfo.getPayFinishTime() == null) { pInfo.setPayFinishTime(LocalDateTime.now()); } //当所有待缴费明细的数量为0 时表示该订单已经完成缴费 if (one != null) { if (notPaySize == 0) { pInfo.setPayItemType("2"); } else { pInfo.setPayItemType("3"); } } 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 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 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 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 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 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("/queryItemDetail") // public CommonResult queryItemDetail(String itemName){ // return CommonResult.ok(); // } }