| | |
| | | wipSN.DFT_FLAG = "Y"; |
| | | wipSN.DFT_COUNT++; |
| | | wipSN.DFT_CODE = input.DFT_CODE; |
| | | var dft = CurBatch.Defects.FirstOrDefault(q => q.DFT_CODE == wipSN.DFT_CODE); |
| | | var defect = new MES_WIP_DFT() |
| | | { |
| | | AUTH_ORG = wipSN.AUTH_ORG, |
| | | AUTH_PROD = wipSN.LINE_CODE, |
| | | SN = wipSN.SN, |
| | | STATUS = MES_WIP_DFT.STATUSs.WaitHandle.GetValue(), |
| | | ITEM_CODE = wipSN.ITEM_CODE, |
| | | WORK_ORDER = wipSN.WORK_ORDER, |
| | | BATCH_NO = wipSN.BATCH_NO, |
| | | ROT_CODE = wipSN.ROT_CODE, |
| | | NODE_ID = wipSN.NODE_ID, |
| | | NODE_NAME = wipSN.NODE_NAME, |
| | | FTY_CODE = wipSN.FTY_CODE, |
| | | WS_CODE = wipSN.WS_CODE, |
| | | LINE_CODE = wipSN.LINE_CODE, |
| | | POST_CODE = wipSN.POST_CODE, |
| | | OPER_CODE = wipSN.OPER_CODE, |
| | | SEGMENT = wipSN.SEGMENT, |
| | | DFT_CODE = dft.DFT_CODE, |
| | | DFT_NAME = dft.DFT_NAME, |
| | | DFT_LEVEL = dft.DFT_LEVEL, |
| | | TRAY_SN = wipSN.TRAY_SN, |
| | | CONTAINER_SN = wipSN.CONTAINER_SN, |
| | | PALLET_SN = wipSN.PALLET_SN, |
| | | INV_FLAG = wipSN.INV_FLAG, |
| | | OPERATION_TIME = DateTime.Now, |
| | | SFTS_CODE = wipSN.SFTS_CODE, |
| | | SFT_CODE = wipSN.SFT_CODE, |
| | | PRD_CODE = wipSN.PRD_CODE, |
| | | OBA_BATCH = wipSN.OBA_BATCH, |
| | | LOCK_BATCH = wipSN.LOCK_BATCH, |
| | | }; |
| | | CurDefects.Add(defect); |
| | | } |
| | | } |
| | | |
| | |
| | | db.Storageable(woSNs, UserCode).ExecuteCommand(); |
| | | db.Storageable(wipSNs, UserCode).ExecuteCommand(); |
| | | db.Storageable(CurWipSNHiss, UserCode).ExecuteCommand(); |
| | | //如果有不良则保存 |
| | | if (CurDefects.Any()) |
| | | { |
| | | db.Storageable(CurDefects, UserCode).ExecuteCommand(); |
| | | } |
| | | //如果是投入站 |
| | | if (curNode.IS_INPUT == "Y") |
| | | { |
| | |
| | | wipSN.DFT_FLAG = "Y"; |
| | | wipSN.DFT_COUNT++; |
| | | wipSN.DFT_CODE = input.DFT_CODE; |
| | | var dft = CurBatch.Defects.FirstOrDefault(q => q.DFT_CODE == wipSN.DFT_CODE); |
| | | var defect = new MES_WIP_DFT() |
| | | { |
| | | AUTH_ORG = wipSN.AUTH_ORG, |
| | | AUTH_PROD = wipSN.LINE_CODE, |
| | | SN = wipSN.SN, |
| | | STATUS = MES_WIP_DFT.STATUSs.WaitHandle.GetValue(), |
| | | ITEM_CODE = wipSN.ITEM_CODE, |
| | | WORK_ORDER = wipSN.WORK_ORDER, |
| | | BATCH_NO = wipSN.BATCH_NO, |
| | | ROT_CODE = wipSN.ROT_CODE, |
| | | NODE_ID = wipSN.NODE_ID, |
| | | NODE_NAME = wipSN.NODE_NAME, |
| | | FTY_CODE = wipSN.FTY_CODE, |
| | | WS_CODE = wipSN.WS_CODE, |
| | | LINE_CODE = wipSN.LINE_CODE, |
| | | POST_CODE = wipSN.POST_CODE, |
| | | OPER_CODE = wipSN.OPER_CODE, |
| | | SEGMENT = wipSN.SEGMENT, |
| | | DFT_CODE = dft.DFT_CODE, |
| | | DFT_NAME = dft.DFT_NAME, |
| | | DFT_LEVEL = dft.DFT_LEVEL, |
| | | TRAY_SN = wipSN.TRAY_SN, |
| | | CONTAINER_SN = wipSN.CONTAINER_SN, |
| | | PALLET_SN = wipSN.PALLET_SN, |
| | | INV_FLAG = wipSN.INV_FLAG, |
| | | OPERATION_TIME = DateTime.Now, |
| | | SFTS_CODE = wipSN.SFTS_CODE, |
| | | SFT_CODE = wipSN.SFT_CODE, |
| | | PRD_CODE = wipSN.PRD_CODE, |
| | | OBA_BATCH = wipSN.OBA_BATCH, |
| | | LOCK_BATCH = wipSN.LOCK_BATCH, |
| | | }; |
| | | CurDefects.Add(defect); |
| | | } |
| | | } |
| | | |
| | |
| | | db.Storageable(woSNs, UserCode).ExecuteCommand(); |
| | | db.Storageable(wipSNs, UserCode).ExecuteCommand(); |
| | | db.Storageable(CurWipSNHiss, UserCode).ExecuteCommand(); |
| | | //如果有不良则保存 |
| | | if (CurDefects.Any()) |
| | | { |
| | | db.Storageable(CurDefects, UserCode).ExecuteCommand(); |
| | | } |
| | | //如果是投入站 |
| | | if (curNode.IS_INPUT == "Y") |
| | | { |
| | |
| | | public List<MES_WIP_DATA> CurWipSNs { get; set; } = new(); |
| | | public string CurSN => CurWipSNs.Any() ? (CurWipSNs.First().TRAY_SN.IsNullOrEmpty() ? CurWipSNs.First().SN : CurWipSNs.First().TRAY_SN) : ""; |
| | | public List<MES_WIP_HIS> CurWipSNHiss { get; set; } = new(); |
| | | public List<MES_WIP_DFT> CurDefects { get; set; } = new(); |
| | | public Dictionary<string, object> Context { get; set; } = new(); |
| | | public List<WorkStep> Steps { get; set; } = new(); |
| | | public WorkStep CurStep { get; set; } |
| | |
| | | public virtual void ResetNode() |
| | | { |
| | | Steps.Clear(); |
| | | CurWipSNs = new(); |
| | | CurWipSNHiss = new(); |
| | | CurWipSNs.Clear(); |
| | | CurWipSNHiss.Clear(); |
| | | CurStep = null; |
| | | CurDefects.Clear(); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | wipSN.DFT_FLAG = "Y"; |
| | | wipSN.DFT_COUNT++; |
| | | wipSN.DFT_CODE = input.DFT_CODE; |
| | | var dft = CurBatch.Defects.FirstOrDefault(q => q.DFT_CODE == wipSN.DFT_CODE); |
| | | var defect = new MES_WIP_DFT() |
| | | { |
| | | AUTH_ORG = wipSN.AUTH_ORG, |
| | | AUTH_PROD = wipSN.LINE_CODE, |
| | | SN = wipSN.SN, |
| | | STATUS = MES_WIP_DFT.STATUSs.WaitHandle.GetValue(), |
| | | ITEM_CODE = wipSN.ITEM_CODE, |
| | | WORK_ORDER = wipSN.WORK_ORDER, |
| | | BATCH_NO = wipSN.BATCH_NO, |
| | | ROT_CODE = wipSN.ROT_CODE, |
| | | NODE_ID = wipSN.NODE_ID, |
| | | NODE_NAME = wipSN.NODE_NAME, |
| | | FTY_CODE = wipSN.FTY_CODE, |
| | | WS_CODE = wipSN.WS_CODE, |
| | | LINE_CODE = wipSN.LINE_CODE, |
| | | POST_CODE = wipSN.POST_CODE, |
| | | OPER_CODE = wipSN.OPER_CODE, |
| | | SEGMENT = wipSN.SEGMENT, |
| | | DFT_CODE = dft.DFT_CODE, |
| | | DFT_NAME = dft.DFT_NAME, |
| | | DFT_LEVEL = dft.DFT_LEVEL, |
| | | TRAY_SN = wipSN.TRAY_SN, |
| | | CONTAINER_SN = wipSN.CONTAINER_SN, |
| | | PALLET_SN = wipSN.PALLET_SN, |
| | | INV_FLAG = wipSN.INV_FLAG, |
| | | OPERATION_TIME = DateTime.Now, |
| | | SFTS_CODE = wipSN.SFTS_CODE, |
| | | SFT_CODE = wipSN.SFT_CODE, |
| | | PRD_CODE = wipSN.PRD_CODE, |
| | | OBA_BATCH = wipSN.OBA_BATCH, |
| | | LOCK_BATCH = wipSN.LOCK_BATCH, |
| | | }; |
| | | CurDefects.Add(defect); |
| | | } |
| | | } |
| | | |
| | |
| | | db.Storageable(woSNs, UserCode).ExecuteCommand(); |
| | | db.Storageable(wipSNs, UserCode).ExecuteCommand(); |
| | | db.Storageable(CurWipSNHiss, UserCode).ExecuteCommand(); |
| | | //如果有不良则保存 |
| | | if (CurDefects.Any()) |
| | | { |
| | | db.Storageable(CurDefects, UserCode).ExecuteCommand(); |
| | | } |
| | | //如果是投入站 |
| | | if (curNode.IS_INPUT == "Y") |
| | | { |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel.DataAnnotations; |
| | | using System.Data; |
| | | using System.Data.Entity; |
| | | using System.Linq; |
| | | using System.Text; |
| | |
| | | his.RULE_ID = rule.ID; |
| | | his.GEN_CODE = string.Concat(rule.Details.OrderBy(q => q.RULE_SEQ).Select(q => q.CodeValue)); |
| | | his.GEN_DATE = DateTime.Now; |
| | | Biz.Db.Insertable(his).ExecuteCommand(); |
| | | try |
| | | { |
| | | Biz.Db.Insertable(his).ExecuteCommand(); |
| | | } |
| | | catch (System.Exception ex) |
| | | { |
| | | throw new DataException(his.GEN_CODE, ex); |
| | | } |
| | | result.Data = his.GEN_CODE; |
| | | } |
| | | } |
| | | catch (DataException ex) |
| | | { |
| | | result.CatchExceptionWithLog(ex.InnerException, Biz.L("BAS.CodeRule.GenerateSnHisException", ruleCode, ex.Message)); |
| | | } |
| | | catch (System.Exception ex) |
| | | { |
| | | result.CatchExceptionWithLog(ex, Biz.L("BAS.CodeRule.GenerateException", ruleCode, string.Join(", ", args))); |
| | |
| | | public List<MES_WO_NODE_POST> NodePosts { get; set; } |
| | | public List<MES_WO_NODE_DFTG> NodeDftgs { get; set; } |
| | | public List<BAS_DEFECT_GRP> DefectGroups { get; set; } |
| | | public List<BAS_DEFECT> Defects => DefectGroups.SelectMany(q => q.Defects).ToList(); |
| | | /// <summary> |
| | | /// 事务锁 |
| | | /// </summary> |
| | |
| | | public List<MES_WO_NODE_POST> NodePosts { get; set; } |
| | | public List<MES_WO_NODE_DFTG> NodeDftgs { get; set; } |
| | | public List<BAS_DEFECT_GRP> DefectGroups { get; set; } |
| | | public List<BAS_DEFECT> Defects { get; } |
| | | |
| | | /// <summary> |
| | | /// 工单开工 |