puzhibing
2026-04-24 fdf8c19224d67e94a4404388359db4b4ee348a5d
Merge remote-tracking branch 'origin/1.0' into 1.0
1 文件已重命名
14个文件已修改
159 ■■■■■ 已修改文件
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpActicityStrategy.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpActivityNotice.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/operation/FenceAndStationVo.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/operation/PointPageListListQuery.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/mapper/XpTaskMapper.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/XpTaskService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/mapper/XpPointMapper.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/XpPointService.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-map-boot/src/main/resources/mapper/XpPointMapper.xml 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpActicityMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpTargetedServiceMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpActicityStrategy.java
@@ -1,8 +1,10 @@
package com.xiaopeng.api.model.operation;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.xiaopeng.common.core.web.domain.BaseModel;
import io.swagger.annotations.ApiModel;
@@ -44,7 +46,8 @@
    private Integer distributionRules;
    @ApiModelProperty(value = "发放规则json,[]=本券使用后循环发放, [1,2,3]=指定优惠券使用后发放(优惠券id数组)")
    private String distributionAfterUse;
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<Long> distributionAfterUse;
    @ApiModelProperty(value = "生效规则(1=领取后生效,2=领取后指定日期生效)")
    private Integer effectiveRules;
@@ -72,6 +75,7 @@
    private Integer repPercent;
    @ApiModelProperty(value = "使用时间段,时间字符串,开始和结束用,分割拼接成一个字符串,如果只有结束时间还是需要保持逗号,如:[',05:00:00']")
    @TableField(typeHandler = JacksonTypeHandler.class)
    private List<String> usagePeriod;
    @ApiModelProperty(value = "每人限领数量")
xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpActivityNotice.java
@@ -77,6 +77,6 @@
    @Max(100)
    private Integer floatingWindowPriority;
    @ApiModelProperty(value = "跳转链接")
    private Boolean linkUrl;
    private String linkUrl;
}
xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/operation/FenceAndStationVo.java
File was renamed from xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/vo/FenceAndStationVo.java
@@ -1,4 +1,4 @@
package com.xiaopeng.map.vo;
package com.xiaopeng.api.query.operation;
import io.swagger.annotations.ApiModelProperty;
@@ -7,8 +7,6 @@
@Data
public class FenceAndStationVo {
//    1 as type, a.electronic_name as name,
//    GROUP_CONCAT(b.id) ids
    @ApiModelProperty(value = "类型 1围栏 2场站 ")
    private Integer type;
xp-robotaxi-api/src/main/java/com/xiaopeng/api/query/operation/PointPageListListQuery.java
@@ -36,12 +36,15 @@
    @ApiModelProperty(value = "点位纬度")
    private String pointLat;
    private List<FenceAndStationVo> fenceAndStationList;
    @ApiModelProperty(value = "类型 1围栏 2场站 ")
    private Integer idType;
    @ApiModelProperty(value = "fenceAndStationIds")
    private String fenceAndStationIds;
    @ApiModelProperty(value = "fenceAreaIds")
    private List<String> fenceAreaIds;
    @ApiModelProperty(value = "stationIds")
    private List<String> stationIds;
}
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
@@ -1,6 +1,8 @@
package com.xiaopeng.maintenance.controller;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.xiaopeng.api.dto.account.XpOperationsUserPositionDTO;
@@ -40,6 +42,7 @@
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType;
import org.apache.shardingsphere.transaction.core.TransactionType;
import org.springframework.beans.factory.annotation.Autowired;
@@ -54,8 +57,12 @@
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.*;
import java.util.stream.Collectors;
@@ -310,6 +317,37 @@
        return R.ok(xpTaskService.reassignTaskPageList(query));
    }
    @ApiOperation(value = "待改派的工单导出", tags = {"管理后台-运维执行-任务工单-待改派工单"})
    @PostMapping("/api/v1/task/reassign/export")
    public R<?> export(@RequestBody TaskPageListQuery query, HttpServletResponse response) {
        List<XpTaskVO> list= xpTaskService.exportList(query);
        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), XpCruiseCheckInRecordVO.class, list);
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        ServletOutputStream outputStream = null;
        try {
            String fileName = URLEncoder.encode("巡游打卡记录.xls", "utf-8");
            response.setHeader("Content-disposition", "attachment;filename=" + fileName);
            outputStream = response.getOutputStream();
            workbook.write(outputStream);
            outputStream.flush();
        } catch (IOException e) {
            log.error("导出巡游打卡记录失败", e);
        } finally {
            try {
                if (outputStream != null) {
                    outputStream.close();
                }
                if (workbook != null) {
                    workbook.close();
                }
            } catch (IOException e) {
                log.error("关闭输出流失败", e);
            }
        }
        return R.ok();
    }
    @Resource
    XpFleetClient xpFleetClient;
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/mapper/XpTaskMapper.java
@@ -39,5 +39,7 @@
     */
    XpTask queryInfoByVehicleId(@Param("vehicleId")Long vehicleId);
    PageInfo<XpTaskVO> reassignTaskPageList(@Param("pageInfo")PageInfo<TaskPageListQuery> pageInfo, @Param("query")TaskPageListQuery query);
    List<XpTaskVO> reassignTaskPageList(@Param("pageInfo")PageInfo<XpTaskVO> pageInfo, @Param("query")TaskPageListQuery query);
    List<XpTaskVO> reassignTaskPageList(TaskPageListQuery query);
}
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/XpTaskService.java
@@ -105,4 +105,6 @@
    PageInfo<XpTaskVO> reassignTaskPageList(TaskPageListQuery query);
    XpTaskVO detail(Long taskId);
    List<XpTaskVO> exportList(TaskPageListQuery query);
}
xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
@@ -1501,9 +1501,10 @@
    @Override
    public PageInfo<XpTaskVO> reassignTaskPageList(TaskPageListQuery query) {
        PageInfo<TaskPageListQuery> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        return baseMapper.reassignTaskPageList(pageInfo,query);
        PageInfo<XpTaskVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize());
        List<XpTaskVO> list = baseMapper.reassignTaskPageList(pageInfo, query);
        pageInfo.setRecords(list);
        return pageInfo;
    }
    @Override
