From 11a0ed37d6fb4650d616cc94b11f07d283ea1e97 Mon Sep 17 00:00:00 2001
From: schangxiang@126.com <schangxiang@126.com>
Date: 周六, 31 8月 2024 16:09:29 +0800
Subject: [PATCH] 1

---
 iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/QueryWorkPieceLogYieldOutput.cs |  193 ++++++++
 iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/20240830014836_v1.0.2.cs                  |   20 
 iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs          |   57 ++
 iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/20240830014836_v1.0.2.Designer.cs         |  401 +++++++++++++++++
 iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/PdaService.cs                                    |    8 
 iWara.SCADA.Code/iWare.Wms.Database.Migrations/iWare.Wms.Database.Migrations.csproj                 |    4 
 iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/WorkPieceLogYieldInput.cs       |   88 ++++
 iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs          |  397 +++++++++++++++++
 iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml                                    |  106 ++++
 iWara.SCADA.Code/iWare.Wms.EntityFramework.Core/dbsettings.json                                     |    5 
 10 files changed, 1,244 insertions(+), 35 deletions(-)

diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/PdaService.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/PdaService.cs
index b7f4f72..6a6c9fb 100644
--- a/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/PdaService.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/Pda/PdaService.cs
@@ -667,7 +667,7 @@
             return "涓嬬嚎鎴愬姛";
         }
 
-       
+
 
 
         /// <summary>
@@ -694,6 +694,12 @@
             && w.UnLineStage == PieceUnLineStage.宸蹭笅绾�
             && w.IsDeleted == false).ToListAsync();
 
+            if (db_WorkPieceOutboundList?.Count == 0)
+            {
+                throw Oops.Oh("娌℃湁鍙嚭搴撶殑鏁版嵁锛�");
+            }
+
+
             var queryOP80NewCodeList = db_WorkPieceOutboundList.Select(x => x.OP80NewCode).ToList();
 
             List<WorkPieceInfo> db_WorkPieceInfoList = await _workPieceInfoRep.Where(w => queryOP80NewCodeList.Contains(w.OP80NewCode) && w.IsDeleted == false).ToListAsync();
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/QueryWorkPieceLogYieldOutput.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/QueryWorkPieceLogYieldOutput.cs
new file mode 100644
index 0000000..1bef04d
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/QueryWorkPieceLogYieldOutput.cs
@@ -0,0 +1,193 @@
+锘縰sing Furion.TaskScheduler;
+using iWare.Wms.Core.Enum;
+using iWare.Wms.Core.Util.LowCode.Dto;
+using Microsoft.EntityFrameworkCore;
+using System;
+using System.ComponentModel;
+
+namespace iWare.Wms.Application
+{
+
+    public class QueryWorkPieceLogYieldOutput : ExportYQueryWorkPieceLogYieldOutput
+    {
+        /// <summary>
+        /// 褰撳墠璁惧
+        /// </summary>
+        public string EquipmentID { get; set; }
+
+        
+
+
+
+
+
+
+
+
+        //private DateTime? m_EndTime = null;
+
+        ///// <summary>
+        ///// 宸ュ簭涓嬬嚎鏃堕棿
+        ///// </summary>
+        //public DateTime? EndTime
+        //{
+        //    get
+        //    {
+
+        //        if (m_EndTime == null)
+        //        {
+        //            return null;
+        //        }
+
+        //        if (m_EndTime == Convert.ToDateTime("0001-01-01"))
+        //        {
+        //            return null;
+        //        }
+        //        else
+        //        {
+        //            return m_EndTime;
+        //        }
+        //    }
+        //    set { m_EndTime = value; }
+        //}
+
+        ///// <summary>
+        ///// 鍔犲伐鏃堕暱
+        ///// </summary>
+        //public string TimeSceonds
+        //{
+        //    get
+        //    {
+        //        if (EndTime == null || StartTime == null || EndTime == Convert.ToDateTime("0001-01-01") || StartTime == Convert.ToDateTime("0001-01-01"))
+        //        {
+        //            return "";
+        //        }
+
+        //        TimeSpan ts = Convert.ToDateTime(EndTime) - Convert.ToDateTime(StartTime);
+
+        //        return Convert.ToInt32(ts.TotalMinutes).ToString() + "min";
+        //    }
+        //}
+
+        ///// <summary>
+        ///// 璐ㄩ噺鐘舵��
+        ///// </summary>
+        //public int QualityState { get; set; }
+
+        ///// <summary>
+        ///// 璐ㄩ噺鐘舵�佸悕瀛�
+        ///// </summary>
+        //public string QualityStateName
+        //{
+        //    get
+        //    {
+        //        if (1 == QualityState)
+        //        {
+        //            return "鍚堟牸";
+
+        //        }
+        //        else if (2 == QualityState)
+        //        {
+
+        //            return "涓嶅悎鏍�";
+        //        }
+        //        else if (3 == QualityState)
+        //        {
+
+        //            return "鐤戜技";
+        //        }
+        //        else
+        //        {
+        //            return "";
+        //        }
+        //    }
+        //}
+
+        ///// <summary>
+        ///// 鎿嶄綔绫诲瀷锛圫PC/鐢熶骇锛�
+        ///// </summary>
+        //public string OperationType { get; set; }
+        ///// <summary>
+        ///// 鎿嶄綔绫诲瀷
+        ///// </summary>
+        //public string OperationTypeHand
+        //{
+        //    get
+        //    {
+        //        string str = "";
+        //        if (string.IsNullOrEmpty(OperationType))
+        //        {
+        //            str = "鍏朵粬";
+        //        }
+        //        else
+        //        {
+        //            str = OperationType;
+        //        }
+        //        return str;
+        //    }
+        //}
+        ///// <summary>
+        ///// 璐ㄩ噺淇℃伅id
+        ///// </summary>
+        //public long QualityDataInfoID { get; set; }
+
+        ///// <summary>
+        ///// Id涓婚敭
+        ///// </summary>
+        //public long Id { get; set; }
+        ///// <summary>
+        ///// 鍒涘缓浜�
+        ///// </summary>
+        //public string CreateUserName { get; set; }
+
+    }
+
+
+    [Description("宸ヤ欢閲囬泦鏃ュ織鏌ヨ")]
+    public class ExportYQueryWorkPieceLogYieldOutput
+    {
+        ///// <summary>
+        ///// 璁惧鍚嶇О
+        ///// </summary>
+        //[Description("褰撳墠璁惧")]
+        //public string EquipmentName { get; set; }
+
+        /// <summary>
+        /// 褰撳墠宸ュ簭
+        /// </summary>
+        [Description("褰撳墠宸ュ簭")]
+        public string WorkingProcedure { get; set; }
+
+        /// <summary>
+        /// 宸ヤ欢鍙�
+        /// </summary>
+        [Description("宸ヤ欢鍙�")]
+        public string WorkPieceID { get; set; }
+
+
+
+        [Description("澶囨敞")]
+        public string Remarks { get; set; }
+
+
+
+        [Description("鍒涘缓浜�")]
+        public virtual string CreatedUserName { get; set; }
+
+        /// <summary>
+        /// 鍒涘缓鏃堕棿
+        /// </summary>
+        [Description("鍒涘缓鏃堕棿")]
+        public virtual DateTimeOffset? CreatedTime { get; set; }
+
+
+   
+
+
+
+
+    }
+
+
+}
+
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/WorkPieceLogYieldInput.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/WorkPieceLogYieldInput.cs
new file mode 100644
index 0000000..11212de
--- /dev/null
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/Dto/WorkPieceLogYieldInput.cs
@@ -0,0 +1,88 @@
+锘縰sing iWare.Wms.Core;
+using iWare.Wms.Core.Service;
+using System.ComponentModel.DataAnnotations;
+
+namespace iWare.Wms.Application
+{
+
+  
+  
+    public class WorkPieceLogYieldInput : PageInputBase
+    {
+        /// <summary>
+        /// 宸ヤ欢鍙�
+        /// </summary>
+        public virtual string WorkPieceID { get; set; }
+
+
+        /// <summary>
+        /// 鎴愬搧鐮�
+        /// </summary>
+        public virtual string OP80NewCode { get; set; }
+
+        /// <summary>
+        /// 褰撳墠璁惧
+        /// </summary>
+        public virtual string EquipmentID { get; set; }
+        /// <summary>
+        /// 鎿嶄綔绫诲瀷锛圫PC/鐢熶骇锛�
+        /// </summary>
+        public string OperationType { get; set; }
+
+        /// <summary>
+        /// 褰撳墠宸ュ簭
+        /// </summary>
+        public virtual string workingProcedure { get; set; }
+
+        public virtual string createdUserName { get; set; }
+
+        /// <summary>
+        /// 宸ュ簭涓婄嚎鏃堕棿
+        /// </summary>
+        public virtual DateTime? StartTime { get; set; }
+
+        /// <summary>
+        /// 宸ュ簭涓婄嚎鏃堕棿寮�濮�
+        /// </summary>
+        public virtual DateTime? StartTimeBeginTime { get; set; }
+
+        /// <summary>
+        /// 宸ュ簭涓婄嚎鏃堕棿缁撴潫鏃堕棿
+        /// </summary>
+        public virtual DateTime? StartTimeEndTime { get; set; }        
+        
+        /// <summary>                                     
+        /// 宸ュ簭涓嬬嚎鏃堕棿
+        /// </summary>
+        public virtual DateTime? EndTime { get; set; }
+
+        /// <summary>
+        /// 宸ヤ欢鐘舵��
+        /// </summary>
+        public virtual int? WorkPieceState { get; set; }
+
+        /// <summary>
+        /// 宸ュ簭涓婄嚎鏃堕棿寮�濮嬫椂闂�(妫�绱娇鐢�)
+        /// </summary>
+        public virtual DateTime? OnlineTimeBeginTime { get; set; }
+
+        /// <summary>
+        /// 宸ュ簭涓婄嚎鏃堕棿缁撴潫鏃堕棿(妫�绱娇鐢�)
+        /// </summary>
+        public virtual DateTime? OnlineTimeEndTime { get; set; }
+
+        /// <summary>
+        /// 璐ㄩ噺鐘舵��
+        /// </summary>
+        public virtual int? QualityState { get; set; }
+        
+        /// <summary>
+        /// 璐ㄩ噺淇℃伅id
+        /// </summary>
+        public virtual int? QualityDataInfoID { get; set; }
+        
+    }
+
+    
+
+}
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs
index e7ea152..4a34b15 100644
--- a/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Application/Service/WorkPieceProcess/WorkPieceProcessService.cs
@@ -35,6 +35,7 @@
         private readonly IRepository<EquipmentBaseInfo, MasterDbContextLocator> _equipmentBaseInfoRep;
         private readonly IRepository<SysDictType, MasterDbContextLocator> _sysDictTypeRep;
         private readonly IRepository<SysDictData, MasterDbContextLocator> _sysDictDataRep;
