添加不良品相关操作逻辑

This commit is contained in:
2026-02-20 10:44:52 +08:00
parent 9e096214c7
commit cd7580da43
5 changed files with 147 additions and 12 deletions

View File

@@ -116,7 +116,7 @@ namespace DOAN.Service.BZFM
}
/// <summary>
/// 生成报废单号
/// 生成不良单号
/// </summary>
/// <param name="prefix">前缀默认BF表示报废</param>
/// <returns></returns>
@@ -527,6 +527,73 @@ namespace DOAN.Service.BZFM
return CreateTransferOrder(parm);
}
/// <summary>
/// 根据工单号填写不良品单据
/// </summary>
/// <param name="parm">不良品单数据</param>
/// <returns></returns>
public QcScrapRecords CreateDefectOrderByWorkorder(QcScrapRecords parm)
{
// 验证工单号
if (string.IsNullOrEmpty(parm.Workorder))
{
throw new Exception("工单号不能为空");
}
QcScrapRecords newQcScrapRecords = parm;
var workorderInfo = Context
.Queryable<ProWorkorder>()
.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<MmRecordInbound>()
.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();
}
/// <summary>
/// 根据不良品记录ID撤销不良品记录
/// </summary>
@@ -537,5 +604,16 @@ namespace DOAN.Service.BZFM
// 调用现有的撤销方法
return RevokeScrapRecord(id);
}
/// <summary>
/// 根据不良记录进行审批
/// </summary>
/// <param name="parm"></param>
/// <returns></returns>
/// <exception cref="NotImplementedException"></exception>
public string ApproveDefectRecordById(DefectApproveDto parm)
{
throw new NotImplementedException();
}
}
}