Compare commits

..

No commits in common. "8d45b6beb5168e0921a22a1a71a718db823f7712" and "c12a548bd16ac618af32e64878627f4d9cf0a321" have entirely different histories.

6 changed files with 96 additions and 139 deletions

View File

@ -764,14 +764,17 @@ public class QmsIssueTicketControllerService {
// 可选条件工单状态
wrapper.eq(request.getStatus() != null, QmsIssueTicket::getStatus, request.getStatus());
// 可选条件关键字模糊匹配工单标题工单编号提交人姓名
if (StrUtil.isNotBlank(request.getKey())) {
wrapper.and(w -> w
.like(QmsIssueTicket::getTicketTitle, request.getKey())
.or().like(QmsIssueTicket::getTicketNo, request.getKey())
.or().like(QmsIssueTicket::getCreateUserName, request.getKey())
);
}
// 可选条件工单标题模糊匹配
wrapper.like(StrUtil.isNotBlank(request.getTicketTitle()),
QmsIssueTicket::getTicketTitle, request.getTicketTitle());
// 可选条件工单编号模糊匹配
wrapper.like(StrUtil.isNotBlank(request.getTicketNo()),
QmsIssueTicket::getTicketNo, request.getTicketNo());
// 可选条件提交人模糊匹配
wrapper.like(StrUtil.isNotBlank(request.getCreateUserName()),
QmsIssueTicket::getCreateUserName, request.getCreateUserName());
// 排序按创建时间倒序
wrapper.orderByDesc(QmsIssueTicket::getCreateTime);
@ -1733,14 +1736,13 @@ public class QmsIssueTicketControllerService {
QmsInspectionTicketDetailVO vo = new QmsInspectionTicketDetailVO();
// 填充工单基本信息
vo.setId(ticket.getId());
vo.setTicketTitle(ticket.getTicketTitle());
vo.setProjectNo(ticket.getProjectNo());
vo.setIncidentType(ticket.getIncidentType());
vo.setExceptionCode(ticket.getExceptionCode());
vo.setCreateUserName(ticket.getCreateUserName());
vo.setCreateTime(ticket.getCreateTime());
vo.setImpactQuantity(ticket.getImpactQuantity());
vo.setUnqualifiedQty(ticket.getUnqualifiedQty());
vo.setTicketType("巡检");
vo.setIncidentLocation(ticket.getIncidentLocation());
vo.setIncidentDescription(ticket.getIncidentDescription());
@ -1784,83 +1786,51 @@ public class QmsIssueTicketControllerService {
vo.setImages(List.of());
}
// 查询所有处理记录
// 查询处理记录取第一条
List<QmsIssueTicketProcess> processes = issueTicketProcessService.lambdaQuery()
.eq(QmsIssueTicketProcess::getIssueTicketId, id)
.list();
if (CollectionUtil.isNotEmpty(processes)) {
// 组装处理人列表按部门合并
Map<String, List<String>> handlersByDept = new LinkedHashMap<>();
for (QmsIssueTicketProcess process : processes) {
if (StrUtil.isBlank(process.getHandlerUserName())) {
continue;
}
String deptName = "";
if (process.getHandlerUserId() != null) {
UserInterior userInterior = userInteriorService.lambdaQuery()
.eq(UserInterior::getUserId, process.getHandlerUserId())
.one();
if (userInterior != null && userInterior.getDeptId() != null) {
Department department = departmentService.getById(userInterior.getDeptId());
if (department != null) {
deptName = department.getName();
}
QmsIssueTicketProcess process = processes.get(0);
// 填充处理人信息
vo.setHandlerUserName(process.getHandlerUserName());
// 查询处理人部门
if (process.getHandlerUserId() != null) {
UserInterior userInterior = userInteriorService.lambdaQuery()
.eq(UserInterior::getUserId, process.getHandlerUserId())
.one();
if (userInterior != null && userInterior.getDeptId() != null) {
Department department = departmentService.getById(userInterior.getDeptId());
if (department != null) {
vo.setHandlerDeptName(department.getName());
}
}
handlersByDept.computeIfAbsent(deptName, k -> new ArrayList<>()).add(process.getHandlerUserName());
}
List<QmsInspectionTicketDetailVO.HandlerVO> handlers = new ArrayList<>();
for (Map.Entry<String, List<String>> entry : handlersByDept.entrySet()) {
QmsInspectionTicketDetailVO.HandlerVO handlerVO = new QmsInspectionTicketDetailVO.HandlerVO();
handlerVO.setDeptName(entry.getKey());
handlerVO.setUserName(String.join(",", entry.getValue()));
handlers.add(handlerVO);
}
vo.setHandlers(handlers);
// 组装领导列表仅处理人已提交领导已审批时才展示
Map<String, List<String>> leadersByDept = new LinkedHashMap<>();
for (QmsIssueTicketProcess process : processes) {
// 领导审批状态为 null 表示处理人尚未提交不展示
if (process.getLeaderApprovalResult() == null || StrUtil.isBlank(process.getLeaderUserName())) {
continue;
}
String deptName = "";
// 填充根本原因
if (StrUtil.isNotBlank(process.getRootCause())) {
vo.setRootCause(process.getRootCause());
}
// 填充上级领导信息
if (StrUtil.isNotBlank(process.getLeaderUserName())) {
vo.setLeaderUserName(process.getLeaderUserName());
// 查询领导部门
if (process.getLeaderUserId() != null) {
UserInterior leaderInterior = userInteriorService.lambdaQuery()
.eq(UserInterior::getUserId, process.getLeaderUserId())
.one();
if (leaderInterior != null && leaderInterior.getDeptId() != null) {
Department leaderDept = departmentService.getById(leaderInterior.getDeptId());
if (leaderDept != null) {
deptName = leaderDept.getName();
Department leaderDepartment = departmentService.getById(leaderInterior.getDeptId());
if (leaderDepartment != null) {
vo.setLeaderDeptName(leaderDepartment.getName());
}
}
}
// 拼接领导姓名与审批意见
String approvalText = process.getLeaderApprovalResult() == 1 ? "同意" : "驳回";
String leaderDisplay;
if (StrUtil.isNotBlank(process.getLeaderApprovalOpinion())) {
leaderDisplay = process.getLeaderUserName() + "" + approvalText + "" + process.getLeaderApprovalOpinion() + "";
} else {
leaderDisplay = process.getLeaderUserName() + "" + approvalText + "";
}
leadersByDept.computeIfAbsent(deptName, k -> new ArrayList<>()).add(leaderDisplay);
}
List<QmsInspectionTicketDetailVO.LeaderVO> leaders = new ArrayList<>();
for (Map.Entry<String, List<String>> entry : leadersByDept.entrySet()) {
QmsInspectionTicketDetailVO.LeaderVO leaderVO = new QmsInspectionTicketDetailVO.LeaderVO();
leaderVO.setDeptName(entry.getKey());
leaderVO.setUserName(String.join(",", entry.getValue()));
leaders.add(leaderVO);
}
vo.setLeaders(leaders);
// 填充根本原因取第一条处理记录
QmsIssueTicketProcess firstProcess = processes.get(0);
if (StrUtil.isNotBlank(firstProcess.getRootCause())) {
vo.setRootCause(firstProcess.getRootCause());
}
// 查询纠正措施
@ -1899,8 +1869,6 @@ public class QmsIssueTicketControllerService {
vo.setPermanentMeasures(permanentMeasures);
} else {
// 如果没有处理记录设置空列表
vo.setHandlers(List.of());
vo.setLeaders(List.of());
vo.setTemporaryMeasures(List.of());
vo.setPermanentMeasures(List.of());
}

View File

@ -2,14 +2,12 @@ package com.nflg.wms.common.pojo.qo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 平板端巡检工单列表查询参数
*/
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = false)
public class QmsIssueTicketTabletSearchQO extends PageQO {
/**
@ -18,7 +16,17 @@ public class QmsIssueTicketTabletSearchQO extends PageQO {
private Short status;
/**
* 搜索关键字可选模糊匹配工单标题工单编号提交人姓名
* 工单标题模糊匹配可选
*/
private String key;
private String ticketTitle;
/**
* 工单编号模糊匹配可选
*/
private String ticketNo;
/**
* 提交人姓名模糊匹配可选
*/
private String createUserName;
}

View File

@ -9,9 +9,24 @@ import lombok.Data;
public class QmsPdiInspectionResultsSearchQO {
/**
* 搜索关键字可选模糊匹配机型编号订单编号机台编号任务单号
* 机型编号可选
*/
private String key;
private String machineNo;
/**
* 订单编号可选
*/
private String orderNo;
/**
* 机台编号可选
*/
private String deviceNo;
/**
* 质检单号/任务单号可选预留字段
*/
private String taskNo;
/**
* 任务状态可选0=待流转1=质检中2=已完成3=待流转逾期

View File

@ -12,11 +12,6 @@ import java.util.List;
@Data
public class QmsInspectionTicketDetailVO {
/**
* 工单ID
*/
private Long id;
/**
* 工单标题
*/
@ -48,9 +43,9 @@ public class QmsInspectionTicketDetailVO {
private LocalDateTime createTime;
/**
* 影响数量
* 数量不合格数量
*/
private String impactQuantity;
private Integer unqualifiedQty;
/**
* 工单类型巡检
@ -83,14 +78,14 @@ public class QmsInspectionTicketDetailVO {
private List<FileDetailVO> images;
/**
* 处理人列表按部门合并
* 处理人姓名
*/
private List<HandlerVO> handlers;
private String handlerUserName;
/**
* 部门领导列表处理人提交后才展示
* 处理人部门
*/
private List<LeaderVO> leaders;
private String handlerDeptName;
/**
* 临时纠正措施列表
@ -107,6 +102,16 @@ public class QmsInspectionTicketDetailVO {
*/
private String rootCause;
/**
* 上级领导姓名
*/
private String leaderUserName;
/**
* 领导部门
*/
private String leaderDeptName;
/**
* 文件详情
*/
@ -134,40 +139,6 @@ public class QmsInspectionTicketDetailVO {
private String url;
}
/**
* 处理人信息按部门合并
*/
@Data
public static class HandlerVO {
/**
* 部门名称
*/
private String deptName;
/**
* 处理人姓名同部门多人用逗号隔开
*/
private String userName;
}
/**
* 部门领导信息
*/
@Data
public static class LeaderVO {
/**
* 部门名称
*/
private String deptName;
/**
* 领导姓名拼接审批意见
*/
private String userName;
}
/**
* 纠正措施
*/

View File

@ -58,14 +58,6 @@ public class QmsInspectionItemServiceImpl extends ServiceImpl<QmsInspectionItemM
String operator = UserUtil.getUserName();
LocalDateTime now = LocalDateTime.now();
// 校验 materialTypeId 是否已存在
Long existCount = lambdaQuery()
.eq(QmsInspectionItem::getMaterialTypeId, qo.getMaterialTypeId())
.count();
if (existCount > 0) {
throw new NflgException(STATE.BusinessError, "该物料类别的检测项已存在,不允许重复添加");
}
// 根据物料类别ID生成编号和名称
QmsQcMaterialCategory category = materialCategoryService.getById(qo.getMaterialTypeId());
if (category == null) {

View File

@ -22,14 +22,17 @@
<if test="request.userId != null">
AND (t.assistant_id = #{request.userId} OR r.inspector_id = #{request.userId})
</if>
<!-- 关键字模糊匹配:机型编号、订单编号、机台编号、任务单号 -->
<if test="request.key != null and request.key != ''">
AND (
r.machine_no ILIKE CONCAT('%', #{request.key}, '%')
OR t.order_no ILIKE CONCAT('%', #{request.key}, '%')
OR t.device_no ILIKE CONCAT('%', #{request.key}, '%')
OR t.task_no ILIKE CONCAT('%', #{request.key}, '%')
)
<if test="request.machineNo != null and request.machineNo != ''">
AND r.machine_no = #{request.machineNo}
</if>
<if test="request.orderNo != null and request.orderNo != ''">
AND t.order_no = #{request.orderNo}
</if>
<if test="request.deviceNo != null and request.deviceNo != ''">
AND t.device_no = #{request.deviceNo}
</if>
<if test="request.taskNo != null and request.taskNo != ''">
AND t.task_no = #{request.taskNo}
</if>
<!-- 任务状态筛选 -->
<if test="request.inspectionEnable != null">