+        private readonly IRepository<WorkPieceLog, MasterDbContextLocator> _workPieceLogRep;
 
 
         /// <summary>
@@ -46,6 +47,7 @@
         /// <param name="sysDictTypeRep"></param>
         /// <param name="sysDictDataRep"></param>
         public WorkPieceProcessService(
+            IRepository<WorkPieceLog, MasterDbContextLocator> workPieceLogRep,
             IRepository<WorkPieceProcess, MasterDbContextLocator> workPieceProcessRep,
             IRepository<WorkPieceInfo, MasterDbContextLocator> workPieceInfoRep,
             IRepository<EquipmentBaseInfo, MasterDbContextLocator> equipmentBaseInfoRep,
@@ -53,6 +55,7 @@
             IRepository<SysDictData, MasterDbContextLocator> sysDictDataRep
         )
         {
+            _workPieceLogRep = workPieceLogRep;
             _workPieceInfoRep = workPieceInfoRep;
             _workPieceProcessRep = workPieceProcessRep;
             _equipmentBaseInfoRep = equipmentBaseInfoRep;
@@ -332,6 +335,60 @@
 
         #endregion
 
+
+
+        #region 閲囬泦鏃ュ織鏌ヨ [Editby shaocx,2024-06-08]
+
+        /// <summary>
+        /// 閲囬泦鏃ュ織鏌ヨ
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns></returns>
+        [HttpGet("queryWorkPieceLogYield")]
+        public async Task<PageResult<QueryWorkPieceLogYieldOutput>> QueryWorkPieceLogYield([FromQuery] WorkPieceLogYieldInput input)
+        {
+
+            var resutlt = await _workPieceLogRep.DetachedEntities
+                                    .Where(!string.IsNullOrEmpty(input.WorkPieceID), u => u.WorkPieceID.Contains(input.WorkPieceID))
+                                    .Where(!string.IsNullOrEmpty(input.workingProcedure), u => u.WorkingProcedure.Contains(input.workingProcedure))
+                                      .Where(!string.IsNullOrEmpty(input.createdUserName), u => u.CreatedUserName.Contains(input.createdUserName))
+                                    .Where(!string.IsNullOrEmpty(input.StartTimeBeginTime.ToString()), u => u.CreatedTime >= input.StartTimeBeginTime)
+                                    .Where(!string.IsNullOrEmpty(input.StartTimeEndTime.ToString()), u => u.CreatedTime <= input.StartTimeEndTime)
+
+
+                                    .OrderBy(PageInputOrder.OrderBuilder<WorkPieceLogYieldInput>(input))
+                                    .ProjectToType<QueryWorkPieceLogYieldOutput>()
+                                    .ToADPagedListAsync(input.PageNo, input.PageSize);
+            return resutlt;
+
+        }
+
+        /// <summary>
+        /// 瀵煎嚭閲囬泦鏃ュ織鏌ヨ
+        /// </summary>
+        /// <param name="input"></param>
+        /// <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        [HttpGet("exportWorkPieceLogYield")]
+        public async Task<IActionResult> ExportWorkPieceLogYield([FromQuery] WorkPieceLogYieldInput input)
+        {
+            input.PageNo = 1;
+            input.PageSize = 1000000;
+            var workPieceMachiningInfos2 = QueryWorkPieceLogYield(input);
+            var workPieceMachiningInfos = workPieceMachiningInfos2.Result.Rows.ToList();
+            var daList = workPieceMachiningInfos.Adapt<List<ExportYQueryWorkPieceLogYieldOutput>>();
+
+            MemoryStream ms = new();
+            DataConvertUtil.ToExcelData(daList, _sysDictTypeRep, _sysDictDataRep, out List<string> headers,
+                out List<List<object>> data, out string sheetName);
+
+            ExcelUtil.ToExcel(headers, data, sheetName, ms);
+            ms.Position = 0;
+            var fileName = HttpUtility.UrlEncode($"{sheetName}[{DateTimeOffset.Now:yyyy-MM-dd}].xlsx", Encoding.GetEncoding("UTF-8"));
+            return new FileStreamResult(ms, "application/octet-stream") { FileDownloadName = fileName };
+        }
+
+        #endregion
+
         /// <summary>
         /// 鍒嗛〉鏌ヨ宸ヤ欢鍔犲伐(宸ヤ欢淇℃伅琛�)
         /// </summary>
diff --git a/iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml b/iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml
index 8b285a1..3d1ba72 100644
--- a/iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml
+++ b/iWara.SCADA.Code/iWare.Wms.Application/iWare.Wms.Application.xml
@@ -15149,6 +15149,26 @@
             <param name="input"></param>
             <returns></returns>
         </member>
+        <member name="P:iWare.Wms.Application.QueryWorkPieceLogYieldOutput.EquipmentID">
+            <summary>
+            褰撳墠璁惧
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.ExportYQueryWorkPieceLogYieldOutput.WorkingProcedure">
+            <summary>
+            褰撳墠宸ュ簭
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.ExportYQueryWorkPieceLogYieldOutput.WorkPieceID">
+            <summary>
+            宸ヤ欢鍙�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.ExportYQueryWorkPieceLogYieldOutput.CreatedTime">
+            <summary>
+            鍒涘缓鏃堕棿
+            </summary>
+        </member>
         <member name="T:iWare.Wms.Application.QueryYieldOutput">
             <summary>
             浜ч噺鏌ヨ杈撳嚭鍙傛暟
@@ -15177,6 +15197,76 @@
         <member name="P:iWare.Wms.Application.ExportYieldOutput.YieldCount">
             <summary>
             浜ч噺姹囨�� 銆怑ditby shaocx,2024-06-11銆�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceLogYieldInput.WorkPieceID">
+            <summary>
+            宸ヤ欢鍙�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceLogYieldInput.OP80NewCode">
+            <summary>
+            鎴愬搧鐮�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceLogYieldInput.EquipmentID">
+            <summary>
+            褰撳墠璁惧
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceLogYieldInput.OperationType">
+            <summary>
+            鎿嶄綔绫诲瀷锛圫PC/鐢熶骇锛�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceLogYieldInput.workingProcedure">
+            <summary>
+            褰撳墠宸ュ簭
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceLogYieldInput.StartTime">
+            <summary>
+            宸ュ簭涓婄嚎鏃堕棿
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceLogYieldInput.StartTimeBeginTime">
+            <summary>
+            宸ュ簭涓婄嚎鏃堕棿寮�濮�
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceLogYieldInput.StartTimeEndTime">
+            <summary>
+            宸ュ簭涓婄嚎鏃堕棿缁撴潫鏃堕棿
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceLogYieldInput.EndTime">
+            <summary>                                     
+            宸ュ簭涓嬬嚎鏃堕棿
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceLogYieldInput.WorkPieceState">
+            <summary>
+            宸ヤ欢鐘舵��
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceLogYieldInput.OnlineTimeBeginTime">
+            <summary>
+            宸ュ簭涓婄嚎鏃堕棿寮�濮嬫椂闂�(妫�绱娇鐢�)
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceLogYieldInput.OnlineTimeEndTime">
+            <summary>
+            宸ュ簭涓婄嚎鏃堕棿缁撴潫鏃堕棿(妫�绱娇鐢�)
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceLogYieldInput.QualityState">
+            <summary>
+            璐ㄩ噺鐘舵��
+            </summary>
+        </member>
+        <member name="P:iWare.Wms.Application.WorkPieceLogYieldInput.QualityDataInfoID">
+            <summary>
+            璐ㄩ噺淇℃伅id
             </summary>
         </member>
         <member name="T:iWare.Wms.Application.WorkPieceProcessDto">
@@ -15832,7 +15922,7 @@
             宸ヤ欢鍔犲伐杩芥函鏈嶅姟
             </summary>
         </member>
-        <member name="M:iWare.Wms.Application.WorkPieceProcessService.#ctor(Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceProcess,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceInfo,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.EquipmentBaseInfo,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator})">
+        <member name="M:iWare.Wms.Application.WorkPieceProcessService.#ctor(Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceLog,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceProcess,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.WorkPieceInfo,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.EquipmentBaseInfo,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.SysDictType,Furion.DatabaseAccessor.MasterDbContextLocator},Furion.DatabaseAccessor.IRepository{iWare.Wms.Core.SysDictData,Furion.DatabaseAccessor.MasterDbContextLocator})">
             <summary>
             宸ヤ欢鍔犲伐杩芥函鏋勯��
             </summary>
@@ -15870,6 +15960,20 @@
             <param name="input"></param>
             <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
         </member>
+        <member name="M:iWare.Wms.Application.WorkPieceProcessService.QueryWorkPieceLogYield(iWare.Wms.Application.WorkPieceLogYieldInput)">
+            <summary>
+            閲囬泦鏃ュ織鏌ヨ
+            </summary>
+            <param name="input"></param>
+            <returns></returns>
+        </member>
+        <member name="M:iWare.Wms.Application.WorkPieceProcessService.ExportWorkPieceLogYield(iWare.Wms.Application.WorkPieceLogYieldInput)">
+            <summary>
+            瀵煎嚭閲囬泦鏃ュ織鏌ヨ
+            </summary>
+            <param name="input"></param>
+            <returns>瀵煎嚭鐨凟xcel鏂囦欢</returns>
+        </member>
         <member name="M:iWare.Wms.Application.WorkPieceProcessService.WorkPieceInfoMachiningPage(iWare.Wms.Application.WorkPieceProcessSearch)">
             <summary>
             鍒嗛〉鏌ヨ宸ヤ欢鍔犲伐(宸ヤ欢淇℃伅琛�)
diff --git a/iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/20240112013535_v1.0.1.Designer.cs b/iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/20240830014836_v1.0.2.Designer.cs
similarity index 97%
rename from iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/20240112013535_v1.0.1.Designer.cs
rename to iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/20240830014836_v1.0.2.Designer.cs
index d5a9b46..a413f30 100644
--- a/iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/20240112013535_v1.0.1.Designer.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/20240830014836_v1.0.2.Designer.cs
@@ -12,8 +12,8 @@
 namespace iWare.Wms.Database.Migrations.Migrations
 {
     [DbContext(typeof(DefaultDbContext))]
-    [Migration("20240112013535_v1.0.1")]
-    partial class v101
+    [Migration("20240830014836_v1.0.2")]
+    partial class v102
     {
         protected override void BuildTargetModel(ModelBuilder modelBuilder)
         {
@@ -683,6 +683,10 @@
                         .HasColumnType("nvarchar(50)")
                         .HasComment("鍒涘缓鑰呭悕绉�");
 
+                    b.Property<DateTime?>("CuttingFluidAddTime")
+                        .HasColumnType("datetime2")
+                        .HasComment("鍒囧墛娑叉坊鍔犳椂闂�");
+
                     b.Property<int>("CuttingFluidChangeAlertThreshold")
                         .HasColumnType("int")
                         .HasComment("鍒囧墛娑查璀﹂槇鍊�");
@@ -690,6 +694,10 @@
                     b.Property<DateTime?>("CuttingFluidChangeTime")
                         .HasColumnType("datetime2")
                         .HasComment("鍒囧墛娑叉洿鎹㈡椂闂�");
+
+                    b.Property<DateTime?>("DetergentAddtime")
+                        .HasColumnType("datetime2")
+                        .HasComment("娓呮礂娑叉坊鍔犳椂闂�");
 
                     b.Property<int>("DetergentChangeAlertThreshold")
                         .HasColumnType("int")
@@ -783,6 +791,78 @@
                     b.ToTable("EquipmentBaseInfo");
 
                     b.HasComment("璁惧鍩虹淇℃伅琛�");
+                });
+
+            modelBuilder.Entity("iWare.Wms.Core.Equipmentbaseinfolog", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<long>("EquipmentBaseInfoId")
+                        .HasColumnType("bigint")
+                        .HasComment("璁惧ID");
+
+                    b.Property<string>("EquipmentID")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("璁惧缂栧彿");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("OperatorContent")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎿嶄綔鍐呭");
+
+                    b.Property<int>("OperatorType")
+                        .HasColumnType("int")
+                        .HasComment("鎿嶄綔绫诲瀷ID");
+
+                    b.Property<string>("OperatorTypeName")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎿嶄綔绫诲瀷");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("equipmentbaseinfolog");
+
+                    b.HasComment("璁惧缁存姢璁板綍");
                 });
 
             modelBuilder.Entity("iWare.Wms.Core.EquipmentCurrentMonitor", b =>
@@ -2252,6 +2332,51 @@
                         .HasColumnType("nvarchar(32)")
                         .HasComment("閲嶉噺缁勫埆;OP80");
 
+                    b.Property<string>("QualityOP80_DTKYZD")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_S_X")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_S_Y")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_TKZJ")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_X_X")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_X_Y")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_Houdu")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_XTSMYD")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_XTXMYD")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_S_X")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_S_Y")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_TKZJ")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_X_X")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_X_Y")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_ZXJ")
+                        .HasColumnType("nvarchar(max)");
+
                     b.Property<DateTime>("QualityReceiveTime")
                         .HasColumnType("datetime2")
                         .HasComment("璐ㄩ噺鎺ユ敹鏃堕棿");
