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
{
///
/// 报废记录表
///
[Verify]
[Route("mes/qualityManagement/IPQC/QcScrapRecords")]
public class QcScrapRecordsController : BaseController
{
///
/// 报废记录表接口
///
private readonly IQcScrapRecordsService _QcScrapRecordsService;
public QcScrapRecordsController(IQcScrapRecordsService QcScrapRecordsService)
{
_QcScrapRecordsService = QcScrapRecordsService;
}
///
/// 查询报废记录表列表
///
///
///
[HttpGet("list")]
[ActionPermissionFilter(Permission = "qcscraprecords:list")]
public IActionResult QueryQcScrapRecords([FromQuery] QcScrapRecordsQueryDto parm)
{
var response = _QcScrapRecordsService.GetList(parm);
return SUCCESS(response);
}
///
/// 查询报废记录表详情
///
///
///
[HttpGet("{Id}")]
[ActionPermissionFilter(Permission = "qcscraprecords:query")]
public IActionResult GetQcScrapRecords(long Id)
{
var response = _QcScrapRecordsService.GetInfo(Id);
var info = response.Adapt();
return SUCCESS(info);
}
///
/// 添加报废记录表
///
///
[HttpPost]
[ActionPermissionFilter(Permission = "qcscraprecords:add")]
[Log(Title = "报废记录表", BusinessType = BusinessType.INSERT)]
public IActionResult AddQcScrapRecords([FromBody] QcScrapRecordsDto parm)
{
var modal = parm.Adapt().ToCreate(HttpContext);
var response = _QcScrapRecordsService.AddQcScrapRecords(modal);
return SUCCESS(response);
}
///
/// 更新报废记录表
///
///
[HttpPut]
[ActionPermissionFilter(Permission = "qcscraprecords:edit")]
[Log(Title = "报废记录表", BusinessType = BusinessType.UPDATE)]
public IActionResult UpdateQcScrapRecords([FromBody] QcScrapRecordsDto parm)
{
var modal = parm.Adapt().ToUpdate(HttpContext);
var response = _QcScrapRecordsService.UpdateQcScrapRecords(modal);
return ToResponse(response);
}
///
/// 删除报废记录表
///
///
[HttpPost("delete/{ids}")]
[ActionPermissionFilter(Permission = "qcscraprecords:delete")]
[Log(Title = "报废记录表", BusinessType = BusinessType.DELETE)]
public IActionResult DeleteQcScrapRecords([FromRoute] string ids)
{
var idArr = Tools.SplitAndConvert(ids);
return ToResponse(_QcScrapRecordsService.Delete(idArr));
}
///
/// 创建报废单
///
///
///
[HttpPost("scrap-order")]
[ActionPermissionFilter(Permission = "qcscraprecords:add")]
[Log(Title = "创建报废单", BusinessType = BusinessType.INSERT)]
public IActionResult CreateScrapOrder([FromBody] QcScrapRecordsDto parm)
{
var modal = parm.Adapt().ToCreate(HttpContext);
var response = _QcScrapRecordsService.CreateScrapOrder(modal);
return SUCCESS(response);
}
///
/// 创建转用单
///
///
///
[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().ToCreate(HttpContext);
var response = _QcScrapRecordsService.CreateTransferOrder(modal);
return SUCCESS(response);
}
///
/// 审批报废记录
///
/// 记录ID
/// 审批信息
///
[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);
}
///
/// 撤销报废记录
///
/// 记录ID
///
[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);
}
///
/// 根据工单号查询不良品记录
///
/// 工单号
///
[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);
}
///
/// 根据工单号填写报废单
///
/// 报废单数据
///
[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().ToCreate(HttpContext);
var response = _QcScrapRecordsService.CreateScrapOrderByWorkorder(modal);
return SUCCESS(response);
}
catch (Exception ex)
{
return ToResponse(StatusCodes.Status500InternalServerError, ex.Message);
}
}
///
/// 根据工单号填写转用单
///
/// 转用单数据
///
[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().ToCreate(HttpContext);
var response = _QcScrapRecordsService.CreateTransferOrderByWorkorder(modal);
return SUCCESS(response);
}
catch (Exception ex)
{
return ToResponse(StatusCodes.Status500InternalServerError, ex.Message);
}
}
///
/// 根据不良品记录ID撤销不良品记录
///
/// 不良品记录ID
///
[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);
}
}
}
}