From 6bc3343414ac35e7bdf789d7df0c73722905b113 Mon Sep 17 00:00:00 2001 From: git_rabbit Date: Mon, 9 Feb 2026 17:46:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(IPQC):=20=E6=B7=BB=E5=8A=A0=E6=A0=B9?= =?UTF-8?q?=E6=8D=AE=E5=B7=A5=E5=8D=95=E5=8F=B7=E5=A4=84=E7=90=86=E4=B8=8D?= =?UTF-8?q?=E8=89=AF=E5=93=81=E8=AE=B0=E5=BD=95=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增以下功能: 1. 根据工单号查询不良品记录 2. 根据工单号创建报废单和转用单 3. 根据ID撤销不良品记录 --- .../Quality/IPQC/QcScrapRecordsController.cs | 72 +++++++++++++++++++ .../IPQC/IService/IQcScrapRecordsService.cs | 28 ++++++++ .../MES/Quality/IPQC/QcScrapRecordsService.cs | 60 ++++++++++++++++ 3 files changed, 160 insertions(+) diff --git a/DOAN.Admin.WebApi/Controllers/MES/Quality/IPQC/QcScrapRecordsController.cs b/DOAN.Admin.WebApi/Controllers/MES/Quality/IPQC/QcScrapRecordsController.cs index 1005290..04d48fd 100644 --- a/DOAN.Admin.WebApi/Controllers/MES/Quality/IPQC/QcScrapRecordsController.cs +++ b/DOAN.Admin.WebApi/Controllers/MES/Quality/IPQC/QcScrapRecordsController.cs @@ -161,5 +161,77 @@ namespace DOAN.Admin.WebApi.Controllers.BZFM 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) + { + if (string.IsNullOrEmpty(parm.Workorder)) + { + return ToResponse(StatusCodes.Status400BadRequest, "工单号不能为空"); + } + + var modal = parm.Adapt().ToCreate(HttpContext); + var response = _QcScrapRecordsService.CreateScrapOrderByWorkorder(modal); + return SUCCESS(response); + } + + /// + /// 根据工单号填写转用单 + /// + /// 转用单数据 + /// + [HttpPost("transferOrder/byWorkorder")] + [ActionPermissionFilter(Permission = "qcscraprecords:add")] + [Log(Title = "根据工单号创建转用单", BusinessType = BusinessType.INSERT)] + public IActionResult CreateTransferOrderByWorkorder([FromBody] QcScrapRecordsDto parm) + { + if (string.IsNullOrEmpty(parm.Workorder)) + { + return ToResponse(StatusCodes.Status400BadRequest, "工单号不能为空"); + } + + var modal = parm.Adapt().ToCreate(HttpContext); + var response = _QcScrapRecordsService.CreateTransferOrderByWorkorder(modal); + return SUCCESS(response); + } + + /// + /// 根据不良品记录ID撤销不良品记录 + /// + /// 不良品记录ID + /// + [HttpPut("revokeById/{id}")] + [ActionPermissionFilter(Permission = "qcscraprecords:revoke")] + [Log(Title = "根据ID撤销不良品记录", BusinessType = BusinessType.UPDATE)] + public IActionResult RevokeScrapRecordById([FromRoute] long id) + { + var response = _QcScrapRecordsService.RevokeScrapRecordById(id); + return ToResponse(response); + } } } \ No newline at end of file diff --git a/DOAN.Service/MES/Quality/IPQC/IService/IQcScrapRecordsService.cs b/DOAN.Service/MES/Quality/IPQC/IService/IQcScrapRecordsService.cs index 9136fa4..358fffc 100644 --- a/DOAN.Service/MES/Quality/IPQC/IService/IQcScrapRecordsService.cs +++ b/DOAN.Service/MES/Quality/IPQC/IService/IQcScrapRecordsService.cs @@ -46,5 +46,33 @@ namespace DOAN.Service.BZFM.IService /// int RevokeScrapRecord(long id); + /// + /// 根据工单号查询不良品记录 + /// + /// 工单号 + /// + PagedInfo GetQcScrapRecordsByWorkorder(string workorder); + + /// + /// 根据工单号填写报废单 + /// + /// 报废单数据 + /// + QcScrapRecords CreateScrapOrderByWorkorder(QcScrapRecords parm); + + /// + /// 根据工单号填写转用单 + /// + /// 转用单数据 + /// + QcScrapRecords CreateTransferOrderByWorkorder(QcScrapRecords parm); + + /// + /// 根据不良品记录ID撤销不良品记录 + /// + /// 不良品记录ID + /// + int RevokeScrapRecordById(long id); + } } diff --git a/DOAN.Service/MES/Quality/IPQC/QcScrapRecordsService.cs b/DOAN.Service/MES/Quality/IPQC/QcScrapRecordsService.cs index a307fae..3608ea1 100644 --- a/DOAN.Service/MES/Quality/IPQC/QcScrapRecordsService.cs +++ b/DOAN.Service/MES/Quality/IPQC/QcScrapRecordsService.cs @@ -278,5 +278,65 @@ namespace DOAN.Service.BZFM return Context.Updateable(updateObj).UpdateColumns(x => new { x.Status, x.UpdatedTime }).ExecuteCommand(); } + + /// + /// 根据工单号查询不良品记录 + /// + /// 工单号 + /// + public PagedInfo GetQcScrapRecordsByWorkorder(string workorder) + { + var queryDto = new QcScrapRecordsQueryDto + { + Workorder = workorder + }; + + return GetList(queryDto); + } + + /// + /// 根据工单号填写报废单 + /// + /// 报废单数据 + /// + public QcScrapRecords CreateScrapOrderByWorkorder(QcScrapRecords parm) + { + // 验证工单号 + if (string.IsNullOrEmpty(parm.Workorder)) + { + throw new Exception("工单号不能为空"); + } + + // 调用现有的创建报废单方法 + return CreateScrapOrder(parm); + } + + /// + /// 根据工单号填写转用单 + /// + /// 转用单数据 + /// + public QcScrapRecords CreateTransferOrderByWorkorder(QcScrapRecords parm) + { + // 验证工单号 + if (string.IsNullOrEmpty(parm.Workorder)) + { + throw new Exception("工单号不能为空"); + } + + // 调用现有的创建转用单方法 + return CreateTransferOrder(parm); + } + + /// + /// 根据不良品记录ID撤销不良品记录 + /// + /// 不良品记录ID + /// + public int RevokeScrapRecordById(long id) + { + // 调用现有的撤销方法 + return RevokeScrapRecord(id); + } } } \ No newline at end of file