package com.chuanghai.smartschool.tuitionpayment.controller; import com.alibaba.excel.EasyExcel; 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.baomidou.mybatisplus.core.metadata.IPage; 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.PayableInfoEntity; import com.chuanghai.smartschool.tuitionpayment.entity.PayableInfoWaterEntity; import com.chuanghai.smartschool.tuitionpayment.listener.aliexcel.MyStudentNoImportListener; import com.chuanghai.smartschool.tuitionpayment.service.PayItemDetailService; 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 com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import jdk.nashorn.internal.scripts.JS; import org.apache.poi.ss.formula.functions.T; import org.ehcache.impl.internal.classes.commonslang.ArrayUtils; 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 cn.afterturn.easypoi.excel.ExcelExportUtil; //import cn.afterturn.easypoi.excel.ExcelImportUtil; //import cn.afterturn.easypoi.excel.entity.ExportParams; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; import java.net.URLEncoder; import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; /** * 学生应缴数据 * * @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 -> { String cardNumber = getCardNumberByIdCard(payableInfoEntity.getStudentNo(), null, null, null); payableInfoEntity.setCardNumber(cardNumber); 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); 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()); 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()); } 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); // } System.out.println(realPayDetail1); 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); // } /** * 查询学生的基本信息 * * @return */ @GetMapping("/queryStudentInfo") public CommonResult queryStudentInfo(String cardNumber) { PayableInfoStudentResultVO payableInfoStudentResultVO; try { String url = "https://chtech.ncjti.edu.cn/lamp/recordApi/consume/queryByIdCard"; MultiValueMap map = new LinkedMultiValueMap<>(); map.add("idCard", cardNumber); 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()); JSONObject jsonResult = JSONObject.parseObject(jsonObj.get("result").toString()); payableInfoStudentResultVO = JSONObject.toJavaObject(jsonResult, PayableInfoStudentResultVO.class); } catch (Exception e) { return CommonResult.fail("0000", "信息获取失败!"); } return CommonResult.ok().setResult(payableInfoStudentResultVO); } }