@@ -2577,6 +2702,51 @@
                         .HasMaxLength(32)
                         .HasColumnType("nvarchar(32)")
                         .HasComment("閲嶉噺缁勫埆;OP80");
+
+                    b.Property<string>("QualityOP80_DTKYZD")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_S_X")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_S_Y")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_TKZJ")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_X_X")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_X_Y")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_Houdu")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_XTSMYD")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_XTXMYD")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_S_X")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_S_Y")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_TKZJ")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_X_X")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_X_Y")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_ZXJ")
+                        .HasColumnType("nvarchar(max)");
 
                     b.Property<DateTime>("QualityReceiveTime")
                         .HasColumnType("datetime2")
@@ -13372,6 +13542,10 @@
                         .HasColumnType("bit")
                         .HasComment("杞垹闄ゆ爣璁�");
 
+                    b.Property<bool?>("IsOut")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍑哄簱");
+
                     b.Property<string>("LogAddRemark")
                         .HasMaxLength(255)
                         .HasColumnType("nvarchar(255)")
@@ -13387,10 +13561,22 @@
                         .HasComment("鏁伴噺");
 
                     b.Property<string>("OP80NewCode")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("nvarchar(32)")
+                        .HasColumnType("nvarchar(max)")
                         .HasComment("宸ヤ欢OP80鐮�");
