fix(报废审批): 修复审批流程中的异常处理和物料校验问题

- 在QcScrapRecordsService中重构审批逻辑,增加事务管理和异常回滚
- 添加成品物料信息校验,使用物料供应商代码替代记录中的供应商代码
- 完善工单不存在时的错误处理
- 在控制器中统一异常处理,返回更友好的错误信息
This commit is contained in:
2026-03-11 19:13:18 +08:00
parent 82c96304b9
commit d8ad42253d
2 changed files with 79 additions and 32 deletions

View File

@@ -1,3 +1,4 @@
using Azure;
using DOAN.Admin.WebApi.Filters;
using DOAN.Model.BZFM;
using DOAN.Model.BZFM.Dto;
@@ -146,12 +147,26 @@ namespace DOAN.Admin.WebApi.Controllers.BZFM
[FromBody] ScrapApproveDto parm
)
{
var response = _QcScrapRecordsService.ApproveScrapRecord(
id,
parm.IsApproved,
parm.Approver
);
return ToResponse(response);
try
{
var response = _QcScrapRecordsService.ApproveScrapRecord(
id,
parm.IsApproved,
parm.Approver
);
if(response > 0)
{
return ToResponse(new ApiResult(200, response));
}
else
{
return ToResponse(new ApiResult(500, "审批记录失败"));
}
}
catch (Exception ex)
{
return ToResponse(new ApiResult(500, ex.Message));
}
}
/// <summary>
@@ -203,19 +218,22 @@ namespace DOAN.Admin.WebApi.Controllers.BZFM
return ToResponse(StatusCodes.Status400BadRequest, "工单号不能为空");
}
var response = _QcScrapRecordsService.CreateScrapOrderByWorkorder(parm);
if(response == "ok")
if (response == "ok")
{
return SUCCESS(response);
}
else
{
return ToResponse(new ApiResult(StatusCodes.Status500InternalServerError, response));
return ToResponse(
new ApiResult(StatusCodes.Status500InternalServerError, response)
);
}
}
catch (Exception ex)
{
return ToResponse(new ApiResult(StatusCodes.Status500InternalServerError, ex.Message));
return ToResponse(
new ApiResult(StatusCodes.Status500InternalServerError, ex.Message)
);
}
}
@@ -242,12 +260,16 @@ namespace DOAN.Admin.WebApi.Controllers.BZFM
}
else
{
return ToResponse(new ApiResult(StatusCodes.Status500InternalServerError, response));
return ToResponse(
new ApiResult(StatusCodes.Status500InternalServerError, response)
);
}
}
catch (Exception ex)
{
return ToResponse(new ApiResult(StatusCodes.Status500InternalServerError, ex.Message));
return ToResponse(
new ApiResult(StatusCodes.Status500InternalServerError, ex.Message)
);
}
}
@@ -274,7 +296,9 @@ namespace DOAN.Admin.WebApi.Controllers.BZFM
}
catch (Exception ex)
{
return ToResponse(new ApiResult(StatusCodes.Status500InternalServerError, ex.Message));
return ToResponse(
new ApiResult(StatusCodes.Status500InternalServerError, ex.Message)
);
}
}
@@ -297,15 +321,19 @@ namespace DOAN.Admin.WebApi.Controllers.BZFM
}
else
{
return ToResponse(new ApiResult(
StatusCodes.Status400BadRequest,
"撤销不良品记录失败,可能记录已被审批或不存在"
));
return ToResponse(
new ApiResult(
StatusCodes.Status400BadRequest,
"撤销不良品记录失败,可能记录已被审批或不存在"
)
);
}
}
catch (Exception ex)
{
return ToResponse(new ApiResult(StatusCodes.Status500InternalServerError, ex.Message));
return ToResponse(
new ApiResult(StatusCodes.Status500InternalServerError, ex.Message)
);
}
}
}