工单状态新增字段修改

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

View File

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

View File

@ -867,6 +867,8 @@ public class QmsReportControllerService {
vo.setUnfinishedCount(0); vo.setUnfinishedCount(0);
vo.setPendingTransferCount(0); vo.setPendingTransferCount(0);
vo.setProcessingCount(0); vo.setProcessingCount(0);
vo.setClosedCount(0);
vo.setScrapCount(0);
vo.setCompletionRate(0.0); vo.setCompletionRate(0.0);
vo.setAvgProcessingTime("0天0小时"); vo.setAvgProcessingTime("0天0小时");
vo.setStatusDistributions(buildEmptyStatusDistributions()); 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 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 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 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; int unfinishedCount = total - completedCount;
vo.setCompletedCount(completedCount); vo.setCompletedCount(completedCount);
vo.setUnfinishedCount(unfinishedCount); vo.setUnfinishedCount(unfinishedCount);
vo.setPendingTransferCount(pendingTransferCount); vo.setPendingTransferCount(pendingTransferCount);
vo.setProcessingCount(processingCount); vo.setProcessingCount(processingCount);
vo.setClosedCount(closedCount);
vo.setScrapCount(scrapCount);
// 3. 总体完成率 // 3. 总体完成率
vo.setCompletionRate(round2(completedCount * 100.0 / total)); vo.setCompletionRate(round2(completedCount * 100.0 / total));
@ -895,8 +901,9 @@ public class QmsReportControllerService {
// 4. 平均处理时长已完成工单的 completeTime - createTime // 4. 平均处理时长已完成工单的 completeTime - createTime
vo.setAvgProcessingTime(calculateTicketAvgProcessingTime(allTickets)); vo.setAvgProcessingTime(calculateTicketAvgProcessingTime(allTickets));
// 5. 三种状态占比 // 5. 状态占比
vo.setStatusDistributions(buildStatusDistributions(total, pendingTransferCount, processingCount, completedCount)); vo.setStatusDistributions(buildStatusDistributions(total, pendingTransferCount, processingCount,
completedCount, closedCount, scrapCount));
// 6. 完成状态分布已完成工单中各审批结果占比 // 6. 完成状态分布已完成工单中各审批结果占比
vo.setCompletionStatusList(buildCompletionStatusList(allTickets, completedCount)); vo.setCompletionStatusList(buildCompletionStatusList(allTickets, completedCount));
@ -937,10 +944,10 @@ public class QmsReportControllerService {
} }
/** /**
* 构建三种状态占比 * 构建状态占比
*/ */
private List<QmsTicketReportVO.StatusDistribution> buildStatusDistributions( 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<>(); List<QmsTicketReportVO.StatusDistribution> list = new ArrayList<>();
QmsTicketReportVO.StatusDistribution d0 = new QmsTicketReportVO.StatusDistribution(); QmsTicketReportVO.StatusDistribution d0 = new QmsTicketReportVO.StatusDistribution();
@ -961,6 +968,18 @@ public class QmsReportControllerService {
d2.setPercentage(round2(completed * 100.0 / total)); d2.setPercentage(round2(completed * 100.0 / total));
list.add(d2); 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; return list;
} }
@ -968,7 +987,7 @@ public class QmsReportControllerService {
* 构建空状态分布 * 构建空状态分布
*/ */
private List<QmsTicketReportVO.StatusDistribution> buildEmptyStatusDistributions() { 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; private Short ticketType;
/** /**
* 工单状态0=待流转1=处理中2=已完成 * 工单状态0=待流转1=处理中2=已完成3=已关闭4=报废
*/ */
private Short status; private Short status;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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