+
+                    b.Property<string>("OutPerson")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍑哄簱浜�");
+
+                    b.Property<string>("OutRemark")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍑哄簱澶囨敞");
+
+                    b.Property<DateTime?>("OutTime")
+                        .HasColumnType("datetime2")
+                        .HasComment("鍑哄簱鏃堕棿");
 
                     b.Property<int?>("ProcessingDurationForCurrent")
                         .HasColumnType("int")
@@ -13404,6 +13590,12 @@
                         .HasMaxLength(255)
                         .HasColumnType("nvarchar(255)")
                         .HasComment("璐ㄩ噺涓嶅悎鏍煎師鍥�");
+
+                    b.Property<int?>("QualityNoOk")
+                        .HasColumnType("int");
+
+                    b.Property<string>("QualityNoOkReason")
+                        .HasColumnType("nvarchar(max)");
 
                     b.Property<int?>("QualityState")
                         .HasColumnType("int")
@@ -13427,6 +13619,14 @@
                         .HasMaxLength(255)
                         .HasColumnType("nvarchar(255)")
                         .HasComment("澶囨敞");
+
+                    b.Property<int?>("UnLineStage")
+                        .HasColumnType("int")
+                        .HasComment("涓嬬嚎闃舵");
+
+                    b.Property<string>("UnLineStageName")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("涓嬬嚎闃舵鍚嶇О");
 
                     b.Property<DateTimeOffset?>("UpdatedTime")
                         .HasColumnType("datetimeoffset")
