From 4815ba8990b60ff879b99fec6e77cb73470bdccb Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期五, 19 七月 2024 15:24:25 +0800 Subject: [PATCH] 过站判断当前班次时段并保存 --- Tiger.Business.MES/Transaction/CollectNode.cs | 10 + Tiger.Model.Net/Entitys/MES/MES_SHIFT_SYS.cs | 76 +++++++------- Tiger.Business.MES/Transaction/PackingNode.cs | 10 + Tiger.Model.Net/Entitys/MES/MES_WO_NODE_ACT.cs | 2 Tiger.Business.MES/Transaction/Position.cs | 25 +++++ Tiger.Business/MES/Biz.WorkBatch.cs | 29 +++++ Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs | 6 + Tiger.Model.Net/Entitys/MES/MES_SHIFT.cs | 88 +++++++++-------- Tiger.Business.MES/Transaction/TestNode.cs | 10 + 9 files changed, 165 insertions(+), 91 deletions(-) diff --git a/Tiger.Business.MES/Transaction/CollectNode.cs b/Tiger.Business.MES/Transaction/CollectNode.cs index c9bc4ea..b1527ff 100644 --- a/Tiger.Business.MES/Transaction/CollectNode.cs +++ b/Tiger.Business.MES/Transaction/CollectNode.cs @@ -205,9 +205,13 @@ wipSN.OPER_CODE = curNode.OPER_CODE; wipSN.SEGMENT = curNode.SEGMENT; wipSN.OPERATION_TIME = DateTime.Now; - wipSN.SFTS_CODE = CurLine.SFTS_CODE; - //wipSN.SFT_CODE = CurBatch.WO.ROUTE_CODE; - //wipSN.PRD_CODE = CurBatch.WO.ROUTE_CODE; + var curShiftPeriod = GetShiftPeriodForNow(); + if (!curShiftPeriod.IsNullOrEmpty()) + { + wipSN.SFTS_CODE = curShiftPeriod.ShiftSys.SFTS_CODE; + wipSN.SFT_CODE = curShiftPeriod.Shift.SFT_CODE; + wipSN.PRD_CODE = curShiftPeriod.Period.PRD_CODE; + } CurBatch.StartWorking(UserCode); //濡傛灉鏄姇鍏ョ珯 diff --git a/Tiger.Business.MES/Transaction/PackingNode.cs b/Tiger.Business.MES/Transaction/PackingNode.cs index 5be4048..a1c08f5 100644 --- a/Tiger.Business.MES/Transaction/PackingNode.cs +++ b/Tiger.Business.MES/Transaction/PackingNode.cs @@ -205,9 +205,13 @@ wipSN.OPER_CODE = curNode.OPER_CODE; wipSN.SEGMENT = curNode.SEGMENT; wipSN.OPERATION_TIME = DateTime.Now; - wipSN.SFTS_CODE = CurLine.SFTS_CODE; - //wipSN.SFT_CODE = CurBatch.WO.ROUTE_CODE; - //wipSN.PRD_CODE = CurBatch.WO.ROUTE_CODE; + var curShiftPeriod = GetShiftPeriodForNow(); + if (!curShiftPeriod.IsNullOrEmpty()) + { + wipSN.SFTS_CODE = curShiftPeriod.ShiftSys.SFTS_CODE; + wipSN.SFT_CODE = curShiftPeriod.Shift.SFT_CODE; + wipSN.PRD_CODE = curShiftPeriod.Period.PRD_CODE; + } CurBatch.StartWorking(UserCode); //濡傛灉鏄姇鍏ョ珯 diff --git a/Tiger.Business.MES/Transaction/Position.cs b/Tiger.Business.MES/Transaction/Position.cs index fd494ab..dbcd9fd 100644 --- a/Tiger.Business.MES/Transaction/Position.cs +++ b/Tiger.Business.MES/Transaction/Position.cs @@ -39,6 +39,9 @@ //if (CurFactory.IsNullOrEmpty()) throw new InvalidDataException($"MES.Transaction.Position.FactoryNotExistsException", new Exception($"{postCode}|{CurWorkshop.FTY_CODE}")); if (CurFactory.IsNullOrEmpty()) throw new InvalidDataException($"宀椾綅[{postCode}]鎵�灞炵殑宸ュ巶[{CurWorkshop.FTY_CODE}]涓嶅瓨鍦紝璇峰厛璁剧疆鎵�灞炲伐鍘�", new Exception($"{postCode}|{CurWorkshop.FTY_CODE}")); + //鍔犺浇褰撳墠浜х嚎鐨勭彮鍒� + CurShiftSys = Biz.Db.Queryable<MES_SHIFT_SYS>().Where(q => q.SFTS_CODE == CurLine.SFTS_CODE).IncludesAllFirstLayer().IncludesAllSecondLayer(q => q.Shifts).First(); + return this; } @@ -49,6 +52,7 @@ public MES_WORKSHOP CurWorkshop { get; set; } public MES_LINE CurLine { get; set; } public MES_POSITION CurPosition { get; set; } + public MES_SHIFT_SYS CurShiftSys { get; set; } public WorkBatch CurBatch { get; set; } public IWorkBatch WorkBatch => CurBatch; public MES_WIP_DATA CurWipSN { get; set; } @@ -121,6 +125,27 @@ } /// <summary> + /// 鑾峰彇褰撳墠鏃堕棿鎵�灞炵殑鐝埗鐝鏃舵 + /// </summary> + public ShiftPeriod GetShiftPeriodForNow() + { + var time = DateTime.Now.ToString("HHmm").ToInt32(); + foreach (var shift in CurShiftSys.Shifts) + { + var period = shift.Periods.Where(q => q.PRD_BEGIN <= time && time <= q.PRD_END).FirstOrDefault(); + if (!period.IsNullOrEmpty()) + { + var result = new ShiftPeriod(); + result.ShiftSys = CurShiftSys; + result.Shift = shift; + result.Period = period; + return result; + } + } + return null; + } + + /// <summary> /// 閲嶇疆褰撳墠宸ユ /// </summary> public void ResetSteps() diff --git a/Tiger.Business.MES/Transaction/TestNode.cs b/Tiger.Business.MES/Transaction/TestNode.cs index 3e2ad80..450b654 100644 --- a/Tiger.Business.MES/Transaction/TestNode.cs +++ b/Tiger.Business.MES/Transaction/TestNode.cs @@ -206,9 +206,13 @@ wipSN.OPER_CODE = curNode.OPER_CODE; wipSN.SEGMENT = curNode.SEGMENT; wipSN.OPERATION_TIME = DateTime.Now; - wipSN.SFTS_CODE = CurLine.SFTS_CODE; - //wipSN.SFT_CODE = CurBatch.WO.ROUTE_CODE; - //wipSN.PRD_CODE = CurBatch.WO.ROUTE_CODE; + var curShiftPeriod = GetShiftPeriodForNow(); + if (!curShiftPeriod.IsNullOrEmpty()) + { + wipSN.SFTS_CODE = curShiftPeriod.ShiftSys.SFTS_CODE; + wipSN.SFT_CODE = curShiftPeriod.Shift.SFT_CODE; + wipSN.PRD_CODE = curShiftPeriod.Period.PRD_CODE; + } CurBatch.StartWorking(UserCode); //濡傛灉鏄姇鍏ョ珯 diff --git a/Tiger.Business/MES/Biz.WorkBatch.cs b/Tiger.Business/MES/Biz.WorkBatch.cs index 28e9b99..bc5be89 100644 --- a/Tiger.Business/MES/Biz.WorkBatch.cs +++ b/Tiger.Business/MES/Biz.WorkBatch.cs @@ -78,7 +78,7 @@ /// <returns></returns> public bool StartWorking(string user) { - if (Batch.STATUS == BIZ_MES_WO_BATCH.STATUSs.Working.GetValue() || Batch.STATUS == BIZ_MES_WO_BATCH.STATUSs.Paused.GetValue()) + if (Batch.STATUS == BIZ_MES_WO_BATCH.STATUSs.Release.GetValue() || Batch.STATUS == BIZ_MES_WO_BATCH.STATUSs.Paused.GetValue()) { WO.STATUS = BIZ_MES_WO.STATUSs.Working.GetValue(); WO.ACT_START_TIME = WO.ACT_START_TIME < new DateTime(2000, 1, 1) ? DateTime.Now : WO.ACT_START_TIME; @@ -101,6 +101,33 @@ } /// <summary> + /// 宸ュ崟鏆傚仠 + /// </summary> + /// <param name="user"></param> + /// <returns></returns> + public bool PausedWorking(string user) + { + if (Batch.STATUS == BIZ_MES_WO_BATCH.STATUSs.Working.GetValue()) + { + WO.STATUS = BIZ_MES_WO.STATUSs.Paused.GetValue(); + Batch.STATUS = BIZ_MES_WO_BATCH.STATUSs.Paused.GetValue(); + //淇濆瓨鏁版嵁搴� + var db = Biz.Db; + var dbTran = db.UseTran(() => + { + db.Updateable(WO, user).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand(); + db.Updateable(Batch, user).UpdateColumns(q => new { q.UPDATE_TIME, q.UPDATE_USER, q.STATUS }).ExecuteCommand(); + }); + if (!dbTran.IsSuccess) + { + //throw dbTran.ErrorException; + return false; + } + } + return true; + } + + /// <summary> /// 鏍规嵁宀椾綅缂栫爜鍒ゆ柇鏄笉鏄绔� /// </summary> /// <param name="postCode"></param> diff --git a/Tiger.Model.Net/Entitys/MES/MES_SHIFT.cs b/Tiger.Model.Net/Entitys/MES/MES_SHIFT.cs index 88ffe4d..4cdf10f 100644 --- a/Tiger.Model.Net/Entitys/MES/MES_SHIFT.cs +++ b/Tiger.Model.Net/Entitys/MES/MES_SHIFT.cs @@ -7,95 +7,97 @@ namespace Tiger.Model { /// <summary> - /// 实体:班次 + /// 瀹炰綋锛氱彮娆� /// </summary> [Description("Primary:ID")] - [DisplayName("班次")] + [DisplayName("鐝")] [Serializable] [SugarTable("MES_SHIFT")] public class MES_SHIFT : DbEntityWithAuth { - #region 构造函数 + #region 鏋勯�犲嚱鏁� /// <summary> - /// 实体:班次 + /// 瀹炰綋锛氱彮娆� /// </summary> public MES_SHIFT() {} #endregion - #region 公共属性 + #region 鍏叡灞炴�� /// <summary> - /// 班次编码 + /// 鐝缂栫爜 /// </summary> - [DisplayName("班次编码")] + [DisplayName("鐝缂栫爜")] public string SFT_CODE { get; set; } /// <summary> - /// 班次名称 + /// 鐝鍚嶇О /// </summary> - [DisplayName("班次名称")] + [DisplayName("鐝鍚嶇О")] public string SFT_NAME { get; set; } /// <summary> - /// 班制编码 + /// 鐝埗缂栫爜 /// </summary> - [DisplayName("班制编码")] + [DisplayName("鐝埗缂栫爜")] public string SFTS_CODE { get; set; } /// <summary> - /// 班次开始时间 + /// 鐝寮�濮嬫椂闂� /// </summary> - [DisplayName("班次开始时间")] + [DisplayName("鐝寮�濮嬫椂闂�")] public int SFT_BEGIN { get; set; } /// <summary> - /// 班次结束时间 + /// 鐝缁撴潫鏃堕棿 /// </summary> - [DisplayName("班次结束时间")] + [DisplayName("鐝缁撴潫鏃堕棿")] public int SFT_END { get; set; } /// <summary> - /// 是否跨天(Y/N) + /// 鏄惁璺ㄥぉ(Y/N) /// </summary> - [DisplayName("是否跨天(Y/N)")] + [DisplayName("鏄惁璺ㄥぉ(Y/N)")] public string IS_ACROSS_DAY { get; set; } /// <summary> - /// 备注 + /// 澶囨敞 /// </summary> - [DisplayName("备注")] + [DisplayName("澶囨敞")] public string REMARK { get; set; } - #endregion + #endregion - #region 虚拟属性 - /*例子 + #region 铏氭嫙灞炴�� + /*渚嬪瓙 [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ - #endregion + #endregion - #region 外键属性 - /*例子 - //一对一外键导航 - [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是MES_SHIFT类里面的外键ID字段 - public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null - //一对多外键导航 - [Navigate(NavigateType.OneToMany, nameof(ClassA.MES_SHIFTId))]//ClassA表中的MES_SHIFTId - public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null - //多对多外键导航 - [Navigate(typeof(MappingClass), nameof(MappingClass.MES_SHIFTId), nameof(MappingClass.ClassAId))]//注意顺序 - public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null + #region 澶栭敭灞炴�� + /*渚嬪瓙 + //涓�瀵逛竴澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疢ES_SHIFT绫婚噷闈㈢殑澶栭敭ID瀛楁 + public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //涓�瀵瑰澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToMany, nameof(ClassA.MES_SHIFTId))]//ClassA琛ㄤ腑鐨凪ES_SHIFTId + public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //澶氬澶氬閿鑸� + [Navigate(typeof(MappingClass), nameof(MappingClass.MES_SHIFTId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭 + public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull */ - #endregion + [Navigate(NavigateType.OneToMany, nameof(MES_SHIFT_PRD.SFT_CODE), nameof(SFT_CODE), "GHOST_ROW = 0")]//ClassA琛ㄤ腑鐨凚AS_DEFECT_GRPId + public List<MES_SHIFT_PRD> Periods { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + #endregion - #region 枚举变量 - /*例子 + #region 鏋氫妇鍙橀噺 + /*渚嬪瓙 public enum FieldNames { - [Description("枚举描述0")] + [Description("鏋氫妇鎻忚堪0")] Enum0, - [Description("枚举描述1")] + [Description("鏋氫妇鎻忚堪1")] Enum1, } */ - #endregion + #endregion - #region 公共方法 + #region 鍏叡鏂规硶 - #endregion + #endregion - }//endClass + }//endClass } \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/MES/MES_SHIFT_SYS.cs b/Tiger.Model.Net/Entitys/MES/MES_SHIFT_SYS.cs index 397b294..d627846 100644 --- a/Tiger.Model.Net/Entitys/MES/MES_SHIFT_SYS.cs +++ b/Tiger.Model.Net/Entitys/MES/MES_SHIFT_SYS.cs @@ -7,80 +7,82 @@ namespace Tiger.Model { /// <summary> - /// 实体:班制 + /// 瀹炰綋锛氱彮鍒� /// </summary> [Description("Primary:ID")] - [DisplayName("班制")] + [DisplayName("鐝埗")] [Serializable] [SugarTable("MES_SHIFT_SYS")] public class MES_SHIFT_SYS : DbEntityWithAuth { - #region 构造函数 + #region 鏋勯�犲嚱鏁� /// <summary> - /// 实体:班制 + /// 瀹炰綋锛氱彮鍒� /// </summary> public MES_SHIFT_SYS() {} #endregion - #region 公共属性 + #region 鍏叡灞炴�� /// <summary> - /// 班制编码 + /// 鐝埗缂栫爜 /// </summary> - [DisplayName("班制编码")] + [DisplayName("鐝埗缂栫爜")] public string SFTS_CODE { get; set; } /// <summary> - /// 班制名称 + /// 鐝埗鍚嶇О /// </summary> - [DisplayName("班制名称")] + [DisplayName("鐝埗鍚嶇О")] public string SFTS_NAME { get; set; } /// <summary> - /// 是否启用(Y/N) + /// 鏄惁鍚敤(Y/N) /// </summary> - [DisplayName("是否启用(Y/N)")] + [DisplayName("鏄惁鍚敤(Y/N)")] public string IS_ACTIVE { get; set; } /// <summary> - /// 备注 + /// 澶囨敞 /// </summary> - [DisplayName("备注")] + [DisplayName("澶囨敞")] public string REMARK { get; set; } - #endregion + #endregion - #region 虚拟属性 - /*例子 + #region 铏氭嫙灞炴�� + /*渚嬪瓙 [SugarColumn(IsIgnore = true)] public string FieldName { get; set; } */ - #endregion + #endregion - #region 外键属性 - /*例子 - //一对一外键导航 - [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是MES_SHIFT_SYS类里面的外键ID字段 - public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null - //一对多外键导航 - [Navigate(NavigateType.OneToMany, nameof(ClassA.MES_SHIFT_SYSId))]//ClassA表中的MES_SHIFT_SYSId - public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null - //多对多外键导航 - [Navigate(typeof(MappingClass), nameof(MappingClass.MES_SHIFT_SYSId), nameof(MappingClass.ClassAId))]//注意顺序 - public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null + #region 澶栭敭灞炴�� + /*渚嬪瓙 + //涓�瀵逛竴澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疢ES_SHIFT_SYS绫婚噷闈㈢殑澶栭敭ID瀛楁 + public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //涓�瀵瑰澶栭敭瀵艰埅 + [Navigate(NavigateType.OneToMany, nameof(ClassA.MES_SHIFT_SYSId))]//ClassA琛ㄤ腑鐨凪ES_SHIFT_SYSId + public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + //澶氬澶氬閿鑸� + [Navigate(typeof(MappingClass), nameof(MappingClass.MES_SHIFT_SYSId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭 + public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull */ - #endregion + [Navigate(NavigateType.OneToMany, nameof(MES_SHIFT.SFTS_CODE), nameof(SFTS_CODE), "GHOST_ROW = 0")]//ClassA琛ㄤ腑鐨凚AS_DEFECT_GRPId + public List<MES_SHIFT> Shifts { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull + #endregion - #region 枚举变量 - /*例子 + #region 鏋氫妇鍙橀噺 + /*渚嬪瓙 public enum FieldNames { - [Description("枚举描述0")] + [Description("鏋氫妇鎻忚堪0")] Enum0, - [Description("枚举描述1")] + [Description("鏋氫妇鎻忚堪1")] Enum1, } */ - #endregion + #endregion - #region 公共方法 + #region 鍏叡鏂规硶 - #endregion + #endregion - }//endClass + }//endClass } \ No newline at end of file diff --git a/Tiger.Model.Net/Entitys/MES/MES_WO_NODE_ACT.cs b/Tiger.Model.Net/Entitys/MES/MES_WO_NODE_ACT.cs index f609fae..3c82390 100644 --- a/Tiger.Model.Net/Entitys/MES/MES_WO_NODE_ACT.cs +++ b/Tiger.Model.Net/Entitys/MES/MES_WO_NODE_ACT.cs @@ -154,7 +154,7 @@ [Navigate(typeof(MappingClass), nameof(MappingClass.MES_WO_NODE_ACTId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭 public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull */ - [Navigate(NavigateType.OneToOne, nameof(ACT_CODE), nameof(MES_CUSTOM_ACT.ACT_CODE))]//涓�瀵逛竴 ClassAId鏄疢ES_WO_NODE_ACT绫婚噷闈㈢殑澶栭敭ID瀛楁 + [Navigate(NavigateType.OneToOne, nameof(ACT_CODE), nameof(MES_CUSTOM_ACT.ACT_CODE), "GHOST_ROW = 0")]//涓�瀵逛竴 ClassAId鏄疢ES_WO_NODE_ACT绫婚噷闈㈢殑澶栭敭ID瀛楁 public MES_CUSTOM_ACT Definition { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull #endregion diff --git a/Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs b/Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs index d42ab64..602edec 100644 --- a/Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs +++ b/Tiger.Model.Net/Entitys/MES/ParameterEntity/PositionParameter.cs @@ -11,6 +11,12 @@ public string USER_CODE { get; set; } public string POST_CODE { get; set; } } + public class ShiftPeriod + { + public MES_SHIFT_SYS ShiftSys { get; set; } + public MES_SHIFT Shift { get; set; } + public MES_SHIFT_PRD Period { get; set; } + } public class WoInput : ApiInput { -- Gitblit v1.9.3