巡检任务查询方法修改

This commit is contained in:
funny 2026-05-12 10:32:02 +08:00
parent a8329f6a2c
commit dbb25ff4d1
6 changed files with 105 additions and 24 deletions

View File

@ -97,7 +97,49 @@ public class QmsIssueTicketControllerService {
User handlerUser = userService.getById(request.getHandlerUserId());
VUtil.trueThrowBusinessError(Objects.isNull(handlerUser)).throwMessage("负责人不存在");
// 4. 更新工单状态和审批人信息
// 4. 校验工单必填字段完整性
VUtil.trueThrowBusinessError(StrUtil.isBlank(ticket.getTicketTitle()))
.throwMessage("工单标题不能为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(ticket.getProjectNo()))
.throwMessage("工程编号不能为空");
VUtil.trueThrowBusinessError(ticket.getIncidentType() == null)
.throwMessage("事故类型不能为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(ticket.getExceptionCode()))
.throwMessage("异常代码不能为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(ticket.getImpactQuantity()))
.throwMessage("影响数量不能为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(ticket.getIncidentLocation()))
.throwMessage("事件地点不能为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(ticket.getIncidentDescription()))
.throwMessage("事件描述不能为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(ticket.getIncidentReason()))
.throwMessage("事件原因不能为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(ticket.getIncidentConsequence()))
.throwMessage("事件后果不能为空");
// 5. 校验工单图片字段完整性如果有图片的话
if (StrUtil.isNotBlank(ticket.getImageIds())) {
List<Long> imageIds = Arrays.stream(ticket.getImageIds().split(","))
.filter(StrUtil::isNotBlank)
.map(String::trim)
.map(Long::valueOf)
.collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(imageIds)) {
List<FileUploadRecord> fileRecords = fileUploadRecordService.lambdaQuery()
.in(FileUploadRecord::getId, imageIds)
.list();
for (FileUploadRecord record : fileRecords) {
VUtil.trueThrowBusinessError(StrUtil.isBlank(record.getFileName()))
.throwMessage("图片文件名不能为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(record.getUrl()))
.throwMessage("图片URL不能为空");
}
}
}
// 6. 更新工单状态和审批人信息
issueTicketService.lambdaUpdate()
.eq(QmsIssueTicket::getId, request.getId())
.set(QmsIssueTicket::getStatus, (short) 1) // 状态1=处理中
@ -533,12 +575,12 @@ public class QmsIssueTicketControllerService {
QmsIssueTicket entity = new QmsIssueTicket()
.setSourceType((short) 2)
.setStatus((short) 0) // 待流转状态
.setTicketNo(ticketNo)
.setTicketTitle(request.getTicketTitle())
.setProjectNo(request.getProjectNo())
.setIncidentType(request.getIncidentType())
.setExceptionCode(request.getExceptionCode())
.setUnqualifiedQty(request.getUnqualifiedQty())
.setImpactQuantity(request.getImpactQuantity())
.setIncidentLocation(request.getIncidentLocation())
.setIncidentDescription(request.getIncidentDescription())
@ -575,10 +617,51 @@ public class QmsIssueTicketControllerService {
User handlerUser = userService.getById(request.getHandlerUserId());
VUtil.trueThrowBusinessError(Objects.isNull(handlerUser)).throwMessage("负责人不存在");
// 2. 自动生成工单编号
// 2. 校验请求必填字段完整性
VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getTicketTitle()))
.throwMessage("工单标题不能为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getProjectNo()))
.throwMessage("工程编号不能为空");
VUtil.trueThrowBusinessError(request.getIncidentType() == null)
.throwMessage("事故类型不能为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getExceptionCode()))
.throwMessage("异常代码不能为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getImpactQuantity()))
.throwMessage("影响数量不能为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getIncidentLocation()))
.throwMessage("事件地点不能为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getIncidentDescription()))
.throwMessage("事件描述不能为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getIncidentReason()))
.throwMessage("事件原因不能为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(request.getIncidentConsequence()))
.throwMessage("事件后果不能为空");
// 3. 校验图片字段完整性如果有图片的话
if (CollectionUtil.isNotEmpty(request.getImages())) {
List<Long> imageIds = request.getImages().stream()
.map(FileUploadVO::getId)
.filter(Objects::nonNull)
.collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(imageIds)) {
List<FileUploadRecord> fileRecords = fileUploadRecordService.lambdaQuery()
.in(FileUploadRecord::getId, imageIds)
.list();
for (FileUploadRecord record : fileRecords) {
VUtil.trueThrowBusinessError(StrUtil.isBlank(record.getFileName()))
.throwMessage("图片文件名不能为空");
VUtil.trueThrowBusinessError(StrUtil.isBlank(record.getUrl()))
.throwMessage("图片URL不能为空");
}
}
}
// 4. 自动生成工单编号
String ticketNo = basdeSerialNumberControllerService.generateSerialNumber(37);
// 3. 创建工单实体直接设置为处理中状态
// 5. 创建工单实体直接设置为处理中状态
QmsIssueTicket entity = new QmsIssueTicket()
.setSourceType((short) 2)
.setTicketNo(ticketNo)
@ -586,7 +669,6 @@ public class QmsIssueTicketControllerService {
.setProjectNo(request.getProjectNo())
.setIncidentType(request.getIncidentType())
.setExceptionCode(request.getExceptionCode())
.setUnqualifiedQty(request.getUnqualifiedQty())
.setImpactQuantity(request.getImpactQuantity())
.setIncidentLocation(request.getIncidentLocation())
.setIncidentDescription(request.getIncidentDescription())
@ -729,33 +811,28 @@ public class QmsIssueTicketControllerService {
pageData.setPage((int) resultPage.getCurrent());
pageData.setPageSize((int) resultPage.getSize());
// 统计工单总数不考虑过滤条件
Long totalCount = issueTicketService.lambdaQuery()
.eq(QmsIssueTicket::getSourceType, (short) 2)
.eq(QmsIssueTicket::getCreateUserId, currentUserId)
.count();
// 统计待处理数status=0
// 统计工单各状态数量只统计 sourceType=2 且当前用户创建的工单
Long pendingCount = issueTicketService.lambdaQuery()
.eq(QmsIssueTicket::getSourceType, (short) 2)
.eq(QmsIssueTicket::getCreateUserId, currentUserId)
.eq(QmsIssueTicket::getStatus, (short) 0)
.count();
// 统计处理中数status=1
Long processingCount = issueTicketService.lambdaQuery()
.eq(QmsIssueTicket::getSourceType, (short) 2)
.eq(QmsIssueTicket::getCreateUserId, currentUserId)
.eq(QmsIssueTicket::getStatus, (short) 1)
.count();
// 统计已完成数status=2
Long completedCount = issueTicketService.lambdaQuery()
.eq(QmsIssueTicket::getSourceType, (short) 2)
.eq(QmsIssueTicket::getCreateUserId, currentUserId)
.eq(QmsIssueTicket::getStatus, (short) 2)
.count();
// 工单总数 = 待处理 + 处理中 + 已完成
long totalCount = pendingCount + processingCount + completedCount;
// 设置统计字段
pageData.setTotalCount(totalCount);
pageData.setPendingCount(pendingCount);

View File

@ -222,6 +222,8 @@ public class QmsPdiStatusItemControllerService {
record.setFileName(pic.getLocalPath().getFileName().toString());
record.setFileType("image/png");
record.setUrl(imageUrl);
record.setSource((short) 0); // 关联类型0=通用
record.setSourceId(0L); // 关联ID0=无关联
record.setFrom("PDI检测项导入");
record.setCreateBy(UserUtil.getUserName());
record.setCreateTime(LocalDateTime.now());

View File

@ -35,11 +35,6 @@ public class QmsIssueTicketAddAndDispatchQO {
*/
private String exceptionCode;
/**
* 不合格数量
*/
private Integer unqualifiedQty;
/**
* 影响数量
*/

View File

@ -35,11 +35,6 @@ public class QmsIssueTicketAddQO {
*/
private String exceptionCode;
/**
* 不合格数量
*/
private Integer unqualifiedQty;
/**
* 影响数量
*/

View File

@ -28,6 +28,11 @@ public class QmsPdiInspectionResultsSearchQO {
*/
private String taskNo;
/**
* 任务状态可选0=待质检1=质检中2=已完成3=已逾期
*/
private Integer taskStatus;
/**
* 当前登录用户ID内部使用用于权限过滤
*/

View File

@ -34,6 +34,13 @@
<if test="request.taskNo != null and request.taskNo != ''">
AND t.task_no = #{request.taskNo}
</if>
<!-- 任务状态筛选 -->
<if test="request.taskStatus != null and request.taskStatus != 3">
AND t.inspection_enable = #{request.taskStatus}
</if>
<if test="request.taskStatus != null and request.taskStatus == 3">
AND t.overdue = true
</if>
</where>
ORDER BY t.id DESC
</select>