| | |
| | | //查找不到条码已绑定的工单 |
| | | else |
| | | { |
| | | //没有当前工单,则先选择工单后再扫描条码 |
| | | if (CurBatch.IsNullOrEmpty()) |
| | | var lastSn = wosns.OrderByDescending(q => q.SN.UPDATE_TIME).FirstOrDefault(); |
| | | if (!lastSn.IsNullOrEmpty()) |
| | | { |
| | | action.Data.ShortMsg = new("未选择工单", ShortMessage.Types.Error); |
| | | action.Data.ShortMsg = new($"产品{lastSn.SN.STATUS.GetEnumDesc<BIZ_MES_WO_SN.STATUSs>()}", ShortMessage.Types.Error); |
| | | action.Data.OperInfo = new(); |
| | | action.IsSuccessed = false; |
| | | //action.LocaleMsg = new($"未选择工单,请先选择要生产的工单"); |
| | | action.LocaleMsg = new("MES.Transaction.PackingNode.Submit.NotSelectOrderException"); |
| | | //action.LocaleMsg = new($"进站扫描错误,条码[{0}]{1}", input.SN); |
| | | action.LocaleMsg = new("MES.Transaction.PackingNode.Submit.SnStatusError", input.SN, lastSn.SN.STATUS.GetEnumDesc<BIZ_MES_WO_SN.STATUSs>()); |
| | | } |
| | | //有当前工单且不是投入,则提示条码未投入生产,请先去首站扫描 |
| | | else |
| | | { |
| | | var lastSn = wosns.OrderByDescending(q => q.SN.UPDATE_TIME).FirstOrDefault(); |
| | | if (!lastSn.IsNullOrEmpty()) |
| | | //没有当前工单,则先选择工单后再扫描条码 |
| | | if (CurBatch.IsNullOrEmpty()) |
| | | { |
| | | action.Data.ShortMsg = new($"产品{lastSn.SN.STATUS.GetEnumDesc<BIZ_MES_WO_SN.STATUSs>()}", ShortMessage.Types.Error); |
| | | action.Data.ShortMsg = new("未选择工单", ShortMessage.Types.Error); |
| | | action.Data.OperInfo = new(); |
| | | action.IsSuccessed = false; |
| | | //action.LocaleMsg = new($"进站扫描错误,条码[{0}]{1}", input.SN); |
| | | action.LocaleMsg = new("MES.Transaction.PackingNode.Submit.NotInputException", input.SN); |
| | | //action.LocaleMsg = new($"未选择工单,请先选择要生产的工单"); |
| | | action.LocaleMsg = new("MES.Transaction.PackingNode.Submit.NotSelectOrderException"); |
| | | } |
| | | //有当前工单且不是投入,则提示条码未投入生产,请先去首站扫描 |
| | | else |
| | | { |
| | | |
| | | action.Data.ShortMsg = new("未投入生产", ShortMessage.Types.Error); |
| | | action.Data.OperInfo = new(); |
| | | action.IsSuccessed = false; |
| | |
| | | /// <returns></returns> |
| | | public ApiAction<SubmitOutput> DoIfFinishAllSteps(ApiAction<SubmitOutput> action, string locale) |
| | | { |
| | | var curPkg = Context.ContainsKey("CurPackage") ? Context["CurPackage"] as WipPkg : null; |
| | | var operInfo = SetOperNodeInfo(CurOperInfo(locale)); |
| | | Action endAction = null; |
| | | |
| | | //如果当前条码已经走到流程终点则记录条码完工 |
| | | if (action.Data.OperInfo.IsReachedEndNode) |
| | | if (operInfo.IsReachedEndNode) |
| | | { |
| | | //标记当前包装信息为终点站 |
| | | if (!curPkg.IsNullOrEmpty()) |
| | | { |
| | | curPkg.IsReachedEndNode = true; |
| | | } |
| | | //更新工单条码明细信息 |
| | | var woSNs = CurBatch.WoSNs.Where(q => CurWipSNs.Any(w => q.WIP_ID == w.ID)).ToList(); |
| | | foreach (var woSN in woSNs) |
| | |
| | | var _woSns = woSNs.Clone(); |
| | | var _wipSns = CurWipSNs.Clone(); |
| | | var _wipHiss = wipHiss.Clone(); |
| | | var _pkgList = curPkg?.IsFinished == true ? GetPackageList(curPkg.Item) : new(); |
| | | //保存数据 |
| | | endAction = () => |
| | | { |
| | |
| | | db.Storageable(_woSns, UserCode).ExecuteCommand(); |
| | | db.Storageable(_wipSns, UserCode).ExecuteCommand(); |
| | | db.Storageable(_wipHiss, UserCode).ExecuteCommand(); |
| | | if (_pkgList.Any()) |
| | | { |
| | | foreach (var pkg in _pkgList) |
| | | { |
| | | ////包装信息保存到在制品信息表 |
| | | //db.Updateable<MES_WIP_DATA>() |
| | | // .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) |
| | | // .ExecuteCommand(); |
| | | //包装信息保存到生产过程记录 |
| | | db.Updateable<MES_WIP_HIS>() |
| | | .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.WIP_ID == pkg.WIP_ID && q.OPER_CODE == "EndNode") |
| | | .ExecuteCommand(); |
| | | ////包装信息保存到工单条码明细表 |
| | | //db.Updateable<BIZ_MES_WO_SN>() |
| | | // .SetColumns(q => q.TRAY_SN == curPkg.Item.Package.SN) |
| | | // .SetColumns(q => q.OUTER_SN == curPkg.Item.Package.SN) |
| | | // .Where(q => q.WORK_ORDER == pkg.WORK_ORDER && q.WIP_ID == pkg.WIP_ID) |
| | | // .ExecuteCommand(); |
| | | } |
| | | } |
| | | }; |
| | | } |
| | | |
| | | //保存数据库 |
| | | SaveStepsCommitActionToDB(); |
| | | SaveStepsCommitActionToDB(endAction); |
| | | |
| | | //保存成功,返回过站消息 |
| | | CurOperInfo(locale).InputQty += CurWipSNs.Count; |
| | | action.Data.Data = new PackingActionOutput() { PkgInfo = Context.ContainsKey("CurPackage") ? Context["CurPackage"] as WipPkg : null }; |
| | | action.Data.Data = new PackingActionOutput() { PkgInfo = curPkg }; |
| | | action.Data.OperInfo = operInfo; |
| | | action.Data.ShortMsg = new(CurWipSNs.Any(q => q.DFT_FLAG == "Y") ? "不良过站" : "良品过站", ShortMessage.Types.Success); |
| | | //action.LocaleMsg = new($"工单[{CurWipSN.WORK_ORDER}]的条码[{CurWipSN.SN}]在岗位[{CurWipSN.POST_CODE}]工序[{CurWipSN.NODE_NAME}]过站成功,状态[{CurWipSN.STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()}]"); |
| | | action.LocaleMsg = new("MES.Transaction.PackingNode.ScanSn.PassSuccess", CurWipSNs.First().WORK_ORDER, CurSN, CurWipSNs.First().POST_CODE, CurWipSNs.First().NODE_NAME, CurWipSNs.First().STATUS.GetEnumDesc<MES_WIP_DATA.STATUSs>()); |
| | | |
| | | //如果当前条码已经完工,检查当前工单批次和工单是否完工 |
| | | if (action.Data.OperInfo.IsReachedEndNode) |
| | | { |
| | | CurBatch.CheckIsComplete(UserCode); |
| | | } |
| | | |
| | | //重置工序 |
| | | ResetNode(); |
| | | |