Tiger.Api/Controllers/MES/MESController.PackingNode.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.MES/Transaction/CollectNode.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.MES/Transaction/PackingNode.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.MES/Transaction/TestNode.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business.MES/WorkAction/PackingAction.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business/MES/Biz.WorkBatch.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Business/MES/WoContext.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.IBusiness/MES/Transaction/IPackingNode.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Model.Net/Entitys/BAS/BAS_PKG_RULE.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Tiger.Api/Controllers/MES/MESController.PackingNode.cs
@@ -253,11 +253,11 @@ { if (action.IsAsync) { response = action.GetResponse(await trans.CompletePkg()); response = action.GetResponse(await trans.CompletePkg(action)); } else { lock (trans.TransLock) { response = action.GetResponse(trans.CompletePkg().Result); } lock (trans.TransLock) { response = action.GetResponse(trans.CompletePkg(action).Result); } } } else Tiger.Business.MES/Transaction/CollectNode.cs
@@ -40,14 +40,15 @@ var action = new ApiAction<SubmitOutput>(new SubmitOutput()); try { //更新CurBatch CurBatch = WoContext.GetBatch(CurBatch?.OrderNo, CurLine.LINE_CODE); //工步列表为空或者工序节点工步有未完成时,优先完成工序节点工步 if (Steps.IsNullOrEmpty() || !IsFinishNodeSteps) { //先判断当前工单不为空且当前岗位在当前工单是不是首站,如果是则不允许变更当前工单,尝试把条码绑定到当前工单 if (!CurBatch.IsNullOrEmpty() && CurBatch.IsFirstNode(PostCode)) { //更新CurBatch CurBatch?.Update(); //提交数据 action = NodeSubmit(action, input); //更新工序信息 if (!action.IsSuccessed) @@ -93,6 +94,8 @@ return action; } } //更新CurBatch CurBatch?.Update(); //条码过站 action = NodeSubmit(action, input); if (!action.IsSuccessed && !CurWipSNs.Any()) @@ -134,6 +137,9 @@ //完成工序节点工步后,后开始执行当前工序的行为工步 else if (IsFinishNodeSteps && !IsFinishAllSteps) { //更新CurBatch CurBatch?.Update(); var submitStep = Steps.Where(q => q.ID == input.CurStepID && !q.IsFinished).FirstOrDefault(); if (submitStep.IsNullOrEmpty()) { @@ -214,7 +220,7 @@ return woStatus; } var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => (q.SN == input.SN || q.TRAY_SN == input.SN) && q.WORK_ORDER == CurBatch.WO.ORDER_NO).ToList(); 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).ToList(); if (wipSNs.IsNullOrEmpty()) { var wipSN = new MES_WIP_DATA() Tiger.Business.MES/Transaction/PackingNode.cs
@@ -63,14 +63,15 @@ else { NodeCmd = "NodeSubmit"; //更新CurBatch CurBatch = WoContext.GetBatch(CurBatch?.OrderNo, CurLine.LINE_CODE); //工步列表为空或者工序节点工步有未完成时,优先完成工序节点工步 if (Steps.IsNullOrEmpty() || !IsFinishNodeSteps) { //先判断当前工单不为空且当前岗位在当前工单是不是首站,如果是则不允许变更当前工单,尝试把条码绑定到当前工单 if (!CurBatch.IsNullOrEmpty() && CurBatch.IsFirstNode(PostCode)) { //更新CurBatch CurBatch?.Update(); //提交数据 action = NodeSubmit(action, input); //更新工序信息 if (!action.IsSuccessed) @@ -134,8 +135,10 @@ return action; } } //条码过站 action = NodeSubmit(action, input); //更新CurBatch CurBatch?.Update(); //条码过站 action = NodeSubmit(action, input); if (!action.IsSuccessed && !CurWipSNs.Any()) { var info = WoContext.GetSnOperInfo(input.SN).Data; @@ -175,6 +178,9 @@ //完成工序节点工步后,后开始执行当前工序的行为工步 else if (IsFinishNodeSteps && !IsFinishAllSteps) { //更新CurBatch CurBatch?.Update(); var submitStep = Steps.Where(q => q.ID == input.CurStepID && !q.IsFinished).FirstOrDefault(); if (submitStep.IsNullOrEmpty()) { @@ -254,8 +260,8 @@ woStatus.Data.ShortMsg = new("工单异常", ShortMessage.Types.Error); return woStatus; } var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => (q.SN == input.SN || q.TRAY_SN == input.SN) && q.WORK_ORDER == CurBatch.WO.ORDER_NO).ToList(); 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).ToList(); if (wipSNs.IsNullOrEmpty()) { var wipSN = new MES_WIP_DATA() @@ -583,7 +589,7 @@ /// 包装工序:手动结束包装 /// </summary> /// <returns></returns> public async Task<ApiAction<SubmitOutput>> CompletePkg() public async Task<ApiAction<SubmitOutput>> CompletePkg(ApiAction input) { var action = new ApiAction<SubmitOutput>(new SubmitOutput()); try @@ -593,6 +599,12 @@ { if (Context.ContainsKey("CurPackage")) { int shipQty = input.Data.ToInt32(); //有填出货数量则验证当前包装数量必须等于(出货数量/包装规则数量)的余数 if (shipQty > 0) { } NodeCmd = "PkgSubmit"; TempPkgAction = new PackingAction(); Tiger.Business.MES/Transaction/TestNode.cs
@@ -41,14 +41,15 @@ try { //更新CurBatch CurBatch = WoContext.GetBatch(CurBatch?.OrderNo, CurLine.LINE_CODE); //工步列表为空或者工序节点工步有未完成时,优先完成工序节点工步 if (Steps.IsNullOrEmpty() || !IsFinishNodeSteps) { //先判断当前工单不为空且当前岗位在当前工单是不是首站,如果是则不允许变更当前工单,尝试把条码绑定到当前工单 if (!CurBatch.IsNullOrEmpty() && CurBatch.IsFirstNode(PostCode)) { //更新CurBatch CurBatch?.Update(); //提交数据 action = NodeSubmit(action, input); //更新工序信息 if (!action.IsSuccessed) @@ -94,6 +95,8 @@ return action; } } //更新CurBatch CurBatch?.Update(); //条码过站 action = NodeSubmit(action, input); if (!action.IsSuccessed && !CurWipSNs.Any()) @@ -135,6 +138,9 @@ //完成工序节点工步后,开始执行当前工序的行为工步 else if (IsFinishNodeSteps && !IsFinishAllSteps) { //更新CurBatch CurBatch?.Update(); var submitStep = Steps.Where(q => q.ID == input.CurStepID && !q.IsFinished).FirstOrDefault(); if (submitStep.IsNullOrEmpty()) { @@ -214,7 +220,7 @@ return woStatus; } var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => (q.SN == input.SN || q.TRAY_SN == input.SN) && q.WORK_ORDER == CurBatch.WO.ORDER_NO).ToList(); 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).ToList(); if (wipSNs.IsNullOrEmpty()) { var wipSN = new MES_WIP_DATA() Tiger.Business.MES/WorkAction/PackingAction.cs
@@ -31,6 +31,7 @@ public Dictionary<int, BAS_LABEL_TEMP> LabelDic { get; set; } = new(); public List<BAS_LABEL_PV> LabelPV { get; set; } = new(); public int FinishLevel = 0; private bool IsManually => CurStep.IsNullOrEmpty(); #endregion Propertys & Variables #region Functions @@ -330,7 +331,7 @@ if (!pInput.WeightInfo.IsNullOrEmpty() && pInput.WeightInfo.Weight > 0) { //验证重量数据是否符合设置好的重量范围 if (!PkgProd.IsNullOrEmpty() && (pInput.WeightInfo.Weight < PkgProd.MIN_WEIGHT || PkgProd.MAX_WEIGHT < pInput.WeightInfo.Weight)) if (!PkgProd.IsNullOrEmpty() && ((pInput.WeightInfo.Weight < PkgProd.MIN_WEIGHT && !IsManually) || PkgProd.MAX_WEIGHT < pInput.WeightInfo.Weight)) { action.IsSuccessed = false; CurStep?.SetStatusMessage(StepStatus.Error, Biz.L("重量超限")); @@ -617,7 +618,7 @@ CurPkgItem = curItem; //添加明细后判断当前包装层级的明细数量是否等于包装数量,若相等则标记当前包装层级为完成并尝试打印标签 if (CurPkgItem.Items.Count(q => q.IsFinished) == CurPkgItem.PKG_QTY || CurStep.IsNullOrEmpty()) if (CurPkgItem.Items.Count(q => q.IsFinished) == CurPkgItem.PKG_QTY || IsManually) { //打印前称重:如果当前的包装明细的上一层包装对象是最外层包装且需要称重时,先称重,合格后在发印或者扫描最外层包装标签 if (CurPkgItem.PKG_LEVEL == CurPkg.Item.PKG_LEVEL && CurPkg.NeedWeighing) @@ -729,7 +730,7 @@ action.LocaleMsg = new("MES.WorkAction.PackingAction.PackageComplete", CurPkg.Item.PKG_LEVEL, CurPkg.Item.PKG_NAME); //手动结束包装则标记行为完成 //if (CurStep.IsNullOrEmpty()) //if (IsManually) //{ // IsFinished = true; //} @@ -753,7 +754,7 @@ } //不是手动结束包装则保存行为操作记录 if (!CurStep.IsNullOrEmpty()) if (!IsManually) { //记录行为操作记录 var wipActs = new List<MES_WIP_ACT>(); Tiger.Business/MES/Biz.WorkBatch.cs
@@ -55,11 +55,26 @@ public WorkBatch Init(string lineCode) { LineCode = lineCode; GetBatchInfo(); return this; } public void Update() { if (!WoContext.WoBatchDic.ContainsKey(Batch.BATCH_NO)) { GetBatchInfo(); WoContext.WoBatchDic.Add(Batch.BATCH_NO, this); } } private void GetBatchInfo() { WO = Biz.Db.Queryable<BIZ_MES_WO>().Where(q => q.ORDER_NO == OrderNo).IncludesAllFirstLayer().First(); Product = Biz.Db.Queryable<BAS_ITEM>().Where(q => q.ITEM_CODE == WO.ITEM_CODE && q.AUTH_ORG == WO.AUTH_ORG).First(); Batch = Biz.Db.Queryable<BIZ_MES_WO_BATCH>().Where(q => q.ORDER_NO == OrderNo && q.ACT_LINE == LineCode && (q.STATUS == BIZ_MES_WO_BATCH.STATUSs.Release.GetValue() || q.STATUS == BIZ_MES_WO_BATCH.STATUSs.Working.GetValue())).First(); Customer = Biz.Db.Queryable<BAS_CUSTOMER>().Where(q => q.CUST_CODE == WO.CUST_CODE).First(); Customer = Biz.Db.Queryable<BAS_CUSTOMER>().Where(q => q.CUST_CODE == WO.CUST_CODE).First(); WoSNs = Biz.Db.Queryable<BIZ_MES_WO_SN>().Where(q => q.WORK_ORDER == OrderNo).ToList(); Edges = Biz.Db.Queryable<MES_WO_EDGE>().Where(q => q.WORK_ORDER == OrderNo).ToList(); Nodes = Biz.Db.Queryable<MES_WO_NODE>().Where(q => q.WORK_ORDER == OrderNo).IncludesAllFirstLayer().ToList(); @@ -74,8 +89,6 @@ var first = Nodes.First(q => q.IS_FIRST_NODE == "Y"); first.Sequence = 1; NodeSorting(first); return this; } /// <summary> Tiger.Business/MES/WoContext.cs
@@ -33,7 +33,11 @@ /// <returns></returns> public static WorkBatch GetBatch(string workorder, string lineCode) { return WoBatchDic.FirstOrDefault(q => q.Value.Batch.ORDER_NO == workorder && q.Value.Batch.ACT_LINE == lineCode).Value; if (ExistsBatch(workorder, lineCode)) { return WoBatchDic.FirstOrDefault(q => q.Value.Batch.ORDER_NO == workorder && q.Value.Batch.ACT_LINE == lineCode).Value; } return null; } /// <summary> Tiger.IBusiness/MES/Transaction/IPackingNode.cs
@@ -37,6 +37,6 @@ /// 包装工序:手动结束包装 /// </summary> /// <returns></returns> public Task<ApiAction<SubmitOutput>> CompletePkg(); public Task<ApiAction<SubmitOutput>> CompletePkg(ApiAction input); } } Tiger.Model.Net/Entitys/BAS/BAS_PKG_RULE.cs
@@ -76,7 +76,24 @@ #endregion #region 公共方法 public int GetTotalQty() { int qty = 0; foreach (var dtl in Details.OrderBy(q => q.PKG_LEVEL)) { if (dtl.PKG_LEVEL == 1) { qty = dtl.PKG_QTY; } else { qty *= dtl.PKG_QTY; } } return qty; } #endregion }//endClass Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs
@@ -180,7 +180,7 @@ public MES_WIP_PKG Package { get; set; } public bool IsFinished { get; set; } = false; public List<WipPkgItem> Items { get; set; } = new List<WipPkgItem>(); public int TotalQty => Items.Any() ? Items.Sum(q => q.TotalQty) : 1; } /// <summary>