From b98df034707a61fd2857dbccd5a232605076ca59 Mon Sep 17 00:00:00 2001
From: lg <123456>
Date: 星期四, 20 十一月 2025 10:26:08 +0800
Subject: [PATCH] 标准版初始化

---
 WebApi/Gs.Wom/WorkService/KanBanController.cs                           |  189 +
 WebApi/Gs.JJGZ/MesAttanConController.cs                                 |  300 +
 WebApi/Gs.Toolbox/Gs.Toolbox.csproj                                     |   18 
 WebApi/Gs.Ww/WWTBlDJManager.cs                                          |   38 
 WebApi/Gs.JJGZ/MesJjgzTimeTypeController.cs                             |  210 +
 WebApi/GS.QC/Models/MesQaMj.cs                                          |   15 
 WebApi/Gs.QiTaCk/MesCgthSqManager.cs                                    |   23 
 WebApi/Gs.QiTaCk/MesCgytDjManager.cs                                    |  205 +
 WebApi/Gs.Wom/WorkService/WorkProController.cs                          |   23 
 WebApi/Gs.Ww/WWBlManager.cs                                             |   20 
 WebApi/Gs.Report/BTDetails.cs                                           |  126 
 WebApi/GS.QC/Service/RkqcManager.cs                                     |    7 
 WebApi/GS.QC/Service/MesQaItemsDetect01Manager.cs                       |   13 
 WebApi/GS.QC/Service/MesQmCheckitemManager.cs                           |  139 
 WebApi/Gs.Ww/WWGDManager.cs                                             |   64 
 WebApi/Gs.JJGZ/MesJjgzJssalaryController.cs                             |  278 +
 WebApi/Gs.Sales/SalesDeliverManager.cs                                  |    1 
 WebApi/Gs.HostIIS/Program.cs                                            |    3 
 WebApi/Gs.Warehouse/Services/MesRohInManager.cs                         |   35 
 WebApi/Gs.Ww/WWBlDJManager.cs                                           |   38 
 WebApi/Gs.Entity/BaseInfo/MesItems.cs                                   |    7 
 WebApi/Gs.Report/CkController.cs                                        |  284 +
 WebApi/GS.QC/Service/FqcItemsManager.cs                                 |  476 ++
 WebApi/GS.QC/Service/MesQmAql1Manager.cs                                |   51 
 WebApi/Gs.Sales/SalesReturnManager.cs                                   |   22 
 WebApi/Gs.JJGZ/Gs.JJGZ.csproj                                           |   26 
 WebApi/GS.QC/Service/IpqcShouManager.cs                                 |  285 +
 WebApi/Gs.BaseInfo/Services/MesWorkshopLineManager.cs                   |   84 
 WebApi/Gs.Report/WOTraceCodes.cs                                        |   89 
 WebApi/GS.QC/Service/MesQaMjManager.cs                                  |   36 
 WebApi/Gs.Sys/Services/MesSysPageviewManager.cs                         |    4 
 WebApi/Gs.Ww/WWTblManager.cs                                            |    1 
 WebApi/Gs.QiTaRk/MesItemTblManager.cs                                   |   62 
 WebApi/Gs.Sys/Services/FmController.cs                                  |   74 
 WebApi/Gs.Warehouse/Services/MesDepotsManager.cs                        |   35 
 WebApi/Gs.Wom/WorkService/WorkCollectController.cs                      |   38 
 WebApi/Gs.JJGZ/MesJjgzJjsalaryController.cs                             |  236 +
 WebApi/Gs.Warehouse/Services/VArrivalBarcodeManager.cs                  |   70 
 WebApi/Gs.Toolbox/ExcelHelper.cs                                        |  910 ++++
 WebApi/GS.QC/Service/FqcExceptionalManager.cs                           |    1 
 WebApi/Gs.BaseInfo/Services/MesCustomerManager.cs                       |    4 
 WebApi/Gs.Report/QLController.cs                                        |  305 +
 WebApi/Gs.Ww/WWLLDJManager.cs                                           |   39 
 WebApi/Gs.Report/ReportController.cs                                    |  116 
 WebApi/Gs.Warehouse/Services/MesDepotSectionsManager.cs                 |   86 
 WebApi/Gs.QiTaRk/MesItemQtrkManager.cs                                  |    6 
 WebApi/Gs.Wom/Service/FanGongManager.cs                                 |  188 +
 WebApi/Gs.QiTaCk/MesItemQtDJManager.cs                                  |   64 
 WebApi/Gs.BaseInfo/Services/MesSupplierManager.cs                       |   94 
 WebApi/Gs.Wom/Service/WomdaaManager.cs                                  |  388 +
 WebApi/Gs.Warehouse/Services/MesInvItemInsManager.cs                    |   61 
 WebApi/GS.QC/Service/IpqcXunManager.cs                                  |    5 
 WebApi/Gs.QiTaCk/MesSctkSqDjManager.cs                                  |    3 
 WebApi/Gs.Sys/Services/SysLogController.cs                              |   77 
 WebApi/Gs.Sys/Models/SysLogOperation.cs                                 |  109 
 WebApi/Gs.Warehouse/Services/MesInvItemArnManager.cs                    |  213 +
 WebApi/Gs.Wom/Service/WomcaaManager.cs                                  |   62 
 WebApi/Gs.BaseInfo/Services/PrintInfoManager.cs                         |    2 
 WebApi/Gs.JJGZ/MesJjgzReportController.cs                               |  169 +
 WebApi/Gs.Sys/Services/MesConfigController.cs                           |   94 
 WebApi/Gs.Entity/BaseInfo/MesDepots.cs                                  |    2 
 WebApi/Gs.HostIIS/CustomContractResolver.cs                             |    8 
 WebApi/Gs.Wom/WorkService/MesBackFlashController.cs                     |  214 +
 WebApi/GS.QC/Models/MesQmAql1.cs                                        |    3 
 WebApi/Gs.Sys/Services/MesFileController.cs                             |    1 
 WebApi/Gs.Entity/BaseInfo/MesItemType.cs                                |    0 
 WebApi/Gs.QiTaCk/MesItemQtManager.cs                                    |    9 
 WebApi/GS.QC/Models/MesQmAql4.cs                                        |   46 
 WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomControllerFeatureProvider.cs |   26 
 WebApi/Gs.Toolbox/UtilityHelper.cs                                      |    5 
 WebApi/Gs.Wom/WorkService/WorkWeightController.cs                       |   94 
 WebApi/Gs.Ww/ProductionOrderManager.cs                                  |   13 
 WebApi/Gs.JJGZ/MesJjgzErrorJsController.cs                              |  496 ++
 WebApi/GS.QC/Service/MesQmAql4Manager .cs                               |   10 
 WebApi/GS.QC/Service/MesDefectCodeManager.cs                            |   70 
 WebApi/Gs.HostIIS/appsettings.json                                      |    8 
 WebApi/Gs.Sales/SalesManager.cs                                         |   89 
 WebApi/Gs.Wom/Service/WompbaManager.cs                                  |   12 
 WebApi/GS.QC/Service/RkqcfaManager.cs                                   |  331 +
 WebApi/Gs.QiTaRk/MesItemQtrkDjManager.cs                                |   64 
 WebApi/Gs.BaseInfo/Services/MesItemsManager.cs                          |  147 
 WebApi/Gs.BaseInfo/Services/PrintAutoManager.cs                         |  133 
 WebApi/Gs.Sys/Services/OrganizationController.cs                        |  151 
 WebApi/Gs.JJGZ/MesJjgzScheduleController.cs                             |  300 +
 WebApi/Gs.BaseInfo/Services/MesItemTypeManager.cs                       |  150 
 WebApi/Gs.Report/XlsInOutController.cs                                  |  196 +
 WebApi/Gs.Wom/WorkService/WorkTechniqueController.cs                    |    2 
 WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupNames.cs                        |    4 
 WebApi/Gs.Toolbox/InterfaceUtil.cs                                      |   30 
 WebApi/Gs.Sys/Services/UserController.cs                                |   16 
 WebApi/Gs.JJGZ/MesDeToLineController.cs                                 |  310 +
 WebApi/GS.QC/Service/FqcManager.cs                                      |  119 
 WebApi/Gs.HostIIS/RequestAuthorizeAttribute.cs                          |    5 
 WebApi/GS.QC/Service/RkqcSqManager.cs                                   |  414 ++
 94 files changed, 9,325 insertions(+), 774 deletions(-)

diff --git a/WebApi/GS.QC/Models/MesQaMj.cs b/WebApi/GS.QC/Models/MesQaMj.cs
index 5d7ae5c..f374561 100644
--- a/WebApi/GS.QC/Models/MesQaMj.cs
+++ b/WebApi/GS.QC/Models/MesQaMj.cs
@@ -96,4 +96,19 @@
     /// 渚涘簲鍟嗙紪鍙�
     /// </summary>
     [SugarColumn(IsIgnore = true)] public string? suppNo { get; set; }
+
+    /// <summary>
+    /// 瀹℃牳浜�
+    /// </summary>
+    [SugarColumn(IsIgnore = true)] public string? CheckUserName { get; set; }
+
+    /// <summary>
+    /// 鍒涘缓浜�
+    /// </summary>
+    [SugarColumn(IsIgnore = true)] public string? CreateByName { get; set; }
+
+    /// <summary>
+    /// 鏈�鍚庢洿鏂颁汉
+    /// </summary>
+    [SugarColumn(IsIgnore = true)] public string? LastupdateByName { get; set; }
 }
\ No newline at end of file
diff --git a/WebApi/GS.QC/Models/MesQmAql1.cs b/WebApi/GS.QC/Models/MesQmAql1.cs
index 3ef5ae0..d7e3895 100644
--- a/WebApi/GS.QC/Models/MesQmAql1.cs
+++ b/WebApi/GS.QC/Models/MesQmAql1.cs
@@ -144,4 +144,7 @@
 
     [SugarColumn(IsIgnore = true)]
     public List<MesQmAql3> MesQmAql3s { get; set; }
+
+    [SugarColumn(IsIgnore = true)]
+    public List<MesQmAql4> MesQmAql4s { get; set; }
 }
\ No newline at end of file
diff --git a/WebApi/GS.QC/Models/MesQmAql4.cs b/WebApi/GS.QC/Models/MesQmAql4.cs
new file mode 100644
index 0000000..3550d1b
--- /dev/null
+++ b/WebApi/GS.QC/Models/MesQmAql4.cs
@@ -0,0 +1,46 @@
+锘縰sing SqlSugar;
+
+namespace GS.QC.Models;
+
+/// <summary>
+///     AQL鎶芥牱鍩哄噯鎶芥牱鏂规
+/// </summary>
+[SugarTable("MES_QM_AQL4")]
+public class MesQmAql4
+{
+   /// <summary>
+   ///     榛樿鍊�: (newid())
+   /// </summary>
+   [SugarColumn(ColumnName = "guid", IsPrimaryKey = true)]
+    public Guid Guid { get; set; }
+
+   /// <summary>
+   ///     AQL鎶芥牱鍩哄噯ID
+   /// </summary>
+   [SugarColumn(ColumnName = "AQL1_ID")]
+    public Guid? Aql1Id { get; set; }
+
+    /// <summary>
+    ///     AQL绫诲瀷(CR)
+    /// </summary>
+    [SugarColumn(ColumnName = "AQL_TYPE_CR")]
+    public string? AqlTypeCr { get; set; }
+
+    /// <summary>
+    ///     AQL绫诲瀷(MA)
+    /// </summary>
+    [SugarColumn(ColumnName = "AQL_TYPE_MA")]
+    public string? AqlTypeMa { get; set; }
+
+    /// <summary>
+    ///     AQL绫诲瀷(MI)
+    /// </summary>
+    [SugarColumn(ColumnName = "AQL_TYPE_MI")]
+    public string? AqlTypeMi { get; set; }
+
+    /// <summary>
+    ///     鎷掓敹姘村钩
+    /// </summary>
+    [SugarColumn(ColumnName = "fac_level")]
+    public string? FacLevel { get; set; }
+}
\ No newline at end of file
diff --git a/WebApi/GS.QC/Service/FqcExceptionalManager.cs b/WebApi/GS.QC/Service/FqcExceptionalManager.cs
index af60bd3..f6ff373 100644
--- a/WebApi/GS.QC/Service/FqcExceptionalManager.cs
+++ b/WebApi/GS.QC/Service/FqcExceptionalManager.cs
@@ -79,7 +79,6 @@
             {
                 LogHelper.Debug(ToString(), ex.Message);
             }
-
             return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
                 ReturnCode.Success, "璇诲彇鎴愬姛");
         }
diff --git a/WebApi/GS.QC/Service/FqcItemsManager.cs b/WebApi/GS.QC/Service/FqcItemsManager.cs
new file mode 100644
index 0000000..fa7c3d7
--- /dev/null
+++ b/WebApi/GS.QC/Service/FqcItemsManager.cs
@@ -0,0 +1,476 @@
+锘縰sing Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json.Linq;
+using System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
+using System.Security.Cryptography.X509Certificates;
+using System.Text;
+using static Gs.Toolbox.UtilityHelper;
+
+namespace GS.QC.Service
+{
+    [ApiGroup(ApiGroupNames.QC)]
+    public class FqcItemsManager : IRomteService
+    {
+        private readonly IHttpContextAccessor _http;
+        private readonly string _userCode, _userGuid, _orgFids;
+
+        public FqcItemsManager(IHttpContextAccessor httpContextAccessor)
+        {
+            _http = httpContextAccessor;
+            (_userCode, _userGuid, _orgFids) =
+                GetUserGuidAndOrgGuid(_http);
+        }
+
+        /// <summary>
+        ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetListPage([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            SqlParameter[] parameters =
+            {
+                new("@inCurrentPage", currentPage),
+                new("@inEveryPageSize", everyPageSize),
+                new("@inSortName", sortName),
+                new("@inSortOrder", ""),
+                new("@inQueryWhere", keyWhere),
+                new("@inFid", ""),
+                new("@inP1", ""),
+                new("@inP2", ""),
+                new("@inP3", ""),
+                new("@inP4", "")
+            };
+            var dset = new DataSet();
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("prc_fqc_items_lst", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+                {
+                    var intTotal =
+                        int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dset.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+                return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+              ReturnCode.Exception, ex.Message);
+            }
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+        /// <summary>
+        ///     璇诲彇鍗曚釜瀹炰綋
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
+        {
+            string guid = model.guid.ToString();
+            dynamic m = new ExpandoObject();
+            m.list = new List<dynamic>();
+            m.list2 = new List<dynamic>();
+            
+            try
+            {
+                // 鏌ヨ涓昏〃鏁版嵁
+                string sqlMain = $"SELECT A.*,B.Name as OrgName,C.staff_name AS JY_NAME FROM MES_FQC_ITEMS A LEFT JOIN SYS_ORGANIZATION b  ON A.OrgId = b.FID LEFT JOIN MES_STAFF C ON C.staff_no = A.JY_USER  WHERE a.GUID='{guid}'";
+                var dsMain = DbHelperSQL.Query(sqlMain);
+                if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+                {
+                    var dr = dsMain.Tables[0].Rows[0];
+                    m = dr.RowToDynamic();
+                }
+
+                // 鏌ヨ瀛愯〃1鏁版嵁
+                string sqlDetail1 = $"SELECT * FROM MES_FQC_ITEM_DETAIL1 WHERE PID='{guid}' ORDER BY Seq";
+                var dsDetail1 = DbHelperSQL.Query(sqlDetail1);
+                if (dsDetail1 != null && dsDetail1.Tables.Count > 0)
+                {
+                    var _tb = dsDetail1.Tables[0].TableToDynamicList();
+                    m.list = _tb;
+                }
+
+                // 鏌ヨ瀛愯〃2鏁版嵁
+                string sqlDetail2 = $"SELECT * FROM MES_FQC_ITEM_DETAIL2 WHERE PID='{guid}' ORDER BY Seq";
+                var dsDetail2 = DbHelperSQL.Query(sqlDetail2);
+                if (dsDetail2 != null && dsDetail2.Tables.Count > 0)
+                {
+                    var _tb2 = dsDetail2.Tables[0].TableToDynamicList();
+                    m.list2 = _tb2;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+            
+            if (m != null)
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+        }
+
+        /// <summary>
+        ///     澧炲姞鎴栫紪杈戝疄浣�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model)
+        {
+            Guid? guid = model.guid; //涓婚敭
+            string fqcNo = model.fqcNo; // 妫�楠屽崟鍙�
+            string workShop = model.workShop; // 鐢熶骇杞﹂棿
+            string itemName = model.itemName; // 浜у搧鍚嶇О
+            string itemModel = model.itemModel; // 瑙勬牸鍨嬪彿
+            string brand = model.brand; // 鍟嗘爣
+            
+            // 澶勭悊鐢熶骇鏃ユ湡锛屽厑璁镐负绌�
+            DateTime? productionDate = null;
+            if (model.productionDate != null && !string.IsNullOrEmpty(model.productionDate.ToString()))
+            {
+                if (DateTime.TryParse(model.productionDate.ToString(), out DateTime parsedDate))
+                {
+                    productionDate = parsedDate;
+                }
+            }
+            
+            string acRe_A = model.acRe_A; // AC/Re A绫�
+            string acRe_B = model.acRe_B; // AC/Re B绫�
+            string acRe_C = model.acRe_C; // AC/Re C绫�
+            string sampleMethod = model.sampleMethod; // 鎶芥牱
+            string sampleSize1 = model.sampleSize1; // 鍖�閫熸娊鏍烽��
+            string sampleSize2 = model.sampleSize2; // 闅忔満鎶芥牱鏁�
+            string sampleSize3 = model.sampleSize3; // 鏍锋湰鏁�
+            string temperature = model.temperature; // 瀹ゆ俯
+            string voltage = model.voltage; // 鐢靛帇
+            string classes = model.classes; // 鐝
+            string lineNo = model.lineNo; // 绾垮彿
+            string batch = model.batch; // 鎵归噺
+            string checkResult = model.checkResult; // 妫�楠岀粨鏋�
+            string processResults = model.processResults; // 澶勭悊缁撴灉
+
+            // 娣诲姞妫�楠屼汉銆佸鏍镐汉銆佸鎵逛汉鍙婂搴旂殑鏃ユ湡
+            string jyUser = model.jyUser; // 妫�楠屼汉
+            string checkUser = model.checkUser; // 瀹℃牳浜�
+            string spUser = model.spUser; // 瀹℃壒浜�
+            
+            // 澶勭悊妫�楠屾棩鏈燂紝鍏佽涓虹┖
+            DateTime? jyDate = null;
+            if (model.jyDate != null && !string.IsNullOrEmpty(model.jyDate.ToString()))
+            {
+                if (DateTime.TryParse(model.jyDate.ToString(), out DateTime parsedJyDate))
+                {
+                    jyDate = parsedJyDate;
+                }
+            }
+            
+            // 澶勭悊瀹℃牳鏃ユ湡锛屽厑璁镐负绌�
+            DateTime? checkDate = null;
+            if (model.checkDate != null && !string.IsNullOrEmpty(model.checkDate.ToString()))
+            {
+                if (DateTime.TryParse(model.checkDate.ToString(), out DateTime parsedCheckDate))
+                {
+                    checkDate = parsedCheckDate;
+                }
+            }
+            
+            // 澶勭悊瀹℃壒鏃ユ湡锛屽厑璁镐负绌�
+            DateTime? spDate = null;
+            if (model.spDate != null && !string.IsNullOrEmpty(model.spDate.ToString()))
+            {
+                if (DateTime.TryParse(model.spDate.ToString(), out DateTime parsedSpDate))
+                {
+                    spDate = parsedSpDate;
+                }
+            }
+
+            // 鏋勫缓瀛愯〃1鏁版嵁瀛楃涓�
+            var _sb1 = new StringBuilder();
+            var _split = "|";
+            foreach (var m in model.list1)
+            {
+                string _guid = m.Guid.ToString();
+                var _line = m.RPB001 + _split
+                                + m.RPB003 + _split
+                                + m.RPB004 + _split
+                                + m.RPB005 + _split
+                                + m.RPB006 + _split
+                                + m.RPB007 + _split
+                                + m.RPB008 + _split
+                                + m.RPB009 + _split
+                                + m.RPB010 + _split
+                                + m.RPB011 + _split
+                                + m.RPB012 + _split
+                                + m.RPB013 + _split
+                                + m.RPB014 + _split
+                                + m.RPB015 + _split
+                                + m.RPB016 + _split
+                                + m.RPB017 + _split
+                                + m.RPB018 + _split
+                                + m.RPB019 + _split
+                                + m.RPB020 + _split
+                                + m.Remark + _split
+                                + (CheckGuid(_guid) ? _guid : Guid.Empty.ToString()) + _split
+                                + m.Seq;
+                if (_sb1.Length > 0)
+                    _sb1.Append("~");
+                _sb1.Append(_line);
+            }
+
+            // 鏋勫缓瀛愯〃2鏁版嵁瀛楃涓�
+            var _sb2 = new StringBuilder();
+            foreach (var m in model.list2)
+            {
+                string _guid = m.Guid.ToString();
+                var _line = m.Seq + _split
+                                + m.Description + _split
+                                + m.AClass + _split
+                                + m.BClass + _split
+                                + m.CClass + _split
+                                + m.Point + _split
+                                + m.Remark + _split
+                                + (CheckGuid(_guid) ? _guid : Guid.Empty.ToString());
+                if (_sb2.Length > 0)
+                    _sb2.Append("~");
+                _sb2.Append(_line);
+            }
+
+            dynamic mObj = new ExpandoObject();
+            mObj.outMsg = "";
+            mObj.outSum = -1;
+            mObj.outGuid = "";
+            mObj.outNo = "";
+            
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand("[prc_fqc_items_edt]", conn))
+                {
+                    try
+                    {
+                        conn.Open();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters =
+                        {
+                            new("@outMsg", SqlDbType.NVarChar, 300),
+                            new("@outSum", SqlDbType.Int),
+                            new("@outGuid", SqlDbType.UniqueIdentifier),
+                            new("@outNo", SqlDbType.NVarChar, 300),
+                            new("@inOrderGuid", CheckGuid(guid) ? guid : DBNull.Value),
+                            new("@inFQCNo", fqcNo),
+                            new("@inWorkShop", workShop),
+                            new("@inItemName", itemName),
+                            new("@inItemModel", itemModel),
+                            new("@inBrand", brand),
+                            new("@inProductionDate", productionDate.HasValue ? (object)productionDate.Value : DBNull.Value),
+                            new("@inAcRe_A", acRe_A),
+                            new("@inAcRe_B", acRe_B),
+                            new("@inAcRe_C", acRe_C),
+                            new("@inSampleMethod", sampleMethod),
+                            new("@inSampleSize1", sampleSize1),
+                            new("@inSampleSize2", sampleSize2),
+                            new("@inSampleSize3", sampleSize3),
+                            new("@inTemperature", temperature),
+                            new("@inVoltage", voltage),
+                            new("@inClasses", classes),
+                            new("@inLineNo", lineNo),
+                            new("@inBatch", batch),
+                            new("@inCheckResult", checkResult),
+                            new("@inProcessResults", processResults),
+                            // 娣诲姞妫�楠屼汉銆佸鏍镐汉銆佸鎵逛汉鍙婂搴旂殑鏃ユ湡鍙傛暟
+                            new("@inJyUser", jyUser),
+                            new("@inCheckUser", checkUser),
+                            new("@inSpUser", spUser),
+                            new("@inJyDate", jyDate.HasValue ? (object)jyDate.Value : DBNull.Value),
+                            new("@inCheckDate", checkDate.HasValue ? (object)checkDate.Value : DBNull.Value),
+                            new("@inSpDate", spDate.HasValue ? (object)spDate.Value : DBNull.Value),
+                            new("@inEdtUserGuid", _userGuid),
+                            new("@inDetail1List", _sb1.ToString()),
+                            new("@inDetail2List", _sb2.ToString())
+                        };
+                        parameters[0].Direction = ParameterDirection.Output;
+                        parameters[1].Direction = ParameterDirection.Output;
+                        parameters[2].Direction = ParameterDirection.Output;
+                        parameters[3].Direction = ParameterDirection.Output;
+                        foreach (var parameter in parameters)
+                            cmd.Parameters.Add(parameter);
+                        cmd.ExecuteNonQuery();
+                        mObj.outMsg = parameters[0].Value.ToString();
+                        mObj.outSum = int.Parse(parameters[1].Value.ToString());
+                        mObj.outGuid = parameters[2].Value.ToString();
+                        mObj.outNo = parameters[3].Value.ToString();
+                    }
+                    catch (Exception ex)
+                    {
+                        LogHelper.Debug(ToString(),
+                            "prc_fqc_items_edt error锛�" + ex.Message);
+                        mObj.outMsg = ex.Message;
+                        mObj.outSum = -1;
+                    }
+                    finally
+                    {
+                        conn.Close();
+                    }
+                }
+            }
+            if (mObj.outSum <= 0)
+                return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
+            return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg);
+        }
+
+        /// <summary>
+        ///     鍒犻櫎涓昏〃鍙婃槑缁�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<int?> DeleteModel([FromBody] dynamic model)
+        {
+            int? rtnInt = (int)ReturnCode.Default;
+            Guid? guid = model.guid;
+            var _outMsg = "";
+            var _outSum = -1;
+            try
+            {
+                if (CheckGuid(guid))
+                {
+                    string sql = $@"
+                        DELETE FROM MES_FQC_ITEM_DETAIL1 WHERE PID='{guid}';
+                        DELETE FROM MES_FQC_ITEM_DETAIL2 WHERE PID='{guid}';
+                        DELETE FROM MES_FQC_ITEMS WHERE GUID='{guid}';";
+                    _outSum = DbHelperSQL.ExecuteSql(sql);
+                    _outMsg = _outSum > 0 ? "鍒犻櫎鎴愬姛锛�" : "鏈垹闄や换浣曟暟鎹�";
+                }
+                else
+                {
+                    _outMsg = "涓婚敭涓嶈兘涓虹┖锛�";
+                    _outSum = -1;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), "DeleteModel error锛�" + ex.Message);
+                _outMsg = ex.Message;
+                _outSum = -1;
+            }
+            if (_outSum <= 0)
+                return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, _outMsg);
+            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, _outMsg);
+        }
+
+
+        /// <summary>
+        /// 鎴愬搧妫�楠屾姤琛�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetCPMX([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            SqlParameter[] parameters =
+            {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+        };
+            var dset = new DataSet();
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("report_cprkjd", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+                {
+                    var intTotal =
+                        int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dset.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> GetCPMXDetail([FromBody] dynamic model)
+        {
+            dynamic m = new ExpandoObject();
+            m.list = new List<dynamic>();
+
+            string daa001 = model.daa001;
+            SqlParameter[] parameters =
+            {
+                new("@daa001", daa001)
+            };
+            try
+            {
+                var dsMain = DbHelperSQL.RunProcedure("report_cprkjdDetail", parameters, "0");
+                if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+                {
+
+                    m.list = dsMain.Tables[0].TableToDynamicList();
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+            if (m != null)
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+        }
+    }
+}
diff --git a/WebApi/GS.QC/Service/FqcManager.cs b/WebApi/GS.QC/Service/FqcManager.cs
index fe238a4..8a0b5e6 100644
--- a/WebApi/GS.QC/Service/FqcManager.cs
+++ b/WebApi/GS.QC/Service/FqcManager.cs
@@ -148,7 +148,10 @@
             m.list = new List<dynamic>();
             m.list2 = new List<dynamic>();
             System.Text.StringBuilder sb = new StringBuilder();
-            sb.Append("select * from  MES_QA_ITEMS_DETECT_DETAIL12 where parent_guid='" + guid + "' order by fstand asc");
+            sb.Append("select * ,cj.USER_NAME as createByName " +
+                " from  MES_QA_ITEMS_DETECT_DETAIL12 a " +
+                " left join SYS_USER cj on cj.ACCOUNT=a.create_by " +
+                " where parent_guid='" + guid + "' order by fstand asc ");
             sb.Append("   select d13.*,d5.fcheck_item as  fcheckItemd5,d5.ybsl from  MES_QA_ITEMS_DETECT_DETAIL13 d13 left join[dbo].[MES_QA_ITEMS_DETECT_DETAIL5] d5 on d13.parent_guid = d5.guid");
             sb.Append("  where d13.parent_guid = '" + guid + "'");
             sb.Append(" order by d13.fcheck_item asc");
@@ -506,59 +509,7 @@
                 ReturnCode.Success, "璇诲彇鎴愬姛");
         }
 
-        /// <summary>
-        /// 璐ㄩ噺锛屽鏍革紝鍙嶅鏍革紝椹冲洖
-        /// </summary>
-        /// <param name="mode"></param>
-        /// <returns></returns>
-        [RequestMethod(RequestMethods.POST)]
-        public ReturnDto<ExpandoObject> EditModelSubmitZhiLiang([FromBody] dynamic mode)
-        {
-            string _guid = mode.guid;
-            string _inFieldValue = mode.inFieldValue;
-            dynamic m = new ExpandoObject();
-            m.outSum = -1;
-            m.outMsg = "";
-            using (var conn = new SqlConnection(DbHelperSQL.strConn))
-            {
-                using (var cmd = new SqlCommand("fqc_zhiLiang", conn))
-                {
-                    try
-                    {
-                        conn.Open();
-                        cmd.CommandType = CommandType.StoredProcedure;
-                        SqlParameter[] parameters =
-                        {
-                                new("@outMsg", SqlDbType.NVarChar, 300),
-                                new("@outSum", SqlDbType.Int),
-                                new("@inEdtUserGuid", _userGuid),
-                                new("@inOrderGuid", _guid),
-                                new("@inFieldValue",_inFieldValue),
-                                new("@in1", ""),
-                                new("@in2", "")
-                            };
-                        parameters[0].Direction = ParameterDirection.Output;
-                        parameters[1].Direction = ParameterDirection.Output;
-                        foreach (var parameter in parameters)
-                            cmd.Parameters.Add(parameter);
-                        cmd.ExecuteNonQuery();
-                        m.outMsg = parameters[0].Value.ToString();
-                        m.outSum = int.Parse(parameters[1].Value.ToString());
-                    }
-                    catch (Exception ex)
-                    {
-                        LogHelper.Debug(this.ToString(), "fqc_zhiLiang error锛�" + ex.Message);
-                        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, ex.Message);
-                    }
-                    finally
-                    {
-                        conn.Close();
-                    }
-                }
-            }
-            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
-        }
-
+        
 
         /// <summary>
         ///     璇诲彇
@@ -661,7 +612,62 @@
             return GetModel14(dy);
         }
 
-
+        /// <summary>
+        ///     鐢熸垚鎶ュ憡
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<int?> GetBaoGao([FromBody] dynamic model)
+        {
+            int? rtnInt = (int)ReturnCode.Default;
+            Guid? guid = model.guid;
+            var _outMsg = "";
+            var _outSum = -1;
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand("[prc_fqc_items_add]", conn))
+                {
+                    try
+                    {
+                        conn.Open();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters =
+                        {
+                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outSum", SqlDbType.Int),
+                        new("@inOrderGuid",
+                            UtilityHelper.CheckGuid(guid)
+                                ? guid
+                                : DBNull.Value),
+                        new("@inEdtUserGuid", _userGuid),
+                    };
+                        parameters[0].Direction = ParameterDirection.Output;
+                        parameters[1].Direction = ParameterDirection.Output;
+                        foreach (var parameter in parameters)
+                            cmd.Parameters.Add(parameter);
+                        cmd.ExecuteNonQuery();
+                        _outMsg = parameters[0].Value.ToString();
+                        _outSum = int.Parse(parameters[1].Value.ToString());
+                    }
+                    catch (Exception ex)
+                    {
+                        LogHelper.Debug(ToString(),
+                            "prc_QT_del error锛�" + ex.Message);
+                        _outMsg = ex.Message;
+                        _outSum = -1;
+                    }
+                    finally
+                    {
+                        conn.Close();
+                    }
+                }
+            }
+            if (_outSum <= 0)
+                return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception,
+                    _outMsg);
+            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, _outMsg);
+        }
 
         #region 鎻愪氦妫�楠�
         /// <summary>
@@ -673,6 +679,7 @@
         public ReturnDto<ExpandoObject> EditModelSubmit([FromBody] dynamic mode)
         {
             string _guid = mode.guid;
+            string _inFieldValue = mode.inFieldValue;
             dynamic m = new ExpandoObject();
             m.outSum = -1;
             m.outMsg = "";
@@ -690,7 +697,7 @@
                                 new("@outSum", SqlDbType.Int),
                                 new("@inEdtUserGuid", _userGuid),
                                 new("@inOrderGuid", _guid),
-                                new("@inFieldValue", 1),
+                                new("@inFieldValue", _inFieldValue),
                                 new("@in1", ""),
                                 new("@in2", "")
                             };
diff --git a/WebApi/GS.QC/Service/IpqcShouManager.cs b/WebApi/GS.QC/Service/IpqcShouManager.cs
index 78cd33b..05864fc 100644
--- a/WebApi/GS.QC/Service/IpqcShouManager.cs
+++ b/WebApi/GS.QC/Service/IpqcShouManager.cs
@@ -1,13 +1,15 @@
-锘縰sing System.Data;
-using System.Data.SqlClient;
-using System.Dynamic;
-using System.Text;
-using Gs.Toolbox;
+锘縰sing Gs.Toolbox;
 using Gs.Toolbox.ApiCore.Abstract.Mvc;
 using Gs.Toolbox.ApiCore.Common.Mvc;
 using Gs.Toolbox.ApiCore.Group;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
+using System.Text;
 using static Gs.Toolbox.UtilityHelper;
 
 namespace GS.QC.Service
@@ -24,7 +26,6 @@
             (_userCode, _userGuid, _orgFids) =
                 GetUserGuidAndOrgGuid(_http);
         }
-
 
         /// <summary>
         ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
@@ -88,7 +89,7 @@
         }
 
         /// <summary>
-        ///     璇诲彇
+        ///     璇诲彇瀹炰綋
         /// </summary>
         /// <param name="guid"></param>
         /// <returns></returns>
@@ -168,5 +169,275 @@
             return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
                 "璇诲彇澶辫触锛�");
         }
+
+        /// <summary>
+        ///     璇诲彇web瀹炰綋
+        /// </summary>
+        /// <param name="guid"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> GetModelWeb([FromBody] dynamic model)
+        {
+            string guid = model.guid.ToString();
+            dynamic m = new ExpandoObject();
+            SqlParameter[] parameters =
+            {
+            new("@inMainGuid", guid),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+            var dset = new DataSet();
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("[ipqc_shou_get_web]", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0)
+                {
+                    var dr = dset.Tables[0].Rows[0];
+                    m = dr.RowToDynamic();
+                    m.list = new List<dynamic>();
+                    DataTable dtDistinct = (new DataView(dset.Tables[1])).ToTable(true, new string[] { "groupName" });
+                    foreach (DataRow DataRow in dtDistinct.Rows)
+                    {
+                        dynamic _obj = new System.Dynamic.ExpandoObject();
+                        _obj.groupName = DataRow["groupName"].ToString();
+                        _obj.child = new List<dynamic>();
+                        DataRow[] _dtRows = dset.Tables[1].Select("groupName='" + _obj.groupName.ToString() + "'");
+                        if (_dtRows.Length == 0)
+                            continue;
+                        foreach (DataRow _row in _dtRows)
+                        {
+                            dynamic _dy = _row.RowToDynamic();
+                            if (_obj.groupName.ToString() == "鍒剁儹鎬ц兘")
+                            {
+                                //姘存俯閫夋嫨
+                                if (!string.IsNullOrEmpty(_row["ipqc_zrxn_sel1"].ToString()))
+                                    _dy.selectedWater = JsonConvert.DeserializeObject(_row["ipqc_zrxn_sel1"].ToString());
+                                else
+                                    _dy.selectedWater = Array.Empty<string>();
+                                //娴侀噺閫夋嫨
+                                if (!string.IsNullOrEmpty(_row["ipqc_zrxn_sel2"].ToString()))
+                                    _dy.selectedFlow = JsonConvert.DeserializeObject(_row["ipqc_zrxn_sel2"].ToString());
+                                else
+                                    _dy.selectedFlow = Array.Empty<string>();
+                                //琛ㄦ牸鏁版嵁
+                                if (!string.IsNullOrEmpty(_row["ipqc_zrxn_table"].ToString()))
+                                    _dy.selecteTable = JsonConvert.DeserializeObject(_row["ipqc_zrxn_table"].ToString());
+                                else
+                                    _dy.selecteTable = new { };
+                            }
+                            _obj.child.Add(_dy);
+                        }
+                        m.list.Add(_obj);
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+            if (m != null)
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+                    "璇诲彇鎴愬姛锛�");
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+        }
+
+        /// <summary>
+        /// 璁剧疆
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<int?> SetModelWeb([FromBody] dynamic model)
+        {
+            string guid = model.guid;
+            string strSql = model.strSql;
+            string ziduan = model.ziduan;
+            int? rtnInt = (int)ReturnCode.Default;
+            try
+            {
+                System.Text.StringBuilder sbSql = new StringBuilder();
+                //鏈壒鍞竴鐮侀浠跺敮涓�鐮侀鏍锋潯褰㈢爜
+                if (ziduan == "bpwym" || ziduan == "sjwym" || ziduan == "sjtxm")
+                    sbSql.Append(" update dbo.MES_QA_ITEMS_DETECT_01 set " + strSql + " , fcheck_By='" + _userCode + "',fcheck_Date=getdate() where guid='" + guid + "'");
+                else
+                {
+                    sbSql.Append(" update dbo.MES_QA_ITEMS_DETECT_DETAIL5 set " + strSql + " where guid='" + guid + "'");
+                    sbSql.Append(" update dbo.MES_QA_ITEMS_DETECT_01 set fcheck_By='" + _userCode + "',fcheck_Date=getdate() where guid=( select top 1 d5.parent_guid from MES_QA_ITEMS_DETECT_DETAIL5 d5 where d5.guid='" + guid + "' )");
+                }
+                rtnInt = DbHelperSQL.ExecuteSql(sbSql.ToString());
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(this.ToString(), "SetModelWeb  error锛�" + ex.Message);
+                rtnInt = (int)ReturnCode.Exception;
+            }
+            if (rtnInt > 0)
+                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Success, "鎿嶄綔鎴愬姛!");
+            else
+                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鎿嶄綔澶辫触锛岃閲嶈瘯锛�");
+        }
+
+
+        /// <summary>
+        /// 鎻愪氦妫�楠�
+        /// </summary>
+        /// <param name="mode"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> EditModelSubmit([FromBody] dynamic mode)
+        {
+            string _guid = mode.guid;
+            string _inFieldValue = mode.submitType;
+            dynamic m = new ExpandoObject();
+            m.outSum = -1;
+            m.outMsg = "";
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand("ipqc_shou_submit", conn))
+                {
+                    try
+                    {
+                        conn.Open();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters =
+                        {
+                                new("@outMsg", SqlDbType.NVarChar, 300),
+                                new("@outSum", SqlDbType.Int),
+                                new("@inEdtUserGuid", _userGuid),
+                                new("@inOrderGuid", _guid),
+                                new("@inFieldValue", _inFieldValue),
+                                new("@in1", ""),
+                                new("@in2", "")
+                            };
+                        parameters[0].Direction = ParameterDirection.Output;
+                        parameters[1].Direction = ParameterDirection.Output;
+                        foreach (var parameter in parameters)
+                            cmd.Parameters.Add(parameter);
+                        cmd.ExecuteNonQuery();
+                        m.outMsg = parameters[0].Value.ToString();
+                        m.outSum = int.Parse(parameters[1].Value.ToString());
+                    }
+                    catch (Exception ex)
+                    {
+                        m.outMsg = ex.Message;
+                        LogHelper.Debug(this.ToString(), "ipqc_shou_submit error锛�" + ex.Message);
+                        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, ex.Message);
+                    }
+                    finally
+                    {
+                        conn.Close();
+                    }
+                }
+            }
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<int?> UpdateTableConfig([FromBody] dynamic model)
+        {
+            string guid = model.guid;
+            string mxguid = model.mxguid;
+            JArray arrayWater = model.selectedWater;
+            JArray arrayFlow = model.selectedFlow;
+            JObject arrayTable = model.selectedTable;
+            string selectedWater = arrayWater.ToString();
+            string selectedFlow = arrayFlow.ToString();
+            System.Text.StringBuilder tableData = new StringBuilder();
+            tableData.Append("{");
+            foreach (JValue jsonitem in arrayWater)
+            {
+                string jv = jsonitem.ToString().Trim();
+                var _temp = arrayTable[jv]["temp"];
+                if (tableData.Length > 2)
+                    tableData.Append(",");
+                tableData.Append("'" + jv + "':");
+                tableData.Append("{");
+                tableData.Append("'temp':'" + _temp + "'");
+                foreach (JValue volume in arrayFlow)
+                {
+                    var _temp2 = arrayTable[jv][volume.ToString().Trim()];
+                    tableData.Append(",'" + volume.ToString().Trim() + "':'" + _temp2 + "'");
+                }
+                tableData.Append("}");
+            }
+            tableData.Append("}");
+            int? rtnInt = (int)ReturnCode.Default;
+            try
+            {
+                System.Text.StringBuilder sbSql = new StringBuilder();
+                sbSql.Append("UPDATE MES_QA_ITEMS_DETECT_DETAIL5 SET ipqc_zrxn_sel1 = @selectedWater,ipqc_zrxn_sel2 = @selectedFlow, ipqc_zrxn_table = @tableData  WHERE guid = @mxguid");
+                rtnInt = Gs.Toolbox.DbHelperSQL.ExecuteSql(sbSql.ToString(), new SqlParameter[] {
+                    new SqlParameter("@selectedWater", selectedWater),
+                    new SqlParameter("@selectedFlow", selectedFlow),
+                    new SqlParameter("@tableData", tableData.ToString()),
+                    new SqlParameter("@mxguid", mxguid),
+                });
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(this.ToString(), "SetModelWeb  error锛�" + ex.Message);
+                rtnInt = (int)ReturnCode.Exception;
+            }
+            if (rtnInt > 0)
+                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Success, "鎿嶄綔鎴愬姛!");
+            else
+                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鎿嶄綔澶辫触锛岃閲嶈瘯锛�");
+        }
+
+        /// <summary>
+        ///     璇诲彇
+        /// </summary>
+        /// <param name="guid"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> GetModelWebMx([FromBody] dynamic model)
+        {
+            string mxGuid = model.mxGuid.ToString();
+            dynamic m = new ExpandoObject();
+            var dset = new DataSet();
+            try
+            {
+                System.Text.StringBuilder sbSql = new StringBuilder();
+                sbSql.Append("select * from [dbo].[MES_QA_ITEMS_DETECT_DETAIL5] where guid='" + mxGuid + "'");
+                dset = DbHelperSQL.Query(sbSql.ToString());
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0)
+                {
+                    var _row = dset.Tables[0].Rows[0];
+                    //姘存俯閫夋嫨
+                    if (!string.IsNullOrEmpty(_row["ipqc_zrxn_sel1"].ToString()))
+                        m.selectedWater = JsonConvert.DeserializeObject(_row["ipqc_zrxn_sel1"].ToString());
+                    else
+                        m.selectedWater = Array.Empty<string>();
+                    //娴侀噺閫夋嫨
+                    if (!string.IsNullOrEmpty(_row["ipqc_zrxn_sel2"].ToString()))
+                        m.selectedFlow = JsonConvert.DeserializeObject(_row["ipqc_zrxn_sel2"].ToString());
+                    else
+                        m.selectedFlow = Array.Empty<string>();
+                    //琛ㄦ牸鏁版嵁
+                    if (!string.IsNullOrEmpty(_row["ipqc_zrxn_table"].ToString()))
+                        m.selecteTable = JsonConvert.DeserializeObject(_row["ipqc_zrxn_table"].ToString());
+                    else
+                        m.selecteTable = new { };
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+            if (m != null)
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+                    "璇诲彇鎴愬姛锛�");
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+        }
+
     }
 }
diff --git a/WebApi/GS.QC/Service/IpqcXunManager.cs b/WebApi/GS.QC/Service/IpqcXunManager.cs
index 75cab9b..fa2577d 100644
--- a/WebApi/GS.QC/Service/IpqcXunManager.cs
+++ b/WebApi/GS.QC/Service/IpqcXunManager.cs
@@ -144,7 +144,10 @@
             m.list = new List<dynamic>();
             m.list2 = new List<dynamic>();
             StringBuilder sb = new StringBuilder();
-            sb.Append("select * from  MES_QA_ITEMS_DETECT_DETAIL12 where parent_guid='" + guid + "' order by fstand asc");
+            sb.Append("select *  ,cj.USER_NAME as createByName " +
+                " from  MES_QA_ITEMS_DETECT_DETAIL12 a " +
+                " left join SYS_USER cj on cj.ACCOUNT=a.create_by " +
+                " where parent_guid='" + guid + "' order by fstand asc ");
             sb.Append("   select d13.*,d5.fcheck_item as  fcheckItemd5,d5.ybsl from  MES_QA_ITEMS_DETECT_DETAIL13 d13 left join[dbo].[MES_QA_ITEMS_DETECT_DETAIL5] d5 on d13.parent_guid = d5.guid");
             sb.Append("  where d13.parent_guid = '" + guid + "'");
             sb.Append(" order by d13.fcheck_item asc");
diff --git a/WebApi/GS.QC/Service/MesDefectCodeManager.cs b/WebApi/GS.QC/Service/MesDefectCodeManager.cs
index 96d6f31..315385d 100644
--- a/WebApi/GS.QC/Service/MesDefectCodeManager.cs
+++ b/WebApi/GS.QC/Service/MesDefectCodeManager.cs
@@ -1,15 +1,17 @@
-锘縰sing System.Text;
-using GS.QC.Models;
+锘縰sing Gs.Entity.Sys;
 using Gs.Toolbox;
 using Gs.Toolbox.ApiCore.Abstract.Mvc;
 using Gs.Toolbox.ApiCore.Common.Mvc;
 using Gs.Toolbox.ApiCore.Group;
+using GS.QC.Models;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
+using Microsoft.CodeAnalysis.CSharp.Syntax;
 using Newtonsoft.Json.Linq;
+using SqlSugar;
 using System.Data;
 using System.Dynamic;
-using Microsoft.CodeAnalysis.CSharp.Syntax;
+using System.Text;
 
 
 namespace GS.QC.Service;
@@ -41,24 +43,53 @@
         try
         {
             var _sbWhere = new StringBuilder(" 1=1" + query.keyWhere);
-            var _sbBy =
-                new StringBuilder(query.sortName + " " + query.sortOrder);
+            var _sbBy = new StringBuilder(query.sortName + " " + query.sortOrder);
             var totalCount = 0;
-            var itemsList = Db.Queryable<MesDefectCode>("a")
+            var itemsList = Db.Queryable<MesDefectCode, SysUser>(
+                    (a, u) => new object[]
+                    {
+                        JoinType.Left, a.LastupdateBy == u.Account
+                    })
                 .Where(_sbWhere.ToString())
                 .OrderBy(_sbBy.ToString())
-                .ToPageList(query.currentPage, query.everyPageSize,
-                    ref totalCount);
+.Select((a, u) => new MesDefectCode
+{
+    Guid = a.Guid,
+    DefectCode = a.DefectCode,
+    DefectName = a.DefectName,
+    Memo = a.Memo,
+    DefectSort = a.DefectSort,
+    DefectRate = a.DefectRate,
+    CreateBy = a.CreateBy,
+    CreateDate = a.CreateDate,
 
-            pageList = new PageList<MesDefectCode>(itemsList, totalCount,
-                query.everyPageSize);
-            return ReturnDto<PageList<MesDefectCode>>.QuickReturn(pageList,
-                ReturnCode.Success, "璇诲彇鎴愬姛");
+    LastupdateBy = u.UserName, // 杩欓噷鐢ㄥ鍚嶆浛鎹㈣处鍙�
+    LastupdateDate = a.LastupdateDate,
+    WorkshopCenterCode = a.WorkshopCenterCode,
+    WorkshopCenterName = a.WorkshopCenterName,
+    ProcNo = a.ProcNo,
+    DOrder = a.DOrder,
+    SType = a.SType,
+    Type1 = a.Type1,
+    Type2 = a.Type2,
+    Type3 = a.Type3,
+    Type4 = a.Type4,
+    Type5 = a.Type5,
+    Type6 = a.Type6,
+    Type7 = a.Type7,
+    Type8 = a.Type8,
+    Pid = a.Pid
+})
+                .Where(_sbWhere.ToString())
+                .OrderBy(_sbBy.ToString())
+                .ToPageList(query.currentPage, query.everyPageSize, ref totalCount);
+
+            pageList = new PageList<MesDefectCode>(itemsList, totalCount, query.everyPageSize);
+            return ReturnDto<PageList<MesDefectCode>>.QuickReturn(pageList, ReturnCode.Success, "璇诲彇鎴愬姛");
         }
         catch (Exception ex)
         {
-            return ReturnDto<PageList<MesDefectCode>>.QuickReturn(pageList,
-                ReturnCode.Default, ex.Message);
+            return ReturnDto<PageList<MesDefectCode>>.QuickReturn(pageList, ReturnCode.Default, ex.Message);
         }
     }
 
@@ -240,10 +271,17 @@
         sbSql.Append(" left join [dbo].[SYS_ORGANIZATION] org on org.FID=f.FSubsidiary");
         sbSql.Append(" where 1=1 and bind.userGuid='" + guid + "' and bind.fType='鍛樺伐鍒嗗尯'");
         sbSql.Append(" select bind.guid,bind.fType ,f.item_id,f.item_no,f.item_name,org.NAME as orgName,q.defect_name");
-        sbSql.Append(" from [dbo].[SYS_USER_BIND] bind left join MES_ITEMS f on bind.aboutGuid=f.guid");
+        sbSql.Append(" from [dbo].[SYS_USER_BIND] bind left join MES_ITEMS f on bind.aboutGuid=f.item_id");
         sbSql.Append(" left join [dbo].[MES_DEFECT_CODE] q on bind.userGuid=q.guid");
         sbSql.Append(" left join [dbo].[SYS_ORGANIZATION] org on org.FID=f.FSubsidiary");
         sbSql.Append(" where 1=1 and bind.userGuid='" + guid + "' and bind.fType='鐗╂枡鍒嗗尯'");
+        sbSql.Append("  select bind.guid,bind.fType  ,u.depot_section_code,u.depot_section_name");
+        sbSql.Append("  ,org.NAME as orgName ,q.defect_name from [dbo].[SYS_USER_BIND] bind ");
+        sbSql.Append("  left join MES_DEPOT_SECTIONS u on bind.aboutGuid=u.depot_section_code ");
+        sbSql.Append("  left join MES_DEPOTS f on u.depot_guid=f.depot_id");
+        sbSql.Append(" left join [dbo].[MES_DEFECT_CODE] q on bind.userGuid=q.guid ");
+        sbSql.Append(" left join [dbo].[SYS_ORGANIZATION] org on org.FID=f.FSubsidiary ");
+        sbSql.Append(" where 1=1 and bind.userGuid='" + guid + "' and bind.fType='搴撲綅'");
         try
         {
             dset = DbHelperSQL.Query(sbSql.ToString());
@@ -256,6 +294,8 @@
                 m.list = _tb;
                 var _tb2 = dset.Tables[2].TableToDynamicList();
                 m.list2 = _tb2;
+                var _tb3 = dset.Tables[3].TableToDynamicList();
+                m.list3 = _tb3;
             }
         }
         catch (Exception ex)
diff --git a/WebApi/GS.QC/Service/MesQaItemsDetect01Manager.cs b/WebApi/GS.QC/Service/MesQaItemsDetect01Manager.cs
index 650684c..83c3e97 100644
--- a/WebApi/GS.QC/Service/MesQaItemsDetect01Manager.cs
+++ b/WebApi/GS.QC/Service/MesQaItemsDetect01Manager.cs
@@ -146,7 +146,10 @@
         m.list = new List<dynamic>();
         m.list2 = new List<dynamic>();
         System.Text.StringBuilder sb = new StringBuilder();
-        sb.Append("select * from  MES_QA_ITEMS_DETECT_DETAIL12 where parent_guid='" + guid + "' order by fstand asc");
+        sb.Append("select * ,cj.USER_NAME as createByName " +
+            "from  MES_QA_ITEMS_DETECT_DETAIL12 a " +
+            "left join SYS_USER cj on cj.ACCOUNT=a.create_by " +
+            "where parent_guid='" + guid + "' order by fstand asc");
         sb.Append("   select d13.*,d5.fcheck_item as  fcheckItemd5,d5.ybsl from  MES_QA_ITEMS_DETECT_DETAIL13 d13 left join[dbo].[MES_QA_ITEMS_DETECT_DETAIL5] d5 on d13.parent_guid = d5.guid");
         sb.Append("  where d13.parent_guid = '" + guid + "'");
         sb.Append(" order by d13.fcheck_item asc");
@@ -299,7 +302,10 @@
     public ReturnDto<string> EditModel([FromBody] dynamic model)
     {
         Guid? guid = model.guid; //鍒拌揣鍗曚富閿�
-        string fngDesc = model.fngDesc; //澶囨敞
+        string fngDesc = model.fngDesc; //寮傚父鎻忚堪
+        string iqcRemark = model.iqcRemark;
+        string ckId=model.ckId;
+        string iqcXblb = model.iqcXblb;
         var _outMsg = "";
         var _outSum = -1;
         using (var conn = new SqlConnection(DbHelperSQL.strConn))
@@ -317,6 +323,9 @@
                         new("@inEdtUserGuid", _userGuid),
                         new("@inOrderGuid", UtilityHelper.CheckGuid(guid) ? guid: DBNull.Value),
                         new("@fngDesc", fngDesc),
+                        new("@ckId", ckId),
+                        new("@iqcRemark", iqcRemark),
+                        new("@iqcXblb", iqcXblb),
                     };
                     parameters[0].Direction = ParameterDirection.Output;
                     parameters[1].Direction = ParameterDirection.Output;
diff --git a/WebApi/GS.QC/Service/MesQaMjManager.cs b/WebApi/GS.QC/Service/MesQaMjManager.cs
index 2de656b..98ee4df 100644
--- a/WebApi/GS.QC/Service/MesQaMjManager.cs
+++ b/WebApi/GS.QC/Service/MesQaMjManager.cs
@@ -46,21 +46,28 @@
             var _sbBy =
                 new StringBuilder(query.sortName + " " + query.sortOrder);
             var totalCount = 0;
-            var itemsList = Db.Queryable<MesQaMj, MesItems, SysOrganization, MesSupplier>(
-                    (a, b, org, d) => new JoinQueryInfos(
+            var itemsList = Db.Queryable<MesQaMj, MesItems, SysOrganization, MesSupplier, SysUser, SysUser, SysUser>(
+                    (a, b, org, d, u1, u2, u3) => new JoinQueryInfos(
                         JoinType.Inner, a.ItemId == b.Id,
                         JoinType.Inner, b.FSubsidiary == org.Fid,
-                        JoinType.Left, a.SuppId == d.Id.ToString()
+                        JoinType.Left, a.SuppId == d.Id.ToString(),
+                        JoinType.Left, a.CheckUser == u1.Account,
+                        JoinType.Left, a.CreateBy == u2.Account,
+                        JoinType.Left, a.LastupdateBy == u3.Account
                     ))
                  .Where(_sbWhere.ToString())
                  .OrderBy(_sbBy.ToString())
-                .Select((a, b, org, d) => new MesQaMj
+                .Select((a, b, org, d, u1, u2, u3) => new MesQaMj
                 {
                     FSubsidiary = "(" + org.FNumber + ") " + org.Name,
                     Guid = a.Guid.SelectAll(),
                     gysName = d.SuppName,
                     itemName = b.ItemName,
-                    suppNo = d.SuppNo
+                    suppNo = d.SuppNo,
+                    // 鏂板锛氬鏍镐汉銆佸垱寤轰汉銆佹渶鍚庢洿鏂颁汉濮撳悕
+                    CheckUserName = u1.UserName,
+                    CreateByName = u2.UserName,
+                    LastupdateByName = u3.UserName
                 })
                 .ToPageList(query.currentPage, query.everyPageSize,
                     ref totalCount);
@@ -103,6 +110,25 @@
         {
             LogHelper.Debug(ToString(), "GetModel error锛�" + ex.Message);
         }
+
+        // 鏂板锛氳仈鏌ysUser鑾峰彇CheckUser鍜孡astupdateBy鐨勫鍚�
+        if (!string.IsNullOrEmpty(m.CheckUser))
+        {
+            var checkUserName = Db.Queryable<SysUser>()
+                .Where(u => u.Account == m.CheckUser)
+                .Select(u => u.UserName)
+                .First();
+            m.CheckUser = checkUserName ?? m.CheckUser;
+        }
+        if (!string.IsNullOrEmpty(m.LastupdateBy))
+        {
+            var lastupdateByName = Db.Queryable<SysUser>()
+                .Where(u => u.Account == m.LastupdateBy)
+                .Select(u => u.UserName)
+                .First();
+            m.LastupdateBy = lastupdateByName ?? m.LastupdateBy;
+        }
+
         if (m != null)
             return ReturnDto<MesQaMj>.QuickReturn(m,
                 ReturnCode.Success, "璇诲彇鎴愬姛锛�");
diff --git a/WebApi/GS.QC/Service/MesQmAql1Manager.cs b/WebApi/GS.QC/Service/MesQmAql1Manager.cs
index 48be9d9..6d7bd5d 100644
--- a/WebApi/GS.QC/Service/MesQmAql1Manager.cs
+++ b/WebApi/GS.QC/Service/MesQmAql1Manager.cs
@@ -1,12 +1,13 @@
-锘縰sing System.Text;
-using GS.QC.Models;
-using Gs.Toolbox;
+锘縰sing Gs.Toolbox;
 using Gs.Toolbox.ApiCore.Abstract.Mvc;
 using Gs.Toolbox.ApiCore.Common.Mvc;
 using Gs.Toolbox.ApiCore.Group;
+using GS.QC.Models;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
 using Newtonsoft.Json.Linq;
+using System.Linq;
+using System.Text;
 
 namespace GS.QC.Service;
 
@@ -18,6 +19,7 @@
 
     private readonly MesQmAql2Manager _mesQmAql2Manager;
     private readonly MesQmAql3Manager _mesQmAql3Manager;
+    private readonly MesQmAql4Manager _mesQmAql4Manager;
 
     private readonly string _userCode, _userGuid, _orgFids;
     public MesQmAql1Manager(IHttpContextAccessor httpContextAccessor)
@@ -26,6 +28,7 @@
 
         _mesQmAql2Manager = new MesQmAql2Manager();
         _mesQmAql3Manager = new MesQmAql3Manager();
+        _mesQmAql4Manager = new MesQmAql4Manager();
 
         (_userCode, _userGuid, _orgFids) =
             UtilityHelper.GetUserGuidAndOrgGuid(_http);
@@ -56,6 +59,14 @@
         return ReturnDto<PageList<MesQmAql1>>.QuickReturn(pageList,
             ReturnCode.Success, "璇诲彇鎴愬姛");
     }
+    // 瀹氫箟 AQL 鏍囧噯椤哄簭
+    private static readonly Dictionary<decimal, int> _aqlOrder = new Dictionary<decimal, int>
+{
+    { 0.0100m, 1 }, { 0.0150m, 2 }, { 0.0250m, 3 }, { 0.0400m, 4 }, { 0.0650m, 5 },
+    { 0.1000m, 6 }, { 0.1500m, 7 }, { 0.2500m, 8 }, { 0.4000m, 9 }, { 0.6500m, 10 },
+    { 1.0000m, 11 }, { 1.5000m, 12 }, { 2.5000m, 13 }, { 4.0000m, 14 }, { 6.5000m, 15 },
+    { 10.0000m, 16 }
+};
 
     /// <summary>
     ///     鏍规嵁涓昏〃id璇诲彇涓昏〃鍜屽瓙琛�
@@ -77,6 +88,12 @@
             .Where(a => a.Aql1Id == m.Guid)
             .OrderBy(a => a.SampleSizeWord)
             .ToList();
+        m.MesQmAql4s = Db.Queryable<MesQmAql4>()
+            .Where(a => a.Aql1Id == m.Guid)
+            .ToList()
+            .OrderBy(a => a.FacLevel)
+            .ToList();
+
         if (m != null)
             return ReturnDto<MesQmAql1>.QuickReturn(m,
                 ReturnCode.Success, "璇诲彇鎴愬姛锛�");
@@ -186,6 +203,34 @@
                     .ExecuteCommand();
             }
 
+            if (model.MesQmAql4s is { Count: > 0 })
+            {
+                var _upLst = new List<MesQmAql4>();
+                var _addLst = new List<MesQmAql4>();
+                foreach (var m in model.MesQmAql4s)
+                    if (UtilityHelper.CheckGuid(m.Guid))
+                    {
+                        m.Aql1Id = model.Guid;
+                        _upLst.Add(m);
+                    }
+                    else
+                    {
+                        m.Guid = Guid.NewGuid();
+                        m.Aql1Id = model.Guid;
+                        _addLst.Add(m);
+                    }
+
+                if (_upLst is { Count: > 0 })
+                {
+                    var guids = _upLst.Select(t => t.Guid).ToArray();
+                    Db.Deleteable<MesQmAql4>().In(guids).ExecuteCommand();
+                    _addLst.AddRange(_upLst);
+                }
+
+                Db.Insertable(_addLst).PageSize(1).IgnoreColumnsNull()
+                    .ExecuteCommand();
+            }
+
             Db.Ado.CommitTran();
         }
         catch (Exception ex)
diff --git a/WebApi/GS.QC/Service/MesQmAql4Manager .cs b/WebApi/GS.QC/Service/MesQmAql4Manager .cs
new file mode 100644
index 0000000..f694a32
--- /dev/null
+++ b/WebApi/GS.QC/Service/MesQmAql4Manager .cs
@@ -0,0 +1,10 @@
+锘縰sing GS.QC.Models;
+using Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+
+namespace GS.QC.Service;
+
+public class MesQmAql4Manager : Repository<MesQmAql4>,
+    IRomteService
+{
+}
\ No newline at end of file
diff --git a/WebApi/GS.QC/Service/MesQmCheckitemManager.cs b/WebApi/GS.QC/Service/MesQmCheckitemManager.cs
index a4b217a..2d66b6d 100644
--- a/WebApi/GS.QC/Service/MesQmCheckitemManager.cs
+++ b/WebApi/GS.QC/Service/MesQmCheckitemManager.cs
@@ -13,6 +13,8 @@
 using System.Data;
 using System.Data.SqlClient;
 using System.Dynamic;
+using Gs.BaseInfo.Models;
+
 
 namespace GS.QC.Service;
 
@@ -43,22 +45,27 @@
         var _sbWhere = new StringBuilder(" 1=1 " + query.keyWhere);
         var _sbBy = new StringBuilder(query.sortName + " " + query.sortOrder);
         var totalCount = 0;
-        var itemsList = Db.Queryable<MesQmCheckitem, MesItems, SysOrganization>(
-                (a, b, org) => new object[]
+        var itemsList = Db.Queryable<MesQmCheckitem, MesItems, SysOrganization, SysUser, SysUser>(
+                (a, b, org, u1, u2) => new object[]
                 {
                     JoinType.Left, a.ItemId == b.Id,
-                    JoinType.Left, b.FSubsidiary == org.Fid
-                }).Select((a, b, org) => new MesQmCheckitem
-                {
-                    FSubsidiary = "(" + org.FNumber + ")" + org.Name,
-                    mc = b.ItemName,
-                    gg = b.ItemModel,
-                    ItemNo = b.ItemNo,
-                }, true)
+                    JoinType.Left, b.FSubsidiary == org.Fid,
+                    JoinType.Left, a.FoneCheckor == u1.Account,
+                    JoinType.Left, a.CreateBy == u2.Account
+                })
+            .Select((a, b, org, u1, u2) => new MesQmCheckitem
+            {
+                FSubsidiary = "(" + org.FNumber + ")" + org.Name,
+                mc = b.ItemName,
+                gg = b.ItemModel,
+                ItemNo = b.ItemNo,
+                // 鏂板锛氬鎵逛汉濮撳悕銆佸埗鍗曚汉濮撳悕
+                FoneCheckor = u1.UserName,
+                CreateBy = u2.UserName
+            }, true)
             .Where(_sbWhere.ToString())
             .OrderBy(_sbBy.ToString())
-            .ToPageList(query.currentPage, query.everyPageSize,
-                ref totalCount);
+            .ToPageList(query.currentPage, query.everyPageSize, ref totalCount);
 
         var pageList = new PageList<MesQmCheckitem>(itemsList, totalCount,
             query.everyPageSize);
@@ -75,7 +82,9 @@
     public ReturnDto<MesQmCheckitem> GetModel(
         [FromBody] MesQmCheckitem model)
     {
+        // 鑾峰彇涓昏〃
         var m = base.GetById(model.Guid);
+
         System.Text.StringBuilder sbSql = new StringBuilder();
         sbSql.Append("select top 1 FSubsidiary,org.NAME as fName,org.FNumber, [item_name],[item_model],item_no from MES_ITEMS i left join SYS_ORGANIZATION org on i.FSubsidiary=org.FID where i.id=" + m.ItemId);
         try
@@ -92,6 +101,17 @@
         {
             LogHelper.Debug(ToString(), "GetModel error锛�" + ex.Message);
         }
+
+        // 鏂板锛氬鎵逛汉濮撳悕鏌ヨ
+        if (!string.IsNullOrEmpty(m.FoneCheckor))
+        {
+            var user = Db.Queryable<SysUser>()
+                .Where(u => u.Account == m.FoneCheckor)
+                .Select(u => u.UserName)
+                .First();
+            m.FoneCheckor = user ?? m.FoneCheckor; // 鏌ヤ笉鍒板垯淇濈暀鍘熷��
+        }
+
         m.list = Db.Queryable<MesQmCheckitemDt, MesQmAql1>((a, b) =>
                 new object[]
                 {
@@ -331,4 +351,99 @@
         }
         return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
     }
+
+    #region 鐗╂枡绫诲埆妫�楠岄」鐩�
+
+    /// <summary>
+    ///     鏌ヨ鍒楄〃锛屾敮鎸佸垎椤�
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<MesQmCheckitem>> GetListPageLeiBie(PageQuery query)
+    {
+        var _sbWhere = new StringBuilder(" 1=1 " + query.keyWhere);
+        var _sbBy = new StringBuilder(query.sortName + " " + query.sortOrder);
+        var totalCount = 0;
+        var itemsList = Db.Queryable<MesQmCheckitem, MesItemType, SysUser, SysUser>(
+                (a, b, u1, u2) => new object[]
+                {
+                  JoinType.Left, a.ItemId == b.Id,
+                  JoinType.Left, a.FoneCheckor == u1.Account,
+                  JoinType.Left, a.CreateBy == u2.Account
+                })
+            .Select((a, b, u1, u2) => new MesQmCheckitem
+            {
+                mc = b.Tname,
+                ItemNo = b.Tcode,
+                // 鏂板锛氬鎵逛汉濮撳悕銆佸埗鍗曚汉濮撳悕
+                FoneCheckor = u1.UserName,
+                CreateBy = u2.UserName
+            }, true)
+            .Where(_sbWhere.ToString())
+            .OrderBy(_sbBy.ToString())
+            .ToPageList(query.currentPage, query.everyPageSize, ref totalCount);
+
+        var pageList = new PageList<MesQmCheckitem>(itemsList, totalCount,
+            query.everyPageSize);
+        return ReturnDto<PageList<MesQmCheckitem>>.QuickReturn(pageList,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+
+    /// <summary>
+    ///     鏍规嵁涓昏〃id璇诲彇涓昏〃鍜屽瓙琛�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<MesQmCheckitem> GetModelLeiBie(
+        [FromBody] MesQmCheckitem model)
+    {
+        // 鑾峰彇涓昏〃
+        var m = base.GetById(model.Guid);
+
+        System.Text.StringBuilder sbSql = new StringBuilder();
+        sbSql.Append("select top 1 tname as [item_name],tcode as item_no from MES_ITEM_TYPE i where i.id=" + m.ItemId);
+        try
+        {
+            DataSet dset = new DataSet();
+            dset = Gs.Toolbox.DbHelperSQL.Query(sbSql.ToString());
+            System.Data.DataRow r = dset.Tables[0].Rows[0];
+            m.ItemNo = r["item_no"].ToString();
+            m.mc = r["item_name"].ToString();
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "GetModel error锛�" + ex.Message);
+        }
+
+        // 鏂板锛氬鎵逛汉濮撳悕鏌ヨ
+        if (!string.IsNullOrEmpty(m.FoneCheckor))
+        {
+            var user = Db.Queryable<SysUser>()
+                .Where(u => u.Account == m.FoneCheckor)
+                .Select(u => u.UserName)
+                .First();
+            m.FoneCheckor = user ?? m.FoneCheckor; // 鏌ヤ笉鍒板垯淇濈暀鍘熷��
+        }
+
+        m.list = Db.Queryable<MesQmCheckitemDt, MesQmAql1>((a, b) =>
+                new object[]
+                {
+                    JoinType.Left, a.SampleSizeNo == b.SampleSizeNo
+                })
+            .OrderBy((a, b) => a.Forder)
+            .Select((a, b) => new MesQmCheckitemDt
+            {
+                sampleSizeName = b.SampleSizeName
+            }, true)
+            .Where(a => a.Pid == model.Guid)
+            .ToList();
+        if (m != null)
+            return ReturnDto<MesQmCheckitem>.QuickReturn(m,
+                ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        return ReturnDto<MesQmCheckitem>.QuickReturn(m, ReturnCode.Default,
+            "璇诲彇澶辫触锛�");
+    }
+    #endregion
 }
\ No newline at end of file
diff --git a/WebApi/GS.QC/Service/RkqcManager.cs b/WebApi/GS.QC/Service/RkqcManager.cs
index b740af2..7c424eb 100644
--- a/WebApi/GS.QC/Service/RkqcManager.cs
+++ b/WebApi/GS.QC/Service/RkqcManager.cs
@@ -8,10 +8,15 @@
 using Microsoft.AspNetCore.Mvc;
 using System.Dynamic;
 using static Gs.Toolbox.UtilityHelper;
+using System.Text;
 
 
 namespace GS.QC.Service
 {
+
+    /// <summary>
+    /// 鍏跺畠鍏ュ簱妫�楠�
+    /// </summary>
 
     [ApiGroup(ApiGroupNames.QC)]
     public class RkqcManager : IRomteService
@@ -138,6 +143,8 @@
             return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
         }
 
+
+      
         #endregion
     }
 }
\ No newline at end of file
diff --git a/WebApi/GS.QC/Service/RkqcSqManager.cs b/WebApi/GS.QC/Service/RkqcSqManager.cs
new file mode 100644
index 0000000..0d77dc1
--- /dev/null
+++ b/WebApi/GS.QC/Service/RkqcSqManager.cs
@@ -0,0 +1,414 @@
+锘縰sing System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
+using System.Text;
+using Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using static Gs.Toolbox.UtilityHelper;
+
+namespace GS.QC.Service
+{
+
+    /// <summary>
+    /// 瓒呮湡妫�楠岀敵璇�
+    /// </summary>
+    [ApiGroup(ApiGroupNames.QC)]
+    public class RkqcSqManager : IRomteService
+    {
+        private readonly IHttpContextAccessor _http;
+        private readonly string _userCode, _userGuid, _orgFids;
+
+        public RkqcSqManager(IHttpContextAccessor httpContextAccessor)
+        {
+            _http = httpContextAccessor;
+            (_userCode, _userGuid, _orgFids) =
+                GetUserGuidAndOrgGuid(_http);
+        }
+
+        /// <summary>
+        ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetListPage([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            SqlParameter[] parameters =
+            {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+            var dset = new DataSet();
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("cqjy_lst", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+                {
+                    var intTotal =
+                        int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dset.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+                return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+              ReturnCode.Exception, ex.Message);
+            }
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+
+        /// <summary>
+        ///     璇诲彇
+        /// </summary>
+        /// <param name="guid"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
+        {
+            string guid = model.guid.ToString();
+            dynamic m = new ExpandoObject();
+            m.list = new List<dynamic>();
+            m.list2 = new List<dynamic>();
+            SqlParameter[] parameters =
+            {
+                new("@inMainGuid", guid),
+                new("@inP1", ""),
+                new("@inP2", ""),
+                new("@inP3", ""),
+                new("@inP4", "")
+            };
+            var dset = new DataSet();
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("[cqjy_mx]",
+                    parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0)
+                {
+                    var dr = dset.Tables[0].Rows[0];
+                    m = dr.RowToDynamic();
+                    var _tb = dset.Tables[1].TableToDynamicList();
+                    m.list = _tb;
+                    var _tb2 = dset.Tables[2].TableToDynamicList();
+                    m.list2 = _tb2;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+            if (m != null)
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+                    "璇诲彇鎴愬姛锛�");
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
+                "璇诲彇澶辫触锛�");
+        }
+
+
+        /// <summary>
+        ///     澧炲姞鎴栫紪杈戝疄浣�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model)
+        {
+            Guid? guid = model.Guid; //涓婚敭
+            string remark = model.Remark; //澶囨敞
+            string billType = model.BillType; //鐢宠绫诲瀷
+            string kcOrgId = model.KcOrgId;//
+            StringBuilder _sb = new StringBuilder();
+            string _split = "|";
+            foreach (var m in model.list)
+            {
+                string _guid = m.Guid.ToString();
+                var _line = m.ItemBarCode + _split
+                    + (UtilityHelper.CheckGuid(_guid) ? _guid : Guid.Empty.ToString());
+                if (_sb.Length > 0)
+                    _sb.Append("~");
+                _sb.Append(_line);
+            }
+            dynamic mObj = new ExpandoObject();
+            mObj.outMsg = "";
+            mObj.outSum = -1;
+            mObj.outGuid = "";
+            mObj.outNo = "";
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand("[cqjy_edt]", conn))
+                {
+                    try
+                    {
+                        conn.Open();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters =
+                        {
+                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outSum", SqlDbType.Int),
+                        new("@outGuid", SqlDbType.UniqueIdentifier),
+                        new("@outNo", SqlDbType.NVarChar, 300),
+                        new("@inOrderGuid",UtilityHelper.CheckGuid(guid) ? guid: DBNull.Value),
+                        new("@remark", remark),
+                        new("@billType", billType),
+                        new("@kcOrgId", kcOrgId),
+                        new("@inEdtUserGuid", _userGuid),
+                        new("@inLineList", _sb.ToString())
+                    };
+                        parameters[0].Direction = ParameterDirection.Output;
+                        parameters[1].Direction = ParameterDirection.Output;
+                        parameters[2].Direction = ParameterDirection.Output;
+                        parameters[3].Direction = ParameterDirection.Output;
+                        foreach (var parameter in parameters)
+                            cmd.Parameters.Add(parameter);
+                        cmd.ExecuteNonQuery();
+                        mObj.outMsg = parameters[0].Value.ToString();
+                        mObj.outSum = int.Parse(parameters[1].Value.ToString());
+                        mObj.outGuid = parameters[2].Value.ToString();
+                        mObj.outNo = parameters[3].Value.ToString();
+                    }
+                    catch (Exception ex)
+                    {
+                        LogHelper.Debug(ToString(),
+                            "cqjy_edt error锛�" + ex.Message);
+                        mObj.outMsg = ex.Message;
+                        mObj.outSum = -1;
+                    }
+                    finally
+                    {
+                        conn.Close();
+                    }
+                }
+            }
+            if (mObj.outSum <= 0)
+                return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
+            return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg);
+        }
+
+        /// <summary>
+        ///     鍒犻櫎涓昏〃鎴栨槑缁�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<int?> DeleteModelOrMx([FromBody] dynamic model)
+        {
+            int? rtnInt = (int)ReturnCode.Default;
+            Guid? guid = model.guid;
+            string mxGuid = model.mxGuid;
+            var _outMsg = "";
+            var _outSum = -1;
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand("[cqjy_del]", conn))
+                {
+                    try
+                    {
+                        conn.Open();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters =
+                        {
+                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outSum", SqlDbType.Int),
+                        new("@inOrderGuid",
+                            UtilityHelper.CheckGuid(guid)
+                                ? guid
+                                : DBNull.Value),
+                        new("@inEdtUserGuid", _userGuid),
+                        new("@inMxGuid", mxGuid)
+                    };
+                        parameters[0].Direction = ParameterDirection.Output;
+                        parameters[1].Direction = ParameterDirection.Output;
+                        foreach (var parameter in parameters)
+                            cmd.Parameters.Add(parameter);
+                        cmd.ExecuteNonQuery();
+                        _outMsg = parameters[0].Value.ToString();
+                        _outSum = int.Parse(parameters[1].Value.ToString());
+                    }
+                    catch (Exception ex)
+                    {
+                        LogHelper.Debug(ToString(),
+                            "cqjy_del error锛�" + ex.Message);
+                        _outMsg = ex.Message;
+                        _outSum = -1;
+                    }
+                    finally
+                    {
+                        conn.Close();
+                    }
+                }
+            }
+
+            if (_outSum <= 0)
+                return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception,
+                    _outMsg);
+            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, _outMsg);
+        }
+
+
+        /// <summary>
+        ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> SelectForm([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            string kcOrgId = model.kcOrgId;
+            var dset = new DataSet();
+            try
+            {
+                using (var conn = new SqlConnection(DbHelperSQL.strConn))
+                {
+                    using (var cmd = new SqlCommand("[cqjy_select]", conn))
+                    {
+                        conn.Open();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters =
+                        {
+                        new("@inCurrentPage", currentPage),
+                        new("@inEveryPageSize", everyPageSize),
+                        new("@inSortName", sortName),
+                        new("@inSortOrder", ""),
+                        new("@inQueryWhere", keyWhere),
+                        new("@inP1", ""),
+                        new("@inP2", kcOrgId)
+                    };
+                        foreach (var parameter in parameters)
+                            cmd.Parameters.Add(parameter);
+                        using (var dt =
+                               new SqlDataAdapter(cmd))
+                        {
+                            dt.Fill(dset, "0");
+                        }
+                    }
+                    conn.Close();
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), "GetListPage error锛�" + ex.Message);
+                return ReturnDto<PageList<dynamic>>.QuickReturn(
+                    default(PageList<dynamic>), ReturnCode.Exception, "璇诲彇澶辫触");
+            }
+
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            if (dset != null && dset.Tables.Count > 0 &&
+                dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+            {
+                var intTotal =
+                    int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                var pages = intTotal % everyPageSize != 0
+                    ? intTotal / everyPageSize + 1
+                    : intTotal / everyPageSize;
+                _pglist.total = intTotal;
+                _pglist.everyPageSize = everyPageSize;
+                _pglist.pages = pages;
+                var _dy = dset.Tables[0].TableToDynamicList();
+                _pglist.list = _dy;
+            }
+
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+
+        /// <summary>
+        ///   
+        /// </summary>
+        /// <param name="mode"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> EditModelSubmit([FromBody] dynamic mode)
+        {
+            string _guid = mode.guid;
+            string _inFieldValue = mode.inFieldValue;
+            string _proName = "cqjy_submit";
+            dynamic m = new ExpandoObject();
+            m.outSum = -1;
+            m.outMsg = "";
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand(_proName, conn))
+                {
+                    try
+                    {
+                        conn.Open();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters =
+                        {
+                       new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outSum", SqlDbType.Int),
+                        new("@inEdtUserGuid", _userGuid),
+                        new("@inOrderGuid", _guid),
+                        new("@inFieldValue", _inFieldValue),
+                        new("@in1", ""),
+                        new("@in2", "")
+                    };
+                        parameters[0].Direction = ParameterDirection.Output;
+                        parameters[1].Direction = ParameterDirection.Output;
+                        foreach (var parameter in parameters)
+                            cmd.Parameters.Add(parameter);
+                        cmd.ExecuteNonQuery();
+                        m.outMsg = parameters[0].Value.ToString();
+                        m.outSum = int.Parse(parameters[1].Value.ToString());
+                    }
+                    catch (Exception ex)
+                    {
+                        LogHelper.Debug(ToString(), "cqjy_submit error锛�" + ex.Message);
+                        m.outMsg = ex.Message;
+                        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, ex.Message);
+                    }
+                    finally
+                    {
+                        conn.Close();
+                    }
+                }
+            }
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+        }
+    }
+}
diff --git a/WebApi/GS.QC/Service/RkqcfaManager.cs b/WebApi/GS.QC/Service/RkqcfaManager.cs
new file mode 100644
index 0000000..934bd6d
--- /dev/null
+++ b/WebApi/GS.QC/Service/RkqcfaManager.cs
@@ -0,0 +1,331 @@
+锘縰sing System.Data;
+using Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using static Gs.Toolbox.UtilityHelper;
+using Microsoft.AspNetCore.Authorization;
+using System.Text;
+using System.Dynamic;
+using System.Data.SqlClient;
+
+
+namespace GS.QC.Service
+{
+    /// <summary>
+    /// 璐ㄤ繚鏈熸柟妗�
+    /// </summary>
+    [ApiGroup(ApiGroupNames.QC)]
+    public class RkqcfaManager : IRomteService
+    {
+        private readonly IHttpContextAccessor _http;
+
+        private readonly string _userCode, _userGuid, _orgFids;
+        public RkqcfaManager(IHttpContextAccessor httpContextAccessor)
+        {
+            _http = httpContextAccessor;
+            (_userCode, _userGuid, _orgFids) =
+                UtilityHelper.GetUserGuidAndOrgGuid(_http);
+        }
+
+        #region
+        /// <summary>
+        /// 璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetListPage([FromBody] PageQuery model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = string.IsNullOrEmpty(model.sortName) ? "a.fabm" : model.sortName;
+            string keyWhere = model.keyWhere;
+            System.Text.StringBuilder sbSql = new StringBuilder();
+            sbSql.Append("select * from ");
+            sbSql.Append("( ");
+            sbSql.Append("select top 100000 ROW_NUMBER() over(order by " + sortName + " " + model.sortOrder + ") as rowIndex,a.* ,(case  a.zt when 1 then '姝e父' when 0 then  '绂佺敤'  end) as isStatusTxt,('('+org.FNumber+')'+org.NAME) as orgName from MES_CQJY_FA A LEFT JOIN SYS_ORGANIZATION ORG ON ORG.FID=A.fSubsidiary where 1=1" + keyWhere);
+            sbSql.Append(") as T ");
+            sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" + everyPageSize + " and  T.rowindex<=" + currentPage + "*" + everyPageSize);
+            sbSql.Append(" order by rowindex asc ");
+            sbSql.Append(" select count(1) as intTotal from MES_CQJY_FA a LEFT JOIN SYS_ORGANIZATION ORG ON ORG.FID=A.fSubsidiary where 1=1 " + keyWhere);
+            DataSet dset = new DataSet();
+            try
+            {
+                dset = Gs.Toolbox.DbHelperSQL.Query(sbSql.ToString());
+            }
+            catch (Exception ex)
+            {
+                Gs.Toolbox.LogHelper.Debug(this.ToString(), "GetListPage error锛�" + ex.Message);
+                return ReturnDto<PageList<dynamic>>.QuickReturn(default(PageList<dynamic>), ReturnCode.Exception, "璇诲彇澶辫触");
+            }
+            PageList<dynamic> _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)//鏈夋暟鎹�
+            {
+                int intTotal = int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                int pages = (intTotal % everyPageSize != 0) ? (intTotal / everyPageSize + 1) : (intTotal / everyPageSize);
+                _pglist.total = intTotal;
+                _pglist.everyPageSize = everyPageSize;
+                _pglist.pages = pages;
+                List<dynamic> _dy = dset.Tables[0].TableToDynamicList();
+                _pglist.list = _dy;
+            }
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist, ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+
+        /// <summary>
+        /// 鍒犻櫎瀹炰綋
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<int?> DeleteModel([FromBody] dynamic model)
+        {
+            string guid = model.guid;
+            string mxGuid = model.mxGuid;
+            int rtnInt = (int)ReturnCode.Default;
+            int cont = 0;
+            try
+            {
+                cont = isChkOrUnChk(guid, 1);
+                if (cont > 0)
+                    return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鍒犻櫎澶辫触锛岃淇℃伅宸茶瀹℃牳锛�");
+                StringBuilder sbCount = new StringBuilder();
+                sbCount.Append("select COUNT(1) from [dbo].[MES_CQJY_FA_DETAIL] where pGuid='" + guid + "'");
+                cont = 0;
+                try
+                {
+                    cont = int.Parse(DbHelperSQL.GetSingle(sbCount.ToString()).ToString());
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.Debug(ToString(), "DeleteModel error锛�" + sbCount.ToString());
+                    return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鍒犻櫎澶辫触锛岃閲嶈瘯锛�");
+                }
+                if (cont > 0)
+                {
+                    return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "璇峰厛鍒犻櫎涓嬮潰鐨勭墿鏂欏垪琛紒");
+                }
+                StringBuilder strSql = new StringBuilder();
+                strSql.Append(" delete from MES_CQJY_FA ");
+                strSql.Append(" where guid='" + guid + "'");
+                int rows = DbHelperSQL.ExecuteSql(strSql.ToString());
+                rtnInt = rows;
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(this.ToString(), "DeleteModel error锛�" + ex.Message);
+                rtnInt = (int)ReturnCode.Exception;
+                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鍒犻櫎澶辫触锛�" + ex.Message);
+            }
+            if (rtnInt > 0)
+                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Success, "鎿嶄綔鎴愬姛锛屽叡鍒犻櫎" + rtnInt.ToString() + "鏉℃暟鎹紒");
+            else
+                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鍒犻櫎澶辫触锛岃閲嶈瘯锛�");
+        }
+
+        /// <summary>
+        /// 澧炲姞瀹炰綋
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model)
+        {
+            string guid = model.guid;
+            string famc = model.famc;
+            string bzqx = model.bzqx;
+            string fjxz = model.fjxz;
+            string yjrq = model.yjrq;
+            string bz = model.bz;
+            int zt = 1;
+            string fSubsidiary = model.fSubsidiary;
+            int? rtnInt = (int)ReturnCode.Default;
+            dynamic mObj = new ExpandoObject();
+            mObj.outMsg = "";
+            mObj.outSum = -1;
+            mObj.outGuid = "";
+            mObj.outNo = "";
+
+            if (UtilityHelper.CheckGuid(guid))
+            {
+                int cont = isChkOrUnChk(guid, 1);
+                if (cont > 0)
+                {
+                    mObj.outMsg = "鍒犻櫎澶辫触锛岃淇℃伅宸茶瀹℃牳锛�";
+                    mObj.outSum = -1;
+                    return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
+                }
+            }
+
+            string fabm = "";//鏂规缂栫爜
+            StringBuilder strSql = new StringBuilder();
+            if (!UtilityHelper.CheckGuid(guid))
+            {
+                guid = Guid.NewGuid().ToString();
+                fabm = GetBillNo("JYFA(妫�楠屾柟妗�)");
+                strSql.Append(" insert into MES_CQJY_FA");
+                strSql.Append(" ([guid] ,[fabm] ,[famc] ,[bzqx] ,[fjxz],[yjrq] ,[bz] ,[zt],fSubsidiary,checkStatus)");
+                strSql.Append(" values(");
+                strSql.Append(" '" + guid + "','" + fabm + "','" + famc + "'," + bzqx + "," + fjxz + "," + yjrq + ",'" + bz + "'," + zt + "," + fSubsidiary + ",0)");
+            }
+            else
+            {
+                strSql.Append(" update MES_CQJY_FA set [famc]='" + famc + "' ,[bzqx]=" + bzqx + " ,[fjxz]=" + fjxz + ",[yjrq]=" + yjrq + " ,[bz]='" + bz + "'");
+                strSql.Append(" where guid='" + guid + "'");
+            }
+            try
+            {
+                rtnInt = DbHelperSQL.ExecuteSql(strSql.ToString());
+                mObj.outMsg = "鎿嶄綔鎴愬姛锛�";
+                mObj.outSum = rtnInt;
+                mObj.outGuid = guid;
+                mObj.outNo = fabm;
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(this.ToString(), "EditModel error锛�" + ex.Message);
+                rtnInt = (int)ReturnCode.Exception;
+                mObj.outMsg = ex.Message;
+                mObj.outSum = -1;
+            }
+            if (mObj.outSum <= 0)
+                return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
+            return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg);
+        }
+
+        /// <summary>
+        /// 璇诲彇瀹炰綋
+        /// </summary>
+        /// <param name="guid"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        [AllowAnonymous]
+        public ReturnDto<System.Dynamic.ExpandoObject> GetModel([FromBody] dynamic model)
+        {
+            dynamic m = new System.Dynamic.ExpandoObject();
+            System.Text.StringBuilder sbSql = new StringBuilder();
+            sbSql.Append(" select top 1 * from MES_CQJY_FA where 1=1 and guid='" + model.guid.ToString() + "' ");
+            try
+            {
+                DataSet dset = new DataSet();
+                dset = DbHelperSQL.Query(sbSql.ToString());
+                if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)
+                {
+                    System.Data.DataRow dr = dset.Tables[0].Rows[0];
+                    m = dr.RowToDynamic();
+                    return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+                }
+                else
+                    return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(this.ToString(), "GetModel error:" + ex.Message);
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+            }
+        }
+        /// <summary>
+        /// 鍒ゆ柇鏄惁瀹℃牳
+        /// </summary>
+        /// <param name="guidList"></param>
+        /// <param name="status"></param>
+        /// <returns></returns>
+        private int isChkOrUnChk(string guidList, int status)
+        {
+            int cont = 0;
+            cont = int.Parse(DbHelperSQL.GetSingle("select count(1) from MES_CQJY_FA where guid='" + guidList + "' and isnull(checkstatus,0)=" + status + "").ToString());
+            return cont;
+        }
+        #endregion
+
+
+        /// <summary>
+        /// 绉诲嚭鎴栫Щ鍏�
+        /// </summary>
+        /// <param name="mode"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> EditModelOutIn([FromBody] dynamic mode)
+        {
+            string _guid = mode.guid;
+            string _inFieldValue = mode.inFieldValue;
+            string _inItemsGuids = mode.inItemsGuids;
+            dynamic m = new ExpandoObject();
+            m.outSum = -1;
+            m.outMsg = "";
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand("cqjy_itemsOutIn", conn))
+                {
+                    try
+                    {
+                        conn.Open();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters =
+                        {
+                                new("@outMsg", SqlDbType.NVarChar, 300),
+                                new("@outSum", SqlDbType.Int),
+                                new("@inEdtUserGuid", _userGuid),
+                                new("@inOrderGuid", _guid),
+                                new("@inFieldValue",_inFieldValue),
+                                new("@inItemsGuids",_inItemsGuids),
+                            };
+                        parameters[0].Direction = ParameterDirection.Output;
+                        parameters[1].Direction = ParameterDirection.Output;
+                        foreach (var parameter in parameters)
+                            cmd.Parameters.Add(parameter);
+                        cmd.ExecuteNonQuery();
+                        m.outMsg = parameters[0].Value.ToString();
+                        m.outSum = int.Parse(parameters[1].Value.ToString());
+                    }
+                    catch (Exception ex)
+                    {
+                        m.outMsg = ex.Message;
+                        LogHelper.Debug(this.ToString(), "cqjy_itemsOutIn error锛�" + ex.Message);
+                        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, ex.Message);
+                    }
+                    finally
+                    {
+                        conn.Close();
+                    }
+                }
+            }
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+        }
+
+
+        /// <summary>
+        /// 璇诲彇缂栫爜
+        /// </summary>
+        /// <param name="billType"></param>
+        /// <returns></returns>
+        private static string GetBillNo(string billType, string itemNo = "")
+        {
+            var sbSql = new StringBuilder();
+            sbSql.Append(" DECLARE @hNo nvarchar(50) ");
+            sbSql.Append("  EXEC [getOrderNo] '" + billType + "',@hNo output,'" +
+                         itemNo + "'");
+            sbSql.Append("  select @hNo as t1");
+            var str = "";
+            try
+            {
+                str = DbHelperSQL.GetSingle(sbSql.ToString()).ToString();
+            }
+            catch (Exception ex)
+            {
+                str = Guid.NewGuid().ToString();
+            }
+            return str;
+        }
+    }
+}
diff --git a/WebApi/Gs.BaseInfo/Services/MesCustomerManager.cs b/WebApi/Gs.BaseInfo/Services/MesCustomerManager.cs
index 7282582..abf6633 100644
--- a/WebApi/Gs.BaseInfo/Services/MesCustomerManager.cs
+++ b/WebApi/Gs.BaseInfo/Services/MesCustomerManager.cs
@@ -11,6 +11,9 @@
 
 namespace Gs.BaseInfo.Services;
 
+/// <summary>
+/// 瀹㈡埛绠$悊
+/// </summary>
 [ApiGroup(ApiGroupNames.BaseInfo)]
 public class MesCustomerManager : Repository<MesCustomer>, IRomteService
 {
@@ -31,7 +34,6 @@
     [RequestMethod(RequestMethods.POST)]
     public ReturnDto<PageList<MesCustomer>> GetListPage(PageQuery query)
     {
-
         var pageList = new PageList<MesCustomer>();
         try
         {
diff --git a/WebApi/Gs.BaseInfo/Services/MesItemTypeManager.cs b/WebApi/Gs.BaseInfo/Services/MesItemTypeManager.cs
new file mode 100644
index 0000000..40b2d9e
--- /dev/null
+++ b/WebApi/Gs.BaseInfo/Services/MesItemTypeManager.cs
@@ -0,0 +1,150 @@
+锘縰sing Gs.BaseInfo.Models;
+using Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System.Data;
+using System.Data.SqlClient;
+using System.Text;
+
+namespace Gs.BaseInfo.Services;
+
+[ApiGroup(ApiGroupNames.BaseInfo)]
+public class MesItemTypeManager : Repository<MesItemType>, IRomteService
+{
+    private readonly IHttpContextAccessor _http;
+     private readonly string _userCode,_userGuid,_orgFids;
+
+    public MesItemTypeManager(IHttpContextAccessor httpContextAccessor)
+    {
+        _http = httpContextAccessor;
+        (_userCode, _userGuid, _orgFids) =
+            UtilityHelper.GetUserGuidAndOrgGuid(_http);
+    }
+
+    /// <summary>
+    ///     鏌ヨ鍒楄〃锛屾敮鎸佸垎椤�
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<MesItemType>> GetListPage(PageQuery query)
+    {
+        var pageList = new PageList<MesItemType>();
+        try
+        {
+            var _sbWhere = new StringBuilder(" 1=1" + query.keyWhere);
+            var _sbBy =
+                new StringBuilder(query.sortName + " " + query.sortOrder);
+            var totalCount = 0;
+            var itemsList = Db.Queryable<MesItemType>("a")
+                .Where(_sbWhere.ToString())
+                .OrderBy(_sbBy.ToString())
+                .ToPageList(query.currentPage, query.everyPageSize,
+                    ref totalCount);
+
+            pageList = new PageList<MesItemType>(itemsList, totalCount,
+                query.everyPageSize);
+            return ReturnDto<PageList<MesItemType>>.QuickReturn(pageList,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+        catch (Exception ex)
+        {
+            return ReturnDto<PageList<MesItemType>>.QuickReturn(pageList,
+                ReturnCode.Default, ex.Message);
+        }
+    }
+
+    /// <summary>
+    ///     璇诲彇
+    /// </summary>
+    /// <param name="guid"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<MesItemType> GetModel([FromBody] MesItemType model)
+    {
+        var m = base.GetById(model.Guid);
+        if (m != null)
+            return ReturnDto<MesItemType>.QuickReturn(m, ReturnCode.Success,
+                "璇诲彇鎴愬姛锛�");
+        return ReturnDto<MesItemType>.QuickReturn(m, ReturnCode.Default,
+            "璇诲彇澶辫触锛�");
+    }
+
+    /// <summary>
+    ///   缁存姢妫�楠岄」鐩椂寮瑰嚭閫夋嫨
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> GetListSelect([FromBody] dynamic model)
+    {
+        int currentPage = model.currentPage;
+        int everyPageSize = model.everyPageSize;
+        string sortName = model.sortName;
+        string keyWhere = model.keyWhere;
+        string keyType = model.keyType;
+        string keyWord = model.keyWord;
+        var dset = new DataSet();
+        try
+        {
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand("[select_item_type]", conn))
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@inCurrentPage", currentPage),
+                        new("@inEveryPageSize", everyPageSize),
+                        new("@inSortName", sortName),
+                        new("@inSortOrder", ""),
+                        new("@inQueryWhere", keyWhere),
+                        new("@inP1",keyType),//褰撲负锛氭楠岄」鐩紝iqc,ipqc,fqc鏃�
+                        new("@inP2", keyWord)
+                    };
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    using (var dt = new SqlDataAdapter(cmd))
+                    {
+                        dt.Fill(dset, "0");
+                    }
+                }
+                conn.Close();
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "GetListPage error锛�" + ex.Message);
+            return ReturnDto<PageList<dynamic>>.QuickReturn(default(PageList<dynamic>), ReturnCode.Exception, "璇诲彇澶辫触");
+        }
+
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        if (dset != null && dset.Tables.Count > 0 &&
+            dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+        {
+            var intTotal =
+                int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+            var pages = intTotal % everyPageSize != 0
+                ? intTotal / everyPageSize + 1
+                : intTotal / everyPageSize;
+            _pglist.total = intTotal;
+            _pglist.everyPageSize = everyPageSize;
+            _pglist.pages = pages;
+            var _dy = dset.Tables[0].TableToDynamicList();
+            _pglist.list = _dy;
+        }
+
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+}
\ No newline at end of file
diff --git a/WebApi/Gs.BaseInfo/Services/MesItemsManager.cs b/WebApi/Gs.BaseInfo/Services/MesItemsManager.cs
index 3d58c25..28c32ad 100644
--- a/WebApi/Gs.BaseInfo/Services/MesItemsManager.cs
+++ b/WebApi/Gs.BaseInfo/Services/MesItemsManager.cs
@@ -1,7 +1,4 @@
-锘縰sing System.Data;
-using System.Data.SqlClient;
-using System.Dynamic;
-using System.Text;
+锘縰sing Gs.BaseInfo.Models;
 using Gs.Entity.BaseInfo;
 using Gs.Entity.Sys;
 using Gs.Toolbox;
@@ -11,6 +8,10 @@
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
 using SqlSugar;
+using System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
+using System.Text;
 using SqlDataAdapter = System.Data.SqlClient.SqlDataAdapter;
 
 namespace Gs.BaseInfo.Services;
@@ -41,12 +42,12 @@
         try
         {
             var _sbWhere = new StringBuilder(" 1=1" + query.keyWhere);
-            var _sbBy =new StringBuilder(query.sortName + " " + query.sortOrder);
+            var _sbBy = new StringBuilder(query.sortName + " " + query.sortOrder);
             var totalCount = 0;
             var itemsList = Db
                 .Queryable<MesItems, SysOrganization, MesUnit, MesUnit, MesUnit,
-                    MesUnit, MesUnit, MesUnit, MesDepots>(
-                    (a, org, c, d, e, f, g, h, m) => new object[]
+                    MesUnit, MesUnit, MesUnit, MesDepots, MesItemType>(
+                    (a, org, c, d, e, f, g, h, m, n) => new object[]
                     {
                         JoinType.Left, a.FSubsidiary == org.Fid,
                         JoinType.Left, a.ItemUnit == c.Id.ToString(),
@@ -55,10 +56,12 @@
                         JoinType.Left, a.Storeunit == f.Id.ToString(),
                         JoinType.Left, a.SubconUnit == g.Id.ToString(),
                         JoinType.Left, a.ProduceUnit == h.Id.ToString(),
-                        JoinType.Left, a.DepotCode == m.DepotId.ToString()
+                        JoinType.Left, a.DepotCode == m.DepotId.ToString(),
+                        JoinType.Left, a.Fmaterialgroup == n.Id.ToString()
                     })
-                .Select((a, org, c, d, e, f, g, h, m) => new MesItems
+                .Select((a, org, c, d, e, f, g, h, m, n) => new MesItems
                 {
+                    chkInt = false,
                     FSubsidiary = "(" + org.FNumber + ")" + org.Name,
                     ItemUnit = c.Fname,
                     Fpurchaseunitid = d.Fname,
@@ -67,6 +70,7 @@
                     SubconUnit = g.Fname,
                     ProduceUnit = h.Fname,
                     DepotCode = m.DepotName,
+                    Fmaterialgroup = n.Tname,
                     Fforbidstatus = a.Fforbidstatus + ":" + (a.Fforbidstatus == "A" ? "姝e父" : "绂佺敤"),
                     DataType = a.DataType + ":"
                         + SqlFunc.IF(a.DataType == "Z").Return("鏆傚瓨")
@@ -93,7 +97,7 @@
         }
     }
 
- 
+
     /// <summary>
     ///     璇诲彇
     /// </summary>
@@ -130,6 +134,42 @@
         return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
     }
 
+    /// <summary>
+    /// 
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetModelByOrg([FromBody] dynamic model)
+    {
+        string itemNo = model.itemNo;
+        string orgId = model.orgId;
+        dynamic m = new ExpandoObject();
+        SqlParameter[] parameters =
+        {
+            new("@inItemNo", itemNo),
+            new("@inOrgId", orgId),
+        };
+        var dset = new DataSet();
+        try
+        {
+            dset = DbHelperSQL.RunProcedure("[prc_item_detailByOrg]", parameters, "0");
+            if (dset != null && dset.Tables.Count > 0 &&
+                dset.Tables[0].Rows.Count > 0)
+            {
+                var dr = dset.Tables[0].Rows[0];
+                m = dr.RowToDynamic();
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+            }
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛屾壘涓嶅埌璇ョ墿鏂欙紒");
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�" + ex.Message.ToString());
+        }
+    }
+
 
     /// <summary>
     ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
@@ -144,6 +184,7 @@
         string sortName = model.sortName;
         string keyWhere = model.keyWhere;
         string keyType = model.keyType;
+        string keyWord = model.keyWord;  //杩欎釜pguid锛屼綔涓烘柟妗堢殑涓婚敭
         var dset = new DataSet();
         try
         {
@@ -161,7 +202,7 @@
                         new("@inSortOrder", ""),
                         new("@inQueryWhere", keyWhere),
                         new("@inP1",keyType),//褰撲负锛氭楠岄」鐩紝iqc,ipqc,fqc鏃讹紝鍏嶆鏃� 鐗瑰埆鍔犱笂杩囨护鏉′欢
-                        new("@inP2", "")
+                        new("@inP2", keyWord) //杩欎釜pguid锛屼綔涓烘柟妗堢殑涓婚敭
                     };
                     foreach (var parameter in parameters)
                         cmd.Parameters.Add(parameter);
@@ -223,7 +264,7 @@
         System.Text.StringBuilder sbJoin = new StringBuilder();
         sbJoin.Append(" FROM MES_ITEMS [a]");
         sbJoin.Append(" Left JOIN [SYS_ORGANIZATION] [Org] ON ( [a].[FSubsidiary] = [Org].[FID] )");
-        sbJoin.Append(" left join SYS_USER_BIND b on (b.userGuid='"+ keyType + "' and b.aboutGuid=a.guid)");
+        sbJoin.Append(" left join SYS_USER_BIND b on (b.userGuid='" + keyType + "' and b.aboutGuid=a.item_id and b.fType='鐗╂枡鍒嗗尯')");
         sbJoin.Append(" where 1=1 ");
         sbJoin.Append(keyWhere);
         var sbSql = new StringBuilder();
@@ -276,4 +317,86 @@
             ReturnCode.Success, "璇诲彇鎴愬姛");
     }
 
+
+    /// <summary>
+    /// 鎵归噺璁剧疆鎻愬墠鍒拌揣鏃ユ湡
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<int?> SetDays([FromBody] dynamic model)
+    {
+        string guidList = model.guidList;
+        string bz10 = model.bz10;
+        string percent = model.percent;
+        string bz09 = model.bz09;
+        if (string.IsNullOrEmpty(bz09))
+            bz09 = null;
+
+        int rtnInt = (int)ReturnCode.Default;
+
+        // 鏋勫缓瑕佹洿鏂扮殑瀛楁锛堝彧鍖呭惈闈炵┖鍊硷級
+        var setParts = new List<string>();
+        var parameters = new List<SqlParameter>();
+
+        if (!string.IsNullOrWhiteSpace(bz10))
+        {
+            setParts.Add("bz10 = @bz10");
+            parameters.Add(new SqlParameter("@bz10", SqlDbType.NVarChar) { Value = bz10.Trim() });
+        }
+
+        if (!string.IsNullOrWhiteSpace(percent))
+        {
+            setParts.Add("loss_percent = @percent");
+            parameters.Add(new SqlParameter("@percent", SqlDbType.NVarChar) { Value = percent.Trim() });
+        }
+
+        if (!string.IsNullOrWhiteSpace(bz09))
+        {
+            setParts.Add("bz09 = @bz09");
+            parameters.Add(new SqlParameter("@bz09", SqlDbType.NVarChar) { Value = bz09.Trim() });
+        }
+
+        if (setParts.Count == 0)
+        {
+            // 娌℃湁鍙洿鏂扮殑瀛楁
+            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "娌℃湁闇�瑕佹洿鏂扮殑瀛楁");
+        }
+
+        // 鏋勫缓 SQL锛屼娇鐢ㄥ弬鏁板寲閬垮厤娉ㄥ叆
+        var sql = new StringBuilder();
+        sql.Append("UPDATE MES_ITEMS SET ");
+        sql.Append(string.Join(", ", setParts));
+        sql.Append(" WHERE guid IN (SELECT line FROM dbo.fn_split(@guidList,','))");
+
+        try
+        {
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            using (var cmd = new SqlCommand(sql.ToString(), conn))
+            {
+                // 娣诲姞 guidList 鍙傛暟
+                cmd.Parameters.Add(new SqlParameter("@guidList", SqlDbType.NVarChar) { Value = guidList ?? string.Empty });
+
+                // 娣诲姞鍙兘鐨勬洿鏂板瓧娈靛弬鏁�
+                foreach (var p in parameters)
+                    cmd.Parameters.Add(p);
+
+                conn.Open();
+                var rows = cmd.ExecuteNonQuery();
+                rtnInt = rows;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(this.ToString(), "SetDays error锛�" + ex.Message);
+            rtnInt = (int)ReturnCode.Exception;
+            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鎿嶄綔澶辫触锛�" + ex.Message);
+        }
+
+        if (rtnInt > 0)
+            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+        else
+            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鎿嶄綔澶辫触锛岃閲嶈瘯锛�");
+    }
+
 }
\ No newline at end of file
diff --git a/WebApi/Gs.BaseInfo/Services/MesSupplierManager.cs b/WebApi/Gs.BaseInfo/Services/MesSupplierManager.cs
index e20fbde..06e6c55 100644
--- a/WebApi/Gs.BaseInfo/Services/MesSupplierManager.cs
+++ b/WebApi/Gs.BaseInfo/Services/MesSupplierManager.cs
@@ -51,7 +51,7 @@
                 ).Select((a, org) => new MesSupplier
                 {
                     FSubsidiary = "(" + org.FNumber + ")" + org.Name,
-                    Fforbidstatus = a.Fforbidstatus+":"+(a.Fforbidstatus == "A" ? "姝e父" : "绂佺敤"),
+                    Fforbidstatus = a.Fforbidstatus + ":" + (a.Fforbidstatus == "A" ? "姝e父" : "绂佺敤"),
                     DataType = a.DataType + ":"
                         + SqlFunc.IF(a.DataType == "Z").Return("鏆傚瓨")
                         .ElseIF(a.DataType == "A").Return("鍒涘缓")
@@ -165,4 +165,96 @@
         return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
             ReturnCode.Success, "璇诲彇鎴愬姛");
     }
+
+
+
+    /// <summary>
+    /// 鍔犲叆srm鍚嶅崟
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<int?> SrmJoin([FromBody] dynamic model)
+    {
+        string suppId = model.suppId;
+        string joinType = model.joinType;
+        int rtnInt = (int)ReturnCode.Default;
+        try
+        {
+            StringBuilder strSql = new StringBuilder();
+            strSql.Append(" delete from MES_SUPPLIER_SRM ");
+            strSql.Append(" where suppId='" + suppId + "'");
+            int rows = DbHelperSQL.ExecuteSql(strSql.ToString());
+            if (joinType == "1")
+            {
+                strSql = new StringBuilder();
+                strSql.Append(" insert into MES_SUPPLIER_SRM(suppId,isSrm,create_by,create_date)");
+                strSql.Append(" values('" + suppId + "',1,'" + _userCode + "',getdate())");
+                rows = DbHelperSQL.ExecuteSql(strSql.ToString());
+            }
+            rtnInt = rows;
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(this.ToString(), "DeleteModel error锛�" + ex.Message);
+            rtnInt = (int)ReturnCode.Exception;
+            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鎿嶄綔澶辫触锛�" + ex.Message);
+        }
+        if (rtnInt > 0)
+            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+        else
+            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鎿嶄綔澶辫触锛岃閲嶈瘯锛�");
+    }
+
+
+    /// <summary>
+    /// 璇诲彇srm鍒楄〃
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> GetSrmListPage([FromBody] PageQuery model)
+    {
+        int currentPage = model.currentPage;
+        int everyPageSize = model.everyPageSize;
+        string sortName = string.IsNullOrEmpty(model.sortName) ? "a.supp_name" : model.sortName;
+        string keyWhere = model.keyWhere;
+        System.Text.StringBuilder sbSql = new StringBuilder();
+        sbSql.Append("select * from ");
+        sbSql.Append("( ");
+        sbSql.Append("select top 100000 ROW_NUMBER() over(order by " + sortName + " " + model.sortOrder + ") as rowIndex,a.*,b.create_date as joinDate,'(' + org.FNumber + ')' + org.Name as orgName  from [dbo].[MES_SUPPLIER_SRM] b left join [dbo].[MES_SUPPLIER] a on b.suppId=a.[id] left join  SYS_ORGANIZATION org  on org.FID=a.FSubsidiary where 1=1" + keyWhere);
+        sbSql.Append(") as T ");
+        sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" + everyPageSize + " and  T.rowindex<=" + currentPage + "*" + everyPageSize);
+        sbSql.Append(" order by rowindex asc ");
+        sbSql.Append(" select count(1) as intTotal from [dbo].[MES_SUPPLIER_SRM] b left join [dbo].[MES_SUPPLIER] a on b.suppId=a.[id] left join  SYS_ORGANIZATION org  on org.FID=a.FSubsidiary where 1=1 " + keyWhere);
+        DataSet dset = new DataSet();
+        try
+        {
+            dset = Gs.Toolbox.DbHelperSQL.Query(sbSql.ToString());
+        }
+        catch (Exception ex)
+        {
+            Gs.Toolbox.LogHelper.Debug(this.ToString(), "GetListPage error锛�" + ex.Message);
+            return ReturnDto<PageList<dynamic>>.QuickReturn(default(PageList<dynamic>), ReturnCode.Exception, "璇诲彇澶辫触");
+        }
+        PageList<dynamic> _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)//鏈夋暟鎹�
+        {
+            int intTotal = int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+            int pages = (intTotal % everyPageSize != 0) ? (intTotal / everyPageSize + 1) : (intTotal / everyPageSize);
+            _pglist.total = intTotal;
+            _pglist.everyPageSize = everyPageSize;
+            _pglist.pages = pages;
+            List<dynamic> _dy = dset.Tables[0].TableToDynamicList();
+            _pglist.list = _dy;
+        }
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist, ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+
 }
\ No newline at end of file
diff --git a/WebApi/Gs.BaseInfo/Services/MesWorkshopLineManager.cs b/WebApi/Gs.BaseInfo/Services/MesWorkshopLineManager.cs
index 1e449a8..03728cf 100644
--- a/WebApi/Gs.BaseInfo/Services/MesWorkshopLineManager.cs
+++ b/WebApi/Gs.BaseInfo/Services/MesWorkshopLineManager.cs
@@ -71,6 +71,78 @@
         }
     }
 
+
+    /// <summary>
+    ///     鏌ヨ鍒楄〃锛屾敮鎸佸垎椤碉紝鐢ㄤ簬鍚勭缁戝畾
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> GetListPage2(PageQuery model)
+    {
+        var currentPage = model.currentPage;
+        var everyPageSize = model.everyPageSize;
+        var sortName = string.IsNullOrEmpty(model.sortName) ? "org.FNumber" : model.sortName;
+        var keyWhere = model.keyWhere;
+        string keyType = model.keyType;
+        var sbSql = new StringBuilder();
+        sbSql.Append("select * from ");
+        sbSql.Append("( ");
+        sbSql.Append("select top 100000 ROW_NUMBER() over(order by " + sortName + " " + model.sortOrder + ") as rowIndex,a.* ");
+        sbSql.Append(",d.departmentname,('(' + org.FNumber + ')' + org.NAME) as kcOrg");
+        if (string.IsNullOrEmpty(keyType))
+        {
+            sbSql.Append(",cast(0 as bit) as chkInt");
+        }
+        else
+            sbSql.Append(",cast( (select count(1)  from SYS_USER_BIND b where b.userGuid='" + keyType + "' and b.aboutGuid=a.guid  and b.fType='杩囩珯鏃剁粦瀹氱嚎浣�')  as bit) as chkInt ");
+        sbSql.Append("  from MES_WORKSHOP_LINE a ");
+        sbSql.Append(" left join SYS_DEPARTMENT d on a.dpt_id=d.departmentid left join SYS_ORGANIZATION org on d.FSubsidiary=org.FID");
+        sbSql.Append("  where 1=1");
+        sbSql.Append(keyWhere);
+        sbSql.Append(") as T ");
+        sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" + everyPageSize + " and  T.rowindex<=" + currentPage + "*" + everyPageSize);
+        sbSql.Append(" order by rowindex asc ");
+        sbSql.Append(" select count(1) as intTotal  from MES_WORKSHOP_LINE a ");
+        sbSql.Append(" left join SYS_DEPARTMENT d on a.dpt_id=d.departmentid left join SYS_ORGANIZATION org on d.FSubsidiary=org.FID");
+        sbSql.Append("  where 1=1");
+        sbSql.Append(keyWhere);
+        var dset = new DataSet();
+        try
+        {
+            dset = DbHelperSQL.Query(sbSql.ToString());
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "GetListPage error锛�" + ex.Message);
+            return ReturnDto<PageList<dynamic>>.QuickReturn(default(PageList<dynamic>), ReturnCode.Exception, "璇诲彇澶辫触");
+        }
+
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        if (dset != null && dset.Tables.Count > 0 &&
+            dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+        {
+            var intTotal = int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+            var pages = intTotal % everyPageSize != 0
+                ? intTotal / everyPageSize + 1
+                : intTotal / everyPageSize;
+            _pglist.total = intTotal;
+            _pglist.everyPageSize = everyPageSize;
+            _pglist.pages = pages;
+            var _dy = dset.Tables[0].TableToDynamicList();
+            _pglist.list = _dy;
+        }
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+
+
     /// <summary>
     /// 妫�鏌ユ槸鍚﹁浣跨敤锛屼娇鐢ㄥ悗涓嶈兘杩涜淇敼鍜屽垹闄�
     /// </summary>
@@ -81,8 +153,6 @@
     {
         System.Text.StringBuilder sbSql = new StringBuilder();
         sbSql.Append(" select top 1 daa015 as xt from WOMDAA daa left join MES_WORKSHOP_LINE line on daa.daa015=line.id where line.guid='" + strGuid + "'");
-        sbSql.Append(" union all");
-        sbSql.Append(" select top 1 lineId as xt from MES_WORK_PROD daa left join MES_WORKSHOP_LINE line on daa.lineId=line.id where line.guid='" + strGuid + "'");
         try
         {
             DataSet dset = new DataSet();
@@ -105,11 +175,11 @@
     [RequestMethod(RequestMethods.POST)]
     public ReturnDto<string?> EditModel([FromBody] MesWorkshopLine model)
     {
-        bool _blChk = checkLine(model.Guid.ToString());
-        if (_blChk)
-        {
-            return ReturnDto<string>.QuickReturn("", ReturnCode.Exception, "鎿嶄綔澶辫触锛岃绾夸綋宸蹭骇鐢熶簡鏁版嵁锛屾棤娉曡繘琛屼慨鏀癸紝鍒犻櫎绛夋搷浣滐紒");
-        }
+        //bool _blChk = checkLine(model.Guid.ToString());
+        //if (_blChk)
+        //{
+        //    return ReturnDto<string>.QuickReturn("", ReturnCode.Exception, "鎿嶄綔澶辫触锛岃绾夸綋宸蹭骇鐢熶簡鏁版嵁锛屾棤娉曡繘琛屼慨鏀癸紝鍒犻櫎绛夋搷浣滐紒");
+        //}
         var _bl = false;
         try
         {
diff --git a/WebApi/Gs.BaseInfo/Services/PrintAutoManager.cs b/WebApi/Gs.BaseInfo/Services/PrintAutoManager.cs
new file mode 100644
index 0000000..e40eee4
--- /dev/null
+++ b/WebApi/Gs.BaseInfo/Services/PrintAutoManager.cs
@@ -0,0 +1,133 @@
+锘縰sing System.Data;
+using System.Data.SqlClient;
+using Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using static Gs.Toolbox.UtilityHelper;
+
+namespace Gs.BaseInfo.Services
+{
+    [ApiGroup(ApiGroupNames.BaseInfo)]
+    public class PrintAutoManager : IRomteService
+    {
+        private readonly IHttpContextAccessor _http;
+        private readonly string _userCode, _userGuid, _orgFids;
+        public PrintAutoManager(IHttpContextAccessor httpContextAccessor)
+        {
+            _http = httpContextAccessor;
+            (_userCode, _userGuid, _orgFids) =
+                GetUserGuidAndOrgGuid(_http);
+        }
+        /// <summary>
+        ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetListPage([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            SqlParameter[] parameters =
+            {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+            var dset = new DataSet();
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>(),
+                extendList = new List<dynamic>(),
+            };
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("prc_print_lst", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+                {
+                    var intTotal =
+                        int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dset.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                    var _dy2 = dset.Tables[2].TableToDynamicList();
+                    _pglist.extendList = _dy2;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+                return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+              ReturnCode.Exception, ex.Message);
+            }
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+
+        /// <summary>
+        ///   鏇存柊鑷姩鎵撳嵃
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<string> EditModel([FromBody] dynamic model)
+        {
+            Guid? guid = model.guid; //涓婚敭
+            var _outMsg = "";
+            var _outSum = -1;
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand("[prc_print_rtn]", conn))
+                {
+                    try
+                    {
+                        conn.Open();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters =
+                        {
+                           new("@inGuid", UtilityHelper.CheckGuid(guid) ? guid: DBNull.Value),
+                        };
+                        foreach (var parameter in parameters)
+                            cmd.Parameters.Add(parameter);
+                        _outSum = cmd.ExecuteNonQuery();
+                        _outMsg = "澶勭悊鎴愬姛锛�";
+                    }
+                    catch (Exception ex)
+                    {
+                        _outMsg = ex.Message;
+                        LogHelper.Debug(ToString(), "prc_print_rtn error锛�" + ex.Message);
+                    }
+                    finally
+                    {
+                        conn.Close();
+                    }
+                }
+            }
+            if (_outSum <= 0)
+                return ReturnDto<string>.QuickReturn(guid.ToString(), ReturnCode.Exception, _outMsg);
+            return ReturnDto<string>.QuickReturn(guid.ToString(), ReturnCode.Success, _outMsg);
+        }
+    }
+}
diff --git a/WebApi/Gs.BaseInfo/Services/PrintInfoManager.cs b/WebApi/Gs.BaseInfo/Services/PrintInfoManager.cs
index 3e894f5..f6c71a8 100644
--- a/WebApi/Gs.BaseInfo/Services/PrintInfoManager.cs
+++ b/WebApi/Gs.BaseInfo/Services/PrintInfoManager.cs
@@ -79,7 +79,7 @@
             sbSql.Append(",cast(0 as bit) as chkInt");
         }
         else
-            sbSql.Append(",cast( (select count(1)  from SYS_USER_BIND b where b.userGuid='" + keyType + "' and b.aboutGuid=a.guid)  as bit) as chkInt ");
+            sbSql.Append(",cast( (select count(1)  from SYS_USER_BIND b where b.userGuid='" + keyType + "' and b.aboutGuid=a.guid  and b.fType='鎵撳嵃鏈�')  as bit) as chkInt ");
         sbSql.Append("  from print_info a ");
         sbSql.Append(keyWhere);
         sbSql.Append(") as T ");
diff --git a/WebApi/Gs.Entity/BaseInfo/MesDepots.cs b/WebApi/Gs.Entity/BaseInfo/MesDepots.cs
index 8da698f..415efb7 100644
--- a/WebApi/Gs.Entity/BaseInfo/MesDepots.cs
+++ b/WebApi/Gs.Entity/BaseInfo/MesDepots.cs
@@ -245,4 +245,6 @@
     /// </summary>
     [SugarColumn(IsIgnore = true)]
     public string? OrgId { get; set; }
+
+    
 }
\ No newline at end of file
diff --git a/WebApi/Gs.BaseInfo/Models/MesItemType.cs b/WebApi/Gs.Entity/BaseInfo/MesItemType.cs
similarity index 100%
rename from WebApi/Gs.BaseInfo/Models/MesItemType.cs
rename to WebApi/Gs.Entity/BaseInfo/MesItemType.cs
diff --git a/WebApi/Gs.Entity/BaseInfo/MesItems.cs b/WebApi/Gs.Entity/BaseInfo/MesItems.cs
index 84519c8..37f8d32 100644
--- a/WebApi/Gs.Entity/BaseInfo/MesItems.cs
+++ b/WebApi/Gs.Entity/BaseInfo/MesItems.cs
@@ -344,4 +344,11 @@
     [SugarColumn(IsIgnore = true)] public string? CreateDate1 { get; set; }
 
     [SugarColumn(IsIgnore = true)] public string? Tc { get; set; }
+
+
+    /// <summary>
+    /// 閫夋嫨妗�
+    /// </summary>
+    [SugarColumn(IsIgnore = true)] public bool? chkInt { get; set; }
+    
 }
\ No newline at end of file
diff --git a/WebApi/Gs.HostIIS/CustomContractResolver.cs b/WebApi/Gs.HostIIS/CustomContractResolver.cs
index a8e3d82..8e3df92 100644
--- a/WebApi/Gs.HostIIS/CustomContractResolver.cs
+++ b/WebApi/Gs.HostIIS/CustomContractResolver.cs
@@ -5,6 +5,12 @@
 
 public class CustomContractResolver : DefaultContractResolver
 {
+
+    /// <summary>
+    /// 鎶婂疄浣撳瓧娈佃浆涓洪┘宄板懡鍚�
+    /// </summary>
+    /// <param name="strItem"></param>
+    /// <returns></returns>
     protected override string ResolvePropertyName(string strItem)
     {
         var hasLowercase = Regex.IsMatch(strItem, @"[a-z]");
@@ -14,7 +20,6 @@
             chars[0] = char.ToLower(chars[0]);
             return new string(chars);
         }
-
         var strItems = strItem.ToLower().Split('_');
         var strItemTarget = strItems[0];
         for (var j = 1; j < strItems.Length; j++)
@@ -25,7 +30,6 @@
             temp2 = temp1 + temp.Remove(0, 1);
             strItemTarget += temp2;
         }
-
         return strItemTarget;
     }
 }
\ No newline at end of file
diff --git a/WebApi/Gs.HostIIS/Program.cs b/WebApi/Gs.HostIIS/Program.cs
index 76e691a..f1938f3 100644
--- a/WebApi/Gs.HostIIS/Program.cs
+++ b/WebApi/Gs.HostIIS/Program.cs
@@ -73,8 +73,7 @@
     //娣诲姞瀹夊叏瀹氫箟
     c.AddSecurityDefinition("Token", new OpenApiSecurityScheme
     {
-        Description =
-            "璇疯緭鍏oken,鏍煎紡涓猴細token 3fa85f64-5717-4562-b3fc-2c963f66afa6锛堟敞鎰忎腑闂村繀椤绘湁绌烘牸锛�",
+        Description ="璇疯緭鍏oken,鏍煎紡涓猴細token 3fa85f64-5717-4562-b3fc-2c963f66afa6锛堟敞鎰忎腑闂村繀椤绘湁绌烘牸锛�",
         Name = "token",
         In = ParameterLocation.Header,
         Type = SecuritySchemeType.ApiKey,
diff --git a/WebApi/Gs.HostIIS/RequestAuthorizeAttribute.cs b/WebApi/Gs.HostIIS/RequestAuthorizeAttribute.cs
index d6e9394..493ecc1 100644
--- a/WebApi/Gs.HostIIS/RequestAuthorizeAttribute.cs
+++ b/WebApi/Gs.HostIIS/RequestAuthorizeAttribute.cs
@@ -7,6 +7,11 @@
 
 public class ApiAuthorizeAttribute : Attribute, IAuthorizationFilter
 {
+
+    /// <summary>
+    /// 鐢ㄦ埛浠ょ墝楠岃瘉
+    /// </summary>
+    /// <param name="context"></param>
     public void OnAuthorization(AuthorizationFilterContext context)
     {
         var token = context.HttpContext.Request.Headers["token"]
diff --git a/WebApi/Gs.HostIIS/appsettings.json b/WebApi/Gs.HostIIS/appsettings.json
index b09428e..33cdabd 100644
--- a/WebApi/Gs.HostIIS/appsettings.json
+++ b/WebApi/Gs.HostIIS/appsettings.json
@@ -6,13 +6,15 @@
     }
   },
   "AllowedHosts": "*",
-  /*"ConnectionStrings": "Data Source=192.168.1.146;Initial Catalog=TEST_MES;User ID=testUser;Password =qixi1qaz@WSXtest",*/
-  "ConnectionStrings": "Data Source=192.168.1.146;Initial Catalog=GS_MES;User ID=mesUser;Password =qixi1qaz@WSXmes",
+  "ConnectionStrings": "Data Source=192.168.1.146,12468;Initial Catalog=TEST_MES;User ID=testUser;Password =qixi1qaz@WSXtest",
+  /*"ConnectionStrings": "Data Source=192.168.1.146,12468;Initial Catalog=GS_MES;User ID=mesUser;Password =qixi1qaz@WSXmes",*/
   "TestErpUrl": "http://192.168.1.149:8066/WebService1.asmx/MesToErpinfoTest",
   "TestErpUrl2": "http://192.168.1.149:8066/WebService1.asmx/MesToErpUpdateFlag",
   "ProductionErpUrl": "http://192.168.1.149:8066/WebService1.asmx/mesToErpinfoFormal",
   "ServicesPath": "Services",
   "LogPath": "logs",
   "UploadPath": "upload",
-  "DownPath": "down"
+  "DownPath": "down",
+  "XlsFont": "45",
+  "XlsFontXj": "205"
 }
\ No newline at end of file
diff --git a/WebApi/Gs.JJGZ/Gs.JJGZ.csproj b/WebApi/Gs.JJGZ/Gs.JJGZ.csproj
new file mode 100644
index 0000000..42768cf
--- /dev/null
+++ b/WebApi/Gs.JJGZ/Gs.JJGZ.csproj
@@ -0,0 +1,26 @@
+锘�<Project Sdk="Microsoft.NET.Sdk">
+
+	<PropertyGroup>
+		<TargetFramework>net8.0</TargetFramework>
+		<ImplicitUsings>enable</ImplicitUsings>
+		<Nullable>enable</Nullable>
+		<BaseOutputPath>..\Gs.HostIIS\bin</BaseOutputPath>
+		<GenerateDocumentationFile>True</GenerateDocumentationFile>
+	</PropertyGroup>
+
+	<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
+		<OutputPath>..\Gs.HostIIS\bin\Debug\</OutputPath>
+		<DocumentationFile>..\Gs.HostIIS\bin\Debug\GS.JJGZ.xml</DocumentationFile>
+	</PropertyGroup>
+
+
+	<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
+		<OutputPath>..\Gs.HostIIS\bin\Release\</OutputPath>
+	</PropertyGroup>
+
+	<ItemGroup>
+    <ProjectReference Include="..\Gs.Toolbox\Gs.Toolbox.csproj" />
+    <ProjectReference Include="..\Gs.Entity\Gs.Entity.csproj" />
+  </ItemGroup>
+
+</Project>
diff --git a/WebApi/Gs.JJGZ/MesAttanConController.cs b/WebApi/Gs.JJGZ/MesAttanConController.cs
new file mode 100644
index 0000000..677ddbe
--- /dev/null
+++ b/WebApi/Gs.JJGZ/MesAttanConController.cs
@@ -0,0 +1,300 @@
+锘縰sing Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json.Linq;
+using System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
+using System.Text;
+using static Gs.Toolbox.UtilityHelper;
+
+namespace Gs.JJGZ;
+
+[ApiGroup(ApiGroupNames.JJGZ)]
+public class MesAttanConController : IRomteService
+{
+    private readonly IHttpContextAccessor _http;
+
+    private readonly string _userCode, _userGuid, _orgFids;
+    public MesAttanConController(IHttpContextAccessor httpContextAccessor)
+    {
+        _http = httpContextAccessor;
+        (_userCode, _userGuid, _orgFids) =
+            GetUserGuidAndOrgGuid(_http);
+    }
+
+
+    /// <summary>
+    ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetListPage([FromBody] dynamic model)
+    {
+        string lineNo = model.lineNo.ToString();
+        string date = model.date.ToString();
+        string orgId = model.orgId.ToString();
+        var dset = new DataSet();
+        dynamic m = new ExpandoObject();
+        m.list = new List<dynamic>();
+        m.list1 = new List<dynamic>();
+        m.list2 = new List<dynamic>();
+        m.list3 = new List<dynamic>();
+        try
+        {
+            var parameters = new[] {
+                    new SqlParameter("@inLineNo", lineNo),
+                    new SqlParameter("@inDate", date),
+                    new SqlParameter("@inOrgId", orgId)
+                };
+            var dsMain = DbHelperSQL.Query("EXEC prc_AttanCon_lst @inLineNo, @inDate, @inOrgId", parameters);
+            if (dsMain != null && dsMain.Tables.Count > 0)
+            {
+                var _tb = dsMain.Tables[0].TableToDynamicList();
+                m.list = _tb;
+
+                var _tb1 = dsMain.Tables[1].TableToDynamicList();
+                m.list1 = _tb1;
+
+                var _tb2 = dsMain.Tables[2].TableToDynamicList();
+                m.list2 = _tb2;
+
+                var _tb3 = dsMain.Tables[3].TableToDynamicList();
+                m.list3 = _tb3;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+        }
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+            "璇诲彇鎴愬姛锛�");
+    }
+
+    /// <summary>
+    /// 淇敼
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model)
+    {
+        string lineNo = model.lineNo; //涓婚敭
+        string date = model.date; //涓婚敭
+        string orgId = model.orgId; //涓婚敭
+        var _sb = new StringBuilder();
+        var _split = "|";
+        foreach (var m in model.list)
+        {
+            var _line = m.GUID + _split
+                                    + m.Hour + _split
+                                    + m.Reason;
+            if (_sb.Length > 0)
+                _sb.Append("~");
+            _sb.Append(_line);
+        }
+        dynamic mObj = new ExpandoObject();
+        mObj.outMsg = "";
+        mObj.outSum = -1;
+        mObj.outGuid = "";
+        mObj.outNo = "";
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("[prc_AttanCon_edt]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outSum", SqlDbType.Int),
+                        new("@outNo", SqlDbType.NVarChar, 300),
+                        new("@inLineNo", lineNo),
+                        new("@inDate", date),
+                        new("@inOrgId", orgId),
+                        new("@inEdtUserGuid", _userGuid),
+                        new("@inLineList", _sb.ToString())
+                    };
+                    parameters[0].Direction = ParameterDirection.Output;
+                    parameters[1].Direction = ParameterDirection.Output;
+                    parameters[2].Direction = ParameterDirection.Output;
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    cmd.ExecuteNonQuery();
+                    mObj.outMsg = parameters[0].Value.ToString();
+                    mObj.outSum = int.Parse(parameters[1].Value.ToString());
+                    mObj.outNo = parameters[2].Value.ToString();
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.Debug(ToString(),
+                        "prc_ERRORJS_edt error锛�" + ex.Message);
+                    mObj.outMsg = ex.Message;
+                    mObj.outSum = -1;
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+        if (mObj.outSum <= 0)
+            return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
+        return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg);
+
+    }
+
+
+    /// <summary>
+    ///     璁$畻宸ヨ祫
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> CountModel([FromBody] dynamic model)
+    {
+        string lineNo = model.lineNo.ToString();
+        string date = model.date.ToString();
+        string orgId = model.orgId.ToString();
+        dynamic mObj = new ExpandoObject();
+        mObj.outSum = -1;
+        mObj.outMsg = "";
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            
+            using (var cmd = new SqlCommand("[prc_AttanCon_count]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    var parameters = new[] {
+                        new SqlParameter("@inLineNo", lineNo),
+                        new SqlParameter("@inDate", date),
+                        new SqlParameter("@inOrgId", orgId),
+                        new SqlParameter("@inEdtUserGuid", _userGuid)
+                    };
+                    mObj.outSum = 1;
+                    mObj.outMsg = "璁$畻宸ヨ祫";
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    cmd.ExecuteNonQuery();
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.Debug(ToString(),
+                        "prc_AttanCon_count error锛�" + ex.Message);
+                    mObj.outMsg = ex.Message;
+                    mObj.outSum = -1;
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+        if (mObj.outSum <= 0)
+            return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
+        return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg);
+
+    }
+
+    /// <summary>
+    ///     鎻愪氦瀹℃牳鍙嶅鏍�
+    /// </summary>
+    /// <param name="mode"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> EditModelSubmit([FromBody] dynamic mode)
+    {
+        string lineNo = mode.lineNo;
+        string attenDate = mode.attenDate;
+        string _guid = mode.guid;
+        string _inFieldValue = mode.inFieldValue;
+        dynamic m = new ExpandoObject();
+        m.outSum = -1;
+        m.outMsg = "";
+        try
+        {
+            // 鍋囪鎻愪氦灏辨槸鏇存柊鏌愪釜瀛楁
+            string sql = $"UPDATE MES_JJGZ_KQHZ SET check_status='{_inFieldValue}',check_date = getdate(), check_user='{_userGuid}' WHERE Line_No='{lineNo}' and attenDate = '{attenDate}'";
+            int rows = DbHelperSQL.ExecuteSql(sql);
+            m.outSum = rows;
+            m.outMsg = rows > 0 ? "鎿嶄綔鎴愬姛锛�" : "鏈洿鏂颁换浣曟暟鎹�";
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "EditModelSubmit error锛�" + ex.Message);
+            m.outMsg = ex.Message;
+            m.outSum = -1;
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, ex.Message);
+        }
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+    }
+
+    /// <summary>
+    ///     鑾峰彇璁℃椂绫诲瀷
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetTimeType([FromBody] dynamic model)
+    {
+        dynamic m = new ExpandoObject();
+        string mainTable = "MES_JJGZ_TIMETYPE";
+        try
+        {
+            string sqlMain = $"SELECT HourlyType 璁℃椂绫诲瀷,HourlySalary 璁℃椂鍗曚环 FROM MES_JJGZ_JSSALARY WHERE CHECK_STATUS = 1";
+            var dsMain = DbHelperSQL.Query(sqlMain);
+            if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+            {
+                var _tb = dsMain.Tables[0].TableToDynamicList();
+                m.list = _tb;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        if (m != null)
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+    }
+
+    /// <summary>
+    ///     鑾峰彇浜х嚎
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetWORKSHOPLINE([FromBody] dynamic model)
+    {
+        dynamic m = new ExpandoObject();
+        try
+        {
+            string sqlMain = $"select line_no 浜х嚎,name 浜х嚎鍚嶇О from MES_WORKSHOP_LINE WHERE line_no IN (SELECT Line_No FROM Mes_DepartmentToLine )";
+            var dsMain = DbHelperSQL.Query(sqlMain);
+            if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+            {
+                var _tb = dsMain.Tables[0].TableToDynamicList();
+                m.list = _tb;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        if (m != null)
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+    }
+
+    
+}
\ No newline at end of file
diff --git a/WebApi/Gs.JJGZ/MesDeToLineController.cs b/WebApi/Gs.JJGZ/MesDeToLineController.cs
new file mode 100644
index 0000000..d441bf5
--- /dev/null
+++ b/WebApi/Gs.JJGZ/MesDeToLineController.cs
@@ -0,0 +1,310 @@
+锘縰sing System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
+using System.Text;
+using Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using static Gs.Toolbox.UtilityHelper;
+
+namespace Gs.JJGZ;
+
+[ApiGroup(ApiGroupNames.JJGZ)]
+public class MesDeToLineController : IRomteService
+{
+    private readonly IHttpContextAccessor _http;
+
+    private readonly string _userCode, _userGuid, _orgFids;
+    public MesDeToLineController(IHttpContextAccessor httpContextAccessor)
+    {
+        _http = httpContextAccessor;
+        (_userCode, _userGuid, _orgFids) =
+            GetUserGuidAndOrgGuid(_http);
+    }
+
+
+    /// <summary>
+    ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> GetListPage([FromBody] dynamic model)
+    {
+        int currentPage = model.currentPage;
+        int everyPageSize = model.everyPageSize;
+        string sortName = model.sortName;
+        string keyWhere = model.keyWhere;
+        
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        try
+        {
+            // 鏋勫缓鍒嗛〉鏌ヨSQL
+            string whereClause = string.IsNullOrEmpty(keyWhere) ? "" : keyWhere;
+            string orderBy = string.IsNullOrEmpty(sortName) ? "CREATE_DATE DESC" : $"{sortName} ASC";
+            
+            // 鏌ヨ鎬绘暟
+            string countSql = $"SELECT COUNT(1) FROM Mes_DepartmentToLine a  LEFT JOIN SYS_ORGANIZATION B ON A.OrgId = B.FID LEFT JOIN SYS_USER cj ON A.CREATE_BY = cj.ACCOUNT WHERE 1=1 {whereClause}";
+            var countResult = DbHelperSQL.GetSingle(countSql);
+            int intTotal = countResult != null ? Convert.ToInt32(countResult) : 0;
+            
+            if (intTotal > 0)
+            {
+                // 鍒嗛〉鏌ヨ鏁版嵁
+                int offset = (currentPage - 1) * everyPageSize;
+                string dataSql = $@"
+                    SELECT * FROM (
+                        SELECT 
+                            ROW_NUMBER() OVER (ORDER BY {orderBy}) AS RowNum, 
+                            A.*, 
+                            B.Name AS OrgName,
+                            cj.USER_NAME AS CreateByName
+                        FROM Mes_DepartmentToLine A
+                        LEFT JOIN SYS_ORGANIZATION B ON A.OrgId = B.FID
+                        LEFT JOIN SYS_USER cj ON A.CREATE_BY = cj.ACCOUNT
+                        WHERE 1=1 {whereClause}
+                    ) AS T
+                    WHERE T.RowNum BETWEEN {offset + 1} AND {offset + everyPageSize}";
+                
+                var dsMain = DbHelperSQL.Query(dataSql);
+                if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+                {
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dsMain.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+          ReturnCode.Exception, ex.Message);
+        }
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+
+    /// <summary>
+    ///     璇诲彇
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
+    {
+        string guid = model.guid.ToString();
+        dynamic m = new ExpandoObject();
+        string mainTable = "Mes_DepartmentToLine";
+        try
+        {
+            string sqlMain = $"SELECT a.* ,cj.USER_NAME as createByName ,sh.USER_NAME as checkUserName  FROM {mainTable} a  left join SYS_USER cj on cj.ACCOUNT=a.create_by left join SYS_USER sh on sh.ACCOUNT=a.CHECK_USER WHERE a.GUID='{guid}'";
+            var dsMain = DbHelperSQL.Query(sqlMain);
+            if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+            {
+                var dr = dsMain.Tables[0].Rows[0];
+                m = dr.RowToDynamic();
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        if (m != null)
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+    }
+
+    /// <summary>
+    ///     鎻愪氦瀹℃牳鍙嶅鏍�
+    /// </summary>
+    /// <param name="mode"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> EditModelSubmit([FromBody] dynamic mode)
+    {
+        string _guid = mode.guid;
+        string _inFieldValue = mode.inFieldValue;
+        dynamic m = new ExpandoObject();
+        m.outSum = -1;
+        m.outMsg = "";
+        try
+        {
+            string sql = $"UPDATE Mes_DepartmentToLine SET CHECK_STATUS='{_inFieldValue}',CHECK_DATE = getdate(), CHECK_USER='{_userGuid}' WHERE GUID='{_guid}'";
+            int rows = DbHelperSQL.ExecuteSql(sql);
+            m.outSum = rows;
+            m.outMsg = rows > 0 ? "鎿嶄綔鎴愬姛锛�" : "鏈洿鏂颁换浣曟暟鎹�";
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "EditModelSubmit error锛�" + ex.Message);
+            m.outMsg = ex.Message;
+            m.outSum = -1;
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, ex.Message);
+        }
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+    }
+
+    /// <summary>
+    ///     澧炲姞鎴栫紪杈戝疄浣�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model)
+    {
+        Guid? guid = model.guid; //涓婚敭
+        string departmentId = model.departmentId;
+        string departmentName = model.departmentName;
+        string lineNo = model.lineNo;
+        string lineName = model.lineName;
+        string orgId = model.orgId;
+
+        dynamic mObj = new ExpandoObject();
+        mObj.outMsg = "";
+        mObj.outSum = -1;
+        mObj.outGuid = "";
+        mObj.outNo = "";
+        try
+        {
+            string sql;
+            if (CheckGuid(guid))
+            {
+                sql = $"UPDATE Mes_DepartmentToLine SET DepartmentId='{departmentId}', DepartmentName='{departmentName}', Line_No='{lineNo}', Line_Name='{lineName}',OrgId = '{orgId}' WHERE GUID='{guid}'";
+            }
+            else
+            {
+                guid = Guid.NewGuid();
+                sql = $" declare @userBy nvarchar(20); select top 1 @userBy=[ACCOUNT] from [dbo].[SYS_USER] where guid='{_userGuid}' " +
+                    $"INSERT INTO Mes_DepartmentToLine (GUID, CREATE_BY, CREATE_DATE, DepartmentId, DepartmentName, Line_No, Line_Name,OrgId, CHECK_STATUS) VALUES ('{guid}',@userBy,GETDATE(), '{departmentId}', '{departmentName}', '{lineNo}', '{lineName}','{orgId}', 0)";
+            }
+            int rows = DbHelperSQL.ExecuteSql(sql);
+            mObj.outSum = rows;
+            mObj.outGuid = guid.ToString();
+            mObj.outMsg = rows > 0 ? "鎿嶄綔鎴愬姛锛�" : "鏈洿鏂颁换浣曟暟鎹�";
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "EditModel error锛�" + ex.Message);
+            mObj.outMsg = ex.Message;
+            mObj.outSum = -1;
+        }
+        if (mObj.outSum <= 0)
+            return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
+        return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg);
+    }
+
+    /// <summary>
+    ///     鍒犻櫎涓昏〃鎴栨槑缁�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<int?> DeleteModel([FromBody] dynamic model)
+    {
+        int? rtnInt = (int)ReturnCode.Default;
+        Guid? guid = model.guid;
+        var _outMsg = "";
+        var _outSum = -1;
+        try
+        {
+            if (CheckGuid(guid))
+            {
+                string sql = $"DELETE FROM Mes_DepartmentToLine WHERE GUID='{guid}'";
+                _outSum = DbHelperSQL.ExecuteSql(sql);
+                _outMsg = _outSum > 0 ? "鍒犻櫎鎴愬姛锛�" : "鏈垹闄や换浣曟暟鎹�";
+            }
+            else
+            {
+                _outMsg = "涓婚敭涓嶈兘涓虹┖锛�";
+                _outSum = -1;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "DeleteModel error锛�" + ex.Message);
+            _outMsg = ex.Message;
+            _outSum = -1;
+        }
+        if (_outSum <= 0)
+            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, _outMsg);
+        return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, _outMsg);
+    }
+
+    /// <summary>
+    ///     鑾峰彇閮ㄩ棬涓嬫媺鍒楄〃鏁版嵁
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetDepartmentList([FromBody] dynamic model)
+    {
+        dynamic m = new ExpandoObject();
+        try
+        {
+            string sql = "SELECT id AS 閮ㄩ棬Id, name AS 閮ㄩ棬鍚嶇О FROM OA_Department";
+            var ds = DbHelperSQL.Query(sql);
+            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
+            {
+                var list = ds.Tables[0].TableToDynamicList();
+                m.list = list;
+            }
+            else
+            {
+                m.list = new List<dynamic>();
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            m.list = new List<dynamic>();
+        }
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+    }
+
+    /// <summary>
+    ///     鑾峰彇浜х嚎涓嬫媺鍒楄〃鏁版嵁
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetLineList([FromBody] dynamic model)
+    {
+        dynamic m = new ExpandoObject();
+        try
+        {
+            string sql = "SELECT line_no AS 浜х嚎缂栧彿, name AS 浜х嚎鍚嶇О FROM MES_WORKSHOP_LINE";
+            var ds = DbHelperSQL.Query(sql);
+            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
+            {
+                var list = ds.Tables[0].TableToDynamicList();
+                m.list = list;
+            }
+            else
+            {
+                m.list = new List<dynamic>();
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            m.list = new List<dynamic>();
+        }
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+    }
+
+}
\ No newline at end of file
diff --git a/WebApi/Gs.JJGZ/MesJjgzErrorJsController.cs b/WebApi/Gs.JJGZ/MesJjgzErrorJsController.cs
new file mode 100644
index 0000000..67abb18
--- /dev/null
+++ b/WebApi/Gs.JJGZ/MesJjgzErrorJsController.cs
@@ -0,0 +1,496 @@
+锘縰sing Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json.Linq;
+using System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
+using System.Text;
+using static Gs.Toolbox.UtilityHelper;
+
+namespace Gs.JJGZ;
+
+[ApiGroup(ApiGroupNames.JJGZ)]
+public class MesJjgzErrorJsController : IRomteService
+{
+    private readonly IHttpContextAccessor _http;
+
+    private readonly string _userCode, _userGuid, _orgFids;
+    public MesJjgzErrorJsController(IHttpContextAccessor httpContextAccessor)
+    {
+        _http = httpContextAccessor;
+        (_userCode, _userGuid, _orgFids) =
+            GetUserGuidAndOrgGuid(_http);
+    }
+
+
+    /// <summary>
+    ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> GetListPage([FromBody] dynamic model)
+    {
+        int currentPage = model.currentPage;
+        int everyPageSize = model.everyPageSize;
+        string sortName = model.sortName;
+        string keyWhere = model.keyWhere;
+        SqlParameter[] parameters =
+        {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+        var dset = new DataSet();
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        try
+        {
+            dset = DbHelperSQL.RunProcedure("prc_ERRORJS_lst", parameters, "0");
+            if (dset != null && dset.Tables.Count > 0 &&
+                dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+            {
+                var intTotal =
+                    int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                var pages = intTotal % everyPageSize != 0
+                    ? intTotal / everyPageSize + 1
+                    : intTotal / everyPageSize;
+                _pglist.total = intTotal;
+                _pglist.everyPageSize = everyPageSize;
+                _pglist.pages = pages;
+                var _dy = dset.Tables[0].TableToDynamicList();
+                _pglist.list = _dy;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+          ReturnCode.Exception, ex.Message);
+        }
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+
+    /// <summary>
+    ///     璇诲彇
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
+    {
+        string guid = model.guid.ToString();
+        dynamic m = new ExpandoObject();
+        m.list = new List<dynamic>();
+        m.list2 = new List<dynamic>();
+        // 鍋囪涓昏〃涓篗ES_JJGZ_JS_SALARY锛屾槑缁嗚〃涓篗ES_JJGZ_JS_SALARY_DETAIL
+        string mainTable = "MES_JJGZ_ERRORJS";
+        try
+        {
+            string sqlMain = $"SELECT a.* ,cj.USER_NAME as createByName ,sh.USER_NAME as checkUserName FROM {mainTable} a  left join SYS_USER cj on cj.ACCOUNT=a.create_by left join SYS_USER sh on sh.ACCOUNT=a.CHECK_USER WHERE a.guid='{guid}'";
+            var dsMain = DbHelperSQL.Query(sqlMain);
+            if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+            {
+                var dr = dsMain.Tables[0].Rows[0];
+                m = dr.RowToDynamic();
+            }
+
+            string sqlMain1 = $"SELECT * FROM MES_JJGZ_ERRORJS_DETAIL WHERE pid='{guid}'";
+
+
+            var _tb = DbHelperSQL.Query(sqlMain1);
+
+            m.list = _tb.Tables[0].TableToDynamicList();
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        if (m != null)
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+    }
+
+    /// <summary>
+    ///     鎻愪氦瀹℃牳鍙嶅鏍�
+    /// </summary>
+    /// <param name="mode"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> EditModelSubmit([FromBody] dynamic mode)
+    {
+        string _guid = mode.guid;
+        string _inFieldValue = mode.inFieldValue;
+        dynamic m = new ExpandoObject();
+        m.outSum = -1;
+        m.outMsg = "";
+        try
+        {
+            // 鍋囪鎻愪氦灏辨槸鏇存柊鏌愪釜瀛楁
+            string sql = $"UPDATE MES_JJGZ_ERRORJS SET check_status='{_inFieldValue}',check_date = getdate(), check_user='{_userGuid}' WHERE guid='{_guid}'";
+            int rows = DbHelperSQL.ExecuteSql(sql);
+            m.outSum = rows;
+            m.outMsg = rows > 0 ? "鎿嶄綔鎴愬姛锛�" : "鏈洿鏂颁换浣曟暟鎹�";
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "EditModelSubmit error锛�" + ex.Message);
+            m.outMsg = ex.Message;
+            m.outSum = -1;
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, ex.Message);
+        }
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+    }
+
+    /// <summary>
+    ///     澧炲姞鎴栫紪杈戝疄浣�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model)
+    {
+        {
+            Guid? guid = model.guid; //涓婚敭
+            string hourlyType = model.hourlyType; //鍘熷洜
+            string errorType = model.errorType;//宸ュ崟
+            string errorTime = model.errorTime;//缁勭粐
+            string hourlySalary = model.hourlySalary;//缁勭粐
+            string remark = model.remark;//缁勭粐
+            string DAA001 = model.DAA001;//缁勭粐
+            string DAAType = model.DAAType;//缁勭粐
+            string OrgId = model.OrgId;//缁勭粐
+            var _sb = new StringBuilder();
+            var _split = "|";
+            foreach (var m in model.list)
+            {
+                string _guid = m.Guid.ToString();
+                var _line = m.ID + _split
+                                        + m.Staff_Id + _split
+                                        + m.Staff_No + _split
+                                        + m.Staff_Name + _split
+                                        + m.Hour + _split
+                                        + m.Line_No + _split
+                                        + m.Line_Name + _split
+                                        + m.Salary + _split
+                                        + m.Remark + _split
+                                        + (CheckGuid(_guid) ? _guid : Guid.Empty.ToString());
+                if (_sb.Length > 0)
+                    _sb.Append("~");
+                _sb.Append(_line);
+            }
+            dynamic mObj = new ExpandoObject();
+            mObj.outMsg = "";
+            mObj.outSum = -1;
+            mObj.outGuid = "";
+            mObj.outNo = "";
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand("[prc_ERRORJS_edt]", conn))
+                {
+                    try
+                    {
+                        conn.Open();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters =
+                        {
+                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outSum", SqlDbType.Int),
+                        new("@outGuid", SqlDbType.UniqueIdentifier),
+                        new("@outNo", SqlDbType.NVarChar, 300),
+                        new("@inOrderGuid", CheckGuid(guid) ? guid : DBNull.Value),
+                        new("@inErrorTime",errorTime),
+                        new("@inErrorType",errorType),
+                        new("@inHourlyType",hourlyType),
+                        new("@inHourlySalary",hourlySalary),
+                        new("@inRemark",remark),
+                        new("@inDAA001",DAA001),
+                        new("@inDAAType",DAAType),
+                        new("@inOrgId",OrgId),
+                        new("@inEdtUserGuid", _userGuid),
+                        new("@inLineList", _sb.ToString())
+                    };
+                        parameters[0].Direction = ParameterDirection.Output;
+                        parameters[1].Direction = ParameterDirection.Output;
+                        parameters[2].Direction = ParameterDirection.Output;
+                        parameters[3].Direction = ParameterDirection.Output;
+                        foreach (var parameter in parameters)
+                            cmd.Parameters.Add(parameter);
+                        cmd.ExecuteNonQuery();
+                        mObj.outMsg = parameters[0].Value.ToString();
+                        mObj.outSum = int.Parse(parameters[1].Value.ToString());
+                        mObj.outGuid = parameters[2].Value.ToString();
+                        mObj.outNo = parameters[3].Value.ToString();
+                    }
+                    catch (Exception ex)
+                    {
+                        LogHelper.Debug(ToString(),
+                            "prc_ERRORJS_edt error锛�" + ex.Message);
+                        mObj.outMsg = ex.Message;
+                        mObj.outSum = -1;
+                    }
+                    finally
+                    {
+                        conn.Close();
+                    }
+                }
+            }
+            if (mObj.outSum <= 0)
+                return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
+            return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg);
+        }
+    }
+
+    /// <summary>
+    ///     鍒犻櫎涓昏〃鎴栨槑缁�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<int?> DeleteModel([FromBody] dynamic model)
+    {
+        int? rtnInt = (int)ReturnCode.Default;
+        Guid? guid = model.guid; //鍒拌揣鍗曚富閿�
+        string mxGuid = model.mxGuid;
+        var _outMsg = "";
+        var _outSum = -1;
+        try
+        {
+            if (CheckGuid(guid))
+            {
+                string sql = $"DELETE FROM MES_JJGZ_ERRORJS WHERE guid='{guid}' DELETE FROM MES_JJGZ_ERRORJS_DETAIL WHERE pid='{guid}'";
+                _outSum = DbHelperSQL.ExecuteSql(sql);
+                _outMsg = _outSum > 0 ? "鍒犻櫎鎴愬姛锛�" : "鏈垹闄や换浣曟暟鎹�";
+            }
+            else
+            {
+                _outMsg = "涓婚敭涓嶈兘涓虹┖锛�";
+                _outSum = -1;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "DeleteModel error锛�" + ex.Message);
+            _outMsg = ex.Message;
+            _outSum = -1;
+        }
+        if (_outSum <= 0)
+            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, _outMsg);
+        return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, _outMsg);
+    }
+
+    /// <summary>
+    ///     鑾峰彇璁℃椂绫诲瀷
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetTimeType([FromBody] dynamic model)
+    {
+        dynamic m = new ExpandoObject();
+        string mainTable = "MES_JJGZ_TIMETYPE";
+        try
+        {
+            string sqlMain = $"SELECT HourlyType 璁℃椂绫诲瀷,HourlySalary 璁℃椂鍗曚环 FROM MES_JJGZ_JSSALARY WHERE CHECK_STATUS = 1";
+            var dsMain = DbHelperSQL.Query(sqlMain);
+            if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+            {
+                var _tb = dsMain.Tables[0].TableToDynamicList();
+                m.list = _tb;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        if (m != null)
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+    }
+
+    /// <summary>
+    ///     鑾峰彇宸ュ崟
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetWOMDAAInfo([FromBody] dynamic model)
+    {
+        dynamic m = new ExpandoObject();
+        try
+        {
+            string sqlMain = $"select daa001 宸ュ崟鍙�,daa002 浜у搧缂栫爜,daa003 浜у搧鍚嶇О,daa004 浜у搧瑙勬牸,daa025 宸ュ崟绫诲瀷 from WOMDAA";
+            var dsMain = DbHelperSQL.Query(sqlMain);
+            if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+            {
+                var _tb = dsMain.Tables[0].TableToDynamicList();
+                m.list = _tb;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        if (m != null)
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+    }
+
+    /// <summary>
+    ///     鑾峰彇宸ュ崟
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetWORKSHOPLINE([FromBody] dynamic model)
+    {
+        dynamic m = new ExpandoObject();
+        try
+        {
+            string sqlMain = $"select line_no 浜х嚎,name 浜х嚎鍚嶇О from MES_WORKSHOP_LINE";
+            var dsMain = DbHelperSQL.Query(sqlMain);
+            if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+            {
+                var _tb = dsMain.Tables[0].TableToDynamicList();
+                m.list = _tb;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        if (m != null)
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+    }
+
+    /// <summary>
+    ///     鏍规嵁鐢ㄦ埛閫夋嫨鐨勯噰璐槑缁唃uid锛岃鍙栭渶瑕佷綔鍏ュ簱鍒拌揣鍗曠殑鏄庣粏
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> SelectPbaToView(JArray guidList)
+    {
+        dynamic m = new ExpandoObject();
+        try
+        {
+            var intArray = guidList.ToObject<string[]>();
+            var sbLine = new StringBuilder();
+            foreach (var str in intArray)
+            {
+                if (sbLine.Length > 0)
+                    sbLine.Append(",");
+                sbLine.Append(str);
+            }
+            string sqlMain = $"select a.id as Staff_Id,Staff_No ,Staff_Name,0 Hour ,d.Line_No Line_No , d.Line_Name Line_Name,0 Salary,''Remark,'' Id from MES_STAFF a left join OA_User b on a.staff_no = b.jobnumber left join Mes_DepartmentToLine d on d.DepartmentId = b.department where a.id in (select line from dbo.fn_split('{sbLine.ToString()}',','))";
+            var dsMain = DbHelperSQL.Query(sqlMain);
+            if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+            {
+                var _tb = dsMain.Tables[0].TableToDynamicList();
+                m.list = _tb;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        if (m != null)
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+    }
+
+    /// <summary>
+    ///     鏍规嵁鐢ㄦ埛閫夋嫨鐨勯噰璐槑缁唃uid锛岃鍙栭渶瑕佷綔鍏ュ簱鍒拌揣鍗曠殑鏄庣粏
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> SelectPba([FromBody] dynamic model)
+    {
+        int currentPage = model.currentPage;
+        int everyPageSize = model.everyPageSize;
+        string sortName = model.sortName;
+        string keyWhere = model.keyWhere;
+        string orgId = model.orgId;
+        var dset = new DataSet();
+        try
+        {
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand("[prc_item_staff_select]", conn))
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@inCurrentPage", currentPage),
+                        new("@inEveryPageSize", everyPageSize),
+                        new("@inSortName", sortName),
+                        new("@inSortOrder", ""),
+                        new("@inQueryWhere", keyWhere),
+                        new("@inOrgId", orgId),
+                        new("@inP1", ""),
+                        new("@inP2", "")
+                    };
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter); 
+                    using (var dt = new SqlDataAdapter(cmd))
+                    {
+                        dt.Fill(dset, "0");
+                    }
+                }
+
+                conn.Close();
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "prc_item_staff_select error锛�" + ex.Message);
+            return ReturnDto<PageList<dynamic>>.QuickReturn(
+                default(PageList<dynamic>), ReturnCode.Exception, "璇诲彇澶辫触");
+        }
+
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        if (dset != null && dset.Tables.Count > 0 &&
+            dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+        {
+            var intTotal =
+                int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+            var pages = intTotal % everyPageSize != 0
+                ? intTotal / everyPageSize + 1
+                : intTotal / everyPageSize;
+            _pglist.total = intTotal;
+            _pglist.everyPageSize = everyPageSize;
+            _pglist.pages = pages;
+            var _dy = dset.Tables[0].TableToDynamicList();
+            _pglist.list = _dy;
+        }
+
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+}
\ No newline at end of file
diff --git a/WebApi/Gs.JJGZ/MesJjgzJjsalaryController.cs b/WebApi/Gs.JJGZ/MesJjgzJjsalaryController.cs
new file mode 100644
index 0000000..87b0485
--- /dev/null
+++ b/WebApi/Gs.JJGZ/MesJjgzJjsalaryController.cs
@@ -0,0 +1,236 @@
+锘縰sing System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
+using System.Text;
+using Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using static Gs.Toolbox.UtilityHelper;
+
+namespace Gs.JJGZ;
+
+[ApiGroup(ApiGroupNames.JJGZ)]
+public class MesJjgzJjsalaryController : IRomteService
+{
+    private readonly IHttpContextAccessor _http;
+    private readonly string _userCode, _userGuid, _orgFids;
+
+    public MesJjgzJjsalaryController(IHttpContextAccessor httpContextAccessor)
+    {
+        _http = httpContextAccessor;
+        (_userCode, _userGuid, _orgFids) =
+            GetUserGuidAndOrgGuid(_http);
+    }
+
+    /// <summary>
+    ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> GetListPage([FromBody] dynamic model)
+    {
+        int currentPage = model.currentPage;
+        int everyPageSize = model.everyPageSize;
+        string sortName = model.sortName;
+        string keyWhere = model.keyWhere;
+        SqlParameter[] parameters =
+        {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+        var dset = new DataSet();
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        try
+        {
+            dset = DbHelperSQL.RunProcedure("prc_JJSALARY_lst", parameters, "0");
+            if (dset != null && dset.Tables.Count > 0 &&
+                dset.Tables[0].Rows.Count > 0)
+            {
+                var intTotal =
+                    int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                var pages = intTotal % everyPageSize != 0
+                    ? intTotal / everyPageSize + 1
+                    : intTotal / everyPageSize;
+                _pglist.total = intTotal;
+                _pglist.everyPageSize = everyPageSize;
+                _pglist.pages = pages;
+                var _dy = dset.Tables[0].TableToDynamicList();
+                _pglist.list = _dy;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Exception, ex.Message);
+        }
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+
+    /// <summary>
+    ///     璇诲彇
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
+    {
+        string guid = model.guid.ToString();
+        dynamic m = new ExpandoObject();
+        m.list = new List<dynamic>();
+        m.list2 = new List<dynamic>();
+        string mainTable = "MES_JJGZ_JJSALARY";
+        try
+        {
+            string sqlMain = $"SELECT A.*,b.item_no,b.item_name,b.item_model FROM {mainTable} A LEFT JOIN  MES_ITEMS b on a.ItemId = b.id WHERE a.guid='{guid}'";
+            var dsMain = DbHelperSQL.Query(sqlMain);
+            if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+            {
+                var dr = dsMain.Tables[0].Rows[0];
+                m = dr.RowToDynamic();
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        if (m != null)
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+    }
+
+    /// <summary>
+    ///     鎻愪氦瀹℃牳鍙嶅鏍�
+    /// </summary>
+    /// <param name="mode"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> EditModelSubmit([FromBody] dynamic mode)
+    {
+        string _guid = mode.guid;
+        string _inFieldValue = mode.inFieldValue;
+        dynamic m = new ExpandoObject();
+        m.outSum = -1;
+        m.outMsg = "";
+        try
+        {
+            string sql = $"UPDATE MES_JJGZ_JJSALARY SET check_status='{_inFieldValue}',check_date = getdate(), check_user='{_userGuid}' WHERE guid='{_guid}'";
+            int rows = DbHelperSQL.ExecuteSql(sql);
+            m.outSum = rows;
+            m.outMsg = rows > 0 ? "鎿嶄綔鎴愬姛锛�" : "鏈洿鏂颁换浣曟暟鎹�";
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "EditModelSubmit error锛�" + ex.Message);
+            m.outMsg = ex.Message;
+            m.outSum = -1;
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, ex.Message);
+        }
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+    }
+
+    /// <summary>
+    ///     澧炲姞鎴栫紪杈戝疄浣�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model)
+    {
+        Guid? guid = model.guid; //涓婚敭
+        string itemId = model.itemId;
+        string remark = model.remark;
+        string beginTime = model.beginTime;
+        string endTime = model.endTime;
+        string salary = model.salary;
+
+        dynamic mObj = new ExpandoObject();
+        mObj.outMsg = "";
+        mObj.outSum = -1;
+        mObj.outGuid = "";
+        mObj.outNo = "";
+        try
+        {
+            string sql;
+            if (CheckGuid(guid))
+            {
+                sql = $"UPDATE MES_JJGZ_JJSALARY SET ItemId='{itemId}', SALARY={salary}, Remark='{remark}', BeginTime='{beginTime}', EndTime='{endTime}' WHERE guid='{guid}'";
+            }
+            else
+            {
+                guid = Guid.NewGuid();
+                sql = $" declare @userBy nvarchar(20); select top 1 @userBy=[ACCOUNT] from [dbo].[SYS_USER] where guid='{_userGuid}' " +
+                    $"INSERT INTO MES_JJGZ_JJSALARY (guid, CREATE_BY, CREATE_DATE, ItemId, SALARY, Remark, BeginTime, EndTime) VALUES ('{guid}',@userBy,GETDATE(), '{itemId}', {salary}, '{remark}', '{beginTime}', '{endTime}' )";
+            }
+            int rows = DbHelperSQL.ExecuteSql(sql);
+            mObj.outSum = rows;
+            mObj.outGuid = guid.ToString();
+            mObj.outMsg = rows > 0 ? "鎿嶄綔鎴愬姛锛�" : "鏈洿鏂颁换浣曟暟鎹�";
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "EditModel error锛�" + ex.Message);
+            mObj.outMsg = ex.Message;
+            mObj.outSum = -1;
+        }
+        if (mObj.outSum <= 0)
+            return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
+        return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg);
+    }
+
+    /// <summary>
+    ///     鍒犻櫎涓昏〃
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<int?> DeleteModel([FromBody] dynamic model)
+    {
+        int? rtnInt = (int)ReturnCode.Default;
+        Guid? guid = model.guid;
+        var _outMsg = "";
+        var _outSum = -1;
+        try
+        {
+            if (CheckGuid(guid))
+            {
+                string sql = $"DELETE FROM MES_JJGZ_JJSALARY WHERE guid='{guid}'";
+                _outSum = DbHelperSQL.ExecuteSql(sql);
+                _outMsg = _outSum > 0 ? "鍒犻櫎鎴愬姛锛�" : "鏈垹闄や换浣曟暟鎹�";
+            }
+            else
+            {
+                _outMsg = "涓婚敭涓嶈兘涓虹┖锛�";
+                _outSum = -1;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "DeleteModel error锛�" + ex.Message);
+            _outMsg = ex.Message;
+            _outSum = -1;
+        }
+        if (_outSum <= 0)
+            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, _outMsg);
+        return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, _outMsg);
+    }
+}
\ No newline at end of file
diff --git a/WebApi/Gs.JJGZ/MesJjgzJssalaryController.cs b/WebApi/Gs.JJGZ/MesJjgzJssalaryController.cs
new file mode 100644
index 0000000..0077343
--- /dev/null
+++ b/WebApi/Gs.JJGZ/MesJjgzJssalaryController.cs
@@ -0,0 +1,278 @@
+锘縰sing System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
+using System.Text;
+using Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using static Gs.Toolbox.UtilityHelper;
+
+namespace Gs.JJGZ;
+
+[ApiGroup(ApiGroupNames.JJGZ)]
+public class MesJjgzJssalaryController : IRomteService
+{
+    private readonly IHttpContextAccessor _http;
+
+    private readonly string _userCode, _userGuid, _orgFids;
+    public MesJjgzJssalaryController(IHttpContextAccessor httpContextAccessor)
+    {
+        _http = httpContextAccessor;
+        (_userCode, _userGuid, _orgFids) =
+            GetUserGuidAndOrgGuid(_http);
+    }
+
+
+    /// <summary>
+    ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> GetListPage([FromBody] dynamic model)
+    {
+        int currentPage = model.currentPage;
+        int everyPageSize = model.everyPageSize;
+        string sortName = model.sortName;
+        string keyWhere = model.keyWhere;
+        SqlParameter[] parameters =
+        {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+        var dset = new DataSet();
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        try
+        {
+            dset = DbHelperSQL.RunProcedure("prc_JSSALARY_lst", parameters, "0");
+            if (dset != null && dset.Tables.Count > 0 &&
+                dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+            {
+                var intTotal =
+                    int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                var pages = intTotal % everyPageSize != 0
+                    ? intTotal / everyPageSize + 1
+                    : intTotal / everyPageSize;
+                _pglist.total = intTotal;
+                _pglist.everyPageSize = everyPageSize;
+                _pglist.pages = pages;
+                var _dy = dset.Tables[0].TableToDynamicList();
+                _pglist.list = _dy;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+          ReturnCode.Exception, ex.Message);
+        }
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+
+    /// <summary>
+    ///     璇诲彇
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
+    {
+        string guid = model.guid.ToString();
+        dynamic m = new ExpandoObject();
+        m.list = new List<dynamic>();
+        m.list2 = new List<dynamic>();
+        string mainTable = "MES_JJGZ_JSSALARY";
+        try
+        {
+            string sqlMain = $@"
+SELECT 
+    a.*,
+    cj.USER_NAME AS createByName,
+    sh.USER_NAME AS checkUserName
+FROM {mainTable} a
+LEFT JOIN SYS_USER cj ON cj.ACCOUNT = a.create_by
+LEFT JOIN SYS_USER sh ON sh.ACCOUNT = a.CHECK_USER
+WHERE a.guid = '{guid}'";
+            var dsMain = DbHelperSQL.Query(sqlMain);
+            if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+            {
+                var dr = dsMain.Tables[0].Rows[0];
+                m = dr.RowToDynamic();
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        if (m != null)
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+    }
+
+    /// <summary>
+    ///     鎻愪氦瀹℃牳鍙嶅鏍�
+    /// </summary>
+    /// <param name="mode"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> EditModelSubmit([FromBody] dynamic mode)
+    {
+        string _guid = mode.guid;
+        string _inFieldValue = mode.inFieldValue;
+        dynamic m = new ExpandoObject();
+        m.outSum = -1;
+        m.outMsg = "";
+        try
+        {
+            // 鍋囪鎻愪氦灏辨槸鏇存柊鏌愪釜瀛楁
+            string sql = $"UPDATE MES_JJGZ_JSSALARY SET check_status='{_inFieldValue}',check_date = getdate(), check_user='{_userGuid}' WHERE guid='{_guid}'";
+            int rows = DbHelperSQL.ExecuteSql(sql);
+            m.outSum = rows;
+            m.outMsg = rows > 0 ? "鎿嶄綔鎴愬姛锛�" : "鏈洿鏂颁换浣曟暟鎹�";
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "EditModelSubmit error锛�" + ex.Message);
+            m.outMsg = ex.Message;
+            m.outSum = -1;
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, ex.Message);
+        }
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+    }
+
+    /// <summary>
+    ///     澧炲姞鎴栫紪杈戝疄浣�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model)
+    {
+        Guid? guid = model.guid; //涓婚敭
+        string hourlyType = model.hourlyType;
+        string hourlySalary = model.hourlySalary;
+        string remark = model.remark;
+        string salaryType = model.salaryType;
+        string beginTime = model.beginTime;
+        string endTime = model.endTime;
+
+        dynamic mObj = new ExpandoObject();
+        mObj.outMsg = "";
+        mObj.outSum = -1;
+        mObj.outGuid = "";
+        mObj.outNo = "";
+        try
+        {
+            string sql;
+            if (CheckGuid(guid))
+            {
+                sql = $"UPDATE MES_JJGZ_JSSALARY SET HourlyType='{hourlyType}', HourlySalary='{hourlySalary}', Remark='{remark}', SalaryType='{salaryType}', BeginTime='{beginTime}', EndTime='{endTime}' WHERE guid='{guid}'";
+            }
+            else
+            {
+                guid = Guid.NewGuid();
+                sql = $" declare @userBy nvarchar(20); select top 1 @userBy=[ACCOUNT] from [dbo].[SYS_USER] where guid='{_userGuid}' " +
+                    $"INSERT INTO MES_JJGZ_JSSALARY (guid, CREATE_BY, CREATE_DATE, HourlyType, HourlySalary, Remark, SalaryType, BeginTime, EndTime) VALUES ('{guid}',@userBy,GETDATE(), '{hourlyType}', '{hourlySalary}', '{remark}', '{salaryType}', '{beginTime}', '{endTime}' )";
+            }
+            int rows = DbHelperSQL.ExecuteSql(sql);
+            mObj.outSum = rows;
+            mObj.outGuid = guid.ToString();
+            mObj.outMsg = rows > 0 ? "鎿嶄綔鎴愬姛锛�" : "鏈洿鏂颁换浣曟暟鎹�";
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "EditModel error锛�" + ex.Message);
+            mObj.outMsg = ex.Message;
+            mObj.outSum = -1;
+        }
+        if (mObj.outSum <= 0)
+            return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
+        return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg);
+    }
+
+    /// <summary>
+    ///     鍒犻櫎涓昏〃鎴栨槑缁�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<int?> DeleteModel([FromBody] dynamic model)
+    {
+        int? rtnInt = (int)ReturnCode.Default;
+        Guid? guid = model.guid; //鍒拌揣鍗曚富閿�
+        string mxGuid = model.mxGuid;
+        var _outMsg = "";
+        var _outSum = -1;
+        try
+        {
+            if (CheckGuid(guid))
+            {
+                string sql = $"DELETE FROM MES_JJGZ_JSSALARY WHERE guid='{guid}'";
+                _outSum = DbHelperSQL.ExecuteSql(sql);
+                _outMsg = _outSum > 0 ? "鍒犻櫎鎴愬姛锛�" : "鏈垹闄や换浣曟暟鎹�";
+            }
+            else
+            {
+                _outMsg = "涓婚敭涓嶈兘涓虹┖锛�";
+                _outSum = -1;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "DeleteModel error锛�" + ex.Message);
+            _outMsg = ex.Message;
+            _outSum = -1;
+        }
+        if (_outSum <= 0)
+            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, _outMsg);
+        return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, _outMsg);
+    }
+
+    /// <summary>
+    ///     璇诲彇
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetTimeType([FromBody] dynamic model)
+    {
+        dynamic m = new ExpandoObject();
+        string mainTable = "MES_JJGZ_TIMETYPE";
+        try
+        {
+            string sqlMain = $"SELECT * FROM {mainTable} WHERE CHECK_STATUS = 1";
+            var dsMain = DbHelperSQL.Query(sqlMain);
+            if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+            {
+                var _tb = dsMain.Tables[0].TableToDynamicList();
+                m.list = _tb;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        if (m != null)
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+    }
+
+}
\ No newline at end of file
diff --git a/WebApi/Gs.JJGZ/MesJjgzReportController.cs b/WebApi/Gs.JJGZ/MesJjgzReportController.cs
new file mode 100644
index 0000000..80f1283
--- /dev/null
+++ b/WebApi/Gs.JJGZ/MesJjgzReportController.cs
@@ -0,0 +1,169 @@
+锘縰sing System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
+using System.Text;
+using Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using static Gs.Toolbox.UtilityHelper;
+
+namespace Gs.JJGZ;
+
+
+[ApiGroup(ApiGroupNames.JJGZ)]
+public class MesJjgzReportController : IRomteService
+{
+    private readonly IHttpContextAccessor _http;
+
+    private readonly string _userCode, _userGuid, _orgFids;
+    public MesJjgzReportController(IHttpContextAccessor httpContextAccessor)
+    {
+        _http = httpContextAccessor;
+        (_userCode, _userGuid, _orgFids) =
+            GetUserGuidAndOrgGuid(_http);
+    }
+
+    /// <summary>
+    /// 鏈堝害鍑哄嫟
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetYQCQList([FromBody] dynamic model)
+    {
+        string lineNo = model.lineNo ?? "";
+        string beginDate = model.beginDate ?? DateTime.Now.AddMonths(-1).ToString();
+        string endDate = model.endDate ?? DateTime.Now.ToString();
+        dynamic m = new ExpandoObject();
+        m.list = new List<dynamic>();
+        SqlParameter[] parameters =
+        {
+            new("@lineNo", lineNo),
+            new("@beginDate", beginDate),
+            new("@endDate", endDate)
+        };
+        var dset = new DataSet();
+        try
+        {
+            dset = DbHelperSQL.RunProcedure("report_YDCQ", parameters, "0");
+            if (dset != null && dset.Tables.Count > 0 &&
+                dset.Tables[0].Rows.Count > 0)
+            {
+                //var dr = dset.Tables[0].Rows[0];
+                //m = dr.RowToDynamic();
+                var _tb = dset.Tables[0].TableToDynamicList();
+                m.list = _tb;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        if (m != null)
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+    }
+
+    /// <summary>
+    /// 鏈堝害宸ヨ祫
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetYDGZList([FromBody] dynamic model)
+    {
+        string date = model.date ?? DateTime.Now.AddMonths(-1).ToString();
+        string orgId = model.orgId;
+        dynamic m = new ExpandoObject();
+        m.list = new List<dynamic>();
+        SqlParameter[] parameters =
+        {
+            new("@inputOrgId", orgId),
+            new("@inputDate", date)
+
+        };
+        var dset = new DataSet();
+        try
+        {
+            dset = DbHelperSQL.RunProcedure("report_YDGZ", parameters, "0");
+            if (dset != null && dset.Tables.Count > 0 &&
+                dset.Tables[0].Rows.Count > 0)
+            {
+                //var dr = dset.Tables[0].Rows[0];
+                //m = dr.RowToDynamic();
+                var _tb = dset.Tables[0].TableToDynamicList();
+                m.list = _tb;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        if (m != null)
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+    }
+
+    /// <summary>
+    /// 璇︾粏
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> GetListPageJJMX([FromBody] dynamic model)
+    {
+        int currentPage = model.currentPage;
+        int everyPageSize = model.everyPageSize;
+        string sortName = model.sortName;
+        string keyWhere = model.keyWhere;
+        SqlParameter[] parameters =
+        {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+        var dset = new DataSet();
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        try
+        {
+            dset = DbHelperSQL.RunProcedure("report_jjmx", parameters, "0");
+            if (dset != null && dset.Tables.Count > 0 &&
+                dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+            {
+                var intTotal =
+                    int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                var pages = intTotal % everyPageSize != 0
+                    ? intTotal / everyPageSize + 1
+                    : intTotal / everyPageSize;
+                _pglist.total = intTotal;
+                _pglist.everyPageSize = everyPageSize;
+                _pglist.pages = pages;
+                var _dy = dset.Tables[0].TableToDynamicList();
+                _pglist.list = _dy;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+}
+
diff --git a/WebApi/Gs.JJGZ/MesJjgzScheduleController.cs b/WebApi/Gs.JJGZ/MesJjgzScheduleController.cs
new file mode 100644
index 0000000..2882ea0
--- /dev/null
+++ b/WebApi/Gs.JJGZ/MesJjgzScheduleController.cs
@@ -0,0 +1,300 @@
+锘縰sing System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
+using System.Text;
+using Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using static Gs.Toolbox.UtilityHelper;
+
+namespace Gs.JJGZ;
+
+[ApiGroup(ApiGroupNames.JJGZ)]
+public class MesJjgzScheduleController : IRomteService
+{
+    private readonly IHttpContextAccessor _http;
+
+    private readonly string _userCode, _userGuid, _orgFids;
+    public MesJjgzScheduleController(IHttpContextAccessor httpContextAccessor)
+    {
+        _http = httpContextAccessor;
+        (_userCode, _userGuid, _orgFids) =
+            GetUserGuidAndOrgGuid(_http);
+    }
+
+
+    /// <summary>
+    ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> GetListPage([FromBody] dynamic model)
+    {
+        int currentPage = model.currentPage;
+        int everyPageSize = model.everyPageSize;
+        string sortName = model.sortName;
+        string keyWhere = model.keyWhere;
+        
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        try
+        {
+            // 鏋勫缓鍒嗛〉鏌ヨSQL
+            string orderBy = string.IsNullOrEmpty(sortName) ? "CREATE_DATE DESC" : $"{sortName} ASC";
+            
+            // 鏌ヨ鎬绘暟
+            string countSql = $"SELECT COUNT(1) FROM MES_JJGZ_SCHEDULES a LEFT JOIN SYS_USER cj ON cj.ACCOUNT=a.create_by WHERE 1=1 {keyWhere}";
+            var countResult = DbHelperSQL.GetSingle(countSql);
+            int intTotal = countResult != null ? Convert.ToInt32(countResult) : 0;
+            
+            if (intTotal > 0)
+            {
+                // 鍒嗛〉鏌ヨ鏁版嵁
+                int offset = (currentPage - 1) * everyPageSize;
+                string dataSql = $@"
+                    SELECT * FROM (
+                        SELECT 
+                            ROW_NUMBER() OVER (ORDER BY {orderBy}) AS RowNum,
+                            a.*,
+                            cj.USER_NAME as createByName
+                        FROM MES_JJGZ_SCHEDULES a
+                        LEFT JOIN SYS_USER cj ON cj.ACCOUNT = a.create_by
+                        WHERE 1=1 {keyWhere}
+                    ) AS T
+                    WHERE T.RowNum BETWEEN {offset + 1} AND {offset + everyPageSize}";
+                
+                var dsMain = DbHelperSQL.Query(dataSql);
+                if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+                {
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dsMain.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+          ReturnCode.Exception, ex.Message);
+        }
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+
+    /// <summary>
+    ///     璇诲彇
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
+    {
+        string guid = model.guid.ToString();
+        dynamic m = new ExpandoObject();
+        string mainTable = "MES_JJGZ_SCHEDULES";
+        try
+        {
+            string sqlMain = $"SELECT a.* ,cj.USER_NAME as createByName  FROM {mainTable} a  left join SYS_USER cj on cj.ACCOUNT=a.create_by WHERE a.GUID='{guid}'";
+            var dsMain = DbHelperSQL.Query(sqlMain);
+            if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+            {
+                var dr = dsMain.Tables[0].Rows[0];
+                m = dr.RowToDynamic();
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        if (m != null)
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+    }
+
+    /// <summary>
+    ///     鎻愪氦瀹℃牳鍙嶅鏍�
+    /// </summary>
+    /// <param name="mode"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> EditModelSubmit([FromBody] dynamic mode)
+    {
+        string _guid = mode.guid;
+        string _inFieldValue = mode.inFieldValue;
+        dynamic m = new ExpandoObject();
+        m.outSum = -1;
+        m.outMsg = "";
+        try
+        {
+            string sql = $"UPDATE MES_JJGZ_SCHEDULES SET CHECK_STATUS='{_inFieldValue}',CHECK_DATE = getdate(), CHECK_USER='{_userGuid}' WHERE GUID='{_guid}'";
+            int rows = DbHelperSQL.ExecuteSql(sql);
+            m.outSum = rows;
+            m.outMsg = rows > 0 ? "鎿嶄綔鎴愬姛锛�" : "鏈洿鏂颁换浣曟暟鎹�";
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "EditModelSubmit error锛�" + ex.Message);
+            m.outMsg = ex.Message;
+            m.outSum = -1;
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, ex.Message);
+        }
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+    }
+
+    /// <summary>
+    ///     澧炲姞鎴栫紪杈戝疄浣�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model)
+    {
+        Guid? guid = model.guid; //涓婚敭
+        string onWorkTime1 = model.onWorkTime1; // 涓婂崍涓婄彮鏃堕棿
+        string offWorkTime1 = model.offWorkTime1; // 涓婂崍涓嬬彮鏃堕棿
+        string onWorkTime2 = model.onWorkTime2; // 涓嬪崍涓婄彮鏃堕棿
+        string offWorkTime2 = model.offWorkTime2; // 涓嬪崍涓嬬彮鏃堕棿
+        string onWorkTime3 = model.onWorkTime3; // 鍔犵彮涓婄彮鏃堕棿
+        string offWorkTime3 = model.offWorkTime3; // 鍔犵彮涓嬬彮鏃堕棿
+        string beginTime = model.beginTime; // 鐢熸晥鏃ユ湡
+        string endTime = model.endTime; // 澶辨晥鏃ユ湡
+        string remark = model.remark; // 澶囨敞
+
+        dynamic mObj = new ExpandoObject();
+        mObj.outMsg = "";
+        mObj.outSum = -1;
+        mObj.outGuid = "";
+        mObj.outNo = "";
+        
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            try
+            {
+                conn.Open();
+                
+                if (CheckGuid(guid))
+                {
+                    // 缂栬緫妯″紡
+                    string sql = $@"UPDATE MES_JJGZ_SCHEDULES SET 
+                        OnWorkTime1='{onWorkTime1}', 
+                        OffWorkTime1='{offWorkTime1}', 
+                        OnWorkTime2='{onWorkTime2}', 
+                        OffWorkTime2='{offWorkTime2}', 
+                        OnWorkTime3='{onWorkTime3}', 
+                        OffWorkTime3='{offWorkTime3}', 
+                        BeginTime='{beginTime}', 
+                        EndTime='{endTime}', 
+                        Remark='{remark}' 
+                        WHERE GUID='{guid}'";
+                    
+                    int rows = DbHelperSQL.ExecuteSql(sql);
+                    mObj.outSum = rows;
+                    mObj.outGuid = guid.ToString();
+                    mObj.outMsg = rows > 0 ? "鎿嶄綔鎴愬姛锛�" : "鏈洿鏂颁换浣曟暟鎹�";
+                }
+                else
+                {
+                    // 鏂板妯″紡 - 鐢熸垚鐝缂栧彿鍜孏UID
+                    guid = Guid.NewGuid();
+                    
+                    // 璋冪敤瀛樺偍杩囩▼鐢熸垚鐝缂栧彿
+                    using (var cmd = new SqlCommand("getOrderNo", conn))
+                    {
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        cmd.Parameters.Add(new SqlParameter("@wntype", "SC(鐝)"));
+                        cmd.Parameters.Add(new SqlParameter("@hNo", SqlDbType.NVarChar, 50) { Direction = ParameterDirection.Output });
+                        
+                        cmd.ExecuteNonQuery();
+                        string scheNo = cmd.Parameters["@hNo"].Value.ToString();
+                        
+                        // 鎻掑叆鏁版嵁
+                        string insertSql = $@"
+                            DECLARE @userBy NVARCHAR(20); 
+                            SELECT TOP 1 @userBy=[ACCOUNT] FROM [dbo].[SYS_USER] WHERE guid='{_userGuid}';
+                            INSERT INTO MES_JJGZ_SCHEDULES (
+                                GUID, CREATE_BY, CREATE_DATE, ScheNo, 
+                                OnWorkTime1, OffWorkTime1, OnWorkTime2, OffWorkTime2, 
+                                OnWorkTime3, OffWorkTime3, BeginTime, EndTime, Remark, CHECK_STATUS
+                            ) VALUES (
+                                '{guid}', @userBy, GETDATE(), '{scheNo}', 
+                                '{onWorkTime1}', '{offWorkTime1}', '{onWorkTime2}', '{offWorkTime2}', 
+                                '{onWorkTime3}', '{offWorkTime3}', '{beginTime}', '{endTime}', '{remark}', 0
+                            )";
+                        
+                        int rows = DbHelperSQL.ExecuteSql(insertSql);
+                        mObj.outSum = rows;
+                        mObj.outGuid = guid.ToString();
+                        mObj.outNo = scheNo;
+                        mObj.outMsg = rows > 0 ? "鎿嶄綔鎴愬姛锛�" : "鏈彃鍏ヤ换浣曟暟鎹�";
+                    }
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), "EditModel error锛�" + ex.Message);
+                mObj.outMsg = ex.Message;
+                mObj.outSum = -1;
+            }
+            finally
+            {
+                conn.Close();
+            }
+        }
+        
+        if (mObj.outSum <= 0)
+            return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
+        return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg);
+    }
+
+    /// <summary>
+    ///     鍒犻櫎涓昏〃鎴栨槑缁�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<int?> DeleteModel([FromBody] dynamic model)
+    {
+        int? rtnInt = (int)ReturnCode.Default;
+        Guid? guid = model.guid;
+        var _outMsg = "";
+        var _outSum = -1;
+        try
+        {
+            if (CheckGuid(guid))
+            {
+                string sql = $"DELETE FROM MES_JJGZ_SCHEDULES WHERE GUID='{guid}'";
+                _outSum = DbHelperSQL.ExecuteSql(sql);
+                _outMsg = _outSum > 0 ? "鍒犻櫎鎴愬姛锛�" : "鏈垹闄や换浣曟暟鎹�";
+            }
+            else
+            {
+                _outMsg = "涓婚敭涓嶈兘涓虹┖锛�";
+                _outSum = -1;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "DeleteModel error锛�" + ex.Message);
+            _outMsg = ex.Message;
+            _outSum = -1;
+        }
+        if (_outSum <= 0)
+            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, _outMsg);
+        return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, _outMsg);
+    }
+}
\ No newline at end of file
diff --git a/WebApi/Gs.JJGZ/MesJjgzTimeTypeController.cs b/WebApi/Gs.JJGZ/MesJjgzTimeTypeController.cs
new file mode 100644
index 0000000..59c9490
--- /dev/null
+++ b/WebApi/Gs.JJGZ/MesJjgzTimeTypeController.cs
@@ -0,0 +1,210 @@
+锘縰sing System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
+using System.Text;
+using Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using static Gs.Toolbox.UtilityHelper;
+
+namespace Gs.JJGZ;
+
+[ApiGroup(ApiGroupNames.JJGZ)]
+public class MesJjgzTimeTypeController : IRomteService
+{
+    private readonly IHttpContextAccessor _http;
+    private readonly string _userCode, _userGuid, _orgFids;
+
+    public MesJjgzTimeTypeController(IHttpContextAccessor httpContextAccessor)
+    {
+        _http = httpContextAccessor;
+        (_userCode, _userGuid, _orgFids) =
+            GetUserGuidAndOrgGuid(_http);
+    }
+
+    /// <summary>
+    ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetListPage([FromBody] dynamic model)
+    {
+        var dset = new DataSet();
+        dynamic m = new ExpandoObject();
+        m.list = new List<dynamic>();
+        try
+        {
+            string sqlMain = $"SELECT a.* ,cj.USER_NAME as createByName FROM MES_JJGZ_TIMETYPE a left join SYS_USER cj on cj.ACCOUNT=a.create_by ";
+            var dsMain = DbHelperSQL.Query(sqlMain);
+            if (dsMain != null && dsMain.Tables.Count > 0 &&
+                dsMain.Tables[0].Rows.Count > 0)
+            {
+                //var dr = dset.Tables[0].Rows[0];
+                //m = dr.RowToDynamic();
+                var _tb = dsMain.Tables[0].TableToDynamicList();
+                m.list = _tb;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+        }
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+            "璇诲彇鎴愬姛锛�");
+    }
+
+    /// <summary>
+    ///     璇诲彇
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
+    {
+        string guid = model.guid.ToString();
+        dynamic m = new ExpandoObject();
+        string mainTable = "MES_JJGZ_TIMETYPE";
+        try
+        {
+            string sqlMain = $" SELECT a.* ,sh.USER_NAME as checkUserName ,cj.USER_NAME as createByName " +
+                $" FROM {mainTable} a left join SYS_USER sh on sh.ACCOUNT=a.CHECK_USER left join SYS_USER cj on cj.ACCOUNT=a.create_by WHERE a.guid='{guid}' ";
+            var dsMain = DbHelperSQL.Query(sqlMain);
+            if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+            {
+                var dr = dsMain.Tables[0].Rows[0];
+                m = dr.RowToDynamic();
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        if (m != null)
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+    }
+
+    /// <summary>
+    ///     鎻愪氦瀹℃牳鍙嶅鏍�
+    /// </summary>
+    /// <param name="mode"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> EditModelSubmit([FromBody] dynamic mode)
+    {
+        string _guid = mode.guid;
+        string _inFieldValue = mode.inFieldValue;
+        dynamic m = new ExpandoObject();
+        m.outSum = -1;
+        m.outMsg = "";
+        try
+        {
+            string sql = $"UPDATE MES_JJGZ_TIMETYPE SET check_status='{_inFieldValue}',check_date = getdate(), check_user='{_userGuid}' WHERE guid='{_guid}'";
+            int rows = DbHelperSQL.ExecuteSql(sql);
+            m.outSum = rows;
+            m.outMsg = rows > 0 ? "鎿嶄綔鎴愬姛锛�" : "鏈洿鏂颁换浣曟暟鎹�";
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "EditModelSubmit error锛�" + ex.Message);
+            m.outMsg = ex.Message;
+            m.outSum = -1;
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, ex.Message);
+        }
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+    }
+
+    /// <summary>
+    ///     澧炲姞鎴栫紪杈戝疄浣�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model)
+    {
+        Guid? guid = model.guid; //涓婚敭
+        string name = model.name;
+        dynamic mObj = new ExpandoObject();
+        mObj.outMsg = "";
+        mObj.outSum = -1;
+        mObj.outGuid = "";
+        mObj.outNo = "";
+        try
+        {
+            string sql;
+            if (CheckGuid(guid))
+            {
+                sql = $"UPDATE MES_JJGZ_TIMETYPE SET Name='{name}' WHERE guid='{guid}'";
+            }
+            else
+            {
+                guid = Guid.NewGuid();
+                sql = $" declare @userBy nvarchar(20); select top 1 @userBy=[ACCOUNT] from [dbo].[SYS_USER] where guid='{_userGuid}' " +
+                    $"INSERT INTO MES_JJGZ_TIMETYPE (guid, CREATE_BY, CREATE_DATE, Name) VALUES ('{guid}',@userBy,GETDATE(), '{name}')";
+            }
+            int rows = DbHelperSQL.ExecuteSql(sql);
+            mObj.outSum = rows;
+            mObj.outGuid = guid.ToString();
+            mObj.outMsg = rows > 0 ? "鎿嶄綔鎴愬姛锛�" : "鏈洿鏂颁换浣曟暟鎹�";
+        }
+        catch (Exception ex)
+        {
+            string msg = ex.Message;
+            if (msg.Contains("UNIQUE KEY") || msg.Contains("閲嶅閿��"))
+            {
+                mObj.outMsg = $"绫诲瀷鍚嶇О鈥渰name}鈥濆凡瀛樺湪锛岃鍕块噸澶嶆坊鍔狅紒";
+            }
+            else
+            {
+                mObj.outMsg = msg;
+            }
+            LogHelper.Debug(ToString(), "EditModel error锛�" + msg);
+            mObj.outSum = -1;
+        }
+        if (mObj.outSum <= 0)
+            return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
+        return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg);
+    }
+
+    /// <summary>
+    ///     鍒犻櫎涓昏〃
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<int?> DeleteModel([FromBody] dynamic model)
+    {
+        int? rtnInt = (int)ReturnCode.Default;
+        Guid? guid = model.guid;
+        var _outMsg = "";
+        var _outSum = -1;
+        try
+        {
+            if (CheckGuid(guid))
+            {
+                string sql = $"DELETE FROM MES_JJGZ_TIMETYPE WHERE guid='{guid}'";
+                _outSum = DbHelperSQL.ExecuteSql(sql);
+                _outMsg = _outSum > 0 ? "鍒犻櫎鎴愬姛锛�" : "鏈垹闄や换浣曟暟鎹�";
+            }
+            else
+            {
+                _outMsg = "涓婚敭涓嶈兘涓虹┖锛�";
+                _outSum = -1;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "DeleteModel error锛�" + ex.Message);
+            _outMsg = ex.Message;
+            _outSum = -1;
+        }
+        if (_outSum <= 0)
+            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, _outMsg);
+        return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, _outMsg);
+    }
+}
\ No newline at end of file
diff --git a/WebApi/Gs.QiTaCk/MesCgthSqManager.cs b/WebApi/Gs.QiTaCk/MesCgthSqManager.cs
index 16b4956..1c5904e 100644
--- a/WebApi/Gs.QiTaCk/MesCgthSqManager.cs
+++ b/WebApi/Gs.QiTaCk/MesCgthSqManager.cs
@@ -118,7 +118,7 @@
                     m = dr.RowToDynamic();
                     var _tb = dset.Tables[1].TableToDynamicList();
                     m.list = _tb;
-                   
+
                 }
             }
             catch (Exception ex)
@@ -174,11 +174,9 @@
                     }
                     catch (Exception ex)
                     {
-                        LogHelper.Debug(ToString(),
-                            "prc_cgthsq_submit error锛�" + ex.Message);
+                        LogHelper.Debug(ToString(), "prc_cgthsq_submit error锛�" + ex.Message);
                         m.outMsg = ex.Message;
-                        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
-                            ex.Message);
+                        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, ex.Message);
                     }
                     finally
                     {
@@ -199,9 +197,15 @@
         {
             Guid? guid = model.Guid; //涓婚敭
             string bz = model.Remark; //澶囨敞
+            string thOrgId = model.thOrgId;//閫�璐х粍缁�
             string gysId = model.SuppId; //渚涘簲鍟�
             string Fmrmode = model.Fmrmode;//鏂瑰紡
             string Reason = model.Reason;//鍘熷洜
+            string fHasLink = model.fHasLink;
+            string fRequireOrgId = model.fRequireOrgId;
+            string fPurchaseDeptId = model.fPurchaseDeptId;
+            string fPurchaserId = model.fPurchaserId;
+            string fOwnerIdHead = model.fOwnerIdHead;
             StringBuilder _sb = new StringBuilder();
             string _split = "|";
             foreach (var m in model.list)
@@ -211,6 +215,7 @@
                     + m.Quantity + _split
                     + m.Bz + _split
                     + m.DepotId + _split
+                    + m.ItemId + _split
                     + (UtilityHelper.CheckGuid(_guid) ? _guid : Guid.Empty.ToString());
                 if (_sb.Length > 0)
                     _sb.Append("~");
@@ -241,6 +246,12 @@
                         new("@Fmrmode", Fmrmode),
                         new("@Reason", Reason),
                         new("@inEdtUserGuid", _userGuid),
+                        new("@thOrgId", thOrgId),
+                        new("@fHasLink", fHasLink),
+                        new("@fRequireOrgId", fRequireOrgId),
+                        new("@fPurchaseDeptId", fPurchaseDeptId),
+                        new("@fPurchaserId", fPurchaserId),
+                        new("@fOwnerIdHead", fOwnerIdHead),
                         new("@inLineList", _sb.ToString())
                     };
                         parameters[0].Direction = ParameterDirection.Output;
@@ -282,7 +293,7 @@
         public ReturnDto<int?> DeleteModelOrMx([FromBody] dynamic model)
         {
             int? rtnInt = (int)ReturnCode.Default;
-            Guid? guid = model.guid; 
+            Guid? guid = model.guid;
             string mxGuid = model.mxGuid;
             var _outMsg = "";
             var _outSum = -1;
diff --git a/WebApi/Gs.QiTaCk/MesCgytDjManager.cs b/WebApi/Gs.QiTaCk/MesCgytDjManager.cs
new file mode 100644
index 0000000..9eb8d22
--- /dev/null
+++ b/WebApi/Gs.QiTaCk/MesCgytDjManager.cs
@@ -0,0 +1,205 @@
+锘縰sing System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
+using Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using static Gs.Toolbox.UtilityHelper;
+
+
+namespace Gs.QiTaCk
+{
+    /// <summary>
+    /// 浠撳簱楠岄��
+    /// </summary>
+
+    [ApiGroup(ApiGroupNames.QTCK)]
+    public class MesCgytDjManager : IRomteService
+    {
+        private readonly IHttpContextAccessor _http;
+
+        private readonly string _userCode, _userGuid, _orgFids;
+
+        public MesCgytDjManager(IHttpContextAccessor httpContextAccessor)
+        {
+            _http = httpContextAccessor;
+            (_userCode, _userGuid, _orgFids) =
+                GetUserGuidAndOrgGuid(_http);
+        }
+
+        /// <summary>
+        ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetListPage(
+            [FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            SqlParameter[] parameters =
+            {
+                new("@inCurrentPage", currentPage),
+                new("@inEveryPageSize", everyPageSize),
+                new("@inSortName", sortName),
+                new("@inSortOrder", ""),
+                new("@inQueryWhere", keyWhere),
+                new("@inFid", ""),
+                new("@inP1", ""),
+                new("@inP2", ""),
+                new("@inP3", ""),
+                new("@inP4", "")
+            };
+            var dset = new DataSet();
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("prc_cgyt_dj_lst", parameters,
+                    "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+                {
+                    var intTotal =
+                        int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dset.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+                return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+              ReturnCode.Exception, ex.Message);
+            }
+
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+        /// <summary>
+        ///     璇诲彇
+        /// </summary>
+        /// <param name="guid"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
+        {
+            string guid = model.guid.ToString();
+            dynamic m = new ExpandoObject();
+            m.list = new List<dynamic>();
+            m.list2 = new List<dynamic>();
+            SqlParameter[] parameters =
+            {
+                new("@inMainGuid", guid),
+                new("@inP1", ""),
+                new("@inP2", ""),
+                new("@inP3", ""),
+                new("@inP4", "")
+            };
+            var dset = new DataSet();
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("[prc_cgyt_dj_mx]",
+                    parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0)
+                {
+                    var dr = dset.Tables[0].Rows[0];
+                    m = dr.RowToDynamic();
+                    var _tb = dset.Tables[1].TableToDynamicList();
+                    m.list = _tb;
+                    var _tb2 = dset.Tables[2].TableToDynamicList();
+                    m.list2 = _tb2;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+
+            if (m != null)
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+                    "璇诲彇鎴愬姛锛�");
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
+                "璇诲彇澶辫触锛�");
+        }
+
+        /// <summary>
+        ///   
+        /// </summary>
+        /// <param name="mode"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> EditModelSubmit([FromBody] dynamic mode)
+        {
+            string _guid = mode.guid;
+            string _inFieldValue = mode.inFieldValue;
+            string _proName = "prc_cgyt_dj_submit";
+            dynamic m = new ExpandoObject();
+            m.outSum = -1;
+            m.outMsg = "";
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand(_proName, conn))
+                {
+                    try
+                    {
+                        conn.Open();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters =
+                        {
+                            new("@outMsg", SqlDbType.NVarChar, 2500),
+                            new("@outSum", SqlDbType.Int),
+                            new("@inEdtUserGuid", _userGuid),
+                            new("@inOrderGuid", _guid),
+                            new("@inFieldValue", _inFieldValue),
+                            new("@in1", ""),
+                            new("@in2", "")
+                        };
+                        parameters[0].Direction = ParameterDirection.Output;
+                        parameters[1].Direction = ParameterDirection.Output;
+                        foreach (var parameter in parameters)
+                            cmd.Parameters.Add(parameter);
+                        cmd.ExecuteNonQuery();
+                        m.outMsg = parameters[0].Value.ToString();
+                        m.outSum = int.Parse(parameters[1].Value.ToString());
+                    }
+                    catch (Exception ex)
+                    {
+                        LogHelper.Debug(ToString(),
+                            "prc_cgthsq_dj_submit error锛�" + ex.Message);
+                        m.outMsg = ex.Message;
+                        return ReturnDto<dynamic>.QuickReturn(m,
+                            ReturnCode.Default,
+                            ex.Message);
+                    }
+                    finally
+                    {
+                        conn.Close();
+                    }
+                }
+            }
+
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+                "鎿嶄綔鎴愬姛锛�");
+        }
+    }
+}
\ No newline at end of file
diff --git a/WebApi/Gs.QiTaCk/MesItemQtDJManager.cs b/WebApi/Gs.QiTaCk/MesItemQtDJManager.cs
index 4199527..5b48a6e 100644
--- a/WebApi/Gs.QiTaCk/MesItemQtDJManager.cs
+++ b/WebApi/Gs.QiTaCk/MesItemQtDJManager.cs
@@ -189,5 +189,69 @@
             }
             return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
         }
+
+
+        /// <summary>
+        /// 鍏朵粬鍑哄簱鎶ヨ〃
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetListPageReport([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            SqlParameter[] parameters =
+            {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+            var dset = new DataSet();
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("prc_QTDJ_report", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+                {
+                    var intTotal =
+                        int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dset.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+                return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+              ReturnCode.Exception, ex.Message);
+            }
+
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
     }
 }
\ No newline at end of file
diff --git a/WebApi/Gs.QiTaCk/MesItemQtManager.cs b/WebApi/Gs.QiTaCk/MesItemQtManager.cs
index 845ebb3..4e5a3c9 100644
--- a/WebApi/Gs.QiTaCk/MesItemQtManager.cs
+++ b/WebApi/Gs.QiTaCk/MesItemQtManager.cs
@@ -207,8 +207,9 @@
             string inLyCus = model.inLyCus;//棰嗙敤瀹㈡埛
             string inLyDepart = model.inLyDepart;//棰嗙敤閮ㄩ棬
             string inKcfx = model.inKcfx;//搴撳瓨鏂瑰悜
-            string inFlck=model.inFlck;//鍙戞枡浠撳簱
             string inSource = model.inSource;
+            string qtlx = model.qtlx;//鍚庢潵澧炲姞鐨勭被鍨�
+            string wwgys = model.wwgys;//鍚庢潵澧炲姞涓婄殑濮斿渚涘簲鍟�
             var _sb = new StringBuilder();
             var _split = "|";
             foreach (var m in model.list)
@@ -218,6 +219,7 @@
                      m.ItemId + _split
                     + m.Sqsl + _split
                     + m.Bz + _split
+                    + m.DepotId + _split
                     + (UtilityHelper.CheckGuid(_guid) ? _guid : Guid.Empty.ToString());
                 if (_sb.Length > 0)
                     _sb.Append("~");
@@ -252,10 +254,11 @@
                         new("@inLyCus", inLyCus),
                         new("@inLyDepart", inLyDepart),
                         new("@inKcfx", inKcfx),
-                        new("@inFlck", inFlck),
                         new("@inEdtUserGuid", _userGuid),
                         new("@inLineList", _sb.ToString()),
-                        new("@inSource", inSource)
+                        new("@inSource", inSource),
+                        new("@qtlx", qtlx),
+                       new("@wwgys", wwgys),
                     };
                         parameters[0].Direction = ParameterDirection.Output;
                         parameters[1].Direction = ParameterDirection.Output;
diff --git a/WebApi/Gs.QiTaCk/MesSctkSqDjManager.cs b/WebApi/Gs.QiTaCk/MesSctkSqDjManager.cs
index 129159d..6a2683b 100644
--- a/WebApi/Gs.QiTaCk/MesSctkSqDjManager.cs
+++ b/WebApi/Gs.QiTaCk/MesSctkSqDjManager.cs
@@ -195,5 +195,8 @@
             return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
                 "鎿嶄綔鎴愬姛锛�");
         }
+
+
+       
     }
 }
\ No newline at end of file
diff --git a/WebApi/Gs.QiTaRk/MesItemQtrkDjManager.cs b/WebApi/Gs.QiTaRk/MesItemQtrkDjManager.cs
index 73acad5..8806278 100644
--- a/WebApi/Gs.QiTaRk/MesItemQtrkDjManager.cs
+++ b/WebApi/Gs.QiTaRk/MesItemQtrkDjManager.cs
@@ -190,4 +190,68 @@
         }
         return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
     }
+
+
+    /// <summary>
+    /// 鍏朵粬鍏ュ簱鎶ヨ〃
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> GetListPageReport([FromBody] dynamic model)
+    {
+        int currentPage = model.currentPage;
+        int everyPageSize = model.everyPageSize;
+        string sortName = model.sortName;
+        string keyWhere = model.keyWhere;
+        SqlParameter[] parameters =
+        {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+        var dset = new DataSet();
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        try
+        {
+            dset = DbHelperSQL.RunProcedure("prc_QTRKDJ_report", parameters, "0");
+            if (dset != null && dset.Tables.Count > 0 &&
+                dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+            {
+                var intTotal =
+                    int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                var pages = intTotal % everyPageSize != 0
+                    ? intTotal / everyPageSize + 1
+                    : intTotal / everyPageSize;
+                _pglist.total = intTotal;
+                _pglist.everyPageSize = everyPageSize;
+                _pglist.pages = pages;
+                var _dy = dset.Tables[0].TableToDynamicList();
+                _pglist.list = _dy;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+          ReturnCode.Exception, ex.Message);
+        }
+
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+
 }
\ No newline at end of file
diff --git a/WebApi/Gs.QiTaRk/MesItemQtrkManager.cs b/WebApi/Gs.QiTaRk/MesItemQtrkManager.cs
index 2a861f3..13e5ccf 100644
--- a/WebApi/Gs.QiTaRk/MesItemQtrkManager.cs
+++ b/WebApi/Gs.QiTaRk/MesItemQtrkManager.cs
@@ -207,7 +207,8 @@
         string kcfx = model.kcfx;//搴撳瓨鏂瑰悜
         string hzlx = model.hzlx;//璐т富绫诲瀷
         string inHz = model.inHz;//璐т富缁勭粐
-        string inSource=model.inSource;
+        string inSource = model.inSource;
+        string qtlx = model.qtlx;//鍚庢潵澧炲姞鐨勭被鍨�
         var _sb = new StringBuilder();
         var _split = "|";
         foreach (var m in model.list)
@@ -254,7 +255,8 @@
                         new("@inHz", inHz),
                         new("@inEdtUserGuid", _userGuid),
                         new("@inLineList", _sb.ToString()),
-                        new("@inSource", inSource)
+                        new("@inSource", inSource),
+                       new("@qtlx", qtlx)
                     };
                     parameters[0].Direction = ParameterDirection.Output;
                     parameters[1].Direction = ParameterDirection.Output;
diff --git a/WebApi/Gs.QiTaRk/MesItemTblManager.cs b/WebApi/Gs.QiTaRk/MesItemTblManager.cs
index c49e59e..9523718 100644
--- a/WebApi/Gs.QiTaRk/MesItemTblManager.cs
+++ b/WebApi/Gs.QiTaRk/MesItemTblManager.cs
@@ -111,7 +111,7 @@
             var dset = new DataSet();
             try
             {
-                dset = DbHelperSQL.RunProcedure("[prc_item_tbl_mx]", parameters,"0");
+                dset = DbHelperSQL.RunProcedure("[prc_item_tbl_mx]", parameters, "0");
                 if (dset != null && dset.Tables.Count > 0 &&
                     dset.Tables[0].Rows.Count > 0)
                 {
@@ -147,6 +147,7 @@
             string yy = model.yy; //鍘熷洜
             string inDaaGuid = model.inDaaGuid;//宸ュ崟
             string inOrgId = model.inOrgId;//缁勭粐
+            string _chkOut = model.chkOut;
             var _sb = new StringBuilder();
             var _split = "|";
             foreach (var m in model.list)
@@ -185,6 +186,7 @@
                         new("@inYy", yy),
                         new("@inDaaGuid", inDaaGuid),
                         new("@inOrgId", inOrgId),
+                        new("@chkOut", _chkOut),
                         new("@inEdtUserGuid", _userGuid),
                         new("@inLineList", _sb.ToString())
                     };
@@ -429,7 +431,6 @@
         {
             string _guid = mode.guid;
             string _inFieldValue = mode.inFieldValue;
-            string _chkOut=mode.chkOut;
             string _proName = "prc_item_tbl_submit";
             dynamic m = new ExpandoObject();
             m.outSum = -1;
@@ -449,7 +450,7 @@
                         new("@inEdtUserGuid", _userGuid),
                         new("@inOrderGuid", _guid),
                         new("@inFieldValue", _inFieldValue),
-                        new("@in1", _chkOut),
+                        new("@in1", ""),
                         new("@in2", "")
                     };
                         parameters[0].Direction = ParameterDirection.Output;
@@ -459,6 +460,12 @@
                         cmd.ExecuteNonQuery();
                         m.outMsg = parameters[0].Value.ToString();
                         m.outSum = int.Parse(parameters[1].Value.ToString());
+                        #region 鑷姩澶勬垚琛ユ枡鍗曟嵁
+                        if (m.outSum > 0)
+                        {
+                            autoBld(_guid);
+                        }
+                        #endregion
                     }
                     catch (Exception ex)
                     {
@@ -476,5 +483,54 @@
             }
             return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
         }
+
+        /// <summary>
+        /// 鑷姩鐢熸垚琛ユ枡鍗曟嵁
+        /// </summary>
+        /// <param name="_tblGuid">閫�琛ユ枡guid</param>
+        private void autoBld(string _tblGuid)
+        {
+            dynamic m = new ExpandoObject();
+            m.outSum = -1;
+            m.outMsg = "";
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand("prc_item_tbl_submit_autoBld", conn))
+                {
+                    try
+                    {
+                        conn.Open();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters =
+                        {
+                         new("@outMsg", SqlDbType.NVarChar, 2500),
+                        new("@outSum", SqlDbType.Int),
+                        new("@inEdtUserGuid", _userGuid),
+                        new("@inOrderGuid", _tblGuid),
+                        new("@inFieldValue", "1"),
+                        new("@in1", ""),
+                        new("@in2", "")
+                    };
+                        parameters[0].Direction = ParameterDirection.Output;
+                        parameters[1].Direction = ParameterDirection.Output;
+                        foreach (var parameter in parameters)
+                            cmd.Parameters.Add(parameter);
+                        cmd.ExecuteNonQuery();
+                        m.outMsg = parameters[0].Value.ToString();
+                        m.outSum = int.Parse(parameters[1].Value.ToString());
+                        LogHelper.Debug(ToString(), "prc_item_tbl_submit_autoBld error锛歰utSum:" + m.outSum + ",outMsg:" + m.outMsg);
+                    }
+                    catch (Exception ex)
+                    {
+                        LogHelper.Debug(ToString(), "prc_item_tbl_submit_autoBld error锛�"+ _tblGuid+":" + ex.Message);
+                        m.outMsg = ex.Message;
+                    }
+                    finally
+                    {
+                        conn.Close();
+                    }
+                }
+            }
+        }
     }
 }
\ No newline at end of file
diff --git a/WebApi/Gs.Report/BTDetails.cs b/WebApi/Gs.Report/BTDetails.cs
new file mode 100644
index 0000000..07e57e9
--- /dev/null
+++ b/WebApi/Gs.Report/BTDetails.cs
@@ -0,0 +1,126 @@
+锘縰sing Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
+using static Gs.Toolbox.UtilityHelper;
+
+
+namespace Gs.Report
+{
+
+    [ApiGroup(ApiGroupNames.Report)]
+    public class BTDetails : IRomteService
+    {
+        private readonly IHttpContextAccessor _http;
+        private readonly string _userCode, _userGuid, _orgFids;
+
+        public BTDetails(IHttpContextAccessor httpContextAccessor)
+        {
+            _http = httpContextAccessor;
+            (_userCode, _userGuid, _orgFids) =
+                GetUserGuidAndOrgGuid(_http);
+        }
+
+        /// <summary>
+        ///  鏉$爜浜ゆ槗鏄庣粏
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetListPage([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            SqlParameter[] parameters =
+            {
+            new("@inCurrentPage", currentPage),//
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+            var dset = new DataSet();
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("BTDetails", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+                {
+                    var intTotal =
+                        int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dset.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+        /// <summary>
+        ///     璇诲彇
+        /// </summary>
+        /// <param name="guid"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
+        {
+            string guid = model.guid.ToString();
+            dynamic m = new ExpandoObject();
+            SqlParameter[] parameters =
+            {
+                new("@inMainGuid", guid),
+            };
+            var dset = new DataSet();
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("[BTDetails_MX]", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0)
+                {
+                    var dr = dset.Tables[0].Rows[0];
+                    m = dr.RowToDynamic();
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+
+            if (m != null)
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+                    "璇诲彇鎴愬姛锛�");
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+        }
+    }
+}
+
diff --git a/WebApi/Gs.Report/CkController.cs b/WebApi/Gs.Report/CkController.cs
index 5a00caa..5e0dad2 100644
--- a/WebApi/Gs.Report/CkController.cs
+++ b/WebApi/Gs.Report/CkController.cs
@@ -1,11 +1,12 @@
-锘縰sing System.Data;
-using System.Data.SqlClient;
-using Gs.Toolbox;
+锘縰sing Gs.Toolbox;
 using Gs.Toolbox.ApiCore.Abstract.Mvc;
 using Gs.Toolbox.ApiCore.Common.Mvc;
 using Gs.Toolbox.ApiCore.Group;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
+using System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
 using static Gs.Toolbox.UtilityHelper;
 
 
@@ -60,7 +61,7 @@
             };
             try
             {
-                dset = DbHelperSQL.RunProcedure("sys_rpt_cktm", parameters, "0");
+                dset = DbHelperSQL.RunProcedure("report_cktm", parameters, "0");
                 if (dset != null && dset.Tables.Count > 0 &&
                     dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
                 {
@@ -86,7 +87,7 @@
         }
 
         /// <summary>
-        ///  閲囪喘鏄庣粏
+        /// 璇︾粏
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
@@ -143,5 +144,278 @@
             return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
                 ReturnCode.Success, "璇诲彇鎴愬姛");
         }
+
+
+
+        /// <summary>
+        ///  楠岄��鏄庣粏
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetListPageYtmx([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            SqlParameter[] parameters =
+            {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+            var dset = new DataSet();
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("report_ytmx", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+                {
+                    var intTotal =
+                        int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dset.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+
+        /// <summary>
+        ///  閫佽揣璁″垝鏄庣粏
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetListPageShjh([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            SqlParameter[] parameters =
+            {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+            var dset = new DataSet();
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("report_shjh", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+                {
+                    var intTotal =
+                        int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dset.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+        /// <summary>
+        ///     鏉$爜搴撳瓨鏄庣粏璇︾粏
+        /// </summary>
+        /// <param name="guid"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
+        {
+            string guid = model.guid.ToString();
+            dynamic m = new ExpandoObject();
+            SqlParameter[] parameters =
+            {
+                new("@inMainGuid", guid),
+            };
+            var dset = new DataSet();
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("[report_cktm_MX]", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0)
+                {
+                    var dr = dset.Tables[0].Rows[0];
+                    m = dr.RowToDynamic();
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+
+            if (m != null)
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+                    "璇诲彇鎴愬姛锛�");
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+        }
+
+
+        /// <summary>
+        ///  鍙婃椂搴撳瓨宸紓琛�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetListPageJskc([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            SqlParameter[] parameters =
+            {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+            var dset = new DataSet();
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("report_jskc", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+                {
+                    var intTotal =
+                        int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dset.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetListPageCQTM([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            SqlParameter[] parameters =
+            {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+            var dset = new DataSet();
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("report_CQTM", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+                {
+                    var intTotal =
+                        int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dset.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
     }
 }
diff --git a/WebApi/Gs.Report/QLController.cs b/WebApi/Gs.Report/QLController.cs
new file mode 100644
index 0000000..3ec3ce0
--- /dev/null
+++ b/WebApi/Gs.Report/QLController.cs
@@ -0,0 +1,305 @@
+锘縰sing Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
+using System.Security.Cryptography.X509Certificates;
+using static Gs.Toolbox.UtilityHelper;
+
+namespace Gs.Report
+{
+    [ApiGroup(ApiGroupNames.Report)]
+    public class QLController : IRomteService
+    {
+        private readonly IHttpContextAccessor _http;
+        private readonly string _userCode, _userGuid, _orgFids;
+
+        public QLController(IHttpContextAccessor httpContextAccessor)
+        {
+            _http = httpContextAccessor;
+            (_userCode, _userGuid, _orgFids) =
+                GetUserGuidAndOrgGuid(_http);
+        }
+
+        /// <summary>
+        /// 娆犳枡琛�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> GetQLList([FromBody] dynamic model)
+        {
+            string orgId = model.orgId ?? "";
+            string beginDate = model.beginDate ?? DateTime.Now.AddMonths(-1).ToString();
+            string endDate = model.endDate ?? DateTime.Now.ToString();
+            dynamic m = new ExpandoObject();
+            m.list = new List<dynamic>();
+            SqlParameter[] parameters =
+            {
+                new("@orgId", orgId),
+                new("@beginDate", beginDate),
+                new("@endDate", endDate)
+            };
+            var dset = new DataSet();
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("report_qlmx", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0)
+                {
+                    //var dr = dset.Tables[0].Rows[0];
+                    //m = dr.RowToDynamic();
+                    var _tb = dset.Tables[0].TableToDynamicList();
+                    m.list = _tb;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+            if (m != null)
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+        }
+
+
+        /// <summary>
+        /// 閫佽揣璁″垝
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> GetShjhList([FromBody] dynamic model)
+        {
+            string orgId = model.orgId ?? "";
+            string beginDate = model.beginDate ?? DateTime.Now.AddMonths(-1).ToString();
+            string endDate = model.endDate ?? DateTime.Now.ToString();
+            dynamic m = new ExpandoObject();
+            m.list = new List<dynamic>();
+            SqlParameter[] parameters =
+            {
+                new("@orgId", orgId),
+                new("@beginDate", beginDate),
+                new("@endDate", endDate)
+            };
+            var dset = new DataSet();
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("report_shjh", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0)
+                {
+                    var _tb = dset.Tables[0].TableToDynamicList();
+                    m.list = _tb;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+            if (m != null)
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+        }
+
+        /// <summary>
+        /// 鐗╂枡娆犳枡琛�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetWLQLList([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            SqlParameter[] parameters =
+            {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+        };
+            var dset = new DataSet();
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("report_ItemQL", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+                {
+                    var intTotal =
+                        int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dset.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+                return ReturnDto<dynamic>.QuickReturn(_pglist, ReturnCode.Default,
+                        "璇诲彇澶辫触," + ex.Message);
+            }
+
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+        /// <summary>
+        ///     鐢熸垚鎶ュ憡
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<int?> GetErpBOM([FromBody] dynamic model)
+        {
+            int? rtnInt = (int)ReturnCode.Default;
+            var _outMsg = "";
+            var _outSum = -1;
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand("[report_erpBOM]", conn))
+                {
+                    try
+                    {
+                        conn.Open();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters =
+                        {
+                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outSum", SqlDbType.Int)
+                    };
+                        parameters[0].Direction = ParameterDirection.Output;
+                        parameters[1].Direction = ParameterDirection.Output;
+                        foreach (var parameter in parameters)
+                            cmd.Parameters.Add(parameter);
+                        cmd.ExecuteNonQuery();
+                        _outMsg = parameters[0].Value.ToString();
+                        _outSum = int.Parse(parameters[1].Value.ToString());
+                    }
+                    catch (Exception ex)
+                    {
+                        LogHelper.Debug(ToString(),
+                            "prc_QT_del error锛�" + ex.Message);
+                        _outMsg = ex.Message;
+                        _outSum = -1;
+                    }
+                    finally
+                    {
+                        conn.Close();
+                    }
+                }
+            }
+            if (_outSum <= 0)
+                return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception,
+                    _outMsg);
+            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, _outMsg);
+        }
+
+        #region 宸ュ崟榻愬鎶ヨ〃
+
+        /// <summary>
+        /// 宸ュ崟榻愬鎶ヨ〃
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetGDQT([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            SqlParameter[] parameters =
+            {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+        };
+            var dset = new DataSet();
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("report_GDQT", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+                {
+                    var intTotal =
+                        int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dset.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> GetGDQTDetail([FromBody] dynamic model)
+        {
+            dynamic m = new ExpandoObject();
+            m.list = new List<dynamic>();
+
+            string daa001 = model.daa001;
+            SqlParameter[] parameters =
+            {
+                new("@daa001", daa001)
+            };
+            try
+            {
+                var dsMain = DbHelperSQL.RunProcedure("report_GDQTDetail", parameters, "0");
+                if (dsMain != null && dsMain.Tables.Count > 0 && dsMain.Tables[0].Rows.Count > 0)
+                {
+
+                    m.list = dsMain.Tables[0].TableToDynamicList();
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+            if (m != null)
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+        }
+
+        #endregion
+    }
+}
diff --git a/WebApi/Gs.Report/ReportController.cs b/WebApi/Gs.Report/ReportController.cs
index 5c65426..8a27b27 100644
--- a/WebApi/Gs.Report/ReportController.cs
+++ b/WebApi/Gs.Report/ReportController.cs
@@ -16,7 +16,7 @@
 {
     private readonly IHttpContextAccessor _http;
     private readonly string _userCode, _userGuid, _orgFids;
-
+    private readonly string _customTag = "瀹㈡埛妯℃澘";
     public ReportController(IHttpContextAccessor httpContextAccessor)
     {
         _http = httpContextAccessor;
@@ -25,7 +25,7 @@
     }
 
     /// <summary>
-    ///     鏍规嵁鎶ヨ〃鍙傛暟璇诲彇鎶ヨ〃鍚嶅瓧
+    ///     鏍规嵁鎶ヨ〃鍙傛暟璇诲彇鎶ヨ〃鍚嶅瓧(瀵瑰簲鐨勫瓨鍌ㄨ繃绋�)
     /// </summary>
     /// <returns></returns>
     private string _rptGetParameterName(string str)
@@ -87,7 +87,6 @@
         m.zb = new List<dynamic>();
         m.mx1 = new List<dynamic>();
         m.mx2 = new List<dynamic>();
-        var sbSql = new StringBuilder();
         var _blDate = false;
         try
         {
@@ -111,7 +110,14 @@
             if (_blDate == false)
                 return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
                     "璇诲彇澶辫触锛屾病鏈夊垵濮嬪寲妯℃澘锛�");
-            //璇绘暟鎹�
+            //濡傛灉鏄璁℃ā寮忥紝閫�鍑�
+            if (isDesign == 1)
+            {
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+            }
+            //璇婚渶瑕佹墦鍗扮殑鏁版嵁锛岀敤鏉ュ~鍏呮ā鏉�
+            if (_rptParameter.StartsWith(_customTag))
+                rptParameterName = "rpt_hgm";
             var dset = new DataSet();
             using (var conn = new SqlConnection(DbHelperSQL.strConn))
             {
@@ -139,10 +145,6 @@
                     }
                 }
                 conn.Close();
-            }
-            if (isDesign == 1)
-            {
-                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
             }
             //0鏄姸鎬侊紝1鏄富琛紝2鏄槑缁嗚〃锛�3鏄槑缁嗚〃
             if (dset.Tables[0].Rows[0]["msgState"].ToString() == "-1")
@@ -222,6 +224,8 @@
         return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
     }
 
+
+    #region MyRegion
     /// <summary>
     ///    
     /// </summary>
@@ -230,9 +234,17 @@
     [RequestMethod(RequestMethods.POST)]
     public ReturnDto<List<dynamic>> GetTemplateList([FromBody] dynamic model)
     {
+        string keyType = model.keyType;
+
         List<dynamic> lst = new List<dynamic>();
         System.Text.StringBuilder sbSql = new StringBuilder();
-        sbSql.Append("select  [GUID],[REPORT_TYPE],[REPORT_NAME] from [dbo].[SYS_REPORT_TEMPLATE] order by [REPORT_NAME] asc");
+        if (keyType == "瀹㈡埛妯℃澘")
+        {
+            sbSql.Append("select  [GUID],[REPORT_TYPE],[REPORT_NAME] from [dbo].[SYS_REPORT_TEMPLATE] where REPORT_TYPE like '" + _customTag + "%' ");
+            sbSql.Append(" union all select  [GUID],[REPORT_TYPE],[REPORT_NAME] from [dbo].[SYS_REPORT_TEMPLATE] where REPORT_TYPE='rpt_hgm' order by REPORT_TYPE asc");
+        }
+        else
+            sbSql.Append("select  [GUID],[REPORT_TYPE],[REPORT_NAME] from [dbo].[SYS_REPORT_TEMPLATE] order by [REPORT_TYPE] desc");
         var dset = new DataSet();
         try
         {
@@ -248,4 +260,90 @@
         return ReturnDto<List<dynamic>>.QuickReturn(lst, ReturnCode.Success,
             "璇诲彇鎴愬姛锛�");
     }
+
+    /// <summary>
+    /// 鍔犲叆
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<int?> AddModel([FromBody] dynamic model)
+    {
+        string reportName = model.reportName;
+        string reportType = _customTag + DateTime.Now.ToString("MMddHHmmff");
+        int rtnInt = (int)ReturnCode.Default;
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("[prc_report_edt]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@outGuid", SqlDbType.NVarChar, 100),
+                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@edtUserGuid", _userGuid),
+                        //new("@rptData", rptData),
+                        new("@rptType", reportType),
+                        new("@reportName", reportName)
+                    };
+                    parameters[0].Direction = ParameterDirection.Output;
+                    parameters[1].Direction = ParameterDirection.Output;
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    rtnInt = cmd.ExecuteNonQuery();
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.Debug(ToString(),
+                        "AddModel error锛�" + ex.Message);
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+        if (rtnInt > 0)
+            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+        else
+            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鎿嶄綔澶辫触锛岃閲嶈瘯锛�");
+    }
+
+    /// <summary>
+    /// 绉诲嚭
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<int?> DeleteModel([FromBody] dynamic model)
+    {
+        string guid = model.guid;
+        int rtnInt = (int)ReturnCode.Default;
+        if (guid.ToUpper() == "AF1105F3-1CFA-4E48-BE07-6EC3A184918C".ToUpper())
+        {
+            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鎿嶄綔澶辫触锛岄粯璁ゆā鐗堬紝涓嶈兘鍒犻櫎锛�");
+        }
+        try
+        {
+            StringBuilder strSql = new StringBuilder();
+            strSql.Append(" delete from SYS_REPORT_TEMPLATE ");
+            strSql.Append(" where guid='" + guid + "'");
+            rtnInt = DbHelperSQL.ExecuteSql(strSql.ToString());
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(this.ToString(), "DeleteModel error锛�" + ex.Message);
+            rtnInt = (int)ReturnCode.Exception;
+            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鎿嶄綔澶辫触锛�" + ex.Message);
+        }
+        if (rtnInt > 0)
+            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+        else
+            return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鎿嶄綔澶辫触锛岃閲嶈瘯锛�");
+    }
+    #endregion
+
 }
\ No newline at end of file
diff --git a/WebApi/Gs.Report/WOTraceCodes.cs b/WebApi/Gs.Report/WOTraceCodes.cs
new file mode 100644
index 0000000..2eada14
--- /dev/null
+++ b/WebApi/Gs.Report/WOTraceCodes.cs
@@ -0,0 +1,89 @@
+锘縰sing System.Data;
+using System.Data.SqlClient;
+using Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using static Gs.Toolbox.UtilityHelper;
+
+
+namespace Gs.Report
+{
+
+    [ApiGroup(ApiGroupNames.Report)]
+    public class WOTraceCodes : IRomteService
+    {
+        private readonly IHttpContextAccessor _http;
+        private readonly string _userCode, _userGuid, _orgFids;
+
+        public WOTraceCodes(IHttpContextAccessor httpContextAccessor)
+        {
+            _http = httpContextAccessor;
+            (_userCode, _userGuid, _orgFids) =
+                GetUserGuidAndOrgGuid(_http);
+        }
+
+        /// <summary>
+        ///  鏌ヨ宸ュ崟杩芥函鐮�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetListPage([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            SqlParameter[] parameters =
+            {
+            new("@inCurrentPage", currentPage),//
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+            var dset = new DataSet();
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("WOTraceCodes", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+                {
+                    var intTotal =
+                        int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dset.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+    }
+}
+
diff --git a/WebApi/Gs.Report/XlsInOutController.cs b/WebApi/Gs.Report/XlsInOutController.cs
index 93eb8f4..ced66de 100644
--- a/WebApi/Gs.Report/XlsInOutController.cs
+++ b/WebApi/Gs.Report/XlsInOutController.cs
@@ -27,6 +27,70 @@
     }
 
     /// <summary>
+    /// 閫氱敤瀛樺偍杩囩▼鎵ц鏂规硶
+    /// </summary>
+    private DataSet RunProcedure(string procName, IDictionary<string, object> paramDict)
+    {
+        var dset = new DataSet();
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var comm = new SqlCommand(procName, conn))
+            {
+                comm.CommandType = CommandType.StoredProcedure;
+                // 鍔ㄦ�佹坊鍔犲弬鏁�
+                foreach (var kvp in paramDict)
+                {
+                    comm.Parameters.AddWithValue("@" + kvp.Key, kvp.Value == null ? DBNull.Value : kvp.Value.ToString());
+                }
+                using (var adapter = new SqlDataAdapter(comm))
+                {
+                    adapter.Fill(dset, "0");
+                }
+            }
+        }
+        return dset;
+    }
+
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> XlsOutView_NEW([FromBody] dynamic mode)
+    {
+        string rptParameter = mode.outParameter;
+        var paramDict = new Dictionary<string, object>();
+        // 鍔ㄦ�佽В鏋愬弬鏁�
+        if (mode.outParams != null)
+        {
+            foreach (var prop in mode.outParams)
+            {
+                string name = prop.Name;
+                object value = prop.Value;
+                paramDict.Add(name, value);
+            }
+        }
+        var _pdfFloder = AppSettingsHelper.getValueByKey("DownPath");
+        var _pdfName = Guid.NewGuid() + ".xls";
+        var _pdfSaveFolder = Path.Combine(AppContext.BaseDirectory, _pdfFloder);
+        if (!Directory.Exists(_pdfSaveFolder))
+            Directory.CreateDirectory(_pdfSaveFolder);
+        var pdfSavePath = Path.Combine(_pdfSaveFolder, _pdfName);
+        dynamic m = new ExpandoObject();
+        try
+        {
+            var dset = RunProcedure(rptParameter, paramDict);
+            if (dset == null || dset.Tables.Count <= 0)
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Exception, "娌℃湁鏌ヨ鍒颁换浣曟暟鎹�");
+            var ary = new ArrayList();
+            ExcelHelper.ExportAryHead(dset.Tables[0], ary, pdfSavePath);
+            m.fileUrl = "down/" + _pdfName;
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Exception, "璇诲彇澶辫触," + ex.Message);
+        }
+    }
+
+    /// <summary>
     /// 鏁版嵁瀵煎嚭锛岄渶瑕佸瓨鍌ㄨ繃绋嬫敮鎾戯紝鐩墠娌$敤鍒�
     /// </summary>
     /// <param name="mode"></param>
@@ -68,7 +132,6 @@
                         dt.Fill(dset, "0");
                     }
                 }
-
                 conn.Close();
             }
 
@@ -107,6 +170,50 @@
 
 
     #region 鍚勭瀵煎嚭
+    /// <summary>
+    /// 瀵煎嚭daa澶囨枡鍗曡韩
+    /// </summary>
+    /// <param name="mode"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> XlsOutDaa([FromBody] dynamic mode)
+    {
+        string guid = mode.guid;
+        var _pdfFloder = AppSettingsHelper.getValueByKey("DownPath");
+        var _pdfName = Guid.NewGuid() + ".xls";
+        var _pdfSaveFolder = Path.Combine(AppContext.BaseDirectory, _pdfFloder);
+        if (!Directory.Exists(_pdfSaveFolder))
+            Directory.CreateDirectory(_pdfSaveFolder);
+        var pdfSavePath = Path.Combine(_pdfSaveFolder, _pdfName);
+        dynamic m = new ExpandoObject();
+        //璇绘暟鎹�
+        var dset = new DataSet();
+        SqlParameter[] parameters ={
+            new("@inMainGuid", guid),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")};
+        try
+        {
+            dset = DbHelperSQL.RunProcedure("[xlsOutDaa]", parameters, "0");
+            if (dset == null || dset.Tables.Count <= 0)
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Exception,
+                    "娌℃湁鏌ヨ鍒颁换浣曟暟鎹�");
+            var ary = new ArrayList();
+            ExcelHelper.ExportIqc(dset, pdfSavePath);
+            m.fileUrl = "down/" + _pdfName;
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+                "璇诲彇鎴愬姛锛�");
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Exception,
+                "璇诲彇澶辫触," + ex.Message);
+        }
+    }
+
 
     /// <summary>
     /// 瀵煎嚭棣栨
@@ -205,7 +312,7 @@
     [RequestMethod(RequestMethods.POST)]
     public ReturnDto<ExpandoObject> XlsOutXunJian([FromBody] dynamic mode)
     {
-        string begDate = mode.begDate;
+        string guid = mode.guid;
         var _pdfFloder = AppSettingsHelper.getValueByKey("DownPath");
         var _pdfName = Guid.NewGuid() + ".xls";
         var _pdfSaveFolder = Path.Combine(AppContext.BaseDirectory, _pdfFloder);
@@ -216,7 +323,7 @@
         //璇绘暟鎹�
         var dset = new DataSet();
         SqlParameter[] parameters ={
-            new("@begDate", begDate),
+            new("@inMainGuid", guid),
             new("@inP1", ""),
             new("@inP2", ""),
             new("@inP3", ""),
@@ -241,6 +348,49 @@
         }
     }
 
+    /// <summary>
+    /// 瀵煎嚭鎴愬搧妫�楠屾姤鍛�
+    /// </summary>
+    /// <param name="mode"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> XlsOutChengPin([FromBody] dynamic mode)
+    {
+        string guid = mode.guid;
+        var _pdfFloder = AppSettingsHelper.getValueByKey("DownPath");
+        var _pdfName = Guid.NewGuid() + ".xls";
+        var _pdfSaveFolder = Path.Combine(AppContext.BaseDirectory, _pdfFloder);
+        if (!Directory.Exists(_pdfSaveFolder))
+            Directory.CreateDirectory(_pdfSaveFolder);
+        var pdfSavePath = Path.Combine(_pdfSaveFolder, _pdfName);
+        dynamic m = new ExpandoObject();
+        //璇绘暟鎹�
+        var dset = new DataSet();
+        SqlParameter[] parameters ={
+            new("@inMainGuid", guid),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")};
+        try
+        {
+            dset = DbHelperSQL.RunProcedure("[xlsOutChengPin]", parameters, "0");
+            if (dset == null || dset.Tables.Count <= 0)
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Exception,
+                    "娌℃湁鏌ヨ鍒颁换浣曟暟鎹�");
+            var ary = new ArrayList();
+            ExcelHelper.ExportChengPin(dset, pdfSavePath);
+            m.fileUrl = "down/" + _pdfName;
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+                "璇诲彇鎴愬姛锛�");
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Exception,
+                "璇诲彇澶辫触," + ex.Message);
+        }
+    }
     #endregion
 
 
@@ -374,14 +524,15 @@
     {
         Dictionary<string, string> dic = new Dictionary<string, string>
         {
-           { "宸ュ崟缂栧彿", "t1" },
-            { "鏉$爜", "t2" },
+           //{ "宸ュ崟缂栧彿", "t1" },
+           { "鏉$爜", "t2" },
         };
         string tmpGuid = mode.tmpGuid;
+        string strType = mode.strType;//宸ュ崟缂栧彿锛岃繃婊ゅsheet涓殑宸ュ崟鎹�
         int? rtnInt = (int)ReturnCode.Default;
         int? _it = 0;//杩斿洖鐨勮鏁�
         string _msg = "";//杩斿洖鐨勪俊鎭�
-        (_it, _msg) = getTable(tmpGuid, dic);
+        (_it, _msg) = getTable(tmpGuid, dic, strType);
         if (_it <= 0)
             return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, _msg);
         System.Text.StringBuilder sbMsg = new System.Text.StringBuilder();
@@ -398,6 +549,7 @@
                                 new SqlParameter("@outMsg",SqlDbType.NVarChar,300),
                                 new SqlParameter("@inEdtUserGuid",_userGuid),
                                 new SqlParameter("@tmpGuid",tmpGuid),
+                                new SqlParameter("@strType",strType),
                             };
                     parameters[0].Direction = ParameterDirection.Output;
                     parameters[1].Direction = ParameterDirection.Output;
@@ -412,6 +564,7 @@
                 {
                     rtnInt = -1;
                     sbMsg.Append("鎿嶄綔澶辫触锛�" + ex.Message);
+                    LogHelper.Debug("", "XlsInDaaHgm:" + ex.Message);
                 }
                 finally
                 {
@@ -466,7 +619,7 @@
                     cmd.CommandType = CommandType.StoredProcedure;
                     SqlParameter[] parameters = new SqlParameter[] {
                                 new SqlParameter("@outGuid",SqlDbType.NVarChar,100),
-                                new SqlParameter("@outMsg",SqlDbType.NVarChar,300),
+                                new SqlParameter("@outMsg",SqlDbType.NVarChar,1200),
                                 new SqlParameter("@inEdtUserGuid",_userGuid),
                                 new SqlParameter("@tmpGuid",tmpGuid),
                                 new SqlParameter("@strType",strType),
@@ -483,7 +636,7 @@
                 catch (Exception ex)
                 {
                     rtnInt = -1;
-                    sbMsg.Append("鎿嶄綔澶辫触锛�" + ex.Message);
+                    sbMsg.Append("鎿嶄綔澶辫触1锛�" + ex.Message);
                 }
                 finally
                 {
@@ -501,8 +654,10 @@
     /// 杩斿洖dset
     /// </summary>
     /// <param name="tmpGuid"></param>
+    /// <param name="dic"></param>
+    /// <param name="strType">宸ュ崟缂栧彿锛岃繃婊ゅ琛ㄦ牸</param>
     /// <returns></returns>
-    private static (int?, string?) getTable(string tmpGuid, Dictionary<string, string> dic)
+    private static (int?, string?) getTable(string tmpGuid, Dictionary<string, string> dic,string strType="")
     {
         var _it = 0;
         var _msg = "";
@@ -529,19 +684,31 @@
         System.Data.DataTable dt = new DataTable();
         try
         {
-            dt = ExcelHelper.ExcelToTable(savePath);
+            dt = ExcelHelper.ExcelToTable(savePath,strType);
         }
         catch (Exception ex)
         {
             _it = 0;
             _msg = "鎿嶄綔澶辫触锛孍xcelToTable璇诲彇涓婁紶鏂囦欢鍙戠敓閿欒锛�" + ex.Message;
+            LogHelper.Debug("", "getTable:" + ex.Message);
         }
         dt.Columns.Add("tmpGuid", Type.GetType("System.Guid"));
         dt.Columns.Add("tmpIdx", Type.GetType("System.String"));
+
+        //濡傛灉鏄悗鐩栫爜锛屽姞涓婂伐鍗曞彿
+        if (!string.IsNullOrEmpty(strType)) {
+            dt.Columns.Add("宸ュ崟缂栧彿", Type.GetType("System.String"));
+        }
         for (int r = 0; r < dt.Rows.Count; r++)
         {
             dt.Rows[r]["tmpGuid"] = Guid.Parse(tmpGuid);
             dt.Rows[r]["tmpIdx"] = r + 3;
+
+            //濡傛灉鏄悗鐩栫爜锛屽姞涓婂伐鍗曞彿
+            if (!string.IsNullOrEmpty(strType))
+            {
+                dt.Rows[r]["宸ュ崟缂栧彿"] = strType;
+            }
         }
         bool flag = false;
         using (SqlConnection destinationConnection = new SqlConnection(DbHelperSQL.strConn))
@@ -555,9 +722,15 @@
                     bulkCopy.BatchSize = dt.Rows.Count;
                     bulkCopy.ColumnMappings.Add("tmpGuid", "tmpGuid");//鏄犲皠瀛楁鍚� DataTable鍒楀悕 ,鏁版嵁搴撳搴旂殑鍒楀悕
                     bulkCopy.ColumnMappings.Add("tmpIdx", "tmpIdx");
+                    //濡傛灉鏄悗鐩栫爜锛屽姞涓婂伐鍗曞彿
+                    if (!string.IsNullOrEmpty(strType))
+                    {
+                        bulkCopy.ColumnMappings.Add("宸ュ崟缂栧彿", "t1");
+                    }
+
                     foreach (KeyValuePair<string, string> kvp in dic)
                     {
-                        // bulkCopy.ColumnMappings.Add("鍚嶇О", "t1");
+                        //bulkCopy.ColumnMappings.Add("鍚嶇О", "t1");
                         bulkCopy.ColumnMappings.Add(kvp.Key, kvp.Value);
                     }
                     bulkCopy.WriteToServer(dt);
@@ -566,6 +739,7 @@
                 catch (Exception ex)
                 {
                     _it = 0;
+                    LogHelper.Debug("", "getTable:" + ex.Message);
                     _msg = "鎿嶄綔澶辫触锛宐ulkCopy璇诲彇涓婁紶鏂囦欢鍙戠敓閿欒锛�" + ex.Message;
                 }
             }
diff --git a/WebApi/Gs.Sales/SalesDeliverManager.cs b/WebApi/Gs.Sales/SalesDeliverManager.cs
index 4ff86b1..91c80d1 100644
--- a/WebApi/Gs.Sales/SalesDeliverManager.cs
+++ b/WebApi/Gs.Sales/SalesDeliverManager.cs
@@ -157,6 +157,7 @@
                                     + m.Sqsl + _split
                                     + m.Bz + _split
                                     + m.Yjsj + _split
+                                    + m.depotId + _split
                                     + (CheckGuid(_guid) ? _guid : Guid.Empty.ToString());
             if (_sb.Length > 0)
                 _sb.Append("~");
diff --git a/WebApi/Gs.Sales/SalesManager.cs b/WebApi/Gs.Sales/SalesManager.cs
index 69c7041..ddad263 100644
--- a/WebApi/Gs.Sales/SalesManager.cs
+++ b/WebApi/Gs.Sales/SalesManager.cs
@@ -120,7 +120,7 @@
                     m = dr.RowToDynamic();
                     var _tb = dset.Tables[1].TableToDynamicList();
                     m.list = _tb;
-                    
+
                 }
             }
             catch (Exception ex)
@@ -137,7 +137,7 @@
 
 
         /// <summary>
-        /// 閫夋嫨寮圭獥
+        /// 閿�鍞嚭搴撴椂锛岄�夋嫨閿�鍞鍗�
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
@@ -287,7 +287,7 @@
 
 
         /// <summary>
-        ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+        /// 閫夋嫨閿�鍞��璐х敵璇锋槑缁嗭紝鏈夋簮鍗曟嵁锛岄攢鍞嚭搴撳崟
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
@@ -298,7 +298,8 @@
             int everyPageSize = model.everyPageSize;
             string sortName = model.sortName;
             string keyWhere = model.keyWhere;
-            string keyType = model.keyType;//杩欐槸閿�鍞鍗曞彿
+            string inP1 = model.inP1;//杩欐槸瀹㈡埛id
+            string inP2 = model.inP2;//杩欐槸閿�鍞粍缁噄d
             var dset = new DataSet();
             try
             {
@@ -315,8 +316,8 @@
                         new("@inSortName", sortName),
                         new("@inSortOrder", ""),
                         new("@inQueryWhere", keyWhere),
-                        new("@inP1",keyType),//杩欐槸閿�鍞鍗曞彿
-                        new("@inP2", "")
+                        new("@inP1",inP1),
+                        new("@inP2", inP2)
                     };
                         foreach (var parameter in parameters)
                             cmd.Parameters.Add(parameter);
@@ -359,5 +360,81 @@
             return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
                 ReturnCode.Success, "璇诲彇鎴愬姛");
         }
+
+
+        /// <summary>
+        /// 閫夋嫨閿�鍞��璐х敵璇锋槑缁嗭紝鏈夋簮鍗曟嵁锛岄攢鍞崟
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> SelectFormFhMxSales([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            string inP1 = model.inP1;//杩欐槸瀹㈡埛id
+            string inP2 = model.inP2;//杩欐槸閿�鍞粍缁噄d
+            var dset = new DataSet();
+            try
+            {
+                using (var conn = new SqlConnection(DbHelperSQL.strConn))
+                {
+                    using (var cmd = new SqlCommand("[select_salesFhMxSales]", conn))
+                    {
+                        conn.Open();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters =
+                        {
+                        new("@inCurrentPage", currentPage),
+                        new("@inEveryPageSize", everyPageSize),
+                        new("@inSortName", sortName),
+                        new("@inSortOrder", ""),
+                        new("@inQueryWhere", keyWhere),
+                        new("@inP1",inP1),
+                        new("@inP2", inP2)
+                    };
+                        foreach (var parameter in parameters)
+                            cmd.Parameters.Add(parameter);
+                        using (var dt = new SqlDataAdapter(cmd))
+                        {
+                            dt.Fill(dset, "0");
+                        }
+                    }
+                    conn.Close();
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), "select_salesFhMxSales error锛�" + ex.Message);
+                return ReturnDto<PageList<dynamic>>.QuickReturn(default(PageList<dynamic>), ReturnCode.Exception, "璇诲彇澶辫触");
+            }
+
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            if (dset != null && dset.Tables.Count > 0 &&
+                dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+            {
+                var intTotal =
+                    int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                var pages = intTotal % everyPageSize != 0
+                    ? intTotal / everyPageSize + 1
+                    : intTotal / everyPageSize;
+                _pglist.total = intTotal;
+                _pglist.everyPageSize = everyPageSize;
+                _pglist.pages = pages;
+                var _dy = dset.Tables[0].TableToDynamicList();
+                _pglist.list = _dy;
+            }
+
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
     }
 }
diff --git a/WebApi/Gs.Sales/SalesReturnManager.cs b/WebApi/Gs.Sales/SalesReturnManager.cs
index 2e9e9a9..1133c4d 100644
--- a/WebApi/Gs.Sales/SalesReturnManager.cs
+++ b/WebApi/Gs.Sales/SalesReturnManager.cs
@@ -144,10 +144,16 @@
         {
             Guid? guid = model.guid; //涓婚敭
             string djlx = model.djlx;//鍗曟嵁绫诲瀷
-            string salesId = model.salesId;//閿�鍞崟鍙�
             string inRemark = model.inRemark;//澶囨敞
             string ckId = model.ckId;
-            string FIsLink = model.FIsLink;
+            string fIsLink = model.fIsLink;
+            string fHasLinkSource=model.fHasLinkSource;
+            //涓嬮潰鏄棤婧愮殑
+            string salesOrg = model.salesOrg;
+            string inventoryOrg = model.inventoryOrg;
+            string returnCustomer = model.returnCustomer;
+            string salesDept = model.salesDept;
+            string xsms = model.xsms;
             var _sb = new StringBuilder();
             var _split = "|";
             foreach (var m in model.list)
@@ -158,6 +164,7 @@
                                         + m.Bz + _split
                                         + m.Thlx + _split
                                         + m.Thrq + _split
+                                        + m.ItemId + _split
                                         + (CheckGuid(_guid) ? _guid : Guid.Empty.ToString());
                 if (_sb.Length > 0)
                     _sb.Append("~");
@@ -184,11 +191,16 @@
                         new("@outNo", SqlDbType.NVarChar, 300),
                         new("@inOrderGuid",UtilityHelper.CheckGuid(guid)? guid : DBNull.Value),
                         new("@djlx", djlx),
-                        new("@salesId", salesId),
                         new("@inRemark", inRemark),
                         new("@ckId", ckId),
                         new("@inEdtUserGuid", _userGuid),
-                           new("@FIsLink", FIsLink),
+                        new("@fIsLink", fIsLink),
+                        new("@fHasLinkSource", fHasLinkSource),
+                        new("@salesOrg", salesOrg),
+                        new("@inventoryOrg", inventoryOrg),
+                        new("@returnCustomer", returnCustomer),
+                        new("@salesDept", salesDept),
+                        new("@xsms", xsms),
                         new("@inLineList", _sb.ToString())
                 };
                         parameters[0].Direction = ParameterDirection.Output;
@@ -206,7 +218,7 @@
                     catch (Exception ex)
                     {
                         LogHelper.Debug(ToString(),
-                            "prc_salesDeliver_edt error锛�" + ex.Message);
+                            "prc_salesReturn_edt error锛�" + ex.Message);
                         mObj.outMsg = ex.Message;
                         mObj.outSum = -1;
                     }
diff --git a/WebApi/Gs.Sys/Models/SysLogOperation.cs b/WebApi/Gs.Sys/Models/SysLogOperation.cs
index 99649ce..dad06d7 100644
--- a/WebApi/Gs.Sys/Models/SysLogOperation.cs
+++ b/WebApi/Gs.Sys/Models/SysLogOperation.cs
@@ -7,70 +7,70 @@
 [SugarTable("SYS_LOG_OPERATION")]
 public class SysLogOperation
 {
- /// <summary>
- ///     涓婚敭
- /// </summary>
- [SugarColumn(ColumnName = "GUID", IsPrimaryKey = true)]
+    /// <summary>
+    ///     涓婚敭
+    /// </summary>
+    [SugarColumn(ColumnName = "GUID", IsPrimaryKey = true)]
     public Guid? Guid { get; set; }
 
- /// <summary>
- ///     鎿嶄綔绫诲瀷
- /// </summary>
- [SugarColumn(ColumnName = "OPERATION_TYPE")]
+    /// <summary>
+    ///     鎿嶄綔绫诲瀷
+    /// </summary>
+    [SugarColumn(ColumnName = "OPERATION_TYPE")]
     public string OperationType { get; set; }
 
- /// <summary>
- ///     鎿嶄綔鏃堕棿
- /// </summary>
- [SugarColumn(ColumnName = "OPERATION_TIME")]
+    /// <summary>
+    ///     鎿嶄綔鏃堕棿
+    /// </summary>
+    [SugarColumn(ColumnName = "OPERATION_TIME")]
     public DateTime? OperationTime { get; set; }
 
- /// <summary>
- ///     鎿嶄綔琛�
- /// </summary>
- [SugarColumn(ColumnName = "OPERATION_TABLE")]
+    /// <summary>
+    ///     鎿嶄綔琛�
+    /// </summary>
+    [SugarColumn(ColumnName = "OPERATION_TABLE")]
     public string OperationTable { get; set; }
 
- /// <summary>
- ///     鎿嶄綔鑰単uid
- /// </summary>
- [SugarColumn(ColumnName = "USER_GUID")]
+    /// <summary>
+    ///     鎿嶄綔鑰単uid
+    /// </summary>
+    [SugarColumn(ColumnName = "USER_GUID")]
     public Guid? UserGuid { get; set; }
 
- /// <summary>
- ///     鎿嶄綔鑰呭悕绉�
- /// </summary>
- [SugarColumn(ColumnName = "USER_NAME")]
+    /// <summary>
+    ///     鎿嶄綔鑰呭悕绉�
+    /// </summary>
+    [SugarColumn(ColumnName = "USER_NAME")]
     public string UserName { get; set; }
 
- /// <summary>
- ///     绐椾綋鍚嶇О
- /// </summary>
- [SugarColumn(ColumnName = "FORM_NAME")]
+    /// <summary>
+    ///     绐椾綋鍚嶇О
+    /// </summary>
+    [SugarColumn(ColumnName = "FORM_NAME")]
     public string FormName { get; set; }
 
- /// <summary>
- ///     绐椾綋鏍囬
- /// </summary>
- [SugarColumn(ColumnName = "FORM_CAPTION")]
+    /// <summary>
+    ///     绐椾綋鏍囬
+    /// </summary>
+    [SugarColumn(ColumnName = "FORM_CAPTION")]
     public string FormCaption { get; set; }
 
- /// <summary>
- ///     鎸夐挳鍚嶇О
- /// </summary>
- [SugarColumn(ColumnName = "MENU_NAME")]
+    /// <summary>
+    ///     鎸夐挳鍚嶇О
+    /// </summary>
+    [SugarColumn(ColumnName = "MENU_NAME")]
     public string MenuName { get; set; }
 
- /// <summary>
- ///     璇︽儏
- /// </summary>
- [SugarColumn(ColumnName = "MSG")]
+    /// <summary>
+    ///     璇︽儏
+    /// </summary>
+    [SugarColumn(ColumnName = "MSG")]
     public string Msg { get; set; }
 
- /// <summary>
- ///     鍏宠仈guid
- /// </summary>
- [SugarColumn(ColumnName = "ABT_GUID")]
+    /// <summary>
+    ///     鍏宠仈guid
+    /// </summary>
+    [SugarColumn(ColumnName = "ABT_GUID")]
     public Guid? AbtGuid { get; set; }
 
 
@@ -93,4 +93,25 @@
     /// </summary>
     [SugarColumn(ColumnName = "RTN_JSON")]
     public string? RtnJson { get; set; }
+
+    /// <summary>
+    ///    鏄惁鍙戦�乪rp
+    /// </summary>
+    [SugarColumn(ColumnName = "IS_ERP")]
+    public bool? IsErp { get; set; }
+
+    /// <summary>
+    ///    鍙戦�佺粨鏋�
+    /// </summary>
+    [SugarColumn(ColumnName = "IS_SUCCESS")]
+    public bool? IsSuccess { get; set; }
+
+    /// <summary>
+    /// 琛岄鑹�0姝e父锛�1绾㈣壊
+    /// </summary>
+    [SugarColumn(IsIgnore = true)] public int? isRed { get; set; }
+    /// <summary>
+    /// 鍙戦�乪rp缁撴灉
+    /// </summary>
+    [SugarColumn(IsIgnore = true)] public string? isErpDetail { get; set; }
 }
\ No newline at end of file
diff --git a/WebApi/Gs.Sys/Services/FmController.cs b/WebApi/Gs.Sys/Services/FmController.cs
index d985ea0..30c7db4 100644
--- a/WebApi/Gs.Sys/Services/FmController.cs
+++ b/WebApi/Gs.Sys/Services/FmController.cs
@@ -176,6 +176,41 @@
                 "璇诲彇澶辫触锛�");
         }
 
+
+        /// <summary>
+        ///     璇诲彇
+        /// </summary>
+        /// <param name="guid"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<string> GetModelByVersion([FromBody] dynamic model)
+        {
+            string formPath = model.formPath.ToString();
+            string strMsg = "";
+            SqlParameter[] parameters =
+            {
+                new("@formPath", formPath),
+                new("@userGuid", _userGuid),
+            };
+            var dset = new DataSet();
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("[fm_get_layout_ver]", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0
+                 )
+                {
+                    strMsg = dset.Tables[0].Rows[0][0].ToString();
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message + ",formPath:" + formPath + ",_userGuid:" + _userGuid);
+
+            }
+            return ReturnDto<string>.QuickReturn(strMsg, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        }
+
+
         #endregion
 
         private int? chkAdmin()
@@ -220,15 +255,18 @@
                 string keyUserGuid = model.keyUserGuid;
                 string keyGuid = model.keyGuid;
                 string keyNo = model.keyNo;
-                string idtype = model.idtype;//杩欎釜浠呬粎鏄洿鏂板伐鍗曠姸鎬佺殑鏃跺�欐湁
+                string idtype = model.idtype;//2浠呬粎鏄洿鏂板伐鍗曠姸鎬佺殑鏃跺�欐湁
+
+                if (keyGuid.Length != 36)
+                    keyGuid = "00000000-0000-0000-0000-000000000000";
                 if (string.IsNullOrEmpty(idtype))
                     (_rtnInt, _rtnStr) = InterfaceUtil.HttpPostErp(_erpJson, keyUserGuid, keyGuid, keyNo);
                 else
-                    (_rtnInt, _rtnStr) = InterfaceUtil.HttpPostErp(_erpJson, keyUserGuid, keyGuid, keyNo,2);
+                    (_rtnInt, _rtnStr) = InterfaceUtil.HttpPostErp(_erpJson, keyUserGuid, keyGuid, keyNo, 2);
             }
             catch (Exception ex)
             {
-                Gs.Toolbox.LogHelper.Debug(this.ToString(), "SendErp:" + ex.Message);
+                Gs.Toolbox.LogHelper.Debug(this.ToString(), "Fm SendErp:" + ex.Message);
                 return "鍙戦�乪rp澶辫触:" + ex.Message;
             }
             if (_rtnInt <= 0)
@@ -253,6 +291,7 @@
             string keyMeth = model.keyMeth;
             string keyNo = model.keyNo;
             string idtype = model.idtype;//杩欎釜浠呬粎鏄洿鏂板伐鍗曠姸鎬佺殑鏃跺�欐湁
+
             if (keyMeth.ToUpper() == "delete".ToUpper())
                 return "";
             try
@@ -278,7 +317,7 @@
                     dynamic _datajson = new ExpandoObject();
                     if (dset.Tables.Count > 1)
                     {
-                        //杩欐槸缁撴锛岀粨鏋勫拰鍏跺畠涓嶄竴鏍�
+                        //杩欐槸杩欐槸鏅�氱殑鎺ュ彛閲岀殑缁撴锛岀粨鏋勫拰鍏跺畠涓嶄竴鏍�
                         if (keyMeth.ToLower() == "toclose".ToLower() || keyMeth.ToLower() == "closure".ToLower() || keyMeth.ToLower() == "unfinish")
                         {
                             _datajson = dset.Tables[1].Rows[0].RowToDynamic();
@@ -301,7 +340,7 @@
                 }
                 //杩欐槸璁㈠崟鍥炰紶鏍囪瘑
                 List<dynamic> _datajson22 = new List<dynamic>();
-                dynamic _ob= new ExpandoObject();
+                dynamic _ob = new ExpandoObject();
                 _ob.ENTRY = dset.Tables[0].TableToDynamicList();
                 _datajson22.Add(_ob);
                 var _obj22 = new
@@ -348,7 +387,8 @@
                 if (_sb.Length > 0)
                     _sb.Append("~");
                 _sb.Append(_line);
-            };
+            }
+            ;
             var lst = new List<dynamic>();
             SqlParameter[] parameters =
             {
@@ -401,15 +441,23 @@
             {
                 Gs.Toolbox.LogHelper.Debug(this.ToString(), "EditModel isAdmin error锛�" + ex.Message);
             }
-            Gs.Toolbox.DbHelperSQL.ExecuteSql("delete from [FM_QUERY_TABLE] where formPath=@formPath ", new SqlParameter[] { new SqlParameter("@formPath", formPath) });
-            foreach (var _obj in model.list)
+            try
             {
-                System.Text.StringBuilder _sb = new System.Text.StringBuilder();
-                _sb.Append("INSERT INTO [dbo].[FM_QUERY_TABLE]([guid],[formPath] ,[tableName] ,[lastUpdateBy] ,[lastUpdateDate],[tableOtherName])");
-                _sb.Append(" values(newid(),'" + formPath + "','" + _obj.tableName + "','',getdate(),'" + _obj.tableOtherName + "')");
-                arrayList.Add(_sb.ToString());
+                Gs.Toolbox.DbHelperSQL.ExecuteSql("delete from [FM_QUERY_TABLE] where formPath=@formPath ", new SqlParameter[] { new SqlParameter("@formPath", formPath) });
+                foreach (var _obj in model.list)
+                {
+                    System.Text.StringBuilder _sb = new System.Text.StringBuilder();
+                    _sb.Append("INSERT INTO [dbo].[FM_QUERY_TABLE]([guid],[formPath] ,[tableName] ,[lastUpdateBy] ,[lastUpdateDate],[tableOtherName])");
+                    _sb.Append(" values(newid(),'" + formPath + "','" + _obj.tableName + "','',getdate(),'" + _obj.tableOtherName + "')");
+                    arrayList.Add(_sb.ToString());
+                }
+                Gs.Toolbox.DbHelperSQL.ExecuteSqlTran(arrayList);
             }
-            Gs.Toolbox.DbHelperSQL.ExecuteSqlTran(arrayList);
+            catch (Exception ex)
+            {
+                m.outMsg = ex.Message;
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, ex.Message);
+            }
             m.outMsg = "鎿嶄綔鎴愬姛锛�";
             return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "鎿嶄綔鎴愬姛锛�");
         }
diff --git a/WebApi/Gs.Sys/Services/MesConfigController.cs b/WebApi/Gs.Sys/Services/MesConfigController.cs
new file mode 100644
index 0000000..1ccb2ee
--- /dev/null
+++ b/WebApi/Gs.Sys/Services/MesConfigController.cs
@@ -0,0 +1,94 @@
+锘縰sing System.Data;
+using System.Text;
+using Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using static Gs.Toolbox.UtilityHelper;
+
+namespace Gs.Sys.Services
+{
+
+    /// <summary>
+    /// 閰嶇疆绯荤粺鍙傛暟
+    /// </summary>
+
+    [ApiGroup(ApiGroupNames.Sys)]
+    public class MesConfigController : IRomteService
+    {
+
+        private readonly IHttpContextAccessor _http;
+        private readonly string _userCode, _userGuid, _orgFids;
+
+        public MesConfigController(IHttpContextAccessor httpContextAccessor)
+        {
+            _http = httpContextAccessor;
+            (_userCode, _userGuid, _orgFids) =
+                GetUserGuidAndOrgGuid(_http);
+        }
+
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<int?> SetModel([FromBody] dynamic model)
+        {
+            string sql = model.sql;
+            int rtnInt = (int)ReturnCode.Default;
+            try
+            {
+                StringBuilder strSql = new StringBuilder();
+                strSql.Append(sql);
+                int rows = DbHelperSQL.ExecuteSql(strSql.ToString());
+                rtnInt = rows;
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(this.ToString(), "SetSql error锛�" + ex.Message);
+                rtnInt = (int)ReturnCode.Exception;
+                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鍒犻櫎澶辫触锛�" + ex.Message);
+            }
+            if (rtnInt > 0)
+                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+            else
+                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鍒犻櫎澶辫触锛岃閲嶈瘯锛�");
+        }
+
+        /// <summary>
+        /// 璇诲彇瀹炰綋
+        /// </summary>
+        /// <param name="guid"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<System.Dynamic.ExpandoObject> GetModel([FromBody] dynamic model)
+        {
+            dynamic m = new System.Dynamic.ExpandoObject();
+            m.list = new List<dynamic>();
+            System.Text.StringBuilder sbSql = new StringBuilder();
+            sbSql.Append(" select  * from MES_CONFIG");
+            try
+            {
+                DataSet dset = new DataSet();
+                dset = DbHelperSQL.Query(sbSql.ToString());
+                if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)
+                {
+                    var _tb = dset.Tables[0].TableToDynamicList();
+                    m.list = _tb;
+                    return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+                }
+                else
+                    return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(this.ToString(), "GetModel error:" + ex.Message);
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+            }
+        }
+    }
+}
diff --git a/WebApi/Gs.Sys/Services/MesFileController.cs b/WebApi/Gs.Sys/Services/MesFileController.cs
index 20ad114..e02e756 100644
--- a/WebApi/Gs.Sys/Services/MesFileController.cs
+++ b/WebApi/Gs.Sys/Services/MesFileController.cs
@@ -69,7 +69,6 @@
                 model.fileGroup = "";
             var _bl = base.Insert(model);
         }
-
         return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "涓婁紶鎴愬姛");
     }
 
diff --git a/WebApi/Gs.Sys/Services/MesSysPageviewManager.cs b/WebApi/Gs.Sys/Services/MesSysPageviewManager.cs
index b92d984..2f89a2f 100644
--- a/WebApi/Gs.Sys/Services/MesSysPageviewManager.cs
+++ b/WebApi/Gs.Sys/Services/MesSysPageviewManager.cs
@@ -54,7 +54,7 @@
                 sbSql.Append(",cast(0 as bit) as chkInt");
             }
             else
-                sbSql.Append(",cast( (select count(1)  from SYS_USER_BIND b where b.userGuid='" + keyType+ "' and b.aboutGuid=a.guid)  as bit) as chkInt ");
+                sbSql.Append(",cast( (select count(1)  from SYS_USER_BIND b where b.userGuid='" + keyType+ "' and b.aboutGuid=a.guid  and b.fType='PDA椤甸潰')  as bit) as chkInt ");
             sbSql.Append("  from MES_SYS_PAGEVIEW a ");
             sbSql.Append(keyWhere);
             sbSql.Append(") as T ");
@@ -241,7 +241,7 @@
                         new("@outMsg", SqlDbType.NVarChar, 300),
                         new("@edtUserGuid", _userGuid),
                         new("@userGuid", userGuid),
-                          new("@fType", fType),
+                        new("@fType", fType),
                         new("@bindGuids", bindGuidslist)
                     };
                         parameters[0].Direction = ParameterDirection.Output;
diff --git a/WebApi/Gs.Sys/Services/OrganizationController.cs b/WebApi/Gs.Sys/Services/OrganizationController.cs
index 6b98c76..cdfca2f 100644
--- a/WebApi/Gs.Sys/Services/OrganizationController.cs
+++ b/WebApi/Gs.Sys/Services/OrganizationController.cs
@@ -79,96 +79,71 @@
         }
     }
 
-    ///// <summary>
-    ///// 鍒犻櫎鏈烘瀯
-    ///// </summary>
-    ///// <param name="model"></param>
-    ///// <returns></returns>
-    //[RequestMethod(RequestMethods.POST)]
-    //public ReturnDto<int?> DeleteModel([FromBody] JArray guidList)
-    //{
-    //    string[] intArray = guidList.ToObject<string[]>();
-    //    string guid = intArray[0];
+    /// <summary>
+    ///     鏌ヨ鍒楄〃锛屾敮鎸佸垎椤碉紝鐢ㄤ簬鍚勭缁戝畾
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> GetListPage2(PageQuery model)
+    {
+        var currentPage = model.currentPage;
+        var everyPageSize = model.everyPageSize;
+        var sortName = string.IsNullOrEmpty(model.sortName) ? "a.FNumber" : model.sortName;
+        var keyWhere = model.keyWhere;
+        string keyType = model.keyType;
+        var sbSql = new StringBuilder();
+        sbSql.Append("select * from ");
+        sbSql.Append("( ");
+        sbSql.Append("select top 100000 ROW_NUMBER() over(order by " + sortName + " " + model.sortOrder + ") as rowIndex,a.* ");
+        if (string.IsNullOrEmpty(keyType))
+        {
+            sbSql.Append(",cast(0 as bit) as chkInt");
+        }
+        else
+            sbSql.Append(",cast( (select count(1)  from SYS_USER_BIND b where b.userGuid='" + keyType + "' and b.aboutGuid=cast( a.FID as nvarchar(50)) and b.fType='缁勭粐')  as bit) as chkInt ");
+        sbSql.Append("  from SYS_ORGANIZATION a ");
+        sbSql.Append(keyWhere);
+        sbSql.Append(") as T ");
+        sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" + everyPageSize + " and  T.rowindex<=" + currentPage + "*" + everyPageSize);
+        sbSql.Append(" order by rowindex asc ");
+        sbSql.Append(" select count(1) as intTotal  from SYS_ORGANIZATION a  where 1=1 ");
+        sbSql.Append(keyWhere);
+        var dset = new DataSet();
+        try
+        {
+            dset = DbHelperSQL.Query(sbSql.ToString());
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "GetListPage2 error锛�" + ex.Message);
+            return ReturnDto<PageList<dynamic>>.QuickReturn(default(PageList<dynamic>), ReturnCode.Exception, "璇诲彇澶辫触");
+        }
 
-    //    int cont = 0;
-    //    cont = IsChkOrUnChk(intArray[0], true);
-    //    if (cont > 0)
-    //        return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鍒犻櫎澶辫触锛岃淇℃伅宸茶瀹℃牳锛�");
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        if (dset != null && dset.Tables.Count > 0 &&
+            dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+        {
+            var intTotal = int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+            var pages = intTotal % everyPageSize != 0
+                ? intTotal / everyPageSize + 1
+                : intTotal / everyPageSize;
+            _pglist.total = intTotal;
+            _pglist.everyPageSize = everyPageSize;
+            _pglist.pages = pages;
+            var _dy = dset.Tables[0].TableToDynamicList();
+            _pglist.list = _dy;
+        }
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
 
-
-    //    int? rtnInt = (int)ReturnCode.Default;
-
-    //    int it1 = 0;
-    //    int it2 = 0;
-    //    cont = Db.Queryable<SysOrganization>().Where(c => c.Guid == Guid.Parse(guid) && c.IsSys == 1).Count();
-    //    if (cont > 0)
-    //    {
-    //        return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鍒犻櫎澶辫触锛岃鏉$洰涓虹郴缁熷唴缃紝涓嶅彲鍒犻櫎锛�");
-    //    }
-    //    try
-    //    {
-    //        Db.Ado.BeginTran();
-    //        it1 = Db.Deleteable<SysOrganization>().In(guid).ExecuteCommand();
-    //        it2 = Db.Deleteable<SysRoleMenuAction>().Where(it => it.OrgGuid == Guid.Parse(guid)).ExecuteCommand();
-    //        Db.Ado.CommitTran();
-    //    }
-    //    catch (Exception ex)
-    //    {
-    //        LogHelper.Debug(this.ToString(), "DeleteModel error锛�" + ex.Message);
-    //        Db.Ado.RollbackTran();
-    //        return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, "鍒犻櫎澶辫触锛岃閲嶈瘯锛�");
-    //    }
-    //    rtnInt = (it2 + it1);
-    //    return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, "鎿嶄綔鎴愬姛锛屽叡鍒犻櫎" + rtnInt.ToString() + "鏉℃暟鎹紒");
-    //}
-
-    ///// <summary>
-    ///// 澧炲姞鏈烘瀯
-    ///// </summary>
-    ///// <param name="model"></param>
-    ///// <returns></returns>
-    //[RequestMethod(RequestMethods.POST)]
-    //public ReturnDto<string?> EditModel([FromBody] SysOrganization model)
-    //{
-    //    if (UtilityHelper.CheckGuid(model.Guid))
-    //    {
-    //        int cont = 0;
-    //        cont = IsChkOrUnChk(model.Guid.ToString(), true);
-    //        if (cont > 0)
-    //            return ReturnDto<string>.QuickReturn("", ReturnCode.Exception, "淇敼澶辫触锛岃淇℃伅宸茶瀹℃牳锛�");
-    //    }
-    //    if (!UtilityHelper.CheckGuid(model.UpGuid))//鍙兘鏈変竴涓牴缁勭粐
-    //    {
-    //        int cont = 0;
-    //        cont = Db.Queryable<SysOrganization>().Where(c => c.UpGuid == null).Count();
-    //        if (cont > 0)
-    //        {
-    //            return ReturnDto<int>.QuickReturn(default(string?), ReturnCode.Exception, "澧炲姞澶辫触锛岃閫夋嫨涓婄骇缁勭粐锛�");
-    //        }
-    //    }
-    //    bool _bl = false;
-    //    try
-    //    {
-    //        if (!UtilityHelper.CheckGuid(model.Guid))
-    //        {
-    //            model.Guid = Guid.NewGuid();
-    //            _bl = base.Insert(model);
-    //        }
-    //        else
-    //        {
-    //           // _bl = base.Update(model);
-    //            _bl = Db.Updateable(model).IgnoreColumns(ignoreAllNullColumns: true).ExecuteCommand() > 0 ? true : false;
-    //        }
-    //    }
-    //    catch (Exception ex)
-    //    {
-    //        LogHelper.Debug(this.ToString(), "EditModel error锛�" + ex.Message);
-    //        return ReturnDto<string>.QuickReturn("", ReturnCode.Exception, ex.Message);
-    //    }
-    //    if (_bl)
-    //        return ReturnDto<string>.QuickReturn(model.Guid.ToString(), ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
-    //    return ReturnDto<string>.QuickReturn("", ReturnCode.Exception, "澧炲姞澶辫触锛岃閲嶈瘯锛�");
-    //}
 
     /// <summary>
     ///     璇诲彇鏈烘瀯
diff --git a/WebApi/Gs.Sys/Services/SysLogController.cs b/WebApi/Gs.Sys/Services/SysLogController.cs
index a5f780b..00f72fe 100644
--- a/WebApi/Gs.Sys/Services/SysLogController.cs
+++ b/WebApi/Gs.Sys/Services/SysLogController.cs
@@ -1,10 +1,12 @@
-锘縰sing System.Text;
-using Gs.Sys.Models;
+锘縰sing Gs.Sys.Models;
 using Gs.Toolbox;
 using Gs.Toolbox.ApiCore.Abstract.Mvc;
 using Gs.Toolbox.ApiCore.Common.Mvc;
 using Gs.Toolbox.ApiCore.Group;
 using Microsoft.AspNetCore.Mvc;
+using System.Data;
+using System.Data.SqlClient;
+using System.Text;
 
 namespace Gs.Sys.Services;
 
@@ -27,10 +29,15 @@
             var _sbBy =
                 new StringBuilder(query.sortName + " " + query.sortOrder);
             var totalCount = 0;
-            var itemsList = Db.Queryable<SysLogOperation>()
+            var itemsList = Db.Queryable<SysLogOperation>("a")
+                .Select((a) => new SysLogOperation
+                {
+                    isRed = ((a.IsErp == true && a.IsSuccess == false) ? 1 : 0),
+                    isErpDetail = (a.IsErp == true ? (a.IsSuccess == true ? "1:鍙戦�佹垚鍔�" : "0:鍙戦�佸け璐�") : "2:涓嶉渶瑕佸彂閫�"),
+                }, true)
                 .Where(_sbWhere.ToString())
                 .OrderBy(_sbBy.ToString())
-                .ToPageList(query.currentPage, query.everyPageSize,ref totalCount);
+                .ToPageList(query.currentPage, query.everyPageSize, ref totalCount);
             pageList = new PageList<SysLogOperation>(itemsList, totalCount,
                 query.everyPageSize);
             return ReturnDto<PageList<SysLogOperation>>.QuickReturn(pageList,
@@ -60,4 +67,66 @@
             "璇诲彇澶辫触锛�");
     }
 
+
+    /// <summary>
+    ///   
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> GetListPageTuiSong([FromBody] dynamic model)
+    {
+        int currentPage = model.currentPage;
+        int everyPageSize = model.everyPageSize;
+        string sortName = model.sortName;
+        string keyWhere = model.keyWhere;
+        SqlParameter[] parameters =
+        {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+        var dset = new DataSet();
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>(),
+        };
+        try
+        {
+            dset = DbHelperSQL.RunProcedure("report_tuiSong", parameters, "0");
+            if (dset != null && dset.Tables.Count > 0 &&
+                dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+            {
+                var intTotal =
+                    int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                var pages = intTotal % everyPageSize != 0
+                    ? intTotal / everyPageSize + 1
+                    : intTotal / everyPageSize;
+                _pglist.total = intTotal;
+                _pglist.everyPageSize = everyPageSize;
+                _pglist.pages = pages;
+                var _dy = dset.Tables[0].TableToDynamicList();
+                _pglist.list = _dy;
+
+             
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+
 }
\ No newline at end of file
diff --git a/WebApi/Gs.Sys/Services/UserController.cs b/WebApi/Gs.Sys/Services/UserController.cs
index e563ab3..5ccfacc 100644
--- a/WebApi/Gs.Sys/Services/UserController.cs
+++ b/WebApi/Gs.Sys/Services/UserController.cs
@@ -45,6 +45,7 @@
         var accountPwd = model.accountPwd;
         string accountLog = model.accountLog;
         var _strMsg = "";
+        string dd = MD5Encrypt32(accountPwd);
         var dset = new DataSet();
         dynamic m = new ExpandoObject();
         using (var conn = new SqlConnection(DbHelperSQL.strConn))
@@ -319,6 +320,8 @@
         return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
     }
 
+
+
     #region
     /// <summary>
     ///     鏌ヨ鍒楄〃锛屾敮鎸佸垎椤�
@@ -501,12 +504,17 @@
         dynamic m = new ExpandoObject();
         m.list = new List<dynamic>();
         m.list2 = new List<dynamic>();
+        m.list3 = new List<dynamic>();
+        m.list4= new List<dynamic>();
+        m.list5 = new List<dynamic>();
         var dset = new DataSet();
         System.Text.StringBuilder sbSql = new StringBuilder();
         sbSql.Append(" select * from [dbo].[SYS_USER] where guid='" + guid + "'");
         sbSql.Append(" select bd.userGuid, bd.guid,pg.PAGE_VIEW as gnName, bd.fType,bd.createBy,bd.createDate from [MES_SYS_PAGEVIEW] pg right join [dbo].[SYS_USER_BIND] bd on(bd.aboutGuid= pg.guid and bd.fType= 'PDA椤甸潰') where bd.fType= 'PDA椤甸潰' and bd.userGuid='" + guid + "' ");
-        sbSql.Append(" select bd.userGuid, bd.guid, pg.depot_name + '(' + pg.depot_code + ')' as gnName, bd.fType,bd.createBy,bd.createDate from [dbo].[MES_DEPOTS] pg right join[dbo].[SYS_USER_BIND] bd on bd.aboutGuid = pg.guid and bd.fType = '浠撳簱'  where bd.fType = '浠撳簱'  and bd.userGuid='" + guid + "'");
+        sbSql.Append(" select bd.userGuid, bd.guid,  '銆�' + pg.depot_code + '銆�'+pg.depot_name  as gnName, bd.fType,bd.createBy,bd.createDate from [dbo].[MES_DEPOTS] pg right join[dbo].[SYS_USER_BIND] bd on bd.aboutGuid = pg.guid and bd.fType = '浠撳簱'  where bd.fType = '浠撳簱'  and bd.userGuid='" + guid + "'");
         sbSql.Append(" select bd.userGuid, bd.guid,pg.ip as gnName, bd.fType,bd.createBy,bd.createDate from [dbo].[print_info] pg right join [dbo].[SYS_USER_BIND] bd on bd.aboutGuid = pg.guid and bd.fType = '鎵撳嵃鏈�'  where bd.fType = '鎵撳嵃鏈�'  and bd.userGuid='" + guid + "'");
+        sbSql.Append(" select bd.userGuid, bd.guid,'銆�'+pg.line_no+'銆�'+pg.name as gnName, bd.fType,bd.createBy,bd.createDate from MES_WORKSHOP_LINE pg  right join [dbo].[SYS_USER_BIND] bd on bd.aboutGuid = pg.guid and bd.fType = '杩囩珯鏃剁粦瀹氱嚎浣�'  where bd.fType = '杩囩珯鏃剁粦瀹氱嚎浣�'  and bd.userGuid='" + guid + "'");
+        sbSql.Append(" select bd.userGuid, bd.guid,'銆�'+pg.FNumber+'銆�'+pg.NAME as gnName, bd.fType,bd.createBy,bd.createDate from SYS_ORGANIZATION pg right join [dbo].[SYS_USER_BIND] bd on cast( bd.aboutGuid as nvarchar(50)) = cast(  pg.FID  as nvarchar(50)) and bd.fType = '缁勭粐'  where bd.fType = '缁勭粐'  and bd.userGuid='" + guid + "'");
         try
         {
             dset = DbHelperSQL.Query(sbSql.ToString());
@@ -521,6 +529,10 @@
                 m.list2 = _tb2;
                 var _tb3 = dset.Tables[3].TableToDynamicList();
                 m.list3 = _tb3;
+                var _tb4 = dset.Tables[4].TableToDynamicList();
+                m.list4 = _tb4;
+                var _tb5 = dset.Tables[5].TableToDynamicList();
+                m.list5 = _tb5;
             }
         }
         catch (Exception ex)
@@ -562,7 +574,7 @@
             sbSql.Append(",cast(0 as bit) as chkInt");
         }
         else
-            sbSql.Append(",cast( (select count(1)  from SYS_USER_BIND b where b.userGuid='" + keyType + "' and b.aboutGuid=a.guid)  as bit) as chkInt ");
+            sbSql.Append(",cast( (select count(1)  from SYS_USER_BIND bind where bind.userGuid='" + keyType + "' and bind.aboutGuid=a.guid  and bind.fType='鍛樺伐鍒嗗尯')  as bit) as chkInt ");
         sbSql.Append(sbJoin);
         sbSql.Append(") T");
         sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" + everyPageSize + " and  T.rowindex<=" + currentPage + "*" + everyPageSize);
diff --git a/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomControllerFeatureProvider.cs b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomControllerFeatureProvider.cs
index 2caec77..3ff4773 100644
--- a/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomControllerFeatureProvider.cs
+++ b/WebApi/Gs.Toolbox/ApiCore/Common/Mvc/CustomControllerFeatureProvider.cs
@@ -66,15 +66,25 @@
                 assembly.FullName.Contains("Swashbuckle"))
                 return;
             //閫掑綊鑾峰彇controller
-            var assTemp = Assembly.Load(assembly);
-            assTemp.GetTypes().ToList().ForEach(type =>
+            try
             {
-                //濡傛灉瀹炵幇浜咺RomteService鍒欒涓烘槸涓�涓帶鍒跺櫒
-                if (!IsController(type)) return;
-                feature.Controllers.Add(type.GetTypeInfo());
-            });
-            var a = assTemp.GetReferencedAssemblies();
-            AddController(feature, a);
+                var assTemp = Assembly.Load(assembly);
+                assTemp.GetTypes().ToList().ForEach(type =>
+                {
+                    //濡傛灉瀹炵幇浜咺RomteService鍒欒涓烘槸涓�涓帶鍒跺櫒
+                    if (!IsController(type)) return;
+                    feature.Controllers.Add(type.GetTypeInfo());
+                });
+                var a = assTemp.GetReferencedAssemblies();
+                AddController(feature, a);
+            }
+            catch (Exception)
+            {
+
+                 
+            }
+           
+           
         });
     }
 
diff --git a/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupNames.cs b/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupNames.cs
index b08094c..08dbf8f 100644
--- a/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupNames.cs
+++ b/WebApi/Gs.Toolbox/ApiCore/Group/ApiGroupNames.cs
@@ -45,5 +45,7 @@
     [GroupInfo(Title = "鎶ヨ〃", Description = "鎶ヨ〃")]
     Rport,
     [GroupInfo(Title = "PDA", Description = "PDA")]
-    PDA
+    PDA,
+    [GroupInfo(Title = "璁′欢宸ヨ祫", Description = "璁′欢宸ヨ祫")]
+    JJGZ
 }
\ No newline at end of file
diff --git a/WebApi/Gs.Toolbox/ExcelHelper.cs b/WebApi/Gs.Toolbox/ExcelHelper.cs
index 818bf82..47b087c 100644
--- a/WebApi/Gs.Toolbox/ExcelHelper.cs
+++ b/WebApi/Gs.Toolbox/ExcelHelper.cs
@@ -1,12 +1,14 @@
-锘縰sing System.Collections;
-using System.Data;
-using System.Text;
+锘縰sing Newtonsoft.Json;
 using NPOI.HSSF.UserModel;
 using NPOI.HSSF.Util;
-using NPOI.SS.Formula.Functions;
 using NPOI.SS.UserModel;
 using NPOI.SS.Util;
 using NPOI.XSSF.UserModel;
+using System.Collections;
+using System.Data;
+using System.Security.Cryptography.Xml;
+using System.Text;
+using System.Timers;
 
 
 namespace Gs.Toolbox;
@@ -176,13 +178,13 @@
     {
         var roct = aryHeader.Count;
         IWorkbook workbook = new HSSFWorkbook();
-        var sheet = workbook.CreateSheet();
         //鍙栧緱鍒楀
         var arrColWidth = new int[dtSource.Columns.Count];
         foreach (DataColumn item in dtSource.Columns)
             arrColWidth[item.Ordinal] = Encoding.GetEncoding(936)
                 .GetBytes(item.ColumnName).Length;
         if (fixW <= 0)
+        {
             for (var i = 0; i < dtSource.Rows.Count; i++)
                 for (var j = 0; j < dtSource.Columns.Count; j++)
                 {
@@ -190,59 +192,80 @@
                         .GetBytes(dtSource.Rows[i][j].ToString()).Length;
                     if (intTemp > arrColWidth[j]) arrColWidth[j] = intTemp;
                 }
-
-        var cusRow = sheet.CreateRow(0);
-        var _rr = 0;
-        foreach (string _hh in aryHeader)
-        {
-            cusRow = sheet.CreateRow(_rr);
-            cusRow.CreateCell(0).SetCellValue(_hh);
-            //cellRangAddress鍙傛暟璇存槑锛氳捣濮嬭锛岀粨鏉熻锛岃捣濮嬪垪锛岀粨鏉熷垪
-            sheet.AddMergedRegion(new CellRangeAddress(_rr, _rr, 0,
-                dtSource.Columns.Count - 1));
-            // sheet.AddMergedRegion(new Region(0, 0, _rr, dtSource.Columns.Count - 1));
-            _rr++;
         }
 
-        //濉厖琛ㄥご
-        var headerRow = sheet.CreateRow(roct);
-        var headStyle = workbook.CreateCellStyle();
-        headStyle.Alignment = HorizontalAlignment.Center;
-        headStyle.FillPattern = FillPattern.SolidForeground;
-        headStyle.FillForegroundColor = HSSFColor.LightBlue.Index;
-        var font = workbook.CreateFont();
-        font.Color = HSSFColor.White.Index;
-        font.FontHeightInPoints = 12;
-        font.Boldweight = 700;
-        headStyle.SetFont(font);
-        foreach (DataColumn column in dtSource.Columns)
+        const int maxRowsPerXlsSheet = 65535; // HSSF 鐨勫崟琛ㄨ鏁颁笂闄愶紙绱㈠紩浠�0锛�
+        int headerRowsCount = roct + 1; // aryHeader 琛屾暟 + 鍒楀ご琛�
+        int rowsPerSheet = maxRowsPerXlsSheet - headerRowsCount;
+        if (rowsPerSheet <= 0) rowsPerSheet = 1;
+
+        int totalRows = dtSource.Rows.Count;
+        int sheetIndex = 0;
+        ISheet sheet = null;
+        ICellStyle headStyle = null;
+
+        // 鍒嗙墖鍐欏叆锛屾瘡鐗囧啓鍏� header + 鏁版嵁
+        for (int startRow = 0; startRow < totalRows; startRow += rowsPerSheet)
         {
-            headerRow.CreateCell(column.Ordinal)
-                .SetCellValue(column.ColumnName);
-            headerRow.GetCell(column.Ordinal).CellStyle = headStyle;
-            sheet.SetColumnWidth(column.Ordinal,
-                (arrColWidth[column.Ordinal] + 6) * 256);
+            sheet = workbook.CreateSheet("Sheet" + (sheetIndex + 1));
+
+            // 鍒涘缓骞跺簲鐢ㄥ垪瀹斤紙姣忎釜 sheet 閮介渶瑕侊級
+            for (int c = 0; c < dtSource.Columns.Count; c++)
+            {
+                sheet.SetColumnWidth(c, (arrColWidth[c] + 6) * 256);
+            }
+
+            // 鍐欏叆 aryHeader锛堝琛屽悎骞舵樉绀猴級
+            var cusRow = sheet.CreateRow(0);
+            var _rr = 0;
+            foreach (string _hh in aryHeader)
+            {
+                cusRow = sheet.CreateRow(_rr);
+                cusRow.CreateCell(0).SetCellValue(_hh);
+                sheet.AddMergedRegion(new CellRangeAddress(_rr, _rr, 0,
+                    dtSource.Columns.Count - 1));
+                _rr++;
+            }
+
+            // 濉厖琛ㄥご
+            var headerRow = sheet.CreateRow(roct);
+            headStyle = workbook.CreateCellStyle();
+            headStyle.Alignment = HorizontalAlignment.Center;
+            headStyle.FillPattern = FillPattern.SolidForeground;
+            headStyle.FillForegroundColor = HSSFColor.LightBlue.Index;
+            var font = workbook.CreateFont();
+            font.Color = HSSFColor.White.Index;
+            font.FontHeightInPoints = 12;
+            font.Boldweight = 700;
+            headStyle.SetFont(font);
+            for (int colIdx = 0; colIdx < dtSource.Columns.Count; colIdx++)
+            {
+                headerRow.CreateCell(colIdx).SetCellValue(dtSource.Columns[colIdx].ColumnName);
+                headerRow.GetCell(colIdx).CellStyle = headStyle;
+            }
+
+            // 鍐欏叆鏁版嵁娈�
+            int endRow = Math.Min(startRow + rowsPerSheet, totalRows);
+            for (int i = startRow; i < endRow; i++)
+            {
+                var dataRow = sheet.CreateRow((i - startRow) + roct + 1);
+                for (var j = 0; j < dtSource.Columns.Count; j++)
+                {
+                    dataRow.CreateCell(j)
+                        .SetCellValue(dtSource.Rows[i][j].ToString());
+                }
+            }
+
+            sheetIndex++;
         }
 
-        //sheet.SetAutoFilter(new CellRangeAddress(0, 0, 0, dtSource.Columns.Count - 1)); //棣栬绛涢��
-        // if (fixW <= 0)
-        sheet.CreateFreezePane(dtSource.Columns.Count,
-            1 + aryHeader.Count); //棣栬鍐荤粨
-        //濉厖鍐呭
-        var dataRow = sheet.CreateRow(roct + 1);
-        for (var i = 0; i < dtSource.Rows.Count; i++)
+        // 濉厖 footer锛堝彧鍐欏湪鏈�鍚庝竴涓� sheet 涓婏級
+        if (aryFotter != null && aryFotter.Count > 0 && sheet != null)
         {
-            dataRow = sheet.CreateRow(i + roct + 1);
-            for (var j = 0; j < dtSource.Columns.Count; j++)
-                dataRow.CreateCell(j)
-                    .SetCellValue(dtSource.Rows[i][j].ToString());
-        }
-
-        //濉厖footer
-        if (aryFotter != null && aryFotter.Count > 0)
-        {
-            var _rot = roct + dtSource.Rows.Count + 2;
-            var ftRow = sheet.CreateRow(_rot);
+            var lastSheet = sheet;
+            var _rot = roct + (totalRows - ((sheetIndex - 1) * rowsPerSheet)) + 1;
+            if (_rot <= roct) _rot = roct + 1;
+            var ftRow = lastSheet.CreateRow(_rot);
             var _ftidx = 0;
             var _ftw = dtSource.Columns.Count / 2;
             foreach (string _hh in aryFotter)
@@ -258,16 +281,14 @@
                     ftStyle.BorderBottom = BorderStyle.Thin;
                 else
                     ftStyle.BorderBottom = BorderStyle.None;
-                ftRow = sheet.CreateRow(_rot);
+
+                ftRow = lastSheet.CreateRow(_rot);
                 ftRow.CreateCell(0).SetCellValue(_hh);
                 ftRow.GetCell(0).CellStyle = ftStyle;
-                //cellRangAddress鍙傛暟璇存槑锛氳捣濮嬭锛岀粨鏉熻锛岃捣濮嬪垪锛岀粨鏉熷垪
-                sheet.AddMergedRegion(
-                    new CellRangeAddress(_rot, _rot, 0, _ftw - 1));
-                ftRow.CreateCell(_ftw)
-                    .SetCellValue(aryFotter2[_ftidx].ToString());
+                lastSheet.AddMergedRegion(new CellRangeAddress(_rot, _rot, 0, _ftw - 1));
+                ftRow.CreateCell(_ftw).SetCellValue(aryFotter2[_ftidx].ToString());
                 ftRow.GetCell(_ftw).CellStyle = ftStyle;
-                sheet.AddMergedRegion(new CellRangeAddress(_rot, _rot, _ftw,
+                lastSheet.AddMergedRegion(new CellRangeAddress(_rot, _rot, _ftw,
                     dtSource.Columns.Count - 1));
                 for (var c = 0; c < dtSource.Columns.Count; c++)
                 {
@@ -280,7 +301,7 @@
             }
         }
 
-        //淇濆瓨
+        // 淇濆瓨
         using (var ms = new MemoryStream())
         {
             using (var fs = new FileStream(strFileName, FileMode.Create,
@@ -360,13 +381,15 @@
         ICellStyle style = getStyle(workbook);
         ICellStyle styleHeader = getStyle(workbook, 20, true, true);
         ICellStyle style12 = getStyle(workbook, 11, false, true);
-
+        style.WrapText = true; // 璁剧疆鑷姩鎹㈣
+        styleHeader.WrapText = true; // 璁剧疆鑷姩鎹㈣
+        style12.WrapText = true; // 璁剧疆鑷姩鎹㈣
         // 璁剧疆鍒楀锛�6鍒楋級
         sheet.SetColumnWidth(0, 4000);  // 绗竴鍒楃◢瀹�
-        sheet.SetColumnWidth(1, 3000);
+        sheet.SetColumnWidth(1, 4000);
         sheet.SetColumnWidth(2, 3000);
         sheet.SetColumnWidth(3, 3000);
-        sheet.SetColumnWidth(4, 3000);
+        sheet.SetColumnWidth(4, 4000);
         sheet.SetColumnWidth(5, 3000);
         sheet.SetColumnWidth(6, 3000);
         // 鍒涘缓20琛�
@@ -429,16 +452,134 @@
         //浠庣7琛屽紑濮嬶紝灏辨槸寰幆鏁版嵁搴�
         int _idx = 7;
         DataTable tb1 = dtSource.Tables[1];
+        string dd = "";
+        bool _blPscs = false;
+        bool _blGjyzx = false;
         foreach (DataRow rrr in tb1.Rows)
         {
+            //澧炲姞鍝佹按娴嬭瘯鏍囬
+            if (_blPscs == false && rrr["椤圭洰"].ToString() == "鍝佹按娴嬭瘯")
+            {
+                IRow row700 = sheet.CreateRow(_idx);
+                for (int i = 0; i < ary.Length; i++)
+                {
+                    ICell cell700 = row700.CreateCell(i);
+                    cell700.CellStyle = style;
+                    if (i == 0)
+                        cell700.SetCellValue(rrr["椤圭洰"].ToString());
+                    if (i == 1)
+                        cell700.SetCellValue("娓╁害");
+                    if (i == 3)
+                        cell700.SetCellValue("娴侀噺");
+                    if (i == 5)
+                        cell700.SetCellValue("鏄惁鏈夊紓鍛�");
+                    if (i == 6)
+                        cell700.SetCellValue("妫�楠岀粨鏋�");
+                }
+                sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 2));
+                sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 3, 4));
+                _idx++;
+                _blPscs = true;
+            }
+            //澧炲姞鏍囬
+            if (_blGjyzx == false && rrr["椤圭洰"].ToString() == "鍏抽敭閮ㄤ欢涓�鑷存��")
+            {
+                IRow row700 = sheet.CreateRow(_idx);
+                for (int i = 0; i < ary.Length; i++)
+                {
+                    ICell cell700 = row700.CreateCell(i);
+                    cell700.CellStyle = style;
+                    if (i == 0)
+                        cell700.SetCellValue(rrr["椤圭洰"].ToString());
+                    if (i == 1)
+                        cell700.SetCellValue("鍏抽敭鍚嶇О");
+                    if (i == 2)
+                        cell700.SetCellValue("鐢熶骇鏃ユ湡");
+                    if (i == 3)
+                        cell700.SetCellValue("浣跨敤鏁伴噺");
+                    if (i == 4)
+                        cell700.SetCellValue("璁よ瘉淇℃伅");
+                    if (i == 5)
+                        cell700.SetCellValue("鏄惁绗﹀悎CCC涓�鑷存��");
+                    if (i == 6)
+                        cell700.SetCellValue("鎿嶄綔");
+                }
+                _idx++;
+                _blGjyzx = true;
+            }
+
             IRow row7 = sheet.CreateRow(_idx);
             row7.HeightInPoints = rowHeight;
+            string _tmphb = rrr["椤圭洰鍚堝苟琛屾暟"].ToString();
+            string _tmp = "";
+            if (dd == rrr["椤圭洰"].ToString())
+                _tmp = "";
+            else
+                _tmp = rrr["椤圭洰"].ToString();
+            dd = rrr["椤圭洰"].ToString();
             for (int i = 0; i < ary.Length; i++)
             {
                 ICell cell7 = row7.CreateCell(i);
                 cell7.CellStyle = style;
-                cell7.SetCellValue(rrr[ary[i]].ToString());
-
+                if (i == 0)
+                {
+                    cell7.SetCellValue(_tmp);
+                    if (!string.IsNullOrEmpty(_tmp) && int.Parse(_tmphb) > 1)
+                    {
+                        if (rrr["椤圭洰"].ToString() == "鍝佹按娴嬭瘯" || rrr["椤圭洰"].ToString() == "鍏抽敭閮ㄤ欢涓�鑷存��")
+                            sheet.AddMergedRegion(new CellRangeAddress(_idx - 1, _idx + int.Parse(_tmphb) - 1, 0, 0));
+                        else
+                            sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx + int.Parse(_tmphb) - 1, 0, 0));
+                    }
+                }
+                else
+                {
+                    switch (rrr["椤圭洰"].ToString())
+                    {
+                        case "鍒剁儹鎬ц兘":
+                            // cell7.SetCellValue(rrr["鍒剁儹鎬ц兘table"].ToString());
+                            string ddd = rrr["鍒剁儹鎬ц兘table"].ToString();
+                            string ccc = getTableToString(ddd);
+                            cell7.SetCellValue(ccc);
+                            row7.HeightInPoints = rowHeight;
+                            if (i == ary.Length - 1)
+                                sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 6));
+                            break;
+                        case "鍝佹按娴嬭瘯":
+                            //搴︽暟
+                            if (i == 1)
+                                cell7.SetCellValue(rrr["鎶�鏈�/鍝佽川瑕佹眰"].ToString());
+                            if (i == 3)
+                                cell7.SetCellValue(rrr["鍝佹按娴嬭瘯娴侀噺"].ToString());
+                            if (i == 5)
+                                cell7.SetCellValue(rrr["鏄惁鏈夊紓鍛�"].ToString());
+                            if (i == 6)
+                                cell7.SetCellValue(rrr["妫�楠岀粨鏋�"].ToString());
+                            if (i == ary.Length - 1)
+                            {
+                                sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 2));
+                                sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 3, 4));
+                            }
+                            break;
+                        case "鍏抽敭閮ㄤ欢涓�鑷存��":
+                            if (i == 1)
+                                cell7.SetCellValue(rrr["鎶�鏈�/鍝佽川瑕佹眰"].ToString());
+                            if (i == 2)
+                                cell7.SetCellValue(rrr["鐢熶骇鏃ユ湡"].ToString());
+                            if (i == 3)
+                                cell7.SetCellValue(rrr["浣跨敤鏁伴噺"].ToString());
+                            if (i == 4)
+                                cell7.SetCellValue(rrr["璁よ瘉淇℃伅"].ToString());
+                            if (i == 5)
+                                cell7.SetCellValue(rrr["鏄惁绗﹀悎CCC涓�鑷存��"].ToString());
+                            //if (i == 6)
+                            //    cell7.SetCellValue(rrr["妫�楠岀粨鏋�"].ToString());
+                            break;
+                        default:
+                            cell7.SetCellValue(rrr[ary[i]].ToString());
+                            break;
+                    }
+                }
             }
             _idx++;
         }
@@ -487,28 +628,9 @@
             cell.CellStyle = style12;
         }
         sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 0, 6));
-        setCellVal(sheet, _idx, 0, "棣栦欢濉啓,鏉ユ枡妫�楠�");
+        setCellVal(sheet, _idx, 0, "棣栦欢濉啓,鎴愬搧妫�楠�");
         //****鍚堝苟濂藉悗寮�濮嬭祴鍊糴nd**************
-
-        // 5. 绗�8鍒�10琛屼腑鐨勭涓�鍒楀簲琚悎骞�
-        //sheet.AddMergedRegion(new CellRangeAddress(7, 9, 0, 0));
-
-        //// 6. 绗�17锛�18琛屼腑鐨勭涓�鍒楀悎骞�
-        //sheet.AddMergedRegion(new CellRangeAddress(16, 17, 0, 0));
-
-        //// 7. 绗�17琛屼腑鐨�2锛�3锛�4锛�5鍒楀悎骞�
-        //sheet.AddMergedRegion(new CellRangeAddress(16, 16, 1, 4));
-
-        //// 8. 绗�18琛屼腑鐨勶紝2锛�3鍒楀悎骞讹紝4锛�5锛�6鍒楀悎骞�
-        //sheet.AddMergedRegion(new CellRangeAddress(17, 17, 1, 2));
-        //sheet.AddMergedRegion(new CellRangeAddress(17, 17, 3, 5));
-
-        //// 9. 绗�19琛屼腑鐨勶紝鍒�2锛�3锛�4鍚堝苟
-        //sheet.AddMergedRegion(new CellRangeAddress(18, 18, 1, 3));
-
-        //// 10. 绗�20琛屼腑鐨勫垪鍏ㄩ儴鍚堝苟
-        //sheet.AddMergedRegion(new CellRangeAddress(19, 19, 0, 5));
-
+        getRowHeight(_idx, sheet, maxCols, "XlsFontXj");
         //淇濆瓨
         using (var ms = new MemoryStream())
         {
@@ -531,6 +653,8 @@
     /// <param name="dtSource"></param>
     public static void ExportIqc(DataSet dtSource, string strFileName)
     {
+        string isHg = "";
+
         //琛岄珮
         int rowHeight = 25;
         //鎬诲垪
@@ -543,6 +667,12 @@
         ICellStyle style = getStyle(workbook);
         ICellStyle styleHeader = getStyle(workbook, 20, true, true);
         ICellStyle style12 = getStyle(workbook, 11, false, true);
+        style.WrapText = true; // 璁剧疆鑷姩鎹㈣
+        styleHeader.WrapText = true; // 璁剧疆鑷姩鎹㈣
+        style12.WrapText = true; // 璁剧疆鑷姩鎹㈣
+        //style.ShrinkToFit = true;
+        //styleHeader.ShrinkToFit = true;
+        //style12.ShrinkToFit = true;
 
         // 璁剧疆鍒楀锛�6鍒楋級
         sheet.SetColumnWidth(0, 3000);  // 绗竴鍒楃◢瀹�
@@ -552,7 +682,7 @@
         sheet.SetColumnWidth(4, 3000);
         sheet.SetColumnWidth(5, 3000);
         sheet.SetColumnWidth(6, 3000);
-        sheet.SetColumnWidth(7, 3000);
+        sheet.SetColumnWidth(7, 3500);
         // 鍒涘缓9琛�
         for (int rowIndex = 0; rowIndex <= 8; rowIndex++)
         {
@@ -574,6 +704,7 @@
         //杩欐槸琛ㄥご
         DataTable tb0 = dtSource.Tables[0];
         DataRow row0 = tb0.Rows[0];
+        isHg = row0["zhpd"].ToString();
         //绗竴琛屽垪鍚堝苟
         sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 3));
         sheet.AddMergedRegion(new CellRangeAddress(0, 0, 4, 7));
@@ -625,9 +756,9 @@
         setCellVal(sheet, 6, 6, "涓嶅悎鏍兼暟");
         setCellVal(sheet, 6, 7, row0["bhgs"].ToString());
         setCellVal(sheet, 7, 0, "鍒ゅ畾Ac/Re");
-        setCellVal(sheet, 7, 1, "0/1");
-        setCellVal(sheet, 7, 2, "0/1");
-        setCellVal(sheet, 7, 3, "0/1");
+        setCellVal(sheet, 7, 1, row0["cr"].ToString());
+        setCellVal(sheet, 7, 2, row0["ma"].ToString());
+        setCellVal(sheet, 7, 3, row0["mi"].ToString());
         setCellVal(sheet, 8, 0, "椤圭洰");
         setCellVal(sheet, 8, 1, "璐ㄩ噺瑕佹眰");
         setCellVal(sheet, 8, 6, "妫�楠岃褰�");
@@ -658,10 +789,11 @@
         for (int colIndex = 0; colIndex < maxCols; colIndex++)
         {
             ICell cell = row8.CreateCell(colIndex);
-            cell.CellStyle = style12;
+            cell.CellStyle = style;
         }
         sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 7));
         setCellVal(sheet, _idx, 0, "澶囨敞锛�");
+        setCellVal(sheet, _idx, 1, row0["iqcRemark"].ToString());
         _idx++;
         //缁煎悎鍒ゅ畾
         for (int i = 0; i < 2; i++)
@@ -699,28 +831,36 @@
         setCellVal(sheet, _idx - 2, 0, "瀹℃牳鎰忚锛�");
         setCellVal(sheet, _idx - 2, 1, row0["shyj"].ToString());
         setCellVal(sheet, _idx - 1, 1, row0["shyjqz"].ToString());
-        string[] ary = { "閲囪喘閮ㄦ剰瑙�", "閿�鍞儴鎰忚", "鎶�鏈儴鎰忚", "鐢熶骇閮ㄦ剰瑙�", "鍝佽川閮ㄦ剰瑙�" };
-        for (int i = 0; i < ary.Length; i++)
+
+        //濡傛灉鏄悎鏍间欢锛岄偅涓嬮潰涓嶈浜哹egin
+        if (isHg != "Y:鍚堟牸")
         {
-            IRow row9 = sheet.CreateRow(_idx);
-            row9.HeightInPoints = rowHeight;
-            for (int colIndex = 0; colIndex < maxCols; colIndex++)
+            string[] ary = { "閲囪喘閮ㄦ剰瑙�", "閿�鍞儴鎰忚", "鎶�鏈儴鎰忚", "鐢熶骇閮ㄦ剰瑙�", "鍝佽川閮ㄦ剰瑙�" };
+            for (int i = 0; i < ary.Length; i++)
             {
-                ICell cell = row9.CreateCell(colIndex);
-                cell.CellStyle = style;
+                IRow row9 = sheet.CreateRow(_idx);
+                row9.HeightInPoints = rowHeight;
+                for (int colIndex = 0; colIndex < maxCols; colIndex++)
+                {
+                    ICell cell = row9.CreateCell(colIndex);
+                    cell.CellStyle = style;
+                }
+                // sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 0, 1));
+                sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 2, 7));
+                _idx++;
             }
-            // sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 0, 1));
-            sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 2, 7));
-            _idx++;
+            setCellVal(sheet, _idx - ary.Length, 0, "涓嶅悎鏍艰瘎瀹★細");
+            sheet.AddMergedRegion(new CellRangeAddress(_idx - ary.Length, _idx - 1, 0, 0));
+            for (int i = 0; i < ary.Length; i++)
+            {
+                setCellVal(sheet, _idx - i - 1, 1, ary[i]);
+                setCellVal(sheet, _idx - i - 1, 2, "鈻� 鍚屾剰           鈻� 涓嶅悓鎰�        绛惧悕/鏃ユ湡锛�");
+            }
         }
-        setCellVal(sheet, _idx - ary.Length, 0, "涓嶅悎鏍艰瘎瀹★細");
-        sheet.AddMergedRegion(new CellRangeAddress(_idx - ary.Length, _idx - 1, 0, 0));
-        for (int i = 0; i < ary.Length; i++)
-        {
-            setCellVal(sheet, _idx - i - 1, 1, ary[i]);
-            setCellVal(sheet, _idx - i - 1, 2, "鈻� 鍚屾剰           鈻� 涓嶅悓鎰�        绛惧悕/鏃ユ湡锛�");
-        }
+        //濡傛灉鏄悎鏍间欢锛岄偅涓嬮潰涓嶈浜唀nd
+
         //****鍚堝苟濂藉悗寮�濮嬭祴鍊糴nd**************
+        getRowHeight(_idx, sheet, maxCols, "XlsFont");
         //淇濆瓨
         using (var ms = new MemoryStream())
         {
@@ -736,7 +876,82 @@
             }
         }
     }
+    /// <summary>
+    /// 璁$畻楂樺害
+    /// </summary>
+    /// <param name="_idx"></param>
+    /// <param name="sheet"></param>
+    /// <param name="maxCols"></param>
+    private static void getRowHeight(int _idx, ISheet sheet, int maxCols, string XlsFont)
+    {
+        int _XlsFont = int.Parse(AppSettingsHelper.getValueByKey(XlsFont).ToString());
+        for (int i = 0; i < _idx; i++)
+        {
+            if (sheet.GetRow(i) == null)
+            {
+                continue;
+            }
+            IRow ICurRow = sheet.GetRow(i);
+            int OldHg = ICurRow.Height;
+            for (int j = 0; j < maxCols; j++)
+            {
+                if (ICurRow.GetCell(j) == null)
+                {
+                    continue;
+                }
+                ICell CurCell = ICurRow.GetCell(j);
+                if (CurCell.CellType == NPOI.SS.UserModel.CellType.String && CurCell.StringCellValue != string.Empty)
+                {
+                    double CurHeight = ICurRow.Sheet.GetColumnWidth(CurCell.ColumnIndex) / 277;
+                    double length = Encoding.Default.GetBytes(CurCell.ToString()).Length;
+                    short height = Convert.ToInt16(Math.Ceiling(length / CurHeight));
+                    if (height * _XlsFont > OldHg)
+                    {
+                        OldHg = height * _XlsFont;
+                    }
+                }
+            }
+            if (ICurRow.Height < OldHg)
+            {
+                ICurRow.Height = Convert.ToInt16(OldHg);
+            }
+            //鍥犱负杩欓噷鍏ㄩ儴 鏁板瓧锛屾劅瑙夊彇鐨勯珮搴︿笉瀵�
+            if (ICurRow.GetCell(0).ToString() == "鍒剁儹鎬ц兘")
+            {
+                ICurRow.Height = Convert.ToInt16(OldHg / 3);
+            }
+        }
+    }
 
+    /// <summary>
+    /// 璇诲彇鍒剁儹鎬ц兘锛屾妸table杞负strin
+    /// </summary>
+    /// <param name="json"></param>
+    /// <returns></returns>
+    private static string getTableToString(string json)
+    {
+        if (string.IsNullOrEmpty(json))
+            return "";
+        System.Text.StringBuilder sbLine = new StringBuilder();
+        var data = JsonConvert.DeserializeObject<Dictionary<string, Dictionary<string, string>>>(json);
+        List<string> resultLines = new List<string>();
+        foreach (var entry in data)
+        {
+            string key = entry.Key;
+            var values = entry.Value;
+            string temp = values["temp"];
+            sbLine.Append(key + "/" + temp + "锛歕t");
+            System.Text.StringBuilder dbdb = new StringBuilder();
+            foreach (var dddddd in values)
+            {
+                if (dddddd.Key == "temp")
+                    continue;
+                dbdb.Append(dddddd.Key + "-" + dddddd.Value + "銆�");
+            }
+            sbLine.Append(dbdb.ToString() + "\n");
+        }
+        return sbLine.ToString();
+    }
 
     /// <summary>
     /// 鐢熸垚宸℃
@@ -750,16 +965,14 @@
         //琛岄珮
         int rowHeight = 25;
         //鎬诲垪
-        int maxCols = tb1.Columns.Count;
+        int maxCols = 10;
         HSSFWorkbook workbook = new HSSFWorkbook();
         ISheet sheet = workbook.CreateSheet("Sheet1");
-
         // 鍒涘缓鍗曞厓鏍兼牱寮� - 甯﹁竟妗嗗拰鎸囧畾瀛椾綋
         ICellStyle style = getStyle(workbook);
         ICellStyle styleHeader = getStyle(workbook, 20, true, true);
         ICellStyle style12 = getStyle(workbook, 11, false, true);
-
-        // 璁剧疆鍒楀锛�6鍒楋級
+        // 璁剧疆鍒楀锛�10鍒楋級
         sheet.SetColumnWidth(0, 3000);  // 绗竴鍒楃◢瀹�
         sheet.SetColumnWidth(1, 3000);
         sheet.SetColumnWidth(2, 3000);
@@ -768,8 +981,10 @@
         sheet.SetColumnWidth(5, 3000);
         sheet.SetColumnWidth(6, 3000);
         sheet.SetColumnWidth(7, 3000);
-        // 鍒涘缓琛�
-        for (int rowIndex = 0; rowIndex <= 1; rowIndex++)
+        sheet.SetColumnWidth(8, 3000);
+        sheet.SetColumnWidth(9, 3000);
+        // 鍒涘缓澶磋
+        for (int rowIndex = 0; rowIndex <= 2; rowIndex++)
         {
             IRow row = sheet.CreateRow(rowIndex);
             // 璁剧疆琛岄珮锛堟墍鏈夎鐩稿悓楂樺害锛�
@@ -785,31 +1000,70 @@
             }
         }
         //绗竴琛屽垪鍚堝苟
-        sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 7));
+        sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, 9));
         setCellVal(sheet, 0, 0, row0["title"].ToString());
+        //绗簩琛屽垪鍚堝苟
+        sheet.AddMergedRegion(new CellRangeAddress(1, 1, 0, 1));
+        sheet.AddMergedRegion(new CellRangeAddress(1, 1, 6, 9));
+        setCellVal(sheet, 1, 0, "宸ュ崟鍙�");
+        setCellVal(sheet, 1, 2, row0["daaNo"].ToString());
+        setCellVal(sheet, 1, 3, "浜у搧鍚嶇О");
+        setCellVal(sheet, 1, 4, row0["itemName"].ToString());
+        setCellVal(sheet, 1, 5, "瑙勬牸鍨嬪彿");
+        setCellVal(sheet, 1, 6, row0["itemModel"].ToString());
+        //绗笁琛屽垪鍚堝苟
+        sheet.AddMergedRegion(new CellRangeAddress(2, 2, 2, 4));
+        setCellVal(sheet, 2, 0, "搴忓彿");
+        setCellVal(sheet, 2, 1, "妫�楠岄」鐩�");
+        setCellVal(sheet, 2, 2, "妫�楠屾爣鍑�");
+        setCellVal(sheet, 2, 5, row0["tm1"].ToString());
+        setCellVal(sheet, 2, 6, row0["tm2"].ToString());
+        setCellVal(sheet, 2, 7, row0["tm3"].ToString());
+        setCellVal(sheet, 2, 8, row0["tm4"].ToString());
+        setCellVal(sheet, 2, 9, row0["tm5"].ToString());
         //寰幆鏁版嵁搴�
-        int _idx = 1;
-        IRow row6 = sheet.CreateRow(_idx);
-        for (int colIndex = 0; colIndex < maxCols; colIndex++)
-        {
-            ICell cell6 = row6.CreateCell(colIndex);
-            cell6.CellStyle = style;
-            cell6.SetCellValue(tb1.Columns[colIndex].Caption.ToString().Trim());
-        }
-        _idx++;
+        int _idx = 3;
         foreach (DataRow rrr in tb1.Rows)
         {
             IRow row7 = sheet.CreateRow(_idx);
             row7.HeightInPoints = rowHeight;
-            for (int colIndex = 0; colIndex < tb1.Columns.Count; colIndex++)
+            for (int colIndex = 0; colIndex < maxCols; colIndex++)
             {
                 ICell cell7 = row7.CreateCell(colIndex);
                 cell7.CellStyle = style;
-                cell7.SetCellValue(rrr[tb1.Columns[colIndex]].ToString());
+                // cell7.SetCellValue("1");
+                switch (colIndex)
+                {
+                    case 0:
+                        cell7.SetCellValue(rrr["搴忓彿"].ToString());
+                        break;
+                    case 1:
+                        sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 2, 4));
+                        cell7.SetCellValue(rrr["妫�楠岄」鐩�"].ToString());
+                        break;
+                    case 2:
+                        cell7.SetCellValue(rrr["妫�楠屾爣鍑�"].ToString());
+                        break;
+                    case 5:
+                        cell7.SetCellValue(rrr["tm1"].ToString());
+                        break;
+                    case 6:
+                        cell7.SetCellValue(rrr["tm2"].ToString());
+                        break;
+                    case 7:
+                        cell7.SetCellValue(rrr["tm3"].ToString());
+                        break;
+                    case 8:
+                        cell7.SetCellValue(rrr["tm4"].ToString());
+                        break;
+                    case 9:
+                        cell7.SetCellValue(rrr["tm5"].ToString());
+                        break;
+                }
             }
             _idx++;
         }
-        //澶囨敞
+        ////澶囨敞
         IRow row8 = sheet.CreateRow(_idx);
         row8.HeightInPoints = rowHeight;
         for (int colIndex = 0; colIndex < maxCols; colIndex++)
@@ -817,12 +1071,13 @@
             ICell cell = row8.CreateCell(colIndex);
             cell.CellStyle = style12;
         }
-        sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 0, 2));
+        sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 0, 4));
         setCellVal(sheet, _idx, 0, "宸℃浜猴細");
-        for (int colIndex = 2; colIndex < tb1.Columns.Count; colIndex++)
-        {
-            setCellVal(sheet, _idx, colIndex, "浣欏悏鏋�");
-        }
+        setCellVal(sheet, _idx, 5, row0["xjr1"].ToString());
+        setCellVal(sheet, _idx, 6, row0["xjr2"].ToString());
+        setCellVal(sheet, _idx, 7, row0["xjr3"].ToString());
+        setCellVal(sheet, _idx, 8, row0["xjr4"].ToString());
+        setCellVal(sheet, _idx, 9, row0["xjr5"].ToString());
         //淇濆瓨
         using (var ms = new MemoryStream())
         {
@@ -839,13 +1094,374 @@
         }
     }
 
+    /// <summary>
+    /// 鐢熸垚鎴愬搧妫�楠屾姤鍛婏紙鎸夊疄闄呮ā鏉跨粨鏋勶級
+    /// </summary>
+    /// <param name="dtSource"></param>
+    /// <param name="strFileName"></param>
+    public static void ExportChengPin(DataSet dtSource, string strFileName)
+    {
+        //琛岄珮
+        int rowHeight = 25;
+        //鎬诲垪鏁� - 鏍规嵁妯℃澘鍒嗘瀽锛岃嚦灏戦渶瑕�18鍒�
+        int maxCols = 18;
+        // 鍒涘缓宸ヤ綔绨�
+        HSSFWorkbook workbook = new HSSFWorkbook();
+        ISheet sheet = workbook.CreateSheet("Sheet1");
+        // 鍒涘缓鍗曞厓鏍兼牱寮�
+        ICellStyle style = getStyle(workbook);
+        ICellStyle styleHeader = getStyle(workbook, 16, true, true);
+        ICellStyle styleTitle = getStyle(workbook, 14, true, true);
+        ICellStyle styleSmall = getStyle(workbook, 10, false, false);
+        style.WrapText = true;
+        styleHeader.WrapText = true;
+        styleTitle.WrapText = true;
+        styleSmall.WrapText = true;
+
+        // 璁剧疆鍒楀
+        sheet.SetColumnWidth(0, 3500);   // A鍒楋細椤圭洰鍚嶇О
+        sheet.SetColumnWidth(1, 5000);   // B鍒楋細鏍囧噯/瑙勮寖
+        for (int i = 2; i < 18; i++)     // C鍒癛鍒楋細16涓娴嬪�煎垪
+        {
+            sheet.SetColumnWidth(i, 3500);
+        }
+
+        //鑾峰彇琛ㄥご鏁版嵁
+        DataTable tb0 = dtSource.Tables[0];
+        DataRow row0 = tb0.Rows[0];
+        int _idx = 0;
+
+        // 绗�1琛岋細鎶ュ憡鏍囬
+        IRow titleRow = sheet.CreateRow(_idx);
+        titleRow.HeightInPoints = 30;
+        for (int i = 0; i < maxCols; i++)
+        {
+            ICell cell = titleRow.CreateCell(i);
+            cell.CellStyle = styleHeader;
+        }
+        sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 0, maxCols - 1));
+        setCellVal(sheet, _idx, 0, "鎴愬搧妫�楠屾姤鍛�");
+        _idx++;
+
+        // 绗�2琛岋細鍩烘湰淇℃伅绗竴琛�
+        IRow info1Row = sheet.CreateRow(_idx);
+        info1Row.HeightInPoints = rowHeight;
+        for (int i = 0; i < maxCols; i++)
+        {
+            ICell cell = info1Row.CreateCell(i);
+            cell.CellStyle = style;
+        }
+        setCellVal(sheet, _idx, 0, "鐢熶骇杞﹂棿锛�" + (row0["workShop"]?.ToString() ?? ""));
+        sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 0, 5));
+        _idx++;
+
+        // 绗�3琛岋細浜у搧淇℃伅
+        IRow info2Row = sheet.CreateRow(_idx);
+        info2Row.HeightInPoints = rowHeight;
+        for (int i = 0; i < maxCols; i++)
+        {
+            ICell cell = info2Row.CreateCell(i);
+            cell.CellStyle = style;
+        }
+        setCellVal(sheet, _idx, 0, "浜у搧鍚嶇О");
+        sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 4));
+        setCellVal(sheet, _idx, 1, row0["itemName"]?.ToString() ?? "");
+
+        setCellVal(sheet, _idx, 5, "鍨嬪彿瑙勬牸");
+        sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 6, 11));
+        setCellVal(sheet, _idx, 6, row0["itemModel"]?.ToString() ?? "");
+
+        setCellVal(sheet, _idx, 12, "绾垮彿");
+        sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 13, 15));
+        setCellVal(sheet, _idx, 13, row0["lineNo"]?.ToString() ?? "");
+        _idx++;
+
+        // 绗�4琛岋細鍟嗘爣绛変俊鎭�
+        IRow info3Row = sheet.CreateRow(_idx);
+        info3Row.HeightInPoints = rowHeight;
+        for (int i = 0; i < maxCols; i++)
+        {
+            ICell cell = info3Row.CreateCell(i);
+            cell.CellStyle = style;
+        }
+        setCellVal(sheet, _idx, 0, "鍟嗘爣");
+        sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 4));
+        setCellVal(sheet, _idx, 1, row0["brand"]?.ToString() ?? "");
+
+        setCellVal(sheet, _idx, 5, "鐢熶骇鏃ユ湡");
+        sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 6, 11));
+        setCellVal(sheet, _idx, 6, row0["productionDate"]?.ToString() ?? "");
+
+        setCellVal(sheet, _idx, 12, "鐝");
+        setCellVal(sheet, _idx, 13, row0["classes"]?.ToString() ?? "");
+
+        setCellVal(sheet, _idx, 14, "鎵归噺");
+        setCellVal(sheet, _idx, 15, row0["batch"]?.ToString() ?? "");
+        _idx++;
+
+        // 绗�5琛岋細AC/Re鏍囧噯
+        IRow acreRow = sheet.CreateRow(_idx);
+        acreRow.HeightInPoints = rowHeight;
+        for (int i = 0; i < maxCols; i++)
+        {
+            ICell cell = acreRow.CreateCell(i);
+            cell.CellStyle = style;
+        }
+        setCellVal(sheet, _idx, 0, "Ac/Re(A绫伙級");
+        sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 5));
+        setCellVal(sheet, _idx, 1, row0["acRe_A"]?.ToString() ?? "");
+
+        setCellVal(sheet, _idx, 6, "Ac/Re(B绫伙級");
+        sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 7, 11));
+        setCellVal(sheet, _idx, 7, row0["acRe_B"]?.ToString() ?? "");
+
+        setCellVal(sheet, _idx, 12, "Ac/Re(C绫伙級");
+        sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 13, 17));
+        setCellVal(sheet, _idx, 13, row0["acRe_C"]?.ToString() ?? "");
+        _idx++;
+
+        // 绗�6琛岋細鎶芥牱淇℃伅
+        IRow sampleRow = sheet.CreateRow(_idx);
+        sampleRow.HeightInPoints = rowHeight;
+        for (int i = 0; i < maxCols; i++)
+        {
+            ICell cell = sampleRow.CreateCell(i);
+            cell.CellStyle = style;
+        }
+        setCellVal(sheet, _idx, 0, "鎶芥牱");
+        setCellVal(sheet, _idx, 1, "鍖�閫�");
+        setCellVal(sheet, _idx, 2, row0["SampleMethod"]?.ToString() == "鍖�閫�" ? "鈭�" : "");
+        setCellVal(sheet, _idx, 3, "闅忔満");
+        setCellVal(sheet, _idx, 4, row0["SampleMethod"]?.ToString() == "闅忔満" ? "鈭�" : "");
+
+        setCellVal(sheet, _idx, 5, "鏍锋湰鏁�");
+        setCellVal(sheet, _idx, 6, "鍖�閫熸娊鏍锋暟");
+        setCellVal(sheet, _idx, 7, row0["sampleSize1"]?.ToString() ?? "");
+        setCellVal(sheet, _idx, 8, "闅忔満鎶芥牱鏁�");
+        setCellVal(sheet, _idx, 9, row0["sampleSize2"]?.ToString() ?? "");
+        setCellVal(sheet, _idx, 10, "鏍锋湰");
+        setCellVal(sheet, _idx, 11, row0["sampleSize3"]?.ToString() ?? "");
+        _idx++;
+
+        int num;
+        if (row0["SampleMethod"]?.ToString() == "鍖�閫�")
+        {
+            if (int.TryParse(row0["sampleSize1"]?.ToString(), out int size))
+            {
+                num = size;
+            }
+            else
+            {
+                num = 0;
+            }
+        }
+        else
+        {
+            if (int.TryParse(row0["sampleSize2"]?.ToString(), out int size))
+            {
+                num = size;
+            }
+            else
+            {
+                num = 0;
+            }
+        }
+        if (num > 16)
+            num = 16;
+
+        // 绗�7琛岋細妫�楠岄」鐩〃澶�
+        IRow headerRow = sheet.CreateRow(_idx);
+        headerRow.HeightInPoints = rowHeight;
+        for (int i = 0; i < maxCols; i++)
+        {
+            ICell cell = headerRow.CreateCell(i);
+            cell.CellStyle = styleTitle;
+        }
+        setCellVal(sheet, _idx, 0, "椤圭洰");
+        setCellVal(sheet, _idx, 1, "鏍囧噯");
+        // 鏍规嵁闇�瑕佺户缁坊鍔犳洿澶氬垪鏍囬锛岃繖閲岀畝鍖栦负涓昏鍒�
+        for (int i = 2; i < num + 2; i++)
+        {
+            setCellVal(sheet, _idx, i, (i - 1).ToString());
+        }
+        _idx++;
+
+        // 妫�楠岄」鐩暟鎹�
+        if (dtSource.Tables.Count > 1)
+        {
+            DataTable tb1 = dtSource.Tables[1];
+            foreach (DataRow rrr in tb1.Rows)
+            {
+                IRow dataRow = sheet.CreateRow(_idx);
+                dataRow.HeightInPoints = rowHeight;
+
+                for (int i = 0; i < maxCols; i++)
+                {
+                    ICell cell = dataRow.CreateCell(i);
+                    cell.CellStyle = style;
+                }
+
+                setCellVal(sheet, _idx, 0, rrr["RPB003"]?.ToString() ?? "");
+                setCellVal(sheet, _idx, 1, rrr["RPB004"]?.ToString() ?? "");
+
+                // 濉厖16涓祴璇曞��
+                for (int i = 0; i < num; i++)
+                {
+                    string colName = $"RPB{i + 5:D3}"; // RPB005, RPB006, ..., RPB020
+                    if (rrr.Table.Columns.Contains(colName))
+                    {
+                        setCellVal(sheet, _idx, i + 2, rrr[colName]?.ToString() ?? "");
+                    }
+                    else
+                    {
+                        setCellVal(sheet, _idx, i + 2, "");
+                    }
+                }
+
+                _idx++;
+            }
+        }
+
+        // 涓嶅悎鏍煎唴瀹硅褰�
+        IRow defectHeaderRow = sheet.CreateRow(_idx);
+        defectHeaderRow.HeightInPoints = rowHeight;
+        for (int i = 0; i < maxCols; i++)
+        {
+            ICell cell = defectHeaderRow.CreateCell(i);
+            cell.CellStyle = styleTitle;
+        }
+        setCellVal(sheet, _idx, 0, "搴忓彿");
+        sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 10)); // 涓嶅悎鏍煎唴瀹瑰崰澶氬垪
+        setCellVal(sheet, _idx, 1, "涓嶅悎鏍煎唴瀹�");
+        setCellVal(sheet, _idx, 11, "A绫�");
+        setCellVal(sheet, _idx, 12, "B绫�");
+        setCellVal(sheet, _idx, 13, "C绫�");
+        sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 14, 17)); // 娉ㄦ剰鐐瑰崰鍓╀綑鍒�
+        setCellVal(sheet, _idx, 14, "娉ㄦ剰鐐�");
+        _idx++;
+
+        if (dtSource.Tables.Count > 2)
+        {
+            DataTable tb2 = dtSource.Tables[2];
+            foreach (DataRow rrr in tb2.Rows)
+            {
+                if (rrr["Description"]?.ToString() == "涓嶈壇鏁伴噺")
+                    break;
+                IRow dataRow = sheet.CreateRow(_idx);
+                dataRow.HeightInPoints = rowHeight;
+
+                for (int i = 0; i < maxCols; i++)
+                {
+                    ICell cell = dataRow.CreateCell(i);
+                    cell.CellStyle = style;
+                }
+
+                setCellVal(sheet, _idx, 0, rrr["Seq"]?.ToString() ?? "");
+                sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 10)); // 涓嶅悎鏍煎唴瀹瑰崰澶氬垪
+                setCellVal(sheet, _idx, 1, rrr["Description"]?.ToString() ?? "");
+                setCellVal(sheet, _idx, 11, rrr["AClass"]?.ToString() ?? "");
+                setCellVal(sheet, _idx, 12, rrr["BClass"]?.ToString() ?? "");
+                setCellVal(sheet, _idx, 13, rrr["CClass"]?.ToString() ?? "");
+                sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 14, 17)); // 娉ㄦ剰鐐瑰崰鍓╀綑鍒�
+                setCellVal(sheet, _idx, 14, rrr["Point"]?.ToString() ?? "");
+                _idx++;
+            }
+
+            DataRow dr = tb2.Rows[tb2.Rows.Count - 1];
+            // 澶囨敞琛�
+            IRow remarkRow = sheet.CreateRow(_idx);
+            remarkRow.HeightInPoints = rowHeight;
+            for (int i = 0; i < maxCols; i++)
+            {
+                ICell cell = remarkRow.CreateCell(i);
+                cell.CellStyle = style;
+            }
+            setCellVal(sheet, _idx, 0, "澶囨敞锛�");
+            sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 8));
+            setCellVal(sheet, _idx, 9, "涓嶈壇鏁伴噺锛�");
+            sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 9, 10));
+            setCellVal(sheet, _idx, 11, dr["AClass"]?.ToString() ?? "");
+            setCellVal(sheet, _idx, 12, dr["BClass"]?.ToString() ?? "");
+            setCellVal(sheet, _idx, 13, dr["CClass"]?.ToString() ?? "");
+            sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 14, 17)); // 娉ㄦ剰鐐瑰崰鍓╀綑鍒�
+            setCellVal(sheet, _idx, 14, dr["Point"]?.ToString() ?? "");
+            _idx++;
+
+            // 澶х殑澶囨敞鍐呭鍖哄煙
+            IRow remarkContentRow = sheet.CreateRow(_idx);
+            remarkContentRow.HeightInPoints = 60;
+            for (int i = 0; i < maxCols; i++)
+            {
+                ICell cell = remarkContentRow.CreateCell(i);
+                cell.CellStyle = style;
+            }
+            sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 0, 17));
+            setCellVal(sheet, _idx, 0, dr["Remark"]?.ToString() ?? "");
+            _idx++;
+        }
+
+        // 妫�楠屽垽瀹氬尯鍩燂紙3琛屽竷灞�锛�
+        for (int judgeRowIndex = 0; judgeRowIndex < 2; judgeRowIndex++)
+        {
+            IRow judgmentRow = sheet.CreateRow(_idx);
+            judgmentRow.HeightInPoints = rowHeight;
+            for (int i = 0; i < maxCols; i++)
+            {
+                ICell cell = judgmentRow.CreateCell(i);
+                cell.CellStyle = styleTitle;
+            }
+
+            if (judgeRowIndex == 0)
+            {
+                // 绗竴琛岋細妫�楠屽垽瀹�
+                setCellVal(sheet, _idx, 0, "妫�楠屽垽瀹�");
+                sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx + 1, 0, 0)); // 淇敼涓鸿法2琛岃�屼笉鏄�3琛�
+                setCellVal(sheet, _idx, 1, row0["CheckResult"]?.ToString() ?? "");
+                sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 1, 5)); // 鍙悎骞跺綋鍓嶈
+
+                setCellVal(sheet, _idx, 6, "妫�楠岀鍚�");
+                sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 7, 10)); // 鍙悎骞跺綋鍓嶈
+                setCellVal(sheet, _idx, 7, row0["JY_NAME"]?.ToString() ?? "");
+                setCellVal(sheet, _idx, 11, "瀹℃牳绛惧悕");
+                sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 12, 16)); // 鍙悎骞跺綋鍓嶈
+                setCellVal(sheet, _idx, 12, row0["CHECK_USER"]?.ToString() ?? "");
+            }
+            else if (judgeRowIndex == 1)
+            {
+                setCellVal(sheet, _idx, 6, "妫�楠屾棩鏈�");
+                sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 7, 10)); // 鍙悎骞跺綋鍓嶈
+                setCellVal(sheet, _idx, 7, row0["JY_DATE"]?.ToString() ?? "");
+                setCellVal(sheet, _idx, 11, "瀹℃牳鏃ユ湡");
+                sheet.AddMergedRegion(new CellRangeAddress(_idx, _idx, 12, 16)); // 鍙悎骞跺綋鍓嶈
+                setCellVal(sheet, _idx, 12, row0["CHECK_DATE"]?.ToString() ?? "");
+            }
+            _idx++;
+        }
+
+        getRowHeight(_idx, sheet, maxCols, "XlsFontXj");
+
+        //淇濆瓨
+        using (var ms = new MemoryStream())
+        {
+            using (var fs = new FileStream(strFileName, FileMode.Create, FileAccess.Write))
+            {
+                workbook.Write(ms);
+                ms.Flush();
+                ms.Position = 0;
+                var data = ms.ToArray();
+                fs.Write(data, 0, data.Length);
+                fs.Flush();
+            }
+        }
+    }
 
     /// <summary>
-    ///     Excel瀵煎叆鎴怐atable
+    ///   Excel瀵煎叆鎴怐atable
     /// </summary>
     /// <param name="file">瀵煎叆璺緞(鍖呭惈鏂囦欢鍚嶄笌鎵╁睍鍚�)</param>
+    /// <param name="strType">宸ュ崟缂栧彿锛岃繃婊ゅ琛ㄦ牸</param>
     /// <returns></returns>
-    public static DataTable ExcelToTable(string file)
+    public static DataTable ExcelToTable(string file, string strType = "")
     {
         var dt = new DataTable();
         IWorkbook workbook;
@@ -865,7 +1481,16 @@
 
             var sheet = workbook.GetSheetAt(0);
             //琛ㄥご  
-            var header = sheet.GetRow(sheet.FirstRowNum + 1);
+            int intBt = 0;
+            //濡傛灉鏄悗鐩栫爜锛屽彇绗�1琛岋紝鍚﹀垯鍙栫浜岃
+            if (string.IsNullOrEmpty(strType))
+            {
+                intBt = sheet.FirstRowNum + 1;
+            }
+            else
+                intBt = sheet.FirstRowNum;
+
+            var header = sheet.GetRow(intBt);
             var columns = new List<int>();
             for (var i = 0; i < header.LastCellNum; i++)
             {
@@ -880,8 +1505,19 @@
             for (var act = 0; act < numberOfSheets; act++)
             {
                 var _sheet = workbook.GetSheetAt(act);
+                #region 鍚庣洊鐮佺壒娈�
+                if (!string.IsNullOrEmpty(strType))
+                {
+                    string _sheetName = _sheet.SheetName.Trim();
+                    if (strType != _sheetName)
+                    {
+                        continue;
+                    }
+                }
+                #endregion
+
                 //鏁版嵁  
-                for (var i = _sheet.FirstRowNum + 1 + 1;
+                for (var i = intBt + 1;
                      i <= _sheet.LastRowNum;
                      i++)
                 {
@@ -903,7 +1539,7 @@
     }
 
     /// <summary>
-    ///     鑾峰彇鍗曞厓鏍肩被鍨�
+    /// 鑾峰彇鍗曞厓鏍肩被鍨�
     /// </summary>
     /// <param name="cell"></param>
     /// <returns></returns>
diff --git a/WebApi/Gs.Toolbox/Gs.Toolbox.csproj b/WebApi/Gs.Toolbox/Gs.Toolbox.csproj
index 950f8b7..5e405f0 100644
--- a/WebApi/Gs.Toolbox/Gs.Toolbox.csproj
+++ b/WebApi/Gs.Toolbox/Gs.Toolbox.csproj
@@ -7,15 +7,15 @@
     </PropertyGroup>
 
     <ItemGroup>
-        <PackageReference Include="Masuit.Tools.Core" Version="2024.5.8"/>
-        <PackageReference Include="Microsoft.AspNetCore" Version="2.2.0"/>
-        <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.8"/>
-        <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2"/>
-        <PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.2.0"/>
-        <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0"/>
-        <PackageReference Include="NPOI" Version="2.7.1"/>
-        <PackageReference Include="SqlSugarCore" Version="5.1.4.167"/>
-        <PackageReference Include="System.Data.SqlClient" Version="4.8.6"/>
+        <PackageReference Include="Masuit.Tools.Core" Version="2024.5.8" />
+        <PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
+        <PackageReference Include="Microsoft.AspNetCore.App" Version="2.2.8" />
+        <PackageReference Include="Microsoft.AspNetCore.Http" Version="2.2.2" />
+        <PackageReference Include="Microsoft.AspNetCore.Identity" Version="2.2.0" />
+        <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
+        <PackageReference Include="NPOI" Version="2.7.1" />
+        <PackageReference Include="SqlSugarCore" Version="5.1.4.167" />
+        <PackageReference Include="System.Data.SqlClient" Version="4.8.6" />
     </ItemGroup>
 
 </Project>
diff --git a/WebApi/Gs.Toolbox/InterfaceUtil.cs b/WebApi/Gs.Toolbox/InterfaceUtil.cs
index 794a67b..c40aa81 100644
--- a/WebApi/Gs.Toolbox/InterfaceUtil.cs
+++ b/WebApi/Gs.Toolbox/InterfaceUtil.cs
@@ -20,8 +20,10 @@
     /// <returns>濡傛灉鎴愬姛杩斿洖鏃ュ織guid,鍚﹀垯杩斿洖涓�</returns>
     public static (int, string) HttpPostErp(string param, string edtUserGuid = "", string abtGuid = "", string hNo = "", int urlType = 0)
     {
-        System.Text.StringBuilder sbTm = new System.Text.StringBuilder();
-        sbTm.Append(DateTime.Now.ToString() + "寮�濮嬪彂閫�");
+        int _rtn = 0;
+        //鏃ュ織璇︾粏锛屽彂閫佺殑鏃跺�欙紝璁板綍鏃ュ織锛屽瓨鍌ㄨ繃绋嬭皟鐢ㄧ殑鏃跺�欙紝鍐嶇疮鍔犱笂mes涓氬姟鐨勬搷浣滅粨鏋�
+        System.Text.StringBuilder sbLog = new System.Text.StringBuilder();
+        sbLog.Append(DateTime.Now.ToString() + "寮�濮嬪彂閫�");
         string strLogGuid = Guid.NewGuid().ToString();
         string url = AppSettingsHelper.getValueByKey("TestErpUrl");
         if (urlType == 2)
@@ -55,9 +57,9 @@
         }
         catch (Exception ex)
         {
-            LogHelper.Debug(url, "HttpPostErp param:" + param + "锛宔x:" + ex.Message);
+            LogHelper.Debug(url, "HttpPostErp response:" + param + "锛宔x:" + ex.Message);
             responseStr = ex.Message;
-            // throw ex;
+            _rtn = -1;
         }
         finally
         {
@@ -65,15 +67,17 @@
             requestStream = null;
             response = null;
         }
-        Result _result = JsonConvert.DeserializeObject<Result>(responseStr);
-        int _rtn = 0;
-        if ("200".Equals(_result.state))
-            _rtn = 1;
-        sbTm.Append("," + DateTime.Now.ToString() + "缁撴潫鍙戦��");
+        if (_rtn != -1)
+        {
+            Result _result = JsonConvert.DeserializeObject<Result>(responseStr);
+            if ("200".Equals(_result.state))
+                _rtn = 1;
+        }
+        sbLog.Append("," + DateTime.Now.ToString() + "缁撴潫鍙戦��");
         if (_rtn > 0)
-            sbTm.Append(",鍙戦�佹垚鍔�");
+            sbLog.Append(",鍙戦�佹垚鍔�");
         else
-            sbTm.Append(",鍙戦�佸け璐�,mes閫�鍑烘搷浣�");
+            sbLog.Append(",鍙戦�佸け璐�,mes閫�鍑烘搷浣�");
         try
         {
             SqlParameter[] parameters =
@@ -81,11 +85,13 @@
             new("@edtUserGuid", edtUserGuid),
             new("@abtGuid", abtGuid),
             new("@abtTable", ""),
-            new("@detail", sbTm.ToString()),
+            new("@detail", sbLog.ToString()),
             new("@hNo", hNo),
             new("@RtnLogGuid", strLogGuid),
             new("@SendJson", param),
             new("@RtnJson", responseStr),
+            new("@isSuccess", (_rtn>0?1:0)),
+            new("@isErp", 1),
         };
             DbHelperSQL.RunProcedure("[prc_log_create]", parameters);
         }
diff --git a/WebApi/Gs.Toolbox/UtilityHelper.cs b/WebApi/Gs.Toolbox/UtilityHelper.cs
index 0b53232..254c708 100644
--- a/WebApi/Gs.Toolbox/UtilityHelper.cs
+++ b/WebApi/Gs.Toolbox/UtilityHelper.cs
@@ -1,8 +1,8 @@
-锘縰sing System.Data;
+锘縰sing Microsoft.AspNetCore.Http;
+using System.Data;
 using System.Dynamic;
 using System.Security.Cryptography;
 using System.Text;
-using Microsoft.AspNetCore.Http;
 
 namespace Gs.Toolbox;
 
@@ -149,4 +149,5 @@
         if (guid == null) return false;
         return true;
     }
+
 }
\ No newline at end of file
diff --git a/WebApi/Gs.Warehouse/Services/MesDepotSectionsManager.cs b/WebApi/Gs.Warehouse/Services/MesDepotSectionsManager.cs
index ef3683f..9e4606c 100644
--- a/WebApi/Gs.Warehouse/Services/MesDepotSectionsManager.cs
+++ b/WebApi/Gs.Warehouse/Services/MesDepotSectionsManager.cs
@@ -1,7 +1,11 @@
 锘縰sing Gs.Entity.BaseInfo;
 using Gs.Toolbox;
 using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
 using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using System.Data;
+using System.Text;
 
 namespace Gs.Warehouse.Services;
 
@@ -9,4 +13,86 @@
 public class MesDepotSectionsManager : Repository<MesDepotSections>,
     IRomteService
 {
+    private readonly IHttpContextAccessor _http;
+
+    private readonly string _userCode, _userGuid, _orgFids;
+
+    public MesDepotSectionsManager()
+    {
+        //_http = httpContextAccessor;
+        //(_userCode, _userGuid, _orgFids) =
+        //    UtilityHelper.GetUserGuidAndOrgGuid(_http);
+    }
+
+
+    /// <summary>
+    ///     鏌ヨ鍒楄〃锛屾敮鎸佸垎椤�,鐢ㄤ簬鍚勭缁戝畾
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> GetListPage2(PageQuery model)
+    {
+        var currentPage = model.currentPage;
+        var everyPageSize = model.everyPageSize;
+        var sortName = string.IsNullOrEmpty(model.sortName) ? "a.USER_NAME" : model.sortName;
+        var keyWhere = model.keyWhere;
+        string keyType = model.keyType;
+        System.Text.StringBuilder sbJoin = new StringBuilder();
+        sbJoin.Append(" from [dbo].[MES_DEPOT_SECTIONS] a ");
+        sbJoin.Append(" left join [dbo].[MES_DEPOTS] d on a.depot_guid=d.depot_id");
+        sbJoin.Append(" left join SYS_ORGANIZATION org on d.FSubsidiary=org.FID");
+        sbJoin.Append(keyWhere);
+        var sbSql = new StringBuilder();
+        sbSql.Append("  SELECT * FROM ");
+        sbSql.Append(" (SELECT N'(' +[Org].[FNumber] + N')'  +[Org].[NAME]  AS [FSubsidiary2]");
+        sbSql.Append(", a.depot_section_code as cwCode,a.depot_section_name as cwName,d.depot_name as ckName,d.depot_id as ckId,d.depot_code as ckCode ,ROW_NUMBER() OVER(ORDER BY a.depot_section_code asc) AS RowIndex ");
+        //濡傛灉鏃犲叧閿瓧锛屾棤闇�鎵炬煡缁戝畾
+        if (string.IsNullOrEmpty(keyType))
+        {
+            sbSql.Append(",cast(0 as bit) as chkInt");
+        }
+        else
+            sbSql.Append(",cast( (select count(1)  from SYS_USER_BIND bind where bind.userGuid='" + keyType + "' and bind.aboutGuid=a.depot_section_code  and bind.fType='搴撲綅')  as bit) as chkInt ");
+        sbSql.Append(sbJoin);
+        sbSql.Append(") T");
+        sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" + everyPageSize + " and  T.rowindex<=" + currentPage + "*" + everyPageSize);
+        sbSql.Append(" select count(1) as intTotal ");
+        sbSql.Append(sbJoin);
+        var dset = new DataSet();
+        try
+        {
+            dset = DbHelperSQL.Query(sbSql.ToString());
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "GetListPage error锛�" + ex.Message);
+            return ReturnDto<PageList<dynamic>>.QuickReturn(default(PageList<dynamic>), ReturnCode.Exception, "璇诲彇澶辫触");
+        }
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        if (dset != null && dset.Tables.Count > 0 &&
+            dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+        {
+            var intTotal = int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+            var pages = intTotal % everyPageSize != 0
+                ? intTotal / everyPageSize + 1
+                : intTotal / everyPageSize;
+            _pglist.total = intTotal;
+            _pglist.everyPageSize = everyPageSize;
+            _pglist.pages = pages;
+            var _dy = dset.Tables[0].TableToDynamicList();
+            _pglist.list = _dy;
+        }
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+
+
+
 }
\ No newline at end of file
diff --git a/WebApi/Gs.Warehouse/Services/MesDepotsManager.cs b/WebApi/Gs.Warehouse/Services/MesDepotsManager.cs
index 863f42c..3815d20 100644
--- a/WebApi/Gs.Warehouse/Services/MesDepotsManager.cs
+++ b/WebApi/Gs.Warehouse/Services/MesDepotsManager.cs
@@ -99,6 +99,7 @@
         var sortName = string.IsNullOrEmpty(model.sortName) ? "a.PAGE_GROUP" : model.sortName;
         var keyWhere = model.keyWhere;
         string keyType = model.keyType;
+        string keyWord = model.keyWord;
         var sbSql = new StringBuilder();
         sbSql.Append("  SELECT * FROM ");
         sbSql.Append(" (SELECT N'(' +[Org].[FNumber] + N')'  +[Org].[NAME]  AS [FSubsidiary2] ,");
@@ -107,12 +108,20 @@
         sbSql.Append(" [f].[supp_name] AS [SuppLierId] , [g].[departmentname] AS [department2] ,");
         sbSql.Append(" ( CASE  WHEN ( [a].[is_ng] = N'A' ) THEN N'姝e父'  ELSE N'绂佺敤' END ) AS [IsNg] ");
         sbSql.Append(", [a].*,ROW_NUMBER() OVER(ORDER BY org.FNumber asc ,a.depot_code asc) AS RowIndex ");
+        if (string.IsNullOrEmpty(keyWord))
+        {
+            sbSql.Append(",'' as kcQty");
+        }
+        else
+        {
+            sbSql.Append(", isnull((select top 1 搴撳瓨瀵规瘮 from [dbo].[鍗虫椂搴撳瓨宸紓琛╙ where 鐗╂枡ID=" + keyWord + " and 浠撳簱ID=[a].[depot_id]),'('+a.depot_name+')0/0') AS [kcQty]  ");
+        }
         if (string.IsNullOrEmpty(keyType))
         {
             sbSql.Append(",cast(0 as bit) as chkInt");
         }
         else
-            sbSql.Append(",cast( (select count(1)  from SYS_USER_BIND b where b.userGuid='" + keyType + "' and b.aboutGuid=a.guid)  as bit) as chkInt ");
+            sbSql.Append(",cast( (select count(1)  from SYS_USER_BIND b where b.userGuid='" + keyType + "' and b.aboutGuid=a.guid  and b.fType='浠撳簱')  as bit) as chkInt ");
         sbSql.Append(" FROM [MES_DEPOTS] [a] Left JOIN [SYS_ORGANIZATION] [Org] ON ( [a].[FSubsidiary] = [Org].[FID] )");
         sbSql.Append(" Left JOIN [MES_STAFF] [c] ON ( [a].[create_by] = CAST([c].[id] AS NVARCHAR(50))) ");
         sbSql.Append(" Left JOIN [MES_CUSTOMER] [d] ON (CAST([d].[id] AS NVARCHAR(50)) = CAST([a].[Client_Id] AS NVARCHAR(50))) ");
@@ -174,15 +183,15 @@
     public ReturnDto<MesDepots> GetModel([FromBody] MesDepots model)
     {
         var m = base.GetById(model.Guid);
-        string _CreateBy = m.CreateBy;
-        try
-        {
-            m.CreateBy = Gs.Toolbox.DbHelperSQL.GetSingle("select  top 1 staff_name from [dbo].[MES_STAFF] where id='" + _CreateBy + "'").ToString();
-        }
-        catch (Exception ex)
-        {
-            Gs.Toolbox.LogHelper.Debug(this.ToString(), "璇诲彇璐熻矗浜篹rror," + ex.Message);
-        }
+        //string _CreateBy = m.CreateBy;
+        //try
+        //{
+        //    m.CreateBy = Gs.Toolbox.DbHelperSQL.GetSingle("select  top 1 staff_name from [dbo].[MES_STAFF] where id='" + _CreateBy + "'").ToString();
+        //}
+        //catch (Exception ex)
+        //{
+        //    Gs.Toolbox.LogHelper.Debug(this.ToString(), "璇诲彇璐熻矗浜篹rror," + ex.Message);
+        //}
         m.IsNg = m.IsNg + ":" + (m.IsNg == "A" ? "姝e父" : "绂佺敤");
         var lst = new MesDepotSectionsManager();
         m.list = lst.GetList(it => it.DepotGuid == m.Guid).OrderBy(it => it.DepotSectionCode).ToList();
@@ -202,6 +211,12 @@
         System.Text.StringBuilder sbMsg = new System.Text.StringBuilder();
         try
         {
+            string Remark55 = model.Remark5;
+            string Guid55 = model.Guid;
+            //if (!string.IsNullOrEmpty(Remark55))
+            //{
+            Gs.Toolbox.DbHelperSQL.ExecuteSql(" update MES_DEPOTS set Remark5='" + Remark55 + "' where guid='" + Guid55 + "'");
+            //}
             Db.Ado.BeginTran();
             var _manager = new MesDepotSectionsManager();
             var _upLst = new List<MesDepotSections>();
diff --git a/WebApi/Gs.Warehouse/Services/MesInvItemArnManager.cs b/WebApi/Gs.Warehouse/Services/MesInvItemArnManager.cs
index d21ba21..8abb7e4 100644
--- a/WebApi/Gs.Warehouse/Services/MesInvItemArnManager.cs
+++ b/WebApi/Gs.Warehouse/Services/MesInvItemArnManager.cs
@@ -96,6 +96,70 @@
             ReturnCode.Success, "璇诲彇鎴愬姛");
     }
 
+
+    /// <summary>
+    /// 閲囪喘鍒拌揣鍗曟姤琛�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> GetListPageReport([FromBody] dynamic model)
+    {
+        int currentPage = model.currentPage;
+        int everyPageSize = model.everyPageSize;
+        string sortName = model.sortName;
+        string keyWhere = model.keyWhere;
+        SqlParameter[] parameters =
+        {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+        var dset = new DataSet();
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        try
+        {
+            dset = DbHelperSQL.RunProcedure("prc_cgdhd_report", parameters, "0");
+            if (dset != null && dset.Tables.Count > 0 &&
+                dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+            {
+                var intTotal =
+                    int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                var pages = intTotal % everyPageSize != 0
+                    ? intTotal / everyPageSize + 1
+                    : intTotal / everyPageSize;
+                _pglist.total = intTotal;
+                _pglist.everyPageSize = everyPageSize;
+                _pglist.pages = pages;
+                var _dy = dset.Tables[0].TableToDynamicList();
+                _pglist.list = _dy;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+          ReturnCode.Exception, ex.Message);
+        }
+
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+
+
     /// <summary>
     ///     璇诲彇
     /// </summary>
@@ -217,6 +281,7 @@
         string bz = model.Remark; //澶囨敞
         string gysId = model.SuppId; //渚涘簲鍟�
         string orgId = model.OrgId; //鏀舵枡缁勭粐
+        int isSrm = model.IsSrm;
         var _sb = new StringBuilder();
         var _split = "|";
         foreach (var m in model.list)
@@ -260,6 +325,7 @@
                         new("@inBz", bz),
                         new("@inGysId", gysId),
                         new("@OrgId", orgId),
+                        new("@isSrm", isSrm),
                         new("@inEdtUserGuid", _userGuid),
                         new("@inLineList", _sb.ToString())
                     };
@@ -309,7 +375,7 @@
         foreach (string _val in guidList) sbMx.Append(_val);
         using (var conn = new SqlConnection(DbHelperSQL.strConn))
         {
-            using (var cmd = new SqlCommand("[prc_cgdhd_tui]", conn))
+            using (var cmd = new SqlCommand("[prc_cgyt_dj_add]", conn))
             {
                 try
                 {
@@ -335,7 +401,7 @@
                 catch (Exception ex)
                 {
                     LogHelper.Debug(ToString(),
-                        "prc_cgdhd_tui error锛�" + ex.Message);
+                        "prc_cgyt_dj_add error锛�" + ex.Message);
                     _outMsg = ex.Message;
                     _outSum = -1;
                 }
@@ -495,7 +561,7 @@
                         new("@inQueryWhere", keyWhere),
                         new("@inBusType", inBusType),
                         new("@inSupId", inSupId),
-                        new("@inP1", inReceiveOrgId),
+                        new("@inP1", inReceiveOrgId),//缁勭粐
                         new("@inP2", "")
                     };
                     foreach (var parameter in parameters)
@@ -603,8 +669,147 @@
             "璇诲彇鎴愬姛锛�");
     }
 
+
     #endregion
 
 
-   
+    #region srm
+
+    /// <summary>
+    ///     璇诲彇srm
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> SelectSrm([FromBody] dynamic model)
+    {
+        int currentPage = model.currentPage;
+        int everyPageSize = model.everyPageSize;
+        string sortName = model.sortName;
+        string keyWhere = model.keyWhere;
+        string inBusType = model.inBusType;
+        string inSupId = model.inSupId;
+        string inReceiveOrgId = model.inReceiveOrgId;
+        var dset = new DataSet();
+        try
+        {
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand("[prc_sel_dhd_by_xky]", conn))
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@inCurrentPage", currentPage),
+                        new("@inEveryPageSize", everyPageSize),
+                        new("@inSortName", sortName),
+                        new("@inSortOrder", ""),
+                        new("@inQueryWhere", keyWhere),
+                        new("@inBusType", inBusType),//1鏄噰璐紝2鏄澶�
+                        new("@inSupId", inSupId),//渚涘簲鍟�
+                        new("@inP1", inReceiveOrgId),//缁勭粐
+                        new("@inP2", "")
+                    };
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    using (var dt =
+                           new SqlDataAdapter(cmd))
+                    {
+                        dt.Fill(dset, "0");
+                    }
+                }
+                conn.Close();
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "SelectSrm error锛�" + ex.Message);
+            return ReturnDto<PageList<dynamic>>.QuickReturn(
+                default(PageList<dynamic>), ReturnCode.Exception, "璇诲彇澶辫触");
+        }
+
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        if (dset != null && dset.Tables.Count > 0 &&
+            dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+        {
+            var intTotal =
+                int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+            var pages = intTotal % everyPageSize != 0
+                ? intTotal / everyPageSize + 1
+                : intTotal / everyPageSize;
+            _pglist.total = intTotal;
+            _pglist.everyPageSize = everyPageSize;
+            _pglist.pages = pages;
+            var _dy = dset.Tables[0].TableToDynamicList();
+            _pglist.list = _dy;
+        }
+
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+
+
+    /// <summary>
+    /// 鏍规嵁鍗曞彿璇诲彇srm鏄庣粏
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<List<dynamic>> SelectSrmTo([FromBody] dynamic model)
+    {
+        string pi_shdh = model.inShdh;
+        string inP1 = model.inP1;
+        string inP2 = model.inP2;
+        var lst = new List<dynamic>();
+        var dset = new DataSet();
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("[prc_sel_dhdmx_by_xky]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@pi_shdh",pi_shdh),
+                        new("@inP1",""),
+                        new("@inP2",""),
+                    };
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    using (var dt =
+                           new SqlDataAdapter(cmd))
+                    {
+                        dt.Fill(dset, "0");
+                    }
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.Debug(ToString(),
+                        "prc_sel_dhdmx_by_xky error锛�" + ex.Message);
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+
+        if (dset != null && dset.Tables.Count > 0 &&
+            dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+            lst = dset.Tables[0].TableToDynamicList();
+
+        return ReturnDto<List<dynamic>>.QuickReturn(lst, ReturnCode.Success,
+            "璇诲彇鎴愬姛锛�");
+    }
+
+    #endregion
 }
\ No newline at end of file
diff --git a/WebApi/Gs.Warehouse/Services/MesInvItemInsManager.cs b/WebApi/Gs.Warehouse/Services/MesInvItemInsManager.cs
index 9940de3..2151fe9 100644
--- a/WebApi/Gs.Warehouse/Services/MesInvItemInsManager.cs
+++ b/WebApi/Gs.Warehouse/Services/MesInvItemInsManager.cs
@@ -246,5 +246,66 @@
             ReturnCode.Success, "璇诲彇鎴愬姛");
     }
 
+    /// <summary>
+    /// 閲囪喘鍏ュ簱鎶ヨ〃
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> GetListPageReport([FromBody] dynamic model)
+    {
+        int currentPage = model.currentPage;
+        int everyPageSize = model.everyPageSize;
+        string sortName = model.sortName;
+        string keyWhere = model.keyWhere;
+        SqlParameter[] parameters =
+        {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+        var dset = new DataSet();
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        try
+        {
+            dset = DbHelperSQL.RunProcedure("prc_cgrk_report", parameters, "0");
+            if (dset != null && dset.Tables.Count > 0 &&
+                dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+            {
+                var intTotal =
+                    int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                var pages = intTotal % everyPageSize != 0
+                    ? intTotal / everyPageSize + 1
+                    : intTotal / everyPageSize;
+                _pglist.total = intTotal;
+                _pglist.everyPageSize = everyPageSize;
+                _pglist.pages = pages;
+                var _dy = dset.Tables[0].TableToDynamicList();
+                _pglist.list = _dy;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+          ReturnCode.Exception, ex.Message);
+        }
+
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
 
 }
\ No newline at end of file
diff --git a/WebApi/Gs.Warehouse/Services/MesRohInManager.cs b/WebApi/Gs.Warehouse/Services/MesRohInManager.cs
index 629dd77..ed455e7 100644
--- a/WebApi/Gs.Warehouse/Services/MesRohInManager.cs
+++ b/WebApi/Gs.Warehouse/Services/MesRohInManager.cs
@@ -14,17 +14,25 @@
 ///     閲囪喘涓昏〃锛屾暟鎹粠erp鏉�
 /// </summary>
 [ApiGroup(ApiGroupNames.PerMission)]
-public class MesRohInManager :IRomteService
+public class MesRohInManager : IRomteService
 {
+
+    /// <summary>
+    /// HTTP涓婁笅鏂�
+    /// </summary>
     private readonly IHttpContextAccessor _http;
+
+    /// <summary>
+    /// 鐢ㄦ埛code,鐢ㄦ埛guid,缁勭粐id鍒楄〃
+    /// </summary>
 
     private readonly string _userCode, _userGuid, _orgFids;
 
     public MesRohInManager(IHttpContextAccessor httpContextAccessor)
     {
+        //鍙橀噺闄勫��
         _http = httpContextAccessor;
-        (_userCode, _userGuid, _orgFids) =
-            UtilityHelper.GetUserGuidAndOrgGuid(_http);
+        (_userCode, _userGuid, _orgFids) =UtilityHelper.GetUserGuidAndOrgGuid(_http);
     }
 
     /// <summary>
@@ -35,10 +43,10 @@
     [RequestMethod(RequestMethods.POST)]
     public ReturnDto<PageList<dynamic>> GetListPage([FromBody] dynamic model)
     {
-        int currentPage = model.currentPage;
-        int everyPageSize = model.everyPageSize;
-        string sortName = model.sortName;
-        string keyWhere = model.keyWhere;
+        int currentPage = model.currentPage;//褰撳墠椤�
+        int everyPageSize = model.everyPageSize;//姣忛〉澶у皬
+        string sortName = model.sortName;//鎺掑簭
+        string keyWhere = model.keyWhere;//鏌ヨ鏉′欢
         SqlParameter[] parameters =
         {
             new("@inCurrentPage", currentPage),
@@ -66,8 +74,9 @@
             if (dset != null && dset.Tables.Count > 0 &&
                 dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
             {
-                var intTotal =
-                    int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                //鎬昏褰曟暟
+                var intTotal =int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                //璁$畻鍏辨湁鍑犻〉
                 var pages = intTotal % everyPageSize != 0
                     ? intTotal / everyPageSize + 1
                     : intTotal / everyPageSize;
@@ -88,7 +97,7 @@
 
 
     /// <summary>
-    ///     璇诲彇
+    ///     璇诲彇鏄庣粏
     /// </summary>
     /// <param name="guid"></param>
     /// <returns></returns>
@@ -114,11 +123,13 @@
             if (dset != null && dset.Tables.Count > 0 &&
                 dset.Tables[0].Rows.Count > 0)
             {
+                //涓讳綋淇℃伅
                 var dr = dset.Tables[0].Rows[0];
                 m = dr.RowToDynamic();
+                //琛�1
                 var _tb = dset.Tables[1].TableToDynamicList();
                 m.list = _tb;
-
+                //琛�2
                 var _tb2 = dset.Tables[2].TableToDynamicList();
                 m.list2 = _tb2;
             }
@@ -133,4 +144,6 @@
                 "璇诲彇鎴愬姛锛�");
         return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
     }
+
+
 }
\ No newline at end of file
diff --git a/WebApi/Gs.Warehouse/Services/VArrivalBarcodeManager.cs b/WebApi/Gs.Warehouse/Services/VArrivalBarcodeManager.cs
index 541d344..aa7daa7 100644
--- a/WebApi/Gs.Warehouse/Services/VArrivalBarcodeManager.cs
+++ b/WebApi/Gs.Warehouse/Services/VArrivalBarcodeManager.cs
@@ -125,7 +125,6 @@
                     "璇诲彇鎴愬姛锛�");
     }
 
-
     /// <summary>
     /// 鍒犻櫎鏉$爜
     /// </summary>
@@ -185,8 +184,6 @@
         return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, _outMsg);
     }
 
-
-
     /// <summary>
     /// 閫夋嫨鏉$爜
     /// </summary>
@@ -201,6 +198,7 @@
         string keyWhere = model.keyWhere;
         string aboutGuid = model.aboutGuid;
         string aboutType = model.aboutType;
+        string qcGuid = model.qcGuid;
         var dset = new DataSet();
         try
         {
@@ -218,7 +216,8 @@
                         new("@inSortOrder", ""),
                         new("@inQueryWhere", keyWhere),
                         new("@inP1", aboutGuid),
-                        new("@inP2", aboutType)
+                        new("@inP2", aboutType),
+                        new("@inP3", qcGuid)
                     };
                     foreach (var parameter in parameters)
                         cmd.Parameters.Add(parameter);
@@ -260,4 +259,67 @@
             ReturnCode.Success, "璇诲彇鎴愬姛");
     }
 
+
+    /// <summary>
+    /// 鎵撳嵃鎶ヨ〃
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<PageList<dynamic>> GetListPageReport([FromBody] dynamic model)
+    {
+        int currentPage = model.currentPage;
+        int everyPageSize = model.everyPageSize;
+        string sortName = model.sortName;
+        string keyWhere = model.keyWhere;
+        SqlParameter[] parameters =
+        {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+        var dset = new DataSet();
+        var _pglist = new PageList<dynamic>
+        {
+            total = 0,
+            everyPageSize = 0,
+            pages = 0,
+            list = new List<dynamic>()
+        };
+        try
+        {
+            dset = DbHelperSQL.RunProcedure("prc_dhtm_report", parameters, "0");
+            if (dset != null && dset.Tables.Count > 0 &&
+                dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+            {
+                var intTotal =
+                    int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                var pages = intTotal % everyPageSize != 0
+                    ? intTotal / everyPageSize + 1
+                    : intTotal / everyPageSize;
+                _pglist.total = intTotal;
+                _pglist.everyPageSize = everyPageSize;
+                _pglist.pages = pages;
+                var _dy = dset.Tables[0].TableToDynamicList();
+                _pglist.list = _dy;
+            }
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+          ReturnCode.Exception, ex.Message);
+        }
+
+        return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+            ReturnCode.Success, "璇诲彇鎴愬姛");
+    }
+
 }
\ No newline at end of file
diff --git a/WebApi/Gs.Wom/Service/FanGongManager.cs b/WebApi/Gs.Wom/Service/FanGongManager.cs
new file mode 100644
index 0000000..702a04d
--- /dev/null
+++ b/WebApi/Gs.Wom/Service/FanGongManager.cs
@@ -0,0 +1,188 @@
+锘縰sing Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System.Data;
+using System.Dynamic;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using System.Data.SqlClient;
+using Gs.Toolbox.ApiCore.Group;
+
+namespace Gs.Wom.Service
+{
+    [ApiGroup(ApiGroupNames.QC)]
+    public class FanGongManager : IRomteService
+    {
+        private readonly IHttpContextAccessor _http;
+
+        private readonly string _userCode, _userGuid, _orgFids;
+
+        public FanGongManager(IHttpContextAccessor httpContextAccessor)
+        {
+            _http = httpContextAccessor;
+            (_userCode, _userGuid, _orgFids) =
+                UtilityHelper.GetUserGuidAndOrgGuid(_http);
+        }
+
+        /// <summary>
+        ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetListPage([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            SqlParameter[] parameters =
+            {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+            var dset = new DataSet();
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("prc_fgd_lst", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+                {
+                    var intTotal =
+                        int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dset.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+
+        /// <summary>
+        ///     璇诲彇
+        /// </summary>
+        /// <param name="guid"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
+        {
+            string guid = model.guid.ToString();
+            dynamic m = new ExpandoObject();
+            m.list = new List<dynamic>();
+            m.list2 = new List<dynamic>();
+            m.list3 = new List<dynamic>();
+            SqlParameter[] parameters =
+            {
+            new("@inMainGuid", guid),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")};
+            var dset = new DataSet();
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("[prc_fgd_mx]", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0)
+                {
+                    var dr = dset.Tables[0].Rows[0];
+                    m = dr.RowToDynamic();
+                    var _tb = dset.Tables[1].TableToDynamicList();
+                    m.list = _tb;
+                    var _tb2 = dset.Tables[2].TableToDynamicList();
+                    m.list2 = _tb2;
+                    var _tb3 = dset.Tables[3].TableToDynamicList();
+                    m.list3 = _tb3;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+            if (m != null)
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+        }
+
+
+        /// <summary>
+        /// 鐢熸垚鏂扮殑杩芥函鐮�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<int?> CreateTrace([FromBody] dynamic model)
+        {
+            int? rtnInt = (int)ReturnCode.Default;
+            Guid? guid = model.guid;
+            var _outMsg = "";
+            var _outSum = -1;
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand("[prc_fgd_trace_code]", conn))
+                {
+                    try
+                    {
+                        conn.Open();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters =
+                        {
+                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outSum", SqlDbType.Int),
+                        new("@inOrderGuid", UtilityHelper.CheckGuid(guid)? guid : DBNull.Value),
+                        new("@inEdtUserGuid", _userGuid),
+                    };
+                        parameters[0].Direction = ParameterDirection.Output;
+                        parameters[1].Direction = ParameterDirection.Output;
+                        foreach (var parameter in parameters)
+                            cmd.Parameters.Add(parameter);
+                        cmd.ExecuteNonQuery();
+                        _outMsg = parameters[0].Value.ToString();
+                        _outSum = int.Parse(parameters[1].Value.ToString());
+                    }
+                    catch (Exception ex)
+                    {
+                        LogHelper.Debug(ToString(),
+                            "prc_fgd_trace_code error锛�" + ex.Message);
+                        _outMsg = ex.Message;
+                        _outSum = -1;
+                    }
+                    finally
+                    {
+                        conn.Close();
+                    }
+                }
+            }
+            if (_outSum <= 0)
+                return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception,_outMsg);
+            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, _outMsg);
+        }
+
+    }
+}
\ No newline at end of file
diff --git a/WebApi/Gs.Wom/Service/WomcaaManager.cs b/WebApi/Gs.Wom/Service/WomcaaManager.cs
index 3998bf0..538159a 100644
--- a/WebApi/Gs.Wom/Service/WomcaaManager.cs
+++ b/WebApi/Gs.Wom/Service/WomcaaManager.cs
@@ -24,8 +24,6 @@
         (_userCode, _userGuid, _orgFids) =
             GetUserGuidAndOrgGuid(_http);
     }
-
-
     /// <summary>
     ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
     /// </summary>
@@ -122,7 +120,7 @@
                 m = dr.RowToDynamic();
                 var _tb = dset.Tables[1].TableToDynamicList();
                 m.list = _tb;
-                
+
             }
         }
         catch (Exception ex)
@@ -136,7 +134,6 @@
         return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
             "璇诲彇澶辫触锛�");
     }
-
 
     /// <summary>
     ///
@@ -194,4 +191,61 @@
         return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
             "鎿嶄綔鎴愬姛锛�");
     }
+    /// <summary>
+    ///
+    /// </summary>
+    /// <param name="mode"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> EditModelSubmitLock([FromBody] dynamic mode)
+    {
+        string _guid = mode.guid;
+        string _inFieldValue = mode.inFieldValue;
+        dynamic m = new ExpandoObject();
+        m.outSum = -1;
+        m.outMsg = "";
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("prc_wom_caa_clock_submit", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@outMsg", SqlDbType.NVarChar, 2500),
+                        new("@outSum", SqlDbType.Int),
+                        new("@inEdtUserGuid", _userGuid),
+                        new("@inOrderGuid", _guid),
+                        new("@inFieldValue", _inFieldValue),
+                        new("@in1", ""),
+                        new("@in2", "")
+                    };
+                    parameters[0].Direction = ParameterDirection.Output;
+                    parameters[1].Direction = ParameterDirection.Output;
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    cmd.ExecuteNonQuery();
+                    m.outMsg = parameters[0].Value.ToString();
+                    m.outSum = int.Parse(parameters[1].Value.ToString());
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.Debug(ToString(),
+                        "prc_wom_caa_clock_submit error锛�" + ex.Message);
+                    return ReturnDto<dynamic>.QuickReturn(m,
+                        ReturnCode.Default,
+                        ex.Message);
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+            "鎿嶄綔鎴愬姛锛�");
+    }
+
 }
\ No newline at end of file
diff --git a/WebApi/Gs.Wom/Service/WomdaaManager.cs b/WebApi/Gs.Wom/Service/WomdaaManager.cs
index e463a4b..00fb426 100644
--- a/WebApi/Gs.Wom/Service/WomdaaManager.cs
+++ b/WebApi/Gs.Wom/Service/WomdaaManager.cs
@@ -1,19 +1,21 @@
-锘縰sing System.Data;
-using System.Data.SqlClient;
-using System.Dynamic;
-using Gs.Toolbox;
+锘縰sing Gs.Toolbox;
 using Gs.Toolbox.ApiCore.Abstract.Mvc;
 using Gs.Toolbox.ApiCore.Common.Mvc;
 using Gs.Toolbox.ApiCore.Group;
 using Microsoft.AspNetCore.Http;
 using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json.Linq;
+using System.Data;
+using System.Data.SqlClient;
+using System.Dynamic;
+using System.Text;
 using static Gs.Toolbox.UtilityHelper;
 
 
 namespace Gs.Wom.Service;
 
 [ApiGroup(ApiGroupNames.WOM)]
-public class WomdaaManager :IRomteService
+public class WomdaaManager : IRomteService
 {
     private readonly IHttpContextAccessor _http;
 
@@ -125,10 +127,16 @@
                 m.list2 = _tb2;
                 var _tb3 = dset.Tables[3].TableToDynamicList();
                 m.list3 = _tb3;
-                var _tb4= dset.Tables[4].TableToDynamicList();
+                var _tb4 = dset.Tables[4].TableToDynamicList();
                 m.list4 = _tb4;
                 var _tb5 = dset.Tables[5].TableToDynamicList();
                 m.list5 = _tb5;
+                var _tb6 = dset.Tables[6].TableToDynamicList();
+                m.list6 = _tb6;
+                var _tb7 = dset.Tables[7].TableToDynamicList();
+                m.list7 = _tb7;
+                var _tb8 = dset.Tables[8].TableToDynamicList();
+                m.list8 = _tb8;
             }
         }
         catch (Exception ex)
@@ -257,63 +265,69 @@
 
 
 
-    ///// <summary>
-    /////     澧炲姞鎴栫紪杈戝疄浣�
-    ///// </summary>
-    ///// <param name="model"></param>
-    ///// <returns></returns>
-    //[RequestMethod(RequestMethods.POST)]
-    //public ReturnDto<string?> EditModel([FromBody] dynamic model)
-    //{
-    //    Guid? guid = model.guid; //涓婚敭
-    //    string sjxt = model.sjxt; //宸ュ崟鍙� 
-    //    string bz = model.bz;//浠撳簱
-    //    var _outMsg = "";
-    //    var _outSum = -1;
-    //    using (var conn = new SqlConnection(DbHelperSQL.strConn))
-    //    {
-    //        using (var cmd = new SqlCommand("[prc_wom_daa_edt]", conn))
-    //        {
-    //            try
-    //            {
-    //                conn.Open();
-    //                cmd.CommandType = CommandType.StoredProcedure;
-    //                SqlParameter[] parameters =
-    //                {
-    //                    new("@outMsg", SqlDbType.NVarChar, 300),
-    //                    new("@outSum", SqlDbType.Int),
-    //                    new("@inOrderGuid",UtilityHelper.CheckGuid(guid)? guid : DBNull.Value),
-    //                    new("@inSjxt", sjxt),
-    //                    new("@inBz", bz),
-    //                    new("@inEdtUserGuid", _userGuid),
-    //                };
-    //                parameters[0].Direction = ParameterDirection.Output;
-    //                parameters[1].Direction = ParameterDirection.Output;
-    //                foreach (var parameter in parameters)
-    //                    cmd.Parameters.Add(parameter);
-    //                cmd.ExecuteNonQuery();
-    //                _outMsg = parameters[0].Value.ToString();
-    //                _outSum = int.Parse(parameters[1].Value.ToString());
-    //            }
-    //            catch (Exception ex)
-    //            {
-    //                LogHelper.Debug(ToString(),
-    //                    "prc_wom_daa_edt error锛�" + ex.Message);
-    //                _outMsg = ex.Message;
-    //                _outSum = -1;
-    //            }
-    //            finally
-    //            {
-    //                conn.Close();
-    //            }
-    //        }
-    //    }
-    //    if (_outSum <= 0)
-    //        return ReturnDto<string>.QuickReturn(guid.ToString(),
-    //            ReturnCode.Exception, _outMsg);
-    //    return ReturnDto<string>.QuickReturn(guid.ToString(),
-    //        ReturnCode.Success, _outMsg);
-    //}
+    /// <summary>
+    ///     澧炲姞鎴栫紪杈戝疄浣�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<string?> EditModel([FromBody] dynamic model)
+    {
+        Guid? guid = model.guid; //涓婚敭
+        string sjxt = model.sjxt; //宸ュ崟鍙� 
+        string bz = model.bz;
+        string sclx = model.sclx;
+        string dtKg = model.dtKg;
+        string dtWg = model.dtWg;
+        var _outMsg = "";
+        var _outSum = -1;
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("[prc_wom_daa_edt]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outSum", SqlDbType.Int),
+                        new("@inOrderGuid",UtilityHelper.CheckGuid(guid)? guid : DBNull.Value),
+                        new("@inSjxt", sjxt),
+                        new("@inBz", bz),
+                        new("@inSclx", sclx),
+                        new("@dtKg", dtKg),
+                        new("@dtWg", dtWg),
+                        new("@inEdtUserGuid", _userGuid),
+                    };
+                    parameters[0].Direction = ParameterDirection.Output;
+                    parameters[1].Direction = ParameterDirection.Output;
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    cmd.ExecuteNonQuery();
+                    _outMsg = parameters[0].Value.ToString();
+                    _outSum = int.Parse(parameters[1].Value.ToString());
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.Debug(ToString(),
+                        "prc_wom_daa_edt error锛�" + ex.Message);
+                    _outMsg = ex.Message;
+                    _outSum = -1;
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+        if (_outSum <= 0)
+            return ReturnDto<string>.QuickReturn(guid.ToString(),
+                ReturnCode.Exception, _outMsg);
+        return ReturnDto<string>.QuickReturn(guid.ToString(),
+            ReturnCode.Success, _outMsg);
+    }
 
 
     /// <summary>
@@ -464,65 +478,6 @@
     }
 
     /// <summary>
-    ///     
-    /// </summary>
-    /// <param name="model"></param>
-    /// <returns></returns>
-    [RequestMethod(RequestMethods.POST)]
-    public ReturnDto<int?> DeleteBarcode([FromBody] dynamic model)
-    {
-        int? rtnInt = (int)ReturnCode.Default;
-        string mxGuid = model.mxGuid;
-        string inType = model.inType;
-        var _outMsg = "";
-        var _outSum = -1;
-        using (var conn = new SqlConnection(DbHelperSQL.strConn))
-        {
-            using (var cmd = new SqlCommand("[prc_wom_daatm_del]", conn))
-            {
-                try
-                {
-                    conn.Open();
-                    cmd.CommandType = CommandType.StoredProcedure;
-                    SqlParameter[] parameters =
-                    {
-                        new("@outMsg", SqlDbType.NVarChar, 300),
-                        new("@outSum", SqlDbType.Int),
-                        new("@inEdtUserGuid", _userGuid),
-                        new("@inMxGuid", mxGuid),
-                        new("@inType", inType)
-                    };
-                    parameters[0].Direction = ParameterDirection.Output;
-                    parameters[1].Direction = ParameterDirection.Output;
-                    foreach (var parameter in parameters)
-                        cmd.Parameters.Add(parameter);
-                    cmd.ExecuteNonQuery();
-                    _outMsg = parameters[0].Value.ToString();
-                    _outSum = int.Parse(parameters[1].Value.ToString());
-                }
-                catch (Exception ex)
-                {
-                    LogHelper.Debug(ToString(),
-                        "prc_wom_daatm_del error锛�" + ex.Message);
-                    _outMsg = ex.Message;
-                    _outSum = -1;
-                }
-                finally
-                {
-                    conn.Close();
-                }
-            }
-        }
-        if (_outSum <= 0)
-            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception,
-                _outMsg);
-        return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, _outMsg);
-    }
-
-
-
-
-    /// <summary>
     ///     鍒犻櫎涓昏〃鎴栨槑缁�
     /// </summary>
     /// <param name="model"></param>
@@ -578,8 +533,195 @@
         }
 
         if (_outSum <= 0)
-            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception,_outMsg);
+            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, _outMsg);
         return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, _outMsg);
     }
 
+    /// <summary>
+    /// 宸ヨ壓鍙樻洿
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<ExpandoObject> EditGy([FromBody] dynamic model)
+    {
+        Guid? guid = model.guid; //浜у搧涓婚敭
+        var _sb = new StringBuilder();
+        var _split = "|";
+        foreach (var m in model.list)
+        {
+            var _line = m.processNo + _split
+                                    + m.frontProcessNo;
+            if (_sb.Length > 0)
+                _sb.Append("~");
+            _sb.Append(_line);
+        }
+        dynamic mObj = new ExpandoObject();
+        mObj.outMsg = "";
+        mObj.outSum = -1;
+        mObj.outGuid = "";
+        mObj.outNo = "";
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("[prc_wom_daa_technique]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outSum", SqlDbType.Int),
+                        new("@inOrderGuid", CheckGuid(guid) ? guid : DBNull.Value),
+                        new("@inEdtUserGuid", _userGuid),
+                        new("@inLineList", _sb.ToString())
+                    };
+                    parameters[0].Direction = ParameterDirection.Output;
+                    parameters[1].Direction = ParameterDirection.Output;
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    cmd.ExecuteNonQuery();
+                    mObj.outMsg = parameters[0].Value.ToString();
+                    mObj.outSum = int.Parse(parameters[1].Value.ToString());
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.Debug(ToString(),
+                        "prc_wom_daa_technique error锛�" + ex.Message);
+                    mObj.outMsg = ex.Message;
+                    mObj.outSum = -1;
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+        if (mObj.outSum <= 0)
+            return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
+        return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg);
+    }
+
+
+    /// <summary>
+    ///     
+    /// </summary>
+    /// <param name="query"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<List<dynamic>> GetGyList(
+       [FromBody] dynamic model)
+    {
+        string daaGuid = model.guid;
+        var lst = new List<dynamic>();
+        var dset = new DataSet();
+        System.Text.StringBuilder sbSql = new System.Text.StringBuilder();
+        sbSql.Append("   select * from [dbo].[WOMDAA_TECHNIQUE] where daaGuid='" + daaGuid + "' order by processNo asc ");
+        try
+        {
+            dset = Gs.Toolbox.DbHelperSQL.Query(sbSql.ToString());
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), ex.Message);
+        }
+        if (dset != null && dset.Tables.Count > 0 &&
+            dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+            lst = dset.Tables[0].TableToDynamicList();
+        return ReturnDto<List<dynamic>>.QuickReturn(lst, ReturnCode.Success,
+            "璇诲彇鎴愬姛锛�");
+    }
+
+
+    /// <summary>
+    /// 鍙樻洿鍐呭寘瑁呮暟閲�
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<int?> EditTb([FromBody] dynamic model)
+    {
+        int? rtnInt = (int)ReturnCode.Default;
+        Guid? guid = model.guid;
+        string sl = model.sl;
+        var _outMsg = "";
+        var _outSum = -1;
+        using (var conn = new SqlConnection(DbHelperSQL.strConn))
+        {
+            using (var cmd = new SqlCommand("[prc_wom_daa_nbz]", conn))
+            {
+                try
+                {
+                    conn.Open();
+                    cmd.CommandType = CommandType.StoredProcedure;
+                    SqlParameter[] parameters =
+                    {
+                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outSum", SqlDbType.Int),
+                        new("@inOrderGuid", UtilityHelper.CheckGuid(guid) ? guid: DBNull.Value),
+                        new("@inEdtUserGuid", _userGuid),
+                        new("@inSl", sl)
+                    };
+                    parameters[0].Direction = ParameterDirection.Output;
+                    parameters[1].Direction = ParameterDirection.Output;
+                    foreach (var parameter in parameters)
+                        cmd.Parameters.Add(parameter);
+                    cmd.ExecuteNonQuery();
+                    _outMsg = parameters[0].Value.ToString();
+                    _outSum = int.Parse(parameters[1].Value.ToString());
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.Debug(ToString(), "prc_wom_daa_nbz error锛�" + ex.Message);
+                    _outMsg = ex.Message;
+                    _outSum = -1;
+                }
+                finally
+                {
+                    conn.Close();
+                }
+            }
+        }
+
+        if (_outSum <= 0)
+            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, _outMsg);
+        return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, _outMsg);
+    }
+
+
+    /// <summary>
+    /// 鏍规嵁daaNo,璇诲彇鏄庣粏锛岀敤浜庡嚭鍏ュ簱閫夋嫨
+    /// </summary>
+    /// <param name="model"></param>
+    /// <returns></returns>
+    [RequestMethod(RequestMethods.POST)]
+    public ReturnDto<List<dynamic>> SelectDaaMx([FromBody] dynamic model)
+    {
+        string strDaaNo = model.strDaaNo;
+        var lst = new List<dynamic>();
+        var dset = new DataSet();
+        System.Text.StringBuilder sbSql = new StringBuilder();
+        sbSql.Append(" select dab003 as itemId,dab004 as itemName,dab005 as itemModel,dw.fname as dwName,i.item_no as itemNo,'' as sl,'' as bz,'' as bllx");
+        sbSql.Append(" ,isnull( cet0.[搴撳瓨瀵规瘮],'(鏈浠撳簱)0/0') as kcQty");
+        sbSql.Append(" ,cet0.[浠撳簱ID] as depotId");
+        sbSql.Append(" ,cet0.[浠撳簱鍚嶇О]  as depotName");
+        sbSql.Append("  from WOMDAB dab left join  MES_ITEMS i on dab.dab003=i.item_id ");
+        sbSql.Append("  left join MES_UNIT dw on dw.id=dab009 ");
+        sbSql.Append(" left join [dbo].鍗虫椂搴撳瓨宸紓琛� cet0 on (cet0.鐗╂枡ID=i.id   and i.depot_code=cet0.浠撳簱ID) ");
+        sbSql.Append(" where dab.dab001='" + strDaaNo + "' order by dab.erpid asc");
+        try
+        {
+            dset = Gs.Toolbox.DbHelperSQL.Query(sbSql.ToString());
+        }
+        catch (Exception ex)
+        {
+            LogHelper.Debug(ToString(), "SelectDaaMx error锛�" + ex.Message);
+        }
+        if (dset != null && dset.Tables.Count > 0 &&
+            dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+            lst = dset.Tables[0].TableToDynamicList();
+        return ReturnDto<List<dynamic>>.QuickReturn(lst, ReturnCode.Success,
+            "璇诲彇鎴愬姛锛�");
+    }
 }
\ No newline at end of file
diff --git a/WebApi/Gs.Wom/Service/WompbaManager.cs b/WebApi/Gs.Wom/Service/WompbaManager.cs
index 3fe0a0e..321194e 100644
--- a/WebApi/Gs.Wom/Service/WompbaManager.cs
+++ b/WebApi/Gs.Wom/Service/WompbaManager.cs
@@ -143,8 +143,6 @@
         Guid? guid = model.guid; //涓婚敭
         string bz = model.bz; //澶囨敞
         string cjId = model.cjId; //杞﹂棿
-        string cxId = ""; //浜х嚎,鐢ㄤ笉鍒颁簡
-        string jhrs = ""; //璁″垝浜烘暟,鐢ㄤ笉鍒颁簡
         var _sb = new StringBuilder();
         var _split = "|";
         foreach (var m in model.list)
@@ -153,15 +151,11 @@
             var _line = m.AboutGuid + _split
                                     + m.LineId + _split
                                     + m.Yjkgsj + _split
-                                    + m.Jhrs + _split
-                                    + m.Hxsj + _split
+                                    + m.Hxsj + _split//鐢熶骇绫诲瀷
                                     + m.Bz + _split
-                                    + m.Blsj + _split
                                     + m.Pcsl + _split
                                     + m.Yjwgsj + _split
-                                    + (CheckGuid(_guid)
-                                        ? _guid
-                                        : Guid.Empty.ToString());
+                                    + (CheckGuid(_guid)? _guid: Guid.Empty.ToString());
             if (_sb.Length > 0)
                 _sb.Append("~");
             _sb.Append(_line);
@@ -188,8 +182,6 @@
                         new("@inOrderGuid", CheckGuid(guid) ? guid : DBNull.Value),
                         new("@inBz", bz),
                         new("@inCjId", cjId),
-                        new("@inCxId", cxId),
-                        new("@inJhrs", jhrs),
                         new("@inEdtUserGuid", _userGuid),
                         new("@inLineList", _sb.ToString())
                     };
diff --git a/WebApi/Gs.Wom/WorkService/KanBanController.cs b/WebApi/Gs.Wom/WorkService/KanBanController.cs
new file mode 100644
index 0000000..3576bdc
--- /dev/null
+++ b/WebApi/Gs.Wom/WorkService/KanBanController.cs
@@ -0,0 +1,189 @@
+锘縰sing Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using System.Data;
+using System.Data.SqlClient;
+using System.Drawing;
+using System.Drawing.Imaging;
+using System.Dynamic;
+using static Gs.Toolbox.UtilityHelper;
+
+namespace Gs.Wom.WorkService
+{
+    [ApiGroup(ApiGroupNames.WOM)]
+    public class KanBanController : IRomteService
+    {
+        private readonly IHttpContextAccessor _http;
+
+        private readonly string _userCode, _userGuid, _orgFids;
+
+        public KanBanController(IHttpContextAccessor httpContextAccessor)
+        {
+            _http = httpContextAccessor;
+            (_userCode, _userGuid, _orgFids) =
+                GetUserGuidAndOrgGuid(_http);
+        }
+
+        /// <summary>
+        ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetLaTouListPage([FromBody] dynamic model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = model.sortName;
+            string keyWhere = model.keyWhere;
+            SqlParameter[] parameters =
+            {
+            new("@inCurrentPage", currentPage),
+            new("@inEveryPageSize", everyPageSize),
+            new("@inSortName", sortName),
+            new("@inSortOrder", ""),
+            new("@inQueryWhere", keyWhere),
+            new("@inFid", ""),
+            new("@inP1", ""),
+            new("@inP2", ""),
+            new("@inP3", ""),
+            new("@inP4", "")
+        };
+            var dset = new DataSet();
+            var _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("kanban_latou_lst", parameters, "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0) //鏈夋暟鎹�
+                {
+                    var intTotal =
+                        int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                    var pages = intTotal % everyPageSize != 0
+                        ? intTotal / everyPageSize + 1
+                        : intTotal / everyPageSize;
+                    _pglist.total = intTotal;
+                    _pglist.everyPageSize = everyPageSize;
+                    _pglist.pages = pages;
+                    var _dy = dset.Tables[0].TableToDynamicList();
+                    _pglist.list = _dy;
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+                return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+              ReturnCode.Exception, ex.Message);
+            }
+
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist,
+                ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+        /// <summary>
+        ///     璇诲彇
+        /// </summary>
+        /// <param name="guid"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> GetLaTouModel([FromBody] dynamic model)
+        {
+            string guid = model.guid.ToString();
+            dynamic m = new ExpandoObject();
+            m.tb0 = new ExpandoObject();
+            m.tb1 = new List<dynamic>();
+            m.tb2 = new List<dynamic>();
+            m.tb3 = new List<dynamic>();
+            m.tb4 = new List<dynamic>();
+            m.tb5 = new List<dynamic>();
+            m.tb6 = new List<dynamic>();
+            m.tb7 = new ExpandoObject();
+            m.tb8 = new ExpandoObject();
+            m.tb9 = new ExpandoObject();
+            m.tb10 = new List<dynamic>();
+            m.tb11 = new List<dynamic>();
+            m.tb12 = new List<dynamic>();
+            m.tb13 = new List<string>();//浜ц兘鍥炬椂闂存
+            m.tb14 = new ExpandoObject();//涓嬩竴鎸囦护
+            SqlParameter[] parameters =
+            {
+            new("@inMainGuid", guid),
+            new("@inLineId", ""),
+        };
+            var dset = new DataSet();
+            try
+            {
+                dset = DbHelperSQL.RunProcedure("[kanban_latou]", parameters,
+                    "0");
+                if (dset != null && dset.Tables.Count > 0 &&
+                    dset.Tables[0].Rows.Count > 0)
+                {
+                    //--@0涓昏〃淇℃伅
+                    var _tb0 = dset.Tables[0].Rows[0];
+                    m.tb0 = _tb0.RowToDynamic();
+                    //  --@1鍦ㄥ埗鍝佹槑缁�
+                    var _tb1 = dset.Tables[1].TableToDynamicList();
+                    m.tb1 = _tb1;
+                    // --@2浜ц兘鍥炬煴
+                    var _tb2 = dset.Tables[2].TableToDynamicList();
+                    m.tb2 = _tb2;
+                    //  --@3鏍囧噯浜ц兘
+                    var _tb3 = dset.Tables[3].TableToDynamicList();
+                    m.tb3 = _tb3;
+                    //   --@4鏍囧噯涓嬬嚎
+                    var _tb4 = dset.Tables[4].TableToDynamicList();
+                    m.tb4 = _tb4;
+                    //    --@5鏍囧噯涓婄嚎
+                    var _tb5 = dset.Tables[5].TableToDynamicList();
+                    m.tb5 = _tb5;
+                    //--@6浜ц兘琛�
+                    var _tb6 = dset.Tables[6].TableToDynamicList();
+                    m.tb6 = _tb6;
+                    //--@7涓嶈壇椤圭洰鍥�
+                    var _tb7 = dset.Tables[7].Rows[0].RowToDynamic();
+                    m.tb7 = _tb7;
+                    // --@8鑹搧鐩浘
+                    var _tb8 = dset.Tables[8].Rows[0].RowToDynamic();
+                    m.tb8 = _tb8;
+                    // --@9寮傚父鎶ヨ
+                    var _tb9 = dset.Tables[9].Rows[0].RowToDynamic();
+                    m.tb9 = _tb9;
+                    // --@10璁′欢
+                    var _tb10 = dset.Tables[10].TableToDynamicList();
+                    m.tb10 = _tb10;
+                    // --@11璁℃椂
+                    var _tb11 = dset.Tables[11].TableToDynamicList();
+                    m.tb11 = _tb11;
+                    // --@12涓嶈壇椤圭洰琛�
+                    var _tb12 = dset.Tables[12].TableToDynamicList();
+                    m.tb12 = _tb12;
+                    //浜ц兘鍥炬椂闂寸偣
+                    foreach (DataRow row in dset.Tables[2].Rows)
+                    {
+                        m.tb13.Add(row["t"].ToString());
+                    }
+                    var _tb14 = dset.Tables[13].Rows[0];
+                    m.tb14 = _tb14.RowToDynamic();
+                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), ex.Message);
+            }
+
+            if (m != null)
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+                    "璇诲彇鎴愬姛锛�");
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+        }
+    }
+}
diff --git a/WebApi/Gs.Wom/WorkService/MesBackFlashController.cs b/WebApi/Gs.Wom/WorkService/MesBackFlashController.cs
new file mode 100644
index 0000000..287814d
--- /dev/null
+++ b/WebApi/Gs.Wom/WorkService/MesBackFlashController.cs
@@ -0,0 +1,214 @@
+锘縰sing System.Data;
+using System.Dynamic;
+using System.Text;
+using Gs.Toolbox;
+using Gs.Toolbox.ApiCore.Abstract.Mvc;
+using Gs.Toolbox.ApiCore.Common.Mvc;
+using Gs.Toolbox.ApiCore.Group;
+using Microsoft.AspNetCore.Authorization;
+using Microsoft.AspNetCore.Http;
+using Microsoft.AspNetCore.Mvc;
+using Newtonsoft.Json.Linq;
+using static Gs.Toolbox.UtilityHelper;
+
+namespace Gs.Wom.WorkService
+{
+
+    [ApiGroup(ApiGroupNames.WOM)]
+    public class MesBackFlashController : IRomteService
+    {
+        private readonly IHttpContextAccessor _http;
+        private readonly string _userCode, _userGuid, _orgFids;
+        public MesBackFlashController(IHttpContextAccessor httpContextAccessor)
+        {
+            _http = httpContextAccessor;
+            (_userCode, _userGuid, _orgFids) = GetUserGuidAndOrgGuid(_http);
+        }
+
+        #region
+        /// <summary>
+        /// 璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<PageList<dynamic>> GetListPage([FromBody] PageQuery model)
+        {
+            int currentPage = model.currentPage;
+            int everyPageSize = model.everyPageSize;
+            string sortName = string.IsNullOrEmpty(model.sortName) ? "org.FNumber" : model.sortName;
+            string keyWhere = model.keyWhere;
+            System.Text.StringBuilder _w = new StringBuilder();
+            _w.Append(" from [dbo].[MES_BACK_FLASH] a");
+            _w.Append(" left join MES_ITEMS i on a.ItemID=i.item_id  ");
+            _w.Append(" left join MES_DEPOTS d on a.depotId=d.depot_id ");
+            _w.Append(" left join SYS_DEPARTMENT m on a.departmentId=m.departmentid ");
+            _w.Append(" left join SYS_ORGANIZATION org on i.FSubsidiary=org.FID");
+            _w.Append(" where 1=1 " + keyWhere);
+            System.Text.StringBuilder sbSql = new StringBuilder();
+            sbSql.Append("select * from ");
+            sbSql.Append("( ");
+            sbSql.Append("select top 100000 ROW_NUMBER() over(order by " + sortName + " " + model.sortOrder + ") as rowIndex,a.*,'('+org.FNumber+')'+org.NAME as orgName  ");
+            sbSql.Append(",i.item_no as itemNo,i.item_name as itemName,i.item_model as itemModel,d.depot_name as depotName,m.departmentname as bmName");
+            sbSql.Append(_w);
+            sbSql.Append(") as T ");
+            sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" + everyPageSize + " and  T.rowindex<=" + currentPage + "*" + everyPageSize);
+            sbSql.Append(" order by rowindex asc ");
+            sbSql.Append(" select count(1) as intTotal ");
+            sbSql.Append(_w);
+            DataSet dset = new DataSet();
+            try
+            {
+                dset = Gs.Toolbox.DbHelperSQL.Query(sbSql.ToString());
+            }
+            catch (Exception ex)
+            {
+                Gs.Toolbox.LogHelper.Debug(this.ToString(), "GetListPage error锛�" + ex.Message);
+                return ReturnDto<PageList<dynamic>>.QuickReturn(default(PageList<dynamic>), ReturnCode.Exception, "璇诲彇澶辫触");
+            }
+            PageList<dynamic> _pglist = new PageList<dynamic>
+            {
+                total = 0,
+                everyPageSize = 0,
+                pages = 0,
+                list = new List<dynamic>()
+            };
+            if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)//鏈夋暟鎹�
+            {
+                int intTotal = int.Parse(dset.Tables[1].Rows[0]["intTotal"].ToString());
+                int pages = (intTotal % everyPageSize != 0) ? (intTotal / everyPageSize + 1) : (intTotal / everyPageSize);
+                _pglist.total = intTotal;
+                _pglist.everyPageSize = everyPageSize;
+                _pglist.pages = pages;
+                List<dynamic> _dy = dset.Tables[0].TableToDynamicList();
+                _pglist.list = _dy;
+            }
+            return ReturnDto<PageList<dynamic>>.QuickReturn(_pglist, ReturnCode.Success, "璇诲彇鎴愬姛");
+        }
+
+
+        /// <summary>
+        /// 鍒犻櫎瀹炰綋
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<int?> DeleteModel([FromBody] JArray guidList)
+        {
+            var intArray = guidList.ToObject<string[]>();
+            string guid = intArray[0];
+            int rtnInt = (int)ReturnCode.Default;
+            int cont = 0;
+            try
+            {
+                cont = isChkOrUnChk(guid, 1);
+                if (cont > 0)
+                    return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鍒犻櫎澶辫触锛岃淇℃伅宸茶瀹℃牳锛�");
+                StringBuilder strSql = new StringBuilder();
+                strSql.Append(" delete from MES_BACK_FLASH ");
+                strSql.Append(" where guid='" + guid + "'");
+                int rows = DbHelperSQL.ExecuteSql(strSql.ToString());
+                rtnInt = rows;
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(this.ToString(), "DeleteModel error锛�" + ex.Message);
+                rtnInt = (int)ReturnCode.Exception;
+                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鍒犻櫎澶辫触锛�" + ex.Message);
+            }
+            if (rtnInt > 0)
+                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Success, "鎿嶄綔鎴愬姛锛屽叡鍒犻櫎" + rtnInt.ToString() + "鏉℃暟鎹紒");
+            else
+                return ReturnDto<int>.QuickReturn(default(int?), ReturnCode.Exception, "鍒犻櫎澶辫触锛岃閲嶈瘯锛�");
+        }
+
+        /// <summary>
+        /// 澧炲姞瀹炰綋
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model)
+        {
+            string itemId = model.itemId;
+            string departmentId = model.departmentId;
+            string depotId = model.depotId;
+            int? rtnInt = (int)ReturnCode.Default;
+            dynamic mObj = new ExpandoObject();
+            mObj.outMsg = "";
+            mObj.outSum = -1;
+            mObj.outGuid = "";
+            mObj.outNo = "";
+            StringBuilder strSql = new StringBuilder();
+            string guid = Guid.NewGuid().ToString();
+            strSql.Append(" insert into MES_BACK_FLASH");
+            strSql.Append(" ([guid] ,[ItemId] ,[departmentId] ,[depotId],createBy,createDate,checkStatus)");
+            strSql.Append(" values(");
+            strSql.Append(" '" + guid + "','" + itemId + "','" + departmentId + "'," + depotId + ",'" + _userCode + "',getdate(),0)");
+            try
+            {
+                rtnInt = DbHelperSQL.ExecuteSql(strSql.ToString());
+                mObj.outMsg = "鎿嶄綔鎴愬姛锛�";
+                mObj.outSum = rtnInt;
+                mObj.outGuid = guid;
+                mObj.outNo = itemId;
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(this.ToString(), "EditModel error锛�" + ex.Message);
+                rtnInt = (int)ReturnCode.Exception;
+                mObj.outMsg = ex.Message;
+                mObj.outSum = -1;
+            }
+            if (mObj.outSum <= 0)
+                return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
+            return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg);
+        }
+
+        /// <summary>
+        /// 璇诲彇瀹炰綋
+        /// </summary>
+        /// <param name="guid"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        [AllowAnonymous]
+        public ReturnDto<System.Dynamic.ExpandoObject> GetModel([FromBody] dynamic model)
+        {
+            dynamic m = new System.Dynamic.ExpandoObject();
+            System.Text.StringBuilder sbSql = new StringBuilder();
+            sbSql.Append("select top 1 a.*,org.FID as orgId ,i.item_no as itemNo,i.item_name as itemName,i.item_model as itemModel from MES_BACK_FLASH a left join MES_ITEMS i on a.ItemID=i.item_id left join SYS_ORGANIZATION org on i.FSubsidiary=org.FID where 1=1 and a.guid='" + model.guid.ToString() + "' ");
+            try
+            {
+                DataSet dset = new DataSet();
+                dset = DbHelperSQL.Query(sbSql.ToString());
+                if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)
+                {
+                    System.Data.DataRow dr = dset.Tables[0].Rows[0];
+                    m = dr.RowToDynamic();
+                    return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+                }
+                else
+                    return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(this.ToString(), "GetModel error:" + ex.Message);
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "璇诲彇澶辫触锛�");
+            }
+        }
+
+        /// <summary>
+        /// 鍒ゆ柇鏄惁瀹℃牳
+        /// </summary>
+        /// <param name="guidList"></param>
+        /// <param name="status"></param>
+        /// <returns></returns>
+        private int isChkOrUnChk(string guidList, int status)
+        {
+            int cont = 0;
+            cont = int.Parse(DbHelperSQL.GetSingle("select count(1) from MES_BACK_FLASH where guid='" + guidList + "' and isnull(checkstatus,0)=" + status + "").ToString());
+            return cont;
+        }
+        #endregion
+    }
+}
diff --git a/WebApi/Gs.Wom/WorkService/WorkCollectController.cs b/WebApi/Gs.Wom/WorkService/WorkCollectController.cs
index f77dcdb..4d18473 100644
--- a/WebApi/Gs.Wom/WorkService/WorkCollectController.cs
+++ b/WebApi/Gs.Wom/WorkService/WorkCollectController.cs
@@ -1,7 +1,6 @@
 锘縰sing System.Data;
 using System.Data.SqlClient;
 using System.Dynamic;
-using System.Text;
 using Gs.Toolbox;
 using Gs.Toolbox.ApiCore.Abstract.Mvc;
 using Gs.Toolbox.ApiCore.Common.Mvc;
@@ -25,8 +24,6 @@
                 GetUserGuidAndOrgGuid(_http);
         }
         #region
-
-
         /// <summary>
         ///     璇诲彇锛岄噰闆�,閲囬泦鐨勬椂鍊欒繑鍥炲垪琛�
         /// </summary>
@@ -41,6 +38,7 @@
             string gongWei = model.gongWei;//宸ヤ綅
             string checkResult = model.checkResult; //缁撴灉
             string badDescription = model.badDescription;//涓嶈壇鎻忚堪
+            string collectGuid = model.collectGuid;
             //姘存鍊�
             string t001 = model.t001;
             string t002 = model.t002;
@@ -53,6 +51,8 @@
             string t009 = model.t009;
             string t010 = model.t010;
             string t011 = model.t011;
+            string t012 = model.t012;
+            string t013 = model.t013;
             dynamic m = new ExpandoObject();
             m.list = new List<dynamic>();
             m.list2 = new List<dynamic>();
@@ -70,17 +70,20 @@
                 new("@banCi",banCi),
                 new("@gongWei",gongWei),
                 new("@badDescription",badDescription),
-                  new("@t001",t001),
-                    new("@t002",t002),
-                      new("@t003",t003),
-                        new("@t004",t004),
-                          new("@t005",t005),
-                            new("@t006",t006),
-                              new("@t007",t007),
-                                new("@t008",t008),
-                                  new("@t009",t009),
-                                    new("@t010",t010),
-                                       new("@t011",t011),
+                new("@t001",t001),
+                new("@t002",t002),
+                new("@t003",t003),
+                new("@t004",t004),
+                new("@t005",t005),
+                new("@t006",t006),
+                new("@t007",t007),
+                new("@t008",t008),
+                new("@t009",t009),
+                new("@t010",t010),
+                new("@t011",t011),
+                new("@t012",t012),
+                new("@t013",t013),
+                new("@collectGuid",collectGuid),
             };
             var dset = new DataSet();
             try
@@ -122,7 +125,12 @@
             }
             catch (Exception ex)
             {
-                LogHelper.Debug(this.ToString(), ex.Message);
+                System.Text.StringBuilder sbLog = new System.Text.StringBuilder();
+                sbLog.Append("_userGuid:" + _userGuid.ToString());
+                sbLog.Append("processNo:" + processNo.ToString());
+                sbLog.Append("gongWei:" + gongWei.ToString());
+                sbLog.Append("inP4:" + barCode);
+                LogHelper.Debug(this.ToString(), ex.Message + ":" + sbLog.ToString());
                 m.outMsg = ex.Message;
                 m.outSum = -1;
             }
diff --git a/WebApi/Gs.Wom/WorkService/WorkProController.cs b/WebApi/Gs.Wom/WorkService/WorkProController.cs
index 95d19cf..6ce5e6c 100644
--- a/WebApi/Gs.Wom/WorkService/WorkProController.cs
+++ b/WebApi/Gs.Wom/WorkService/WorkProController.cs
@@ -49,15 +49,22 @@
             sbSql.Append("( ");
             sbSql.Append("select top 100000 ROW_NUMBER() over(order by " +
                          sortName + " " + model.sortOrder +
-                         ") as rowIndex,cast(0 as bit) as chkInt,  a.*,(a.processNo+':'+a.processName) as processNoAndName,(case  a.isStatus when 1 then '姝e父' when -1 then  '绂佺敤'  else  cast(a.isStatus as nvarchar(4))  end) as isStatusTxt from WORK_PROCESS a  where 1=1" +
-                         keyWhere);
+                         ") as rowIndex,cast(0 as bit) as chkInt,a.*," +
+                         "(a.processNo+':'+a.processName) as processNoAndName," +
+                         "(case a.isStatus when 1 then '姝e父' when -1 then  '绂佺敤'  else  cast(a.isStatus as nvarchar(4))  end) as isStatusTxt," +
+                         "cj.USER_NAME as createByName," +
+                         "isnull(gx.USER_NAME,a.lastUpdateBy) as lastupdateByName " +
+                         "from WORK_PROCESS a " +
+                         "left join SYS_USER cj on cj.ACCOUNT=a.createBy " +
+                         "left join SYS_USER gx on gx.ACCOUNT=a.lastUpdateBy " +
+                         "where 1=1" + keyWhere);
             sbSql.Append(") as T ");
             sbSql.Append(" where T.rowindex>(" + currentPage + "-1)*" +
                          everyPageSize + " and  T.rowindex<=" + currentPage + "*" +
                          everyPageSize);
             sbSql.Append(" order by rowindex asc ");
             sbSql.Append(
-                " select count(1) as intTotal  from WORK_PROCESS a  where 1=1 " +
+                " select count(1) as intTotal  from WORK_PROCESS a  left join SYS_USER cj on cj.ACCOUNT=a.createBy left join SYS_USER gx on gx.ACCOUNT=a.lastUpdateBy where 1=1 " +
                 keyWhere);
             var dset = new DataSet();
             try
@@ -153,18 +160,20 @@
             string remark = model.remark;
             string isBack = model.isBack;
             string isStatus = model.isStatus;
+            string isZsm = model.isZsm;
+            string isTbm = model.isTbm;
             string description = model.description;
             int? rtnInt = (int)ReturnCode.Default;
             System.Text.StringBuilder sbSql = new StringBuilder();
             if (!CheckGuid(guid))
             {
                 guid= Guid.NewGuid().ToString();
-                sbSql.Append("INSERT INTO [dbo].[WORK_PROCESS] ([guid] ,[processNo] ,[processName] ,[remark] ,[isBack] ,[isStatus] ,[description] ,[createBy] ,[createDate] ,[lastUpdateBy] ,[lastUpdateDate])");
-                sbSql.Append(" values( '"+ guid + "',@processNo,@processName,@remark,@isBack,@isStatus,@description,'" + _userCode + "',getdate(),'" + _userCode + "',getdate())");
+                sbSql.Append("INSERT INTO [dbo].[WORK_PROCESS] ([guid] ,[processNo] ,[processName] ,[remark] ,[isBack] ,[isStatus] ,[description] ,[createBy] ,[createDate] ,[lastUpdateBy] ,[lastUpdateDate],isZsm,isTbm)");
+                sbSql.Append(" values( '"+ guid + "',@processNo,@processName,@remark,@isBack,@isStatus,@description,'" + _userCode + "',getdate(),'" + _userCode + "',getdate(),@isZsm,@isTbm)");
             }
             else
             {
-                sbSql.Append("UPDATE [dbo].[WORK_PROCESS]  SET [processNo] =@processNo,[processName] =@processName,[remark] =@remark,[isBack] =@isBack,[isStatus] =@isStatus,[description] =@description,[lastUpdateBy] ='" + _userCode + "',[lastUpdateDate] =getdate() where guid='"+guid.ToString()+"'");
+                sbSql.Append("UPDATE [dbo].[WORK_PROCESS]  SET [processNo] =@processNo,[processName] =@processName,[remark] =@remark,[isBack] =@isBack,[isStatus] =@isStatus,[description] =@description,[lastUpdateBy] ='" + _userCode + "',[lastUpdateDate] =getdate(),isZsm=@isZsm,isTbm=@isTbm where guid='" + guid.ToString()+"'");
             }
             SqlParameter[] parameters =
                    {
@@ -174,6 +183,8 @@
                         new("@isBack", isBack),
                         new("@isStatus", isStatus),
                         new("@description", description),
+                        new("@isZsm", isZsm),
+                        new("@isTbm", isTbm),
                     };
             try
             {
diff --git a/WebApi/Gs.Wom/WorkService/WorkTechniqueController.cs b/WebApi/Gs.Wom/WorkService/WorkTechniqueController.cs
index a2a4c54..a4441ad 100644
--- a/WebApi/Gs.Wom/WorkService/WorkTechniqueController.cs
+++ b/WebApi/Gs.Wom/WorkService/WorkTechniqueController.cs
@@ -35,7 +35,7 @@
         [RequestMethod(RequestMethods.POST)]
         public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
         {
-            string guid = model.guid.ToString();
+            string guid = model.guid.ToString();// --杩欐槸浜у搧鐨刧uid
             dynamic m = new ExpandoObject();
             m.list = new List<dynamic>();
             SqlParameter[] parameters =
diff --git a/WebApi/Gs.Wom/WorkService/WorkWeightController.cs b/WebApi/Gs.Wom/WorkService/WorkWeightController.cs
index ec99902..3c9ca88 100644
--- a/WebApi/Gs.Wom/WorkService/WorkWeightController.cs
+++ b/WebApi/Gs.Wom/WorkService/WorkWeightController.cs
@@ -46,8 +46,7 @@
             }
             catch (Exception ex)
             {
-                LogHelper.Debug(ToString(),
-                           "work_weight_lst error锛�" + ex.Message);
+                LogHelper.Debug(ToString(), "work_weight_lst error锛�" + ex.Message);
             }
             if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)
                 lst = dset.Tables[0].TableToDynamicList();
@@ -57,7 +56,7 @@
 
 
         /// <summary>
-        ///     澧炲姞鎴栫紪杈戝疄浣�
+        ///     澧炲姞涓�鏉¢噸閲忎俊鎭�
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
@@ -66,7 +65,7 @@
         {
             string lineId = model.lineId;
             string realWeight = model.realWeight;
-            string realWeightTxt=model.realWeightTxt;
+            string realWeightTxt = model.realWeightTxt;
             dynamic mObj = new ExpandoObject();
             mObj.outMsg = "";
             mObj.outSum = -1;
@@ -112,5 +111,92 @@
                 return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
             return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg);
         }
+
+
+        /// <summary>
+        ///    璇诲彇iqc绉伴噸
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<string?> GetIqcWeight([FromBody] dynamic model)
+        {
+            string? rtnInt = "";
+            var dset = new DataSet();
+            try
+            {
+                SqlParameter[] parameters =
+                      {
+                        new("@inLineId","")
+                    };
+                dset = DbHelperSQL.RunProcedure("iqc_detect01_get_weight", parameters, "0");
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Debug(ToString(), "GetIqcWeight error锛�" + ex.Message);
+            }
+            if (dset != null && dset.Tables.Count > 0 && dset.Tables[0].Rows.Count > 0)
+            {
+                rtnInt = dset.Tables[0].Rows[0]["realWeight"].ToString();
+            }
+            return ReturnDto<string>.QuickReturn(rtnInt, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+        }
+
+
+        /// <summary>
+        ///   缂栬緫iqc閲嶉噺
+        /// </summary>
+        /// <param name="model"></param>
+        /// <returns></returns>
+        [RequestMethod(RequestMethods.POST)]
+        public ReturnDto<ExpandoObject> EditIqcWeight([FromBody] dynamic model)
+        {
+            string iqcGuid = model.iqcGuid;
+            string weightType = model.weightType;
+            string weight = model.weight;
+            dynamic mObj = new ExpandoObject();
+            mObj.outMsg = "";
+            mObj.outSum = -1;
+            using (var conn = new SqlConnection(DbHelperSQL.strConn))
+            {
+                using (var cmd = new SqlCommand("[iqc_detect01_edt_weight]", conn))
+                {
+                    try
+                    {
+                        conn.Open();
+                        cmd.CommandType = CommandType.StoredProcedure;
+                        SqlParameter[] parameters =
+                        {
+                        new("@outMsg", SqlDbType.NVarChar, 300),
+                        new("@outSum", SqlDbType.Int),
+                        new("@weightType", weightType),
+                        new("@weight", weight),
+                        new("@iqcGuid", iqcGuid),
+                        new("@inEdtUserGuid", _userGuid),
+                    };
+                        parameters[0].Direction = ParameterDirection.Output;
+                        parameters[1].Direction = ParameterDirection.Output;
+                        foreach (var parameter in parameters)
+                            cmd.Parameters.Add(parameter);
+                        cmd.ExecuteNonQuery();
+                        mObj.outMsg = parameters[0].Value.ToString();
+                        mObj.outSum = int.Parse(parameters[1].Value.ToString());
+                    }
+                    catch (Exception ex)
+                    {
+                        LogHelper.Debug(ToString(), "iqc_detect01_edt_weight error锛�" + ex.Message);
+                        mObj.outMsg = ex.Message;
+                        mObj.outSum = -1;
+                    }
+                    finally
+                    {
+                        conn.Close();
+                    }
+                }
+            }
+            if (mObj.outSum <= 0)
+                return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Exception, mObj.outMsg);
+            return ReturnDto<dynamic>.QuickReturn(mObj, ReturnCode.Success, mObj.outMsg);
+        }
     }
 }
diff --git a/WebApi/Gs.Ww/ProductionOrderManager.cs b/WebApi/Gs.Ww/ProductionOrderManager.cs
index e75855d..d445cd6 100644
--- a/WebApi/Gs.Ww/ProductionOrderManager.cs
+++ b/WebApi/Gs.Ww/ProductionOrderManager.cs
@@ -25,7 +25,6 @@
                 GetUserGuidAndOrgGuid(_http);
         }
 
-
         /// <summary>
         ///     璇诲彇鍒楄〃锛屾敮鎸佸垎椤�
         /// </summary>
@@ -183,9 +182,9 @@
                     {
                         LogHelper.Debug(ToString(),
                             "prc_ww_rwd_dj_submit error锛�" + ex.Message);
-                        return ReturnDto<dynamic>.QuickReturn(m,
-                            ReturnCode.Default,
-                            ex.Message);
+                        m.outMsg = ex.Message;
+                        m.outSum = -1;
+
                     }
                     finally
                     {
@@ -193,8 +192,12 @@
                     }
                 }
             }
+            if (m.outSum <= 0)
+                return ReturnDto<dynamic>.QuickReturn(m,
+                               ReturnCode.Default,
+                              "鎿嶄綔澶辫触锛�");
             return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
-                "鎿嶄綔鎴愬姛锛�");
+              "鎿嶄綔鎴愬姛锛�");
         }
     }
 }
\ No newline at end of file
diff --git a/WebApi/Gs.Ww/WWBlDJManager.cs b/WebApi/Gs.Ww/WWBlDJManager.cs
index 5c74030..f60a7b2 100644
--- a/WebApi/Gs.Ww/WWBlDJManager.cs
+++ b/WebApi/Gs.Ww/WWBlDJManager.cs
@@ -145,6 +145,44 @@
             dynamic m = new ExpandoObject();
             m.outSum = -1;
             m.outMsg = "";
+            // 褰撳鏍告椂锛坃inFieldValue涓�"1"鏃讹級妫�鏌ヤ粨搴�
+            if (_inFieldValue == "1")
+            {
+                try
+                {
+                    string warehouseCheckSql = @"
+                        SELECT COUNT(1) 
+                        FROM MES_INV_ITEM_OUT_ITEMS b 
+                        LEFT JOIN MES_INV_ITEM_OUTS h ON h.GUID = b.ITEM_OUT_ID	 
+                         left join MES_ITEM_BL_DETAIL bl on bl.id = b.item_dabid
+                         left join WW_GD_DETAIL gdde on gdde.id = bl.dabGuid
+                         left join WW_GD gd on gd.id = gdde.pid
+                         left join (select h.ORDER_NO,b1.MATERIAL_CODE,b1.ERP_ID,b1.WAREHOUSE,h.ERP_PRODUCTION_ORDER_NO from PRODUCTION_ORDER_SUB b1 left join PRODUCTION_ORDER h on  h.ERP_PRODUCTION_ENTRY_CODE=b1.ERP_PRODUCTION_ENTRY_CODE) d
+                         on gd.daa014 = ORDER_NO and d.MATERIAL_CODE = b.item_id
+                        WHERE b.item_out_id = @inFieldValue 
+                        AND (d.WAREHOUSE IS NULL OR d.WAREHOUSE = '' OR d.WAREHOUSE = '0')";
+
+                    var parameters = new[] {
+                        new SqlParameter("@inFieldValue", _guid)
+                    };
+
+                    var emptyWarehouseCount = DbHelperSQL.GetSingle(warehouseCheckSql, parameters);
+
+                    if (emptyWarehouseCount != null && Convert.ToInt32(emptyWarehouseCount) > 0)
+                    {
+                        m.outSum = -1;
+                        m.outMsg = "瀵瑰簲鐨勫澶栧崟鐨勪粨搴撲负绌猴紝鏃犳硶瀹℃牳锛�";
+                        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Exception, m.outMsg);
+                    }
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.Debug(ToString(), "浠撳簱妫�鏌ュけ璐ワ細" + ex.Message);
+                    m.outSum = -1;
+                    m.outMsg = "浠撳簱妫�鏌ュけ璐ワ細" + ex.Message;
+                    return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Exception, m.outMsg);
+                }
+            }
             using (var conn = new SqlConnection(DbHelperSQL.strConn))
             {
                 using (var cmd = new SqlCommand("prc_ww_bldj_submit", conn))
diff --git a/WebApi/Gs.Ww/WWBlManager.cs b/WebApi/Gs.Ww/WWBlManager.cs
index 4c67cf2..3bbdc7f 100644
--- a/WebApi/Gs.Ww/WWBlManager.cs
+++ b/WebApi/Gs.Ww/WWBlManager.cs
@@ -117,8 +117,8 @@
                     m = dr.RowToDynamic();
                     var _tb = dset.Tables[1].TableToDynamicList();
                     m.list = _tb;
-                    var _tb2 = dset.Tables[2].TableToDynamicList();
-                    m.list2 = _tb2;
+                    //var _tb2 = dset.Tables[2].TableToDynamicList();
+                    //m.list2 = _tb2;
                 }
             }
             catch (Exception ex)
@@ -196,11 +196,10 @@
         public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model)
         {
             Guid? guid = model.guid; //涓婚敭
-            string inOrgId = model.inOrgId; //
-            string inGdId = model.inGdId; //宸ュ崟鍙� 
-            string inCkId = model.inCkId;//浠撳簱
             string inYy = model.inYy;//鍘熷洜
             string inType=model.inType;////鍑哄簱绫诲埆
+            string inOrgId = model.inOrgId;////鍑哄簱绫诲埆
+            string inWwGys = model.inWwGys;////鍑哄簱绫诲埆
             var _sb = new StringBuilder();
             var _split = "|";
             foreach (var m in model.list)
@@ -235,12 +234,11 @@
                         new("@outGuid", SqlDbType.UniqueIdentifier),
                         new("@outNo", SqlDbType.NVarChar, 300),
                         new("@inOrderGuid",UtilityHelper.CheckGuid(guid)? guid : DBNull.Value),
-                        new("@inOrgId", inOrgId),
-                        new("@inCkId", inCkId),
-                        new("@inGdId", inGdId),
                         new("@inYy", inYy),
                         new("@inType",inType),
                         new("@inEdtUserGuid", _userGuid),
+                        new("@inOrgId", inOrgId),
+                        new("@inWwGys", inWwGys),
                         new("@inLineList", _sb.ToString())
                     };
                         parameters[0].Direction = ParameterDirection.Output;
@@ -258,7 +256,7 @@
                     catch (Exception ex)
                     {
                         LogHelper.Debug(ToString(),
-                            "prc_BL_edt error锛�" + ex.Message);
+                            "prc_ww_BL_edt error锛�" + ex.Message);
                         mObj.outMsg = ex.Message;
                         mObj.outSum = -1;
                     }
@@ -282,7 +280,7 @@
         public ReturnDto<int?> DeleteModelOrMx([FromBody] dynamic model)
         {
             int? rtnInt = (int)ReturnCode.Default;
-            Guid? guid = model.guid; //鍒拌揣鍗曚富閿�
+            Guid? guid = model.guid;
             string mxGuid = model.mxGuid;
             var _outMsg = "";
             var _outSum = -1;
@@ -317,7 +315,7 @@
                     catch (Exception ex)
                     {
                         LogHelper.Debug(ToString(),
-                            "prc_cgdhd_Edt error锛�" + ex.Message);
+                            "prc_ww_BL_del error锛�" + ex.Message);
                         _outMsg = ex.Message;
                         _outSum = -1;
                     }
diff --git a/WebApi/Gs.Ww/WWGDManager.cs b/WebApi/Gs.Ww/WWGDManager.cs
index de5b16c..dca7c67 100644
--- a/WebApi/Gs.Ww/WWGDManager.cs
+++ b/WebApi/Gs.Ww/WWGDManager.cs
@@ -119,8 +119,8 @@
                     m = dr.RowToDynamic();
                     var _tb = dset.Tables[1].TableToDynamicList();
                     m.list = _tb;
-                    var _tb2 = dset.Tables[2].TableToDynamicList();
-                    m.list2 = _tb2;
+                    //var _tb2 = dset.Tables[2].TableToDynamicList();
+                    //m.list2 = _tb2;
                 }
             }
             catch (Exception ex)
@@ -190,66 +190,6 @@
             }
 
             return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
-        }
-
-        /// <summary>
-        ///     鍒犻櫎涓昏〃鎴栨槑缁�
-        /// </summary>
-        /// <param name="model"></param>
-        /// <returns></returns>
-        [RequestMethod(RequestMethods.POST)]
-        public ReturnDto<int?> DeleteModelOrMx([FromBody] dynamic model)
-        {
-            int? rtnInt = (int)ReturnCode.Default;
-            Guid? guid = model.guid;
-            string mxGuid = model.mxGuid;
-            var _outMsg = "";
-            var _outSum = -1;
-            using (var conn = new SqlConnection(DbHelperSQL.strConn))
-            {
-                using (var cmd = new SqlCommand("[prc_ww_gd_del]", conn))
-                {
-                    try
-                    {
-                        conn.Open();
-                        cmd.CommandType = CommandType.StoredProcedure;
-                        SqlParameter[] parameters =
-                        {
-                        new("@outMsg", SqlDbType.NVarChar, 300),
-                        new("@outSum", SqlDbType.Int),
-                        new("@inOrderGuid",
-                            UtilityHelper.CheckGuid(guid)
-                                ? guid
-                                : DBNull.Value),
-                        new("@inEdtUserGuid", _userGuid),
-                        new("@inMxGuid", mxGuid)
-                    };
-                        parameters[0].Direction = ParameterDirection.Output;
-                        parameters[1].Direction = ParameterDirection.Output;
-                        foreach (var parameter in parameters)
-                            cmd.Parameters.Add(parameter);
-
-                        cmd.ExecuteNonQuery();
-                        _outMsg = parameters[0].Value.ToString();
-                        _outSum = int.Parse(parameters[1].Value.ToString());
-                    }
-                    catch (Exception ex)
-                    {
-                        LogHelper.Debug(ToString(),
-                            "prc_ww_gd_del error锛�" + ex.Message);
-                        _outMsg = ex.Message;
-                        _outSum = -1;
-                    }
-                    finally
-                    {
-                        conn.Close();
-                    }
-                }
-            }
-
-            if (_outSum <= 0)
-                return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, _outMsg);
-            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, _outMsg);
         }
 
     }
diff --git a/WebApi/Gs.Ww/WWLLDJManager.cs b/WebApi/Gs.Ww/WWLLDJManager.cs
index 1e0f8c1..548f468 100644
--- a/WebApi/Gs.Ww/WWLLDJManager.cs
+++ b/WebApi/Gs.Ww/WWLLDJManager.cs
@@ -143,6 +143,45 @@
             dynamic m = new ExpandoObject();
             m.outSum = -1;
             m.outMsg = "";
+            // 褰撳鏍告椂锛坃inFieldValue涓�"1"鏃讹級妫�鏌ヤ粨搴�
+            if (_inFieldValue == "1")
+            {
+                try
+                {
+                    string warehouseCheckSql = @"
+                        SELECT COUNT(1) 
+                        FROM MES_INV_ITEM_OUT_C_DETAILS b 
+                        LEFT JOIN MES_INV_ITEM_OUTS h ON h.GUID = b.ITEM_OUT_ID	 
+                        LEFT JOIN (
+                            SELECT h.ORDER_NO, b1.MATERIAL_CODE, b1.WAREHOUSE, h.ERP_PRODUCTION_ORDER_NO 
+                            FROM PRODUCTION_ORDER_SUB b1 
+                            LEFT JOIN PRODUCTION_ORDER h ON h.ERP_PRODUCTION_ENTRY_CODE = b1.ERP_PRODUCTION_ENTRY_CODE
+                        ) d ON h.work_no = d.ERP_PRODUCTION_ORDER_NO AND d.MATERIAL_CODE = b.item_id 
+                        WHERE b.item_out_id = @inFieldValue 
+                        AND (d.WAREHOUSE IS NULL OR d.WAREHOUSE = '' OR d.WAREHOUSE = '0')";
+
+                    var parameters = new[] {
+                        new SqlParameter("@inFieldValue", _guid)
+                    };
+
+                    var emptyWarehouseCount = DbHelperSQL.GetSingle(warehouseCheckSql, parameters);
+
+                    if (emptyWarehouseCount != null && Convert.ToInt32(emptyWarehouseCount) > 0)
+                    {
+                        m.outSum = -1;
+                        m.outMsg = "瀵瑰簲鐨勫澶栧崟鐨勪粨搴撲负绌猴紝鏃犳硶瀹℃牳锛�";
+                        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Exception, m.outMsg);
+                    }
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.Debug(ToString(), "浠撳簱妫�鏌ュけ璐ワ細" + ex.Message);
+                    m.outSum = -1;
+                    m.outMsg = "浠撳簱妫�鏌ュけ璐ワ細" + ex.Message;
+                    return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Exception, m.outMsg);
+                }
+            }
+
             using (var conn = new SqlConnection(DbHelperSQL.strConn))
             {
                 using (var cmd = new SqlCommand("prc_ww_lldj_submit", conn))
diff --git a/WebApi/Gs.Ww/WWTBlDJManager.cs b/WebApi/Gs.Ww/WWTBlDJManager.cs
index fc54f1e..f9056f4 100644
--- a/WebApi/Gs.Ww/WWTBlDJManager.cs
+++ b/WebApi/Gs.Ww/WWTBlDJManager.cs
@@ -145,6 +145,44 @@
             dynamic m = new ExpandoObject();
             m.outSum = -1;
             m.outMsg = "";
+            // 褰撳鏍告椂锛坃inFieldValue涓�"1"鏃讹級妫�鏌ヤ粨搴�
+            if (_inFieldValue == "1")
+            {
+                try
+                {
+                    string warehouseCheckSql = @"
+                        SELECT COUNT(1) 
+                        FROM MES_INV_ITEM_IN_C_DETAILS b 
+                        LEFT JOIN MES_INV_ITEM_INS h ON h.GUID = b.ITEM_IN_ID	 
+                        LEFT JOIN (
+                            SELECT h.ORDER_NO, b1.MATERIAL_CODE, b1.WAREHOUSE, h.ERP_PRODUCTION_ORDER_NO 
+                            FROM PRODUCTION_ORDER_SUB b1 
+                            LEFT JOIN PRODUCTION_ORDER h ON h.ERP_PRODUCTION_ENTRY_CODE = b1.ERP_PRODUCTION_ENTRY_CODE
+                        ) d ON h.work_no = d.ERP_PRODUCTION_ORDER_NO AND d.MATERIAL_CODE = b.item_id 
+                        WHERE b.item_in_id = @inFieldValue
+                        AND (d.WAREHOUSE IS NULL OR d.WAREHOUSE = '' OR d.WAREHOUSE = '0')";
+
+                    var parameters = new[] {
+                        new SqlParameter("@inFieldValue", _guid)
+                    };
+
+                    var emptyWarehouseCount = DbHelperSQL.GetSingle(warehouseCheckSql, parameters);
+
+                    if (emptyWarehouseCount != null && Convert.ToInt32(emptyWarehouseCount) > 0)
+                    {
+                        m.outSum = -1;
+                        m.outMsg = "瀵瑰簲鐨勫澶栧崟鐨勪粨搴撲负绌猴紝鏃犳硶瀹℃牳锛�";
+                        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Exception, m.outMsg);
+                    }
+                }
+                catch (Exception ex)
+                {
+                    LogHelper.Debug(ToString(), "浠撳簱妫�鏌ュけ璐ワ細" + ex.Message);
+                    m.outSum = -1;
+                    m.outMsg = "浠撳簱妫�鏌ュけ璐ワ細" + ex.Message;
+                    return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Exception, m.outMsg);
+                }
+            }
             using (var conn = new SqlConnection(DbHelperSQL.strConn))
             {
                 using (var cmd = new SqlCommand("prc_ww_tbldj_Submit", conn))
diff --git a/WebApi/Gs.Ww/WWTblManager.cs b/WebApi/Gs.Ww/WWTblManager.cs
index 13c3d2b..3a87dfa 100644
--- a/WebApi/Gs.Ww/WWTblManager.cs
+++ b/WebApi/Gs.Ww/WWTblManager.cs
@@ -158,6 +158,7 @@
                 var _line = m.AboutGuid + _split
                                         + m.Sl + _split
                                          + m.Remark + _split
+                                        + m.Bllb + _split
                                         + (CheckGuid(_guid) ? _guid : Guid.Empty.ToString());
                 if (_sb.Length > 0)
                     _sb.Append("~");

--
Gitblit v1.9.3