From 4f5d017c16c2e03d5a6a354aff471d8efe75d34e Mon Sep 17 00:00:00 2001
From: Rodney Chen <rodney.chen@hotmail.com>
Date: 星期一, 02 九月 2024 16:23:21 +0800
Subject: [PATCH] 增加物品客户关系表实体

---
 Tiger.Business/MES/WoContext.cs |  142 +++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 136 insertions(+), 6 deletions(-)

diff --git a/Tiger.Business/MES/WoContext.cs b/Tiger.Business/MES/WoContext.cs
index 1781174..78b28b5 100644
--- a/Tiger.Business/MES/WoContext.cs
+++ b/Tiger.Business/MES/WoContext.cs
@@ -1,11 +1,15 @@
 锘縰sing Microsoft.AspNetCore.Http;
 using Rhea.Common;
+using SqlSugar;
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Net.WebSockets;
 using System.Text;
 using System.Threading.Tasks;
 using Tiger.IBusiness;
+using Tiger.Model;
+using Tiger.Model.Entitys.MES.Position;
 using static Tiger.Business.Biz;
 
 namespace Tiger.Business.MES
@@ -24,23 +28,23 @@
         /// <summary>
         /// 浠庡伐鍗曟壒娆″瓧鍏镐腑鑾峰彇涓�涓伐鍗曟壒娆″璞�
         /// </summary>
-        /// <param name="batchNo"></param>
+        /// <param name="workorder"></param>
         /// <param name="lineCode"></param>
         /// <returns></returns>
-        public static WorkBatch GetBatch(string batchNo, string lineCode = null)
+        public static WorkBatch GetBatch(string workorder, string lineCode)
         {
-            return WoBatchDic.FirstOrDefault(q => q.Value.Batch.BATCH_NO == batchNo && (lineCode.IsNullOrEmpty() || q.Value.Batch.ACT_LINE == lineCode)).Value;
+            return WoBatchDic.FirstOrDefault(q => q.Value.Batch.ORDER_NO == workorder && q.Value.Batch.ACT_LINE == lineCode).Value;
         }
 
         /// <summary>
         /// 鍒ゆ柇宸ュ崟鎵规鏄惁瀛樺湪浜庡伐鍗曟壒娆″瓧鍏镐腑
         /// </summary>
-        /// <param name="batchNo"></param>
+        /// <param name="workorder"></param>
         /// <param name="lineCode"></param>
         /// <returns></returns>
-        public static bool ExistsBatch(string batchNo, string lineCode = null)
+        public static bool ExistsBatch(string workorder, string lineCode)
         {
-            return WoBatchDic.Any(q => q.Value.Batch.BATCH_NO == batchNo && (lineCode.IsNullOrEmpty() || q.Value.Batch.ACT_LINE == lineCode));
+            return WoBatchDic.Any(q => q.Value.Batch.ORDER_NO == workorder && q.Value.Batch.ACT_LINE == lineCode);
         }
 
         /// 浠庡伐鍗曟壒娆″瓧鍏镐腑鍒犻櫎涓�涓伐鍗曟壒娆″璞�
@@ -87,6 +91,132 @@
                 return false;
             }
         }
