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/Transaction/Position.cs |   43 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 43 insertions(+), 0 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
 

--
Gitblit v1.9.3