feat(vehicleThreeInspect): 新增车辆三检聚合列表分页查询功能
新增聚合视图对象与全链路查询逻辑,实现车辆三检出车、行车、收车全流程数据的聚合展示,同时删除废弃的旧运维备注配置文件。
This commit is contained in:
@@ -5,6 +5,7 @@ import com.hotwj.platform.config.vehicleThreeInspect.domain.bo.HotVehicleThreeIn
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectProcessVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.bo.HotVehicleThreeInspectVehicleQueryBo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectReceivedVehicleVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectSummaryVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectUnreceivedVehicleVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.service.IHotVehicleThreeInspectPrintService;
|
||||
@@ -213,4 +214,13 @@ public class HotVehicleThreeInspectController extends BaseController {
|
||||
@PathVariable Long[] ids) {
|
||||
return toAjax(hotVehicleThreeInspectService.deleteWithValidByIds(List.of(ids), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询车辆三检聚合列表
|
||||
*/
|
||||
@GetMapping("/listSummary")
|
||||
@Operation(summary = "分页查询车辆三检聚合列表")
|
||||
public TableDataInfo<HotVehicleThreeInspectSummaryVo> listSummary(HotVehicleThreeInspectBo bo, PageQuery pageQuery) {
|
||||
return hotVehicleThreeInspectService.querySummaryPageList(bo, pageQuery);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
package com.hotwj.platform.config.vehicleThreeInspect.domain.vo;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* 车辆三检聚合列表视图对象
|
||||
*
|
||||
* @author shihongwei
|
||||
* @date 2026-06-01
|
||||
*/
|
||||
@Data
|
||||
public class HotVehicleThreeInspectSummaryVo implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 三检流程ID
|
||||
*/
|
||||
private Long inspectId;
|
||||
|
||||
/**
|
||||
* 公司ID
|
||||
*/
|
||||
private Long companyId;
|
||||
|
||||
/**
|
||||
* 车辆ID
|
||||
*/
|
||||
private Long vehicleId;
|
||||
|
||||
/**
|
||||
* 车牌号
|
||||
*/
|
||||
private String plateNumber;
|
||||
|
||||
/**
|
||||
* 驾驶员ID
|
||||
*/
|
||||
private String driverId;
|
||||
|
||||
/**
|
||||
* 驾驶员姓名
|
||||
*/
|
||||
private String driverName;
|
||||
|
||||
/**
|
||||
* 开始时间
|
||||
*/
|
||||
private Date startTime;
|
||||
|
||||
/**
|
||||
* 结束时间
|
||||
*/
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 检查时间展示
|
||||
*/
|
||||
private String inspectTime;
|
||||
|
||||
/**
|
||||
* 完成状态
|
||||
*/
|
||||
private String completeStatus;
|
||||
|
||||
/**
|
||||
* 是否已完成
|
||||
*/
|
||||
private Boolean completed;
|
||||
|
||||
/**
|
||||
* 审核完成状态
|
||||
*/
|
||||
private String auditCompleteStatus;
|
||||
|
||||
/**
|
||||
* 是否完成审核
|
||||
*/
|
||||
private Boolean auditCompleted;
|
||||
|
||||
/**
|
||||
* 出车检查
|
||||
*/
|
||||
private HotVehicleThreeInspectVo outCheck;
|
||||
|
||||
/**
|
||||
* 行车检查
|
||||
*/
|
||||
private HotVehicleThreeInspectVo drivingCheck;
|
||||
|
||||
/**
|
||||
* 收车检查
|
||||
*/
|
||||
private HotVehicleThreeInspectVo backCheck;
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import com.hotwj.platform.config.vehicleThreeInspect.domain.bo.HotVehicleThreeIn
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectProcessVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectPrintVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectReceivedVehicleVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectSummaryVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectUnreceivedVehicleVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectVo;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@@ -44,6 +45,26 @@ public interface HotVehicleThreeInspectMapper extends BaseMapperPlus<HotVehicleT
|
||||
@Param("bo") HotVehicleThreeInspectBo bo
|
||||
);
|
||||
|
||||
/**
|
||||
* 分页查询车辆三检聚合列表
|
||||
*
|
||||
* @param page 分页参数
|
||||
* @param bo 查询条件
|
||||
* @return 聚合分页列表
|
||||
*/
|
||||
Page<HotVehicleThreeInspectSummaryVo> querySummaryPageList(
|
||||
Page<HotVehicleThreeInspectSummaryVo> page,
|
||||
@Param("bo") HotVehicleThreeInspectBo bo
|
||||
);
|
||||
|
||||
/**
|
||||
* 按流程ID集合查询三检明细
|
||||
*
|
||||
* @param inspectIds 流程ID集合
|
||||
* @return 三检明细列表
|
||||
*/
|
||||
List<HotVehicleThreeInspectVo> querySummaryDetailList(@Param("inspectIds") List<Long> inspectIds);
|
||||
|
||||
/**
|
||||
* 查询所有三检未收车的车辆列表
|
||||
*
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.hotwj.platform.config.vehicleThreeInspect.domain.bo.HotVehicleThreeIn
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.bo.HotVehicleThreeInspectVehicleQueryBo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectProcessVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectReceivedVehicleVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectSummaryVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectUnreceivedVehicleVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectVo;
|
||||
import com.hotwj.platform.resourceManagement.vehicleManagement.domain.vo.HotVehicleVo;
|
||||
@@ -72,6 +73,15 @@ public interface IHotVehicleThreeInspectService {
|
||||
*/
|
||||
TableDataInfo<HotVehicleThreeInspectProcessVo> queryProcessPageList(HotVehicleThreeInspectBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 分页查询车辆三检聚合列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 车辆三检聚合分页列表
|
||||
*/
|
||||
TableDataInfo<HotVehicleThreeInspectSummaryVo> querySummaryPageList(HotVehicleThreeInspectBo bo, PageQuery pageQuery);
|
||||
|
||||
/**
|
||||
* 查询符合条件的车辆三检列表
|
||||
*
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.hotwj.platform.config.vehicleThreeInspect.domain.bo.HotVehicleThreeIn
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.bo.HotVehicleThreeInspectVehicleQueryBo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectProcessVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectReceivedVehicleVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectSummaryVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectUnreceivedVehicleVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectVo;
|
||||
import com.hotwj.platform.config.vehicleThreeInspectConfig.domain.HotVehicleThreeInspectConfig;
|
||||
@@ -197,6 +198,47 @@ public class HotVehicleThreeInspectServiceImpl implements IHotVehicleThreeInspec
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 分页查询车辆三检聚合列表
|
||||
*
|
||||
* @param bo 查询条件
|
||||
* @param pageQuery 分页参数
|
||||
* @return 车辆三检聚合分页列表
|
||||
*/
|
||||
@Override
|
||||
public TableDataInfo<HotVehicleThreeInspectSummaryVo> querySummaryPageList(HotVehicleThreeInspectBo bo, PageQuery pageQuery) {
|
||||
Page<HotVehicleThreeInspectSummaryVo> result = baseMapper.querySummaryPageList(pageQuery.build(), bo);
|
||||
List<HotVehicleThreeInspectSummaryVo> summaryList = result.getRecords();
|
||||
if (summaryList == null || summaryList.isEmpty()) {
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
List<Long> inspectIds = summaryList.stream()
|
||||
.map(HotVehicleThreeInspectSummaryVo::getInspectId)
|
||||
.filter(Objects::nonNull)
|
||||
.toList();
|
||||
if (inspectIds.isEmpty()) {
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
List<HotVehicleThreeInspectVo> detailList = baseMapper.querySummaryDetailList(inspectIds);
|
||||
fillTaskId(detailList);
|
||||
|
||||
Map<Long, HotVehicleThreeInspectSummaryVo> summaryMap = new HashMap<>(summaryList.size());
|
||||
for (HotVehicleThreeInspectSummaryVo summary : summaryList) {
|
||||
summaryMap.put(summary.getInspectId(), summary);
|
||||
}
|
||||
|
||||
for (HotVehicleThreeInspectVo detail : detailList) {
|
||||
HotVehicleThreeInspectSummaryVo summary = summaryMap.get(detail.getInspectId());
|
||||
if (summary == null) {
|
||||
continue;
|
||||
}
|
||||
attachPhaseDetail(summary, detail);
|
||||
}
|
||||
return TableDataInfo.build(result);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询符合条件的车辆三检列表
|
||||
*
|
||||
@@ -209,6 +251,39 @@ public class HotVehicleThreeInspectServiceImpl implements IHotVehicleThreeInspec
|
||||
return baseMapper.selectVoList(lqw);
|
||||
}
|
||||
|
||||
private void attachPhaseDetail(HotVehicleThreeInspectSummaryVo summary, HotVehicleThreeInspectVo detail) {
|
||||
if (summary == null || detail == null || detail.getInspectPhase() == null) {
|
||||
return;
|
||||
}
|
||||
if (detail.getInspectPhase() == 1L) {
|
||||
if (summary.getOutCheck() == null) {
|
||||
summary.setOutCheck(detail);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (detail.getInspectPhase() == 2L) {
|
||||
if (summary.getDrivingCheck() == null) {
|
||||
summary.setDrivingCheck(detail);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (detail.getInspectPhase() == 3L && summary.getBackCheck() == null) {
|
||||
summary.setBackCheck(detail);
|
||||
}
|
||||
}
|
||||
|
||||
private void fillTaskId(List<HotVehicleThreeInspectVo> list) {
|
||||
if (list == null || list.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
String businessUserId = LoginHelper.getBusinessUserId();
|
||||
for (HotVehicleThreeInspectVo vo : list) {
|
||||
if (StringUtils.isNotBlank(vo.getInstanceId())) {
|
||||
vo.setTaskId(flowService.getTaskId(vo.getInstanceId(), businessUserId));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private LambdaQueryWrapper<HotVehicleThreeInspect> buildQueryWrapper(HotVehicleThreeInspectBo bo) {
|
||||
Map<String, Object> params = bo.getParams();
|
||||
LambdaQueryWrapper<HotVehicleThreeInspect> lqw = Wrappers.lambdaQuery();
|
||||
|
||||
@@ -106,6 +106,96 @@
|
||||
ORDER BY IFNULL(MAX(t.inspect_time), MAX(t.create_time)) DESC, MAX(t.create_time) DESC
|
||||
</select>
|
||||
|
||||
<select id="querySummaryPageList"
|
||||
resultType="com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectSummaryVo">
|
||||
SELECT
|
||||
t.inspect_id AS inspectId,
|
||||
MAX(t.company_id) AS companyId,
|
||||
MAX(t.vehicle_id) AS vehicleId,
|
||||
MAX(v.plate_number) AS plateNumber,
|
||||
MAX(t.driver_id) AS driverId,
|
||||
MAX(t.driver_name) AS driverName,
|
||||
MIN(IFNULL(t.inspect_time, t.create_time)) AS startTime,
|
||||
MAX(IFNULL(t.inspect_time, t.create_time)) AS endTime,
|
||||
CASE
|
||||
WHEN MIN(IFNULL(t.inspect_time, t.create_time)) = MAX(IFNULL(t.inspect_time, t.create_time))
|
||||
THEN DATE_FORMAT(MIN(IFNULL(t.inspect_time, t.create_time)), '%Y-%m-%d %H:%i:%s')
|
||||
ELSE CONCAT(
|
||||
DATE_FORMAT(MIN(IFNULL(t.inspect_time, t.create_time)), '%Y-%m-%d %H:%i:%s'),
|
||||
' ~ ',
|
||||
DATE_FORMAT(MAX(IFNULL(t.inspect_time, t.create_time)), '%Y-%m-%d %H:%i:%s')
|
||||
)
|
||||
END AS inspectTime,
|
||||
CASE
|
||||
WHEN SUM(CASE WHEN t.inspect_phase = 3 THEN 1 ELSE 0 END) > 0 THEN '已完成'
|
||||
ELSE '未完成'
|
||||
END AS completeStatus,
|
||||
CASE
|
||||
WHEN SUM(CASE WHEN t.inspect_phase = 3 THEN 1 ELSE 0 END) > 0 THEN 1
|
||||
ELSE 0
|
||||
END AS completed,
|
||||
CASE
|
||||
WHEN COUNT(DISTINCT CASE WHEN t.flow_status = 'APPROVED' THEN t.inspect_phase END) = 3
|
||||
THEN '已完成审核'
|
||||
ELSE '未审核'
|
||||
END AS auditCompleteStatus,
|
||||
CASE
|
||||
WHEN COUNT(DISTINCT CASE WHEN t.flow_status = 'APPROVED' THEN t.inspect_phase END) = 3
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END AS auditCompleted
|
||||
FROM hot_vehicle_three_inspect t
|
||||
LEFT JOIN hot_vehicle v ON t.vehicle_id = v.id
|
||||
<where>
|
||||
t.is_deleted = 0
|
||||
AND t.inspect_id IS NOT NULL
|
||||
<if test="bo.companyId != null">
|
||||
AND t.company_id = #{bo.companyId}
|
||||
</if>
|
||||
<if test="bo.vehicleId != null">
|
||||
AND t.vehicle_id = #{bo.vehicleId}
|
||||
</if>
|
||||
<if test="bo.driverId != null and bo.driverId != ''">
|
||||
AND t.driver_id = #{bo.driverId}
|
||||
</if>
|
||||
<if test="bo.driverName != null and bo.driverName != ''">
|
||||
AND t.driver_name LIKE CONCAT('%', #{bo.driverName}, '%')
|
||||
</if>
|
||||
<if test="bo.inspectId != null">
|
||||
AND t.inspect_id = #{bo.inspectId}
|
||||
</if>
|
||||
<if test="bo.params != null and bo.params.beginTime != null and bo.params.beginTime != '' and bo.params.endTime != null and bo.params.endTime != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM hot_vehicle_three_inspect t2
|
||||
WHERE t2.inspect_id = t.inspect_id
|
||||
AND t2.is_deleted = 0
|
||||
AND t2.inspect_time BETWEEN #{bo.params.beginTime} AND #{bo.params.endTime}
|
||||
)
|
||||
</if>
|
||||
<if test="bo.params != null and bo.params.beginTime != null and bo.params.beginTime != '' and (bo.params.endTime == null or bo.params.endTime == '')">
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM hot_vehicle_three_inspect t2
|
||||
WHERE t2.inspect_id = t.inspect_id
|
||||
AND t2.is_deleted = 0
|
||||
AND t2.inspect_time <![CDATA[>=]]> #{bo.params.beginTime}
|
||||
)
|
||||
</if>
|
||||
<if test="bo.params != null and (bo.params.beginTime == null or bo.params.beginTime == '') and bo.params.endTime != null and bo.params.endTime != ''">
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM hot_vehicle_three_inspect t2
|
||||
WHERE t2.inspect_id = t.inspect_id
|
||||
AND t2.is_deleted = 0
|
||||
AND t2.inspect_time <![CDATA[<=]]> #{bo.params.endTime}
|
||||
)
|
||||
</if>
|
||||
</where>
|
||||
GROUP BY t.inspect_id
|
||||
ORDER BY IFNULL(MAX(t.inspect_time), MAX(t.create_time)) DESC, MAX(t.create_time) DESC
|
||||
</select>
|
||||
|
||||
<select id="selectPrintList"
|
||||
resultType="com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectPrintVo">
|
||||
WITH base AS (
|
||||
@@ -175,6 +265,46 @@
|
||||
ORDER BY MAX(create_time) DESC
|
||||
</select>
|
||||
|
||||
<select id="querySummaryDetailList"
|
||||
resultType="com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectVo">
|
||||
SELECT
|
||||
t.id,
|
||||
t.company_id,
|
||||
t.vehicle_id,
|
||||
t.driver_id,
|
||||
t.driver_name,
|
||||
t.inspect_phase,
|
||||
t.inspect_id,
|
||||
t.inspect_time,
|
||||
t.auditor_id,
|
||||
t.auditor_name,
|
||||
t.inspect_result_json,
|
||||
t.attach_img_url,
|
||||
t.inspector_sign_img_url,
|
||||
t.is_deleted,
|
||||
t.is_false_report,
|
||||
t.has_hidden_danger,
|
||||
t.audit_time,
|
||||
t.audit_result,
|
||||
t.reject_reason,
|
||||
t.auditor_sign_img_url,
|
||||
t.instance_id,
|
||||
t.flow_status,
|
||||
t.evaluator_id
|
||||
FROM hot_vehicle_three_inspect t
|
||||
WHERE t.is_deleted = 0
|
||||
AND t.inspect_id IS NOT NULL
|
||||
AND t.inspect_id IN
|
||||
<foreach collection="inspectIds" item="inspectId" open="(" separator="," close=")">
|
||||
#{inspectId}
|
||||
</foreach>
|
||||
ORDER BY t.inspect_id DESC,
|
||||
t.inspect_phase ASC,
|
||||
IFNULL(t.inspect_time, t.create_time) DESC,
|
||||
t.create_time DESC,
|
||||
t.id DESC
|
||||
</select>
|
||||
|
||||
<select id="queryUnreceivedVehicles"
|
||||
resultType="com.hotwj.platform.config.vehicleThreeInspect.domain.vo.HotVehicleThreeInspectUnreceivedVehicleVo">
|
||||
SELECT
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
# 要清除的表
|
||||
|
||||
# 更改oss地址
|
||||
|
||||
# 更改nginx配置,以适配大文件上传,在http模块添加:client_max_body_size 100M;
|
||||
|
||||
# nginx配置 解决h5 预览pdf问题
|
||||
http {
|
||||
include mime.types;
|
||||
types {
|
||||
application/javascript mjs;
|
||||
application/javascript mjs.map;
|
||||
}
|
||||
...
|
||||
}
|
||||
|
||||
# 密码:123.\HOT.WJ
|
||||
|
||||
账号:
|
||||
lksy_lz
|
||||
密码:
|
||||
htwjj369
|
||||
短信宝: https://console.smsbao.com/#/index
|
||||
|
||||
# 企业二维码注册链接
|
||||
register-url: http://hott.xiaoshi98.top
|
||||
|
||||
# pdf预览连接 gotenberg
|
||||
|
||||
# app 验真与外网地址
|
||||
Reference in New Issue
Block a user