From c5a96f35ff17e71a330fd391bc3866cead3d13b4 Mon Sep 17 00:00:00 2001
From: xuhy <3313886187@qq.com>
Date: 星期三, 14 八月 2024 15:59:42 +0800
Subject: [PATCH] 充电桩权限管理
---
ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java | 140 +++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 136 insertions(+), 4 deletions(-)
diff --git a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
index 94f423b..44f75a0 100644
--- a/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
+++ b/ruoyi-service/ruoyi-order/src/main/java/com/ruoyi/order/service/impl/TOrderEvaluateServiceImpl.java
@@ -1,20 +1,45 @@
package com.ruoyi.order.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.account.api.feignClient.AppUserCarClient;
+import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.model.TAppUser;
+import com.ruoyi.account.api.model.TAppUserCar;
+import com.ruoyi.account.api.feignClient.AppUserClient;
+import com.ruoyi.account.api.model.TAppUser;
+import com.ruoyi.chargingPile.api.feignClient.SiteClient;
+import com.ruoyi.chargingPile.api.model.Site;
+import com.ruoyi.chargingPile.api.vo.TAccountingStrategyVO;
import com.ruoyi.common.core.domain.R;
+import com.ruoyi.common.core.web.page.PageInfo;
+import com.ruoyi.order.api.model.TChargingOrder;
import com.ruoyi.order.api.model.TOrderEvaluate;
+import com.ruoyi.order.api.model.TOrderEvaluateTag;
+import com.ruoyi.order.api.query.TOrderEvaluateQuery;
+import com.ruoyi.order.api.vo.SiteDetailEvaluateVO;
+import com.ruoyi.order.api.vo.TOrderEvaluateVO;
+import com.ruoyi.order.dto.GetOrderEvaluatePageList;
+import com.ruoyi.order.dto.GetOrderEvaluatePageListDTO;
+import com.ruoyi.order.mapper.TChargingOrderMapper;
import com.ruoyi.order.mapper.TOrderEvaluateMapper;
import com.ruoyi.order.mapper.TOrderEvaluateTagMapper;
import com.ruoyi.order.service.TOrderEvaluateService;
+import com.ruoyi.other.api.domain.TEvaluationTag;
import com.ruoyi.other.api.feignClient.TEvaluationTagClient;
import com.ruoyi.other.api.vo.TEvaluationTagVO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+import java.math.BigDecimal;
+import javax.annotation.Resource;
+import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.stream.Collectors;
/**
@@ -28,14 +53,37 @@
@Service
public class TOrderEvaluateServiceImpl extends ServiceImpl<TOrderEvaluateMapper, TOrderEvaluate> implements TOrderEvaluateService {
- @Autowired
+ @Resource
private TEvaluationTagClient evaluationTagClient;
+ @Resource
+ private AppUserClient appUserClient;
+ @Autowired
+ private AppUserCarClient appUserCarClient;
@Autowired
private TOrderEvaluateTagMapper orderEvaluateTagMapper;
+ @Resource
+ private TChargingOrderMapper chargingOrderMapper;
+
+ @Resource
+ private SiteClient siteClient;
+
+
+
+
+
+
+
+
+
+
+
+
+ @Autowired
+ private TOrderEvaluateMapper orderEvaluateMapper;
@Override
- public List<TEvaluationTagVO> getTagList() {
+ public List<TEvaluationTagVO> getTagCount() {
// 查询标签列表
- R<List<TEvaluationTagVO>> r = evaluationTagClient.getTagList();
+ R<List<TEvaluationTagVO>> r = evaluationTagClient.getTagList(null);
List<TEvaluationTagVO> tagList = r.getData();
List<Integer> tagIds = tagList.stream().map(TEvaluationTagVO::getId).collect(Collectors.toList());
// 统计标签使用数量
@@ -61,6 +109,60 @@
return tagList;
}
+ @Override
+ public PageInfo<TOrderEvaluateVO> getTagList(TOrderEvaluateQuery query) {
+ PageInfo<TOrderEvaluateVO> pageInfo = new PageInfo<>(query.getPageCurr(),query.getPageSize());
+ // 查询站点下的所有订单
+ List<TChargingOrder> tChargingOrders = chargingOrderMapper.selectList(Wrappers.lambdaQuery(TChargingOrder.class)
+ .eq(TChargingOrder::getSiteId, query.getSiteId()));
+ if(CollectionUtils.isEmpty(tChargingOrders)){
+ return new PageInfo<>();
+ }
+ List<Long> orderIds = tChargingOrders.stream().map(TChargingOrder::getId).collect(Collectors.toList());
+ query.setOrderIds(orderIds);
+ List<TOrderEvaluateVO> list = this.baseMapper.pageList(query,pageInfo);
+ // 查询用户信息
+ List<TAppUser> appUsers = appUserClient.getUserByIds(list.stream().map(TOrderEvaluateVO::getAppUserId).collect(Collectors.toList())).getData();
+ // 查询用户绑定车辆品牌
+ List<TAppUserCar> appUserCars = appUserCarClient.getCarByIds(list.stream().map(TOrderEvaluateVO::getAppUserCarId).collect(Collectors.toList())).getData();
+ list.forEach(orderEvaluateVO -> {
+ TAppUser appUser = appUsers.stream().filter(user -> user.getId().equals(orderEvaluateVO.getAppUserId())).findFirst().orElse(null);
+ if(Objects.nonNull(appUser)){
+ orderEvaluateVO.setName(appUser.getName());
+ orderEvaluateVO.setAvatar(appUser.getAvatar());
+ }
+ TAppUserCar appUserCar = appUserCars.stream().filter(car -> car.getId().equals(Long.parseLong(String.valueOf(orderEvaluateVO.getAppUserCarId())))).findFirst().orElse(null);
+ if(Objects.nonNull(appUserCar)){
+ orderEvaluateVO.setCarName(appUserCar.getVehicleBrand());
+ }
+ });
+ pageInfo.setRecords(list);
+ return pageInfo;
+ }
+
+ @Override
+ public SiteDetailEvaluateVO getSiteDetailEveList(Integer siteId) {
+ SiteDetailEvaluateVO siteDetailEvaluateVO = new SiteDetailEvaluateVO();
+ // 查询站点下的所有订单评价
+ List<TOrderEvaluateVO> tChargingOrders = orderEvaluateMapper.getOrderEvaluateBySiteId(siteId);
+ if(!CollectionUtils.isEmpty(tChargingOrders)){
+ siteDetailEvaluateVO.setOrderEvaluateVOS(tChargingOrders);
+ // 统计好评率
+ long goodCount = tChargingOrders.stream().filter(orderEvaluateVO -> orderEvaluateVO.getMark()>=4).count();
+ BigDecimal reviewRate = new BigDecimal(goodCount).divide(new BigDecimal(tChargingOrders.size())).setScale(2, BigDecimal.ROUND_HALF_UP);
+ siteDetailEvaluateVO.setReviewRate(reviewRate);
+ siteDetailEvaluateVO.setEvaluateCount(tChargingOrders.size());
+ siteDetailEvaluateVO.setOrderEvaluateVOS(tChargingOrders.stream().limit(3).collect(Collectors.toList()));
+ }
+ return siteDetailEvaluateVO;
+ }
+
+ /**
+ * 统计有图,好评,中差评数量
+ * @param count
+ * @param name
+ * @param tagList
+ */
private void packageTagCount(Long count,String name,List<TEvaluationTagVO> tagList){
if(count>0){
TEvaluationTagVO evaluationTagVO = new TEvaluationTagVO();
@@ -69,5 +171,35 @@
tagList.add(evaluationTagVO);
}
}
-
+
+
+ /**
+ * 获取充电评价列表
+ * @param pageList
+ * @return
+ */
+ @Override
+ public PageInfo<GetOrderEvaluatePageListDTO> getPageList(GetOrderEvaluatePageList pageList) {
+ PageInfo<GetOrderEvaluatePageListDTO> pageInfo = new PageInfo<>(pageList.getPageCurr(), pageList.getPageSize());
+ List<Integer> evaluationTagIds = null;
+ if(null != pageList.getEvaluateType()){
+ List<TEvaluationTagVO> data = evaluationTagClient.getTagList(pageList.getEvaluateType()).getData();
+ evaluationTagIds = data.stream().map(TEvaluationTagVO::getId).collect(Collectors.toList());
+ }
+ List<GetOrderEvaluatePageListDTO> list = this.baseMapper.getPageList(pageList, evaluationTagIds, pageInfo);
+ for (GetOrderEvaluatePageListDTO dto : list) {
+ TAppUser appUser = appUserClient.getUserById(dto.getAppUserId()).getData();
+ dto.setAvatar(appUser.getAvatar());
+ String phone = appUser.getPhone();
+ dto.setPhone(phone.substring(0, 3) + "****" + phone.substring(6));
+ Site site = siteClient.getSiteByIds(Arrays.asList(dto.getSiteId())).getData().get(0);
+ dto.setSiteName(site.getName());
+ List<TOrderEvaluateTag> tOrderEvaluateTags = orderEvaluateTagMapper.selectList(new LambdaQueryWrapper<TOrderEvaluateTag>().eq(TOrderEvaluateTag::getOrderEvaluateId, dto.getId()));
+ List<Integer> tagIds = tOrderEvaluateTags.stream().map(TOrderEvaluateTag::getEvaluationTagId).collect(Collectors.toList());
+ List<TEvaluationTag> data = evaluationTagClient.getListByIds(tagIds).getData();
+ List<String> collect = data.stream().map(TEvaluationTag::getName).collect(Collectors.toList());
+ dto.setTags(collect);
+ }
+ return pageInfo.setRecords(list);
+ }
}
--
Gitblit v1.7.1