xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/controller/XpQualificationAuditController.java
@@ -1,7 +1,17 @@ package com.xiaopeng.account.controller; import org.springframework.web.bind.annotation.RequestMapping; import com.xiaopeng.account.model.dto.QualificationReviewDTO; import com.xiaopeng.account.model.query.XpQualificationAuditQuery; import com.xiaopeng.account.service.IXpQualificationAuditService; import com.xiaopeng.api.vo.account.XpQualificationAuditVO; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.security.service.TokenService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import org.springframework.stereotype.Controller; @@ -13,8 +23,45 @@ * @author mitao * @since 2026-02-03 */ @Controller @RequestMapping("/xp-qualification-audit") @Api(tags = "资质审核记录") @RestController @RequestMapping("") public class XpQualificationAuditController { @Autowired private IXpQualificationAuditService xpQualificationAuditService; @Autowired private TokenService tokenService; /** * 管理后台-综合审核-人员资质审核分页列表 */ @ApiOperation(value = "管理后台-综合审核-人员资质审核分页列表", tags = {"管理后台-服务中心"}) @PostMapping("/api/v1/qualificationAudit/pageList") public R<PageInfo<XpQualificationAuditVO>> pageList(@RequestBody XpQualificationAuditQuery query) { PageInfo<XpQualificationAuditVO> pageList = xpQualificationAuditService.pageList(query); return R.ok(pageList); } /** * 管理后台-综合审核-人员资质审核 */ @ApiOperation(value = "管理后台-综合审核-人员资质批量审核(单审核共用)", tags = {"管理后台-服务中心"}) @PostMapping("/api/v1/qualificationAudit/audit") public R<String> audit(@RequestBody QualificationReviewDTO dto) { Long userid = tokenService.getLoginUser().getUserid(); xpQualificationAuditService.audit(dto,userid); return R.ok(); } /** * 管理后台-综合审核-人员资质审核删除 */ @ApiOperation(value = "管理后台-综合审核-人员资质审核删除", tags = {"管理后台-服务中心"}) @DeleteMapping("/api/v1/qualificationAudit/deleteById") public R<String> deleteById(@RequestParam Long id) { xpQualificationAuditService.removeById(id); return R.ok(); } } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/mapper/XpQualificationAuditMapper.java
@@ -1,7 +1,14 @@ package com.xiaopeng.account.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xiaopeng.account.model.query.XpQualificationAuditQuery; import com.xiaopeng.api.model.account.XpQualificationAudit; import com.xiaopeng.api.vo.account.XpQualificationAuditVO; import com.xiaopeng.common.core.web.page.PageInfo; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> @@ -13,4 +20,12 @@ */ public interface XpQualificationAuditMapper extends BaseMapper<XpQualificationAudit> { /** * 列表查询 * * @param pageInfo 分页参数 * @param query 查询参数 * @return 分页数据 */ List<XpQualificationAuditVO> pageList(@Param("pageInfo") PageInfo<XpQualificationAuditVO> pageInfo, @Param("query")XpQualificationAuditQuery query); } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/dto/QualificationReviewDTO.java
New file @@ -0,0 +1,20 @@ package com.xiaopeng.account.model.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; import java.util.List; @Data @ApiModel(value = "资质审核DTO", description = "资质审核DTO") public class QualificationReviewDTO implements Serializable { @ApiModelProperty(value = "资质审核id集合") private List<Long> ids; @ApiModelProperty(value = "审核状态 1待审核 2审核通过 3审核驳回") private Integer auditStatus; } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/model/query/XpQualificationAuditQuery.java
New file @@ -0,0 +1,24 @@ package com.xiaopeng.account.model.query; import com.xiaopeng.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "资质审核记录查询参数XpQualificationAuditQuery") public class XpQualificationAuditQuery extends BasePage { @ApiModelProperty(value = "员工姓名") private String nickName; @ApiModelProperty(value = "联系电话") private String phoneNumber; @ApiModelProperty(value = "角色id") private Long roleId; @ApiModelProperty(value = "审核状态 1待审核 2审核通过 3审核驳回") private Integer auditStatus; } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/IXpQualificationAuditService.java
@@ -1,7 +1,11 @@ package com.xiaopeng.account.service; import com.baomidou.mybatisplus.extension.service.IService; import com.xiaopeng.account.model.dto.QualificationReviewDTO; import com.xiaopeng.account.model.query.XpQualificationAuditQuery; import com.xiaopeng.api.model.account.XpQualificationAudit; import com.xiaopeng.api.vo.account.XpQualificationAuditVO; import com.xiaopeng.common.core.web.page.PageInfo; /** * <p> @@ -13,4 +17,20 @@ */ public interface IXpQualificationAuditService extends IService<XpQualificationAudit> { /** * 管理后台-综合审核-人员资质审核 * * @param query 查询参数 * @return 列表 */ PageInfo<XpQualificationAuditVO> pageList(XpQualificationAuditQuery query); /** * 管理后台-综合审核-人员资质审核 * * @param dto 参数 * @param userid 用户id */ void audit(QualificationReviewDTO dto, Long userid); } xp-robotaxi-account-boot/src/main/java/com/xiaopeng/account/service/impl/XpQualificationAuditServiceImpl.java
@@ -1,10 +1,31 @@ package com.xiaopeng.account.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.xiaopeng.account.mapper.SysRoleMapper; import com.xiaopeng.account.mapper.XpOperationsRoleMapper; import com.xiaopeng.account.mapper.XpOperationsUserMapper; import com.xiaopeng.account.mapper.XpQualificationAuditMapper; import com.xiaopeng.account.model.dto.QualificationReviewDTO; import com.xiaopeng.account.model.query.XpQualificationAuditQuery; import com.xiaopeng.account.service.ISysRoleService; import com.xiaopeng.account.service.IXpQualificationAuditService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.api.model.account.SysRole; import com.xiaopeng.api.model.account.XpOperationsRole; import com.xiaopeng.api.model.account.XpOperationsUser; import com.xiaopeng.api.model.account.XpQualificationAudit; import com.xiaopeng.api.vo.account.XpQualificationAuditVO; import com.xiaopeng.common.core.web.page.PageInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * <p> @@ -17,4 +38,62 @@ @Service public class XpQualificationAuditServiceImpl extends ServiceImpl<XpQualificationAuditMapper, XpQualificationAudit> implements IXpQualificationAuditService { @Autowired private XpOperationsRoleMapper xpOperationsRoleMapper; @Autowired private SysRoleMapper sysRoleMapper; @Override public PageInfo<XpQualificationAuditVO> pageList(XpQualificationAuditQuery query) { PageInfo<XpQualificationAuditVO> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<XpQualificationAuditVO> list = this.baseMapper.pageList(pageInfo, query); if(CollectionUtils.isEmpty(list)){ return pageInfo; } // 查询角色名称 List<Long> operationsUserIds = list.stream().map(XpQualificationAuditVO::getOperationsUserId).collect(Collectors.toList()); // 查询用户信息 List<XpOperationsRole> xpOperationsRoles = xpOperationsRoleMapper.selectList(Wrappers.lambdaQuery(XpOperationsRole.class) .in(XpOperationsRole::getOperationsUserId, operationsUserIds)); if(!CollectionUtils.isEmpty(xpOperationsRoles)){ List<Long> roleIds = xpOperationsRoles.stream().map(XpOperationsRole::getRoleId).collect(Collectors.toList()); // 查询列表关联的所有角色 List<SysRole> sysRoles = sysRoleMapper.selectList(Wrappers.lambdaQuery(SysRole.class) .in(SysRole::getId, roleIds)); if(!CollectionUtils.isEmpty(sysRoles)){ // 角色匹配账号id Map<Long, List<SysRole>> map = new HashMap<>(); for (XpOperationsRole xpOperationsRole : xpOperationsRoles) { List<SysRole> sysRoleList = sysRoles.stream().filter(sysRole -> sysRole.getId().equals(xpOperationsRole.getRoleId())).collect(Collectors.toList()); map.put(xpOperationsRole.getOperationsUserId(), sysRoleList); } // 角色名称匹配 for (XpQualificationAuditVO xpQualificationAuditVO : list) { map.get(xpQualificationAuditVO.getOperationsUserId()).forEach(sysRole -> { xpQualificationAuditVO.getRoleNames().add(sysRole.getRoleName()); }); } } } pageInfo.setRecords(list); return pageInfo; } @Override public void audit(QualificationReviewDTO dto, Long userid) { List<XpQualificationAudit> qualificationAudits = this.listByIds(dto.getIds()); for (XpQualificationAudit qualificationAudit : qualificationAudits) { qualificationAudit.setAuditUserId(userid); qualificationAudit.setAuditTime(LocalDateTime.now()); qualificationAudit.setAuditStatus(dto.getAuditStatus()); // qualificationAudit.setAuditRemarks(dto.getAuditRemarks()); } this.updateBatchById(qualificationAudits); } } xp-robotaxi-account-boot/src/main/resources/mapper/account/XpQualificationAuditMapper.xml
@@ -6,5 +6,30 @@ <sql id="Base_Column_List"> id, operations_user_id, id_card_front, id_card_back, driver_license, certificate_of_no_criminal_record, training_graduation_certificate, audit_user_id, audit_time, audit_status, is_deleted, create_time, update_time, create_by, update_by </sql> <select id="pageList" resultType="com.xiaopeng.api.vo.account.XpQualificationAuditVO"> select xqa.id, xqa.operations_user_id, xqa.id_card_front, xqa.id_card_back, xqa.driver_license, xqa.certificate_of_no_criminal_record, xqa.training_graduation_certificate, xqa.audit_user_id, xqa.audit_time, xqa.audit_status, xqa.create_time, xou.nick_name, xou.phone_number, xou.avatar,xou.unique_number from xp_qualification_audit xqa left join xp_operations_user xou on xqa.operations_user_id = xou.id left join xp_operations_role xor on xou.id = xor.operations_user_id <where> <if test="query.nickName != null and query.nickName != ''"> and xou.nick_name like concat('%',#{query.nickName},'%') </if> <if test="query.phoneNumber != null and query.phoneNumber != ''"> and xou.phone_number like concat('%',#{query.phoneNumber},'%') </if> <if test="query.roleId != null"> and xor.role_id = #{query.roleId} </if> <if test="query.auditStatus != null"> and xqa.audit_status = #{query.auditStatus} </if> AND xqa.is_deleted = 0 </where> order by xqa.create_time desc </select> </mapper> xp-robotaxi-api/src/main/java/com/xiaopeng/api/vo/account/XpQualificationAuditVO.java
New file @@ -0,0 +1,28 @@ package com.xiaopeng.api.vo.account; import com.xiaopeng.api.model.account.XpQualificationAudit; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.util.List; @Data @ApiModel(value = "运维人员资质证书审核记录XpQualificationAuditVO", description = "运维人员资质证书审核记录VO") public class XpQualificationAuditVO extends XpQualificationAudit { @ApiModelProperty(value = "员工姓名") private String nickName; @ApiModelProperty(value = "联系电话") private String phoneNumber; @ApiModelProperty(value = "角色名称") private List<String> roleNames; @ApiModelProperty(value = "头像") private String avatar; @ApiModelProperty(value = "唯一编号") private String uniqueNumber; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpCheckLocationController.java
@@ -3,15 +3,16 @@ import com.xiaopeng.api.model.maintenance.XpCheckLocation; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.enums.DisabledEnum; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.common.security.service.TokenService; import com.xiaopeng.maintenance.dto.LocationUpdateStatusDTO; import com.xiaopeng.maintenance.model.query.XpCheckLocationQuery; import com.xiaopeng.maintenance.service.IXpCheckLocationService; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Lazy; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -46,4 +47,41 @@ return R.ok(xpCheckLocationService.queryByUserId(id)); } @PostMapping("/api/v1/check-location/pageList") @ApiOperation(value = "获取打卡地址分页列表", tags = {"管理后台-运维执行"}) public R<PageInfo<XpCheckLocation>> pageList(@RequestBody XpCheckLocationQuery query){ PageInfo<XpCheckLocation> pageList = xpCheckLocationService.pageList(query); return R.ok(pageList); } @PostMapping("/api/v1/check-location/add") @ApiOperation(value = "新增打卡地", tags = {"管理后台-运维执行"}) public R<String> add(@RequestBody XpCheckLocation dto){ xpCheckLocationService.save(dto); return R.ok(); } @PostMapping("/api/v1/check-location/edit") @ApiOperation(value = "编辑打卡地", tags = {"管理后台-运维执行"}) public R<String> edit(@RequestBody XpCheckLocation dto){ xpCheckLocationService.updateById(dto); return R.ok(); } @DeleteMapping("/api/v1/check-location/deleteById") @ApiOperation(value = "删除打卡地", tags = {"管理后台-运维执行"}) public R<String> deleteById(@RequestParam Long id){ xpCheckLocationService.removeById(id); return R.ok(); } @PostMapping("/api/v1/check-location/updateStatus") @ApiOperation(value = "启用禁用打卡地", tags = {"管理后台-运维执行"}) public R<String> updateStatus(@RequestBody LocationUpdateStatusDTO dto){ XpCheckLocation xpCheckLocation = xpCheckLocationService.getById(dto.getId()); xpCheckLocation.setStatus(dto.getStatus()); xpCheckLocationService.updateById(xpCheckLocation); return R.ok(); } } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/controller/XpVehicleRepairController.java
@@ -44,17 +44,7 @@ public R<String> saveRepair(@RequestBody XpVehicleRepairStartDTO dto) { Long id = tokenService.getLoginOperationUser().getId(); // 创建车辆维修记录 XpVehicleRepair xpVehicleRepair = new XpVehicleRepair(); xpVehicleRepair.setVehicleId(dto.getVehicleId()); xpVehicleRepair.setStartTime(dto.getStartTime()); xpVehicleRepair.setEndTime(dto.getEndTime()); xpVehicleRepair.setRepairReason(dto.getRepairReason()); xpVehicleRepair.setStartRepairPicture(dto.getStartRepairPicture()); xpVehicleRepair.setSendUserId(id); xpVehicleRepair.setSendTime(LocalDateTime.now()); xpVehicleRepairService.save(xpVehicleRepair); xpVehicleRepairService.saveRepair(dto,id); return R.ok(); } /** xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/dto/LocationUpdateStatusDTO.java
New file @@ -0,0 +1,19 @@ package com.xiaopeng.maintenance.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @Data @ApiModel(value = "打卡地址更新状态LocationUpdateStatusDTO", description = "打卡地址更新状态DTO") public class LocationUpdateStatusDTO implements Serializable { @ApiModelProperty(value = "打卡地址ID") private Long id; @ApiModelProperty(value = "打卡地址状态 1=启用 0=禁用") private Integer status; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/mapper/XpCheckLocationMapper.java
@@ -2,6 +2,11 @@ import com.xiaopeng.api.model.maintenance.XpCheckLocation; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.maintenance.model.query.XpCheckLocationQuery; import org.apache.ibatis.annotations.Param; import java.util.List; /** * <p> @@ -13,4 +18,12 @@ */ public interface XpCheckLocationMapper extends BaseMapper<XpCheckLocation> { /** * 获取打卡地址列表 * * @param pageInfo * @param query * @return */ List<XpCheckLocation> pageList(@Param("pageInfo")PageInfo<XpCheckLocation> pageInfo, @Param("query") XpCheckLocationQuery query); } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/model/query/XpCheckLocationQuery.java
New file @@ -0,0 +1,15 @@ package com.xiaopeng.maintenance.model.query; import com.xiaopeng.common.core.web.page.BasePage; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @Data @ApiModel(value = "车辆打卡地址分页查询参数XpCheckLocationQuery") public class XpCheckLocationQuery extends BasePage { @ApiModelProperty(value = "打卡地址") private String locationAddress; } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/IXpCheckLocationService.java
@@ -2,6 +2,8 @@ import com.xiaopeng.api.model.maintenance.XpCheckLocation; import com.baomidou.mybatisplus.extension.service.IService; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.maintenance.model.query.XpCheckLocationQuery; /** * <p> @@ -20,4 +22,12 @@ * @return */ XpCheckLocation queryByUserId(Long id); /** * 打卡地址分页列表 * * @param query * @return */ PageInfo<XpCheckLocation> pageList(XpCheckLocationQuery query); } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/IXpVehicleRepairService.java
@@ -3,6 +3,7 @@ import com.xiaopeng.api.model.maintenance.XpVehicleRepair; import com.baomidou.mybatisplus.extension.service.IService; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.maintenance.dto.XpVehicleRepairStartDTO; import com.xiaopeng.maintenance.model.query.XpVehicleRepairPageQuery; import com.xiaopeng.maintenance.model.vo.XpVehicleRepairVO; import com.xiaopeng.maintenance.vo.RepairStatusVO; @@ -41,4 +42,12 @@ * @return */ RepairStatusVO queryRepairStatus(Long vehicleId); /** * 保存车辆维修信息 * * @param dto * @param id */ void saveRepair(XpVehicleRepairStartDTO dto, Long id); } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpCheckLocationServiceImpl.java
@@ -2,15 +2,25 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.xiaopeng.api.feignClient.vehicleConvoy.XpFleetClient; import com.xiaopeng.api.model.account.SysRole; import com.xiaopeng.api.model.account.XpOperationsRole; import com.xiaopeng.api.model.maintenance.XpCheckLocation; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xiaopeng.api.model.vehicleConvoy.XpFleet; import com.xiaopeng.api.vo.account.XpQualificationAuditVO; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.maintenance.mapper.XpCheckLocationMapper; import com.xiaopeng.maintenance.model.query.XpCheckLocationQuery; import com.xiaopeng.maintenance.service.IXpCheckLocationService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; /** * <p> @@ -33,4 +43,12 @@ } return this.getById(xpFleet.getLocationId()); } @Override public PageInfo<XpCheckLocation> pageList(XpCheckLocationQuery query) { PageInfo<XpCheckLocation> pageInfo = new PageInfo<>(query.getPageNum(), query.getPageSize()); List<XpCheckLocation> list = this.baseMapper.pageList(pageInfo, query); pageInfo.setRecords(list); return pageInfo; } } xp-robotaxi-maintenance-boot/src/main/java/com/xiaopeng/maintenance/service/impl/XpVehicleRepairServiceImpl.java
@@ -11,6 +11,7 @@ import com.xiaopeng.api.model.vehicleConvoy.XpVehicle; import com.xiaopeng.common.core.domain.R; import com.xiaopeng.common.core.web.page.PageInfo; import com.xiaopeng.maintenance.dto.XpVehicleRepairStartDTO; import com.xiaopeng.maintenance.mapper.XpVehicleRepairMapper; import com.xiaopeng.maintenance.model.query.XpVehicleRepairPageQuery; import com.xiaopeng.maintenance.model.vo.XpVehicleRepairVO; @@ -23,6 +24,7 @@ import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -198,4 +200,18 @@ return repairStatusVO; } @Override public void saveRepair(XpVehicleRepairStartDTO dto, Long id) { // 创建车辆维修记录 XpVehicleRepair xpVehicleRepair = new XpVehicleRepair(); xpVehicleRepair.setVehicleId(dto.getVehicleId()); xpVehicleRepair.setStartTime(dto.getStartTime()); xpVehicleRepair.setEndTime(dto.getEndTime()); xpVehicleRepair.setRepairReason(dto.getRepairReason()); xpVehicleRepair.setStartRepairPicture(dto.getStartRepairPicture()); xpVehicleRepair.setSendUserId(id); xpVehicleRepair.setSendTime(LocalDateTime.now()); this.save(xpVehicleRepair); } } xp-robotaxi-maintenance-boot/src/main/resources/mapper/maintenance/XpCheckLocationMapper.xml
@@ -2,4 +2,15 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xiaopeng.maintenance.mapper.XpCheckLocationMapper"> <select id="pageList" resultType="com.xiaopeng.api.model.maintenance.XpCheckLocation"> select id,location_address,location_range,location_lon,location_lat,status,create_time from xp_check_location <where> <if test="query.locationAddress != null and query.locationAddress != ''"> and location_address like concat('%',#{query.locationAddress},'%') </if> AND is_deleted = 0 </where> order by create_time desc </select> </mapper>