工单状态新增字段修改

This commit is contained in:
yf001217 2026-06-17 09:20:03 +08:00
parent 15f79032c0
commit 82b8a1fe07
17 changed files with 65 additions and 24 deletions

View File

@ -454,10 +454,10 @@ public class QmsIssueTicketControllerService {
// 3. 根据审批状态分支处理
if (approvalStatus == 1) {
// 驳回不创建处理记录巡检工单直接关闭
// 驳回不创建处理记录巡检工单直接报废
issueTicketService.lambdaUpdate()
.eq(QmsIssueTicket::getId, ticket.getId())
.set(QmsIssueTicket::getStatus, (short) 3)
.set(QmsIssueTicket::getStatus, (short) 4)
.set(QmsIssueTicket::getApprovalStatus, approvalStatus)
.set(request.getApprovalOpinion() != null,
QmsIssueTicket::getApprovalOpinion, request.getApprovalOpinion())
@ -1304,8 +1304,14 @@ public class QmsIssueTicketControllerService {
.eq(QmsIssueTicket::getStatus, (short) 3)
.count();
// 工单总数 = 待处理 + 处理中 + 已完成 + 已关闭
long totalCount = pendingCount + processingCount + completedCount + closedCount;
Long scrapCount = issueTicketService.lambdaQuery()
.eq(QmsIssueTicket::getSourceType, (short) 2)
.eq(QmsIssueTicket::getCreateUserId, currentUserId)
.eq(QmsIssueTicket::getStatus, (short) 4)
.count();
// 工单总数 = 待处理 + 处理中 + 已完成 + 已关闭 + 报废
long totalCount = pendingCount + processingCount + completedCount + closedCount + scrapCount;
// 设置统计字段
pageData.setTotalCount(totalCount);
@ -1313,6 +1319,7 @@ public class QmsIssueTicketControllerService {
pageData.setProcessingCount(processingCount);
pageData.setCompletedCount(completedCount);
pageData.setClosedCount(closedCount);
pageData.setScrapCount(scrapCount);
return pageData;
}

View File

@ -331,7 +331,7 @@ public class QmsIssueTicketProcessControllerService {
issueTicketService.lambdaUpdate()
.eq(QmsIssueTicket::getId, ticket.getId())
.set(QmsIssueTicket::getStatus, (short) 3)
.set(QmsIssueTicket::getStatus, (short) 4)
.set(QmsIssueTicket::getApprovalStatus, (short) 1)
.set(QmsIssueTicket::getApprovalOpinion, request.getApprovalOpinion())
.set(QmsIssueTicket::getApprovalTime, now)

View File

@ -867,6 +867,8 @@ public class QmsReportControllerService {
vo.setUnfinishedCount(0);
vo.setPendingTransferCount(0);
vo.setProcessingCount(0);
vo.setClosedCount(0);
vo.setScrapCount(0);
vo.setCompletionRate(0.0);
vo.setAvgProcessingTime("0天0小时");
vo.setStatusDistributions(buildEmptyStatusDistributions());
@ -882,12 +884,16 @@ public class QmsReportControllerService {
int completedCount = (int) allTickets.stream().filter(t -> t.getStatus() != null && t.getStatus() == 2).count();
int pendingTransferCount = (int) allTickets.stream().filter(t -> t.getStatus() != null && t.getStatus() == 0).count();
int processingCount = (int) allTickets.stream().filter(t -> t.getStatus() != null && t.getStatus() == 1).count();
int closedCount = (int) allTickets.stream().filter(t -> t.getStatus() != null && t.getStatus() == 3).count();
int scrapCount = (int) allTickets.stream().filter(t -> t.getStatus() != null && t.getStatus() == 4).count();
int unfinishedCount = total - completedCount;
vo.setCompletedCount(completedCount);
vo.setUnfinishedCount(unfinishedCount);
vo.setPendingTransferCount(pendingTransferCount);
vo.setProcessingCount(processingCount);
vo.setClosedCount(closedCount);
vo.setScrapCount(scrapCount);
// 3. 总体完成率
vo.setCompletionRate(round2(completedCount * 100.0 / total));
@ -895,8 +901,9 @@ public class QmsReportControllerService {
// 4. 平均处理时长已完成工单的 completeTime - createTime
vo.setAvgProcessingTime(calculateTicketAvgProcessingTime(allTickets));
// 5. 三种状态占比
vo.setStatusDistributions(buildStatusDistributions(total, pendingTransferCount, processingCount, completedCount));
// 5. 状态占比
vo.setStatusDistributions(buildStatusDistributions(total, pendingTransferCount, processingCount,
completedCount, closedCount, scrapCount));
// 6. 完成状态分布已完成工单中各审批结果占比
vo.setCompletionStatusList(buildCompletionStatusList(allTickets, completedCount));
@ -937,10 +944,10 @@ public class QmsReportControllerService {
}
/**
* 构建三种状态占比
* 构建状态占比
*/
private List<QmsTicketReportVO.StatusDistribution> buildStatusDistributions(
int total, int pendingTransfer, int processing, int completed) {
int total, int pendingTransfer, int processing, int completed, int closed, int scrap) {
List<QmsTicketReportVO.StatusDistribution> list = new ArrayList<>();
QmsTicketReportVO.StatusDistribution d0 = new QmsTicketReportVO.StatusDistribution();
@ -961,6 +968,18 @@ public class QmsReportControllerService {
d2.setPercentage(round2(completed * 100.0 / total));
list.add(d2);
QmsTicketReportVO.StatusDistribution d3 = new QmsTicketReportVO.StatusDistribution();
d3.setStatus((short) 3);
d3.setStatusName("已关闭");
d3.setPercentage(round2(closed * 100.0 / total));
list.add(d3);
QmsTicketReportVO.StatusDistribution d4 = new QmsTicketReportVO.StatusDistribution();
d4.setStatus((short) 4);
d4.setStatusName("报废");
d4.setPercentage(round2(scrap * 100.0 / total));
list.add(d4);
return list;
}
@ -968,7 +987,7 @@ public class QmsReportControllerService {
* 构建空状态分布
*/
private List<QmsTicketReportVO.StatusDistribution> buildEmptyStatusDistributions() {
return buildStatusDistributions(1, 0, 0, 0);
return buildStatusDistributions(1, 0, 0, 0, 0, 0);
}
/**

View File

@ -38,7 +38,7 @@ public class QmsIssueTicketSearchQO extends PageQO {
private Short ticketType;
/**
* 工单状态0=待流转1=处理中2=已完成
* 工单状态0=待流转1=处理中2=已完成3=已关闭4=报废
*/
private Short status;

View File

@ -13,7 +13,7 @@ import lombok.experimental.Accessors;
public class QmsIssueTicketTabletSearchQO extends PageQO {
/**
* 工单状态0=待流转1=处理中2=已完成可选
* 工单状态0=待流转1=处理中2=已完成3=已关闭4=报废可选
*/
private Short status;

View File

@ -44,7 +44,7 @@ public class QmsPdiTaskRecordDefectSearchQO {
private Integer inspectionType;
/**
* 工单流程状态可选来自qms_issue_ticket.status0=待流转1=处理中2=已完成
* 工单流程状态可选来自qms_issue_ticket.status0=待流转1=处理中2=已完成3=已关闭4=报废
*/
private Integer status;

View File

@ -78,7 +78,7 @@ public class QmsInspectionTicketDetailVO {
private Long directorId;
/**
* 工单状态0=待流转1=处理中2=已完成
* 工单状态0=待流转1=处理中2=已完成3=已关闭4=报废
*/
private Short status;

View File

@ -84,7 +84,7 @@ public class QmsIssueTicketDetailVO {
private String remark;
/**
* 状态0=待流转1=处理中2=已完成3=已关闭
* 状态0=待流转1=处理中2=已完成3=已关闭4=报废
*/
private Short status;

View File

@ -35,4 +35,9 @@ public class QmsIssueTicketTabletPageData extends PageData<QmsIssueTicketVO> {
* 已关闭数status=3
*/
private Long closedCount;
/**
* 报废数status=4
*/
private Long scrapCount;
}

View File

@ -53,7 +53,7 @@ public class QmsIssueTicketToDoVO {
private LocalDateTime completeTime;
/**
* 状态0=待流转1=处理中2=已完成3=已关闭
* 状态0=待流转1=处理中2=已完成3=已关闭4=报废
*/
private Short status;

View File

@ -79,7 +79,7 @@ public class QmsIssueTicketVO {
private String incidentLocation;
/**
* 状态0=待流转1=处理中2=已完成3=已关闭
* 状态0=待流转1=处理中2=已完成3=已关闭4=报废
*/
private Short status;

View File

@ -118,7 +118,7 @@ public class QmsPdiTaskRecordDefectPageVO {
private Long ticketId;
/**
* 流程状态有工单时取工单状态0=待流转1=处理中2=已完成无工单时取任务状态3=未发起
* 流程状态有工单时取工单状态0=待流转1=处理中2=已完成3=已关闭4=报废无工单时取任务状态3=未发起
*/
private Short status;

View File

@ -54,7 +54,7 @@ public class QmsPdiTicketDetailVO {
private LocalDateTime createTime;
/**
* 工单状态0=待流转1=处理中2=已完成3=已关闭
* 工单状态0=待流转1=处理中2=已完成3=已关闭4=报废
*/
private Short status;

View File

@ -108,7 +108,7 @@ public class QmsPdiTicketMyDetailVO {
private String remark;
/**
* 状态0=待流转1=处理中2=已完成3=已关闭
* 状态0=待流转1=处理中2=已完成3=已关闭4=报废
*/
private Short status;

View File

@ -104,7 +104,7 @@ public class QmsPqcTicketMyDetailVO {
private String remark;
/**
* 状态0=待流转1=处理中2=已完成3=已关闭
* 状态0=待流转1=处理中2=已完成3=已关闭4=报废
*/
private Short status;

View File

@ -35,6 +35,16 @@ public class QmsTicketReportVO {
*/
private Integer processingCount;
/**
* 已关闭数status=3
*/
private Integer closedCount;
/**
* 报废数status=4
*/
private Integer scrapCount;
/**
* 总体完成率百分比
*/
@ -46,7 +56,7 @@ public class QmsTicketReportVO {
private String avgProcessingTime;
/**
* 各状态占比列表待流转处理中已完成
* 各状态占比列表待流转处理中已完成已关闭报废
*/
private List<StatusDistribution> statusDistributions;
@ -82,7 +92,7 @@ public class QmsTicketReportVO {
*/
@Data
public static class StatusDistribution {
/** 状态0=待流转,1=处理中,2=已完成 */
/** 状态0=待流转,1=处理中,2=已完成,3=已关闭,4=报废 */
private Short status;
/** 状态名称 */
private String statusName;

View File

@ -105,7 +105,7 @@ public class QmsIssueTicket implements Serializable {
private String remark;
/**
* 状态0=待流转1=处理中2=已完成3=已关闭
* 状态0=待流转1=处理中2=已完成3=已关闭4=报废
*/
private Short status;