@@ -13498,6 +13698,19 @@
                     b.Property<int?>("WorkPieceState")
                         .HasColumnType("int")
                         .HasComment("宸ヤ欢鐘舵��");
+
+                    b.Property<DateTime?>("WorkPieceUnLineTime")
+                        .HasColumnType("datetime2")
+                        .HasComment("涓嬬嚎鏃堕棿");
+
+                    b.Property<long?>("WorkPieceUnLineUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("涓嬬嚎浜篒d");
+
+                    b.Property<string>("WorkPieceUnLineUserName")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("涓嬬嚎浜哄悕绉�");
 
                     b.Property<DateTime?>("WorkPieceinitOnlineTime")
                         .HasColumnType("datetime2")
@@ -13940,6 +14153,11 @@
                         .HasColumnType("bigint")
                         .HasComment("Id涓婚敭");
 
+                    b.Property<string>("CarNo")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("灏忚溅鐮�");
+
                     b.Property<DateTimeOffset?>("CreatedTime")
                         .HasColumnType("datetimeoffset")
                         .HasComment("鍒涘缓鏃堕棿");
@@ -13963,6 +14181,19 @@
                         .HasColumnType("nvarchar(255)")
                         .HasComment("OP80鎵撶爜");
 
+                    b.Property<string>("Remark")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int?>("UnLineStage")
+                        .HasColumnType("int")
+                        .HasComment("闃舵");
+
+                    b.Property<string>("UnLineStageName")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("闃舵鍚嶇О");
+
                     b.Property<DateTimeOffset?>("UpdatedTime")
                         .HasColumnType("datetimeoffset")
                         .HasComment("鏇存柊鏃堕棿");
@@ -13977,33 +14208,109 @@
                         .HasComment("淇敼鑰呭悕绉�");
 
                     b.Property<string>("WorkPieceID")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("nvarchar(32)")
+                        .HasColumnType("nvarchar(max)")
                         .HasComment("宸ヤ欢鍙�");
 
                     b.Property<DateTime?>("WorkPieceOutboundTime")
-                        .IsRequired()
                         .HasColumnType("datetime2")
                         .HasComment("鍑哄簱鏃堕棿");
 
                     b.Property<long?>("WorkPieceOutboundUserId")
-                        .IsRequired()
-                        .HasMaxLength(32)
                         .HasColumnType("bigint")
                         .HasComment("鍑哄簱浜篒d");
 
                     b.Property<string>("WorkPieceOutboundUserName")
-                        .IsRequired()
                         .HasMaxLength(32)
                         .HasColumnType("nvarchar(32)")
                         .HasComment("鍑哄簱浜哄悕绉�");
+
+                    b.Property<DateTime?>("WorkPieceUnLineTime")
+                        .HasColumnType("datetime2")
+                        .HasComment("涓嬬嚎鏃堕棿");
+
+                    b.Property<long?>("WorkPieceUnLineUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("涓嬬嚎浜篒d");
+
+                    b.Property<string>("WorkPieceUnLineUserName")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("涓嬬嚎浜哄悕绉�");
 
                     b.HasKey("Id");
 
                     b.ToTable("WorkPieceOutbound");
 
                     b.HasComment("宸ヤ欢鍑哄簱琛�");
+                });
+
+            modelBuilder.Entity("iWare.Wms.Core.WorkPieceOutboundRecord", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("CarNo")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("灏忚溅鐮�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("OP80NewCode")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎴愬搧鐮�");
+
+                    b.Property<string>("OperationType")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("鎿嶄綔绫诲瀷");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("WorkPieceID")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("宸ヤ欢鍙�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("WorkPieceOutboundRecord");
+
+                    b.HasComment("宸ヤ欢鍑哄簱璁板綍琛�");
                 });
 
             modelBuilder.Entity("iWare.Wms.Core.WorkPieceProcess", b =>
@@ -14047,6 +14354,12 @@
                         .HasColumnType("bigint")
                         .HasComment("璐ㄩ噺淇℃伅id");
 
+                    b.Property<int?>("QualityNoOk")
+                        .HasColumnType("int");
+
+                    b.Property<string>("QualityNoOkReason")
+                        .HasColumnType("nvarchar(max)");
+
                     b.Property<int>("QualityState")
                         .HasColumnType("int")
                         .HasComment("璐ㄩ噺鐘舵��");
@@ -14090,6 +14403,70 @@
                     b.HasComment("宸ヤ欢鍔犲伐灞ュ巻琛�");
                 });
 
