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 }