| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018 |
- 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;
- 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.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;
- 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<PayableInfoWaterListVO> getPayableInfoByCardNumber(@RequestHeader("card_number") String cardNumber, String studentName,
- Integer currPage, Integer pageSize) {
- currPage = currPage == null ? 1 : currPage;
- pageSize = pageSize == null ? 10 : pageSize;
- try {
- List<PayableInfoEntity> payableInfo = payableInfoService.getPayableInfoByCardNumber(cardNumber, studentName);
- List<PayableInfoWaterListVO> objectList = new ArrayList<>();
- payableInfo.forEach(payable -> {
- PayableInfoWaterListVO payableInfoWaterListVO = new PayableInfoWaterListVO();
- BeanUtils.copyProperties(payable, payableInfoWaterListVO);
- objectList.add(payableInfoWaterListVO);
- });
- List<PayableInfoWaterEntity> payableWater = payableInfoWaterService.getPayableInfoWaterByCardNumber(cardNumber, studentName);
- payableWater.forEach(payableInfoWater -> {
- PayableInfoWaterListVO payableInfoWaterListVO = new PayableInfoWaterListVO();
- BeanUtils.copyProperties(payableInfoWater, payableInfoWaterListVO);
- objectList.add(payableInfoWaterListVO);
- });
- //将得到的payableInfoWaterListVOs集合数据按照payCreateTime进行
- List<PayableInfoWaterListVO> payableInfoWaterListVOs = objectList.stream().sorted(Comparator.comparing(PayableInfoWaterListVO::getPayCreateTime).reversed()).collect(Collectors.toList());
- payableInfoWaterListVOs.forEach(payableInfoWaterListVO -> {
- payableInfoWaterListVO.setPayerIdentify(payableInfoWaterListVO.getStudentNo());
- payableInfoWaterListVO.setPayForIdentify(payableInfoWaterListVO.getCardNumber());
- payableInfoWaterListVO.setPayYear(payableInfoWaterListVO.getYears());
- });
- //判断是否传入分页信息
- if (currPage != null && pageSize != null) {
- ListPageUtil<PayableInfoWaterListVO> listPageUtil = new ListPageUtil<PayableInfoWaterListVO>(payableInfoWaterListVOs, currPage, pageSize);
- payableInfoWaterListVOs = listPageUtil.getPagedList();
- int totalCount = listPageUtil.getTotalCount();
- int pageSize1 = listPageUtil.getPageSize();
- int nowPage1 = listPageUtil.getNowPage();
- PageUtils<PayableInfoWaterListVO> page = new PageUtils<PayableInfoWaterListVO>(payableInfoWaterListVOs, totalCount, pageSize1, nowPage1);
- return CommonResult.ok().setResult(page);
- }
- } 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<PayableInfoEntity>> getPayableInfoByCardNumberAndName(@RequestHeader("card_number") String cardNumber,
- // @PathVariable("studentNo") String studentNo,
- // @PathVariable("studentName") String studentName) {
- // List<PayableInfoEntity> 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<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;
- 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<String> 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 导入学生学费相关原始数据
- * <strong>注意:</strong>
- * 1.需要提示用户上传的excel文件需要符合规定的格式;
- * 2.上传新文件将会导致所有的旧数据被删除,学费缴纳开始后不建议再上传新数据。
- */
- @PostMapping("importByExcel")
- @AdminLoginCheck
- public CommonResult<String> 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<T> updatePayInfo(String itemName) {
- QueryWrapper<PayableInfoEntity> wrapper = new QueryWrapper<>();
- wrapper.eq("payMent_item", itemName);
- //更新时间等参数
- List<PayableInfoEntity> infoEntityList = payableInfoService.list(wrapper);
- List<PayableInfoEntity> 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<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;
- }
- /**
- * 删除缴费信息
- *
- * @param adminToken 管理员token
- * @param file 文件
- * @return
- * @apiNote 删除缴费信息
- * <strong>注意:</strong>
- * 文件需要符合规定的格式
- * 不会删除已经在线缴费的学生。如果有没有删除的学生,会在接口返回没有被删除学生的列表。
- * @since 0.1.0
- */
- @PostMapping("/deletePayableExecl")
- @AdminLoginCheck
- public CommonResult<DeletePayableInfoTO> 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<StudentNoVO> studentNos = studentNoImportListener.getStudentNoList();
- List<DeletePayableInfoTO> alreadyPayList = new ArrayList<>();
- studentNos.forEach(studentNo -> {
- StudentNoVO student = studentNo;
- if (student.getPaymentItem().equals("水费缴纳")) {
- QueryWrapper<PayableInfoWaterEntity> 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<PayableInfoEntity> 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<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();
- //未缴费明细金额
- BigDecimal realMount = BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP);
- 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());
- payInfoDetailVO.setNotPayDetailAmount(water.getRealPayAmount());
- payInfoDetailVO.setPayDetailAmount(water.getRealPayAmount());
- payInfoDetailVO.setNotPaySize(0);
- } else {
- QueryWrapper<PayableInfoEntity> 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<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("/");
- 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<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);
- // }
- /**
- * 查询学生的基本信息
- *
- * @return
- */
- @GetMapping("/queryStudentInfo")
- public CommonResult<PayableInfoStudentResultVO> queryStudentInfo(String cardNumber) {
- PayableInfoStudentResultVO payableInfoStudentResultVO;
- try {
- String url = "https://chtech.ncjti.edu.cn/lamp/recordApi/consume/queryByIdCard";
- MultiValueMap<String, Object> map = new LinkedMultiValueMap<>();
- map.add("idCard", cardNumber);
- 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());
- 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);
- }
- /**
- * 根据订单编号修改相应的缴费订单
- *
- * @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");
- // }
- } 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<PayableInfoWaterEntity> 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<PayableInfoEntity> 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<PayOrderEntity> 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<PayOrderEntity> payOrderList = payOrderService.list(orderWapper);
- //List<PayOrderEntity> 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<String> payDetail1List = new ArrayList<>(Arrays.asList(payDetail1Split));
- String[] payInfoPayAllDetailSplit = payInfoPayAllDetail.split("/");
- List<String> 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<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("/queryItemDetail")
- // public CommonResult<T> queryItemDetail(String itemName){
- // return CommonResult.ok();
- // }
- }
|