@@ -1540,6 +1541,13 @@
        return xpTaskVO;
    }
    @Override
    public List<XpTaskVO> exportList(TaskPageListQuery query) {
        return baseMapper.reassignTaskPageList(query);
    }
    @Value("${robotaxi.sms.app-id:1476153389173952512}")
    private String smsAppId;
    @Value("${robotaxi.sms.app-push-config-code:ROBOTAXI_VERIFY_CODE_SMS}")
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/controller/XpElectronicFenceManagementController.java
@@ -3,7 +3,6 @@
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -24,7 +23,7 @@
import com.xiaopeng.map.constant.I18nKeyConstant;
import com.xiaopeng.map.service.*;
import com.xiaopeng.map.utils.OperationStrategyIndex;
import com.xiaopeng.map.vo.FenceAndStationVo;
import com.xiaopeng.api.query.operation.FenceAndStationVo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
@@ -92,8 +91,8 @@
    @ApiOperation(value = "获取围栏和场站数据",tags = {"管理后台-电子围栏"})
    @GetMapping(value = "/findListFenceAndStation")
    public R<List<FenceAndStationVo>> findListFenceAndStation() {
        return R.ok(xpPointService.findListFenceAndStation());
    public R<List<FenceAndStationVo>> findListFenceAndStation(String cityCode) {
        return R.ok(xpPointService.findListFenceAndStation(cityCode));
    }
    @ApiOperation(value = "获取不分页的电子围栏列表",tags = {"管理后台-电子围栏"})
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/mapper/XpPointMapper.java
@@ -9,7 +9,7 @@
import com.xiaopeng.api.vo.order.XpPointsListVo;
import com.xiaopeng.common.core.web.page.PageInfo;
import com.xiaopeng.map.query.PointByNameQuery;
import com.xiaopeng.map.vo.FenceAndStationVo;
import com.xiaopeng.api.query.operation.FenceAndStationVo;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Param;
@@ -26,7 +26,7 @@
 */
public interface XpPointMapper extends BaseMapper<XpPoint> {
    List<FenceAndStationVo> findListFenceAndStation();
    List<FenceAndStationVo> findListFenceAndStation(String cityCode);
    List<XpPoint> pointMap(@Param("query") PointMapQuery query);
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/XpPointService.java
@@ -16,7 +16,7 @@
import com.xiaopeng.map.dto.NearestDto;
import com.xiaopeng.map.dto.StationDetailQueryDto;
import com.xiaopeng.map.query.PointByNameQuery;
import com.xiaopeng.map.vo.FenceAndStationVo;
import com.xiaopeng.api.query.operation.FenceAndStationVo;
import com.xiaopeng.map.vo.NearestVo;
import com.xiaopeng.map.vo.OrderDistanceVo;
import com.xiaopeng.map.vo.StationDetailVo;
@@ -74,7 +74,7 @@
    boolean getInTime(LocalTime now,  Integer effectivePeriod, String effectiveTimePeriod);
    List<XpPoint> pointMap(PointMapQuery query);
    List<FenceAndStationVo> findListFenceAndStation();
    List<FenceAndStationVo> findListFenceAndStation(String cityCode);
    List<XpPoint> findList(PointListQuery query);
xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/service/serviceimpl/XpPointServiceImpl.java
@@ -18,6 +18,7 @@
import com.xiaopeng.api.model.operation.XpRegion;
import com.xiaopeng.api.model.operation.XpStation;
import com.xiaopeng.api.model.operation.XpSystemSetting;
import com.xiaopeng.api.query.operation.FenceAndStationVo;
import com.xiaopeng.api.query.operation.PointListQuery;
import com.xiaopeng.api.query.operation.PointPageListListQuery;
import com.xiaopeng.api.vo.order.XpHistoryEndPointsVo;
@@ -368,8 +369,8 @@
    }
    @Override
    public List<FenceAndStationVo> findListFenceAndStation(){
        return baseMapper.findListFenceAndStation();
    public List<FenceAndStationVo> findListFenceAndStation(String cityCode){
        return baseMapper.findListFenceAndStation(cityCode);
    }
    @Override
@@ -558,6 +559,21 @@
    @Override
    public PageInfo<XpPoint> pageList(PointPageListListQuery query) {
        if(CollUtil.isNotEmpty(query.getFenceAndStationList())){
            List<String> fenceAreaIds = new ArrayList<>();
            List<String> stationIds = new ArrayList<>();
            for (FenceAndStationVo bean : query.getFenceAndStationList()) {
                if(bean.getType()==1){
                    fenceAreaIds.addAll(StrUtil.split(bean.getIds(),",") );
                }else{
                    stationIds.addAll(StrUtil.split(bean.getIds(),",") );
                }
            }
            query.setFenceAreaIds(fenceAreaIds);
            query.setStationIds(stationIds);
        }
        PageInfo<XpPoint> pageInfo = new PageInfo<>(query.getPageNum(),query.getPageSize());
        if (StringUtils.isNotBlank(query.getPointLonAndLat())) {
            List<String> lonAndLat = query.getPointLonAndLat().trim().contains(",") ? Arrays.asList(query.getPointLonAndLat().split(",")) :
xp-robotaxi-map-boot/src/main/resources/mapper/XpPointMapper.xml
@@ -71,14 +71,21 @@
        order by distance  asc
    </select>
    <select id="findListFenceAndStation" resultType="com.xiaopeng.map.vo.FenceAndStationVo">
    <select id="findListFenceAndStation" resultType="com.xiaopeng.api.query.operation.FenceAndStationVo">
        SELECT  1 as type, a.electronic_name as name, GROUP_CONCAT(b.id) ids
        FROM xp_electronic_fence a
        INNER JOIN xp_electronic_fence_area b on b.electronic_id = a.id and b.is_deleted = 0
        WHERE a.is_deleted = 0
          <if test="cityCode != null and cityCode != ''">
              and a.city_code = #{cityCode}
        </if>
        GROUP BY a.id
        UNION ALL
        SELECT 2 as type ,s.station_name as name,s.id as ids FROM xp_station s WHERE s.is_deleted = 0
        SELECT 2 as type ,s.station_name as name,s.id as ids FROM xp_station s
         WHERE s.is_deleted = 0
        <if test="cityCode != null and cityCode != ''">
            and s.city_code = #{cityCode}
        </if>
    </select>
@@ -158,16 +165,26 @@
        left join xp_station xs on xs.id = xp.station_id
        where xp.is_deleted = 0
        <if test="query.idType != null">
            <choose>
                <when test="query.idType == 1">
                    and xefa.id in (${query.fenceAndStationIds})
                </when>
                <when test="query.idType == 2">
                    and xs.id =#{query.fenceAndStationIds}
                </when>
            </choose>
        <if test="(query.fenceAreaIds != null and query.fenceAreaIds.size() > 0) or (query.stationIds != null and query.stationIds.size() > 0)">
            and (
            <if test="query.fenceAreaIds != null and query.fenceAreaIds.size() > 0">
                xp.electronic_area_id in
                <foreach collection="query.fenceAreaIds" item="id" open="(" separator="," close=")">
                    #{id}
                </foreach>
            </if>
            <if test="query.fenceAreaIds != null and query.fenceAreaIds.size() > 0 and query.stationIds != null and query.stationIds.size() > 0">
                or
            </if>
            <if test="query.stationIds != null and query.stationIds.size() > 0">
                xp.station_id in
                <foreach collection="query.stationIds" item="id" open="(" separator="," close=")">
                    #{id}
                </foreach>
            </if>
            )
        </if>
        <if test="query.cityCode != null and query.cityCode != ''">
            and xp.city_code =  #{query.cityCode}
        </if>
xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpActicityMapper.xml
@@ -13,9 +13,9 @@
            <if test="query.status != null">
                and a.status = #{query.status}
            </if>
            <if test="query.activity_type != null">
                and a.activity_type = #{query.activityType}
            </if>
<!--            <if test="query.activity_type != null">-->
<!--                and a.activity_type = #{query.activityType}-->
<!--            </if>-->
            order by a.update_time desc
    </select>
xp-robotaxi-operation-boot/src/main/resources/mapper/operation/XpTargetedServiceMapper.xml
@@ -11,7 +11,7 @@
        from xp_targeted_service as a
        where a.is_deleted = 0
        <if test="query.cityCode != null and query.cityCode != ''">
            and a.cityCode = #{query.cityCode}
            and a.city_code = #{query.cityCode}
        </if>
        order by a.create_time desc
    </select>