From b1913abab5db0cee1ea6ce8a59a6fbb2d138b227 Mon Sep 17 00:00:00 2001 From: 18980591175 <470162950@qq.com> Date: Wed, 17 Jun 2026 17:30:04 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BD=A6=E8=BE=86=E7=AD=9B=E9=80=89=E6=9D=A1?= =?UTF-8?q?=E4=BB=B6=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/VehicleThreeInspectApi.md | 155 ++++++++++++++++++ .../controller/HotVehicleController.java | 10 ++ .../service/IHotVehicleService.java | 9 + .../service/impl/HotVehicleServiceImpl.java | 20 ++- 4 files changed, 189 insertions(+), 5 deletions(-) diff --git a/docs/VehicleThreeInspectApi.md b/docs/VehicleThreeInspectApi.md index 8f5c2d3..9515d4f 100644 --- a/docs/VehicleThreeInspectApi.md +++ b/docs/VehicleThreeInspectApi.md @@ -153,3 +153,158 @@ ADD COLUMN reject_reason varchar(500) NULL COMMENT '审核不通过原因'; - 为 `hot_vehicle_three_inspect` 增加 `inspect_no`、`inspect_location` 字段 - 对历史数据回填 `inspect_no` + +## 7. 多车辆批量审核接口 + +### 7.1 可批量审核列表接口 + +- 路径:`GET /securityManagement/vehicleThreeInspect/multiVehicleBatchAudit/list` +- 说明:分页查询当前登录人员可进行多车辆批量审核的车辆三检列表 + +### 7.2 查询参数 + +- `pageNum`:页码 +- `pageSize`:每页条数,前端默认 `20` +- `plateNumber`:车牌号,支持筛选 +- `companyId`:企业ID,可选;不传时后端默认取当前登录企业 + +请求示例: + +```http +GET /securityManagement/vehicleThreeInspect/multiVehicleBatchAudit/list?pageNum=1&pageSize=20&plateNumber=川A +``` + +### 7.3 列表筛选规则 + +后端只会返回同时满足以下条件的三检流程: + +1. 当前三检流程已经存在`收车后检查`记录。 +2. 当前三检流程下存在`审核人是当前登录账号`的未审核记录。 +3. 数据属于当前登录企业。 + +不满足上述条件的数据不会出现在列表中。 + +### 7.4 返回字段 + +后端返回类型为 `HotVehicleThreeInspectSummaryVo`,前端当前主要使用以下字段: + +- `inspectId`:三检流程ID +- `vehicleId`:车辆ID +- `plateNumber`:车牌号 +- `inspectorName`:检查人姓名 +- `auditorName`:审核人姓名 +- `startTime`:开始时间 +- `endTime`:结束时间 +- `outCheck` / `drivingCheck` / `backCheck`:三个阶段详情,查看详情时可直接复用 + +返回示例: + +```json +{ + "code": 200, + "msg": "操作成功", + "rows": [ + { + "inspectId": 1001, + "vehicleId": 501, + "plateNumber": "川A12345", + "inspectorName": "张三", + "auditorName": "李四", + "startTime": "2026-06-17 08:00:00", + "endTime": "2026-06-17 18:00:00" + } + ], + "total": 1 +} +``` + +## 8. 多车辆批量审核提交接口 + +### 8.1 接口信息 + +- 路径:`POST /securityManagement/vehicleThreeInspect/multiVehicleBatchAudit` +- 说明:对多辆车的车辆三检进行批量审核 +- 处理方式:新接口只负责组装批量审核数据,底层仍复用原有 `batchAudit` 和 `doAudit` 逻辑 + +### 8.2 请求体 + +```json +{ + "inspectIds": [1001, 1002, 1003], + "hasHiddenDanger": 1, + "evaluatorId": 2001, + "auditTime": "2026-06-17 18:30:00", + "auditResult": "存在隐患,需整改", + "rejectReason": "轮胎磨损严重", + "auditorSignImgUrl": "https://example.com/sign.png" +} +``` + +### 8.3 请求字段说明 + +- `inspectIds`:三检流程ID集合,必填 +- `hasHiddenDanger`:是否存在隐患,必填;`0=否`、`1=是` +- `evaluatorId`:评估人ID;当 `hasHiddenDanger = 1` 时必填 +- `auditTime`:审核时间;不传时后端默认取当前时间 +- `auditResult`:审核结论;不传时后端自动生成 +- `rejectReason`:审核不通过原因;有隐患时建议传入 +- `auditorSignImgUrl`:审核人员签名图片地址,必填 + +### 8.4 自动生成规则 + +- 当 `auditTime` 为空时,后端自动使用当前时间。 +- 当 `auditResult` 为空时: + - `hasHiddenDanger = 0`:自动生成 `通过` + - `hasHiddenDanger = 1` 且传了 `rejectReason`:自动生成 `不通过:{rejectReason}` + - `hasHiddenDanger = 1` 且未传 `rejectReason`:自动生成 `不通过` + +### 8.5 批量审核校验规则 + +后端会对每个 `inspectId` 依次校验: + +1. 三检流程必须存在。 +2. 当前流程必须已完成收车检查,否则报错:`{车牌号}尚未完成收车检查,不可批量审核` +3. 当前流程中必须存在`审核人是当前登录人`的未审核数据,否则报错:`{车牌号}没有当前账号可审核的未审核数据` +4. 只有当前登录企业下的数据才会参与组装。 +5. 组装后的明细仍会走原有单条审核校验,包括: + - 流程任务ID不能为空 + - 三检记录ID不能为空 + - 审核时间不能早于检查时间 + - 审核签名校验 + - 流程审批人校验 + +### 8.6 实际审核范围 + +每个 `inspectId` 并不是只审核一条数据,而是会自动筛出该三检流程下所有满足以下条件的阶段记录一起审核: + +- 审核人等于当前登录账号 +- 当前记录尚未审核完成 +- 当前记录存在流程任务 `taskId` + +因此一次多车辆批量审核,最终可能会展开成多条实际审核明细。 + +### 8.7 有隐患时的处理 + +- 当 `hasHiddenDanger = 1` 时,审核流程按不通过处理。 +- 流程结束后,会按每一条三检明细分别创建隐患治理数据。 +- 如果本次批量审核展开后共有 N 条三检明细,则会生成 N 条隐患治理数据,不会合并成 1 条。 + +### 8.8 返回结果 + +成功返回: + +```json +{ + "code": 200, + "msg": "操作成功", + "data": null +} +``` + +失败时返回业务异常,例如: + +- `三检流程ID不能为空` +- `存在隐患时评估人不能为空` +- `未查询到可批量审核的车辆三检数据` +- `{车牌号}尚未完成收车检查,不可批量审核` +- `{车牌号}没有当前账号可审核的未审核数据` diff --git a/src/main/java/com/hotwj/platform/resourceManagement/vehicleManagement/controller/HotVehicleController.java b/src/main/java/com/hotwj/platform/resourceManagement/vehicleManagement/controller/HotVehicleController.java index c3c92e0..475de4e 100644 --- a/src/main/java/com/hotwj/platform/resourceManagement/vehicleManagement/controller/HotVehicleController.java +++ b/src/main/java/com/hotwj/platform/resourceManagement/vehicleManagement/controller/HotVehicleController.java @@ -85,6 +85,16 @@ public class HotVehicleController extends BaseController { return hotVehicleService.queryPageListByStatus(bo, pageQuery); } + /** + * 查询公司车辆信息列表(状态为数组,不过滤已绑定驾驶员) + */ + //@SaCheckPermission("resourceManagement:vehicle:list") + @GetMapping("/listByStatusAll") + @Operation(summary = "查询公司车辆信息列表(状态为数组,不过滤已绑定驾驶员)") + public TableDataInfo listByStatusAll(HotVehicleStatusBo bo, PageQuery pageQuery) { + return hotVehicleService.queryPageListByStatusAll(bo, pageQuery); + } + /** * 查询当前企业可绑定的车辆列表 */ diff --git a/src/main/java/com/hotwj/platform/resourceManagement/vehicleManagement/service/IHotVehicleService.java b/src/main/java/com/hotwj/platform/resourceManagement/vehicleManagement/service/IHotVehicleService.java index 8866dd5..911ae2b 100644 --- a/src/main/java/com/hotwj/platform/resourceManagement/vehicleManagement/service/IHotVehicleService.java +++ b/src/main/java/com/hotwj/platform/resourceManagement/vehicleManagement/service/IHotVehicleService.java @@ -64,6 +64,15 @@ public interface IHotVehicleService { */ TableDataInfo queryPageListByStatus(HotVehicleStatusBo bo, PageQuery pageQuery); + /** + * 分页查询公司车辆信息列表(不过滤已绑定驾驶员) + * + * @param bo 查询条件 车辆状态为字符串逗号拼接 + * @param pageQuery 分页参数 + * @return 公司车辆信息分页列表 + */ + TableDataInfo queryPageListByStatusAll(HotVehicleStatusBo bo, PageQuery pageQuery); + /** * 查询当前企业可绑定的车辆列表 * diff --git a/src/main/java/com/hotwj/platform/resourceManagement/vehicleManagement/service/impl/HotVehicleServiceImpl.java b/src/main/java/com/hotwj/platform/resourceManagement/vehicleManagement/service/impl/HotVehicleServiceImpl.java index 05a9e0b..5736d40 100644 --- a/src/main/java/com/hotwj/platform/resourceManagement/vehicleManagement/service/impl/HotVehicleServiceImpl.java +++ b/src/main/java/com/hotwj/platform/resourceManagement/vehicleManagement/service/impl/HotVehicleServiceImpl.java @@ -195,7 +195,15 @@ public class HotVehicleServiceImpl implements IHotVehicleService { */ @Override public TableDataInfo queryPageListByStatus(HotVehicleStatusBo bo, PageQuery pageQuery) { - LambdaQueryWrapper lqw = buildQueryWrapperByStatus(bo); + LambdaQueryWrapper lqw = buildQueryWrapperByStatus(bo, true); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + fillCurrentBindingPersonName(result.getRecords()); + return TableDataInfo.build(result); + } + + @Override + public TableDataInfo queryPageListByStatusAll(HotVehicleStatusBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapperByStatus(bo, false); Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); fillCurrentBindingPersonName(result.getRecords()); return TableDataInfo.build(result); @@ -417,7 +425,7 @@ public class HotVehicleServiceImpl implements IHotVehicleService { return lqw; } - private LambdaQueryWrapper buildQueryWrapperByStatus(HotVehicleStatusBo bo) { + private LambdaQueryWrapper buildQueryWrapperByStatus(HotVehicleStatusBo bo, boolean onlyUnboundDriver) { Map params = bo.getParams(); LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.orderByDesc(HotVehicle::getCreateTime, HotVehicle::getId); @@ -426,9 +434,11 @@ public class HotVehicleServiceImpl implements IHotVehicleService { lqw.eq(bo.getIsTrailer() != null, HotVehicle::getIsTrailer, bo.getIsTrailer()); lqw.eq(bo.getVehicleStatus() != null, HotVehicle::getVehicleStatus, bo.getVehicleStatus()); lqw.in(HotVehicle::getOperationStatus, Arrays.asList(bo.getOperationStatus().split(","))); - lqw.and(wrapper -> wrapper.isNull(HotVehicle::getCurrentDriver) - .or() - .eq(HotVehicle::getCurrentDriver, "")); + if (onlyUnboundDriver) { + lqw.and(wrapper -> wrapper.isNull(HotVehicle::getCurrentDriver) + .or() + .eq(HotVehicle::getCurrentDriver, "")); + } lqw.eq(StringUtils.isNotBlank(bo.getBodyImageUrls()), HotVehicle::getBodyImageUrls, bo.getBodyImageUrls()); lqw.eq(StringUtils.isNotBlank(bo.getOtherAttachmentUrls()), HotVehicle::getOtherAttachmentUrls, bo.getOtherAttachmentUrls()); lqw.eq(StringUtils.isNotBlank(bo.getColor()), HotVehicle::getColor, bo.getColor());