| | |
| | | //å·¥æ¥å表为空æè
å·¥åºèç¹å·¥æ¥ææªå®ææ¶ï¼ä¼å
宿工åºèç¹å·¥æ¥ |
| | | if (Steps.IsNullOrEmpty() || !IsFinishNodeSteps) |
| | | { |
| | | var wosns = Biz.Db.Queryable<BIZ_MES_WO_BATCH, BIZ_MES_WO_SN>((q, s) => new JoinQueryInfos(JoinType.Inner, q.ORDER_NO == s.WORK_ORDER && q.BATCH_NO == s.BATCH_NO)) |
| | | var wosns = MainDB.Queryable<BIZ_MES_WO_BATCH, BIZ_MES_WO_SN>((q, s) => new JoinQueryInfos(JoinType.Inner, q.ORDER_NO == s.WORK_ORDER && q.BATCH_NO == s.BATCH_NO)) |
| | | .ByAuth(input.AuthOption)//.Where((q, s) => s.STATUS < BIZ_MES_WO_SN.STATUSs.Finished.GetValue()) |
| | | .Where((q, s) => s.SN == input.SN || s.FLOW_SN == input.SN || s.TRAY_SN == input.SN).Select((q, s) => new { Batch = q, SN = s }).ToList(); |
| | | //å
夿å½åå·¥åä¸ä¸ºç©ºä¸å½åå²ä½å¨å½å工忝䏿¯é¦ç«ï¼å¦ææ¯åä¸å
è®¸åæ´å½åå·¥åï¼å°è¯ææ¡ç ç»å®å°å½åå·¥å |
| | |
| | | action.Data.OperInfo = new(); |
| | | action.IsSuccessed = result.IsSuccessed; |
| | | action.LocaleMsg = result.LocaleMsg; |
| | | return action; |
| | | return SetOutPutMqttMsg(action, input.Locale); |
| | | } |
| | | } |
| | | //æ´æ°CurBatch |
| | |
| | | //action.CatchExceptionWithLog(ex, $"ééå·¥åºï¼æäº¤æä½æ°æ®å¼å¸¸"); |
| | | action.CatchExceptionWithLog(ex, Biz.L("MES.Transaction.CollectNode.SubmitException")); |
| | | } |
| | | return action; |
| | | return SetOutPutMqttMsg(action, input.Locale); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | return woStatus; |
| | | } |
| | | |
| | | var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN).Where(q => q.FINISHED_FLAG != "Y").ToList(); |
| | | var wipSNs = MainDB.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN).Where(q => q.FINISHED_FLAG != "Y").ToList(); |
| | | if (wipSNs.IsNullOrEmpty()) |
| | | { |
| | | var wipSN = new MES_WIP_DATA() |
| | |
| | | if (Steps.IsNullOrEmpty() || !IsFinishNodeSteps) |
| | | { |
| | | |
| | | var wosns = Biz.Db.Queryable<BIZ_MES_WO_BATCH, BIZ_MES_WO_SN>((q, s) => new JoinQueryInfos(JoinType.Inner, q.ORDER_NO == s.WORK_ORDER && q.BATCH_NO == s.BATCH_NO)) |
| | | var wosns = MainDB.Queryable<BIZ_MES_WO_BATCH, BIZ_MES_WO_SN>((q, s) => new JoinQueryInfos(JoinType.Inner, q.ORDER_NO == s.WORK_ORDER && q.BATCH_NO == s.BATCH_NO)) |
| | | .ByAuth(input.AuthOption)//.Where((q, s) => s.STATUS < BIZ_MES_WO_SN.STATUSs.Finished.GetValue()) |
| | | .Where((q, s) => s.SN == input.SN || s.FLOW_SN == input.SN || s.TRAY_SN == input.SN).Select((q, s) => new { Batch = q, SN = s }).ToList(); |
| | | |
| | |
| | | action.IsSuccessed = false; |
| | | //action.LocaleMsg = new($"æ¡ç [{0}]æ¯è½½å
·æ¡ç ï¼è¯·æ«æè½½å
·ä¸çäº§åæ¡ç ç»§ç»å
è£
æä½"); |
| | | action.LocaleMsg = new("MES.Transaction.PackingNode.Submit.OnlyMinPackage", input.SN); |
| | | return action; |
| | | return SetOutPutMqttMsg(action, input.Locale); |
| | | } |
| | | var curPkg = Context.ContainsKey("CurPackage") ? Context["CurPackage"] as WipPkg : null; |
| | | if (!curPkg.IsNullOrEmpty() && !curPkg.IsFinished && curPkg.WorkBatch != curSNs.First().Batch.BATCH_NO) |
| | |
| | | action.IsSuccessed = false; |
| | | //action.LocaleMsg = new($"æ£å¨å
è£
å·¥åæ¹æ¬¡[{0}]ç产åï¼è¯·å
宿å½åå
è£
ååæ«æå
¶ä»æ¹æ¬¡[{1}]ç产å[{2}]"); |
| | | action.LocaleMsg = new("MES.Transaction.PackingNode.Submit.BatchError", curPkg.WorkBatch, curSNs.First().Batch.BATCH_NO, input.SN); |
| | | return action; |
| | | return SetOutPutMqttMsg(action, input.Locale); |
| | | } |
| | | if (curSNs.First().Batch.ACT_LINE != CurLine.LINE_CODE) |
| | | { |
| | |
| | | action.Data.OperInfo = new(); |
| | | action.IsSuccessed = result.IsSuccessed; |
| | | action.LocaleMsg = result.LocaleMsg; |
| | | return action; |
| | | return SetOutPutMqttMsg(action, input.Locale); |
| | | } |
| | | } |
| | | //æ´æ°CurBatch |
| | |
| | | //action.CatchExceptionWithLog(ex, $"å
è£
å·¥åºï¼æäº¤æä½æ°æ®å¼å¸¸"); |
| | | action.CatchExceptionWithLog(ex, Biz.L("MES.Transaction.PackingNode.SubmitException")); |
| | | } |
| | | return action; |
| | | return SetOutPutMqttMsg(action, input.Locale); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | return woStatus; |
| | | } |
| | | |
| | | var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN).Where(q => q.FINISHED_FLAG != "Y").ToList(); |
| | | var wipSNs = MainDB.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN).Where(q => q.FINISHED_FLAG != "Y").ToList(); |
| | | if (wipSNs.IsNullOrEmpty()) |
| | | { |
| | | var wipSN = new MES_WIP_DATA() |
| | |
| | | UserCode = userCode; |
| | | ApiHost = apiHost; |
| | | PostCode = postCode; |
| | | _MainDB = Biz.Db; |
| | | |
| | | CurPosition = Biz.Db.Queryable<MES_POSITION>().Where(q => q.POST_CODE == postCode).First(); |
| | | CurPosition = MainDB.Queryable<MES_POSITION>().Where(q => q.POST_CODE == postCode).First(); |
| | | //if (CurPosition.IsNullOrEmpty()) throw new InvalidDataException($"MES.Transaction.Position.PositionNotExistsException", new Exception($"{postCode}|")); |
| | | if (CurPosition.IsNullOrEmpty()) throw new InvalidDataException($"å²ä½[{postCode}]ä¸åå¨ï¼è¯·æäº¤æ£ç¡®çå²ä½ä»£ç ", new Exception($"{postCode}|")); |
| | | CurLine = Biz.Db.Queryable<MES_LINE>().Where(q => q.LINE_CODE == CurPosition.LINE_CODE).First(); |
| | | CurLine = MainDB.Queryable<MES_LINE>().Where(q => q.LINE_CODE == CurPosition.LINE_CODE).First(); |
| | | //if (CurLine.IsNullOrEmpty()) throw new InvalidDataException($"MES.Transaction.Position.LineNotExistsException", new Exception($"{postCode}|{CurPosition.LINE_CODE}")); |
| | | if (CurLine.IsNullOrEmpty()) throw new InvalidDataException($"å²ä½[{postCode}]æå±ç产线[{CurPosition.LINE_CODE}]ä¸åå¨ï¼è¯·å
设置æå±äº§çº¿", new Exception($"{postCode}|{CurPosition.LINE_CODE}")); |
| | | CurWorkshop = Biz.Db.Queryable<MES_WORKSHOP>().Where(q => q.WS_CODE == CurLine.WS_CODE).First(); |
| | | CurWorkshop = MainDB.Queryable<MES_WORKSHOP>().Where(q => q.WS_CODE == CurLine.WS_CODE).First(); |
| | | //if (CurWorkshop.IsNullOrEmpty()) throw new InvalidDataException($"MES.Transaction.Position.WorkshopNotExistsException", new Exception($"{postCode}|{CurLine.WS_CODE}")); |
| | | if (CurWorkshop.IsNullOrEmpty()) throw new InvalidDataException($"å²ä½[{postCode}]æå±ç车é´[{CurLine.WS_CODE}]ä¸åå¨ï¼è¯·å
设置æå±è½¦é´", new Exception($"{postCode}|{CurLine.WS_CODE}")); |
| | | CurFactory = Biz.Db.Queryable<MES_FACTORY>().Where(q => q.FTY_CODE == CurWorkshop.FTY_CODE).First(); |
| | | CurFactory = MainDB.Queryable<MES_FACTORY>().Where(q => q.FTY_CODE == CurWorkshop.FTY_CODE).First(); |
| | | //if (CurFactory.IsNullOrEmpty()) throw new InvalidDataException($"MES.Transaction.Position.FactoryNotExistsException", new Exception($"{postCode}|{CurWorkshop.FTY_CODE}")); |
| | | if (CurFactory.IsNullOrEmpty()) throw new InvalidDataException($"å²ä½[{postCode}]æå±çå·¥å[{CurWorkshop.FTY_CODE}]ä¸åå¨ï¼è¯·å
设置æå±å·¥å", new Exception($"{postCode}|{CurWorkshop.FTY_CODE}")); |
| | | |
| | | //å è½½å½å产线ççå¶ |
| | | CurShiftSys = Biz.Db.Queryable<MES_SHIFT_SYS>().Where(q => q.SFTS_CODE == CurLine.SFTS_CODE).IncludesAllFirstLayer().IncludesAllSecondLayer(q => q.Shifts).First(); |
| | | CurShiftSys = MainDB.Queryable<MES_SHIFT_SYS>().Where(q => q.SFTS_CODE == CurLine.SFTS_CODE).IncludesAllFirstLayer().IncludesAllSecondLayer(q => q.Shifts).First(); |
| | | |
| | | return this; |
| | | } |
| | |
| | | public bool IsFinishNodeSteps => !Steps.Any(q => q.NodeType == IWorkStep.NodeTypes.Node && !q.IsFinished); |
| | | public bool IsFinishAllSteps => Steps.Any() && !Steps.Any(q => !q.IsFinished); |
| | | //public int CurStep => Steps.Where(q => !q.IsFinished).OrderBy(q => q.Sequence).FirstOrDefault()?.Sequence ?? 0; |
| | | private DbClient _MainDB; |
| | | public DbClient MainDB => _MainDB; |
| | | private DbClient CommitDB; |
| | | /// <summary> |
| | | /// æ¯å¦éè¦ä¸´æ¶å卿°æ®åºæäº¤æä½ï¼å¾
éè¦çæ¶ååæäº¤ |
| | |
| | | { |
| | | if (!WoContext.ExistsBatch(input.OrderNo, CurLine.LINE_CODE, batchNo, true)) |
| | | { |
| | | var wo = await Biz.Db.Queryable<BIZ_MES_WO>().ByAuth(input.AuthOption).Where(q => q.ORDER_NO == input.OrderNo).FirstAsync(); |
| | | var wo = await MainDB.Queryable<BIZ_MES_WO>().ByAuth(input.AuthOption).Where(q => q.ORDER_NO == input.OrderNo).FirstAsync(); |
| | | //éªè¯æç»æ¯å¦æ£ç¡® |
| | | if (wo.IsNullOrEmpty()) |
| | | { |
| | |
| | | action.LocaleMsg = new("MES.Transaction.Position.SelectOrder.StatusException", input.OrderNo, wo.STATUS.GetEnumDesc<BIZ_MES_WO.STATUSs>()); |
| | | return action; |
| | | } |
| | | var batch = await Biz.Db.Queryable<BIZ_MES_WO_BATCH>().ByAuth(input.AuthOption) |
| | | var batch = await MainDB.Queryable<BIZ_MES_WO_BATCH>().ByAuth(input.AuthOption) |
| | | .Where(q => q.ORDER_NO == input.OrderNo && q.ACT_LINE == CurLine.LINE_CODE) |
| | | .WhereIF(!batchNo.IsNullOrEmpty(), q => q.BATCH_NO == batchNo) |
| | | .OrderBy(q => q.STATUS).FirstAsync(); |
| | |
| | | info.NextNode = " â "; |
| | | } |
| | | return info; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 设置å½åæ¡ç çå·¥åºä¿¡æ¯ |
| | | /// </summary> |
| | | public ApiAction<SubmitOutput> SetOutPutMqttMsg(ApiAction<SubmitOutput> action, string locale = null) |
| | | { |
| | | MQTT.Message msg = new() |
| | | { |
| | | IsSuccessed = action.IsSuccessed, |
| | | Content = Biz.T(action.LocaleMsg, locale), |
| | | }; |
| | | switch (action.Status) |
| | | { |
| | | case ApiAction.StatusCodes.Success: |
| | | if (action.Data.IsFinished) |
| | | { |
| | | msg.Voice = MQTT.Voice.Pass; |
| | | msg.Color = "#FF228B22"; |
| | | } |
| | | else |
| | | { |
| | | msg.Voice = MQTT.Voice.Success; |
| | | msg.Color = "#FF1E90FF"; |
| | | } |
| | | break; |
| | | case ApiAction.StatusCodes.Warning: |
| | | msg.Voice = MQTT.Voice.Warning; |
| | | msg.Color = "#FFB8860B"; |
| | | break; |
| | | case ApiAction.StatusCodes.Error: |
| | | case ApiAction.StatusCodes.Failed: |
| | | msg.Voice = MQTT.Voice.Fail; |
| | | msg.Color = "#FFFF0000"; |
| | | break; |
| | | case ApiAction.StatusCodes.Exception: |
| | | msg.Voice = MQTT.Voice.Fail; |
| | | msg.Color = "#FF8B0000"; |
| | | break; |
| | | case ApiAction.StatusCodes.Normal: |
| | | case ApiAction.StatusCodes.NeedConfrim: |
| | | case ApiAction.StatusCodes.Confrimed: |
| | | default: |
| | | msg.Voice = MQTT.Voice.Silent; |
| | | msg.Color = "#FF000000"; |
| | | break; |
| | | } |
| | | action.Data.MqttMsg = msg; |
| | | return action; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | snList.Add(_orderAction.CurPkg.CustSN?.FLOW_SN); |
| | | } |
| | | _lotnos = string.Join(",", Biz.Db.Queryable<MES_CUST_SN>() |
| | | _lotnos = string.Join(",", MainDB.Queryable<MES_CUST_SN>() |
| | | .Where((q) => snList.Contains(q.FLOW_SN)) |
| | | .Select((q) => q.WORK_ORDER).Distinct().ToList()); |
| | | return _lotnos; |
| | |
| | | private string GetLabelVarWo(BAS_LABEL_VAR lv, string value) |
| | | { |
| | | string result = ""; |
| | | var labelVarwos = Biz.Db.Queryable<BAS_LABEL_VAR_WO>().Where(x => x.LABEL_ID == lv.LABEL_ID && x.VAR_NAME == lv.VAR_NAME).ToList(); |
| | | var labelVarwos = MainDB.Queryable<BAS_LABEL_VAR_WO>().Where(x => x.LABEL_ID == lv.LABEL_ID && x.VAR_NAME == lv.VAR_NAME).ToList(); |
| | | if (labelVarwos.Any(q => q.WORK_ORDER == WorkBatch.Batch.ORDER_NO)) |
| | | { |
| | | result = labelVarwos.First(q => q.WORK_ORDER == WorkBatch.Batch.ORDER_NO).VAR_VALUE; |
| | |
| | | private string GetHuaWeiWeek(string pkgOrder, List<string> snList) |
| | | { |
| | | Dictionary<string, string> dic = new(); |
| | | var snOrder = Biz.Db.Queryable<MES_CUST_SN, BIZ_MES_WO>((q, w) => new JoinQueryInfos(JoinType.Left, q.WORK_ORDER == w.ORDER_NO)) |
| | | var snOrder = MainDB.Queryable<MES_CUST_SN, BIZ_MES_WO>((q, w) => new JoinQueryInfos(JoinType.Left, q.WORK_ORDER == w.ORDER_NO)) |
| | | .Where((q, w) => q.PKG_ORDER == pkgOrder && (snList.Contains(q.FLOW_SN) || snList.Contains(q.CUST_SN))) |
| | | .Select((q, w) => new { q.PKG_ORDER, q.WORK_ORDER, w.ACT_START_TIME, w.PLAN_START_TIME, q.FLOW_SN, q.CUST_SN }).ToList(); |
| | | foreach (var sn in snList) |
| | |
| | | //å·¥æ¥å表为空æè
å·¥åºèç¹å·¥æ¥ææªå®ææ¶ï¼ä¼å
宿工åºèç¹å·¥æ¥ |
| | | if (Steps.IsNullOrEmpty() || !IsFinishNodeSteps) |
| | | { |
| | | var wosns = Biz.Db.Queryable<BIZ_MES_WO_BATCH, BIZ_MES_WO_SN>((q, s) => new JoinQueryInfos(JoinType.Inner, q.ORDER_NO == s.WORK_ORDER && q.BATCH_NO == s.BATCH_NO)) |
| | | var wosns = MainDB.Queryable<BIZ_MES_WO_BATCH, BIZ_MES_WO_SN>((q, s) => new JoinQueryInfos(JoinType.Inner, q.ORDER_NO == s.WORK_ORDER && q.BATCH_NO == s.BATCH_NO)) |
| | | .ByAuth(input.AuthOption)//.Where((q, s) => s.STATUS < BIZ_MES_WO_SN.STATUSs.Finished.GetValue()) |
| | | .Where((q, s) => s.SN == input.SN || s.FLOW_SN == input.SN || s.TRAY_SN == input.SN).Select((q, s) => new { Batch = q, SN = s }).ToList(); |
| | | |
| | |
| | | action.Data.OperInfo = new(); |
| | | action.IsSuccessed = result.IsSuccessed; |
| | | action.LocaleMsg = result.LocaleMsg; |
| | | return action; |
| | | return SetOutPutMqttMsg(action, input.Locale); |
| | | } |
| | | } |
| | | //æ´æ°CurBatch |
| | |
| | | //action.CatchExceptionWithLog(ex, $"æµè¯å·¥åºï¼æäº¤æä½æ°æ®å¼å¸¸"); |
| | | action.CatchExceptionWithLog(ex, Biz.L("MES.Transaction.TestNode.SubmitException")); |
| | | } |
| | | return action; |
| | | return SetOutPutMqttMsg(action, input.Locale); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | return woStatus; |
| | | } |
| | | |
| | | var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN).Where(q => q.FINISHED_FLAG != "Y").ToList(); |
| | | var wipSNs = MainDB.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN).Where(q => q.FINISHED_FLAG != "Y").ToList(); |
| | | if (wipSNs.IsNullOrEmpty()) |
| | | { |
| | | var wipSN = new MES_WIP_DATA() |
| | |
| | | // action.IsSuccessed = false; |
| | | // action.LocaleMsg = new($"å
è£
æ°é[{input.Qty}]䏿£ç¡®ï¼è¯·éæ°è¾å
¥æ°éåç»§ç»å
è£
æä½"); |
| | | // //action.LocaleMsg = new("MES.Transaction.PackingNode.Submit.QtyError", input.Qty); |
| | | // return action; |
| | | // return SetOutPutMqttMsg(action, input.Locale); |
| | | //} |
| | | if (input.Options.ContainsKey("IsPrintCustomerLabel")) |
| | | { |
| | |
| | | //å·¥æ¥å表为空æè
å·¥åºèç¹å·¥æ¥ææªå®ææ¶ï¼ä¼å
宿工åºèç¹å·¥æ¥ |
| | | if (Steps.IsNullOrEmpty() || !IsFinishNodeSteps) |
| | | { |
| | | var wosns = Biz.Db.Queryable<BIZ_MES_WO_BATCH, BIZ_MES_WO_SN>((q, s) => new JoinQueryInfos(JoinType.Inner, q.ORDER_NO == s.WORK_ORDER && q.BATCH_NO == s.BATCH_NO)) |
| | | var wosns = MainDB.Queryable<BIZ_MES_WO_BATCH, BIZ_MES_WO_SN>((q, s) => new JoinQueryInfos(JoinType.Inner, q.ORDER_NO == s.WORK_ORDER && q.BATCH_NO == s.BATCH_NO)) |
| | | .ByAuth(input.AuthOption)//.Where((q, s) => s.STATUS < BIZ_MES_WO_SN.STATUSs.Finished.GetValue()) |
| | | .Where((q, s) => s.SN == input.SN || s.FLOW_SN == input.SN || s.TRAY_SN == input.SN).Select((q, s) => new { Batch = q, SN = s }).ToList(); |
| | | curtime = DateTime.Now; Logger.Console.Info($"{CurSN} : ***** 2 : {(curtime - prevtime).TotalSeconds}s", ConsoleColor.Green); prevtime = curtime; |
| | |
| | | action.IsSuccessed = false; |
| | | //action.LocaleMsg = new($"æ¡ç [{0}]æ¯è½½å
·æ¡ç ï¼è¯·æ«æè½½å
·ä¸çäº§åæ¡ç ç»§ç»å
è£
æä½"); |
| | | action.LocaleMsg = new("MES.Transaction.PackingNode.Submit.OnlyMinPackage", input.SN); |
| | | return action; |
| | | return SetOutPutMqttMsg(action, input.Locale); |
| | | } |
| | | var curPkg = Context.ContainsKey("CurPackage") ? Context["CurPackage"] as WipPkg : null; |
| | | if (!curPkg.IsNullOrEmpty() && !curPkg.IsFinished && curPkg.WorkBatch != curSNs.First().Batch.BATCH_NO) |
| | |
| | | action.IsSuccessed = false; |
| | | //action.LocaleMsg = new($"æ£å¨å
è£
å·¥åæ¹æ¬¡[{0}]ç产åï¼è¯·å
宿å½åå
è£
ååæ«æå
¶ä»æ¹æ¬¡[{1}]ç产å[{2}]"); |
| | | action.LocaleMsg = new("MES.Transaction.PackingNode.Submit.BatchError", curPkg.WorkBatch, curSNs.First().Batch.BATCH_NO, input.SN); |
| | | return action; |
| | | return SetOutPutMqttMsg(action, input.Locale); |
| | | } |
| | | if (curSNs.First().Batch.ACT_LINE != CurLine.LINE_CODE) |
| | | { |
| | |
| | | action.Data.OperInfo = new(); |
| | | action.IsSuccessed = result.IsSuccessed; |
| | | action.LocaleMsg = result.LocaleMsg; |
| | | return action; |
| | | return SetOutPutMqttMsg(action, input.Locale); |
| | | } |
| | | } |
| | | //æ´æ°CurBatch |
| | |
| | | action.CatchExceptionWithLog(ex, Biz.L("MES.Transaction.PackingNode.SubmitException")); |
| | | } |
| | | curtime = DateTime.Now; Logger.Console.Info($"{CurSN} : ***** 9 : {(curtime - prevtime).TotalSeconds}s", ConsoleColor.Green); prevtime = curtime; |
| | | return action; |
| | | return SetOutPutMqttMsg(action, input.Locale); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | return woStatus; |
| | | } |
| | | |
| | | var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN).Where(q => q.FINISHED_FLAG != "Y").ToList(); |
| | | var wipSNs = MainDB.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN).Where(q => q.FINISHED_FLAG != "Y").ToList(); |
| | | if (wipSNs.IsNullOrEmpty()) |
| | | { |
| | | var wipSN = new MES_WIP_DATA() |
| | |
| | | { |
| | | CurShipQty = ship.ShipQty; |
| | | IsPrintCustomerLabel = true; |
| | | SugarParameter[] pars = Biz.Db.Ado.GetParameters(new { BATCH = CurBatch.Batch.BATCH_NO, NodeIdOrName = curNode.NODE_NAME }); |
| | | var list = Biz.Db.Ado.UseStoredProcedure().GetDataTable("SP_MES_GET_NODE_BATCH_COUNT", pars).AsEnumerable().ToList(); |
| | | SugarParameter[] pars = MainDB.Ado.GetParameters(new { BATCH = CurBatch.Batch.BATCH_NO, NodeIdOrName = curNode.NODE_NAME }); |
| | | var list = MainDB.Ado.UseStoredProcedure().GetDataTable("SP_MES_GET_NODE_BATCH_COUNT", pars).AsEnumerable().ToList(); |
| | | if (!list.IsNullOrEmpty()) |
| | | { |
| | | var batchCount = list.Where(q => q["ProdDate"].ToString() == "Whole").FirstOrDefault(); |
| | |
| | | action.IsSuccessed = false; |
| | | //action.LocaleMsg = new($"åºè´§æ°é设å®ä¸º[{0}]ï¼ç®åå
è£
äº[{1}]ï¼å
è£
å°¾æ°çæ°éå¿
鿝[{2}]ï¼è¯·è£
夿°éååç»æå
è£
"); |
| | | action.LocaleMsg = new("MES.Transaction.PackingNode.NotMatchShipQty", shipQty, curQty, shipQty % ruleQty); |
| | | return action; |
| | | return SetOutPutMqttMsg(action); |
| | | } |
| | | |
| | | NodeCmd = "PkgSubmit"; |
| | |
| | | action.CatchExceptionWithLog(ex, $"å
è£
å·¥åºï¼æå¨ç»æå
è£
å¼å¸¸"); |
| | | NodeCmd = null; |
| | | } |
| | | return action; |
| | | return SetOutPutMqttMsg(action); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | try |
| | | { |
| | | var CurPkg = Context.ContainsKey("CurPackage") ? Context["CurPackage"] as WipPkg : null; |
| | | var LabelPV = Biz.Db.Queryable<BAS_LABEL_PV>().ToList(); |
| | | var label = CurPkg.Item.LABEL_CODE.IsNullOrEmpty() ? null : Biz.Db.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == CurPkg.Item.LABEL_CODE).IncludesAllFirstLayer().First(); |
| | | var LabelPV = MainDB.Queryable<BAS_LABEL_PV>().ToList(); |
| | | var label = CurPkg.Item.LABEL_CODE.IsNullOrEmpty() ? null : MainDB.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == CurPkg.Item.LABEL_CODE).IncludesAllFirstLayer().First(); |
| | | var printLb = SetLabelVariables(LabelPV, label, new PackingAction(), CurPkg); |
| | | action.Data = new PackingActionOutput() |
| | | { |
| | |
| | | { |
| | | #region Propertys & Variables |
| | | #region åºå®åæ³ï¼å·¥åºä¸çå¿
è¦ä¿¡æ¯ |
| | | public DbClient MainDB { get; set; } |
| | | public bool IsFinished { get; set; } = false; |
| | | public IWorkStep CurStep { get; set; } |
| | | public IPosition CurPosition { get; set; } |
| | |
| | | public void Init(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting) |
| | | { |
| | | #region åºå®åæ³ï¼ç»é»è®¤åéèµå¼ |
| | | MainDB = position.MainDB; |
| | | CurStep = curStep; |
| | | CurPosition = position; |
| | | NodeAct = nodeAct; |
| | |
| | | #endregion |
| | | |
| | | //è·å产åBOM |
| | | Boms = Biz.Db.Queryable<BAS_PROD_BOM>().Where(q => q.PROD_CODE == CurPosition.WorkBatch.WO.ITEM_CODE).ToList(); |
| | | Boms = MainDB.Queryable<BAS_PROD_BOM>().Where(q => q.PROD_CODE == CurPosition.WorkBatch.WO.ITEM_CODE).ToList(); |
| | | //è·åä¸æç©æ |
| | | var assyList = new List<AssemblySetting>(); |
| | | try |
| | |
| | | } |
| | | } |
| | | var codes = assyList.Select(q => q.ITEM_CODE).ToList(); |
| | | var items = Biz.Db.Queryable<BAS_ITEM>().Where(q => codes.Contains(q.ITEM_CODE) && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).ToList(); |
| | | var items = MainDB.Queryable<BAS_ITEM>().Where(q => codes.Contains(q.ITEM_CODE) && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).ToList(); |
| | | //è·åä¸æç©æçæ¿ä»£æ |
| | | foreach (var assy in assyList) |
| | | { |
| | |
| | | if (!bom.IsNullOrEmpty()) |
| | | { |
| | | var subs = bom.SUB_CODE.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); |
| | | var surItems = Biz.Db.Queryable<BAS_ITEM>().Where(q => subs.Contains(q.ITEM_CODE) && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).ToList(); |
| | | var surItems = MainDB.Queryable<BAS_ITEM>().Where(q => subs.Contains(q.ITEM_CODE) && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).ToList(); |
| | | foreach (var sub in surItems) |
| | | { |
| | | if (!item.SubItems.Any(q => q.ITEM_CODE == sub.ITEM_CODE)) |
| | |
| | | { |
| | | #region Propertys & Variables |
| | | #region åºå®åæ³ï¼å·¥åºä¸çå¿
è¦ä¿¡æ¯ |
| | | public DbClient MainDB { get; set; } |
| | | public bool IsFinished { get; set; } = false; |
| | | public IWorkStep CurStep { get; set; } |
| | | public IPosition CurPosition { get; set; } |
| | |
| | | public void Init(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting) |
| | | { |
| | | #region åºå®åæ³ï¼ç»é»è®¤åéèµå¼ |
| | | MainDB = position.MainDB; |
| | | CurStep = curStep; |
| | | CurPosition = position; |
| | | NodeAct = nodeAct; |
| | |
| | | { |
| | | #region Propertys & Variables |
| | | #region åºå®åæ³ï¼å·¥åºä¸çå¿
è¦ä¿¡æ¯ |
| | | public DbClient MainDB { get; set; } |
| | | public bool IsFinished { get; set; } = false; |
| | | public IWorkStep CurStep { get; set; } |
| | | public IPosition CurPosition { get; set; } |
| | |
| | | public void Init(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting) |
| | | { |
| | | #region åºå®åæ³ï¼ç»é»è®¤åéèµå¼ |
| | | MainDB = position.MainDB; |
| | | CurStep = curStep; |
| | | CurPosition = position; |
| | | NodeAct = nodeAct; |
| | |
| | | #endregion |
| | | |
| | | //è·åå½å产åå¨å½å客æ·çå
³ç³» |
| | | CustInfo = Biz.Db.Queryable<BAS_ITEM_CUST>().Where(q => q.ITEM_ID == CurPosition.WorkBatch.WO.ItemInfo.ID && q.CUST_CODE == CurPosition.WorkBatch.WO.CUST_CODE).First(); |
| | | CustInfo = MainDB.Queryable<BAS_ITEM_CUST>().Where(q => q.ITEM_ID == CurPosition.WorkBatch.WO.ItemInfo.ID && q.CUST_CODE == CurPosition.WorkBatch.WO.CUST_CODE).First(); |
| | | |
| | | CurStep.Message = Biz.L("æ«æåå
æ¡ç æå®¢æ·æ¡ç "); |
| | | CurStep.Status = StepStatus.Normal; |
| | |
| | | } |
| | | U9Cost = (DateTime.Now - begin).TotalSeconds; |
| | | |
| | | FlowCSN = Biz.Db.Queryable<MES_CUST_SN>().Where(q => q.FLOW_SN == wipSn.SN || q.CUST_SN == wipSn.SN).First(); |
| | | FlowCSN = MainDB.Queryable<MES_CUST_SN>().Where(q => q.FLOW_SN == wipSn.SN || q.CUST_SN == wipSn.SN).First(); |
| | | //æ¾ä¸å°ç产记å½ï¼è®¤ä¸ºæ«æé误 |
| | | if (FlowCSN.IsNullOrEmpty()) |
| | | { |
| | |
| | | { |
| | | #region Propertys & Variables |
| | | #region åºå®åæ³ï¼å·¥åºä¸çå¿
è¦ä¿¡æ¯ |
| | | public DbClient MainDB { get; set; } |
| | | public bool IsFinished { get; set; } = false; |
| | | public IWorkStep CurStep { get; set; } |
| | | public IPosition CurPosition { get; set; } |
| | |
| | | CurPosition = position; |
| | | NodeAct = nodeAct; |
| | | Setting = setting; |
| | | MainDB = position.MainDB; |
| | | #endregion |
| | | |
| | | //æ£å¸¸æ¡ç è¿ç«æ§è¡å
è£
è¡ä¸º |
| | | PkgRule = Biz.Db.Queryable<BAS_PKG_RULE>().Where(q => q.RULE_CODE == setting.PKG_CODE).IncludesAllFirstLayer().IncludesAllSecondLayer(q => q.Details).First(); |
| | | PkgRule = MainDB.Queryable<BAS_PKG_RULE>().Where(q => q.RULE_CODE == setting.PKG_CODE).IncludesAllFirstLayer().IncludesAllSecondLayer(q => q.Details).First(); |
| | | |
| | | //æ ¹æ®è¡ä¸ºè®¾ç½®è·åå¤å±å
è£
çæ ç¾æå°æ¨¡æ¿åå
¸ |
| | | var codes = (Setting.OPTION_1 ?? "").JsonToObject<List<WipPkgItem>>() ?? new List<WipPkgItem>(); |
| | | foreach (var code in codes) |
| | | { |
| | | var label = code.LABEL_CODE.IsNullOrEmpty() ? null : Biz.Db.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == code.LABEL_CODE).IncludesAllFirstLayer().First(); |
| | | var label = code.LABEL_CODE.IsNullOrEmpty() ? null : MainDB.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == code.LABEL_CODE).IncludesAllFirstLayer().First(); |
| | | LabelDic.Add(code.PKG_LEVEL, label); |
| | | } |
| | | LabelPV = Biz.Db.Queryable<BAS_LABEL_PV>().ToList(); |
| | | LabelPV = MainDB.Queryable<BAS_LABEL_PV>().ToList(); |
| | | |
| | | //妿工åºä¸ä¸æä¸æ²¡æå
è£
è®°å½åæ°å»ºä¸ä¸ªï¼æä¸æªå
è£
宿åè·åå½åçå
è£
è®°å½ |
| | | if (CurPosition.Context.ContainsKey("CurPackage") && !CurPosition.Context["CurPackage"].IsNullOrEmpty() && !(CurPosition.Context["CurPackage"] as WipPkg).IsFinished) |
| | |
| | | RULE_CODE = PkgRule.RULE_CODE, |
| | | RULE_NAME = PkgRule.RULE_NAME, |
| | | PROD_CODE = CurPosition.WorkBatch.WO.ITEM_CODE, |
| | | CustSN = Biz.Db.Queryable<MES_CUST_SN>().Where(q => q.FLOW_SN == CurPosition.CurWipSNs.First().FLOW_SN).First(), |
| | | CustSN = MainDB.Queryable<MES_CUST_SN>().Where(q => q.FLOW_SN == CurPosition.CurWipSNs.First().FLOW_SN).First(), |
| | | Item = new WipPkgItem() |
| | | { |
| | | PKG_CODE = max.PKG_CODE, |
| | |
| | | //è·åæ¯å¦å
è£
å®åéè¦ç§°é |
| | | CurPkg.NeedWeighing = Setting.OPTION_2 == "Y"; |
| | | //è·åå
è£
è§åçç§°éèå´ |
| | | PkgProd = Biz.Db.Queryable<BAS_PKG_PROD>().Where(q => q.PKG_RULE_ID == PkgRule.ID && q.ITEM_CODE == CurPosition.WorkBatch.WO.ITEM_CODE).First(); |
| | | PkgProd = MainDB.Queryable<BAS_PKG_PROD>().Where(q => q.PKG_RULE_ID == PkgRule.ID && q.ITEM_CODE == CurPosition.WorkBatch.WO.ITEM_CODE).First(); |
| | | |
| | | CurStep?.SetStatusMessage(StepStatus.Normal, Biz.L("è®°å½å
è£
æ°æ®")); |
| | | } |
| | |
| | | CurPosition = position; |
| | | NodeAct = null; |
| | | Setting = null; |
| | | MainDB = position.MainDB; |
| | | #endregion |
| | | //è·åå½åçå
è£
è®°å½ |
| | | if (CurPosition.Context.ContainsKey("CurPackage") && !CurPosition.Context["CurPackage"].IsNullOrEmpty()) |
| | |
| | | throw new Exception("æ¾ä¸å°å
è£
æ°æ®ï¼è¯·éæ°æ«æéè¦å
è£
ç产å"); |
| | | } |
| | | //æå¨ç»æå
è£
ä¸ç¨ï¼ä¸´æ¶æ§è¡è¡ä¸º |
| | | PkgRule = Biz.Db.Queryable<BAS_PKG_RULE>().Where(q => q.RULE_CODE == CurPkg.RULE_CODE).IncludesAllFirstLayer().IncludesAllSecondLayer(q => q.Details).First(); |
| | | PkgRule = MainDB.Queryable<BAS_PKG_RULE>().Where(q => q.RULE_CODE == CurPkg.RULE_CODE).IncludesAllFirstLayer().IncludesAllSecondLayer(q => q.Details).First(); |
| | | |
| | | //æ ¹æ®è¡ä¸ºè®¾ç½®è·åå¤å±å
è£
çæ ç¾æå°æ¨¡æ¿åå
¸ |
| | | LabelDic = CurPosition.Context["CurLabelDic"] as Dictionary<int, BAS_LABEL_TEMP>; |
| | | LabelPV = Biz.Db.Queryable<BAS_LABEL_PV>().ToList(); |
| | | LabelPV = MainDB.Queryable<BAS_LABEL_PV>().ToList(); |
| | | //è·åå
è£
è§åçç§°éèå´ |
| | | PkgProd = Biz.Db.Queryable<BAS_PKG_PROD>().Where(q => q.PKG_RULE_ID == PkgRule.ID && q.ITEM_CODE == CurPkg.PROD_CODE).First(); |
| | | PkgProd = MainDB.Queryable<BAS_PKG_PROD>().Where(q => q.PKG_RULE_ID == PkgRule.ID && q.ITEM_CODE == CurPkg.PROD_CODE).First(); |
| | | //æ |
| | | |
| | | CurStep?.SetStatusMessage(StepStatus.Normal, Biz.L("è®°å½å
è£
æ°æ®")); |
| | |
| | | IsFinished = true, |
| | | }; |
| | | |
| | | CurPkgItem.Package = Biz.Db.Queryable<MES_WIP_PKG>().Where(q => q.SN == CurPkgItem.SN && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).First() ?? new() |
| | | CurPkgItem.Package = MainDB.Queryable<MES_WIP_PKG>().Where(q => q.SN == CurPkgItem.SN && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).First() ?? new() |
| | | { |
| | | AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, |
| | | AUTH_PROD = CurPosition.CurLine.LINE_CODE, |
| | |
| | | { |
| | | #region Propertys & Variables |
| | | #region åºå®åæ³ï¼å·¥åºä¸çå¿
è¦ä¿¡æ¯ |
| | | public DbClient MainDB { get; set; } |
| | | public bool IsFinished { get; set; } = false; |
| | | public IWorkStep CurStep { get; set; } |
| | | public IPosition CurPosition { get; set; } |
| | |
| | | public void Init(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting) |
| | | { |
| | | #region åºå®åæ³ï¼ç»é»è®¤åéèµå¼ |
| | | MainDB = position.MainDB; |
| | | CurStep = curStep; |
| | | CurPosition = position; |
| | | NodeAct = nodeAct; |
| | | Setting = setting; |
| | | #endregion |
| | | |
| | | Label = Biz.Db.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == setting.LABEL_CODE).IncludesAllFirstLayer().First(); |
| | | LabelPV = Biz.Db.Queryable<BAS_LABEL_PV>().ToList(); |
| | | Label = MainDB.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == setting.LABEL_CODE).IncludesAllFirstLayer().First(); |
| | | LabelPV = MainDB.Queryable<BAS_LABEL_PV>().ToList(); |
| | | |
| | | CurStep.Message = Biz.L("çå¾
æ ç¾æå°"); |
| | | CurStep.Status = StepStatus.Normal; |
| | |
| | | { |
| | | #region Propertys & Variables |
| | | #region åºå®åæ³ï¼å·¥åºä¸çå¿
è¦ä¿¡æ¯ |
| | | public DbClient MainDB { get; set; } |
| | | public bool IsFinished { get; set; } = false; |
| | | public IWorkStep CurStep { get; set; } |
| | | public IPosition CurPosition { get; set; } |
| | |
| | | public void Init(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting) |
| | | { |
| | | #region åºå®åæ³ï¼ç»é»è®¤åéèµå¼ |
| | | MainDB = position.MainDB; |
| | | CurStep = curStep; |
| | | CurPosition = position; |
| | | NodeAct = nodeAct; |
| | | Setting = setting; |
| | | #endregion |
| | | |
| | | Label = Biz.Db.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == setting.LABEL_CODE).IncludesAllFirstLayer().First(); |
| | | LabelPV = Biz.Db.Queryable<BAS_LABEL_PV>().ToList(); |
| | | Label = MainDB.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == setting.LABEL_CODE).IncludesAllFirstLayer().First(); |
| | | LabelPV = MainDB.Queryable<BAS_LABEL_PV>().ToList(); |
| | | |
| | | CurStep.Message = Biz.L("çå¾
æ ç¾æå°"); |
| | | CurStep.Status = StepStatus.Normal; |
| | |
| | | { |
| | | #region Propertys & Variables |
| | | #region åºå®åæ³ï¼å·¥åºä¸çå¿
è¦ä¿¡æ¯ |
| | | public DbClient MainDB { get; set; } |
| | | public bool IsFinished { get; set; } = false; |
| | | public IWorkStep CurStep { get; set; } |
| | | public IPosition CurPosition { get; set; } |
| | |
| | | public void Init(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting) |
| | | { |
| | | #region åºå®åæ³ï¼ç»é»è®¤åéèµå¼ |
| | | MainDB = position.MainDB; |
| | | CurStep = curStep; |
| | | CurPosition = position; |
| | | NodeAct = nodeAct; |
| | |
| | | #endregion |
| | | |
| | | //è·åæå°æ¨¡æ¿ |
| | | Label = Biz.Db.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == setting.LABEL_CODE).IncludesAllFirstLayer().First(); |
| | | LabelPV = Biz.Db.Queryable<BAS_LABEL_PV>().ToList(); |
| | | Label = MainDB.Queryable<BAS_LABEL_TEMP>().Where(q => q.LABEL_CODE == setting.LABEL_CODE).IncludesAllFirstLayer().First(); |
| | | LabelPV = MainDB.Queryable<BAS_LABEL_PV>().ToList(); |
| | | |
| | | //è·åå½å产åå¨å½å客æ·çå
³ç³» |
| | | CustInfo = Biz.Db.Queryable<BAS_ITEM_CUST>().Where(q => q.ITEM_ID == CurPosition.WorkBatch.WO.ItemInfo.ID && q.CUST_CODE == CurPosition.WorkBatch.WO.CUST_CODE).First(); |
| | | CustInfo = MainDB.Queryable<BAS_ITEM_CUST>().Where(q => q.ITEM_ID == CurPosition.WorkBatch.WO.ItemInfo.ID && q.CUST_CODE == CurPosition.WorkBatch.WO.CUST_CODE).First(); |
| | | |
| | | CurStep.Message = Biz.L("æ«æåå
æ¡ç æå®¢æ·æ¡ç "); |
| | | CurStep.Status = StepStatus.Normal; |
| | |
| | | } |
| | | |
| | | var wipSn = CurPosition.CurWipSNs.First(); |
| | | FlowCSN = Biz.Db.Queryable<MES_CUST_SN>().Where(q => q.FLOW_SN == wipSn.SN || q.CUST_SN == wipSn.SN).First(); |
| | | FlowCSN = MainDB.Queryable<MES_CUST_SN>().Where(q => q.FLOW_SN == wipSn.SN || q.CUST_SN == wipSn.SN).First(); |
| | | //æ¾ä¸å°ç产记å½ï¼è®¤ä¸ºæ«æé误 |
| | | if (FlowCSN.IsNullOrEmpty()) |
| | | { |
| | |
| | | var action = new ApiAction<SubmitOutput>(new SubmitOutput()); |
| | | |
| | | //æ¥è¯¢æ¯å¦åå¨å·²å¯¼å
¥çå®¢æ·æ¡ç |
| | | CustCSN = Biz.Db.Queryable<MES_CUST_SN>().Where(q => q.CUST_SN == input.Data).First(); |
| | | CustCSN = MainDB.Queryable<MES_CUST_SN>().Where(q => q.CUST_SN == input.Data).First(); |
| | | |
| | | var isOK = true; |
| | | //å®¢æ·æ¡ç æ«å°åå
æ¡ç |
| | |
| | | { |
| | | #region Propertys & Variables |
| | | #region åºå®åæ³ï¼å·¥åºä¸çå¿
è¦ä¿¡æ¯ |
| | | public DbClient MainDB { get; set; } |
| | | public bool IsFinished { get; set; } = false; |
| | | public IWorkStep CurStep { get; set; } |
| | | public IPosition CurPosition { get; set; } |
| | |
| | | public void Init(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting) |
| | | { |
| | | #region åºå®åæ³ï¼ç»é»è®¤åéèµå¼ |
| | | MainDB = position.MainDB; |
| | | CurStep = curStep; |
| | | CurPosition = position; |
| | | NodeAct = nodeAct; |
| | |
| | | #endregion |
| | | |
| | | //è·åå½å产åå¨å½å客æ·çå
³ç³» |
| | | CustInfo = Biz.Db.Queryable<BAS_ITEM_CUST>().Where(q => q.ITEM_ID == CurPosition.WorkBatch.WO.ItemInfo.ID && q.CUST_CODE == CurPosition.WorkBatch.WO.CUST_CODE).First(); |
| | | CustInfo = MainDB.Queryable<BAS_ITEM_CUST>().Where(q => q.ITEM_ID == CurPosition.WorkBatch.WO.ItemInfo.ID && q.CUST_CODE == CurPosition.WorkBatch.WO.CUST_CODE).First(); |
| | | |
| | | CurStep.SetStatusMessage(StepStatus.Normal, Biz.L("éªè¯æ¯å¦å®¢æ·æ ç¾")); |
| | | } |
| | |
| | | { |
| | | #region Propertys & Variables |
| | | #region åºå®åæ³ï¼å·¥åºä¸çå¿
è¦ä¿¡æ¯ |
| | | public DbClient MainDB { get; set; } |
| | | public bool IsFinished { get; set; } = false; |
| | | public IWorkStep CurStep { get; set; } |
| | | public IPosition CurPosition { get; set; } |
| | |
| | | public void Init(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting) |
| | | { |
| | | #region åºå®åæ³ï¼ç»é»è®¤åéèµå¼ |
| | | MainDB = position.MainDB; |
| | | CurStep = curStep; |
| | | CurPosition = position; |
| | | NodeAct = nodeAct; |
| | | Setting = setting; |
| | | #endregion |
| | | |
| | | CurPkg = Biz.Db.Queryable<MES_WIP_PKG>().Where(q => q.SN == CurPosition.CurSN && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).First() ?? new() |
| | | CurPkg = MainDB.Queryable<MES_WIP_PKG>().Where(q => q.SN == CurPosition.CurSN && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).First() ?? new() |
| | | { |
| | | AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, |
| | | AUTH_PROD = CurPosition.CurLine.LINE_CODE, |
| | |
| | | { |
| | | #region Propertys & Variables |
| | | #region åºå®åæ³ï¼å·¥åºä¸çå¿
è¦ä¿¡æ¯ |
| | | public DbClient MainDB { get; set; } |
| | | public bool IsFinished { get; set; } = false; |
| | | public IWorkStep CurStep { get; set; } |
| | | public IPosition CurPosition { get; set; } |
| | |
| | | public void Init(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting) |
| | | { |
| | | #region åºå®åæ³ï¼ç»é»è®¤åéèµå¼ |
| | | MainDB = position.MainDB; |
| | | CurStep = curStep; |
| | | CurPosition = position; |
| | | NodeAct = nodeAct; |
| | |
| | | |
| | | //è·åæ©å±å段å®ä¹ |
| | | var seq = Setting.ITEM_CODE.ToInt32(); |
| | | ExtInfo = Biz.Db.Queryable<BAS_WIP_EXT>().Where(q => q.SEQ == seq).First(); |
| | | ExtInfo = MainDB.Queryable<BAS_WIP_EXT>().Where(q => q.SEQ == seq).First(); |
| | | //è·åå½åSNçæ©å±ä¿¡æ¯ |
| | | CurWipExt = Biz.Db.Queryable<MES_WIP_EXT>().Where(q => CurPosition.CurWipSNs.Any(w => w.SN == q.SN)).ToList(); |
| | | CurWipExt = MainDB.Queryable<MES_WIP_EXT>().Where(q => CurPosition.CurWipSNs.Any(w => w.SN == q.SN)).ToList(); |
| | | foreach (var wipSN in CurPosition.CurWipSNs) |
| | | { |
| | | if (!CurWipExt.Any(q => q.SN == wipSN.SN)) |
| | |
| | | { |
| | | #region Propertys & Variables |
| | | #region åºå®åæ³ï¼å·¥åºä¸çå¿
è¦ä¿¡æ¯ |
| | | public DbClient MainDB { get; set; } |
| | | public bool IsFinished { get; set; } = false; |
| | | public IWorkStep CurStep { get; set; } |
| | | public IPosition CurPosition { get; set; } |
| | |
| | | public void Init(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting) |
| | | { |
| | | #region åºå®åæ³ï¼ç»é»è®¤åéèµå¼ |
| | | MainDB = position.MainDB; |
| | | CurStep = curStep; |
| | | CurPosition = position; |
| | | NodeAct = nodeAct; |
| | |
| | | #endregion |
| | | |
| | | //è·å产åBOM |
| | | Boms = Biz.Db.Queryable<BAS_PROD_BOM>().Where(q => q.PROD_CODE == CurPosition.WorkBatch.WO.ITEM_CODE).ToList(); |
| | | Boms = MainDB.Queryable<BAS_PROD_BOM>().Where(q => q.PROD_CODE == CurPosition.WorkBatch.WO.ITEM_CODE).ToList(); |
| | | //è·åä¸æç©æ |
| | | var assyList = new List<AssemblySetting>(); |
| | | try |
| | |
| | | } |
| | | } |
| | | var codes = assyList.Select(q => q.ITEM_CODE).ToList(); |
| | | var items = Biz.Db.Queryable<BAS_ITEM>().Where(q => codes.Contains(q.ITEM_CODE) && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).ToList(); |
| | | var items = MainDB.Queryable<BAS_ITEM>().Where(q => codes.Contains(q.ITEM_CODE) && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).ToList(); |
| | | //è·åä¸æç©æçæ¿ä»£æ |
| | | foreach (var assy in assyList) |
| | | { |
| | |
| | | if (!bom.IsNullOrEmpty()) |
| | | { |
| | | var subs = bom.SUB_CODE.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); |
| | | var surItems = Biz.Db.Queryable<BAS_ITEM>().Where(q => subs.Contains(q.ITEM_CODE) && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).ToList(); |
| | | var surItems = MainDB.Queryable<BAS_ITEM>().Where(q => subs.Contains(q.ITEM_CODE) && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).ToList(); |
| | | foreach (var sub in surItems) |
| | | { |
| | | if (!item.SubItems.Any(q => q.ITEM_CODE == sub.ITEM_CODE)) |
| | |
| | | { |
| | | isOK = false; |
| | | //卿¨èæ¹æ¬¡æå±å·¥åçæ¡ç ä¸åå¨ |
| | | if (Biz.Db.Queryable<BIZ_MES_WO_SN>().Any(q => suggest.Contains(q.WORK_ORDER) && (q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN))) |
| | | if (MainDB.Queryable<BIZ_MES_WO_SN>().Any(q => suggest.Contains(q.WORK_ORDER) && (q.SN == input.SN || q.FLOW_SN == input.SN || q.TRAY_SN == input.SN))) |
| | | { |
| | | isOK = true; |
| | | } |
| | |
| | | { |
| | | #region Propertys & Variables |
| | | #region åºå®åæ³ï¼å·¥åºä¸çå¿
è¦ä¿¡æ¯ |
| | | public DbClient MainDB { get; set; } |
| | | public bool IsFinished { get; set; } = false; |
| | | public IWorkStep CurStep { get; set; } |
| | | public IPosition CurPosition { get; set; } |
| | |
| | | public void Init(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting) |
| | | { |
| | | #region åºå®åæ³ï¼ç»é»è®¤åéèµå¼ |
| | | MainDB = position.MainDB; |
| | | CurStep = curStep; |
| | | CurPosition = position; |
| | | NodeAct = nodeAct; |
| | |
| | | <PrivateAssets>all</PrivateAssets> |
| | | <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> |
| | | </PackageReference> |
| | | <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.11.1" /> |
| | | <PackageReference Include="MSTest.TestAdapter" Version="3.6.0" /> |
| | | <PackageReference Include="MSTest.TestFramework" Version="3.6.0" /> |
| | | <PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" /> |
| | | <PackageReference Include="MSTest.TestAdapter" Version="3.6.3" /> |
| | | <PackageReference Include="MSTest.TestFramework" Version="3.6.3" /> |
| | | </ItemGroup> |
| | | |
| | | <ItemGroup> |
| | |
| | | <PackageReference Include="MailKit" Version="4.8.0" /> |
| | | <PackageReference Include="NLog" Version="5.3.4" /> |
| | | <PackageReference Include="NLog.Database" Version="5.3.4" /> |
| | | <PackageReference Include="Rhea.Common" Version="6.1.7.1360" /> |
| | | <PackageReference Include="Rhea.Common" Version="6.1.7.1361" /> |
| | | <PackageReference Include="SharpZipLib" Version="1.4.2" /> |
| | | <PackageReference Include="Sundial" Version="2.64.0" /> |
| | | <PackageReference Include="Swashbuckle.AspNetCore" Version="7.1.0" /> |
| | |
| | | public interface IPosition : IMESTransaction |
| | | { |
| | | #region Propertys & Variables |
| | | public DbClient MainDB { get; } |
| | | public string UserCode { get; set; } |
| | | public string PostCode { get; set; } |
| | | public MES_FACTORY CurFactory { get; set; } |
| | |
| | | /// </summary> |
| | | public bool IsFinished { get; set; } = false; |
| | | /// <summary> |
| | | /// çæ¶æ¯ |
| | | /// </summary> |
| | | public ShortMessage ShortMsg { get; set; } |
| | | /// <summary> |
| | | /// å½åæä½çèç¹åç§° |
| | | /// </summary> |
| | | public string NodeName { get; set; } |
| | |
| | | /// </summary> |
| | | public string NextStepID { get; set; } |
| | | /// <summary> |
| | | /// çæ¶æ¯ |
| | | /// </summary> |
| | | public ShortMessage ShortMsg { get; set; } |
| | | /// <summary> |
| | | /// Mqttæ¶æ¯ |
| | | /// </summary> |
| | | public MQTT.Message MqttMsg { get; set; } |
| | | /// <summary> |
| | | /// å½åæä½è¿åçæ°æ® |
| | | /// </summary> |
| | | public object Data { get; set; } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Text; |
| | | |
| | | namespace Tiger.Model |
| | | { |
| | | public class MQTT |
| | | { |
| | | public class Message |
| | | { |
| | | public Message() |
| | | { |
| | | |
| | | } |
| | | |
| | | public Message(bool isSuccessed, Voice voice, string content, string color) |
| | | { |
| | | IsSuccessed = isSuccessed; |
| | | Voice = voice; |
| | | Content = content; |
| | | Color = color; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦æå |
| | | /// </summary> |
| | | public bool IsSuccessed { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¯å¦å声 |
| | | /// </summary> |
| | | public Voice Voice { get; set; } |
| | | |
| | | /// <summary> |
| | | /// æ¶æ¯ |
| | | /// </summary> |
| | | public string Content { get; set; } |
| | | |
| | | /// <summary> |
| | | /// é¢è² |
| | | /// </summary> |
| | | public string Color { get; set; } |
| | | } |
| | | |
| | | public enum Voice |
| | | { |
| | | [Description("ä¸åé³")] |
| | | Silent, |
| | | [Description("æå")] |
| | | Success, |
| | | [Description("éè¿")] |
| | | Pass, |
| | | [Description("失败")] |
| | | Fail, |
| | | [Description("è¦å")] |
| | | Warning, |
| | | } |
| | | } |
| | | } |
| | |
| | | <ErrorReport>prompt</ErrorReport> |
| | | </PropertyGroup> |
| | | <ItemGroup> |
| | | <Reference Include="SqlSugar, Version=5.1.4.168, Culture=neutral, processorArchitecture=MSIL"> |
| | | <HintPath>..\packages\SqlSugar.5.1.4.169\lib\SqlSugar.dll</HintPath> |
| | | <Reference Include="SqlSugar, Version=5.1.4.170, Culture=neutral, processorArchitecture=MSIL"> |
| | | <HintPath>..\packages\SqlSugar.5.1.4.171-preview11\lib\SqlSugar.dll</HintPath> |
| | | </Reference> |
| | | <Reference Include="System" /> |
| | | <Reference Include="System.ComponentModel.DataAnnotations" /> |
| | |
| | | <ItemGroup> |
| | | <Compile Include="Base\DbEntityBase.cs" /> |
| | | <Compile Include="DTO\MESDTO.cs" /> |
| | | <Compile Include="Entitys\MQTTEntity.cs" /> |
| | | <Compile Include="Entitys\Api\Base.cs" /> |
| | | <Compile Include="Entitys\Automate\SNInfo.cs" /> |
| | | <Compile Include="Entitys\Automate\Vechicle.cs" /> |
| | |
| | | <?xml version="1.0" encoding="utf-8"?> |
| | | <packages> |
| | | <package id="Newtonsoft.Json" version="13.0.3" targetFramework="net452" /> |
| | | <package id="SqlSugar" version="5.1.4.169" targetFramework="net48" /> |
| | | <package id="SqlSugar" version="5.1.4.171-preview11" targetFramework="net48" /> |
| | | </packages> |