using Rhea.Common;
|
using Tiger.IBusiness;
|
using SqlSugar;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Linq.Expressions;
|
using System.Text;
|
using System.Threading;
|
using System.Threading.Tasks;
|
using Tiger.Model;
|
using Tiger.Model.Sharetronic.Shelf;
|
using System.ComponentModel;
|
|
namespace Tiger.Business.MES.Transaction
|
{
|
/// <summary>
|
/// SMT上料调度事务
|
/// </summary>
|
public class LoadingMaterial : MESTransactionBase, ILoadingMaterial
|
{
|
public ILoadingMaterial Init(string id, string userCode, string apiHost, string orgCode)
|
{
|
TransID = id;
|
UserCode = userCode;
|
ApiHost = apiHost;
|
OrgCode = orgCode;
|
Logger.Console.Info($"Start {this.GetType().Name} Transaction[ID: {TransID}]");
|
return this;
|
}
|
|
#region Propertys & Variables
|
|
public string UserCode { get; set; }
|
public long UserId { get; set; }
|
public string OrgCode { get; set; }
|
public bool his_isComplete { get; set; }
|
public bool isManual { get; set; }
|
/// <summary>
|
/// 步骤类型
|
/// </summary>
|
public enum Step_Types
|
{
|
/// <summary>
|
/// 扫描机器编码
|
/// </summary>
|
[Description("机器编码")]
|
SmtCode,
|
/// <summary>
|
/// 扫描槽位
|
/// </summary>
|
[Description("槽位")]
|
SlotNo,
|
/// <summary>
|
/// 扫描飞达
|
/// </summary>
|
[Description("Feeder")]
|
Feeder,
|
/// <summary>
|
/// 扫描料盘SN
|
/// </summary>
|
[Description("料盘码")]
|
SN,
|
}
|
|
#endregion Propertys & Variables
|
|
#region Functions
|
|
/// <summary>
|
/// 扫描条码上料
|
/// </summary>
|
/// <param name="input"></param>
|
/// <returns></returns>
|
public async Task<ApiAction<ProdReqOutput>> ScanItem(SmtLoadingInput input)
|
{
|
var action = new ApiAction<ProdReqOutput>();
|
try
|
{
|
if (input.Code.IsNullOrEmpty())
|
{
|
action.IsSuccessed = false;
|
action.LocaleMsg = Biz.L($"{EnumHelper.GetEnum<Step_Types>(input.Step).GetDesc()}不能为空");
|
return action;
|
}
|
|
switch (EnumHelper.GetEnum<Step_Types>(input.Step))
|
{
|
case Step_Types.SmtCode:
|
ExecuteSmtCode();
|
break;
|
case Step_Types.SlotNo:
|
ExecuteSlotNo();
|
break;
|
case Step_Types.Feeder:
|
ExecuteFeeder();
|
break;
|
case Step_Types.SN:
|
ExecuteSN();
|
break;
|
}
|
|
//action.Data = new ProdReqOutput()
|
//{
|
// SN = CurInv.SN,
|
// ItemCode = CurInv.ItemInfo.ITEM_CODE,
|
// Qty = CurInv.CurPkg.QTY,
|
// CutQty = CurInv.CurPkg.QTY - cutQty,
|
// isCutting = isCutting,
|
// isExceed = isExceed,
|
// ReqNo = req.BILLCODE,
|
// regionCode = CurInv.Region.REGION_CODE,
|
// locationCode = CurInv.Location?.LOCATION_CODE,
|
//};
|
}
|
catch (Exception ex)
|
{
|
action.CatchExceptionWithLog(ex, $"扫描物料[{input.Code}]复核异常");
|
}
|
return action;
|
}
|
|
private ApiAction ExecuteSmtCode() {
|
var action = new ApiAction();
|
try
|
{
|
|
}
|
catch (Exception ex)
|
{
|
action.CatchExceptionWithLog(ex, $"扫描机器编码异常");
|
}
|
return action;
|
}
|
|
private ApiAction ExecuteSlotNo()
|
{
|
var action = new ApiAction();
|
try
|
{
|
|
}
|
catch (Exception ex)
|
{
|
action.CatchExceptionWithLog(ex, $"扫描槽位异常");
|
}
|
return action;
|
}
|
|
private ApiAction ExecuteFeeder()
|
{
|
var action = new ApiAction();
|
try
|
{
|
|
}
|
catch (Exception ex)
|
{
|
action.CatchExceptionWithLog(ex, $"扫描Feeder异常");
|
}
|
return action;
|
}
|
|
private ApiAction ExecuteSN()
|
{
|
var action = new ApiAction();
|
try
|
{
|
|
}
|
catch (Exception ex)
|
{
|
action.CatchExceptionWithLog(ex, $"扫描料盘码异常");
|
}
|
return action;
|
}
|
|
/// <summary>
|
/// 添加一个ApiAction的历史记录
|
/// </summary>
|
/// <param name="action"></param>
|
public override void AddHistory<T>(Microsoft.AspNetCore.Http.HttpRequest request, ApiAction<T> action)
|
{
|
var his = action.History();
|
//his.TraceDic.Add("CurReqType", CurReqType);
|
//his.TraceDic.Add("CurInv", CurInv);
|
//his.TraceDic.Add("req", req);
|
//his.TraceDic.Add("toMes", toMes);
|
//his.TraceDic.Add("CurPoolList", CurPoolList);
|
//his.TraceDic.Add("isComplete", his_isComplete);
|
//ActionHistoryList.Add($"{request.HttpContext.TraceIdentifier} at {action.Timestamp:yyyy/MM/dd HH:mm:ss.fff}: {request.Path}", his);
|
LastActionTime = DateTime.Now;
|
}
|
|
#endregion Functions
|
|
public override bool Close(bool needSaveHistoryLog = false)
|
{
|
//needSaveHistoryLog = true;
|
//保存操作日志
|
|
this.IsFinished = true;
|
return IsFinished ? base.Close(needSaveHistoryLog) : IsFinished;
|
}
|
}//endClass
|
}
|