From d5d77c53b620bdba34cb2a636d7d8a006788d768 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E6=96=87=E6=98=8A?= <15984991+wwh2328692301@user.noreply.gitee.com> Date: Sat, 4 Jul 2026 11:23:13 +0800 Subject: [PATCH] =?UTF-8?q?refactor(qc):=20=E7=A7=BB=E9=99=A4=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E9=A1=B6=E9=83=A8=E5=AE=A1=E6=89=B9=E6=93=8D=E4=BD=9C?= =?UTF-8?q?=E6=8C=89=E9=92=AE=EF=BC=8C=E8=B0=83=E6=95=B4=E5=AE=A1=E6=89=B9?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 移除待审批状态下页面顶部的审批通过和驳回按钮 2. 重构审批相关的前端方法,删除冗余的handleApprove和handleReject 3. 优化后端审批日志逻辑,自动获取当前登录用户作为操作人 4. 新增评审单修改状态校验,仅草稿和已驳回状态可修改 5. 新增钢卷改判状态完整性校验,确保所有钢卷都已指定改判质量 6. 完善保存前的数据校验,新增产品名称非空校验和默认传审部门 --- .../impl/QcQualityReviewServiceImpl.java | 44 +++++++++++++++---- .../src/views/mes/qc/qualityReview/index.vue | 24 +--------- 2 files changed, 37 insertions(+), 31 deletions(-) diff --git a/klp-mes/src/main/java/com/klp/mes/qc/service/impl/QcQualityReviewServiceImpl.java b/klp-mes/src/main/java/com/klp/mes/qc/service/impl/QcQualityReviewServiceImpl.java index e0cb81783..bdb9fa99e 100644 --- a/klp-mes/src/main/java/com/klp/mes/qc/service/impl/QcQualityReviewServiceImpl.java +++ b/klp-mes/src/main/java/com/klp/mes/qc/service/impl/QcQualityReviewServiceImpl.java @@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.klp.common.core.domain.PageQuery; import com.klp.common.core.page.TableDataInfo; import com.klp.common.utils.StringUtils; +import com.klp.common.helper.LoginHelper; import com.klp.domain.WmsMaterialCoil; import com.klp.mapper.WmsMaterialCoilMapper; import com.klp.service.IWmsMaterialCoilService; @@ -111,11 +112,19 @@ public class QcQualityReviewServiceImpl implements IQcQualityReviewService { } /** - * 修改评审单(仅草稿状态可修改) + * 修改评审单(仅草稿或已驳回状态可修改) */ @Override @Transactional(rollbackFor = Exception.class) public Boolean updateByBo(QcQualityReviewBo bo) { + // 校验:只有待提交或已驳回状态才能修改 + if (bo.getReviewId() != null) { + QcQualityReview exist = baseMapper.selectById(bo.getReviewId()); + if (exist != null && !Long.valueOf(1L).equals(exist.getFlowStatus()) + && !Long.valueOf(4L).equals(exist.getFlowStatus())) { + throw new RuntimeException("只有待提交或已驳回状态的评审单才能修改"); + } + } QcQualityReview update = BeanUtil.toBean(bo, QcQualityReview.class); validEntityBeforeSave(update); boolean flag = baseMapper.updateById(update) > 0; @@ -193,7 +202,7 @@ public class QcQualityReviewServiceImpl implements IQcQualityReviewService { .set(QcQualityReview::getRejectReason, null)); // 记录审批日志 - addLog(reviewId, "submit", "提交送审", null); + addLog(reviewId, "submit", "提交送审"); return true; } @@ -214,6 +223,20 @@ public class QcQualityReviewServiceImpl implements IQcQualityReviewService { throw new RuntimeException("请为每个钢卷指定改判后质量状态"); } + // 校验:coilRegradeList 是否覆盖了评审单中的所有有效钢卷 + List dbCoils = coilMapper.selectList( + Wrappers.lambdaQuery() + .eq(QcQualityReviewCoil::getReviewId, bo.getReviewId()) + .eq(QcQualityReviewCoil::getDelFlag, 0)); + Set regradedIds = bo.getCoilRegradeList().stream() + .map(QcQualityReviewApproveBo.CoilRegradeBo::getDetailId) + .collect(Collectors.toSet()); + for (QcQualityReviewCoil coil : dbCoils) { + if (!regradedIds.contains(coil.getDetailId())) { + throw new RuntimeException("钢卷【" + coil.getCurrentCoilNo() + "】未指定改判后质量状态"); + } + } + // 1. 更新主表流程状态 baseMapper.update(null, Wrappers.lambdaUpdate() .eq(QcQualityReview::getReviewId, bo.getReviewId()) @@ -230,7 +253,7 @@ public class QcQualityReviewServiceImpl implements IQcQualityReviewService { } // 3. 记录审批日志 - addLog(bo.getReviewId(), "approve", bo.getLeaderOpinion(), bo.getLeaderSign()); + addLog(bo.getReviewId(), "approve", bo.getLeaderOpinion()); return true; } @@ -258,7 +281,7 @@ public class QcQualityReviewServiceImpl implements IQcQualityReviewService { .set(QcQualityReview::getRejectReason, reason)); // 记录审批日志 - addLog(reviewId, "reject", reason, null); + addLog(reviewId, "reject", reason); return true; } @@ -355,14 +378,14 @@ public class QcQualityReviewServiceImpl implements IQcQualityReviewService { } /** - * 添加审批日志 + * 添加审批日志(自动记录当前登录用户为操作人) */ - private void addLog(Long reviewId, String action, String opinion, String operator) { + private void addLog(Long reviewId, String action, String opinion) { QcQualityReviewLog log = new QcQualityReviewLog(); log.setReviewId(reviewId); log.setAction(action); log.setOpinion(opinion); - log.setOperator(operator); + log.setOperator(LoginHelper.getUsername()); log.setOperateTime(new Date()); logMapper.insert(log); } @@ -378,6 +401,11 @@ public class QcQualityReviewServiceImpl implements IQcQualityReviewService { } private void validEntityBeforeSave(QcQualityReview entity) { - // TODO 数据校验 + if (StringUtils.isBlank(entity.getProductName())) { + throw new RuntimeException("产品名称不能为空"); + } + if (StringUtils.isBlank(entity.getTransmitDept())) { + entity.setTransmitDept("品质部"); + } } } diff --git a/klp-ui/src/views/mes/qc/qualityReview/index.vue b/klp-ui/src/views/mes/qc/qualityReview/index.vue index 3b84de969..6bae8bcd8 100644 --- a/klp-ui/src/views/mes/qc/qualityReview/index.vue +++ b/klp-ui/src/views/mes/qc/qualityReview/index.vue @@ -69,11 +69,7 @@ 提交送审 - - 审批通过 - 驳回 + 执行改判 @@ -541,20 +537,6 @@ export default { }, // ===== 审批 ===== - handleApprove() { - this.approveAction = 'approve' - this.approveForm = { - reviewId: this.currentRow.reviewId, - leaderOpinion: '', - leaderSign: '' - } - // 先构建完整对象再赋值 - const map = {} - this.coilList.forEach(c => { - map[c.detailId] = c.regradeQuality || '' - }) - this.approveCoilMap = map - }, doApprove() { if (!this.approveForm.leaderOpinion) { this.$modal.msgError('请输入审批意见') @@ -581,10 +563,6 @@ export default { }) }).catch(() => {}) }, - handleReject() { - this.approveAction = 'reject' - this.rejectReason = '' - }, doReject() { if (!this.rejectReason) { this.$modal.msgError('请输入驳回原因')