| | |
| | | import java.math.BigDecimal; |
| | | import java.text.SimpleDateFormat; |
| | | import java.time.LocalDate; |
| | | import java.time.LocalDateTime; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | |
| | | @Autowired |
| | | private TRechargeRecordMapper tRechargeRecordMapper; |
| | | @Autowired |
| | | private TUserToCouponMapper tUserToCouponMapper; |
| | | |
| | | @Override |
| | | public EntityWrapper<TAgent> getAgentWrapper(String principal, String principalPhone, String createTime) { |
| | | public EntityWrapper<TAgent> getAgentWrapper(String principal, String principalPhone, String createTime,Integer status) { |
| | | EntityWrapper<TAgent> wrapper = new EntityWrapper<>(); |
| | | // 昵称 |
| | | if(StringUtils.hasLength(principal)){ |
| | |
| | | // 开始,结束时间 |
| | | if(StringUtils.hasLength(createTime)){ |
| | | String[] split = createTime.split(" - "); |
| | | Date startTime = DateUtil.getDate_str4(split[0]); |
| | | Date endTime = DateUtil.getDate_str4(split[1]); |
| | | Date startTime = DateUtil.getDate_str3(split[0]+" 00:00:00"); |
| | | Date endTime = DateUtil.getDate_str3(split[1]+" 23:59:59"); |
| | | wrapper.between("createTime",startTime,endTime); |
| | | } |
| | | // 判断是否为代理商 |
| | | if(Objects.requireNonNull(ShiroKit.getUser()).getRoleType() == 3){ |
| | | wrapper.eq("id",ShiroKit.getUser().getObjectId()); |
| | | } |
| | | // 状态 |
| | | if(Objects.nonNull(status)){ |
| | | wrapper.eq("status",status); |
| | | } |
| | | wrapper.ne("status", StatusEnum.DELETE.getCode()); |
| | | wrapper.orderBy("createTime",false); |
| | | return wrapper; |
| | | } |
| | | |
| | |
| | | model.addAttribute("orderSum",orderList.size()); |
| | | // 过滤已完成和待评价订单,且支付金额在14元以上 |
| | | List<TOrder> orders = orderList.stream().filter(order -> (order.getState().equals(OrderStateEnum.FINISH.getCode()) || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode())) |
| | | && 0 < order.getPayMoney().compareTo(new BigDecimal("14")) && order.getAgentId().equals(tAgent.getId())).collect(Collectors.toList()); |
| | | && 0 < order.getOrderMoney().compareTo(new BigDecimal("14")) && order.getAgentId().equals(tAgent.getId())).collect(Collectors.toList()); |
| | | model.addAttribute("validOrder",orders.size()); |
| | | // 过滤已使用优惠券 |
| | | List<TOrder> usedCoupon = orderList.stream().filter(order -> (order.getState().equals(OrderStateEnum.FINISH.getCode()) || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode())) |
| | | && Objects.nonNull(order.getCouponId()) && order.getAgentId().equals(tAgent.getId())).collect(Collectors.toList()); |
| | | model.addAttribute("usedCoupon",usedCoupon.size()); |
| | | // model.addAttribute("usedCoupon",usedCoupon.size()); |
| | | // 已使用优惠券金额求和,已使用优惠券id |
| | | List<Integer> usedCouponId = usedCoupon.stream().map(TOrder::getCouponId).collect(Collectors.toList()); |
| | | // 查询已使用优惠券金额求和 |
| | | List<TCoupon> tCoupons1 = tCouponMapper.selectList(new EntityWrapper<TCoupon>().in("id", usedCouponId)); |
| | | if(CollectionUtils.isEmpty(tCoupons1)){ |
| | | model.addAttribute("couponPriceSum", BigDecimal.ZERO); |
| | | }else { |
| | | tCoupons1.stream().map(TCoupon::getCouponPreferentialAmount).reduce(BigDecimal::add).ifPresent(bigDecimal -> model.addAttribute("couponPriceSum", bigDecimal)); |
| | | } |
| | | // List<Integer> usedCouponId = usedCoupon.stream().map(TOrder::getCouponId).collect(Collectors.toList()); |
| | | // if(CollectionUtils.isEmpty(usedCouponId)){ |
| | | // // 如果优惠券为空 |
| | | // model.addAttribute("couponPriceSum", BigDecimal.ZERO); |
| | | // }else { |
| | | // // 查询已使用优惠券金额求和 |
| | | // List<TCoupon> tCoupons1 = tCouponMapper.selectList(new EntityWrapper<TCoupon>().in("id", usedCouponId)); |
| | | // if(CollectionUtils.isEmpty(tCoupons1)){ |
| | | // model.addAttribute("couponPriceSum", BigDecimal.ZERO); |
| | | // }else { |
| | | // tCoupons1.stream().map(TCoupon::getCouponPreferentialAmount).reduce(BigDecimal::add).ifPresent(bigDecimal -> model.addAttribute("couponPriceSum", bigDecimal)); |
| | | // } |
| | | // } |
| | | // 优惠券信息 |
| | | // 过滤代理商发放的优惠券 |
| | | List<TCoupon> tCoupons = tCouponMapper.selectList(new EntityWrapper<TCoupon>()); |
| | | model.addAttribute("issuedCoupon",tCoupons.size()); |
| | | List<TUserToCoupon> tUserToCoupons = tUserToCouponMapper.selectList(new EntityWrapper<TUserToCoupon>().eq("objectId",tAgent.getId()) |
| | | .eq("roleType",3)); |
| | | BigDecimal couponPriceSum = BigDecimal.ZERO; |
| | | for (TUserToCoupon userToCoupon : tUserToCoupons) { |
| | | TCoupon tCoupons1 = tCouponMapper.selectById(userToCoupon.getCouponId()); |
| | | if(Objects.nonNull(tCoupons1)){ |
| | | couponPriceSum = couponPriceSum.add(tCoupons1.getCouponPreferentialAmount().multiply(new BigDecimal(userToCoupon.getCouponTotal()))); |
| | | } |
| | | } |
| | | model.addAttribute("couponPriceSum", couponPriceSum); |
| | | // 过滤代理商发放的优惠券 |
| | | int sum = tUserToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum(); |
| | | model.addAttribute("issuedCoupon",sum); |
| | | // 总量减去有效数量和过期数量为使用数量 |
| | | int validCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();//有效数量 |
| | | int expireCount = tUserToCoupons.stream().mapToInt(TUserToCoupon::getExpireCount).sum();//过期数量 |
| | | model.addAttribute("usedCoupon",sum-validCount-expireCount); |
| | | // 司机信息 |
| | | // 司机数 |
| | | List<TDriver> drivers = tDriverMapper.selectList(new EntityWrapper<TDriver>().eq("agentId", tAgent.getId())); |
| | | model.addAttribute("driverCount",drivers.size()); |
| | | // 司机充值计算 |
| | | List<Integer> driverIds = drivers.stream().map(TDriver::getId).collect(Collectors.toList()); |
| | | List<TRechargeRecord> tRechargeRecords = tRechargeRecordMapper.selectList(new EntityWrapper<TRechargeRecord>().in("userId", driverIds) |
| | | .eq("type", UserTypeEnum.DRIVER.getCode()) |
| | | List<TRechargeRecord> tRechargeRecords = tRechargeRecordMapper.selectList(new EntityWrapper<TRechargeRecord>() |
| | | .in("userId", driverIds) |
| | | .eq("type", UserTypeEnum.AGENT.getCode()) |
| | | .eq("payStatus", PayStatusEnum.FINISH.getCode())); |
| | | if(CollectionUtils.isEmpty(tRechargeRecords)){ |
| | | model.addAttribute("driverRecharge",BigDecimal.ZERO); |
| | |
| | | List<TOrder> tOrders = tOrderMapper.selectList(new EntityWrapper<TOrder>()); |
| | | // 查询优惠券 |
| | | List<TCoupon> tCoupons = tCouponMapper.selectList(new EntityWrapper<TCoupon>()); |
| | | // 用户优惠券 |
| | | List<TUserToCoupon> tUserToCoupons = tUserToCouponMapper.selectList(new EntityWrapper<TUserToCoupon>()); |
| | | // 查询司机信息 |
| | | List<TDriver> tDrivers = tDriverMapper.selectList(new EntityWrapper<TDriver>()); |
| | | |
| | |
| | | tAgentResp.setOrderSum(orderList.size()); |
| | | // 过滤已完成和待评价订单,且支付金额在14元以上 |
| | | List<TOrder> orders = tOrders.stream().filter(order -> (order.getState().equals(OrderStateEnum.FINISH.getCode()) || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode())) |
| | | && 0 < order.getPayMoney().compareTo(new BigDecimal("14")) && tAgent.getId().equals(order.getAgentId())).collect(Collectors.toList()); |
| | | && 0 < order.getOrderMoney().compareTo(new BigDecimal("14")) && tAgent.getId().equals(order.getAgentId())).collect(Collectors.toList()); |
| | | tAgentResp.setValidOrder(orders.size()); |
| | | // 过滤已使用优惠券 |
| | | List<TOrder> usedCoupon = tOrders.stream().filter(order -> (order.getState().equals(OrderStateEnum.FINISH.getCode()) || order.getState().equals(OrderStateEnum.WAIT_EVALUATED.getCode())) |
| | | && Objects.nonNull(order.getCouponId()) && tAgent.getId().equals(order.getAgentId())).collect(Collectors.toList()); |
| | | // 通过订单总量获取已完成订单的使用优惠券数量及优惠券金额 |
| | | tAgentResp.setUsedCoupon(usedCoupon.size()); |
| | | // 金额 |
| | | Optional<BigDecimal> reduce = usedCoupon.stream().map(TOrder::getDiscountedPrice).reduce(BigDecimal::add); |
| | | reduce.ifPresent(tAgentResp::setCouponPriceSum); |
| | | |
| | | |
| | | // 已使用优惠券金额求和,已使用优惠券id |
| | | List<Integer> usedCouponId = usedCoupon.stream().map(TOrder::getCouponId).collect(Collectors.toList()); |
| | | // 查询已使用优惠券金额求和 |
| | | List<TCoupon> tCoupons1 = tCouponMapper.selectList(new EntityWrapper<TCoupon>().in("id", usedCouponId)); |
| | | tCoupons1.stream().map(TCoupon::getCouponPreferentialAmount).reduce(BigDecimal::add).ifPresent(tAgentResp::setCouponPriceSum); |
| | | // List<Integer> usedCouponId = usedCoupon.stream().map(TOrder::getCouponId).collect(Collectors.toList()); |
| | | // if(CollectionUtils.isEmpty(usedCouponId)){ |
| | | // tAgentResp.setCouponPriceSum(BigDecimal.ZERO); |
| | | // }else { |
| | | // // 查询已使用优惠券金额求和 |
| | | // BigDecimal couponPriceSum = BigDecimal.ZERO; |
| | | // for (Integer id : usedCouponId) { |
| | | // TCoupon tCoupons1 = tCouponMapper.selectById(id); |
| | | // couponPriceSum = couponPriceSum.add(tCoupons1.getCouponPreferentialAmount()); |
| | | // } |
| | | // tAgentResp.setCouponPriceSum(couponPriceSum); |
| | | // } |
| | | } |
| | | |
| | | if(!CollectionUtils.isEmpty(tCoupons)){ |
| | | // 过滤代理商发放的优惠券 |
| | | List<TCoupon> coupons = tCoupons.stream().filter(coupon -> tAgent.getId().equals(coupon.getAgentId())).collect(Collectors.toList()); |
| | | tAgentResp.setIssuedCoupon(coupons.size()); |
| | | } |
| | | // if(!CollectionUtils.isEmpty(tUserToCoupons)){ |
| | | // // 过滤代理商发放的优惠券 |
| | | // List<TUserToCoupon> userToCoupons = tUserToCoupons.stream().filter(coupon -> tAgent.getId().equals(coupon.getObjectId()) && coupon.getRoleType() == 3).collect(Collectors.toList()); |
| | | // int sum = userToCoupons.stream().mapToInt(TUserToCoupon::getCouponTotal).sum(); |
| | | // tAgentResp.setIssuedCoupon(sum); |
| | | // // 总量减去有效数量和过期数量为使用数量 |
| | | // int validCount = userToCoupons.stream().mapToInt(TUserToCoupon::getValidCount).sum();//有效数量 |
| | | // int expireCount = userToCoupons.stream().mapToInt(TUserToCoupon::getExpireCount).sum();//过期数量 |
| | | // tAgentResp.setUsedCoupon(sum-validCount-expireCount); |
| | | // BigDecimal couponPriceSum = BigDecimal.ZERO; |
| | | // for (TUserToCoupon userToCoupon : userToCoupons) { |
| | | // TCoupon tCoupons1 = tCouponMapper.selectById(userToCoupon.getCouponId()); |
| | | // if(Objects.nonNull(tCoupons1)){ |
| | | // couponPriceSum = couponPriceSum.add(tCoupons1.getCouponPreferentialAmount().multiply(new BigDecimal(userToCoupon.getCouponTotal()))); |
| | | // } |
| | | // } |
| | | // tAgentResp.setCouponPriceSum(couponPriceSum); |
| | | // } |
| | | |
| | | if(!CollectionUtils.isEmpty(tDrivers)){ |
| | | // 司机数 |
| | |
| | | tAgentResp.setDriverCount(drivers.size()); |
| | | // 司机充值计算 |
| | | List<Integer> driverIds = drivers.stream().map(TDriver::getId).collect(Collectors.toList()); |
| | | List<TRechargeRecord> tRechargeRecords = tRechargeRecordMapper.selectList(new EntityWrapper<TRechargeRecord>().in("userId", driverIds) |
| | | .eq("type", UserTypeEnum.DRIVER.getCode()) |
| | | List<TRechargeRecord> tRechargeRecords = tRechargeRecordMapper.selectList(new EntityWrapper<TRechargeRecord>() |
| | | .eq("agentId", tAgent.getId()) |
| | | .eq("type", UserTypeEnum.AGENT.getCode()) |
| | | .eq("payStatus", PayStatusEnum.FINISH.getCode())); |
| | | tRechargeRecords.stream().map(TRechargeRecord::getAmount).reduce(BigDecimal::add).ifPresent(tAgentResp::setDriverRecharge); |
| | | } |
| | |
| | | } |
| | | |
| | | @Override |
| | | public void getDataStatistics(Integer agentId, Model model) { |
| | | public void getDataStatistics(Integer agentId, Model model,Map<String, Object> map) { |
| | | // 代理商总数 |
| | | Integer agentTotal = tAgentMapper.selectCount(new EntityWrapper<TAgent>() |
| | | .eq("id", agentId)); |
| | | // 代理商最近一个月新增数量 |
| | | LocalDate now = LocalDate.now(); |
| | | LocalDate localDate = now.plusMonths(1); |
| | | LocalDateTime now = LocalDateTime.now(); |
| | | LocalDateTime localDate = now.minusMonths(1); |
| | | Integer agentMonthTotal = tAgentMapper.selectCount(new EntityWrapper<TAgent>() |
| | | .eq("id", agentId) |
| | | .between("createTime", localDate, now)); |
| | | model.addAttribute("agentTotal",agentTotal); |
| | | model.addAttribute("agentMonthTotal",agentMonthTotal); |
| | | map.put("agentTotal",agentTotal); |
| | | map.put("agentMonthTotal",agentMonthTotal); |
| | | } |
| | | |
| | | @Override |
| | | public void getDataStatisticsByIds(List<Integer> ids, Model model, Map<String, Object> map) { |
| | | // 代理商总数 |
| | | Integer agentTotal = tAgentMapper.selectCount(new EntityWrapper<TAgent>() |
| | | .in("id", ids)); |
| | | // 代理商最近一个月新增数量 |
| | | LocalDateTime now = LocalDateTime.now(); |
| | | LocalDateTime localDate = now.minusMonths(1); |
| | | Integer agentMonthTotal = tAgentMapper.selectCount(new EntityWrapper<TAgent>() |
| | | .in("id", ids) |
| | | .between("createTime", localDate, now)); |
| | | model.addAttribute("agentTotal",agentTotal); |
| | | model.addAttribute("agentMonthTotal",agentMonthTotal); |
| | | map.put("agentTotal",agentTotal); |
| | | map.put("agentMonthTotal",agentMonthTotal); |
| | | } |
| | | } |