+            modelBuilder.Entity("iWare.Wms.Core.WorkPieceUnLine", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("CarNo")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("灏忚溅鐮�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("OP80NewCode")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎴愬搧鐮�");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("WorkPieceID")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("宸ヤ欢鍙�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("WorkPieceUnLine");
+
+                    b.HasComment("宸ヤ欢涓嬬嚎琛�");
+                });
+
             modelBuilder.Entity("iWare.Wms.Core.YieldAnalysis", b =>
                 {
                     b.Property<long>("Id")
diff --git a/iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/20240112013535_v1.0.1.cs b/iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/20240830014836_v1.0.2.cs
similarity index 67%
rename from iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/20240112013535_v1.0.1.cs
rename to iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/20240830014836_v1.0.2.cs
index 00d4fc5..b76698e 100644
--- a/iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/20240112013535_v1.0.1.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/20240830014836_v1.0.2.cs
@@ -5,20 +5,20 @@
 
 namespace iWare.Wms.Database.Migrations.Migrations
 {
-    public partial class v101 : Migration
+    public partial class v102 : Migration
     {
         protected override void Up(MigrationBuilder migrationBuilder)
         {
             migrationBuilder.CreateTable(
-                name: "WorkPieceOutbound",
+                name: "WorkPieceOutboundRecord",
                 columns: table => new
                 {
                     Id = table.Column<long>(type: "bigint", nullable: false, comment: "Id涓婚敭"),
-                    WorkPieceID = table.Column<string>(type: "nvarchar(32)", maxLength: 32, nullable: false, comment: "宸ヤ欢鍙�"),
-                    OP80NewCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: false, comment: "OP80鎵撶爜"),
-                    WorkPieceOutboundTime = table.Column<DateTime>(type: "datetime2", nullable: false, comment: "鍑哄簱鏃堕棿"),
-                    WorkPieceOutboundUserId = table.Column<long>(type: "bigint", maxLength: 32, nullable: false, comment: "鍑哄簱浜篒d"),
-                    WorkPieceOutboundUserName = table.Column<string>(type: "nvarchar(32)", maxLength: 32, nullable: false, comment: "鍑哄簱浜哄悕绉�"),
+                    OperationType = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true, comment: "鎿嶄綔绫诲瀷"),
+                    OP80NewCode = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: false, comment: "鎴愬搧鐮�"),
+                    WorkPieceID = table.Column<string>(type: "nvarchar(32)", maxLength: 32, nullable: true, comment: "宸ヤ欢鍙�"),
+                    CarNo = table.Column<string>(type: "nvarchar(32)", maxLength: 32, nullable: true, comment: "灏忚溅鐮�"),
+                    Remark = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true, comment: "澶囨敞"),
                     CreatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鍒涘缓鏃堕棿"),
                     UpdatedTime = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true, comment: "鏇存柊鏃堕棿"),
                     CreatedUserId = table.Column<long>(type: "bigint", nullable: true, comment: "鍒涘缓鑰匢d"),
@@ -29,15 +29,15 @@
                 },
                 constraints: table =>
                 {
-                    table.PrimaryKey("PK_WorkPieceOutbound", x => x.Id);
+                    table.PrimaryKey("PK_WorkPieceOutboundRecord", x => x.Id);
                 },
-                comment: "宸ヤ欢鍑哄簱琛�");
+                comment: "宸ヤ欢鍑哄簱璁板綍琛�");
         }
 
         protected override void Down(MigrationBuilder migrationBuilder)
         {
             migrationBuilder.DropTable(
-                name: "WorkPieceOutbound");
+                name: "WorkPieceOutboundRecord");
         }
     }
 }
diff --git a/iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs b/iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
index 46658ba..c3bd972 100644
--- a/iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
+++ b/iWara.SCADA.Code/iWare.Wms.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs
@@ -681,6 +681,10 @@
                         .HasColumnType("nvarchar(50)")
                         .HasComment("鍒涘缓鑰呭悕绉�");
 
+                    b.Property<DateTime?>("CuttingFluidAddTime")
+                        .HasColumnType("datetime2")
+                        .HasComment("鍒囧墛娑叉坊鍔犳椂闂�");
+
                     b.Property<int>("CuttingFluidChangeAlertThreshold")
                         .HasColumnType("int")
                         .HasComment("鍒囧墛娑查璀﹂槇鍊�");
@@ -688,6 +692,10 @@
                     b.Property<DateTime?>("CuttingFluidChangeTime")
                         .HasColumnType("datetime2")
                         .HasComment("鍒囧墛娑叉洿鎹㈡椂闂�");
+
+                    b.Property<DateTime?>("DetergentAddtime")
+                        .HasColumnType("datetime2")
+                        .HasComment("娓呮礂娑叉坊鍔犳椂闂�");
 
                     b.Property<int>("DetergentChangeAlertThreshold")
                         .HasColumnType("int")
@@ -781,6 +789,78 @@
                     b.ToTable("EquipmentBaseInfo");
 
                     b.HasComment("璁惧鍩虹淇℃伅琛�");
+                });
+
+            modelBuilder.Entity("iWare.Wms.Core.Equipmentbaseinfolog", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<long>("EquipmentBaseInfoId")
+                        .HasColumnType("bigint")
+                        .HasComment("璁惧ID");
+
+                    b.Property<string>("EquipmentID")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("璁惧缂栧彿");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("OperatorContent")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎿嶄綔鍐呭");
+
+                    b.Property<int>("OperatorType")
+                        .HasColumnType("int")
+                        .HasComment("鎿嶄綔绫诲瀷ID");
+
+                    b.Property<string>("OperatorTypeName")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎿嶄綔绫诲瀷");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("equipmentbaseinfolog");
+
+                    b.HasComment("璁惧缁存姢璁板綍");
                 });
 
             modelBuilder.Entity("iWare.Wms.Core.EquipmentCurrentMonitor", b =>
@@ -2250,6 +2330,51 @@
                         .HasColumnType("nvarchar(32)")
                         .HasComment("閲嶉噺缁勫埆;OP80");
 
+                    b.Property<string>("QualityOP80_DTKYZD")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_S_X")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_S_Y")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_TKZJ")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_X_X")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_X_Y")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_Houdu")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_XTSMYD")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_XTXMYD")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_S_X")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_S_Y")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_TKZJ")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_X_X")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_X_Y")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_ZXJ")
+                        .HasColumnType("nvarchar(max)");
+
                     b.Property<DateTime>("QualityReceiveTime")
                         .HasColumnType("datetime2")
                         .HasComment("璐ㄩ噺鎺ユ敹鏃堕棿");
