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