| | |
| | | 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; |
| | |
| | | |
| | | @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; |
| | | } |
| | | |
| | |
| | | |
| | | |
| | | response.setChooseHours(coursePackageOrder.getClassHours()); |
| | | response.setStuIds(coursePackageOrder.getStudentIds().split(",")); |
| | | response.setStuIds(coursePackageOrder.getStudentIds().split(";")); |
| | | response.setPayType(coursePackageOrder.getPayType()); |
| | | response.setPayPrice(coursePackageOrder.getCashPayment()); |
| | | response.setCoinPrice(coursePackageOrder.getPlayPaiCoin()); |