yyy
2026-04-23 e7ad5effbf152b64b57a7b235771d98931f7b9c5
1.现场情况上报 调试修改
8个文件已修改
95 ■■■■■ 已修改文件
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/ISysGroupService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysGroupServiceImpl.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/operation/XpPointSituationReportQuery.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpPointSituationReportController.java 37 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/IXpPointSituationReportService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointSituationReportServiceImpl.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpPointSituationReportMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/ISysGroupService.java
@@ -74,6 +74,11 @@
     */
    void deleteById(Long id);
    /**
     *  获取手机号脱敏
     * @param phoneNumber
     * @return
     */
    String getPhoneDesensitization(String phoneNumber);
    boolean getPhoneDesensitization();
xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/SysGroupServiceImpl.java
@@ -321,7 +321,11 @@
        removeById(id);
    }
    /**
     *  获取手机号脱敏
     * @param phoneNumber
     * @return
     */
    @Override
    public String getPhoneDesensitization(String phoneNumber){
        boolean b = getPhoneDesensitization();
xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/operation/XpPointSituationReportQuery.java
@@ -34,19 +34,21 @@
    /**
     * 上报运维id
     */
    @TableField("operations_user_id")
    @ApiModelProperty("上报运维id")
    private Long operationsUserId;
    private List<Long> operationsUserIds;
    @ApiModelProperty("上报运维人名称")
    private String operationsUserName;
    /**
     * 现场情况上报时间
     */
    @TableField("reporting_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime reportingTimeStart;
    /**
     * 现场情况上报时间
     */
    @TableField("reporting_time")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime reportingTimeEnd;
}
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpPointManagementController.java
@@ -210,6 +210,7 @@
        if (xpPoint == null) {
            throw new ServiceException("系统异常", I18nKeyConstant.SYSTEM_EXCEPTION);
        }
        pointAddDto.setStationSortNo(xpPoint.getStationSortNo());
        xpPointService.validatePointNameUnique(pointAddDto.getPointName(), pointAddDto.getId());
        BeanUtils.copyProperties(pointAddDto, xpPoint);
        if (Integer.valueOf(2).equals(pointAddDto.getOperationStatus()) && Integer.valueOf(5).equals(pointAddDto.getVerificationStatus())) {
@@ -236,12 +237,10 @@
        }
        xpPoint.setFpElectronicAreaId(null);
        Integer stationSortNo = xpPoint.getStationSortNo(); //点位在场站内排序
        Long stationId = pointAddDto.getStationId();
        Integer stationSortNo = pointAddDto.getStationSortNo(); //点位在场站内排序
        if(stationId != null && stationId > 0){
            if(stationSortNo == null){
                stationSortNo = 0;
            }
            stationSortNo = 0;
        }
        // 使用 lambdaUpdate 确保 pointPictures 为 null 时也能将数据库字段清空
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpPointSituationReportController.java
@@ -3,7 +3,10 @@
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.hutool.core.util.StrUtil;
import com.xiaopeng.api.feignClient.account.XpOperationUserClient;
import com.xiaopeng.api.model.account.SysUser;
import com.xiaopeng.api.model.account.XpOperationsUser;
import com.xiaopeng.api.model.operation.XpPasswordFreePolicy;
import com.xiaopeng.api.model.operation.XpPointSituationReport;
import com.xiaopeng.api.query.operation.XpPointSituationReportQuery;
@@ -19,6 +22,7 @@
import io.swagger.annotations.ApiOperation;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
@@ -30,6 +34,7 @@
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
@RestController
@RequestMapping("")
@@ -41,6 +46,8 @@
    @Resource
    private TokenService tokenService;
    @Resource
    private XpOperationUserClient xpOperationUserClient;
@@ -50,19 +57,23 @@
    @ApiOperation(value = "现场情况上报分页列表", tags = {"管理后台-运维-现场情况上报"}, response = XpPasswordFreePolicy.class)
    @PostMapping("/api/v1/pointSituationReport/pageList")
    public R<PageInfo<XpPointSituationReportVo>> pageList(@RequestBody XpPointSituationReportQuery query) {
        PageInfo<XpPointSituationReportVo> pageInfo = xpPointSituationReportService.pageList(query);
        return R.ok(pageInfo);
    }
    /**
     * 删除路线规划配置
     * 详情现场情况上报
     */
    @ApiOperation(value = "详情现场情况上报", tags = {"管理后台-运维-现场情况上报"})
    @GetMapping("/api/v1/pointSituationReport/getdetail/{id}")
    public R<?> getdetail(@PathVariable Long id) {
        xpPointSituationReportService.getdetail(id);
        return R.ok();
        XpPointSituationReportVo detail = xpPointSituationReportService.getdetail(id);
        return R.ok(detail);
    }
@@ -72,13 +83,27 @@
    @ApiOperation(value = "删除现场情况上报", tags = {"管理后台-运维-现场情况上报"})
    @DeleteMapping("/api/v1/pointSituationReport/deleteById/{id}")
    public R<?> deleteById(@PathVariable Long id) {
        xpPointSituationReportService.deleteById(id);
        return R.ok();
        try {
            boolean b = xpPointSituationReportService.deleteById(id);
            if(b){
                return R.ok();
            }
            return R.fail("删除失败");
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e);
        }
    }
    @ApiOperation(value = "导出现场情况上报", tags = {"管理后台-运维-现场情况上报"})
    @PostMapping(value = "/api/v1/pointSituationReport/exportExcels")
    public void exportExcels(@RequestBody XpPointSituationReportQuery query) {
        if(query.getIds().isEmpty()){
            return;
        }
        List<XpPointSituationReportVo> exportList = xpPointSituationReportService.exportList(query);
        List<XpPointSituationReportExportExcel> exportExcels = new ArrayList<>();
        long sequence = 1L;
@@ -115,7 +140,7 @@
    }
    @ApiOperation(value = "现场情况上报", tags = {"运维APP-站点管理"}, response = XpPointSituationReport.class)
    @ApiOperation(value = "现场情况上报", tags = {"运维APP-现场情况上报"}, response = XpPointSituationReport.class)
    @PostMapping("/maintenance-app/api/v1/pointSituationReport/addPointSituationReport")
    public R<?> addPointSituationReport(@RequestBody XpPointSituationReport xpPointSituationReport){
        LoginOperationUser loginOperationUser = tokenService.getLoginOperationUser();
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/IXpPointSituationReportService.java
@@ -15,5 +15,5 @@
    List<XpPointSituationReportVo> exportList(XpPointSituationReportQuery query);
    void deleteById(Long id);
    boolean deleteById(Long id);
}
xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/service/impl/XpPointSituationReportServiceImpl.java
@@ -1,5 +1,8 @@
package com.xiaopeng.operation.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xiaopeng.api.feignClient.account.XpOperationUserClient;
import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetOperationsClient;
@@ -13,6 +16,7 @@
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.operation.mapper.XpPointSituationReportMapper;
import com.xiaopeng.operation.service.IXpPointSituationReportService;
import net.bytebuddy.implementation.bytecode.Throw;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
@@ -34,6 +38,18 @@
    @Override
    public PageInfo<XpPointSituationReportVo> pageList(XpPointSituationReportQuery query) {
        //根据 上报运维人名称 查询数据
        if(StrUtil.isNotBlank(query.getOperationsUserName())){
            R<List<XpOperationsUser>> listR = xpOperationUserClient.listByName(query.getOperationsUserName());
            if(CollUtil.isNotEmpty(listR.getData())){
                List<Long> operationsUserIds = listR.getData().stream()
                        .map(XpOperationsUser::getId)
                        .collect(Collectors.toList());
                query.setOperationsUserIds(operationsUserIds);
            }else{
                query.setOperationsUserIds(ListUtil.toList(0L));
            }
        }
        // 创建分页对象
        PageInfo<XpPointSituationReportVo> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        // 调用Mapper查询
@@ -125,14 +141,14 @@
    @Override
    public void deleteById(Long id) {
    public boolean deleteById(Long id) {
        // 1. 检查记录是否存在
        XpPointSituationReport bean = this.getById(id);
        if (bean == null) {
            throw new ServiceException("密支付策略配置不存在");
            throw new ServiceException("点位现场情况上报信息不存在");
        }
        // 2. 逻辑删除(MyBatis-Plus自动处理)
        this.removeById(id);
        return super.removeById( bean.getId());
    }
}
xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpPointSituationReportMapper.xml
@@ -12,7 +12,7 @@
        inner join xp_point as b on a.point_id = b.id
        WHERE a.is_deleted = 0
        <if test="query.id != null and query.id != ''">
            AND b.point_name  = #{query.id}
            AND a.id  = #{query.id}
        </if>
        <if test="query.ids != null and query.ids.size() > 0">
            AND a.id IN
@@ -33,6 +33,12 @@
        <if test="query.operationsUserId != null and query.operationsUserId != ''">
            AND a.operations_user_id = #{query.operationsUserId}
        </if>
          <if test="query.operationsUserIds != null and query.operationsUserIds.size() > 0">
            AND a.operations_user_id IN
            <foreach collection="query.operationsUserIds" item="id" open="(" separator="," close=")">
                #{id}
            </foreach>
        </if>
        <if test="query.reportingTimeStart != null">
            AND a.reporting_time &gt;= #{query.reportingTimeStart}
        </if>