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
{
///
/// SMT上料调度事务
///
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; }
///
/// 步骤类型
///
public enum Step_Types
{
///
/// 扫描机器编码
///
[Description("机器编码")]
SmtCode,
///
/// 扫描槽位
///
[Description("槽位")]
SlotNo,
///
/// 扫描飞达
///
[Description("Feeder")]
Feeder,
///
/// 扫描料盘SN
///
[Description("料盘码")]
SN,
}
#endregion Propertys & Variables
#region Functions
///
/// 扫描条码上料
///
///
///
public async Task> ScanItem(SmtLoadingInput input)
{
var action = new ApiAction();
try
{
if (input.Code.IsNullOrEmpty())
{
action.IsSuccessed = false;
action.LocaleMsg = Biz.L($"{EnumHelper.GetEnum(input.Step).GetDesc()}不能为空");
return action;
}
switch (EnumHelper.GetEnum(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;
}
///
/// 添加一个ApiAction的历史记录
///
///
public override void AddHistory(Microsoft.AspNetCore.Http.HttpRequest request, ApiAction 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
}