diff --git a/DOAN.Model/MES/mm/paintedparts_call/Dto/MmCallDto.cs b/DOAN.Model/MES/mm/paintedparts_call/Dto/MmCallDto.cs
index 3b8a7be..3fb175b 100644
--- a/DOAN.Model/MES/mm/paintedparts_call/Dto/MmCallDto.cs
+++ b/DOAN.Model/MES/mm/paintedparts_call/Dto/MmCallDto.cs
@@ -35,6 +35,8 @@ namespace DOAN.Model.MES.mm.paintedparts_call.Dto
public DateTime? WorkOrderDate { get; set; }
// 料号
public string MaterialCode { get; set; }
+ // 数量
+ public int? Quantity { get; set; }
// ID
public string Id { get; set; }
}
diff --git a/DOAN.Service/MES/mm/paintedparts_call/MmCallService.cs b/DOAN.Service/MES/mm/paintedparts_call/MmCallService.cs
index c1d5fdc..7cfe26e 100644
--- a/DOAN.Service/MES/mm/paintedparts_call/MmCallService.cs
+++ b/DOAN.Service/MES/mm/paintedparts_call/MmCallService.cs
@@ -7,6 +7,7 @@ using DOAN.Model.MES.ERP;
using DOAN.Model.MES.mm.paintedparts_call;
using DOAN.Model.MES.mm.paintedparts_call.Dto;
using DOAN.Model.MES.product;
+using DOAN.Model.Mobile.Dto;
using DOAN.Repository;
using DOAN.Service.MES.mm.paintedparts_call.IService;
using Infrastructure.Attribute;
@@ -29,8 +30,9 @@ namespace DOAN.Service.MES.mm.paintedparts_call
///
public PagedInfo GetList(MmCallQueryDto parm)
{
- var predicate = Expressionable.Create()
- .AndIF(!string.IsNullOrEmpty(parm.LineCode),it=>it.LineCode == parm.LineCode)
+ var predicate = Expressionable
+ .Create()
+ .AndIF(!string.IsNullOrEmpty(parm.LineCode), it => it.LineCode == parm.LineCode)
.AndIF(parm.WorkOrderDate != null, it => it.WorkorderDate == parm.WorkOrderDate);
var response = Queryable()
@@ -234,6 +236,10 @@ namespace DOAN.Service.MES.mm.paintedparts_call
{
throw new Exception("没有找到对应的叫料信息");
}
+ if (parm.Quantity > mmCallRequest.Quantity)
+ {
+ throw new Exception("叫料数量超出");
+ }
// 2.新增叫料信息
MmCallReceive newMmCallReceive =
new()
@@ -245,7 +251,7 @@ namespace DOAN.Service.MES.mm.paintedparts_call
ReceiveTime = null,
MaterialCode = mmCallRequest.MaterialCode,
MaterialName = mmCallRequest.MaterialName,
- Quantity = mmCallRequest.Quantity,
+ Quantity = parm.Quantity,
CreatedBy = "PDA",
CreatedTime = DateTime.Now,
};
@@ -260,25 +266,58 @@ namespace DOAN.Service.MES.mm.paintedparts_call
///
public int DoLineReceiveMaterial(MmCallAndReceiveDto parm)
{
- if ( parm == null || string.IsNullOrEmpty(parm.Id))
+ if (parm == null || string.IsNullOrEmpty(parm.Id))
{
throw new ArgumentException("参数无效:MmCallReceiveId 必须有值", nameof(parm.Id));
}
- // 1.获取对应叫料信息
- var mmCallReceive = Context
- .Queryable()
- .Where(it => it.Id == parm.Id)
- .First();
- if (mmCallReceive == null)
+ try
{
- throw new Exception("没有找到对应的叫料信息");
+ Context.Ado.BeginTran();
+ // 1.获取对应叫料信息
+ var mmCallReceive = Context
+ .Queryable()
+ .Where(it => it.Id == parm.Id)
+ .First();
+ if (mmCallReceive == null)
+ {
+ Context.Ado.RollbackTran();
+ throw new Exception("没有找到对应的叫料信息");
+ }
+ // 2.变更状态为已完成
+ mmCallReceive.ReceiveTime = DateTime.Now;
+ Context.Updateable(mmCallReceive).ExecuteCommand();
+ // 3.扣减对应MRP数量
+ var mmCallRequest = Context
+ .Queryable()
+ .Where(it =>
+ it.LineCode == mmCallReceive.LineCode
+ && it.WorkorderDate == mmCallReceive.WorkorderDate
+ )
+ .Where(it => it.MaterialCode == mmCallReceive.MaterialCode)
+ .First();
+ if (mmCallRequest == null)
+ {
+ Context.Ado.RollbackTran();
+ throw new Exception("没有找到对应的叫料信息");
+ }
+ mmCallRequest.Quantity -= mmCallReceive.Quantity;
+ int result = Context.Updateable(mmCallRequest).ExecuteCommand();
+ Context.Ado.CommitTran();
+ return result > 0 ? 1 : 0;
+ }
+ catch (Exception)
+ {
+ Context.Ado.RollbackTran();
+ throw;
}
- // 2.变更状态为已完成
- mmCallReceive.ReceiveTime = DateTime.Now;
- Context.Updateable(mmCallReceive).ExecuteCommand();
- return 1;
}
+ ///
+ /// 产线退料
+ ///
+ ///
+ ///
+ ///
public int DoLineReturnBackMaterial(MmCallAndReceiveDto parm)
{
if (parm == null || string.IsNullOrEmpty(parm.Id))
@@ -303,7 +342,7 @@ namespace DOAN.Service.MES.mm.paintedparts_call
throw new InvalidOperationException("没有找到对应的叫料信息");
}
- // 2. 更新叫料记录(清空 ReceiveTime)
+ // 2. 更新叫料记录(清空 ReceiveTime,使其重新领料)
mmCallReceive.ReceiveTime = null;
Context.Updateable(mmCallReceive).ExecuteCommand();