xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpAppUserCouponController.java
@@ -68,7 +68,7 @@ } @PostMapping("/v1/api/appUserCoupon/pageList") @ApiOperation(value = "用户优惠券列表",tags = {"管理后台-用户优惠券列表"},response = XpAppUserCouponListVo.class) @ApiOperation(value = "白名单用户优惠券列表",tags = {"管理后台-白名单-用户优惠券列表"},response = XpAppUserCouponListVo.class) public R<PageInfo<XpAppUserCouponListVo>> pageList(@RequestBody XpAppUserCouponPageListQuery query) { if(StrUtil.isNotBlank(query.getActicityName()) ){ @@ -80,6 +80,16 @@ return R.ok(pageList); } @PostMapping("/v1/api/appUserCoupon/deleteByIds") @ApiOperation(value = "根据ids删除用户优惠券", tags = {"管理后台-白名单-删除用户优惠券"}) public R<Boolean> deleteByIds(@RequestBody List<Long> ids) { if (ids == null || ids.isEmpty()) { return R.fail("ID列表不能为空"); } boolean result = xpAppUserCouponService.removeByIds(ids); return R.ok(result); } @PostMapping("/logan/inner/appUserCoupon/getUserCoupon") public R<UserCouponVo> getUserCoupon(@RequestBody GetUserCouponDto dto) { // String phone ="18888888888"; xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/dto/SysGroupAddDTO.java
@@ -28,6 +28,8 @@ @ApiModelProperty(value = "分组类型 1=管理端 2=运维app") @NotNull(message = "{validation.group.type.notNull}") private Integer groupType; @ApiModelProperty(value = "手机脱敏(0=否,1=是)") private Integer phoneDesensitization; @ApiModelProperty(value = "菜单id集合", required = true) @NotEmpty(message = "{validation.group.menuIds.notEmpty}") xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/query/SysGroupPageQuery.java
@@ -18,4 +18,7 @@ @ApiModelProperty(value = "权限组名称") private String groupName; @ApiModelProperty(value = "手机脱敏(0=否,1=是)") private Integer phoneDesensitization; } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/vo/SysGroupDetailVO.java
@@ -27,6 +27,9 @@ @ApiModelProperty(value = "分组类型 1=管理端 2=运维app") private Integer groupType; @ApiModelProperty(value = "手机脱敏(0=否,1=是)") private Integer phoneDesensitization; @ApiModelProperty(value = "菜单列表") private List<SysMenuVO> menus; xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/maintenance/XpTask.java
@@ -107,5 +107,34 @@ @ApiModelProperty(value = "申请改派的用户id") @TableField(typeHandler = JacksonTypeHandler.class) private List<Long> excluded; private List<Reject> excluded; public Reject reject(String msg) { Reject reject = new Reject(); reject.setRejectTime(LocalDateTime.now()); reject.setRejectUserId(handleUserId); reject.setRejectReason(msg); return reject; } @Data public static class Reject { @ApiModelProperty(value = "拒绝原因") private String rejectReason; @ApiModelProperty(value = "拒绝时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private LocalDateTime rejectTime; @ApiModelProperty(value = "拒绝人id") private String rejectUserId; @ApiModelProperty(value = "拒绝人姓名") private String rejectUserName; @ApiModelProperty(value = "拒绝人角色名称") private String rejectUserRoleName; } } xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpActivity.java
@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import com.xiaopeng.common.core.web.domain.BaseModel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -26,7 +27,7 @@ @Accessors(chain = true) @TableName("xp_acticity") @ApiModel(value="XpActicity对象", description="活动管理") public class XpActivity implements Serializable { public class XpActivity extends BaseModel { private static final long serialVersionUID = 1L; @@ -58,9 +59,6 @@ @ApiModelProperty(value = "邀请启用 1=是 0=否") private Boolean inviteEnable; @ApiModelProperty(value = "是否删除") private String deleted; @ApiModelProperty(value = "图片") private String img; xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpAgreement.java
@@ -28,10 +28,14 @@ @TableId("id") private Long id; @ApiModelProperty(value = "类型 1=小鹏Robotaxi隐私政策 2=个人信息收集清单 3=敏感个人信息处理情况说明 4=向第三方提供个人信息情况的说明 5=乘车须知 6=计费规则说明 7=权限说明 8=运维APP-小鹏Robotaxi自动驾驶出行运维隐私政策 9=运维APP-第三方共享信息清单 10=运维APP-个人信息收集清单 11=运维APP-权限调用") @ApiModelProperty(value = "类型, -1预付款,-2付款 1=小鹏Robotaxi隐私政策 2=个人信息收集清单 3=敏感个人信息处理情况说明 4=向第三方提供个人信息情况的说明 5=乘车须知 6=计费规则说明 7=权限说明 8=运维APP-小鹏Robotaxi自动驾驶出行运维隐私政策 9=运维APP-第三方共享信息清单 10=运维APP-个人信息收集清单 11=运维APP-权限调用") @TableField("content_type") private Integer contentType; @ApiModelProperty(value = "协议的名称") @TableField("title") private Integer title; @ApiModelProperty(value = "内容") @TableField("content") private String content; xp-robotaxi-api/src/main/java/com/xiaopeng/api/model/operation/XpStation.java
@@ -12,6 +12,7 @@ import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -44,6 +45,33 @@ @ApiModelProperty(value = "场站状态 0=草稿 1=待测试 2=测试中 3=测试不通过 4=可运营 5=待生效 6=启用中 7=已停用 8=失效") private Integer status; public String getStatusName() { if(status != null){ if(status == 0){ return "草稿"; }else if(status == 1){ return "待测试"; } else if(status == 2){ return "测试中"; }else if(status == 3){ return "测试未通过"; }else if(status == 4){ return "可运营"; }else if(status == 5){ return "待生效"; }else if(status == 6){ return "启用中"; }else if(status == 7){ return "已停用"; }else if(status == 8){ return "失效"; } } return ""; } @ApiModelProperty(value = "城市code") private String cityCode; @@ -51,9 +79,11 @@ private String cityName; @ApiModelProperty(value = "所属电子围栏id") @NotNull(message = "所属电子围栏id不能为空") private Long electronicId; @ApiModelProperty(value = "所属运营区id") @NotNull(message = "所属运营区id不能为空") private Long electronicAreaId; @ApiModelProperty(value = "默认展示点位id") xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/operation/XpActivityVo.java
@@ -55,9 +55,6 @@ @ApiModelProperty(value = "邀请启用 1=是 0=否") private Boolean inviteEnable; @ApiModelProperty(value = "是否删除") private String deleted; @ApiModelProperty(value = "图片") private String img; xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpTaskController.java
@@ -54,7 +54,6 @@ import javax.validation.Valid; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; @@ -333,8 +332,8 @@ @ApiOperation(value = "改派详情", tags = {"管理后台-运维执行-任务工单-待改派工单"}) @GetMapping("/api/v1/task/reassign/detail") public R<TaskReassignDetailVO> reassignDetail(@RequestParam Long taskId) { return R.ok(xpTaskService.detail(taskId)); public R<XpTask> reassignDetail(@RequestParam Long taskId) { return R.ok(xpTaskService.getById(taskId)); } @ApiOperation(value = "执行保险年检检测定时任务", tags = {"定时任务"}) xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/query/TaskPageListQuery.java
@@ -37,7 +37,7 @@ private Integer taskCategory; @ApiModelProperty(value = "事故类型") private Long accidentTypeId; private String errorTypeId; @ApiModelProperty(value = "任务类型") private Long taskTypeId; xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/XpTaskService.java
@@ -16,7 +16,6 @@ import com.xiaopeng.maintenance.model.vo.*; import com.xiaopeng.maintenance.model.query.TaskPageListQuery; import com.xiaopeng.maintenance.vo.TaskDetectionDetailVO; import com.xiaopeng.maintenance.vo.TaskReassignDetailVO; import javax.validation.Valid; import java.io.UnsupportedEncodingException; @@ -105,5 +104,4 @@ PageInfo<TaskVO> reassignTaskPageList(TaskPageListQuery query); TaskReassignDetailVO detail(Long taskId); } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpTaskServiceImpl.java
@@ -13,6 +13,7 @@ import com.xiaopeng.api.feignClient.account.SysUserClient; import com.xiaopeng.api.feignClient.account.XpOperationUserClient; import com.xiaopeng.api.feignClient.account.XpOperationUserNotificationClient; import com.xiaopeng.api.feignClient.account.XpOperationsRoleClient; import com.xiaopeng.api.feignClient.operation.SmsClient; import com.xiaopeng.api.feignClient.pushMessage.WebSocketMessageClient; import com.xiaopeng.api.feignClient.pushMessage.XpAliPushMessageClient; @@ -26,6 +27,7 @@ import com.xiaopeng.api.model.maintenance.*; import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.api.vo.TaskVO; import com.xiaopeng.api.vo.account.XpOperationsUserWithRoleVO; import com.xiaopeng.api.vo.automaticPilot.VehiclePosition; import com.xiaopeng.api.vo.maintenance.TaskScheduleConstants; import com.xiaopeng.api.vo.operation.SmsVo; @@ -57,7 +59,6 @@ import com.xiaopeng.maintenance.utils.UUIDUtil; import com.xiaopeng.maintenance.vo.TaskCleanDetailVO; import com.xiaopeng.maintenance.vo.TaskDetectionDetailVO; import com.xiaopeng.maintenance.vo.TaskReassignDetailVO; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.apache.shardingsphere.transaction.annotation.ShardingSphereTransactionType; @@ -121,22 +122,22 @@ @Autowired private XpVehicleCleanMapper vehicleCleanMapper; @Autowired @Resource private XpOperationUserClient xpOperationUserClient; @Autowired @Resource private SysUserClient sysUserClient; @Autowired private XpTaskHandleDetailRoutineMapper xpTaskHandleDetailRoutineMapper; @Autowired @Resource private XpVehicleClient xpVehicleClient; @Autowired private XpTaskRuleMapper xpTaskRuleMapper; @Autowired private MongoTemplate mongoTemplate; @Autowired @Resource private XpAliPushMessageClient xpAliPushMessageClient; @Autowired @Resource private XpOperationUserNotificationClient xpOperationUserNotificationClient; @Autowired private IXpTaskRuleRoleService xpTaskRuleRoleService; @@ -1389,21 +1390,34 @@ XpTask task = getById(taskId); XpVehicle vehicle = xpVehicleClient.queryById(task.getVehicleId()).getData(); XpTaskRule taskRule = xpTaskRuleService.lambdaQuery().last("limit 1").one(); List<XpTaskRuleRole> taskRuleRole = xpTaskRuleRoleService.lambdaQuery().eq(XpTaskRuleRole::getRuleType, 9).list(); int type = 9; if(task.getTaskCategory() != 2) { type = Integer.parseInt(task.getTaskTypeId()); } List<XpTaskRuleRole> taskRuleRole = xpTaskRuleRoleService.lambdaQuery().eq(XpTaskRuleRole::getRuleType, type).list(); if (Objects.isNull(taskRuleRole) || Objects.isNull(taskRule)) { throw new ServiceException("未配置车辆事故任务分配规则"); } List<Long> excludedUserIds = Optional.ofNullable(task.getExcluded()).orElse(new ArrayList<>()); excludedUserIds.addAll(Arrays.asList(task.getHandleUserId().split(",")).stream().map(Long::parseLong).collect(Collectors.toList())); task.setExcluded(excludedUserIds); List<XpTask.Reject> rejects = Optional.ofNullable(task.getExcluded()).orElse(new ArrayList<>()); XpTask.Reject reject = task.reject(msg); rejects.add(reject); task.setExcluded(rejects); Set<String> excludedUserIds = rejects.stream().map(XpTask.Reject::getRejectUserId).collect(Collectors.toSet()); Long fleetId = xpFleetVehicleClient.getFleetIdByVehicleId(vehicle.getId()).getData(); List<Long> roleIds = taskRuleRole.stream().map(XpTaskRuleRole::getRoleId).collect(Collectors.toList()); List<Long> ids = xpFleetOperationsClient.getOperationsIdsByFleetId(fleetId).getData(); String belongUserIds = xpOperationUserClient.getXpOperationsRoleByRoleIds(roleIds).getData().stream() .map(XpOperationsRole::getOperationsUserId) .filter(ids::contains) .filter(id -> !excludedUserIds.contains(id)) .filter(id -> !excludedUserIds.contains(id.toString())) .map(String::valueOf).collect(Collectors.joining(",")); // VehiclePosition vehiclePosition = mongoTemplate.findOne(new Query(Criteria.where("vin").is(vehicle.getVehicleVin())), VehiclePosition.class); VehiclePosition vehiclePosition = new VehiclePosition(); vehiclePosition.setPoint(new GeoJsonPoint(103.12615621, 30.264561)); @@ -1413,10 +1427,11 @@ task.setStatus(4); noticeAdministrator(task);//TODO 需要通知管理员手动处理,考虑再AliPushUtil 中给管理员发送消息 } updateById(task); if(StringUtils.isNotBlank(task.getHandleUserId())){ List<Long> id = Collections.singletonList(Long.parseLong(task.getHandleUserId())); String roleName = xpOperationUserClient.listByIdsWithRole(id).getData().get(0).getRoleName(); reject.setRejectUserRoleName(roleName); sendAccidentNotificationAsync(task, vehicle.getPlateNumber(), taskRule.getProcessingTimeLimit()); } } @@ -1487,19 +1502,6 @@ @Override public PageInfo<TaskVO> reassignTaskPageList(TaskPageListQuery query) { return baseMapper.reassignTaskPageList(query); } @Override public TaskReassignDetailVO detail(Long taskId) { XpTask task = getById(taskId); // 根据taskId去查询XpTaskHandleDetail, // XpTaskHandleDetail taskHandleDetail = xpTaskHandleDetailClient.queryByTaskId(taskId).getData(); // return baseMapper.detail(taskId); // todo return null; } @Value("${robotaxi.sms.app-id:1476153389173952512}") xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/vo/TaskReassignDetailVO.java
File was deleted xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpTaskMapper.xml
@@ -8,6 +8,7 @@ <result column="task_code" property="taskCode"/> <result column="task_category" property="taskCategory"/> <result column="task_type_id" property="taskTypeId"/> <result column="error_type_id" property="errorTypeId"/> <result column="task_urgency_level" property="taskUrgencyLevel"/> <result column="task_description" property="taskDescription"/> <result column="vehicle_location" property="vehicleLocation"/> @@ -32,8 +33,7 @@ <!-- 通用查询结果列 --> <sql id="Base_Column_List"> id , task_code, task_category, end_time, expired_notice_sent, task_type_id, task_image, task_urgency_level, task_description, vehicle_location, vehicle_id, vehicle_lon, vehicle_lat, handle_user_id, handle_time, assignee_user_id, assignee_time, report_user_id, report_time, status, is_deleted, create_time, update_time, create_by, update_by id, task_code, task_category, error_type_id ,end_time, expired_notice_sent, task_type_id, task_image, task_urgency_level, task_description, vehicle_location, vehicle_id, vehicle_lon, vehicle_lat, handle_user_id, handle_time, assignee_user_id, assignee_time, report_user_id, report_time, status, is_deleted, create_time, update_time, create_by, update_by </sql> <select id="workbench" resultType="com.xiaopeng.maintenance.model.vo.WorkBenchVO"> select t1.*, @@ -189,7 +189,7 @@ t.task_code AS taskCode, t.task_category AS taskCategory, t.task_type_id AS taskTypeId, t.error_type_id AS accidentTypeId, t.error_type_id AS errorTypeId, t.task_urgency_level AS taskUrgencyLevel, t.task_description AS taskDescription, t.vehicle_id AS vehicleId, @@ -208,8 +208,8 @@ <if test="query.taskCategory != null"> AND t.task_category = #{query.taskCategory} </if> <if test="query.accidentTypeId != null"> AND t.error_type_id = #{query.accidentTypeId} <if test="query.errorTypeId != null"> AND t.error_type_id = #{query.errorTypeId} </if> <if test="query.taskTypeId != null"> AND t.task_type_id = #{query.taskTypeId} xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/dto/XpAgreementDTO.java
@@ -6,6 +6,7 @@ import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size; /** * @author MiTao @@ -19,6 +20,11 @@ @ApiModelProperty(value = "类型 1=用户服务协议 2=平台隐私政策 3=敏感个人信息处理情况说明 4=向第三方提供个人信息情况的说明 5=乘车须知 6=计费规则说明") private Integer contentType; @NotNull(message = "协议名称不能为空") @Size(max = 20, message = "协议名称长度不能超过20") @ApiModelProperty(value = "协议名称") private String title; @NotBlank(message = "协议内容不能为空") @ApiModelProperty(value = "内容") private String content; xp-robotaxi-map-boot/src/main/java/com/xiaopeng/map/vo/XpAgreementVo.java
@@ -1,5 +1,6 @@ package com.xiaopeng.map.vo; import com.baomidou.mybatisplus.annotation.TableField; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -18,4 +19,7 @@ @ApiModelProperty(value = "版本") private String version; @ApiModelProperty(value = "协议的名称") private Integer title; } xp-robotaxi-operation-boot/src/main/java/com/xiaopeng/operation/controller/XpAgreementController.java
@@ -3,21 +3,17 @@ import com.xiaopeng.api.model.operation.XpAgreement; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.controller.BaseController; import com.xiaopeng.operation.dto.XpAgreementAppUserDto; import com.xiaopeng.operation.dto.XpAgreementDTO; import com.xiaopeng.operation.service.IXpLoginAgreementService; import com.xiaopeng.operation.service.XpAgreementService; import com.xiaopeng.operation.vo.XpAgreementVo; import com.xiaopeng.unifiedverification.interceptor.XpClientCheck; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.extern.slf4j.Slf4j; import org.apiguardian.api.API; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; import java.util.List; @@ -64,7 +60,7 @@ @ApiOperation(value = "获取协议", tags = {"管理后台-内容中心"}) @GetMapping("/api/v1/agreement/content/{type}") public R<XpAgreement> getAgreementContent(@ApiParam(name = "type", value = "类型 1=小鹏Robotaxi隐私政策 2=个人信息收集清单 3=敏感个人信息处理情况说明 4=向第三方提供个人信息情况的说明 5=乘车须知 6=计费规则说明 7=权限说明 8=运维APP-小鹏Robotaxi自动驾驶出行运维隐私政策 9=运维APP-第三方共享信息清单 10=运维APP-个人信息收集清单 11=运维APP-权限调用") @PathVariable Integer type) { public R<XpAgreement> getAgreementContent(@ApiParam(name = "type", value = "类型 -1预付款,-2付款, 1=小鹏Robotaxi隐私政策 2=个人信息收集清单 3=敏感个人信息处理情况说明 4=向第三方提供个人信息情况的说明 5=乘车须知 6=计费规则说明 7=权限说明 8=运维APP-小鹏Robotaxi自动驾驶出行运维隐私政策 9=运维APP-第三方共享信息清单 10=运维APP-个人信息收集清单 11=运维APP-权限调用") @PathVariable Integer type) { return R.ok(xpAgreementService.getAgreementContent(type)); } xp-robotaxi-vehicle-convoy-boot/src/main/java/com/xiaopeng/vehicleConvoy/service/impl/XpVehicleServiceImpl.java
@@ -1220,7 +1220,7 @@ List<XpVehicle> list = this.list(new QueryWrapper<XpVehicle>().eq("vehicle_type", 2) .eq("status", 2).eq("operating_status", 1) .eq("is_deleted", 0).like(StringUtils.isNotBlank(dto.getPlateNumber()), "plate_number", dto.getPlateNumber()) .like(StringUtils.isNotBlank(dto.getVim()), "vehicle_vin", dto.getVim()) .like(StringUtils.isNotBlank(dto.getVin()), "vehicle_vin", dto.getVin()) .last(" order by create_time desc limit " + dto.getPageNo() + "," + dto.getPageSize()) );