From 2420648a1522c2e1cd8138bb43dd7d46a6561a1a Mon Sep 17 00:00:00 2001 From: Rodney Chen <rodney.chen@hotmail.com> Date: 星期三, 25 九月 2024 23:37:04 +0800 Subject: [PATCH] 厂内码客户码绑定增加包装工单和成品料号 --- Tiger.Business.MES/WorkAction/ThreeInOne.cs | 4 +- Tiger.Business.MES/iERP/U9C_MES.cs | 2 Tiger.Model.Net/Entitys/MES/MES_CUST_SN.cs | 20 +++++++-- Tiger.Business.MES/Transaction/Position.cs | 43 +++++++++++++++++++++ Tiger.Business.MES/WorkAction/PackingAction.cs | 21 ++++++++++ Tiger.Business.MESTests/MesTests.cs | 10 ++++- Tiger.Business.MES/WorkAction/PackageInputCheck.cs | 4 +- 7 files changed, 92 insertions(+), 12 deletions(-) diff --git a/Tiger.Business.MES/Transaction/Position.cs b/Tiger.Business.MES/Transaction/Position.cs index 11eba06..bf7046f 100644 --- a/Tiger.Business.MES/Transaction/Position.cs +++ b/Tiger.Business.MES/Transaction/Position.cs @@ -11,6 +11,7 @@ using Tiger.Model; using static Tiger.Business.Biz; using Tiger.Model.Entitys.MES.Position; +using System.Globalization; namespace Tiger.Business.MES.Transaction { @@ -579,6 +580,48 @@ return result; } + /// <summary> + /// 鏍规嵁鍖呰宸ュ崟鍜屾潯鐮佽幏鍙栧崕涓鸿姹傜殑鐢熶骇鍛ㄦ湡 + /// </summary> + /// <param name="snList"></param> + /// <returns></returns> + private string GetHuaWeiWeek(string pkgOrder, List<string> snList) + { + Dictionary<string, string> dic = new(); + var snOrder = Biz.Db.Queryable<MES_CUST_SN, BIZ_MES_WO>((q, w) => new JoinQueryInfos(JoinType.Left, q.WORK_ORDER == w.ORDER_NO)) + .Where((q, w) => q.PKG_ORDER == pkgOrder && (snList.Contains(q.FLOW_SN) || snList.Contains(q.CUST_SN))) + .Select((q, w) => new { q.PKG_ORDER, q.WORK_ORDER, w.ACT_START_TIME, w.PLAN_START_TIME, q.FLOW_SN, q.CUST_SN }).ToList(); + foreach (var sn in snList) + { + var item = snOrder.FirstOrDefault(q => q.FLOW_SN == sn || q.CUST_SN == sn); + if (!item.IsNullOrEmpty()) + { + var date = item.ACT_START_TIME < new DateTime(2000, 1, 1) ? item.PLAN_START_TIME : item.ACT_START_TIME; ; + var firstDay = new DateTime(date.Year, 1, 1); + int daysOffset = firstDay.DayOfWeek.GetValue() > 3 ? (firstDay.DayOfWeek.GetValue() - 7) : 0; + int year = date.Year + ((date - firstDay).TotalDays + daysOffset < 0 ? -1 : 0); + int week = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Sunday); + dic.Add(sn, $"{year.ToString().Substring(2, 2)}{week:00}"); + } + else + { + dic.Add(sn, ""); + } + } + var weeks = dic.Select(q => q.Value).Where(q => !q.IsNullOrEmpty()).Distinct().OrderBy(q => q).ToList(); + + switch (weeks.Count) + { + case 0: + return ""; + case 1: + return weeks.First(); + case 2: + return string.Join("/", weeks.Select(q => q + $"({dic.Count(d => d.Value == q)})")); + default: + return string.Join("/", weeks.Take(2)) + " (+)"; + } + } #endregion #endregion Functions diff --git a/Tiger.Business.MES/WorkAction/PackageInputCheck.cs b/Tiger.Business.MES/WorkAction/PackageInputCheck.cs index d75cb28..bb135d0 100644 --- a/Tiger.Business.MES/WorkAction/PackageInputCheck.cs +++ b/Tiger.Business.MES/WorkAction/PackageInputCheck.cs @@ -190,8 +190,8 @@ //鏇存柊鍘傚唴娴佺▼鐮� FlowCSN.CUST_CODE = CurPosition.WorkBatch.WO.CUST_CODE; - FlowCSN.WORK_ORDER = CurPosition.WorkBatch.WO.ORDER_NO; - FlowCSN.ITEM_CODE = CurPosition.WorkBatch.WO.ITEM_CODE; + FlowCSN.PKG_ORDER = CurPosition.WorkBatch.WO.ORDER_NO; + FlowCSN.PROD_CODE = CurPosition.WorkBatch.WO.ITEM_CODE; //璁板綍琛屼负鎿嶄綔璁板綍 var wipActs = new List<MES_WIP_ACT>(); diff --git a/Tiger.Business.MES/WorkAction/PackingAction.cs b/Tiger.Business.MES/WorkAction/PackingAction.cs index 789e0be..a299fc2 100644 --- a/Tiger.Business.MES/WorkAction/PackingAction.cs +++ b/Tiger.Business.MES/WorkAction/PackingAction.cs @@ -748,6 +748,27 @@ return list; } + public List<MES_WIP_PKG> GetMinPackageList(WipPkgItem parent) + { + List<MES_WIP_PKG> list = new(); + if (parent.Items.Any()) + { + foreach (var item in parent.Items) + { + item.Package.PARENT_SN = parent.Package?.SN; + list.AddRange(GetMinPackageList(item)); + } + } + else + { + if (!parent.Package.IsNullOrEmpty()) + { + list.Add(parent.Package); + } + } + return list; + } + public ApiAction<SubmitOutput> CompletePkg() { var action = new ApiAction<SubmitOutput>(new SubmitOutput()); diff --git a/Tiger.Business.MES/WorkAction/ThreeInOne.cs b/Tiger.Business.MES/WorkAction/ThreeInOne.cs index dcb9985..94e5ea3 100644 --- a/Tiger.Business.MES/WorkAction/ThreeInOne.cs +++ b/Tiger.Business.MES/WorkAction/ThreeInOne.cs @@ -326,8 +326,8 @@ //鏇存柊鍘傚唴娴佺▼鐮� FlowCSN.CUST_CODE = CurPosition.WorkBatch.WO.CUST_CODE; - FlowCSN.WORK_ORDER = CurPosition.WorkBatch.WO.ORDER_NO; - FlowCSN.ITEM_CODE = CurPosition.WorkBatch.WO.ITEM_CODE; + FlowCSN.PKG_ORDER = CurPosition.WorkBatch.WO.ORDER_NO; + FlowCSN.PROD_CODE = CurPosition.WorkBatch.WO.ITEM_CODE; //璁板綍琛屼负鎿嶄綔璁板綍 var wipActs = new List<MES_WIP_ACT>(); diff --git a/Tiger.Business.MES/iERP/U9C_MES.cs b/Tiger.Business.MES/iERP/U9C_MES.cs index 5a814da..fd5bc3c 100644 --- a/Tiger.Business.MES/iERP/U9C_MES.cs +++ b/Tiger.Business.MES/iERP/U9C_MES.cs @@ -176,7 +176,7 @@ ITEM_CODE = basItem != null ? basItem.ITEM_CODE : "", CREATE_TIME = di["CreatedOn"].ToDateTime(), UPDATE_TIME = di["ModifiedOn"].ToDateTime(), - PLAN_START_TIME = di["CheckDate"].ToDateTime(), + PLAN_START_TIME = di["CreatedOn"].ToDateTime(), STATUS = 0, AUTH_ORG = orgs.Where(x => x.ID == orgId).Select(q => q.ORG_CODE).FirstOrDefault(), SALES_ORDER = di["SrcDoc_SrcDocNo"] == null ? "" : di["SrcDoc_SrcDocNo"].ToString(), diff --git a/Tiger.Business.MESTests/MesTests.cs b/Tiger.Business.MESTests/MesTests.cs index 6a2ea24..37a2a21 100644 --- a/Tiger.Business.MESTests/MesTests.cs +++ b/Tiger.Business.MESTests/MesTests.cs @@ -1,4 +1,5 @@ -锘縰sing System; +锘縰sing Rhea.Common; +using System; using System.Collections.Generic; using System.Globalization; using System.Linq; @@ -13,8 +14,13 @@ [TestMethod()] public void CommonTest() { - var date = new DateTime(2022,1,1); + var date = new DateTime(2021,1,2); + + var firstDay = new DateTime(date.Year, 1, 1); + int daysOffset = firstDay.DayOfWeek.GetValue() > 3 ? (firstDay.DayOfWeek.GetValue() - 7) : 0; + int year = date.Year + ((date - firstDay).TotalDays + daysOffset < 0 ? -1 : 0); int week = CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Sunday); + var str = $"{year.ToString().Substring(2, 2)}{week:00}"; ; } } diff --git a/Tiger.Model.Net/Entitys/MES/MES_CUST_SN.cs b/Tiger.Model.Net/Entitys/MES/MES_CUST_SN.cs index 195b65a..9d117e1 100644 --- a/Tiger.Model.Net/Entitys/MES/MES_CUST_SN.cs +++ b/Tiger.Model.Net/Entitys/MES/MES_CUST_SN.cs @@ -36,19 +36,29 @@ /// <summary> /// 鍘傚唴娴佽浆鏉$爜(鑻ユ槸瀵煎叆鐨勬湭缁戝畾瀹㈡埛鏉$爜锛屾瀛楁涓虹┖) /// </summary> - [DisplayName("鍘傚唴娴佽浆鏉$爜")] + [DisplayName("鍘傚唴娴佽浆鏉$爜(鑻ユ槸瀵煎叆鐨勬湭缁戝畾瀹㈡埛鏉$爜锛屾瀛楁涓虹┖)")] public string FLOW_SN { get; set; } /// <summary> - /// 宸ュ崟鍙� + /// 鐢熶骇宸ュ崟鍙� /// </summary> - [DisplayName("宸ュ崟鍙�")] + [DisplayName("鐢熶骇宸ュ崟鍙�")] public string WORK_ORDER { get; set; } /// <summary> - /// 鐗╂枡缂栫爜 + /// 鍗婃垚鍝佺墿鏂欑紪鐮� /// </summary> - [DisplayName("鐗╂枡缂栫爜")] + [DisplayName("鍗婃垚鍝佺墿鏂欑紪鐮�")] public string ITEM_CODE { get; set; } /// <summary> + /// 鍖呰宸ュ崟鍙� + /// </summary> + [DisplayName("鍖呰宸ュ崟鍙�")] + public string PKG_ORDER { get; set; } + /// <summary> + /// 鎴愬搧鐗╂枡缂栫爜 + /// </summary> + [DisplayName("鎴愬搧鐗╂枡缂栫爜")] + public string PROD_CODE { get; set; } + /// <summary> /// 澶囨敞 /// </summary> [DisplayName("澶囨敞")] -- Gitblit v1.9.3