From 4361513fb831fdd416356e576682358bd72a121c Mon Sep 17 00:00:00 2001
From: Cloud Zhang <941187371@qq.com>
Date: 星期四, 16 五月 2024 14:20:36 +0800
Subject: [PATCH] 合并

---
 Tiger.Model.Net/Entitys/MES/MES_ROUTE_NODE_DFTG.cs   |   75 +++
 Tiger.Model.Net/Entitys/BAS/BAS_DEFECT.cs            |   81 +++
 Tiger.Model.Net/Entitys/BAS/BAS_REASON.cs            |   85 +++
 Tiger.Model.Net/Entitys/BAS/BAS_DFT_DUTY.cs          |   77 +++
 Tiger.Model.Net/Tiger.Model.Net.csproj               |    8 
 Tiger.Model.Net/Entitys/MES/SMT_LOADING.cs           |   78 +-
 Tiger.Business/WMS/MengQi/Biz.Mq.SNData.cs           |    3 
 Tiger.Business/MES/Transaction/MESTransactionBase.cs |   47 +
 Tiger.Business/MES/SMT/Biz.SmtTool.cs                |    2 
 Tiger.IBusiness/MES/Transaction/IMESTransaction.cs   |   14 
 Tiger.Model.Net/Entitys/MES/SMT_WO_TABLE.cs          |    2 
 Tiger.Model.Net/Entitys/BAS/BAS_PROD_BOM.cs          |  166 +++---
 Tiger.Api/appsettings.json                           |    4 
 Tiger.Model.Net/Entitys/WMS/MengQi/SNData_His.cs     |   12 
 Tiger.IBusiness/MES/Transaction/ILoadingMaterial.cs  |   19 
 Tiger.Model.Net/Entitys/MES/SMT_LOAD_HIS.cs          |  211 +++----
 Tiger.Model.Net/Entitys/WMS/MengQi/SNData.cs         |   12 
 Tiger.Model.Net/Entitys/BAS/BAS_DEFECT_GRP.cs        |   77 +++
 Tiger.Business/MES/Transaction/LoadingMaterial.cs    |  262 ++++++++++
 Tiger.Model.Net/Entitys/BAS/BAS_DFT_LOC.cs           |   77 +++
 Tiger.Model.Net/Entitys/MES/SMT_PROD_TABLE.cs        |    2 
 Tiger.Api/Controllers/MES/SMTController.Tool.cs      |    2 
 Tiger.Model.Net/Entitys/WMS/Api/BaseInput.cs         |   10 
 Tiger.Model.Net/Entitys/BAS/BAS_SOLUTION.cs          |   77 +++
 Tiger.Model.Net/Entitys/BAS/BAS_REASON_GRP.cs        |   77 +++
 Tiger.Model.Net/Entitys/MES/SMT_FEEDER.cs            |    2 
 26 files changed, 1,247 insertions(+), 235 deletions(-)

diff --git a/Tiger.Api/Controllers/MES/SMTController.Tool.cs b/Tiger.Api/Controllers/MES/SMTController.Tool.cs
index 0e14ad0..fda8ea0 100644
--- a/Tiger.Api/Controllers/MES/SMTController.Tool.cs
+++ b/Tiger.Api/Controllers/MES/SMTController.Tool.cs
@@ -16,7 +16,7 @@
         /// <returns></returns>
         [HttpPost]
         [Route("api/[controller]/[action]")]