@@ -2575,6 +2700,51 @@
                         .HasMaxLength(32)
                         .HasColumnType("nvarchar(32)")
                         .HasComment("閲嶉噺缁勫埆;OP80");
+
+                    b.Property<string>("QualityOP80_DTKYZD")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_S_X")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_S_Y")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_TKZJ")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_X_X")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_D_X_Y")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_Houdu")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_XTSMYD")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_XTXMYD")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_S_X")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_S_Y")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_TKZJ")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_X_X")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_X_X_Y")
+                        .HasColumnType("nvarchar(max)");
+
+                    b.Property<string>("QualityOP80_ZXJ")
+                        .HasColumnType("nvarchar(max)");
 
                     b.Property<DateTime>("QualityReceiveTime")
                         .HasColumnType("datetime2")
@@ -13370,6 +13540,10 @@
                         .HasColumnType("bit")
                         .HasComment("杞垹闄ゆ爣璁�");
 
+                    b.Property<bool?>("IsOut")
+                        .HasColumnType("bit")
+                        .HasComment("鏄惁鍑哄簱");
+
                     b.Property<string>("LogAddRemark")
                         .HasMaxLength(255)
                         .HasColumnType("nvarchar(255)")
@@ -13385,10 +13559,22 @@
                         .HasComment("鏁伴噺");
 
                     b.Property<string>("OP80NewCode")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("nvarchar(32)")
+                        .HasColumnType("nvarchar(max)")
                         .HasComment("宸ヤ欢OP80鐮�");
+
+                    b.Property<string>("OutPerson")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍑哄簱浜�");
+
+                    b.Property<string>("OutRemark")
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鍑哄簱澶囨敞");
+
+                    b.Property<DateTime?>("OutTime")
+                        .HasColumnType("datetime2")
+                        .HasComment("鍑哄簱鏃堕棿");
 
                     b.Property<int?>("ProcessingDurationForCurrent")
                         .HasColumnType("int")
@@ -13402,6 +13588,12 @@
                         .HasMaxLength(255)
                         .HasColumnType("nvarchar(255)")
                         .HasComment("璐ㄩ噺涓嶅悎鏍煎師鍥�");
+
+                    b.Property<int?>("QualityNoOk")
+                        .HasColumnType("int");
+
+                    b.Property<string>("QualityNoOkReason")
+                        .HasColumnType("nvarchar(max)");
 
                     b.Property<int?>("QualityState")
                         .HasColumnType("int")
@@ -13425,6 +13617,14 @@
                         .HasMaxLength(255)
                         .HasColumnType("nvarchar(255)")
                         .HasComment("澶囨敞");
+
+                    b.Property<int?>("UnLineStage")
+                        .HasColumnType("int")
+                        .HasComment("涓嬬嚎闃舵");
+
+                    b.Property<string>("UnLineStageName")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("涓嬬嚎闃舵鍚嶇О");
 
                     b.Property<DateTimeOffset?>("UpdatedTime")
                         .HasColumnType("datetimeoffset")
@@ -13496,6 +13696,19 @@
                     b.Property<int?>("WorkPieceState")
                         .HasColumnType("int")
                         .HasComment("宸ヤ欢鐘舵��");
+
+                    b.Property<DateTime?>("WorkPieceUnLineTime")
+                        .HasColumnType("datetime2")
+                        .HasComment("涓嬬嚎鏃堕棿");
+
+                    b.Property<long?>("WorkPieceUnLineUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("涓嬬嚎浜篒d");
+
+                    b.Property<string>("WorkPieceUnLineUserName")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("涓嬬嚎浜哄悕绉�");
 
                     b.Property<DateTime?>("WorkPieceinitOnlineTime")
                         .HasColumnType("datetime2")
@@ -13938,6 +14151,11 @@
                         .HasColumnType("bigint")
                         .HasComment("Id涓婚敭");
 
+                    b.Property<string>("CarNo")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("灏忚溅鐮�");
+
                     b.Property<DateTimeOffset?>("CreatedTime")
                         .HasColumnType("datetimeoffset")
                         .HasComment("鍒涘缓鏃堕棿");
@@ -13961,6 +14179,19 @@
                         .HasColumnType("nvarchar(255)")
                         .HasComment("OP80鎵撶爜");
 
+                    b.Property<string>("Remark")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<int?>("UnLineStage")
+                        .HasColumnType("int")
+                        .HasComment("闃舵");
+
+                    b.Property<string>("UnLineStageName")
+                        .HasColumnType("nvarchar(max)")
+                        .HasComment("闃舵鍚嶇О");
+
                     b.Property<DateTimeOffset?>("UpdatedTime")
                         .HasColumnType("datetimeoffset")
                         .HasComment("鏇存柊鏃堕棿");
@@ -13975,33 +14206,109 @@
                         .HasComment("淇敼鑰呭悕绉�");
 
                     b.Property<string>("WorkPieceID")
-                        .IsRequired()
-                        .HasMaxLength(32)
-                        .HasColumnType("nvarchar(32)")
+                        .HasColumnType("nvarchar(max)")
                         .HasComment("宸ヤ欢鍙�");
 
                     b.Property<DateTime?>("WorkPieceOutboundTime")
-                        .IsRequired()
                         .HasColumnType("datetime2")
                         .HasComment("鍑哄簱鏃堕棿");
 
                     b.Property<long?>("WorkPieceOutboundUserId")
-                        .IsRequired()
-                        .HasMaxLength(32)
                         .HasColumnType("bigint")
                         .HasComment("鍑哄簱浜篒d");
 
                     b.Property<string>("WorkPieceOutboundUserName")
-                        .IsRequired()
                         .HasMaxLength(32)
                         .HasColumnType("nvarchar(32)")
                         .HasComment("鍑哄簱浜哄悕绉�");
+
+                    b.Property<DateTime?>("WorkPieceUnLineTime")
+                        .HasColumnType("datetime2")
+                        .HasComment("涓嬬嚎鏃堕棿");
+
+                    b.Property<long?>("WorkPieceUnLineUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("涓嬬嚎浜篒d");
+
+                    b.Property<string>("WorkPieceUnLineUserName")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("涓嬬嚎浜哄悕绉�");
 
                     b.HasKey("Id");
 
                     b.ToTable("WorkPieceOutbound");
 
                     b.HasComment("宸ヤ欢鍑哄簱琛�");
+                });
+
+            modelBuilder.Entity("iWare.Wms.Core.WorkPieceOutboundRecord", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("CarNo")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("灏忚溅鐮�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("OP80NewCode")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎴愬搧鐮�");
+
+                    b.Property<string>("OperationType")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("鎿嶄綔绫诲瀷");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("WorkPieceID")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("宸ヤ欢鍙�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("WorkPieceOutboundRecord");
+
+                    b.HasComment("宸ヤ欢鍑哄簱璁板綍琛�");
                 });
 
             modelBuilder.Entity("iWare.Wms.Core.WorkPieceProcess", b =>
@@ -14045,6 +14352,12 @@
                         .HasColumnType("bigint")
                         .HasComment("璐ㄩ噺淇℃伅id");
 
+                    b.Property<int?>("QualityNoOk")
+                        .HasColumnType("int");
+
+                    b.Property<string>("QualityNoOkReason")
+                        .HasColumnType("nvarchar(max)");
+
                     b.Property<int>("QualityState")
                         .HasColumnType("int")
                         .HasComment("璐ㄩ噺鐘舵��");
@@ -14088,6 +14401,70 @@
                     b.HasComment("宸ヤ欢鍔犲伐灞ュ巻琛�");
                 });
 
