refactor(报废单): 重构报废单DTO和实体类结构 fix(报废单): 修复审批和撤销逻辑中的问题 feat(报废单): 添加工单关联和库存操作功能 style(报废单): 优化代码格式和注释
275 lines
9.9 KiB
C#
275 lines
9.9 KiB
C#
using DOAN.Admin.WebApi.Filters;
|
||
using DOAN.Model.BZFM;
|
||
using DOAN.Model.BZFM.Dto;
|
||
using DOAN.Service.BZFM.IService;
|
||
using Microsoft.AspNetCore.Mvc;
|
||
|
||
//创建时间:2026-01-22
|
||
namespace DOAN.Admin.WebApi.Controllers.BZFM
|
||
{
|
||
/// <summary>
|
||
/// 报废记录表
|
||
/// </summary>
|
||
[Verify]
|
||
[Route("mes/qualityManagement/IPQC/QcScrapRecords")]
|
||
public class QcScrapRecordsController : BaseController
|
||
{
|
||
/// <summary>
|
||
/// 报废记录表接口
|
||
/// </summary>
|
||
private readonly IQcScrapRecordsService _QcScrapRecordsService;
|
||
|
||
public QcScrapRecordsController(IQcScrapRecordsService QcScrapRecordsService)
|
||
{
|
||
_QcScrapRecordsService = QcScrapRecordsService;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 查询报废记录表列表
|
||
/// </summary>
|
||
/// <param name="parm"></param>
|
||
/// <returns></returns>
|
||
[HttpGet("list")]
|
||
[ActionPermissionFilter(Permission = "qcscraprecords:list")]
|
||
public IActionResult QueryQcScrapRecords([FromQuery] QcScrapRecordsQueryDto parm)
|
||
{
|
||
var response = _QcScrapRecordsService.GetList(parm);
|
||
return SUCCESS(response);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 查询报废记录表详情
|
||
/// </summary>
|
||
/// <param name="Id"></param>
|
||
/// <returns></returns>
|
||
[HttpGet("{Id}")]
|
||
[ActionPermissionFilter(Permission = "qcscraprecords:query")]
|
||
public IActionResult GetQcScrapRecords(long Id)
|
||
{
|
||
var response = _QcScrapRecordsService.GetInfo(Id);
|
||
|
||
var info = response.Adapt<QcScrapRecordsDto>();
|
||
return SUCCESS(info);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 添加报废记录表
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPost]
|
||
[ActionPermissionFilter(Permission = "qcscraprecords:add")]
|
||
[Log(Title = "报废记录表", BusinessType = BusinessType.INSERT)]
|
||
public IActionResult AddQcScrapRecords([FromBody] QcScrapRecordsDto parm)
|
||
{
|
||
var modal = parm.Adapt<QcScrapRecords>().ToCreate(HttpContext);
|
||
|
||
var response = _QcScrapRecordsService.AddQcScrapRecords(modal);
|
||
|
||
return SUCCESS(response);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 更新报废记录表
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPut]
|
||
[ActionPermissionFilter(Permission = "qcscraprecords:edit")]
|
||
[Log(Title = "报废记录表", BusinessType = BusinessType.UPDATE)]
|
||
public IActionResult UpdateQcScrapRecords([FromBody] QcScrapRecordsDto parm)
|
||
{
|
||
var modal = parm.Adapt<QcScrapRecords>().ToUpdate(HttpContext);
|
||
var response = _QcScrapRecordsService.UpdateQcScrapRecords(modal);
|
||
|
||
return ToResponse(response);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 删除报废记录表
|
||
/// </summary>
|
||
/// <returns></returns>
|
||
[HttpPost("delete/{ids}")]
|
||
[ActionPermissionFilter(Permission = "qcscraprecords:delete")]
|
||
[Log(Title = "报废记录表", BusinessType = BusinessType.DELETE)]
|
||
public IActionResult DeleteQcScrapRecords([FromRoute] string ids)
|
||
{
|
||
var idArr = Tools.SplitAndConvert<long>(ids);
|
||
|
||
return ToResponse(_QcScrapRecordsService.Delete(idArr));
|
||
}
|
||
|
||
/// <summary>
|
||
/// 创建报废单
|
||
/// </summary>
|
||
/// <param name="parm"></param>
|
||
/// <returns></returns>
|
||
[HttpPost("scrap-order")]
|
||
[ActionPermissionFilter(Permission = "qcscraprecords:add")]
|
||
[Log(Title = "创建报废单", BusinessType = BusinessType.INSERT)]
|
||
public IActionResult CreateScrapOrder([FromBody] QcScrapRecordsDto parm)
|
||
{
|
||
var modal = parm.Adapt<QcScrapRecords>().ToCreate(HttpContext);
|
||
var response = _QcScrapRecordsService.CreateScrapOrder(modal);
|
||
return SUCCESS(response);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 创建转用单
|
||
/// </summary>
|
||
/// <param name="parm"></param>
|
||
/// <returns></returns>
|
||
[HttpPost("transfer-order")]
|
||
[ActionPermissionFilter(Permission = "qcscraprecords:add")]
|
||
[Log(Title = "创建转用单", BusinessType = BusinessType.INSERT)]
|
||
public IActionResult CreateTransferOrder([FromBody] QcScrapRecordsDto parm)
|
||
{
|
||
if (string.IsNullOrEmpty(parm.Workorder))
|
||
{
|
||
return ToResponse(StatusCodes.Status400BadRequest, "工单号不能为空");
|
||
}
|
||
|
||
var modal = parm.Adapt<QcScrapRecords>().ToCreate(HttpContext);
|
||
var response = _QcScrapRecordsService.CreateTransferOrder(modal);
|
||
return SUCCESS(response);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 审批报废记录
|
||
/// </summary>
|
||
/// <param name="id">记录ID</param>
|
||
/// <param name="parm">审批信息</param>
|
||
/// <returns></returns>
|
||
[HttpPut("approve/{id}")]
|
||
[ActionPermissionFilter(Permission = "qcscraprecords:approve")]
|
||
[Log(Title = "审批报废记录", BusinessType = BusinessType.UPDATE)]
|
||
public IActionResult ApproveScrapRecord(
|
||
[FromRoute] long id,
|
||
[FromBody] ScrapApproveDto parm
|
||
)
|
||
{
|
||
var response = _QcScrapRecordsService.ApproveScrapRecord(
|
||
id,
|
||
parm.IsApproved,
|
||
parm.Approver
|
||
);
|
||
return ToResponse(response);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 撤销报废记录
|
||
/// </summary>
|
||
/// <param name="id">记录ID</param>
|
||
/// <returns></returns>
|
||
[HttpPut("revoke/{id}")]
|
||
[ActionPermissionFilter(Permission = "qcscraprecords:revoke")]
|
||
[Log(Title = "撤销报废记录", BusinessType = BusinessType.UPDATE)]
|
||
public IActionResult RevokeScrapRecord([FromRoute] long id)
|
||
{
|
||
var response = _QcScrapRecordsService.RevokeScrapRecord(id);
|
||
return ToResponse(response);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 根据工单号查询不良品记录
|
||
/// </summary>
|
||
/// <param name="workorder">工单号</param>
|
||
/// <returns></returns>
|
||
[HttpGet("byWorkorder")]
|
||
[ActionPermissionFilter(Permission = "qcscraprecords:list")]
|
||
public IActionResult GetQcScrapRecordsByWorkorder([FromQuery] string workorder)
|
||
{
|
||
if (string.IsNullOrEmpty(workorder))
|
||
{
|
||
return ToResponse(StatusCodes.Status400BadRequest, "工单号不能为空");
|
||
}
|
||
|
||
var response = _QcScrapRecordsService.GetQcScrapRecordsByWorkorder(workorder);
|
||
return SUCCESS(response);
|
||
}
|
||
|
||
/// <summary>
|
||
/// 根据工单号填写报废单
|
||
/// </summary>
|
||
/// <param name="parm">报废单数据</param>
|
||
/// <returns></returns>
|
||
[HttpPost("scrapOrder/byWorkorder")]
|
||
[ActionPermissionFilter(Permission = "qcscraprecords:add")]
|
||
[Log(Title = "根据工单号创建报废单", BusinessType = BusinessType.INSERT)]
|
||
public IActionResult CreateScrapOrderByWorkorder([FromBody] QcScrapRecordsDto parm)
|
||
{
|
||
try
|
||
{
|
||
if (string.IsNullOrEmpty(parm.Workorder))
|
||
{
|
||
return ToResponse(StatusCodes.Status400BadRequest, "工单号不能为空");
|
||
}
|
||
|
||
var modal = parm.Adapt<QcScrapRecords>().ToCreate(HttpContext);
|
||
var response = _QcScrapRecordsService.CreateScrapOrderByWorkorder(modal);
|
||
return SUCCESS(response);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return ToResponse(StatusCodes.Status500InternalServerError, ex.Message);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 根据工单号填写转用单
|
||
/// </summary>
|
||
/// <param name="parm">转用单数据</param>
|
||
/// <returns></returns>
|
||
[HttpPost("transferOrder/byWorkorder")]
|
||
[ActionPermissionFilter(Permission = "qcscraprecords:add")]
|
||
[Log(Title = "根据工单号创建转用单", BusinessType = BusinessType.INSERT)]
|
||
public IActionResult CreateTransferOrderByWorkorder([FromBody] QcScrapRecordsDto parm)
|
||
{
|
||
try
|
||
{
|
||
if (string.IsNullOrEmpty(parm.Workorder))
|
||
{
|
||
return ToResponse(StatusCodes.Status400BadRequest, "工单号不能为空");
|
||
}
|
||
|
||
var modal = parm.Adapt<QcScrapRecords>().ToCreate(HttpContext);
|
||
var response = _QcScrapRecordsService.CreateTransferOrderByWorkorder(modal);
|
||
return SUCCESS(response);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return ToResponse(StatusCodes.Status500InternalServerError, ex.Message);
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 根据不良品记录ID撤销不良品记录
|
||
/// </summary>
|
||
/// <param name="id">不良品记录ID</param>
|
||
/// <returns></returns>
|
||
[HttpPut("revokeById/{id}")]
|
||
[ActionPermissionFilter(Permission = "qcscraprecords:revoke")]
|
||
[Log(Title = "根据ID撤销不良品记录", BusinessType = BusinessType.UPDATE)]
|
||
public IActionResult RevokeScrapRecordById([FromRoute] long id)
|
||
{
|
||
try
|
||
{
|
||
var response = _QcScrapRecordsService.RevokeScrapRecordById(id);
|
||
if (response > 0)
|
||
{
|
||
return SUCCESS(response);
|
||
}
|
||
else
|
||
{
|
||
return ToResponse(
|
||
StatusCodes.Status400BadRequest,
|
||
"撤销不良品记录失败,可能记录已被审批或不存在"
|
||
);
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
return ToResponse(StatusCodes.Status500InternalServerError, ex.Message);
|
||
}
|
||
}
|
||
}
|
||
}
|