diff --git a/DOAN.Admin.WebApi/Controllers/MES/Quality/IPQC/QcScrapRecordsController.cs b/DOAN.Admin.WebApi/Controllers/MES/Quality/IPQC/QcScrapRecordsController.cs
index 27b47e6..a2e8c7f 100644
--- a/DOAN.Admin.WebApi/Controllers/MES/Quality/IPQC/QcScrapRecordsController.cs
+++ b/DOAN.Admin.WebApi/Controllers/MES/Quality/IPQC/QcScrapRecordsController.cs
@@ -240,6 +240,33 @@ namespace DOAN.Admin.WebApi.Controllers.BZFM
}
}
+ ///
+ /// 根据工单号填写不良品单
+ ///
+ /// 不良品单数据
+ ///
+ [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(StatusCodes.Status500InternalServerError, ex.Message);
+ }
+ }
+
///
/// 根据不良品记录ID撤销不良品记录
///
diff --git a/DOAN.Model/MES/Quality/IPQC/Dto/QcScrapRecordsDto.cs b/DOAN.Model/MES/Quality/IPQC/Dto/QcScrapRecordsDto.cs
index ff6c6ab..9a11dca 100644
--- a/DOAN.Model/MES/Quality/IPQC/Dto/QcScrapRecordsDto.cs
+++ b/DOAN.Model/MES/Quality/IPQC/Dto/QcScrapRecordsDto.cs
@@ -2,7 +2,7 @@
namespace DOAN.Model.BZFM.Dto
{
///
- /// 报废记录表查询对象
+ /// 不良记录表查询对象
///
public class QcScrapRecordsQueryDto : PagerInfo
{
@@ -22,7 +22,7 @@ namespace DOAN.Model.BZFM.Dto
}
///
- /// 报废记录表输入输出对象
+ /// 不良记录表输入输出对象
///
public class QcScrapRecordsDto
{
@@ -32,20 +32,20 @@ namespace DOAN.Model.BZFM.Dto
public long Id { get; set; }
///
- /// 报废单号
+ /// 不良单号
///
public string ScrapOrderNo { get; set; }
///
- /// 报废日期
+ /// 不良日期
///
- [Required(ErrorMessage = "报废日期不能为空")]
+ [Required(ErrorMessage = "不良日期不能为空")]
public DateTime? ScrapDate { get; set; }
///
- /// 报废数量
+ /// 不良数量
///
- [Required(ErrorMessage = "报废数量不能为空")]
+ [Required(ErrorMessage = "不良数量不能为空")]
public decimal ScrapQuantity { get; set; }
///
@@ -59,12 +59,12 @@ namespace DOAN.Model.BZFM.Dto
public string DisposalMethod { get; set; }
///
- /// 报废类型
+ /// 不良类型
///
public string ScrapType { get; set; }
///
- /// 报废原因说明
+ /// 不良原因说明
///
public string ScrapReason { get; set; }
@@ -151,7 +151,7 @@ namespace DOAN.Model.BZFM.Dto
public string QualityInspector { get; set; }
///
- /// 班组长/主管
+ /// 审核人
///
public string SupervisorName { get; set; }
diff --git a/DOAN.Model/MES/Quality/IPQC/Dto/ScrapApproveDto.cs b/DOAN.Model/MES/Quality/IPQC/Dto/ScrapApproveDto.cs
index d7a17cc..178028a 100644
--- a/DOAN.Model/MES/Quality/IPQC/Dto/ScrapApproveDto.cs
+++ b/DOAN.Model/MES/Quality/IPQC/Dto/ScrapApproveDto.cs
@@ -7,7 +7,7 @@ using System.Threading.Tasks;
namespace DOAN.Model.BZFM.Dto
{
///
- /// 报废审批DTO
+ /// 不良审批DTO
///
public class ScrapApproveDto
{
@@ -21,4 +21,19 @@ namespace DOAN.Model.BZFM.Dto
///
public string Approver { get; set; }
}
+
+ ///
+ /// 不良品归属审批
+ ///
+ public class DefectApproveDto
+ {
+ ///
+ /// 不良品记录ID
+ ///
+ public long Id { get; set; }
+ ///
+ /// 工单号
+ ///
+ public string Workorder { get; set; }
+ }
}
\ 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 358fffc..98df8cb 100644
--- a/DOAN.Service/MES/Quality/IPQC/IService/IQcScrapRecordsService.cs
+++ b/DOAN.Service/MES/Quality/IPQC/IService/IQcScrapRecordsService.cs
@@ -67,6 +67,21 @@ namespace DOAN.Service.BZFM.IService
///
QcScrapRecords CreateTransferOrderByWorkorder(QcScrapRecords parm);
+ ///
+ /// 根据工单号填写不良品单
+ ///
+ /// 转用单数据
+ ///
+ QcScrapRecords CreateDefectOrderByWorkorder(QcScrapRecords parm);
+
+
+ ///
+ /// 根据不良品记录ID对不良品进行操作
+ ///
+ /// 转用单数据
+ ///
+ string ApproveDefectRecordById(DefectApproveDto parm);
+
///
/// 根据不良品记录ID撤销不良品记录
///
diff --git a/DOAN.Service/MES/Quality/IPQC/QcScrapRecordsService.cs b/DOAN.Service/MES/Quality/IPQC/QcScrapRecordsService.cs
index ba6b2b8..dfc36cc 100644
--- a/DOAN.Service/MES/Quality/IPQC/QcScrapRecordsService.cs
+++ b/DOAN.Service/MES/Quality/IPQC/QcScrapRecordsService.cs
@@ -116,7 +116,7 @@ namespace DOAN.Service.BZFM
}
///
- /// 生成报废单号
+ /// 生成不良单号
///
/// 前缀,默认BF表示报废
///
@@ -527,6 +527,73 @@ namespace DOAN.Service.BZFM
return CreateTransferOrder(parm);
}
+ ///
+ /// 根据工单号填写不良品单据
+ ///
+ /// 不良品单数据
+ ///
+ public QcScrapRecords CreateDefectOrderByWorkorder(QcScrapRecords parm)
+ {
+ // 验证工单号
+ if (string.IsNullOrEmpty(parm.Workorder))
+ {
+ throw new Exception("工单号不能为空");
+ }
+ QcScrapRecords newQcScrapRecords = parm;
+ var workorderInfo = Context
+ .Queryable()
+ .Where(x => x.Workorder == parm.Workorder)
+ .First();
+
+ // 单据不良数校验
+ if(parm.ScrapQuantity + workorderInfo.DefectNum > workorderInfo.PlanNum)
+ {
+ throw new Exception("不良数量总和大于计划数,请检查输入!");
+ }
+ if (parm.ScrapQuantity < 0)
+ {
+ throw new Exception("不良数量需要为正数!");
+ }
+
+ // 工单号创建,根据工单信息填充报废单的相关字段
+ if (workorderInfo != null)
+ {
+ newQcScrapRecords.ProductCode = workorderInfo.productionCode;
+ newQcScrapRecords.ProductName = workorderInfo.productionName;
+ newQcScrapRecords.LineCode = workorderInfo.RouteCode;
+ newQcScrapRecords.StoveCode = workorderInfo.StoveCode;
+ newQcScrapRecords.BatchNo = workorderInfo.FeedOrder;
+ newQcScrapRecords.MaterialCode = workorderInfo.MaterialCode;
+ newQcScrapRecords.MaterialName = workorderInfo.MaterialName;
+ // 如有领料记录,则绑定采购记录
+ var purchaseInfo = Context
+ .Queryable()
+ .Where(it => it.BatchNo == workorderInfo.FeedOrder)
+ .Where(it => it.TransactionType == "采购入库")
+ .Where(it => it.Remarks != "已撤销")
+ .First();
+ if (purchaseInfo != null)
+ {
+ newQcScrapRecords.SupplierCode = purchaseInfo.SupplierCode;
+ newQcScrapRecords.SupplierName = purchaseInfo.SupplierName;
+ newQcScrapRecords.StoveCode = purchaseInfo.StoveCode;
+ newQcScrapRecords.Unit = purchaseInfo.Unit;
+ }
+ }
+
+ // 生成单号
+ newQcScrapRecords.ScrapOrderNo = GenerateScrapOrderNo("BL"); // BL表示不良
+
+ // 设置状态为待审批,类型为转用
+ newQcScrapRecords.Status = "待审批";
+ newQcScrapRecords.ScrapType = "不良品";
+ newQcScrapRecords.TenantId = 0;
+ newQcScrapRecords.Version = 1;
+ return Context.Insertable(newQcScrapRecords).ExecuteReturnEntity();
+ }
+
+
+
///
/// 根据不良品记录ID撤销不良品记录
///
@@ -537,5 +604,16 @@ namespace DOAN.Service.BZFM
// 调用现有的撤销方法
return RevokeScrapRecord(id);
}
+
+ ///
+ /// 根据不良记录进行审批
+ ///
+ ///
+ ///
+ ///
+ public string ApproveDefectRecordById(DefectApproveDto parm)
+ {
+ throw new NotImplementedException();
+ }
}
}