From 00b60600a83190fd0660a6ccb0cab015904189de Mon Sep 17 00:00:00 2001
From: yyy <1083599556@qq.com>
Date: 星期一, 20 四月 2026 19:39:28 +0800
Subject: [PATCH] 1.定价管理 2.车辆管理 3.免密支付策略 4.站点异常上报情况

---
 xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointSituationReportServiceImpl.java |  126 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 126 insertions(+), 0 deletions(-)

diff --git a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointSituationReportServiceImpl.java b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointSituationReportServiceImpl.java
index 09a8083..b8915b2 100644
--- a/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointSituationReportServiceImpl.java
+++ b/xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointSituationReportServiceImpl.java
@@ -1,12 +1,138 @@
 package com.xiaopeng.operation.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xiaopeng.api.feignClient.account.XpOperationUserClient;
+import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetOperationsClient;
+import com.xiaopeng.api.model.account.XpOperationsUser;
 import com.xiaopeng.api.model.operation.XpPointSituationReport;
+import com.xiaopeng.api.model.vehicleConvoy.XpFleet;
+import com.xiaopeng.api.query.operation.XpPointSituationReportQuery;
+import com.xiaopeng.api.vo.operation.XpPointSituationReportVo;
+import com.xiaopeng.common.core.domain.R;
+import com.xiaopeng.common.core.exception.ServiceException;
+import com.xiaopeng.common.core.web.page.PageInfo;
 import com.xiaopeng.operation.mapper.XpPointSituationReportMapper;
 import com.xiaopeng.operation.service.IXpPointSituationReportService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
 
 
 @Service
 public class XpPointSituationReportServiceImpl extends ServiceImpl<XpPointSituationReportMapper, XpPointSituationReport> implements IXpPointSituationReportService {
+
+
+
+    @Autowired
+    private XpOperationUserClient xpOperationUserClient;
+    @Resource
+    private XpFleetOperationsClient xpFleetOperationsClient;
+
+    @Override
+    public PageInfo<XpPointSituationReportVo> pageList(XpPointSituationReportQuery query) {
+        // 创建分页对象
+        PageInfo<XpPointSituationReportVo> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
+        // 调用Mapper查询
+        List<XpPointSituationReportVo> list = this.baseMapper.pageList(pageInfo, query);
+        extracted(list);
+        // 设置结果
+        pageInfo.setRecords(list);
+        return pageInfo;
+    }
+
+    private void extracted(List<XpPointSituationReportVo> list) {
+        if(!list.isEmpty()){
+            // 收集所有运维人员ID
+            Set<Long> operationsUserIds = list.stream()
+                    .map(XpPointSituationReportVo::getOperationsUserId)
+                    .filter(Objects::nonNull)
+                    .collect(Collectors.toSet());
+            // 批量查询操作人信息
+            Map<Long, String> userNameMap = new HashMap<>();
+            if (!CollectionUtils.isEmpty(operationsUserIds)) {
+                R<List<XpOperationsUser>> userResult = xpOperationUserClient.listByIds(operationsUserIds);
+                List<XpOperationsUser> users = userResult.getData();
+                if (!CollectionUtils.isEmpty(users)) {
+                    userNameMap = users.stream()
+                            .collect(Collectors.toMap(XpOperationsUser::getId, XpOperationsUser::getNickName));
+                }
+            }
+
+            for (XpPointSituationReportVo bean : list) {
+                if (userNameMap.containsKey(bean.getOperationsUserId())){
+                    bean.setOperationsUserName(userNameMap.get(bean.getOperationsUserId()));
+                }
+                if(bean.getOperationStatus() != null){//运营状态 1=待启用 2=启用中 3=已停用 4=已失效
+                    if(bean.getOperationStatus() == 1){
+                        bean.setPointStatusName("待启用");
+                    }else if(bean.getOperationStatus() == 2){
+                        bean.setPointStatusName("启用中");
+                    }else if(bean.getOperationStatus() == 3){
+                        bean.setPointStatusName("已停用");
+                    }else if(bean.getOperationStatus() == 4){
+                        bean.setPointStatusName("已失效");
+                    }
+                }
+            }
+        }
+    }
+
+
+    @Override
+    public XpPointSituationReportVo getdetail(Long id) {
+        XpPointSituationReportQuery query = new XpPointSituationReportQuery();
+        query.setId(id);
+        List<XpPointSituationReportVo> list = this.baseMapper.pageList(query);
+        if(list.isEmpty()){
+            throw new ServiceException("未查询该数据");
+        }
+        XpPointSituationReportVo bean = list.get(0);
+
+        // 批量查询操作人信息
+        R<List<XpOperationsUser>> userResult = xpOperationUserClient.listByIds(new ArrayList<Long>(){{
+            add(bean.getOperationsUserId());
+        }} );
+        List<XpOperationsUser> users = userResult.getData();
+        if (CollectionUtils.isEmpty(users)) {
+            throw new ServiceException("未查询该运维人员");
+        }
+        Map<Long, String> userNameMap = users.stream()
+                .collect(Collectors.toMap(XpOperationsUser::getId, XpOperationsUser::getNickName));
+
+        bean.setOperationsUserName(userNameMap.get(bean.getOperationsUserId()));
+
+        R<List<XpFleet>> fleetByUserId = xpFleetOperationsClient.getFleetByUserId(bean.getOperationsUserId());
+        if(fleetByUserId.getCode() != R.SUCCESS || fleetByUserId.getData().isEmpty()){
+            throw new ServiceException("未查询该车队");
+        }
+
+        bean.setOperationsUserFleetName(fleetByUserId.getData().get(0).getFleetName());
+
+        return bean;
+    }
+
+
+    @Override
+    public List<XpPointSituationReportVo> exportList(XpPointSituationReportQuery query) {
+        List<XpPointSituationReportVo> list = this.baseMapper.pageList(query);
+        extracted(list);
+        return list;
+    }
+
+
+    @Override
+    public void deleteById(Long id) {
+        // 1. 检查记录是否存在
+        XpPointSituationReport bean = this.getById(id);
+        if (bean == null) {
+            throw new ServiceException("密支付策略配置不存在");
+        }
+        // 2. 逻辑删除(MyBatis-Plus自动处理)
+        this.removeById(id);
+    }
+
 }

--
Gitblit v1.7.1