-        public async Task<IActionResult> GetNotLoadingMaterial([FromBody] ApiAction<smtWoTableParams> action)
+        public async Task<IActionResult> GetNotLoadingMaterial([FromBody] ApiAction<SmtLoadingInput> action)
         {
             ApiAction response = new();
             try
diff --git a/Tiger.Api/appsettings.json b/Tiger.Api/appsettings.json
index 67697c4..b7c8575 100644
--- a/Tiger.Api/appsettings.json
+++ b/Tiger.Api/appsettings.json
@@ -39,7 +39,9 @@
     "Vue31": "https://localhost:3100",
     "Vue32": "http://localhost:10591",
     "Vue4": "http://127.0.0.1:5173",
-    "Vue5": "http://localhost:5173"
+    "Vue5": "http://localhost:5173",
+    "Vue3108": "http://localhost:3108",
+    "Vue3118": "http://localhost:3118"
   },
   "MQTT": {
     "Enable": true,
diff --git a/Tiger.Business/MES/SMT/Biz.SmtTool.cs b/Tiger.Business/MES/SMT/Biz.SmtTool.cs
index d1f1110..2fc34f6 100644
--- a/Tiger.Business/MES/SMT/Biz.SmtTool.cs
+++ b/Tiger.Business/MES/SMT/Biz.SmtTool.cs
@@ -30,7 +30,7 @@
             /// </summary>
             /// <param name="paras"></param>
             /// <returns></returns>
-            public async Task<ApiAction<List<SMT_WO_TABLE>>> GetNotLoadingMaterial(smtWoTableParams paras)
+            public async Task<ApiAction<List<SMT_WO_TABLE>>> GetNotLoadingMaterial(SmtLoadingInput paras)
             {
                 var res = new ApiAction<List<SMT_WO_TABLE>>();
                 List<SMT_WO_TABLE> sList = new List<SMT_WO_TABLE>();
diff --git a/Tiger.Business/MES/Transaction/LoadingMaterial.cs b/Tiger.Business/MES/Transaction/LoadingMaterial.cs
new file mode 100644
index 0000000..7a66e1c
--- /dev/null
+++ b/Tiger.Business/MES/Transaction/LoadingMaterial.cs
@@ -0,0 +1,262 @@
+锘縰sing Rhea.Common;
+using Tiger.IBusiness;
+using SqlSugar;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Linq.Expressions;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using Tiger.Model;
+using Tiger.Model.Sharetronic.Shelf;
+using System.ComponentModel;
+
+namespace Tiger.Business.MES.Transaction
+{
+    /// <summary>
+    /// SMT涓婃枡璋冨害浜嬪姟
+    /// </summary>
+    public class LoadingMaterial : MESTransactionBase, ILoadingMaterial
+    {
+        public ILoadingMaterial Init(string id, string userCode, string apiHost, string orgCode)
+        {
+            TransID = id;
+            UserCode = userCode;
+            ApiHost = apiHost;
+            OrgCode = orgCode;
+            Logger.Console.Info($"Start {this.GetType().Name} Transaction[ID: {TransID}]");
+            return this;
+        }
+
+        #region Propertys & Variables
+
+        public string UserCode { get; set; }
+        public long UserId { get; set; }
+        public string OrgCode { get; set; }
+        public string CurrSmtCode { get; set; }
+        public string CurrSlotNo { get; set; }
+        /// <summary>
+        /// 姝ラ绫诲瀷
+        /// </summary>
+        public enum Step_Types
+        {
+            /// <summary>
+            /// 鎵弿鏈哄櫒缂栫爜
+            /// </summary>
+            [Description("鏈哄櫒缂栫爜")]
+            SmtCode,
+            /// <summary>
+            /// 鎵弿妲戒綅
+            /// </summary>
+            [Description("妲戒綅")]
+            SlotNo,
+            /// <summary>
+            /// 鎵弿椋炶揪
+            /// </summary>
+            [Description("Feeder")]
+            Feeder,
+            /// <summary>
+            /// 鎵弿鏂欑洏SN
+            /// </summary>
+            [Description("鏂欑洏鐮�")]
+            SN,
+        }
+
+        #endregion Propertys & Variables
+
+        #region Functions
+
+        /// <summary>
+        /// 鎵弿鏉$爜涓婃枡
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        public async Task<ApiAction> ScanItem(SmtLoadingInput input)
+        {
+            var action = new ApiAction();
+            try
+            {
+                if (input.Code.IsNullOrEmpty())
+                {
+                    action.IsSuccessed = false;
+                    action.LocaleMsg = Biz.L($"{EnumHelper.GetEnum<Step_Types>(input.Step).GetDesc()}涓嶈兘涓虹┖");
+                    return action;
+                }
+
+                //01鏍规嵁涓婃枡姝ラ鎵ц鐩稿簲鏂规硶
+                switch (EnumHelper.GetEnum<Step_Types>(input.Step))
+                {
+                    case Step_Types.SmtCode:
+                        action = ExecuteSmtCode(input);
+                        break;
+                    case Step_Types.SlotNo:
+                        action = ExecuteSlotNo(input);
+                        break;
+                    case Step_Types.Feeder:
+                        action = ExecuteFeeder(input);
+                        break;
+                    case Step_Types.SN:
+                        action = ExecuteSN(input);
+                        break;
+                }
+
+                //02淇濆瓨涓婃枡鏁版嵁
+
+                //03鏌ョ湅鏈笂鏂欏垪琛�
+                Biz.SmtTool smtTool = new();
+                var actionSmtTool = await smtTool.GetNotLoadingMaterial(input);
+                if (actionSmtTool.IsSuccessed)
+                {
+                    //甯﹀叆鏈哄櫒缂栫爜鏌ヨ锛屽鏋滄病鏈夋湭涓婃枡鐨勯」锛岃鏄庡綋鍓嶆満鍣ㄦ墍鏈夋Ы浣嶅潎宸插畬鎴愪笂鏂欙紒
+                    if (actionSmtTool.Data.Count == 0)
+                    {
+                        var _input = input.Clone();
+                        _input.machineCode = "";
+                        action.LocaleMsg = Biz.L($"褰撳墠鏈哄櫒鎵�鏈夋Ы浣嶅潎宸插畬鎴愪笂鏂欙紒");
+                        var _actionSmtTool = await smtTool.GetNotLoadingMaterial(_input);
+                        if (_actionSmtTool.IsSuccessed)
+                        {
+                            //涓嶅甫鍏ユ満鍣ㄧ紪鐮佹煡璇紝濡傛灉娌℃湁鏈笂鏂欑殑椤癸紝璇存槑褰撳墠绾垮埆鎵�鏈夋満鍣ㄥ潎宸插畬鎴愪笂鏂欙紒
+                            if (_actionSmtTool.Data.Count == 0)
+                            {
+                                action.LocaleMsg = Biz.L($"褰撳墠绾垮埆鎵�鏈夋満鍣ㄥ潎宸插畬鎴愪笂鏂�");
+                            }
+                        }
+                        else
+                        {
+                            action.IsSuccessed = false;
+                            action.LocaleMsg = Biz.L($"鑾峰彇鏈笂鏂欏垪琛ㄥけ璐ワ紒");
+                        }
+                    }
+                }
+                else
+                {
+                    action.IsSuccessed = false;
+                    action.LocaleMsg = Biz.L($"鑾峰彇鏈笂鏂欏垪琛ㄥけ璐ワ紒");
+                }
+
+                //action.Data = new ProdReqOutput()
+                //{
+                //    SN = CurInv.SN,
+                //    ItemCode = CurInv.ItemInfo.ITEM_CODE,
+                //    Qty = CurInv.CurPkg.QTY,
+                //    CutQty = CurInv.CurPkg.QTY - cutQty,
+                //    isCutting = isCutting,
+                //    isExceed = isExceed,
+                //    ReqNo = req.BILLCODE,
+                //    regionCode = CurInv.Region.REGION_CODE,
+                //    locationCode = CurInv.Location?.LOCATION_CODE,
+                //};
+            }
+            catch (Exception ex)
+            {
+                action.CatchExceptionWithLog(ex, $"鎵弿鐗╂枡[{input.Code}]澶嶆牳寮傚父");
+            }
+            return action;
+        }
+
+        private ApiAction ExecuteSmtCode(SmtLoadingInput input) {
+            var action = new ApiAction();
+            try
+            {
+                if (Biz.Db.Queryable<SMT_WO_TABLE>().Where(x => x.WORK_ORDER == input.moCode && x.LINE_CODE == input.lineCode && x.PROD_CODE == input.prodCode && x.SMT_CODE == input.Code).Any())
+                {
+                    CurrSmtCode = input.Code;
+                    action.IsSuccessed = true;
+                    action.LocaleMsg = Biz.L($"鏈哄櫒缂栫爜楠岃瘉閫氳繃锛�");
+                }
+                else
+                {
+                    action.IsSuccessed = false;
+                    action.LocaleMsg = Biz.L($"鏂欑珯琛ㄤ腑涓嶅瓨鍦ㄦ鏈哄櫒缂栫爜锛岃纭鏂欑珯琛ㄦ槸鍚︽纭笂浼狅紒");
+                }
+            }
+            catch (Exception ex)
+            {
+                action.CatchExceptionWithLog(ex, $"鎵弿鏈哄櫒缂栫爜寮傚父");
+            }
+            return action;
+        }
+
+        private ApiAction ExecuteSlotNo(SmtLoadingInput input)
+        {
+            var action = new ApiAction();
+            try
+            {
+                if (Biz.Db.Queryable<SMT_WO_TABLE>().Where(x => x.WORK_ORDER == input.moCode && x.LINE_CODE == input.lineCode && x.PROD_CODE == input.prodCode && x.SMT_CODE == CurrSmtCode && x.SLOT_NO == input.Code).Any())
+                {
+                    CurrSlotNo = input.Code;
+                    action.IsSuccessed = true;
+                    action.LocaleMsg = Biz.L($"妲戒綅楠岃瘉閫氳繃锛�");
+                }
+                else
+                {
+                    action.IsSuccessed = false;
+                    action.LocaleMsg = Biz.L($"姝ゆЫ浣峓{input.Code}]涓嶅瓨鍦ㄦ垨鏂欑珯琛ㄦ湭涓婁紶锛�");
+                }
+            }
+            catch (Exception ex)
+            {
+                action.CatchExceptionWithLog(ex, $"鎵弿妲戒綅寮傚父");
+            }
+            return action;
+        }
+
+        private ApiAction ExecuteFeeder(SmtLoadingInput input)
+        {
+            var action = new ApiAction();
+            try
+            {
+
+            }
+            catch (Exception ex)
+            {
+                action.CatchExceptionWithLog(ex, $"鎵弿Feeder寮傚父");
+            }
+            return action;
+        }
+
+        private ApiAction ExecuteSN(SmtLoadingInput input)
+        {
+            var action = new ApiAction();
+            try
+            {
+
+            }
+            catch (Exception ex)
+            {
+                action.CatchExceptionWithLog(ex, $"鎵弿鏂欑洏鐮佸紓甯�");
+            }
+            return action;
+        }
+
+        /// <summary>
+        /// 娣诲姞涓�涓狝piAction鐨勫巻鍙茶褰�
+        /// </summary>
+        /// <param name="action"></param>
+        public override void AddHistory<T>(Microsoft.AspNetCore.Http.HttpRequest request, ApiAction<T> action)
+        {
+            var his = action.History();
+            //his.TraceDic.Add("CurReqType", CurReqType);
+            //his.TraceDic.Add("CurInv", CurInv);
+            //his.TraceDic.Add("req", req);
+            //his.TraceDic.Add("toMes", toMes);
+            //his.TraceDic.Add("CurPoolList", CurPoolList);
+            //his.TraceDic.Add("isComplete", his_isComplete);
+            //ActionHistoryList.Add($"{request.HttpContext.TraceIdentifier} at {action.Timestamp:yyyy/MM/dd HH:mm:ss.fff}: {request.Path}", his);
+            LastActionTime = DateTime.Now;
+        }
+
+        #endregion Functions
+
+        public override bool Close(bool needSaveHistoryLog = false)
+        {
+            //needSaveHistoryLog = true;
+            //淇濆瓨鎿嶄綔鏃ュ織
+
+            this.IsFinished = true;
+            return IsFinished ? base.Close(needSaveHistoryLog) : IsFinished;
+        }
+    }//endClass
+}
\ No newline at end of file
diff --git a/Tiger.Business/MES/Transaction/MESTransactionBase.cs b/Tiger.Business/MES/Transaction/MESTransactionBase.cs
new file mode 100644
index 0000000..8b623b6
--- /dev/null
+++ b/Tiger.Business/MES/Transaction/MESTransactionBase.cs
@@ -0,0 +1,47 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tiger.Business.WMS.Transaction;
+using Tiger.IBusiness;
+
+namespace Tiger.Business.MES.Transaction
+{
+    /// <summary>
+    /// MES浜嬪姟鍩虹被
+    /// </summary>
+    public abstract class MESTransactionBase : TransactionBase, IMESTransaction
+    {
+        /// <summary>
+        /// MES浜嬪姟鍩虹被
+        /// </summary>
+        public MESTransactionBase()
+        {
+            
+        }
+
+        /// <summary>
+        /// 鍏抽棴浜嬪姟
+        /// </summary>
+        /// <param name="needSaveHistoryLog"></param>
+        /// <returns></returns>
+        public override bool Close(bool needSaveHistoryLog = false)
+        {
+            return base.Close(needSaveHistoryLog);
+        }
+
+        public override void Dispose()
+        {
+            try
+            {
+                Logger.Console.Info($"Dispose Transaction(ID: {TransID}]");
+            }
+            catch (System.Exception ex)
+            {
+                Logger.Console.Fatal(ex, $"Dispose Transaction Exception(ID: {TransID}]");
+            }
+            base.Dispose();
+        }
+    }
+}
diff --git a/Tiger.Business/WMS/MengQi/Biz.Mq.SNData.cs b/Tiger.Business/WMS/MengQi/Biz.Mq.SNData.cs
index c6e8205..1d63e76 100644
--- a/Tiger.Business/WMS/MengQi/Biz.Mq.SNData.cs
+++ b/Tiger.Business/WMS/MengQi/Biz.Mq.SNData.cs
@@ -124,6 +124,7 @@
                         .WhereIF(!string.IsNullOrEmpty(strTime[2]), x => x.ModelCode.Equals(strTime[2]))
                         .WhereIF(!string.IsNullOrEmpty(strTime[3]), x => x.CustomerCode.Equals(strTime[3]))
                         .WhereIF(!string.IsNullOrEmpty(strTime[4]), x => x.DeliveryNo.Equals(strTime[4]))
+                        .WhereIF(!string.IsNullOrEmpty(strTime[5]), x => x.CustModel.Equals(strTime[5]))
                         .ToPageListAsync(pageList.pageIndex, pageList.pageSize, total);
                     pageList.totals = total;
                 }
@@ -157,6 +158,7 @@
                         .WhereIF(!string.IsNullOrEmpty(where.model), x => x.ModelCode == where.model)
                         .WhereIF(!string.IsNullOrEmpty(where.customerCode), x => x.CustomerCode.Equals(where.customerCode))
                         .WhereIF(!string.IsNullOrEmpty(where.deliveryNo), x => x.DeliveryNo.Equals(where.deliveryNo))
+                        .WhereIF(!string.IsNullOrEmpty(where.custParam1), x => x.CustModel.Equals(where.custParam1))
                         .ToListAsync();
                 }
                 catch (Exception ex)
