Tiger.Api/Language.dbBinary files differ
Tiger.Business.MES/WorkAction/Assembly.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,293 @@ using Rhea.Common; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using Tiger.IBusiness; using Tiger.IBusiness.MES.WorkAction; using Tiger.Model; using Tiger.Model.Entitys.MES.Position; namespace Tiger.Business.MES.WorkAction { public class Assembly : IAssembly { #region Propertys & Variables #region åºå®åæ³ï¼å·¥åºä¸çå¿ è¦ä¿¡æ¯ public bool IsFinished { get; set; } = false; public IWorkStep CurStep { get; set; } public IPosition CurPosition { get; set; } public MES_WO_NODE_ACT NodeAct { get; set; } public MES_WO_ACTION Setting { get; set; } #endregion public List<BAS_PROD_BOM> Boms { get; set; } = new(); public Dictionary<string, List<BAS_ITEM>> SubItemDic { get; set; } = new(); public AssemblyInfo CurAssembly { get; set; } = new(); #endregion Propertys & Variables #region Functions /// <summary> /// åå§åå·¥åºè¡ä¸º /// </summary> /// <returns></returns> public void Init(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting) { #region åºå®åæ³ï¼ç»é»è®¤åéèµå¼ CurStep = curStep; CurPosition = position; NodeAct = nodeAct; Setting = setting; #endregion //è·å产åBOM Boms = Biz.Db.Queryable<BAS_PROD_BOM>().Where(q => q.PROD_CODE == CurPosition.WorkBatch.WO.ITEM_CODE).ToList(); //è·åä¸æç©æ var assyList = new List<AssemblySetting>(); try { assyList = setting.ITEM_CODE.JsonToObject<List<AssemblySetting>>(); } catch (System.Exception ex) { var codeList = setting.ITEM_CODE.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); foreach (var code in codeList) { assyList.Add(new(){ ItemCode = code }); } } var codes = assyList.Select(q => q.ItemCode).ToList(); var items = Biz.Db.Queryable<BAS_ITEM>().Where(q => codes.Contains(q.ITEM_CODE) && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).ToList(); //è·åä¸æç©æçæ¿ä»£æ foreach (var assy in assyList) { var info = items.FirstOrDefault(q => q.ITEM_CODE == assy.ItemCode); if (!info.IsNullOrEmpty()) { var item = new AssemblyItem { ItemInfo = info, RuleCode = assy.RuleCode, LoadQty = assy.Qty, }; var bom = Boms.FirstOrDefault(q => q.ITEM_CODE == assy.ItemCode); 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(); if (!SubItemDic.ContainsKey(assy.ItemCode)) { SubItemDic.Add(assy.ItemCode, surItems); } } CurAssembly.Items.Add(item); } } } /// <summary> /// è·åè¡ä¸ºå¼å§çæç¤ºä¿¡æ¯ /// </summary> /// <returns></returns> public Locale GetBeginMsg() { var msg = new Locale("MES.WorkAction.Assembly.BeginMsg", string.Join("ï¼", CurAssembly.Items.Select(q => $"{q.ItemInfo.ITEM_NAME}({q.ItemInfo.ITEM_CODE})"))); //var msg = new Locale($"è¯·æ«æä»¥ä¸éè¦ä¸æçç©ææ¡ç ï¼{string.Join("ï¼", CurAssembly.Items.Select(q => $"{q.ItemInfo.ITEM_NAME}({q.ItemInfo.ITEM_CODE})"))}"); return msg; } /// <summary> /// å°è¯å¼å§æ§è¡å·¥åºè¡ä¸º /// </summary> /// <returns></returns> public ApiAction<SubmitOutput> TryBegin(SubmitInput input) { var action = new ApiAction<SubmitOutput>(new SubmitOutput()); if (input.SN != CurPosition.CurWipSN.SN) { action = SaveAssembly(input, action); return action; } //妿è¿åæåå认为å½åè¡ä¸ºå¯ä»¥å¼å§æ§è¡ï¼å¦åè¿å失败 action.IsSuccessed = false; return action; } /// <summary> /// å·¥åºè¡ä¸ºæäº¤æ°æ® /// </summary> /// <returns></returns> public ApiAction<SubmitOutput> Submit(SubmitInput input) { var action = new ApiAction<SubmitOutput>(new SubmitOutput()); action = SaveAssembly(input, action); //ä¸ææ°æ®ä¿å失败 if (!action.IsSuccessed) { //妿è¡ä¸ºè®¾ç½®ä¸ºåºééè¦éç½®å·¥åºæä½ if (NodeAct.NEED_RESET == "Y") { CurPosition.ResetNode(); } } return action; } public ApiAction<SubmitOutput> SaveAssembly(SubmitInput input, ApiAction<SubmitOutput> action) { try { foreach (var item in CurAssembly.Items.Where(q => !q.IsFinished)) { var isOK = true; //æ ¹æ®æ¡ç è§åéªè¯ä¸ææ¯å¦æ£ç¡® if (!item.RuleCode.IsNullOrEmpty()) { if (!Biz.CodeRule[item.RuleCode].IsNullOrEmpty()) { var result = Biz.CodeRule[item.RuleCode].Verify(input.SN); if (!result.IsSuccessed) { isOK = false; } } //ä¸å卿¡ç è§åï¼å夿æ¯å¦æèªå®ä¹è§åï¼æ²¡æåè¿å失败 else { switch (item.RuleCode) { case "èªè¡éªè¯": break; default: isOK = false; break; } } } //éªè¯éè¿åä¿åä¸æä¿¡æ¯ if (isOK) { var record = new MES_WIP_ASSY() { AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, AUTH_PROD = CurPosition.CurLine.LINE_CODE, SN = input.SN, PROD_SN = CurPosition.CurWipSN.SN, ITEM_CODE = item.ItemInfo.ITEM_CODE, QTY = 1, UNIT = item.ItemInfo.UNIT, WORK_ORDER = CurPosition.CurWipSN.WORK_ORDER, BATCH_NO = CurPosition.CurWipSN.BATCH_NO, ROT_CODE = CurPosition.CurWipSN.ROT_CODE, NODE_ID = CurPosition.CurWipSN.NODE_ID, NODE_NAME = CurPosition.CurWipSN.NODE_NAME, FTY_CODE = CurPosition.CurWipSN.FTY_CODE, WS_CODE = CurPosition.CurWipSN.WS_CODE, LINE_CODE = CurPosition.CurWipSN.LINE_CODE, POST_CODE = CurPosition.CurWipSN.POST_CODE, OPER_CODE = CurPosition.CurWipSN.OPER_CODE, SEGMENT = CurPosition.CurWipSN.SEGMENT, }; item.Records.Add(record); if (item.Records.Sum(q => q.QTY) >= item.LoadQty) { item.IsFinished = true; } action.IsSuccessed = true; action.Data.Data = CurAssembly; action.LocaleMsg = new Locale($"æ«æç©æ[{item.ItemInfo.ITEM_NAME}({item.ItemInfo.ITEM_CODE})çæ¡ç [{input.SN}]æåï¼è¯·ç»§ç»ä¸æ"); action.LocaleMsg = new Locale("MES.WorkAction.Assembly.LoadSuccess", item.ItemInfo.ITEM_NAME, item.ItemInfo.ITEM_CODE); //䏿宿 if (CurAssembly.IsFinished) { action = End(); } return action; } } //齿²¡æç©æéªè¯éè¿ï¼åè¿åéè¯¯ä¿¡æ¯ action.IsSuccessed = false; //action.LocaleMsg = new($"æ¡ç [{input.SN}]éªè¯å¤±è´¥ï¼ä¸æ¯ä»¥ä¸ç©æçæ¡ç ï¼{string.Join("ï¼", CurAssembly.Items.Where(q => !q.IsFinished).Select(q => $"{q.ItemInfo.ITEM_NAME}({q.ItemInfo.ITEM_CODE})"))}"); action.LocaleMsg = new("MES.WorkAction.Assembly.LoadFail", input.SN, string.Join("ï¼", CurAssembly.Items.Where(q => !q.IsFinished).Select(q => $"{q.ItemInfo.ITEM_NAME}({q.ItemInfo.ITEM_CODE})"))); } catch (System.Exception ex) { action.CatchExceptionWithLog(ex, $"䏿è¡ä¸ºï¼éªè¯æ¡ç [{input.SN}]å¹¶ä¿åæ°æ®å¤±è´¥"); action.IsSuccessed = false; action.LocaleMsg = new($"éªè¯æ¡ç [{input.SN}]å¹¶ä¿åæ°æ®å¤±è´¥ï¼å·¥åºå·²éç½®ï¼è¯·éæ°æ«æè¿ç«äº§åæ¡ç "); action.LocaleMsg = new("MES.WorkAction.Assembly.SaveAssemblyException", input.SN); CurPosition.ResetNode(); } return action; } /// <summary> /// ç»ææ§è¡å·¥åºè¡ä¸º /// </summary> /// <returns></returns> public ApiAction<SubmitOutput> End() { var action = new ApiAction<SubmitOutput>(new SubmitOutput()); //è®°å½è¡ä¸ºæä½è®°å½ var wipAct = new MES_WIP_ACT() { AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, AUTH_PROD = CurPosition.CurLine.LINE_CODE, HIS_ID = CurPosition.CurWipSNHis.ID, SN = CurPosition.CurWipSN.SN, STATUS = CurPosition.CurWipSN.STATUS, ITEM_CODE = CurPosition.CurWipSN.ITEM_CODE, WORK_ORDER = CurPosition.CurWipSN.WORK_ORDER, BATCH_NO = CurPosition.CurWipSN.BATCH_NO, ROT_CODE = CurPosition.CurWipSN.ROT_CODE, NODE_ID = CurPosition.CurWipSN.NODE_ID, NODE_NAME = CurPosition.CurWipSN.NODE_NAME, ACT_ID = NodeAct.ID, ACT_NAME = NodeAct.ACT_NAME, FTY_CODE = CurPosition.CurWipSN.FTY_CODE, WS_CODE = CurPosition.CurWipSN.WS_CODE, LINE_CODE = CurPosition.CurWipSN.LINE_CODE, POST_CODE = CurPosition.CurWipSN.POST_CODE, OPER_CODE = CurPosition.CurWipSN.OPER_CODE, SEGMENT = CurPosition.CurWipSN.SEGMENT, TRAY_SN = CurPosition.CurWipSN.TRAY_SN, OPERATION_TIME = DateTime.Now, SFTS_CODE = CurPosition.CurWipSN.SFTS_CODE, SFT_CODE = CurPosition.CurWipSN.SFT_CODE, PRD_CODE = CurPosition.CurWipSN.PRD_CODE, ACT_TYPE = NodeAct.ACT_TYPE, ACT_SN = CurPosition.CurWipSN.SN, ACT_VALUE_1 = CurAssembly.ToJson(), ACT_RESULT = "Y", TRACE_INFO = $"以ä¸ç©æä¸æå®æï¼{string.Join(",", CurAssembly.Items.Select(q => $"{q.ItemInfo.ITEM_NAME}({q.ItemInfo.ITEM_CODE})"))}", }; var records = new List<MES_WIP_ASSY>(); foreach (var item in CurAssembly.Items) { records.AddRange(item.Records); } //ä¿åæ°æ® CurStep.DBSubmitAction = () => { var db = CurPosition.GetCommitDB(); db.Storageable(wipAct, CurPosition.UserCode).ExecuteCommand(); db.Insertable(records, CurPosition.UserCode).ExecuteCommand(); }; IsFinished = true; //action.LocaleMsg = new($"以ä¸ç©æä¸æå®æï¼{string.Join("ï¼", CurAssembly.Items.Select(q => $"{q.ItemInfo.ITEM_NAME}({q.ItemInfo.ITEM_CODE})"))}"); action.LocaleMsg = new("MES.WorkAction.Assembly.LoadFinish", string.Join("ï¼", CurAssembly.Items.Select(q => $"{q.ItemInfo.ITEM_NAME}({q.ItemInfo.ITEM_CODE})"))); return action; } #endregion Functions } } Tiger.Business.MES/WorkAction/IPQC.cs
@@ -6,6 +6,7 @@ using System.Text; using System.Threading.Tasks; using Tiger.IBusiness; using Tiger.IBusiness.MES.WorkAction; using Tiger.Model; using Tiger.Model.Entitys.MES.Position; Tiger.Business.MES/WorkAction/PackingAction.cs
@@ -6,6 +6,7 @@ using System.Text; using System.Threading.Tasks; using Tiger.IBusiness; using Tiger.IBusiness.MES.WorkAction; using Tiger.Model; using Tiger.Model.Entitys.MES.Position; Tiger.Business.MES/WorkAction/PrintLabel.cs
@@ -1,5 +1,4 @@ using MailKit.Search; using Rhea.Common; using Rhea.Common; using SqlSugar; using System; using System.Collections.Generic; @@ -7,6 +6,7 @@ using System.Text; using System.Threading.Tasks; using Tiger.IBusiness; using Tiger.IBusiness.MES.WorkAction; using Tiger.Model; using Tiger.Model.Entitys.MES.Position; Tiger.Business.MES/WorkAction/WipExtInfo.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,293 @@ using Rhea.Common; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tiger.IBusiness; using Tiger.IBusiness.MES.WorkAction; using Tiger.Model; using Tiger.Model.Entitys.MES.Position; namespace Tiger.Business.MES.WorkAction { public class WipExtInfo : IWipExtInfo { #region Propertys & Variables #region åºå®åæ³ï¼å·¥åºä¸çå¿ è¦ä¿¡æ¯ public bool IsFinished { get; set; } = false; public IWorkStep CurStep { get; set; } public IPosition CurPosition { get; set; } public MES_WO_NODE_ACT NodeAct { get; set; } public MES_WO_ACTION Setting { get; set; } #endregion public List<BAS_PROD_BOM> Boms { get; set; } = new(); public Dictionary<string, List<BAS_ITEM>> SubItemDic { get; set; } = new(); public AssemblyInfo CurAssembly { get; set; } = new(); #endregion Propertys & Variables #region Functions /// <summary> /// åå§åå·¥åºè¡ä¸º /// </summary> /// <returns></returns> public void Init(IWorkStep curStep, IPosition position, MES_WO_NODE_ACT nodeAct, MES_WO_ACTION setting) { #region åºå®åæ³ï¼ç»é»è®¤åéèµå¼ CurStep = curStep; CurPosition = position; NodeAct = nodeAct; Setting = setting; #endregion //è·å产åBOM Boms = Biz.Db.Queryable<BAS_PROD_BOM>().Where(q => q.PROD_CODE == CurPosition.WorkBatch.WO.ITEM_CODE).ToList(); //è·åä¸æç©æ var assyList = new List<AssemblySetting>(); try { assyList = setting.ITEM_CODE.JsonToObject<List<AssemblySetting>>(); } catch (System.Exception ex) { var codeList = setting.ITEM_CODE.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries); foreach (var code in codeList) { assyList.Add(new() { ItemCode = code }); } } var codes = assyList.Select(q => q.ItemCode).ToList(); var items = Biz.Db.Queryable<BAS_ITEM>().Where(q => codes.Contains(q.ITEM_CODE) && q.AUTH_ORG == CurPosition.WorkBatch.WO.AUTH_ORG).ToList(); //è·åä¸æç©æçæ¿ä»£æ foreach (var assy in assyList) { var info = items.FirstOrDefault(q => q.ITEM_CODE == assy.ItemCode); if (!info.IsNullOrEmpty()) { var item = new AssemblyItem { ItemInfo = info, RuleCode = assy.RuleCode, LoadQty = assy.Qty, }; var bom = Boms.FirstOrDefault(q => q.ITEM_CODE == assy.ItemCode); 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(); if (!SubItemDic.ContainsKey(assy.ItemCode)) { SubItemDic.Add(assy.ItemCode, surItems); } } CurAssembly.Items.Add(item); } } } /// <summary> /// è·åè¡ä¸ºå¼å§çæç¤ºä¿¡æ¯ /// </summary> /// <returns></returns> public Locale GetBeginMsg() { var msg = new Locale("MES.WorkAction.WipExtInfo.BeginMsg", string.Join("ï¼", CurAssembly.Items.Select(q => $"{q.ItemInfo.ITEM_NAME}({q.ItemInfo.ITEM_CODE})"))); //var msg = new Locale($"è¯·æ«æä»¥ä¸éè¦ä¸æçç©ææ¡ç ï¼{string.Join("ï¼", CurAssembly.Items.Select(q => $"{q.ItemInfo.ITEM_NAME}({q.ItemInfo.ITEM_CODE})"))}"); return msg; } /// <summary> /// å°è¯å¼å§æ§è¡å·¥åºè¡ä¸º /// </summary> /// <returns></returns> public ApiAction<SubmitOutput> TryBegin(SubmitInput input) { var action = new ApiAction<SubmitOutput>(new SubmitOutput()); if (input.SN != CurPosition.CurWipSN.SN) { action = SaveAssembly(input, action); return action; } //妿è¿åæåå认为å½åè¡ä¸ºå¯ä»¥å¼å§æ§è¡ï¼å¦åè¿å失败 action.IsSuccessed = false; return action; } /// <summary> /// å·¥åºè¡ä¸ºæäº¤æ°æ® /// </summary> /// <returns></returns> public ApiAction<SubmitOutput> Submit(SubmitInput input) { var action = new ApiAction<SubmitOutput>(new SubmitOutput()); action = SaveAssembly(input, action); //ä¸ææ°æ®ä¿å失败 if (!action.IsSuccessed) { //妿è¡ä¸ºè®¾ç½®ä¸ºåºééè¦éç½®å·¥åºæä½ if (NodeAct.NEED_RESET == "Y") { CurPosition.ResetNode(); } } return action; } public ApiAction<SubmitOutput> SaveAssembly(SubmitInput input, ApiAction<SubmitOutput> action) { try { foreach (var item in CurAssembly.Items.Where(q => !q.IsFinished)) { var isOK = true; //æ ¹æ®æ¡ç è§åéªè¯ä¸ææ¯å¦æ£ç¡® if (!item.RuleCode.IsNullOrEmpty()) { if (!Biz.CodeRule[item.RuleCode].IsNullOrEmpty()) { var result = Biz.CodeRule[item.RuleCode].Verify(input.SN); if (!result.IsSuccessed) { isOK = false; } } //ä¸å卿¡ç è§åï¼å夿æ¯å¦æèªå®ä¹è§åï¼æ²¡æåè¿å失败 else { switch (item.RuleCode) { case "èªè¡éªè¯": break; default: isOK = false; break; } } } //éªè¯éè¿åä¿åä¸æä¿¡æ¯ if (isOK) { var record = new MES_WIP_ASSY() { AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, AUTH_PROD = CurPosition.CurLine.LINE_CODE, SN = input.SN, PROD_SN = CurPosition.CurWipSN.SN, ITEM_CODE = item.ItemInfo.ITEM_CODE, QTY = 1, UNIT = item.ItemInfo.UNIT, WORK_ORDER = CurPosition.CurWipSN.WORK_ORDER, BATCH_NO = CurPosition.CurWipSN.BATCH_NO, ROT_CODE = CurPosition.CurWipSN.ROT_CODE, NODE_ID = CurPosition.CurWipSN.NODE_ID, NODE_NAME = CurPosition.CurWipSN.NODE_NAME, FTY_CODE = CurPosition.CurWipSN.FTY_CODE, WS_CODE = CurPosition.CurWipSN.WS_CODE, LINE_CODE = CurPosition.CurWipSN.LINE_CODE, POST_CODE = CurPosition.CurWipSN.POST_CODE, OPER_CODE = CurPosition.CurWipSN.OPER_CODE, SEGMENT = CurPosition.CurWipSN.SEGMENT, }; item.Records.Add(record); if (item.Records.Sum(q => q.QTY) >= item.LoadQty) { item.IsFinished = true; } action.IsSuccessed = true; action.Data.Data = CurAssembly; action.LocaleMsg = new Locale($"æ«æç©æ[{item.ItemInfo.ITEM_NAME}({item.ItemInfo.ITEM_CODE})çæ¡ç [{input.SN}]æåï¼è¯·ç»§ç»ä¸æ"); action.LocaleMsg = new Locale("MES.WorkAction.WipExtInfo.LoadSuccess", item.ItemInfo.ITEM_NAME, item.ItemInfo.ITEM_CODE); //䏿宿 if (CurAssembly.IsFinished) { action = End(); } return action; } } //齿²¡æç©æéªè¯éè¿ï¼åè¿åéè¯¯ä¿¡æ¯ action.IsSuccessed = false; //action.LocaleMsg = new($"æ¡ç [{input.SN}]éªè¯å¤±è´¥ï¼ä¸æ¯ä»¥ä¸ç©æçæ¡ç ï¼{string.Join("ï¼", CurAssembly.Items.Where(q => !q.IsFinished).Select(q => $"{q.ItemInfo.ITEM_NAME}({q.ItemInfo.ITEM_CODE})"))}"); action.LocaleMsg = new("MES.WorkAction.WipExtInfo.LoadFail", input.SN, string.Join("ï¼", CurAssembly.Items.Where(q => !q.IsFinished).Select(q => $"{q.ItemInfo.ITEM_NAME}({q.ItemInfo.ITEM_CODE})"))); } catch (System.Exception ex) { action.CatchExceptionWithLog(ex, $"䏿è¡ä¸ºï¼éªè¯æ¡ç [{input.SN}]å¹¶ä¿åæ°æ®å¤±è´¥"); action.IsSuccessed = false; action.LocaleMsg = new($"éªè¯æ¡ç [{input.SN}]å¹¶ä¿åæ°æ®å¤±è´¥ï¼å·¥åºå·²éç½®ï¼è¯·éæ°æ«æè¿ç«äº§åæ¡ç "); action.LocaleMsg = new("MES.WorkAction.WipExtInfo.SaveAssemblyException", input.SN); CurPosition.ResetNode(); } return action; } /// <summary> /// ç»ææ§è¡å·¥åºè¡ä¸º /// </summary> /// <returns></returns> public ApiAction<SubmitOutput> End() { var action = new ApiAction<SubmitOutput>(new SubmitOutput()); //è®°å½è¡ä¸ºæä½è®°å½ var wipAct = new MES_WIP_ACT() { AUTH_ORG = CurPosition.WorkBatch.WO.AUTH_ORG, AUTH_PROD = CurPosition.CurLine.LINE_CODE, HIS_ID = CurPosition.CurWipSNHis.ID, SN = CurPosition.CurWipSN.SN, STATUS = CurPosition.CurWipSN.STATUS, ITEM_CODE = CurPosition.CurWipSN.ITEM_CODE, WORK_ORDER = CurPosition.CurWipSN.WORK_ORDER, BATCH_NO = CurPosition.CurWipSN.BATCH_NO, ROT_CODE = CurPosition.CurWipSN.ROT_CODE, NODE_ID = CurPosition.CurWipSN.NODE_ID, NODE_NAME = CurPosition.CurWipSN.NODE_NAME, ACT_ID = NodeAct.ID, ACT_NAME = NodeAct.ACT_NAME, FTY_CODE = CurPosition.CurWipSN.FTY_CODE, WS_CODE = CurPosition.CurWipSN.WS_CODE, LINE_CODE = CurPosition.CurWipSN.LINE_CODE, POST_CODE = CurPosition.CurWipSN.POST_CODE, OPER_CODE = CurPosition.CurWipSN.OPER_CODE, SEGMENT = CurPosition.CurWipSN.SEGMENT, TRAY_SN = CurPosition.CurWipSN.TRAY_SN, OPERATION_TIME = DateTime.Now, SFTS_CODE = CurPosition.CurWipSN.SFTS_CODE, SFT_CODE = CurPosition.CurWipSN.SFT_CODE, PRD_CODE = CurPosition.CurWipSN.PRD_CODE, ACT_TYPE = NodeAct.ACT_TYPE, ACT_SN = CurPosition.CurWipSN.SN, ACT_VALUE_1 = CurAssembly.ToJson(), ACT_RESULT = "Y", TRACE_INFO = $"以ä¸ç©æä¸æå®æï¼{string.Join(",", CurAssembly.Items.Select(q => $"{q.ItemInfo.ITEM_NAME}({q.ItemInfo.ITEM_CODE})"))}", }; var records = new List<MES_WIP_ASSY>(); foreach (var item in CurAssembly.Items) { records.AddRange(item.Records); } //ä¿åæ°æ® CurStep.DBSubmitAction = () => { var db = CurPosition.GetCommitDB(); db.Storageable(wipAct, CurPosition.UserCode).ExecuteCommand(); db.Insertable(records, CurPosition.UserCode).ExecuteCommand(); }; IsFinished = true; //action.LocaleMsg = new($"以ä¸ç©æä¸æå®æï¼{string.Join("ï¼", CurAssembly.Items.Select(q => $"{q.ItemInfo.ITEM_NAME}({q.ItemInfo.ITEM_CODE})"))}"); action.LocaleMsg = new("MES.WorkAction.WipExtInfo.LoadFinish", string.Join("ï¼", CurAssembly.Items.Select(q => $"{q.ItemInfo.ITEM_NAME}({q.ItemInfo.ITEM_CODE})"))); return action; } #endregion Functions } } Tiger.IBusiness/MES/WorkAction/IAssembly.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ using Newtonsoft.Json; using Rhea.Common; using System; using Tiger.Model; namespace Tiger.IBusiness.MES.WorkAction { public interface IAssembly : IWorkAction { } } Tiger.IBusiness/MES/WorkAction/IIPQC.cs
@@ -3,7 +3,7 @@ using System; using Tiger.Model; namespace Tiger.IBusiness namespace Tiger.IBusiness.MES.WorkAction { public interface IIPQC : IWorkAction { Tiger.IBusiness/MES/WorkAction/IPackingAction.cs
@@ -4,7 +4,7 @@ using Tiger.Model; using Tiger.Model.Entitys.MES.Position; namespace Tiger.IBusiness namespace Tiger.IBusiness.MES.WorkAction { public interface IPackingAction : IWorkAction { Tiger.IBusiness/MES/WorkAction/IPrintLabel.cs
@@ -3,7 +3,7 @@ using System; using Tiger.Model; namespace Tiger.IBusiness namespace Tiger.IBusiness.MES.WorkAction { public interface IPrintLabel : IWorkAction { Tiger.IBusiness/MES/WorkAction/IWipExtInfo.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,12 @@ using Newtonsoft.Json; using Rhea.Common; using System; using Tiger.Model; namespace Tiger.IBusiness.MES.WorkAction { public interface IWipExtInfo : IWorkAction { } } Tiger.Model.Net/Entitys/MES/MES_WIP_ASSY.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,156 @@ using System; using SqlSugar; using System.Linq; using System.ComponentModel; using System.Collections.Generic; namespace Tiger.Model { /// <summary> /// å®ä½ï¼çäº§ä¸æè®°å½ /// </summary> [Description("Primary:ID")] [DisplayName("çäº§ä¸æè®°å½")] [Serializable] [SugarTable("MES_WIP_ASSY")] public class MES_WIP_ASSY : DbEntityWithAuth { #region æé 彿° /// <summary> /// å®ä½ï¼çäº§ä¸æè®°å½ /// </summary> public MES_WIP_ASSY() {} #endregion #region å ¬å ±å±æ§ /// <summary> /// ç©ææ¡ç /// </summary> [DisplayName("ç©ææ¡ç ")] public string SN { get; set; } /// <summary> /// äº§åæ¡ç /// </summary> [DisplayName("äº§åæ¡ç ")] public string PROD_SN { get; set; } /// <summary> /// ç©æç¼ç /// </summary> [DisplayName("ç©æç¼ç ")] public string ITEM_CODE { get; set; } /// <summary> /// æ°é /// </summary> [DisplayName("æ°é")] public double QTY { get; set; } /// <summary> /// åä½ /// </summary> [DisplayName("åä½")] public string UNIT { get; set; } /// <summary> /// å·¥åå· /// </summary> [DisplayName("å·¥åå·")] public string WORK_ORDER { get; set; } /// <summary> /// å·¥åæ¹æ¬¡å· /// </summary> [DisplayName("å·¥åæ¹æ¬¡å·")] public string BATCH_NO { get; set; } /// <summary> /// å·¥èºè·¯çº¿ç¼ç /// </summary> [DisplayName("å·¥èºè·¯çº¿ç¼ç ")] public string ROT_CODE { get; set; } /// <summary> /// å·¥èºè·¯çº¿èç¹ID /// </summary> [DisplayName("å·¥èºè·¯çº¿èç¹ID")] public string NODE_ID { get; set; } /// <summary> /// å·¥èºè·¯çº¿èç¹åç§° /// </summary> [DisplayName("å·¥èºè·¯çº¿èç¹åç§°")] public string NODE_NAME { get; set; } /// <summary> /// å·¥åç¼ç /// </summary> [DisplayName("å·¥åç¼ç ")] public string FTY_CODE { get; set; } /// <summary> /// 车é´ç¼ç /// </summary> [DisplayName("车é´ç¼ç ")] public string WS_CODE { get; set; } /// <summary> /// 产线ç¼ç /// </summary> [DisplayName("产线ç¼ç ")] public string LINE_CODE { get; set; } /// <summary> /// å²ä½ç¼ç /// </summary> [DisplayName("å²ä½ç¼ç ")] public string POST_CODE { get; set; } /// <summary> /// å·¥åºç¼ç /// </summary> [DisplayName("å·¥åºç¼ç ")] public string OPER_CODE { get; set; } /// <summary> /// å 工段 /// </summary> [DisplayName("å 工段")] public string SEGMENT { get; set; } /// <summary> /// 夿³¨ /// </summary> [DisplayName("夿³¨")] public string REMARK { get; set; } /// <summary> /// è¿½æº¯ä¿¡æ¯ /// </summary> [DisplayName("追溯信æ¯")] public string TRACE_INFO { get; set; } #endregion #region èæå±æ§ /*ä¾å [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ #endregion #region å¤é®å±æ§ /*ä¾å //ä¸å¯¹ä¸å¤é®å¯¼èª [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//ä¸å¯¹ä¸ ClassAIdæ¯MES_WIP_ASSYç±»éé¢çå¤é®IDåæ®µ public ClassA ClassA { get; set; } //注æç¦æ¢æå¨èµå¼ï¼åªè½æ¯null //ä¸å¯¹å¤å¤é®å¯¼èª [Navigate(NavigateType.OneToMany, nameof(ClassA.MES_WIP_ASSYId))]//ClassA表ä¸çMES_WIP_ASSYId public List<ClassA> ClassAList { get; set; }//注æç¦æ¢æå¨èµå¼ï¼åªè½æ¯null //å¤å¯¹å¤å¤é®å¯¼èª [Navigate(typeof(MappingClass), nameof(MappingClass.MES_WIP_ASSYId), nameof(MappingClass.ClassAId))]//注æé¡ºåº public List<ClassA> ClassAList { get; set; } //注æç¦æ¢æå¨èµå¼ï¼åªè½æ¯null */ #endregion #region æä¸¾åé /*ä¾å public enum FieldNames { [Description("æä¸¾æè¿°0")] Enum0, [Description("æä¸¾æè¿°1")] Enum1, } */ #endregion #region å ¬å ±æ¹æ³ #endregion }//endClass } Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs
@@ -163,4 +163,37 @@ public List<WipPkgItem> Items { get; set; } = new List<WipPkgItem>(); } /// <summary> /// ä¸æè®¾ç½® /// </summary> public class AssemblySetting { public string ItemCode { get; set; } public string RuleCode { get; set; } public int Qty { get; set; } } /// <summary> /// ä¸æä¿¡æ¯ /// </summary> public class AssemblyInfo { public MES_WIP_DATA Product { get; set; } public bool IsFinished => !Items.Any(q => !q.IsFinished); public List<AssemblyItem> Items { get; set; } = new List<AssemblyItem>(); } /// <summary> /// ä¸æä¿¡æ¯æç» /// </summary> public class AssemblyItem { public BAS_ITEM ItemInfo { get; set; } public string RuleCode { get; set; } public int LoadQty { get; set; } public List<MES_WIP_ASSY> Records { get; set; } = new List<MES_WIP_ASSY>(); public bool IsFinished { get; set; } = false; } } Tiger.Model.Net/Tiger.Model.Net.csproj
@@ -139,6 +139,7 @@ <Compile Include="Entitys\MES\MES_SHIFT_PRD.cs" /> <Compile Include="Entitys\MES\MES_SHIFT_SYS.cs" /> <Compile Include="Entitys\MES\MES_WIP_ACT.cs" /> <Compile Include="Entitys\MES\MES_WIP_ASSY.cs" /> <Compile Include="Entitys\MES\MES_WIP_DATA.cs" /> <Compile Include="Entitys\MES\MES_WIP_DFT.cs" /> <Compile Include="Entitys\MES\MES_WIP_EXT.cs" />