| | |
| | | PkgRule = Biz.Db.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>>(); |
| | | 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(); |
| | | LabelDic.Add(code.PKG_LEVEL, label); |
| | | } |
| | | LabelPV = Biz.Db.Queryable<BAS_LABEL_PV>().ToList(); |
| | | //如果工序上下文中没有包装记录则新建一个,有则获取当前的包装记录 |
| | | if (CurPosition.Context.ContainsKey("CurPackage") && !CurPosition.Context["CurPackage"].IsNullOrEmpty()) |
| | | |
| | | //如果工序上下文中没有包装记录则新建一个,有且未包装完成则获取当前的包装记录 |
| | | if (CurPosition.Context.ContainsKey("CurPackage") && !CurPosition.Context["CurPackage"].IsNullOrEmpty() && !(CurPosition.Context["CurPackage"] as WipPkg).IsFinished) |
| | | { |
| | | CurPkg = (CurPosition.Context["CurPackage"] as WipPkg).Clone(); |
| | | } |
| | |
| | | if (!child.IsNullOrEmpty()) |
| | | { |
| | | CurPkg.Item.Items.Add(child); |
| | | } |
| | | |
| | | //删除工序上下文中的包装记录 |
| | | if (CurPosition.Context.ContainsKey("CurPackage")) |
| | | { |
| | | CurPosition.Context.Remove("CurPackage"); |
| | | CurPosition.Context.Remove("CurLabelDic"); |
| | | } |
| | | } |
| | | //获取是否包装完后需要称重 |
| | |
| | | return action; |
| | | } |
| | | //验证当前包装条码是否已经被扫描过 |
| | | if (GetPackageList(CurPkg.Item).Any(q => q.SN == pInput.PkgSN)) |
| | | if (CurPosition.GetPackageList(CurPkg.Item).Any(q => q.SN == pInput.PkgSN)) |
| | | { |
| | | var dtl = PkgRule.Details.First(q => q.PKG_LEVEL == pInput.PkgLevel); |
| | | CurStep?.SetStatusMessage(StepStatus.Error, Biz.L("扫描错误")); |
| | |
| | | //添加当前的包装明细到上一层包装的明细列表 |
| | | if (!curItem.Items.Contains(CurPkgItem)) |
| | | { |
| | | curItem.Items.Add(CurPkgItem); |
| | | curItem.Items.Add(CurPkgItem); |
| | | } |
| | | CurPkgItem = curItem; |
| | | |
| | |
| | | CurPosition.ResetNode(); |
| | | } |
| | | return action; |
| | | } |
| | | |
| | | private List<MES_WIP_PKG> GetPackageList(WipPkgItem parent) |
| | | { |
| | | List<MES_WIP_PKG> list = new(); |
| | | if (!parent.Package.IsNullOrEmpty()) |
| | | { |
| | | list.Add(parent.Package); |
| | | } |
| | | foreach (var item in parent.Items) |
| | | { |
| | | item.Package.PARENT_SN = parent.Package?.SN; |
| | | list.AddRange(GetPackageList(item)); |
| | | } |
| | | return list; |
| | | } |
| | | |
| | | public List<MES_WIP_PKG> GetMinPackageList(WipPkgItem parent) |
| | |
| | | |
| | | //创建变量克隆对象用于传入DBSubmitAction中保存当前需要暂存的数据值 |
| | | var _wipActs = wipActs.Clone(); |
| | | var _pkgList = CurPkg.IsFinished ? GetPackageList(CurPkg.Item) : new(); |
| | | var _pkgList = CurPkg.IsFinished ? CurPosition.GetPackageList(CurPkg.Item) : new(); |
| | | //保存数据 |
| | | CurStep.DBSubmitAction = () => |
| | | { |
| | |
| | | .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) |
| | | .SetColumns(q => q.INNER_SN == q.CARTON_SN) |
| | | .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN) |
| | | .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.ID == pkg.WIP_ID && q.NODE_ID == pkg.NODE_ID) |
| | | .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID && q.NODE_ID == pkg.NODE_ID) |
| | | .ExecuteCommand(); |
| | | //包装信息保存到生产行为记录 |
| | | db.Updateable<MES_WIP_ACT>() |
| | | .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) |
| | | .SetColumns(q => q.INNER_SN == q.CARTON_SN) |
| | | .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN) |
| | | .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.ID == pkg.WIP_ID && q.NODE_ID == pkg.NODE_ID && q.ACT_ID == NodeAct.ID) |
| | | .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID && q.NODE_ID == pkg.NODE_ID && q.ACT_ID == NodeAct.ID) |
| | | .ExecuteCommand(); |
| | | //包装信息保存到工单条码明细表 |
| | | db.Updateable<BIZ_MES_WO_SN>() |
| | |
| | | { |
| | | if (CurPkg.IsFinished) |
| | | { |
| | | var _pkgList = GetPackageList(CurPkg.Item); |
| | | var _pkgList = CurPosition.GetPackageList(CurPkg.Item); |
| | | |
| | | //最外层包装已经完成包装,则把工序中暂存标记设为false,统一提交包装内产品的过站记录 |
| | | CurPosition.NeedTemporaryStoreDBCommitAction = false; |
| | |
| | | .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) |
| | | .SetColumns(q => q.INNER_SN == q.CARTON_SN) |
| | | .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN) |
| | | .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.ID == pkg.WIP_ID && q.NODE_ID == pkg.NODE_ID) |
| | | .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID && q.NODE_ID == pkg.NODE_ID) |
| | | .ExecuteCommand(); |
| | | //包装信息保存到生产行为记录 |
| | | db.Updateable<MES_WIP_ACT>() |
| | | .SetColumns(q => q.TRAY_SN == CurPkg.Item.Package.SN) |
| | | .SetColumns(q => q.INNER_SN == q.CARTON_SN) |
| | | .SetColumns(q => q.CARTON_SN == CurPkg.Item.Package.SN) |
| | | .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.ID == pkg.WIP_ID && q.NODE_ID == pkg.NODE_ID && q.ACT_ID == NodeAct.ID) |
| | | .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID && q.NODE_ID == pkg.NODE_ID && q.ACT_ID == NodeAct.ID) |
| | | .ExecuteCommand(); |
| | | //包装信息保存到工单条码明细表 |
| | | db.Updateable<BIZ_MES_WO_SN>() |
| | |
| | | } |
| | | } |
| | | |
| | | if (CurPkg.IsFinished) |
| | | //最外层包装已经完成包装,则把工序中暂存标记设为false,统一提交包装内产品的过站记录 |
| | | //最外层包装未完成包装,则把工序中暂存标记设为true,待全部包装完成再统一提交包装内产品的过站记录 |
| | | CurPosition.NeedTemporaryStoreDBCommitAction = !CurPkg.IsFinished; |
| | | //如果工序上下文中没有包装记录则新建一个 |
| | | if (CurPosition.Context.ContainsKey("CurPackage")) |
| | | { |
| | | //最外层包装已经完成包装,则把工序中暂存标记设为false,统一提交包装内产品的过站记录 |
| | | CurPosition.NeedTemporaryStoreDBCommitAction = false; |
| | | //删除工序上下文中的包装记录 |
| | | CurPosition.Context.Remove("CurPackage"); |
| | | CurPosition.Context.Remove("CurLabelDic"); |
| | | //action.LocaleMsg = new($"条码[{CurPkg.Item.Package?.SN}]包装完成"); |
| | | action.LocaleMsg = new("MES.WorkAction.PackingAction.PackingSuccess", CurPkg.Item.Package.SN); |
| | | CurPosition.Context["CurPackage"] = CurPkg; |
| | | CurPosition.Context["CurLabelDic"] = LabelDic; |
| | | } |
| | | else |
| | | { |
| | | //最外层包装未完成包装,则把工序中暂存标记设为true,待全部包装完成再统一提交包装内产品的过站记录 |
| | | CurPosition.NeedTemporaryStoreDBCommitAction = true; |
| | | //如果工序上下文中没有包装记录则新建一个 |
| | | if (CurPosition.Context.ContainsKey("CurPackage")) |
| | | { |
| | | CurPosition.Context["CurPackage"] = CurPkg; |
| | | CurPosition.Context["CurLabelDic"] = LabelDic; |
| | | } |
| | | else |
| | | { |
| | | CurPosition.Context.Add("CurPackage", CurPkg); |
| | | CurPosition.Context.Add("CurLabelDic", LabelDic); |
| | | } |
| | | //action.LocaleMsg = new($"条码[{CurPosition.CurSN}]包装完成"); |
| | | action.LocaleMsg = new("MES.WorkAction.PackingAction.PackingSuccess", CurPosition.CurSN); |
| | | CurPosition.Context.Add("CurPackage", CurPkg); |
| | | CurPosition.Context.Add("CurLabelDic", LabelDic); |
| | | } |
| | | //action.LocaleMsg = new($"条码[{CurPosition.CurSN}]包装完成"); |
| | | action.LocaleMsg = new("MES.WorkAction.PackingAction.PackingSuccess", CurPosition.CurSN); |
| | | |
| | | IsFinished = true; |
| | | CurStep?.SetStatusMessage(StepStatus.Finished, Biz.L("包装完成")); |