@@ -189,6 +191,7 @@
                         .WhereIF(!string.IsNullOrEmpty(where.model), x => x.ItemCode == where.model)
                         .WhereIF(!string.IsNullOrEmpty(where.customerCode), x => x.CustomerCode.Equals(where.customerCode))
                         .WhereIF(!string.IsNullOrEmpty(where.deliveryNo), x => x.DeliveryNo.Equals(where.deliveryNo))
+                        .WhereIF(!string.IsNullOrEmpty(where.custParam1), x => x.CustModel.Equals(where.custParam1))
                         .OrderBy(x=>x.CREATE_TIME).OrderBy(x => x.Scanner).ToListAsync();
                 }
                 catch (Exception ex)
diff --git a/Tiger.IBusiness/MES/Transaction/ILoadingMaterial.cs b/Tiger.IBusiness/MES/Transaction/ILoadingMaterial.cs
new file mode 100644
index 0000000..f358089
--- /dev/null
+++ b/Tiger.IBusiness/MES/Transaction/ILoadingMaterial.cs
@@ -0,0 +1,19 @@
+锘縰sing Org.BouncyCastle.Ocsp;
+using Rhea.Common;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tiger.Model;
+using Tiger.Model.Sharetronic.Shelf;
+
+namespace Tiger.IBusiness
+{
+    public interface ILoadingMaterial : IMESTransaction
+    {
+        public ILoadingMaterial Init(string id, string userCode, string apiHost, string orgCode);
+        
+        public bool Close(bool needSaveHistoryLog = false);
+    }
+}
diff --git a/Tiger.IBusiness/MES/Transaction/IMESTransaction.cs b/Tiger.IBusiness/MES/Transaction/IMESTransaction.cs
new file mode 100644
index 0000000..9befd82
--- /dev/null
+++ b/Tiger.IBusiness/MES/Transaction/IMESTransaction.cs
@@ -0,0 +1,14 @@
+锘縰sing Newtonsoft.Json;
+using Rhea.Common;
+using System;
+
+namespace Tiger.IBusiness
+{
+    /// <summary>
+    /// MES浜嬪姟鍩虹被
+    /// </summary>
+    public interface IMESTransaction : ITransaction
+    {
+
+    }
+}
diff --git a/Tiger.Model.Net/Entitys/BAS/BAS_DEFECT.cs b/Tiger.Model.Net/Entitys/BAS/BAS_DEFECT.cs
new file mode 100644
index 0000000..9128366
--- /dev/null
+++ b/Tiger.Model.Net/Entitys/BAS/BAS_DEFECT.cs
@@ -0,0 +1,81 @@
+using System;
+using SqlSugar;
+using System.Linq;
+using System.ComponentModel;
+using System.Collections.Generic;
+
+namespace Tiger.Model
+{
+	/// <summary>
+	/// 实体:不良代码
+	/// </summary>
+	[Description("Primary:ID")]
+	[Serializable]
+	[SugarTable("BAS_DEFECT")]
+	public class BAS_DEFECT : DbEntityWithAuth
+	{
+		#region 构造函数
+		/// <summary>
+		/// 实体:不良代码
+		/// </summary>
+		public BAS_DEFECT() {}
+		#endregion
+
+		#region 公共属性
+		/// <summary>
+		/// 不良代码编码
+		/// </summary>
+		public string DFT_CODE { get; set; }
+		/// <summary>
+		/// 不良代码名称
+		/// </summary>
+		public string DFT_NAME { get; set; }
+		/// <summary>
+		/// 不良代码组编码
+		/// </summary>
+		public string DFTG_CODE { get; set; }
+		/// <summary>
+		/// 备注
+		/// </summary>
+		public string REMARK { get; set; }
+		#endregion
+
+		#region 虚拟属性
+		/*例子
+		[SugarColumn(IsIgnore = true)]
+		public string FieldName { get; set; }
+		*/
+		#endregion
+
+		#region 外键属性
+		/*例子
+		//一对一外键导航
+		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BAS_DEFECT类里面的外键ID字段
+		public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
+		//一对多外键导航
+		[Navigate(NavigateType.OneToMany, nameof(ClassA.BAS_DEFECTId))]//ClassA表中的BAS_DEFECTId
+		public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
+		//多对多外键导航
+		[Navigate(typeof(MappingClass), nameof(MappingClass.BAS_DEFECTId), nameof(MappingClass.ClassAId))]//注意顺序
+		public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
+		*/
+		#endregion
+
+		#region 枚举变量
+		/*例子
+		public enum FieldNames
+		{
+			[Description("枚举描述0")]
+			Enum0,
+			[Description("枚举描述1")]
+			Enum1,
+		}
+		*/
+		#endregion
+
+		#region 公共方法
+
+		#endregion
+
+	}//endClass
+}
\ No newline at end of file
diff --git a/Tiger.Model.Net/Entitys/BAS/BAS_DEFECT_GRP.cs b/Tiger.Model.Net/Entitys/BAS/BAS_DEFECT_GRP.cs
new file mode 100644
index 0000000..77d4c6a
--- /dev/null
+++ b/Tiger.Model.Net/Entitys/BAS/BAS_DEFECT_GRP.cs
@@ -0,0 +1,77 @@
+using System;
+using SqlSugar;
+using System.Linq;
+using System.ComponentModel;
+using System.Collections.Generic;
+
+namespace Tiger.Model
+{
+	/// <summary>
+	/// 实体:不良代码组
+	/// </summary>
+	[Description("Primary:ID")]
+	[Serializable]
+	[SugarTable("BAS_DEFECT_GRP")]
+	public class BAS_DEFECT_GRP : DbEntityWithAuth
+	{
+		#region 构造函数
+		/// <summary>
+		/// 实体:不良代码组
+		/// </summary>
+		public BAS_DEFECT_GRP() {}
+		#endregion
+
+		#region 公共属性
+		/// <summary>
+		/// 不良代码组编码
+		/// </summary>
+		public string DFTG_CODE { get; set; }
+		/// <summary>
+		/// 不良代码组名称
+		/// </summary>
+		public string DFTG_NAME { get; set; }
+		/// <summary>
+		/// 备注
+		/// </summary>
+		public string REMARK { get; set; }
+		#endregion
+
+		#region 虚拟属性
+		/*例子
+		[SugarColumn(IsIgnore = true)]
+		public string FieldName { get; set; }
+		*/
+		#endregion
+
+		#region 外键属性
+		/*例子
+		//一对一外键导航
+		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BAS_DEFECT_GRP类里面的外键ID字段
+		public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
+		//一对多外键导航
+		[Navigate(NavigateType.OneToMany, nameof(ClassA.BAS_DEFECT_GRPId))]//ClassA表中的BAS_DEFECT_GRPId
+		public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
+		//多对多外键导航
+		[Navigate(typeof(MappingClass), nameof(MappingClass.BAS_DEFECT_GRPId), nameof(MappingClass.ClassAId))]//注意顺序
+		public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
+		*/
+		#endregion
+
+		#region 枚举变量
+		/*例子
+		public enum FieldNames
+		{
+			[Description("枚举描述0")]
+			Enum0,
+			[Description("枚举描述1")]
+			Enum1,
+		}
+		*/
+		#endregion
+
+		#region 公共方法
+
+		#endregion
+
+	}//endClass
+}
\ No newline at end of file
diff --git a/Tiger.Model.Net/Entitys/BAS/BAS_DFT_DUTY.cs b/Tiger.Model.Net/Entitys/BAS/BAS_DFT_DUTY.cs
new file mode 100644
index 0000000..2501837
--- /dev/null
+++ b/Tiger.Model.Net/Entitys/BAS/BAS_DFT_DUTY.cs
@@ -0,0 +1,77 @@
+using System;
+using SqlSugar;
+using System.Linq;
+using System.ComponentModel;
+using System.Collections.Generic;
+
+namespace Tiger.Model
+{
+	/// <summary>
+	/// 实体:不良责任
+	/// </summary>
+	[Description("Primary:ID")]
+	[Serializable]
+	[SugarTable("BAS_DFT_DUTY")]
+	public class BAS_DFT_DUTY : DbEntityWithAuth
+	{
+		#region 构造函数
+		/// <summary>
+		/// 实体:不良责任
+		/// </summary>
+		public BAS_DFT_DUTY() {}
+		#endregion
+
+		#region 公共属性
+		/// <summary>
+		/// 不良责任编码
+		/// </summary>
+		public string RSN_CODE { get; set; }
+		/// <summary>
+		/// 不良责任名称
+		/// </summary>
+		public string RSN_NAME { get; set; }
+		/// <summary>
+		/// 备注
+		/// </summary>
+		public string REMARK { get; set; }
+		#endregion
+
+		#region 虚拟属性
+		/*例子
+		[SugarColumn(IsIgnore = true)]
+		public string FieldName { get; set; }
+		*/
+		#endregion
+
+		#region 外键属性
+		/*例子
+		//一对一外键导航
+		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BAS_DFT_DUTY类里面的外键ID字段
+		public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
+		//一对多外键导航
+		[Navigate(NavigateType.OneToMany, nameof(ClassA.BAS_DFT_DUTYId))]//ClassA表中的BAS_DFT_DUTYId
+		public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
+		//多对多外键导航
+		[Navigate(typeof(MappingClass), nameof(MappingClass.BAS_DFT_DUTYId), nameof(MappingClass.ClassAId))]//注意顺序
+		public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
+		*/
+		#endregion
+
+		#region 枚举变量
+		/*例子
+		public enum FieldNames
+		{
+			[Description("枚举描述0")]
+			Enum0,
+			[Description("枚举描述1")]
+			Enum1,
+		}
+		*/
+		#endregion
+
+		#region 公共方法
+
+		#endregion
+
+	}//endClass
+}
\ No newline at end of file
diff --git a/Tiger.Model.Net/Entitys/BAS/BAS_DFT_LOC.cs b/Tiger.Model.Net/Entitys/BAS/BAS_DFT_LOC.cs
new file mode 100644
index 0000000..301139f
--- /dev/null
+++ b/Tiger.Model.Net/Entitys/BAS/BAS_DFT_LOC.cs
@@ -0,0 +1,77 @@
+using System;
+using SqlSugar;
+using System.Linq;
+using System.ComponentModel;
+using System.Collections.Generic;
+
+namespace Tiger.Model
+{
+	/// <summary>
+	/// 实体:缺陷位置
+	/// </summary>
+	[Description("Primary:ID")]
+	[Serializable]
+	[SugarTable("BAS_DFT_LOC")]
+	public class BAS_DFT_LOC : DbEntityWithAuth
+	{
+		#region 构造函数
+		/// <summary>
+		/// 实体:缺陷位置
+		/// </summary>
+		public BAS_DFT_LOC() {}
+		#endregion
+
+		#region 公共属性
+		/// <summary>
+		/// 缺陷位置编码
+		/// </summary>
+		public string LOC_CODE { get; set; }
+		/// <summary>
+		/// 缺陷位置名称
+		/// </summary>
+		public string LOC_NAME { get; set; }
+		/// <summary>
+		/// 备注
+		/// </summary>
+		public string REMARK { get; set; }
+		#endregion
+
+		#region 虚拟属性
+		/*例子
+		[SugarColumn(IsIgnore = true)]
+		public string FieldName { get; set; }
+		*/
+		#endregion
+
+		#region 外键属性
+		/*例子
+		//一对一外键导航
+		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BAS_DFT_LOC类里面的外键ID字段
+		public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
+		//一对多外键导航
+		[Navigate(NavigateType.OneToMany, nameof(ClassA.BAS_DFT_LOCId))]//ClassA表中的BAS_DFT_LOCId
+		public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
+		//多对多外键导航
+		[Navigate(typeof(MappingClass), nameof(MappingClass.BAS_DFT_LOCId), nameof(MappingClass.ClassAId))]//注意顺序
+		public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
+		*/
+		#endregion
+
+		#region 枚举变量
+		/*例子
+		public enum FieldNames
+		{
+			[Description("枚举描述0")]
+			Enum0,
+			[Description("枚举描述1")]
+			Enum1,
+		}
+		*/
+		#endregion
+
+		#region 公共方法
+
+		#endregion
+
+	}//endClass
+}
\ No newline at end of file
diff --git a/Tiger.Model.Net/Entitys/BAS/BAS_PROD_BOM.cs b/Tiger.Model.Net/Entitys/BAS/BAS_PROD_BOM.cs
index fe07edf..10dd15c 100644
--- a/Tiger.Model.Net/Entitys/BAS/BAS_PROD_BOM.cs
+++ b/Tiger.Model.Net/Entitys/BAS/BAS_PROD_BOM.cs
@@ -6,100 +6,108 @@
 
 namespace Tiger.Model
 {
-	/// <summary>
-	/// 实体:产品BOM
-	/// </summary>
-	[Description("Primary:ID")]
-	[Serializable]
-	[SugarTable("BAS_PROD_BOM")]
-	public class BAS_PROD_BOM : DbEntityWithAuth
-	{
-		#region 构造函数
-		/// <summary>
-		/// 实体:产品BOM
-		/// </summary>
-		public BAS_PROD_BOM() {}
-		#endregion
+    /// <summary>
+    /// 瀹炰綋锛氫骇鍝丅OM
+    /// </summary>
+    [Description("Primary:ID")]
+    [Serializable]
+    [SugarTable("BAS_PROD_BOM")]
+    public class BAS_PROD_BOM : DbEntityWithAuth
+    {
+        #region 鏋勯�犲嚱鏁�
+        /// <summary>
+        /// 瀹炰綋锛氫骇鍝丅OM
+        /// </summary>
+        public BAS_PROD_BOM() { }
+        #endregion
 
-		#region 公共属性
-		/// <summary>
-		/// 产品编码
-		/// </summary>
-		public string PROD_CODE { get; set; }
-		/// <summary>
-		/// 物料编码
-		/// </summary>
-		public string ITEM_CODE { get; set; }
-		/// <summary>
-		/// 替代料
-		/// </summary>
-		public string SUB_CODE { get; set; }
-		/// <summary>
-		/// 父阶物料(产品留空)
-		/// </summary>
-		public string PARENT_ITEM { get; set; }
-		/// <summary>
-		/// 用量
-		/// </summary>
-		public int QTY { get; set; }
-		/// <summary>
-		/// 单位
-		/// </summary>
-		public string UNIT { get; set; }
-		/// <summary>
-		/// 排序
-		/// </summary>
-		public int SEQ { get; set; }
-		/// <summary>
-		/// BOM版本
-		/// </summary>
-		public string BOM_VER { get; set; }
-		/// <summary>
-		/// 生效日期
-		/// </summary>
-		public DateTime EFFT_DATE { get; set; } = DateTime.MinValue;
-		/// <summary>
-		/// 备注
-		/// </summary>
-		public string REMARK { get; set; }
-		#endregion
+        #region 鍏叡灞炴��
+        /// <summary>
+        /// 浜у搧缂栫爜
+        /// </summary>
+        public string PROD_CODE { get; set; }
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string ITEM_CODE { get; set; }
+        /// <summary>
+        /// 鏇夸唬鏂�(澶氫釜鐢�","鍒嗛殧)
+        /// </summary>
+        public string SUB_CODE { get; set; }
+        /// <summary>
+        /// 鐖堕樁鐗╂枡(浜у搧鐣欑┖)
+        /// </summary>
+        public string PARENT_CODE { get; set; }
+        /// <summary>
+        /// 鐢ㄩ噺
+        /// </summary>
+        public int QTY { get; set; }
+        /// <summary>
+        /// 鍗曚綅
+        /// </summary>
+        public string UNIT { get; set; }
+        /// <summary>
+        /// 鎺掑簭
+        /// </summary>
+        public int SEQ { get; set; }
+        /// <summary>
+        /// 浣嶇疆
+        /// </summary>
+        public string LOCATION { get; set; }
+        /// <summary>
+        /// BOM鐗堟湰
+        /// </summary>
+        public string VERSION { get; set; }
+        /// <summary>
+        /// 鐢熸晥鏃ユ湡
+        /// </summary>
+        public DateTime EFF_DATE { get; set; } = DateTime.MinValue;
+        /// <summary>
+        /// 澶辨晥鏃ユ湡
+        /// </summary>
+        public DateTime EXP_DATE { get; set; } = DateTime.MinValue;
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string REMARK { get; set; }
+        #endregion
 
-		#region 虚拟属性
-		/*例子
+        #region 铏氭嫙灞炴��
+        /*渚嬪瓙
 		[SugarColumn(IsIgnore = true)]
 		public string FieldName { get; set; }
 		*/
-		#endregion
+        #endregion
 
-		#region 外键属性
-		/*例子
-		//一对一外键导航
-		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BAS_PROD_BOM类里面的外键ID字段
-		public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
-		//一对多外键导航
-		[Navigate(NavigateType.OneToMany, nameof(ClassA.BAS_PROD_BOMId))]//ClassA表中的BAS_PROD_BOMId
-		public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
-		//多对多外键导航
-		[Navigate(typeof(MappingClass), nameof(MappingClass.BAS_PROD_BOMId), nameof(MappingClass.ClassAId))]//注意顺序
-		public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
+        #region 澶栭敭灞炴��
+        /*渚嬪瓙
+		//涓�瀵逛竴澶栭敭瀵艰埅
+		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疊AS_PROD_BOM绫婚噷闈㈢殑澶栭敭ID瀛楁
+		public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		//涓�瀵瑰澶栭敭瀵艰埅
+		[Navigate(NavigateType.OneToMany, nameof(ClassA.BAS_PROD_BOMId))]//ClassA琛ㄤ腑鐨凚AS_PROD_BOMId
+		public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		//澶氬澶氬閿鑸�
+		[Navigate(typeof(MappingClass), nameof(MappingClass.BAS_PROD_BOMId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭
+		public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
 		*/
-		#endregion
+        #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/BAS/BAS_REASON.cs b/Tiger.Model.Net/Entitys/BAS/BAS_REASON.cs
new file mode 100644
index 0000000..119c369
--- /dev/null
+++ b/Tiger.Model.Net/Entitys/BAS/BAS_REASON.cs
@@ -0,0 +1,85 @@
+using System;
+using SqlSugar;
+using System.Linq;
+using System.ComponentModel;
+using System.Collections.Generic;
+
+namespace Tiger.Model
+{
+	/// <summary>
+	/// 实体:不良原因
+	/// </summary>
+	[Description("Primary:ID")]
+	[Serializable]
+	[SugarTable("BAS_REASON")]
+	public class BAS_REASON : DbEntityWithAuth
+	{
+		#region 构造函数
+		/// <summary>
+		/// 实体:不良原因
+		/// </summary>
+		public BAS_REASON() {}
+		#endregion
+
+		#region 公共属性
+		/// <summary>
+		/// 不良原因编码
+		/// </summary>
+		public string RSN_CODE { get; set; }
+		/// <summary>
+		/// 不良原因名称
+		/// </summary>
+		public string RSN_NAME { get; set; }
+		/// <summary>
+		/// 不良原因组编码
+		/// </summary>
+		public string RSNG_CODE { get; set; }
+		/// <summary>
+		/// 是否必须更换零件(Y/N)
+		/// </summary>
+		public string NEED_REPLACE { get; set; }
+		/// <summary>
+		/// 备注
+		/// </summary>
+		public string REMARK { get; set; }
+		#endregion
+
+		#region 虚拟属性
+		/*例子
+		[SugarColumn(IsIgnore = true)]
+		public string FieldName { get; set; }
+		*/
+		#endregion
+
+		#region 外键属性
+		/*例子
+		//一对一外键导航
+		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BAS_REASON类里面的外键ID字段
+		public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
+		//一对多外键导航
+		[Navigate(NavigateType.OneToMany, nameof(ClassA.BAS_REASONId))]//ClassA表中的BAS_REASONId
+		public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
+		//多对多外键导航
+		[Navigate(typeof(MappingClass), nameof(MappingClass.BAS_REASONId), nameof(MappingClass.ClassAId))]//注意顺序
+		public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
+		*/
+		#endregion
+
+		#region 枚举变量
+		/*例子
+		public enum FieldNames
+		{
+			[Description("枚举描述0")]
+			Enum0,
+			[Description("枚举描述1")]
+			Enum1,
+		}
+		*/
+		#endregion
+
+		#region 公共方法
+
+		#endregion
+
+	}//endClass
+}
\ No newline at end of file
diff --git a/Tiger.Model.Net/Entitys/BAS/BAS_REASON_GRP.cs b/Tiger.Model.Net/Entitys/BAS/BAS_REASON_GRP.cs
new file mode 100644
index 0000000..c439315
--- /dev/null
+++ b/Tiger.Model.Net/Entitys/BAS/BAS_REASON_GRP.cs
@@ -0,0 +1,77 @@
+using System;
+using SqlSugar;
+using System.Linq;
+using System.ComponentModel;
+using System.Collections.Generic;
+
+namespace Tiger.Model
+{
+	/// <summary>
+	/// 实体:不良原因组
+	/// </summary>
+	[Description("Primary:ID")]
+	[Serializable]
+	[SugarTable("BAS_REASON_GRP")]
+	public class BAS_REASON_GRP : DbEntityWithAuth
+	{
+		#region 构造函数
+		/// <summary>
+		/// 实体:不良原因组
+		/// </summary>
+		public BAS_REASON_GRP() {}
+		#endregion
+
+		#region 公共属性
+		/// <summary>
+		/// 不良原因组编码
+		/// </summary>
+		public string RSNG_CODE { get; set; }
+		/// <summary>
+		/// 不良原因组名称
+		/// </summary>
+		public string RSNG_NAME { get; set; }
+		/// <summary>
+		/// 备注
+		/// </summary>
+		public string REMARK { get; set; }
+		#endregion
+
+		#region 虚拟属性
+		/*例子
+		[SugarColumn(IsIgnore = true)]
+		public string FieldName { get; set; }
+		*/
+		#endregion
+
+		#region 外键属性
+		/*例子
+		//一对一外键导航
+		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BAS_REASON_GRP类里面的外键ID字段
+		public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
+		//一对多外键导航
+		[Navigate(NavigateType.OneToMany, nameof(ClassA.BAS_REASON_GRPId))]//ClassA表中的BAS_REASON_GRPId
+		public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
+		//多对多外键导航
+		[Navigate(typeof(MappingClass), nameof(MappingClass.BAS_REASON_GRPId), nameof(MappingClass.ClassAId))]//注意顺序
+		public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
+		*/
+		#endregion
+
+		#region 枚举变量
+		/*例子
+		public enum FieldNames
+		{
+			[Description("枚举描述0")]
+			Enum0,
+			[Description("枚举描述1")]
+			Enum1,
+		}
+		*/
+		#endregion
+
+		#region 公共方法
+
+		#endregion
+
+	}//endClass
+}
\ No newline at end of file
diff --git a/Tiger.Model.Net/Entitys/BAS/BAS_SOLUTION.cs b/Tiger.Model.Net/Entitys/BAS/BAS_SOLUTION.cs
new file mode 100644
index 0000000..1e512e4
--- /dev/null
+++ b/Tiger.Model.Net/Entitys/BAS/BAS_SOLUTION.cs
@@ -0,0 +1,77 @@
+using System;
+using SqlSugar;
+using System.Linq;
+using System.ComponentModel;
+using System.Collections.Generic;
+
+namespace Tiger.Model
+{
+	/// <summary>
+	/// 实体:不良解决方案
+	/// </summary>
+	[Description("Primary:ID")]
+	[Serializable]
+	[SugarTable("BAS_SOLUTION")]
+	public class BAS_SOLUTION : DbEntityWithAuth
+	{
+		#region 构造函数
+		/// <summary>
+		/// 实体:不良解决方案
+		/// </summary>
+		public BAS_SOLUTION() {}
+		#endregion
+
+		#region 公共属性
+		/// <summary>
+		/// 不良解决方案编码
+		/// </summary>
+		public string SOL_CODE { get; set; }
+		/// <summary>
+		/// 不良解决方案名称
+		/// </summary>
+		public string SOL_NAME { get; set; }
+		/// <summary>
+		/// 备注
+		/// </summary>
+		public string REMARK { get; set; }
+		#endregion
+
+		#region 虚拟属性
+		/*例子
+		[SugarColumn(IsIgnore = true)]
+		public string FieldName { get; set; }
+		*/
+		#endregion
+
+		#region 外键属性
+		/*例子
+		//一对一外键导航
+		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是BAS_SOLUTION类里面的外键ID字段
+		public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
+		//一对多外键导航
+		[Navigate(NavigateType.OneToMany, nameof(ClassA.BAS_SOLUTIONId))]//ClassA表中的BAS_SOLUTIONId
+		public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
+		//多对多外键导航
+		[Navigate(typeof(MappingClass), nameof(MappingClass.BAS_SOLUTIONId), nameof(MappingClass.ClassAId))]//注意顺序
+		public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
+		*/
+		#endregion
+
+		#region 枚举变量
+		/*例子
+		public enum FieldNames
+		{
+			[Description("枚举描述0")]
+			Enum0,
+			[Description("枚举描述1")]
+			Enum1,
+		}
+		*/
+		#endregion
+
+		#region 公共方法
+
+		#endregion
+
+	}//endClass
+}
\ No newline at end of file
diff --git a/Tiger.Model.Net/Entitys/MES/MES_ROUTE_NODE_DFTG.cs b/Tiger.Model.Net/Entitys/MES/MES_ROUTE_NODE_DFTG.cs
new file mode 100644
index 0000000..e9e8dec
--- /dev/null
+++ b/Tiger.Model.Net/Entitys/MES/MES_ROUTE_NODE_DFTG.cs
@@ -0,0 +1,75 @@
+using System;
+using SqlSugar;
+using System.Linq;
+using System.ComponentModel;
+using System.Collections.Generic;
+
+namespace Tiger.Model
+{
+	/// <summary>
+	/// 实体:产品行为与不良代码组关系
+	/// </summary>
+	[Description("Primary:NODE_ID,DFTG_CODE")]
+	[Serializable]
+	[SugarTable("MES_ROUTE_NODE_DFTG")]
+	public class MES_ROUTE_NODE_DFTG : iDBEntity
+	{
+		#region 构造函数
+		/// <summary>
+		/// 实体:产品行为与不良代码组关系
+		/// </summary>
+		public MES_ROUTE_NODE_DFTG() {}
+		#endregion
+
+		#region 公共属性
+		/// <summary>
+		/// 主键 工序节点ID
+		/// </summary>
+		[SugarColumn(IsPrimaryKey = true)]
+		public string NODE_ID { get; set; }
+		/// <summary>
+		/// 主键 不良代码组编码
+		/// </summary>
+		[SugarColumn(IsPrimaryKey = true)]
+		public string DFTG_CODE { get; set; }
+		#endregion
+
+		#region 虚拟属性
+		/*例子
+		[SugarColumn(IsIgnore = true)]
+		public string FieldName { get; set; }
+		*/
+		#endregion
+
+		#region 外键属性
+		/*例子
+		//一对一外键导航
+		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是MES_ROUTE_NODE_DFTG类里面的外键ID字段
+		public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
+		//一对多外键导航
+		[Navigate(NavigateType.OneToMany, nameof(ClassA.MES_ROUTE_NODE_DFTGId))]//ClassA表中的MES_ROUTE_NODE_DFTGId
+		public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
+		//多对多外键导航
+		[Navigate(typeof(MappingClass), nameof(MappingClass.MES_ROUTE_NODE_DFTGId), nameof(MappingClass.ClassAId))]//注意顺序
+		public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
+		*/
+		#endregion
+
+		#region 枚举变量
+		/*例子
+		public enum FieldNames
+		{
+			[Description("枚举描述0")]
+			Enum0,
+			[Description("枚举描述1")]
+			Enum1,
+		}
+		*/
+		#endregion
+
+		#region 公共方法
+
+		#endregion
+
+	}//endClass
+}
\ No newline at end of file
diff --git a/Tiger.Model.Net/Entitys/MES/SMT_FEEDER.cs b/Tiger.Model.Net/Entitys/MES/SMT_FEEDER.cs
index 60162eb..92a4df7 100644
--- a/Tiger.Model.Net/Entitys/MES/SMT_FEEDER.cs
+++ b/Tiger.Model.Net/Entitys/MES/SMT_FEEDER.cs
@@ -71,7 +71,7 @@
 		/// </summary>
 		public string SLOT_NO { get; set; }
 		/// <summary>
-		/// 加工面
+		/// 加工面(插件面:A/C|1焊锡面:B/S)
 		/// </summary>
 		public string PCB_SURFACE { get; set; }
 		/// <summary>
diff --git a/Tiger.Model.Net/Entitys/MES/SMT_LOADING.cs b/Tiger.Model.Net/Entitys/MES/SMT_LOADING.cs
index 8ff024d..8fe4a3d 100644
--- a/Tiger.Model.Net/Entitys/MES/SMT_LOADING.cs
+++ b/Tiger.Model.Net/Entitys/MES/SMT_LOADING.cs
@@ -7,101 +7,105 @@
 namespace Tiger.Model
 {
 	/// <summary>
-	/// 实体:SMT实时上料信息
+	/// 瀹炰綋锛歋MT瀹炴椂涓婃枡淇℃伅
 	/// </summary>
 	[Description("Primary:ID")]
 	[Serializable]
 	[SugarTable("SMT_LOADING")]
 	public class SMT_LOADING : DbEntityWithAuth
 	{
-		#region 构造函数
+		#region 鏋勯�犲嚱鏁�
 		/// <summary>
-		/// 实体:SMT实时上料信息
+		/// 瀹炰綋锛歋MT瀹炴椂涓婃枡淇℃伅
 		/// </summary>
 		public SMT_LOADING() {}
-		#endregion
+        #endregion
 
-		#region 公共属性
+        #region 鍏叡灞炴��
+        /// <summary>
+        /// 涓婃枡鏉$爜
+        /// </summary>
+        public string SN { get; set; }
+        /// <summary>
+        /// 宸ュ崟鍙�
+        /// </summary>
+        public string WORK_ORDER { get; set; }
 		/// <summary>
-		/// 工单号
-		/// </summary>
-		public string WORK_ORDER { get; set; }
-		/// <summary>
-		/// 产品编码
+		/// 浜у搧缂栫爜
 		/// </summary>
 		public string PROD_CODE { get; set; }
 		/// <summary>
-		/// 产线编码
+		/// 浜х嚎缂栫爜
 		/// </summary>
 		public string LINE_CODE { get; set; }
 		/// <summary>
-		/// 贴片机编码
+		/// 璐寸墖鏈虹紪鐮�
 		/// </summary>
 		public string SMT_CODE { get; set; }
 		/// <summary>
-		/// 站位号
+		/// 绔欎綅鍙�
 		/// </summary>
 		public string SLOT_NO { get; set; }
 		/// <summary>
-		/// 飞达类型
+		/// 椋炶揪绫诲瀷
 		/// </summary>
 		public string FEEDER_TYPE { get; set; }
 		/// <summary>
-		/// 飞达编码
+		/// 椋炶揪缂栫爜
 		/// </summary>
 		public string FEEDER_CODE { get; set; }
 		/// <summary>
-		/// 物料编码
+		/// 鐗╂枡缂栫爜
 		/// </summary>
 		public string ITEM_CODE { get; set; }
 		/// <summary>
-		/// 锡膏UPN编码
+		/// 閿¤啅UPN缂栫爜
 		/// </summary>
 		public string SOLDER_UPN { get; set; }
 		/// <summary>
-		/// 加工面
+		/// 鍔犲伐闈�(鎻掍欢闈�:A/C|1鐒婇敗闈�:B/S)
 		/// </summary>
 		public string PCB_SURFACE { get; set; }
 		/// <summary>
-		/// 备注
+		/// 澶囨敞
 		/// </summary>
 		public string REMARK { get; set; }
 		#endregion
 
-		#region 虚拟属性
-		/*例子
+		#region 铏氭嫙灞炴��
+		/*渚嬪瓙
 		[SugarColumn(IsIgnore = true)]
 		public string FieldName { get; set; }
 		*/
 		#endregion
 
-		#region 外键属性
-		/*例子
-		//一对一外键导航
-		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SMT_LOADING类里面的外键ID字段
-		public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
-		//一对多外键导航
-		[Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_LOADINGId))]//ClassA表中的SMT_LOADINGId
-		public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
-		//多对多外键导航
-		[Navigate(typeof(MappingClass), nameof(MappingClass.SMT_LOADINGId), nameof(MappingClass.ClassAId))]//注意顺序
-		public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
+		#region 澶栭敭灞炴��
+		/*渚嬪瓙
+		//涓�瀵逛竴澶栭敭瀵艰埅
+		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疭MT_LOADING绫婚噷闈㈢殑澶栭敭ID瀛楁
+		public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		//涓�瀵瑰澶栭敭瀵艰埅
+		[Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_LOADINGId))]//ClassA琛ㄤ腑鐨凷MT_LOADINGId
+		public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		//澶氬澶氬閿鑸�
+		[Navigate(typeof(MappingClass), nameof(MappingClass.SMT_LOADINGId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭
+		public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
 		*/
 		#endregion
 
-		#region 枚举变量
-		/*例子
+		#region 鏋氫妇鍙橀噺
+		/*渚嬪瓙
 		public enum FieldNames
 		{
-			[Description("枚举描述0")]
+			[Description("鏋氫妇鎻忚堪0")]
 			Enum0,
-			[Description("枚举描述1")]
+			[Description("鏋氫妇鎻忚堪1")]
 			Enum1,
 		}
 		*/
 		#endregion
 
-		#region 公共方法
+		#region 鍏叡鏂规硶
 
 		#endregion
 
diff --git a/Tiger.Model.Net/Entitys/MES/SMT_LOAD_HIS.cs b/Tiger.Model.Net/Entitys/MES/SMT_LOAD_HIS.cs
index 214dbc2..f7398ad 100644
--- a/Tiger.Model.Net/Entitys/MES/SMT_LOAD_HIS.cs
+++ b/Tiger.Model.Net/Entitys/MES/SMT_LOAD_HIS.cs
@@ -6,137 +6,122 @@
 
 namespace Tiger.Model
 {
-	/// <summary>
-	/// 实体:SMT上料历史记录
-	/// </summary>
-	[Description("Primary:ID")]
-	[Serializable]
-	[SugarTable("SMT_LOAD_HIS")]
-	public class SMT_LOAD_HIS : DbEntityWithAuth
-	{
-		#region 构造函数
-		/// <summary>
-		/// 实体:SMT上料历史记录
-		/// </summary>
-		public SMT_LOAD_HIS() {}
-		#endregion
-
-		#region 公共属性
-		/// <summary>
-		/// 操作类型(0Loading上料|1ChangeMaterial换料|2Unloading卸料|3ChangeFeeder换飞达|4UseStencil使用钢网|5UseSqueegee使用刮刀|6UseSolder使用锡膏|7UseAdhesive使用胶水)
-		/// </summary>
-		public string OPERATION { get; set; }
-		/// <summary>
-		/// 工单号
-		/// </summary>
-		public string WORK_ORDER { get; set; }
-		/// <summary>
-		/// 产品编码
-		/// </summary>
-		public string PROD_CODE { get; set; }
-		/// <summary>
-		/// 产线编码
-		/// </summary>
-		public string LINE_CODE { get; set; }
-		/// <summary>
-		/// 贴片机编码
-		/// </summary>
-		public string SMT_CODE { get; set; }
-		/// <summary>
-		/// 站位号
-		/// </summary>
-		public string SLOT_NO { get; set; }
-		/// <summary>
-		/// 飞达类型
-		/// </summary>
-		public string FEEDER_TYPE { get; set; }
-		/// <summary>
-		/// 飞达编码
-		/// </summary>
-		public string FEEDER_CODE { get; set; }
-		/// <summary>
-		/// 物料编码
-		/// </summary>
-		public string ITEM_CODE { get; set; }
-		/// <summary>
-		/// 加工面
-		/// </summary>
-		public string PCB_SURFACE { get; set; }
-		/// <summary>
-		/// 钢网编码
-		/// </summary>
-		public string STENCIL { get; set; }
-		/// <summary>
-		/// 刮刀编码
-		/// </summary>
-		public string SQUEEGEE { get; set; }
-		/// <summary>
-		/// 锡膏UPN编码
-		/// </summary>
-		public string SOLDER_UPN { get; set; }
-		/// <summary>
-		/// 胶水UPN编码
-		/// </summary>
-		public string ADHESIVE_UPN { get; set; }
-		/// <summary>
-		/// 备注
-		/// </summary>
-		public string REMARK { get; set; }
+    /// <summary>
+    /// 瀹炰綋锛歋MT涓婃枡鍘嗗彶璁板綍
+    /// </summary>
+    [Description("Primary:ID")]
+    [Serializable]
+    [SugarTable("SMT_LOAD_HIS")]
+    public class SMT_LOAD_HIS : DbEntityWithAuth
+    {
+        #region 鏋勯�犲嚱鏁�
+        /// <summary>
+        /// 瀹炰綋锛歋MT涓婃枡鍘嗗彶璁板綍
+        /// </summary>
+        public SMT_LOAD_HIS() { }
         #endregion
 
-        #region 虚拟属性
-        /*例子
+        #region 鍏叡灞炴��
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷(0Loading涓婃枡|1ChangeMaterial鎹㈡枡|2Unloading鍗告枡|3ChangeFeeder鎹㈤杈緗4UseStencil浣跨敤閽㈢綉|5UseSqueegee浣跨敤鍒垁|6UseSolder浣跨敤閿¤啅|7UseAdhesive浣跨敤鑳舵按)
+        /// </summary>
+        public int OPERATION { get; set; }
+        /// <summary>
+        /// 宸ュ崟鍙�
+        /// </summary>
+        public string WORK_ORDER { get; set; }
+        /// <summary>
+        /// 浜у搧缂栫爜
+        /// </summary>
+        public string PROD_CODE { get; set; }
+        /// <summary>
+        /// 浜х嚎缂栫爜
+        /// </summary>
+        public string LINE_CODE { get; set; }
+        /// <summary>
+        /// 璐寸墖鏈虹紪鐮�
+        /// </summary>
+        public string SMT_CODE { get; set; }
+        /// <summary>
+        /// 绔欎綅鍙�
+        /// </summary>
+        public string SLOT_NO { get; set; }
+        /// <summary>
+        /// 椋炶揪绫诲瀷
+        /// </summary>
+        public string FEEDER_TYPE { get; set; }
+        /// <summary>
+        /// 椋炶揪缂栫爜
+        /// </summary>
+        public string FEEDER_CODE { get; set; }
+        /// <summary>
+        /// 鐗╂枡缂栫爜
+        /// </summary>
+        public string ITEM_CODE { get; set; }
+        /// <summary>
+        /// 鍔犲伐闈�(鎻掍欢闈�:A/C|1鐒婇敗闈�:B/S)
+        /// </summary>
+        public string PCB_SURFACE { get; set; }
+        /// <summary>
+        /// 涓婃枡鏉$爜
+        /// </summary>
+        public string SN { get; set; }
+        /// <summary>
+        /// 閽㈢綉缂栫爜
+        /// </summary>
+        public string STENCIL { get; set; }
+        /// <summary>
+        /// 鍒垁缂栫爜
+        /// </summary>
+        public string SQUEEGEE { get; set; }
+        /// <summary>
+        /// 閿¤啅UPN缂栫爜
+        /// </summary>
+        public string SOLDER_UPN { get; set; }
+        /// <summary>
+        /// 鑳舵按UPN缂栫爜
+        /// </summary>
+        public string ADHESIVE_UPN { get; set; }
+        /// <summary>
+        /// 澶囨敞
+        /// </summary>
+        public string REMARK { get; set; }
+        #endregion
+
+        #region 铏氭嫙灞炴��
+        /*渚嬪瓙
 		[SugarColumn(IsIgnore = true)]
 		public string FieldName { get; set; }
 		*/
         #endregion
 
-        #region 外键属性
-        /*例子
-		//一对一外键导航
-		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//一对一 ClassAId是SMT_LOAD_HIS类里面的外键ID字段
-		public ClassA ClassA { get; set; } //注意禁止手动赋值,只能是null
-		//一对多外键导航
-		[Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_LOAD_HISId))]//ClassA表中的SMT_LOAD_HISId
-		public List<ClassA> ClassAList { get; set; }//注意禁止手动赋值,只能是null
-		//多对多外键导航
-		[Navigate(typeof(MappingClass), nameof(MappingClass.SMT_LOAD_HISId), nameof(MappingClass.ClassAId))]//注意顺序
-		public List<ClassA> ClassAList { get; set; } //注意禁止手动赋值,只能是null
+        #region 澶栭敭灞炴��
+        /*渚嬪瓙
+		//涓�瀵逛竴澶栭敭瀵艰埅
+		[Navigate(NavigateType.OneToOne, nameof(ClassAId))]//涓�瀵逛竴 ClassAId鏄疭MT_LOAD_HIS绫婚噷闈㈢殑澶栭敭ID瀛楁
+		public ClassA ClassA { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		//涓�瀵瑰澶栭敭瀵艰埅
+		[Navigate(NavigateType.OneToMany, nameof(ClassA.SMT_LOAD_HISId))]//ClassA琛ㄤ腑鐨凷MT_LOAD_HISId
+		public List<ClassA> ClassAList { get; set; }//娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
+		//澶氬澶氬閿鑸�
+		[Navigate(typeof(MappingClass), nameof(MappingClass.SMT_LOAD_HISId), nameof(MappingClass.ClassAId))]//娉ㄦ剰椤哄簭
+		public List<ClassA> ClassAList { get; set; } //娉ㄦ剰绂佹鎵嬪姩璧嬪�硷紝鍙兘鏄痭ull
 		*/
         #endregion
 
-        #region 枚举变量
-        /*例子
+        #region 鏋氫妇鍙橀噺
+        /*渚嬪瓙
 		public enum FieldNames
 		{
-			[Description("枚举描述0")]
+			[Description("鏋氫妇鎻忚堪0")]
 			Enum0,
-			[Description("枚举描述1")]
+			[Description("鏋氫妇鎻忚堪1")]
 			Enum1,
 		}
 		*/
-        public enum OPERATIONs
-        {
-            [Description("上料")]
-            Loading,
-            [Description("换料")]
-            ChangeMaterial,
-            [Description("卸料")]
-            Unloading,
-            [Description("换飞达")]
-            ChangeFeeder,
-            [Description("使用钢网")]
-            UseStencil,
-            [Description("使用刮刀")]
-            UseSqueegee,
-            [Description("使用锡膏")]
-            UseSolder,
-            [Description("使用胶水")]
-            UseAdhesive,
-        }
         #endregion
 
-        #region 公共方法
+        #region 鍏叡鏂规硶
 
         #endregion
 
diff --git a/Tiger.Model.Net/Entitys/MES/SMT_PROD_TABLE.cs b/Tiger.Model.Net/Entitys/MES/SMT_PROD_TABLE.cs
index 2837d5c..1186910 100644
--- a/Tiger.Model.Net/Entitys/MES/SMT_PROD_TABLE.cs
+++ b/Tiger.Model.Net/Entitys/MES/SMT_PROD_TABLE.cs
@@ -71,7 +71,7 @@
 		/// </summary>
 		public string FEEDER_TYPE { get; set; }
 		/// <summary>
-		/// 加工面
+		/// 加工面(插件面:A/C|1焊锡面:B/S)
 		/// </summary>
 		public string PCB_SURFACE { get; set; }
 		/// <summary>
diff --git a/Tiger.Model.Net/Entitys/MES/SMT_WO_TABLE.cs b/Tiger.Model.Net/Entitys/MES/SMT_WO_TABLE.cs
index 67eeac4..780b482 100644
--- a/Tiger.Model.Net/Entitys/MES/SMT_WO_TABLE.cs
+++ b/Tiger.Model.Net/Entitys/MES/SMT_WO_TABLE.cs
@@ -75,7 +75,7 @@
 		/// </summary>
 		public string FEEDER_TYPE { get; set; }
 		/// <summary>
-		/// 加工面
+		/// 加工面(插件面:A/C|1焊锡面:B/S)
 		/// </summary>
 		public string PCB_SURFACE { get; set; }
 		/// <summary>
diff --git a/Tiger.Model.Net/Entitys/WMS/Api/BaseInput.cs b/Tiger.Model.Net/Entitys/WMS/Api/BaseInput.cs
index 8742361..dfcaaee 100644
--- a/Tiger.Model.Net/Entitys/WMS/Api/BaseInput.cs
+++ b/Tiger.Model.Net/Entitys/WMS/Api/BaseInput.cs
@@ -50,4 +50,14 @@
     {
         public bool IsItemCodeList { get; set; }
     }
+
+    public class SmtLoadingInput : BaseCodeInput
+    {
+        public int Step { get; set; }
+        public string prodCode { get; set; }
+        public string lineCode { get; set; }
+        public string pcbSurface { get; set; }
+        public string moCode { get; set; }
+        public string machineCode { get; set; }
+    }
 }
\ No newline at end of file
diff --git a/Tiger.Model.Net/Entitys/WMS/MengQi/SNData.cs b/Tiger.Model.Net/Entitys/WMS/MengQi/SNData.cs
index 951d43d..28ae96e 100644
--- a/Tiger.Model.Net/Entitys/WMS/MengQi/SNData.cs
+++ b/Tiger.Model.Net/Entitys/WMS/MengQi/SNData.cs
@@ -249,6 +249,18 @@
                 _DeliveryNo = value;
             }
         }
+        private string _CustModel = null;
+        public string CustModel
+        {
+            get
+            {
+                return _CustModel;
+            }
+            set
+            {
+                _CustModel = value;
+            }
+        }
     }
 
     public class SNData_Ext
diff --git a/Tiger.Model.Net/Entitys/WMS/MengQi/SNData_His.cs b/Tiger.Model.Net/Entitys/WMS/MengQi/SNData_His.cs
index 1de6533..caf6f59 100644
--- a/Tiger.Model.Net/Entitys/WMS/MengQi/SNData_His.cs
+++ b/Tiger.Model.Net/Entitys/WMS/MengQi/SNData_His.cs
@@ -116,6 +116,18 @@
                 _DeliveryNo = value;
             }
         }
+        private string _CustModel = null;
+        public string CustModel
+        {
+            get
+            {
+                return _CustModel;
+            }
+            set
+            {
+                _CustModel = value;
+            }
+        }
     }
 
     public class SNDataWhere
diff --git a/Tiger.Model.Net/Tiger.Model.Net.csproj b/Tiger.Model.Net/Tiger.Model.Net.csproj
index ea09848..9805eb6 100644
--- a/Tiger.Model.Net/Tiger.Model.Net.csproj
+++ b/Tiger.Model.Net/Tiger.Model.Net.csproj
@@ -75,6 +75,13 @@
     <Compile Include="Entitys\Automate\WIP_SN.cs" />
     <Compile Include="Entitys\Automate\WIP_SNHis.cs" />
     <Compile Include="Entitys\Automate\WIP_SNResult.cs" />
+    <Compile Include="Entitys\BAS\BAS_DEFECT.cs" />
+    <Compile Include="Entitys\BAS\BAS_DEFECT_GRP.cs" />
+    <Compile Include="Entitys\BAS\BAS_DFT_DUTY.cs" />
+    <Compile Include="Entitys\BAS\BAS_DFT_LOC.cs" />
+    <Compile Include="Entitys\BAS\BAS_REASON.cs" />
+    <Compile Include="Entitys\BAS\BAS_REASON_GRP.cs" />
+    <Compile Include="Entitys\BAS\BAS_SOLUTION.cs" />
     <Compile Include="Entitys\DigitalTwin\Sharetronic\GetOperateChuteChangeInfoEntity.cs" />
     <Compile Include="Entitys\DigitalTwin\Sharetronic\OperateTowerLightEntity.cs" />
     <Compile Include="Entitys\DigitalTwin\Sharetronic\DownSingleEntity.cs" />
@@ -93,6 +100,7 @@
     <Compile Include="Entitys\MES\edge.cs" />
     <Compile Include="Entitys\MES\MES_PROD_NODE_ACT.cs" />
     <Compile Include="Entitys\MES\MES_ROUTE_NODE_ACT.cs" />
+    <Compile Include="Entitys\MES\MES_ROUTE_NODE_DFTG.cs" />
     <Compile Include="Entitys\MES\MES_ROUTE_NODE_POST.cs" />
     <Compile Include="Entitys\MES\MES_SHIFT.cs" />
     <Compile Include="Entitys\MES\MES_SHIFT_PRD.cs" />

--
Gitblit v1.9.3