+
+        /// <summary>
+        /// 鑾峰彇SN鐨勪笅涓�涓伐搴忚妭鐐瑰垪琛�
+        /// </summary>
+        /// <param name="sn"></param>
+        /// <returns></returns>
+        public static ApiAction<List<MES_WO_NODE>> GetSnNextNodes(string sn)
+        {
+            var action = new ApiAction<List<MES_WO_NODE>>(new List<MES_WO_NODE>());
+            try
+            {
+                var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => (q.SN == sn || q.FLOW_SN == sn || q.TRAY_SN == sn || q.INNER_SN == sn || q.CARTON_SN == sn || q.PALLET_SN == sn)).ToList();
+                if (wipSNs.IsNullOrEmpty())
+                {
+                    var woSNs = Biz.Db.Queryable<BIZ_MES_WO_SN>().Where(q => (q.SN == sn || q.TRAY_SN == sn || q.OUTER_SN == sn)).ToList();
+                    //鏌ユ壘鍒版潯鐮佸凡缁戝畾鐨勫伐鍗�
+                    if (!woSNs.IsNullOrEmpty())
+                    {
+                        foreach (var woSN in woSNs)
+                        {
+                            var wipSN = new MES_WIP_DATA()
+                            {
+                                SN = sn,
+                                FLOW_SN = sn,
+                                STATUS = MES_WIP_DATA.STATUSs.Init.GetValue(),
+                                ITEM_CODE = woSN.ITEM_CODE,
+                                WORK_ORDER = woSN.WORK_ORDER,
+                                BATCH_NO = woSN.BATCH_NO,
+                                HOLD_FLAG = "N",
+                                FINISHED_FLAG = "N",
+                                INV_FLAG = "N",
+                                DFT_FLAG = "N",
+                                DFT_COUNT = 0,
+                            };
+                            wipSNs.Add(wipSN);
+                        }
+                    }
+                }
+                if (wipSNs.IsNullOrEmpty())
+                {
+                    action.IsSuccessed = false;
+                    //action.LocaleMsg = new($"鎵句笉鍒版潯鐮乕{sn}]鐨勭敓浜т俊鎭�", sn);
+                    action.LocaleMsg = new("MES.WoContext.SnNotFound", sn);
+                }
+                else
+                {
+                    if (!WoBatchDic.Any(q => q.Value.WO.ORDER_NO == wipSNs.First().WORK_ORDER))
+                    {
+                        var wb = new WorkBatch(wipSNs.First().WORK_ORDER).Init("");
+                        WoBatchDic.Add(wb.Batch.BATCH_NO, wb);
+                    }
+                    var wo = WoBatchDic.FirstOrDefault(q => q.Value.WO.ORDER_NO == wipSNs.First().WORK_ORDER).Value;
+                    action.Data = wo.GetNextNodes(wipSNs.First());
+                }
+            }
+            catch (Exception ex)
+            {
+                //action.CatchExceptionWithLog(ex, $"鑾峰彇鏉$爜[{sn}]鐨勪笅涓�涓伐搴忚妭鐐瑰垪琛ㄥ紓甯�");
+                action.CatchExceptionWithLog(ex, Biz.L("MES.WoContext.GetSnNextNodesException", sn));
+            }
+            return action;
+        }
+
+        /// <summary>
+        /// 璁剧疆褰撳墠鏉$爜鐨勫伐搴忎俊鎭�
+        /// </summary>
+        public static ApiAction<OperInfo> GetSnOperInfo(string sn)
+        {
+            var action = new ApiAction<OperInfo>(new OperInfo());
+            try
+            {
+                var wipSNs = Biz.Db.Queryable<MES_WIP_DATA>().IncludesAllFirstLayer().Where(q => (q.SN == sn || q.FLOW_SN == sn || q.TRAY_SN == sn || q.INNER_SN == sn || q.CARTON_SN == sn || q.PALLET_SN == sn)).ToList();
+                if (wipSNs.IsNullOrEmpty())
+                {
+                    var woSNs = Biz.Db.Queryable<BIZ_MES_WO_SN>().Where(q => (q.SN == sn || q.TRAY_SN == sn || q.OUTER_SN == sn)).ToList();
+                    //鏌ユ壘鍒版潯鐮佸凡缁戝畾鐨勫伐鍗�
+                    if (!woSNs.IsNullOrEmpty())
+                    {
+                        foreach (var woSN in woSNs)
+                        {
+                            var wipSN = new MES_WIP_DATA()
+                            {
+                                SN = sn,
+                                FLOW_SN = sn,
+                                STATUS = MES_WIP_DATA.STATUSs.Init.GetValue(),
+                                ITEM_CODE = woSN.ITEM_CODE,
+                                WORK_ORDER = woSN.WORK_ORDER,
+                                BATCH_NO = woSN.BATCH_NO,
+                                HOLD_FLAG = "N",
+                                FINISHED_FLAG = "N",
+                                INV_FLAG = "N",
+                                DFT_FLAG = "N",
+                                DFT_COUNT = 0,
+                            };
+                            wipSNs.Add(wipSN);
+                        }
+                    }
+                }
+                if (wipSNs.IsNullOrEmpty())
+                {
+                    action.IsSuccessed = false;
+                    //action.LocaleMsg = new($"鎵句笉鍒版潯鐮乕{sn}]鐨勭敓浜т俊鎭�", sn);
+                    action.LocaleMsg = new("MES.WoContext.SnNotFound", sn);
+                }
+                else
+                {
+                    if (!WoBatchDic.Any(q => q.Value.WO.ORDER_NO == wipSNs.First().WORK_ORDER))
+                    {
+                        var wb = new WorkBatch(wipSNs.First().WORK_ORDER).Init("");
+                        WoBatchDic.Add(wb.Batch.BATCH_NO, wb);
+                    }
+                    var wo = WoBatchDic.FirstOrDefault(q => q.Value.WO.ORDER_NO == wipSNs.First().WORK_ORDER).Value;
+                    action.Data = new()
+                    {
+                        CurNode = wipSNs.First().NODE_NAME,
+                        NextNode = string.Join(",", wo.GetNextNodes(wipSNs.First()).Select(q => q.NODE_NAME)),
+                    };
+                }
+            }
+            catch (Exception ex)
+            {
+                //action.CatchExceptionWithLog(ex, $"鑾峰彇鏉$爜[{sn}]鐨勫伐搴忎俊鎭紓甯�");
+                action.CatchExceptionWithLog(ex, Biz.L("MES.WoContext.GetSnOperInfoException", sn));
+            }
+            return action;
+        }
         #endregion
     }
 }

--
Gitblit v1.9.3