liu
2026-09-02 32d4cecdfada2f5aded1fde68d4b3e393cd15bb7
fix(mes): 生产退料单行"需要质检"放宽必填并兜底默认为不需要质检

生产工作台退料"添加物料"未传是否需要质检时,后端 @NotNull 校验报
"是否需要质检不能为空"。现放宽必填:
- 新增行未传时默认按 false(不需要质检)处理
- 编辑行未传时沿用原值,避免误覆盖
数据库列 rqc_check_flag 已有 DEFAULT FALSE,无需变更。

Co-Authored-By: Claude <noreply@anthropic.com>
已修改3个文件
24 ■■■■ 文件已修改
docs/return_issue_integration.md 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnissue/vo/line/MesWmReturnIssueLineSaveReqVO.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueLineServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
docs/return_issue_integration.md
@@ -103,3 +103,16 @@
- 后端已做兼容:如果前端暂时不改,旧数据(warehouseId=虚拟库)仍能通过事务流水反查原始仓库,不会报错
- 前端改完后,新的退料单 detail 应传实际仓库的库位,逻辑更清晰
- 已存在的旧退料数据不受影响(反查兜底)
## 退料单行"需要质检"字段调整(2026-09-01)
### 变更内容
退料单行(`/mes/wm-return-issue-line/create`、`/mes/wm-return-issue-line/update`)的 `rqcCheckFlag`(是否需要质检)**由必填改为选填**:
- 新增行时:前端未传该字段,后端默认按 `false`(不需要质检)处理,不再提示"是否需要质检不能为空"
- 编辑行时:前端未传该字段,后端沿用该行原值,不会误覆盖
### 前端修改点
- 生产工作台 - 退料"添加物料"弹窗中的"需要质检"字段**可以不再要求必填**,不填即默认为"不需要质检"
- 前端不传该字段即可正常提交,无需额外改动;如需保留"需要质检"选项,仍可正常传 `true`/`false`
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/wm/returnissue/vo/line/MesWmReturnIssueLineSaveReqVO.java
@@ -39,8 +39,7 @@
    @Schema(description = "批次编码", example = "BCH20260330001")
    private String batchCode;
    @Schema(description = "是否需要质检", requiredMode = Schema.RequiredMode.REQUIRED, example = "false")
    @NotNull(message = "是否需要质检不能为空")
    @Schema(description = "是否需要质检", example = "false")
    private Boolean rqcCheckFlag;
    @Schema(description = "备注", example = "备注")
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/returnissue/MesWmReturnIssueLineServiceImpl.java
@@ -52,6 +52,8 @@
        // 插入
        MesWmReturnIssueLineDO line = BeanUtils.toBean(createReqVO, MesWmReturnIssueLineDO.class);
        // 兜底:前端未传需要质检时默认不需要质检
        line.setRqcCheckFlag(Boolean.TRUE.equals(line.getRqcCheckFlag()));
        line.setQualityStatus(calculateQualityStatus(line.getRqcCheckFlag(), issue.getType())); // 质量状态自动赋值
        issueLineMapper.insert(line);
        return line.getId();
@@ -60,12 +62,16 @@
    @Override
    public void updateReturnIssueLine(MesWmReturnIssueLineSaveReqVO updateReqVO) {
        // 校验存在
        validateReturnIssueLineExists(updateReqVO.getId());
        MesWmReturnIssueLineDO line = validateReturnIssueLineExists(updateReqVO.getId());
        // 校验数据
        MesWmReturnIssueDO issue = validateReturnIssueLineSaveData(updateReqVO);
        // 更新
        MesWmReturnIssueLineDO updateObj = BeanUtils.toBean(updateReqVO, MesWmReturnIssueLineDO.class);
        // 兜底:编辑时未传需要质检字段,沿用原值,避免误覆盖
        if (updateObj.getRqcCheckFlag() == null) {
            updateObj.setRqcCheckFlag(line.getRqcCheckFlag());
        }
        updateObj.setQualityStatus(calculateQualityStatus(updateObj.getRqcCheckFlag(), issue.getType())); // 质量状态自动赋值
        issueLineMapper.updateById(updateObj);
    }