From 2b4a234ab273972c387cf7a75c53f3dc7d5470fa Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Wed, 14 Jan 2026 18:15:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(dms):=20=E6=96=B0=E5=A2=9E=E6=95=85?= =?UTF-8?q?=E9=9A=9C=E5=AE=9E=E4=BE=8B=E6=B4=BB=E5=8A=A8=E8=B7=B3=E8=BD=AC?= =?UTF-8?q?=E7=95=8C=E9=9D=A2=E4=BC=98=E5=8C=96=E5=8A=9F=E8=83=BD,?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加新的Vue组件文件实现故障工单处理界面 - 实现工单基本信息展示功能 - 添加审批和主管确认按钮控制逻辑 - 集成工作流审批和确认处理功能 - 实现工单状态检查和权限验证 - 添加表单验证规则动态设置 - 集成外协单位信息查询功能 - 在QcInspectionResultServiceImpl中引入QcInspectionItem依赖 - 添加关联查询检测项定义的功能 - 修复主表质检结果状态同步逻辑,确保只有所有检测项都已判定时才更新主表结果 - 实现未判定检测项的检查机制,完善质检结果处理流程 --- .../impl/QcInspectionResultServiceImpl.java | 32 ++++++++++++++++--- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcInspectionResultServiceImpl.java b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcInspectionResultServiceImpl.java index a90fe1e3..86c13d7e 100644 --- a/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcInspectionResultServiceImpl.java +++ b/ruoyi-modules/hwmom-qms/src/main/java/org/dromara/qms/service/impl/QcInspectionResultServiceImpl.java @@ -8,6 +8,7 @@ import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StringUtils; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.qms.domain.QcInspectionItem; import org.dromara.qms.domain.QcInspectionMain; import org.dromara.qms.domain.QcInspectionResult; import org.dromara.qms.domain.bo.QcInspectionResultBo; @@ -77,6 +78,11 @@ public class QcInspectionResultServiceImpl implements IQcInspectionResultService Map params = bo.getParams(); MPJLambdaWrapper lqw = JoinWrappers.lambda(QcInspectionResult.class) .selectAll(QcInspectionResult.class) + + //关联查询检测项定义 + .select(QcInspectionItem::getMethod, QcInspectionItem::getItemCode, QcInspectionItem::getItemName, QcInspectionItem::getInspectionPosition) + .leftJoin(QcInspectionItem.class, QcInspectionItem::getItemId,QcInspectionResult::getItemId) + .eq(bo.getResultId() != null, QcInspectionResult::getResultId, bo.getResultId()) .eq(bo.getInspectionId() != null, QcInspectionResult::getInspectionId, bo.getInspectionId()) .eq(bo.getItemId() != null, QcInspectionResult::getItemId, bo.getItemId()) @@ -151,6 +157,7 @@ public class QcInspectionResultServiceImpl implements IQcInspectionResultService /** * 同步主表质检结果状态 * 根据子表中所有检测项的结果来确定主表的最终结果 + * 只有当所有检测项都已判定(无未判定项)时才更新主表结果 * * @param inspectionId 质检任务ID */ @@ -160,18 +167,33 @@ public class QcInspectionResultServiceImpl implements IQcInspectionResultService return; } - // 查询该质检任务下是否有不合格的检测项 - MPJLambdaWrapper wrapper = JoinWrappers.lambda(QcInspectionResult.class) + // 首先检查是否还有未判定的检测项 + MPJLambdaWrapper undeterminedWrapper = JoinWrappers.lambda(QcInspectionResult.class) .eq(QcInspectionResult::getInspectionId, inspectionId) - .eq(QcInspectionResult::getDetectResult, "1"); // 检测结果(0合格,1不合格,2未判定) + .eq(QcInspectionResult::getDetectResult, "2"); // 检测结果(0合格,1不合格,2未判定) - Long unqualifiedCount = baseMapper.selectCount(wrapper); + Long undeterminedCount = baseMapper.selectCount(undeterminedWrapper); // 更新主表状态 QcInspectionMain main = new QcInspectionMain(); main.setInspectionId(inspectionId); + + // 如果存在未判定的检测项,主表结果设为未判定 + if (undeterminedCount > 0) { + main.setResult("2"); // 质检结果(0合格/1不合格/2未判定) + inspectionMainMapper.updateById(main); + return; + } + + // 所有检测项都已判定,查询是否有不合格的检测项 + MPJLambdaWrapper unqualifiedWrapper = JoinWrappers.lambda(QcInspectionResult.class) + .eq(QcInspectionResult::getInspectionId, inspectionId) + .eq(QcInspectionResult::getDetectResult, "1"); // 检测结果(0合格,1不合格,2未判定) + + Long unqualifiedCount = baseMapper.selectCount(unqualifiedWrapper); + // 如果存在不合格项,则主表为不合格,否则为合格 - main.setResult(unqualifiedCount > 0 ? "1" : "0");//质检结果(0合格/1不合格) + main.setResult(unqualifiedCount > 0 ? "1" : "0"); // 质检结果(0合格/1不合格/2未判定) inspectionMainMapper.updateById(main); }