标准管理项方法、巡检任务明细返回值修改
This commit is contained in:
parent
3adf1d11cd
commit
50afad64d1
|
|
@ -764,17 +764,14 @@ public class QmsIssueTicketControllerService {
|
||||||
// 可选条件:工单状态
|
// 可选条件:工单状态
|
||||||
wrapper.eq(request.getStatus() != null, QmsIssueTicket::getStatus, request.getStatus());
|
wrapper.eq(request.getStatus() != null, QmsIssueTicket::getStatus, request.getStatus());
|
||||||
|
|
||||||
// 可选条件:工单标题(模糊匹配)
|
// 可选条件:关键字模糊匹配(工单标题、工单编号、提交人姓名)
|
||||||
wrapper.like(StrUtil.isNotBlank(request.getTicketTitle()),
|
if (StrUtil.isNotBlank(request.getKey())) {
|
||||||
QmsIssueTicket::getTicketTitle, request.getTicketTitle());
|
wrapper.and(w -> w
|
||||||
|
.like(QmsIssueTicket::getTicketTitle, request.getKey())
|
||||||
// 可选条件:工单编号(模糊匹配)
|
.or().like(QmsIssueTicket::getTicketNo, request.getKey())
|
||||||
wrapper.like(StrUtil.isNotBlank(request.getTicketNo()),
|
.or().like(QmsIssueTicket::getCreateUserName, request.getKey())
|
||||||
QmsIssueTicket::getTicketNo, request.getTicketNo());
|
);
|
||||||
|
}
|
||||||
// 可选条件:提交人(模糊匹配)
|
|
||||||
wrapper.like(StrUtil.isNotBlank(request.getCreateUserName()),
|
|
||||||
QmsIssueTicket::getCreateUserName, request.getCreateUserName());
|
|
||||||
|
|
||||||
// 排序:按创建时间倒序
|
// 排序:按创建时间倒序
|
||||||
wrapper.orderByDesc(QmsIssueTicket::getCreateTime);
|
wrapper.orderByDesc(QmsIssueTicket::getCreateTime);
|
||||||
|
|
@ -1736,13 +1733,14 @@ 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.setUnqualifiedQty(ticket.getUnqualifiedQty());
|
vo.setImpactQuantity(ticket.getImpactQuantity());
|
||||||
vo.setTicketType("巡检");
|
vo.setTicketType("巡检");
|
||||||
vo.setIncidentLocation(ticket.getIncidentLocation());
|
vo.setIncidentLocation(ticket.getIncidentLocation());
|
||||||
vo.setIncidentDescription(ticket.getIncidentDescription());
|
vo.setIncidentDescription(ticket.getIncidentDescription());
|
||||||
|
|
@ -1786,51 +1784,83 @@ 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) {
|
||||||
vo.setHandlerUserName(process.getHandlerUserName());
|
if (StrUtil.isBlank(process.getHandlerUserName())) {
|
||||||
|
continue;
|
||||||
// 查询处理人部门
|
}
|
||||||
if (process.getHandlerUserId() != null) {
|
String deptName = "";
|
||||||
UserInterior userInterior = userInteriorService.lambdaQuery()
|
if (process.getHandlerUserId() != null) {
|
||||||
.eq(UserInterior::getUserId, process.getHandlerUserId())
|
UserInterior userInterior = userInteriorService.lambdaQuery()
|
||||||
.one();
|
.eq(UserInterior::getUserId, process.getHandlerUserId())
|
||||||
if (userInterior != null && userInterior.getDeptId() != null) {
|
.one();
|
||||||
Department department = departmentService.getById(userInterior.getDeptId());
|
if (userInterior != null && userInterior.getDeptId() != null) {
|
||||||
if (department != null) {
|
Department department = departmentService.getById(userInterior.getDeptId());
|
||||||
vo.setHandlerDeptName(department.getName());
|
if (department != null) {
|
||||||
|
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()) {
|
||||||
if (StrUtil.isNotBlank(process.getRootCause())) {
|
QmsInspectionTicketDetailVO.HandlerVO handlerVO = new QmsInspectionTicketDetailVO.HandlerVO();
|
||||||
vo.setRootCause(process.getRootCause());
|
handlerVO.setDeptName(entry.getKey());
|
||||||
|
handlerVO.setUserName(String.join(",", entry.getValue()));
|
||||||
|
handlers.add(handlerVO);
|
||||||
}
|
}
|
||||||
|
vo.setHandlers(handlers);
|
||||||
|
|
||||||
// 填充上级领导信息
|
// 组装领导列表(仅处理人已提交、领导已审批时才展示)
|
||||||
if (StrUtil.isNotBlank(process.getLeaderUserName())) {
|
Map<String, List<String>> leadersByDept = new LinkedHashMap<>();
|
||||||
vo.setLeaderUserName(process.getLeaderUserName());
|
for (QmsIssueTicketProcess process : processes) {
|
||||||
|
// 领导审批状态为 null 表示处理人尚未提交,不展示
|
||||||
// 查询领导部门
|
if (process.getLeaderApprovalResult() == null || StrUtil.isBlank(process.getLeaderUserName())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
String deptName = "";
|
||||||
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 leaderDepartment = departmentService.getById(leaderInterior.getDeptId());
|
Department leaderDept = departmentService.getById(leaderInterior.getDeptId());
|
||||||
if (leaderDepartment != null) {
|
if (leaderDept != null) {
|
||||||
vo.setLeaderDeptName(leaderDepartment.getName());
|
deptName = leaderDept.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());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查询纠正措施
|
// 查询纠正措施
|
||||||
|
|
@ -1869,6 +1899,8 @@ 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());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,17 +16,7 @@ public class QmsIssueTicketTabletSearchQO extends PageQO {
|
||||||
private Short status;
|
private Short status;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工单标题(模糊匹配,可选)
|
* 搜索关键字(可选),模糊匹配工单标题、工单编号、提交人姓名
|
||||||
*/
|
*/
|
||||||
private String ticketTitle;
|
private String key;
|
||||||
|
|
||||||
/**
|
|
||||||
* 工单编号(模糊匹配,可选)
|
|
||||||
*/
|
|
||||||
private String ticketNo;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 提交人姓名(模糊匹配,可选)
|
|
||||||
*/
|
|
||||||
private String createUserName;
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,24 +9,9 @@ import lombok.Data;
|
||||||
public class QmsPdiInspectionResultsSearchQO {
|
public class QmsPdiInspectionResultsSearchQO {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 机型编号(可选)
|
* 搜索关键字(可选),模糊匹配机型编号、订单编号、机台编号、任务单号
|
||||||
*/
|
*/
|
||||||
private String machineNo;
|
private String key;
|
||||||
|
|
||||||
/**
|
|
||||||
* 订单编号(可选)
|
|
||||||
*/
|
|
||||||
private String orderNo;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 机台编号(可选)
|
|
||||||
*/
|
|
||||||
private String deviceNo;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 质检单号/任务单号(可选,预留字段)
|
|
||||||
*/
|
|
||||||
private String taskNo;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 任务状态(可选):0=待流转,1=质检中,2=已完成,3=待流转(逾期)
|
* 任务状态(可选):0=待流转,1=质检中,2=已完成,3=待流转(逾期)
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,11 @@ import java.util.List;
|
||||||
@Data
|
@Data
|
||||||
public class QmsInspectionTicketDetailVO {
|
public class QmsInspectionTicketDetailVO {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工单ID
|
||||||
|
*/
|
||||||
|
private Long id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工单标题
|
* 工单标题
|
||||||
*/
|
*/
|
||||||
|
|
@ -43,9 +48,9 @@ public class QmsInspectionTicketDetailVO {
|
||||||
private LocalDateTime createTime;
|
private LocalDateTime createTime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数量(不合格数量)
|
* 影响数量
|
||||||
*/
|
*/
|
||||||
private Integer unqualifiedQty;
|
private String impactQuantity;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 工单类型(巡检)
|
* 工单类型(巡检)
|
||||||
|
|
@ -78,14 +83,14 @@ public class QmsInspectionTicketDetailVO {
|
||||||
private List<FileDetailVO> images;
|
private List<FileDetailVO> images;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理人姓名
|
* 处理人列表(按部门合并)
|
||||||
*/
|
*/
|
||||||
private String handlerUserName;
|
private List<HandlerVO> handlers;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理人部门
|
* 部门领导列表(处理人提交后才展示)
|
||||||
*/
|
*/
|
||||||
private String handlerDeptName;
|
private List<LeaderVO> leaders;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 临时纠正措施列表
|
* 临时纠正措施列表
|
||||||
|
|
@ -102,16 +107,6 @@ public class QmsInspectionTicketDetailVO {
|
||||||
*/
|
*/
|
||||||
private String rootCause;
|
private String rootCause;
|
||||||
|
|
||||||
/**
|
|
||||||
* 上级领导姓名
|
|
||||||
*/
|
|
||||||
private String leaderUserName;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 领导部门
|
|
||||||
*/
|
|
||||||
private String leaderDeptName;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件详情
|
* 文件详情
|
||||||
*/
|
*/
|
||||||
|
|
@ -139,6 +134,40 @@ 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;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 纠正措施
|
* 纠正措施
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,14 @@ 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) {
|
||||||
|
|
|
||||||
|
|
@ -22,17 +22,14 @@
|
||||||
<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 != ''">
|
<!-- 关键字模糊匹配:机型编号、订单编号、机台编号、任务单号 -->
|
||||||
AND r.machine_no = #{request.machineNo}
|
<if test="request.key != null and request.key != ''">
|
||||||
</if>
|
AND (
|
||||||
<if test="request.orderNo != null and request.orderNo != ''">
|
r.machine_no ILIKE CONCAT('%', #{request.key}, '%')
|
||||||
AND t.order_no = #{request.orderNo}
|
OR t.order_no ILIKE CONCAT('%', #{request.key}, '%')
|
||||||
</if>
|
OR t.device_no ILIKE CONCAT('%', #{request.key}, '%')
|
||||||
<if test="request.deviceNo != null and request.deviceNo != ''">
|
OR t.task_no ILIKE CONCAT('%', #{request.key}, '%')
|
||||||
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">
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue