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] DefectApproveDto parm) { try { if (string.IsNullOrEmpty(parm.Workorder)) { return ToResponse(StatusCodes.Status400BadRequest, "工单号不能为空"); } var response = _QcScrapRecordsService.CreateScrapOrderByWorkorder(parm); if(response == "ok") { return SUCCESS(response); } else { return ToResponse(new ApiResult(StatusCodes.Status500InternalServerError, response)); } } catch (Exception ex) { return ToResponse(new ApiResult(StatusCodes.Status500InternalServerError, ex.Message)); } } /// /// 根据工单号填写转用单 /// /// 转用单数据 /// [HttpPost("transferOrder/byWorkorder")] [ActionPermissionFilter(Permission = "qcscraprecords:add")] [Log(Title = "根据工单号创建转用单", BusinessType = BusinessType.INSERT)] public IActionResult CreateTransferOrderByWorkorder([FromBody] DefectApproveDto parm) { try { if (string.IsNullOrEmpty(parm.Workorder)) { return ToResponse(StatusCodes.Status400BadRequest, "工单号不能为空"); } var response = _QcScrapRecordsService.CreateTransferOrderByWorkorder(parm); if (response == "ok") { return SUCCESS(response); } else { return ToResponse(new ApiResult(StatusCodes.Status500InternalServerError, response)); } } catch (Exception ex) { return ToResponse(new ApiResult(StatusCodes.Status500InternalServerError, ex.Message)); } } /// /// 根据工单号填写不良品单 /// /// 不良品单数据 /// [HttpPost("defectOrder/byWorkorder")] [ActionPermissionFilter(Permission = "qcscraprecords:add")] [Log(Title = "根据工单号创建不良品单", BusinessType = BusinessType.INSERT)] public IActionResult CreateDefectOrderByWorkorder([FromBody] QcScrapRecordsDto parm) { try { if (string.IsNullOrEmpty(parm.Workorder)) { return ToResponse(StatusCodes.Status400BadRequest, "工单号不能为空"); } var modal = parm.Adapt().ToCreate(HttpContext); var response = _QcScrapRecordsService.CreateDefectOrderByWorkorder(modal); return SUCCESS(response); } catch (Exception ex) { return ToResponse(new ApiResult(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(new ApiResult( StatusCodes.Status400BadRequest, "撤销不良品记录失败,可能记录已被审批或不存在" )); } } catch (Exception ex) { return ToResponse(new ApiResult(StatusCodes.Status500InternalServerError, ex.Message)); } } } }