+            modelBuilder.Entity("iWare.Wms.Core.WorkPieceUnLine", b =>
+                {
+                    b.Property<long>("Id")
+                        .HasColumnType("bigint")
+                        .HasComment("Id涓婚敭");
+
+                    b.Property<string>("CarNo")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("灏忚溅鐮�");
+
+                    b.Property<DateTimeOffset?>("CreatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鍒涘缓鏃堕棿");
+
+                    b.Property<long?>("CreatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("鍒涘缓鑰匢d");
+
+                    b.Property<string>("CreatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("鍒涘缓鑰呭悕绉�");
+
+                    b.Property<bool>("IsDeleted")
+                        .HasColumnType("bit")
+                        .HasComment("杞垹闄ゆ爣璁�");
+
+                    b.Property<string>("OP80NewCode")
+                        .IsRequired()
+                        .HasMaxLength(255)
+                        .HasColumnType("nvarchar(255)")
+                        .HasComment("鎴愬搧鐮�");
+
+                    b.Property<string>("Remark")
+                        .HasMaxLength(500)
+                        .HasColumnType("nvarchar(500)")
+                        .HasComment("澶囨敞");
+
+                    b.Property<DateTimeOffset?>("UpdatedTime")
+                        .HasColumnType("datetimeoffset")
+                        .HasComment("鏇存柊鏃堕棿");
+
+                    b.Property<long?>("UpdatedUserId")
+                        .HasColumnType("bigint")
+                        .HasComment("淇敼鑰匢d");
+
+                    b.Property<string>("UpdatedUserName")
+                        .HasMaxLength(50)
+                        .HasColumnType("nvarchar(50)")
+                        .HasComment("淇敼鑰呭悕绉�");
+
+                    b.Property<string>("WorkPieceID")
+                        .HasMaxLength(32)
+                        .HasColumnType("nvarchar(32)")
+                        .HasComment("宸ヤ欢鍙�");
+
+                    b.HasKey("Id");
+
+                    b.ToTable("WorkPieceUnLine");
+
+                    b.HasComment("宸ヤ欢涓嬬嚎琛�");
+                });
+
             modelBuilder.Entity("iWare.Wms.Core.YieldAnalysis", b =>
                 {
                     b.Property<long>("Id")
diff --git a/iWara.SCADA.Code/iWare.Wms.Database.Migrations/iWare.Wms.Database.Migrations.csproj b/iWara.SCADA.Code/iWare.Wms.Database.Migrations/iWare.Wms.Database.Migrations.csproj
index 085d125..5d184e7 100644
--- a/iWara.SCADA.Code/iWare.Wms.Database.Migrations/iWare.Wms.Database.Migrations.csproj
+++ b/iWara.SCADA.Code/iWare.Wms.Database.Migrations/iWare.Wms.Database.Migrations.csproj
@@ -9,4 +9,8 @@
   <ItemGroup>
     <ProjectReference Include="..\iWare.Wms.EntityFramework.Core\iWare.Wms.EntityFramework.Core.csproj" />
   </ItemGroup>
+
+  <ItemGroup>
+    <Folder Include="Migrations\" />
+  </ItemGroup>
 </Project>
diff --git a/iWara.SCADA.Code/iWare.Wms.EntityFramework.Core/dbsettings.json b/iWara.SCADA.Code/iWare.Wms.EntityFramework.Core/dbsettings.json
index 1831657..34e5ee1 100644
--- a/iWara.SCADA.Code/iWare.Wms.EntityFramework.Core/dbsettings.json
+++ b/iWara.SCADA.Code/iWare.Wms.EntityFramework.Core/dbsettings.json
@@ -15,7 +15,10 @@
     //"MultiTenantConnection": "Data Source=localhost;Database=Admin.NET_SaaS;User ID=root;Password=123456;pooling=true;port=3306;sslmode=none;CharSet=utf8;"
 
     //MSSQL杩炴帴瀛楃涓�
-    "DefaultConnection": "Server=192.168.216.203;Database=iWare.SCADA;User=sa;Password=123abc.com;MultipleActiveResultSets=True;"
+    //"DefaultConnection": "Server=.;Database=iWare.WMS;User=sa;Password=123abc.com;MultipleActiveResultSets=True;"
+    //"DefaultConnection": "Server=82.156.32.44;Database=iWare.WMS;User=sa;Password=123abc.com;MultipleActiveResultSets=True;"
+    //"DefaultConnection": "Server=192.168.216.203;Database=iWare.SCADA;User=sa;Password=123abc.com;MultipleActiveResultSets=True;"
+    "DefaultConnection": "Server=.;Database=iWare.SCADA;User=sa;Password=123abc.com;MultipleActiveResultSets=True;"
     //"MultiTenantConnection": "Server=localhost;Database=Admin.NET_SaaS;User=sa;Password=123456;MultipleActiveResultSets=True;"
   }
 }
\ No newline at end of file

--
Gitblit v1.9.3