From e825aefcd7285facc06fcb5bf69cdd5afc402b2d Mon Sep 17 00:00:00 2001 From: puzhibing <393733352@qq.com> Date: 星期五, 08 十二月 2023 16:58:02 +0800 Subject: [PATCH] 11.27,9 --- cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java | 205 ++++++++++++++++++++------------------------------- 1 files changed, 81 insertions(+), 124 deletions(-) diff --git a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java index 25b9b3e..6ba5f76 100644 --- a/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java +++ b/cloud-server-course/src/main/java/com/dsh/course/service/impl/TCoursePackagePaymentServiceImpl.java @@ -49,6 +49,7 @@ import javax.annotation.Resource; import javax.persistence.criteria.CriteriaBuilder; import java.math.BigDecimal; +import java.math.MathContext; import java.math.RoundingMode; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -152,140 +153,96 @@ @Override public List<Map<String, Object>> getStudentTotal(StudentQeryDto studentQeryDto) { -// String cityCode = studentQeryDto.getCityCode(); -// String start = studentQeryDto.getStart(); -// String end = studentQeryDto.getEnd(); -// //获取用户数据 -// List<Integer> appUserIds = null; -// if(ToolUtil.isNotEmpty(cityCode)){ -// List<AppUser> appUsers = appuClient.queryAppUserByCityCode(cityCode); -// if(appUsers.size() > 0){ -// appUserIds = appUsers.stream().map(AppUser::getId).collect(Collectors.toList()); -// } -// } -// QueryWrapper<CoursePackageStudent> status = new QueryWrapper<CoursePackageStudent>().eq("payStatus", 2).eq("status", 1); -// if(null != appUserIds){ -// status.in("appUserId", appUserIds); -// } -// List<Map<String, Object>> maps = this.baseMapper.getStudentTotal(appUserIds, studentQeryDto.getStart(), studentQeryDto.getEnd()); -// List<Map<String, Object>> list = new ArrayList<>(); -// for (Map<String, Object> objectMap : maps) { -// Integer studentId = Integer.valueOf(objectMap.get("studentId").toString()); -// Integer appUserId = Integer.valueOf(objectMap.get("appUserId").toString()); -// Integer coursePackageId = Integer.valueOf(objectMap.get("coursePackageId").toString()); -// Integer number = Integer.valueOf(objectMap.get("number").toString()); -// Map<String, Object> map = new HashMap<>(); -// Student student = studentClient.queryStudentById(studentId); -// map.put("studentName", student.getName()); -// AppUser appUser = appuClient.queryAppUser(appUserId); -// map.put("province", appUser.getProvince()); -// map.put("provinceCode", appUser.getProvinceCode()); -// map.put("city", appUser.getCity()); -// map.put("cityCode", appUser.getCityCode()); -// TCoursePackage coursePackage = coursePackageService.getById(coursePackageId); -// map.put("courseName", coursePackage.getName()); -// map.put("totalClassHours", number); -// map.put("cashPayment", coursePackageOrder.getCashPayment()); -// map.put("hasHours", ) -// -// -// } + String cityCode = studentQeryDto.getCityCode(); + //获取用户数据 + List<Integer> appUserIds = null; + if(ToolUtil.isNotEmpty(cityCode)){ + List<AppUser> appUsers = appuClient.queryAppUserByCityCode(cityCode); + if(appUsers.size() > 0){ + appUserIds = appUsers.stream().map(AppUser::getId).collect(Collectors.toList()); + } + } + QueryWrapper<CoursePackageStudent> status = new QueryWrapper<CoursePackageStudent>().eq("payStatus", 2).eq("status", 1); + if(null != appUserIds){ + status.in("appUserId", appUserIds); + } + List<Map<String, Object>> maps = this.baseMapper.getStudentTotal(appUserIds, studentQeryDto.getStart(), studentQeryDto.getEnd()); + List<Map<String, Object>> list = new ArrayList<>(); + for (Map<String, Object> objectMap : maps) { + if(null == objectMap.get("studentId")){ + continue; + } + Integer studentId = Integer.valueOf(objectMap.get("studentId").toString()); + Integer appUserId = Integer.valueOf(objectMap.get("appUserId").toString()); + Integer coursePackageId = Integer.valueOf(objectMap.get("coursePackageId").toString()); + Integer number = Integer.valueOf(objectMap.get("number").toString()); + Map<String, Object> map = new HashMap<>(); + Student student = studentClient.queryStudentById(studentId); + if(null == student){ + continue; + } + map.put("studentName", student.getName()); + AppUser appUser = appuClient.queryAppUser(appUserId); + if(null == appUser){ + continue; + } + map.put("province", appUser.getProvince()); + map.put("provinceCode", appUser.getProvinceCode()); + map.put("city", appUser.getCity()); + map.put("cityCode", appUser.getCityCode()); + TCoursePackage coursePackage = coursePackageService.getById(coursePackageId); + map.put("courseName", coursePackage.getName()); + map.put("totalClassHours", number); + CoursePackageOrder coursePackageOrder = coursePackageOrderService.getOne(new QueryWrapper<CoursePackageOrder>().eq("appUserId", appUserId) + .eq("coursePackageId", coursePackageId).eq("payStatus", 2).eq("state", 1) + .gt("cashPayment", 0).last(" and studentIds like '%" + studentId + "%' order by insertTime desc limit 0, 1")); + Double cashPayment = 0D; + if(null != coursePackageOrder && coursePackageOrder.getClassHours() > 0){ + cashPayment = coursePackageOrder.getCashPayment().divide(new BigDecimal(coursePackageOrder.getClassHours()), new MathContext(2, RoundingMode.HALF_EVEN)).doubleValue(); + } + map.put("cashPayment", cashPayment * number); -// List<Map<String, Object>> studentTotal = this.baseMapper.getStudentTotal(studentQeryDto); -// for (Map<String, Object> student : studentTotal) { -// Integer appUserId = (Integer) student.get("appUserId"); -// AppUser appUser = appuClient.queryAppUser(appUserId); -// student.put("province", appUser.getProvince()); -// student.put("provinceCode", appUser.getProvinceCode()); -// -// student.put("city", appUser.getCity()); -// student.put("cityCode", appUser.getCityCode()); -// -// Student studentId = studentClient.queryStudentById((Integer) student.get("studentId")); -// student.put("studentName", studentId.getName()); -// BigDecimal cashPayment = (BigDecimal) student.get("cashPayment"); -// BigDecimal totalClassHours = (BigDecimal) student.get("totalClassHours"); -// BigDecimal hasHours = (BigDecimal) student.get("hasHours"); -// if (cashPayment == null) { -// continue; -// } -// if (totalClassHours.compareTo(BigDecimal.ZERO) == 0) { -// totalClassHours = totalClassHours.add(new BigDecimal("1")); -// } -// BigDecimal hasPayment = cashPayment.divide(totalClassHours, 2, RoundingMode.HALF_UP) -// .multiply(hasHours).setScale(2, RoundingMode.HALF_UP); -// student.put("hasPayment", hasPayment); -// } -// -// if (studentQeryDto.getCityCode() != null && studentQeryDto.getCityCode() != "") { -// String value = studentQeryDto.getCityCode(); -// boolean allZeros = value.substring(value.length() - 4).endsWith("0000"); -// System.out.println(allZeros); // Output: true -// if (allZeros) { -// Iterator<Map<String, Object>> iterator = studentTotal.iterator(); -// while (iterator.hasNext()) { -// Map<String, Object> student = iterator.next(); -// String cityCode = (String) student.get("provinceCode"); -// if (!cityCode.equals(studentQeryDto.getCityCode())) { -// iterator.remove(); // Remove the element from the list -// } -// } -// } else { -// Iterator<Map<String, Object>> iterator = studentTotal.iterator(); -// while (iterator.hasNext()) { -// Map<String, Object> student = iterator.next(); -// String cityCode = (String) student.get("cityCode"); -// if (!cityCode.equals(studentQeryDto.getCityCode())) { -// iterator.remove(); // Remove the element from the list -// } -// } -// } -// } -// -// if (studentQeryDto.getStudentName() != null && studentQeryDto.getStudentName() != "") { -// List<Map<String, Object>> totallike = new ArrayList<>(); -// for (Map<String, Object> student : studentTotal) { -// String studentName = (String) student.get("studentName"); -// if (studentName.contains(studentQeryDto.getStudentName())) { -// totallike.add(student); -// } -// -// } -// return totallike; -// } -// return studentTotal; - return null; + int count = coursePackageSchedulingService.count(new QueryWrapper<CoursePackageScheduling>().eq("studentId", studentId) + .eq("coursePackageId", coursePackageId).eq("status", 3)); + map.put("hasHours", count); + map.put("hasPayment", count * cashPayment); + + list.add(map); + } + return list; } @Override public List<Map<String, Object>> bypac(PacQueryDto pacQueryDto) { - if (pacQueryDto.getCityCode() != null && pacQueryDto.getCityCode() != "") { - String value = pacQueryDto.getCityCode(); - boolean allZeros = value.substring(value.length() - 4).endsWith("0000"); - System.out.println(allZeros); // Output: true + List<Map<String, Object>> maps = this.baseMapper.pacQueryDto(pacQueryDto.getStart(), pacQueryDto.getEnd(), pacQueryDto.getStoreIds(), pacQueryDto.getName()); + for (Map<String, Object> map : maps) { + Integer id = Integer.valueOf(map.get("id").toString()); + Integer storeId = Integer.valueOf(map.get("storeId").toString()); + Integer number = Integer.valueOf(map.get("number").toString()); + Store store = storeClient.queryStoreById(storeId); + map.put("store", store.getName()); + map.put("totalClassHours", number); - if (allZeros) { - pacQueryDto.setProvinceCode(pacQueryDto.getCityCode()); - pacQueryDto.setCityCode(null); + List<CoursePackageOrder> list = coursePackageOrderService.list(new QueryWrapper<CoursePackageOrder>() + .eq("coursePackageId", id).eq("payStatus", 2).eq("state", 1) + .gt("cashPayment", 0)); + + + Double cashPayment = 0D; + BigDecimal p = new BigDecimal(0); + for (CoursePackageOrder coursePackageOrder : list) { + p = p.add(coursePackageOrder.getCashPayment()); } - - } - List<Map<String, Object>> maps = this.baseMapper.pacQueryDto(pacQueryDto); - - if (pacQueryDto.getName() != null && pacQueryDto.getName() != "") { - List<Map<String, Object>> totallike = new ArrayList<>(); - for (Map<String, Object> student : maps) { - String studentName = (String) student.get("name"); - if (studentName.contains(pacQueryDto.getName())) { - totallike.add(student); - } - + if(list.size() > 0){ + cashPayment = p.divide(new BigDecimal(list.size()), new MathContext(2, RoundingMode.HALF_EVEN)).doubleValue(); } - return totallike; + map.put("cashPayment", cashPayment * number); + + int count = coursePackageSchedulingService.count(new QueryWrapper<CoursePackageScheduling>().eq("coursePackageId", id).eq("status", 3)); + map.put("hasHours", count); + map.put("lavePay", count * cashPayment); } - - return maps; } -- Gitblit v1.7.1