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()); wrapper.eq(request.getStatus() != null, QmsIssueTicket::getStatus, request.getStatus());
// 可选条件关键字模糊匹配工单标题工单编号提交人姓名 // 可选条件工单标题模糊匹配
if (StrUtil.isNotBlank(request.getKey())) { wrapper.like(StrUtil.isNotBlank(request.getTicketTitle()),
wrapper.and(w -> w QmsIssueTicket::getTicketTitle, request.getTicketTitle());
.like(QmsIssueTicket::getTicketTitle, request.getKey())
.or().like(QmsIssueTicket::getTicketNo, request.getKey()) // 可选条件工单编号模糊匹配
.or().like(QmsIssueTicket::getCreateUserName, request.getKey()) wrapper.like(StrUtil.isNotBlank(request.getTicketNo()),
); QmsIssueTicket::getTicketNo, request.getTicketNo());
}
// 可选条件提交人模糊匹配
wrapper.like(StrUtil.isNotBlank(request.getCreateUserName()),
QmsIssueTicket::getCreateUserName, request.getCreateUserName());
// 排序按创建时间倒序 // 排序按创建时间倒序
wrapper.orderByDesc(QmsIssueTicket::getCreateTime); wrapper.orderByDesc(QmsIssueTicket::getCreateTime);
@ -1733,14 +1736,13 @@ public class QmsIssueTicketControllerService {
QmsInspectionTicketDetailVO vo = new QmsInspectionTicketDetailVO(); QmsInspectionTicketDetailVO vo = new QmsInspectionTicketDetailVO();
// 填充工单基本信息 // 填充工单基本信息
vo.setId(ticket.getId());
vo.setTicketTitle(ticket.getTicketTitle()); vo.setTicketTitle(ticket.getTicketTitle());
vo.setProjectNo(ticket.getProjectNo()); vo.setProjectNo(ticket.getProjectNo());
vo.setIncidentType(ticket.getIncidentType()); vo.setIncidentType(ticket.getIncidentType());
vo.setExceptionCode(ticket.getExceptionCode()); vo.setExceptionCode(ticket.getExceptionCode());
vo.setCreateUserName(ticket.getCreateUserName()); vo.setCreateUserName(ticket.getCreateUserName());
vo.setCreateTime(ticket.getCreateTime()); vo.setCreateTime(ticket.getCreateTime());
vo.setImpactQuantity(ticket.getImpactQuantity()); vo.setUnqualifiedQty(ticket.getUnqualifiedQty());
vo.setTicketType("巡检"); vo.setTicketType("巡检");
vo.setIncidentLocation(ticket.getIncidentLocation()); vo.setIncidentLocation(ticket.getIncidentLocation());
vo.setIncidentDescription(ticket.getIncidentDescription()); vo.setIncidentDescription(ticket.getIncidentDescription());
@ -1784,83 +1786,51 @@ public class QmsIssueTicketControllerService {
vo.setImages(List.of()); vo.setImages(List.of());
} }
// 查询所有处理记录 // 查询处理记录取第一条
List<QmsIssueTicketProcess> processes = issueTicketProcessService.lambdaQuery() List<QmsIssueTicketProcess> processes = issueTicketProcessService.lambdaQuery()
.eq(QmsIssueTicketProcess::getIssueTicketId, id) .eq(QmsIssueTicketProcess::getIssueTicketId, id)
.list(); .list();
if (CollectionUtil.isNotEmpty(processes)) { if (CollectionUtil.isNotEmpty(processes)) {
// 组装处理人列表按部门合并 QmsIssueTicketProcess process = processes.get(0);
Map<String, List<String>> handlersByDept = new LinkedHashMap<>();
for (QmsIssueTicketProcess process : processes) { // 填充处理人信息
if (StrUtil.isBlank(process.getHandlerUserName())) { vo.setHandlerUserName(process.getHandlerUserName());
continue;
} // 查询处理人部门
String deptName = ""; if (process.getHandlerUserId() != null) {
if (process.getHandlerUserId() != null) { UserInterior userInterior = userInteriorService.lambdaQuery()
UserInterior userInterior = userInteriorService.lambdaQuery() .eq(UserInterior::getUserId, process.getHandlerUserId())
.eq(UserInterior::getUserId, process.getHandlerUserId()) .one();
.one(); if (userInterior != null && userInterior.getDeptId() != null) {
if (userInterior != null && userInterior.getDeptId() != null) { Department department = departmentService.getById(userInterior.getDeptId());
Department department = departmentService.getById(userInterior.getDeptId()); if (department != null) {
if (department != null) { vo.setHandlerDeptName(department.getName());
deptName = 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<>(); if (StrUtil.isNotBlank(process.getRootCause())) {
for (QmsIssueTicketProcess process : processes) { vo.setRootCause(process.getRootCause());
// 领导审批状态为 null 表示处理人尚未提交不展示 }
if (process.getLeaderApprovalResult() == null || StrUtil.isBlank(process.getLeaderUserName())) {
continue; // 填充上级领导信息
} if (StrUtil.isNotBlank(process.getLeaderUserName())) {
String deptName = ""; vo.setLeaderUserName(process.getLeaderUserName());
// 查询领导部门
if (process.getLeaderUserId() != null) { if (process.getLeaderUserId() != null) {
UserInterior leaderInterior = userInteriorService.lambdaQuery() UserInterior leaderInterior = userInteriorService.lambdaQuery()
.eq(UserInterior::getUserId, process.getLeaderUserId()) .eq(UserInterior::getUserId, process.getLeaderUserId())
.one(); .one();
if (leaderInterior != null && leaderInterior.getDeptId() != null) { if (leaderInterior != null && leaderInterior.getDeptId() != null) {
Department leaderDept = departmentService.getById(leaderInterior.getDeptId()); Department leaderDepartment = departmentService.getById(leaderInterior.getDeptId());
if (leaderDept != null) { if (leaderDepartment != null) {
deptName = leaderDept.getName(); 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); vo.setPermanentMeasures(permanentMeasures);
} else { } else {
// 如果没有处理记录设置空列表 // 如果没有处理记录设置空列表
vo.setHandlers(List.of());
vo.setLeaders(List.of());
vo.setTemporaryMeasures(List.of()); vo.setTemporaryMeasures(List.of());
vo.setPermanentMeasures(List.of()); vo.setPermanentMeasures(List.of());
} }

View File

@ -2,14 +2,12 @@ package com.nflg.wms.common.pojo.qo;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/** /**
* 平板端巡检工单列表查询参数 * 平板端巡检工单列表查询参数
*/ */
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Accessors(chain = false)
public class QmsIssueTicketTabletSearchQO extends PageQO { public class QmsIssueTicketTabletSearchQO extends PageQO {
/** /**
@ -18,7 +16,17 @@ public class QmsIssueTicketTabletSearchQO extends PageQO {
private Short status; 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 { public class QmsPdiInspectionResultsSearchQO {
/** /**
* 搜索关键字可选模糊匹配机型编号订单编号机台编号任务单号 * 机型编号可选
*/ */
private String key; private String machineNo;
/**
* 订单编号可选
*/
private String orderNo;
/**
* 机台编号可选
*/
private String deviceNo;
/**
* 质检单号/任务单号可选预留字段
*/
private String taskNo;
/** /**
* 任务状态可选0=待流转1=质检中2=已完成3=待流转逾期 * 任务状态可选0=待流转1=质检中2=已完成3=待流转逾期

View File

@ -12,11 +12,6 @@ import java.util.List;
@Data @Data
public class QmsInspectionTicketDetailVO { public class QmsInspectionTicketDetailVO {
/**
* 工单ID
*/
private Long id;
/** /**
* 工单标题 * 工单标题
*/ */
@ -48,9 +43,9 @@ public class QmsInspectionTicketDetailVO {
private LocalDateTime createTime; private LocalDateTime createTime;
/** /**
* 影响数量 * 数量不合格数量
*/ */
private String impactQuantity; private Integer unqualifiedQty;
/** /**
* 工单类型巡检 * 工单类型巡检
@ -83,14 +78,14 @@ public class QmsInspectionTicketDetailVO {
private List<FileDetailVO> images; 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 rootCause;
/**
* 上级领导姓名
*/
private String leaderUserName;
/**
* 领导部门
*/
private String leaderDeptName;
/** /**
* 文件详情 * 文件详情
*/ */
@ -134,40 +139,6 @@ public class QmsInspectionTicketDetailVO {
private String url; 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(); String operator = UserUtil.getUserName();
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
// 校验 materialTypeId 是否已存在
Long existCount = lambdaQuery()
.eq(QmsInspectionItem::getMaterialTypeId, qo.getMaterialTypeId())
.count();
if (existCount > 0) {
throw new NflgException(STATE.BusinessError, "该物料类别的检测项已存在,不允许重复添加");
}
// 根据物料类别ID生成编号和名称 // 根据物料类别ID生成编号和名称
QmsQcMaterialCategory category = materialCategoryService.getById(qo.getMaterialTypeId()); QmsQcMaterialCategory category = materialCategoryService.getById(qo.getMaterialTypeId());
if (category == null) { if (category == null) {

View File

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