From b9f57af428b55be059d9d8bb4adc9c0692b2dc8e Mon Sep 17 00:00:00 2001
From: 啊鑫 <t2856754968@163.com>
Date: 星期二, 09 九月 2025 17:00:33 +0800
Subject: [PATCH] 更正为蓝宝配置

---
 WebApi/Gs.JJGZ/MesJjgzJjsalaryController.cs |  236 ++++++
 WebApi/Gs.JJGZ/MesAttanConController.cs     |  300 +++++++
 WebApi/Gs.JJGZ/MesJjgzErrorJsController.cs  |  496 +++++++++++++
 WebApi/Gs.JJGZ/MesJjgzJssalaryController.cs |  271 +++++++
 WebApi/Gs.JJGZ/Gs.JJGZ.csproj               |   26 
 WebApi/Gs.JJGZ/MesJjgzTimeTypeController.cs |  209 +++++
 WebApi/Gs.JJGZ/MesJjgzScheduleController.cs |  296 +++++++
 WebApi/GsMesSolution.sln                    |  130 +++
 WebApi/Gs.JJGZ/MesDeToLineController.cs     |  306 ++++++++
 WebApi/Gs.HostIIS/appsettings.json          |    2 
 10 files changed, 2,271 insertions(+), 1 deletions(-)

diff --git a/WebApi/Gs.HostIIS/appsettings.json b/WebApi/Gs.HostIIS/appsettings.json
index 873cb13..5e33f18 100644
--- a/WebApi/Gs.HostIIS/appsettings.json
+++ b/WebApi/Gs.HostIIS/appsettings.json
@@ -7,7 +7,7 @@
   },
   "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,12468;Initial Catalog=GS_MES;User ID=mesUser;Password =qixi1qaz@WSXmes",
+  "ConnectionStrings": "Data Source=192.168.0.51;Initial Catalog=TEST_MES;User ID=sa;Password =LanBao@2025;Encrypt=True;TrustServerCertificate=True;",
   "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",
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..2ad1a5d
--- /dev/null
+++ b/WebApi/Gs.JJGZ/MesDeToLineController.cs
@@ -0,0 +1,306 @@
+锘縰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 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
+                        FROM Mes_DepartmentToLine A
+                        LEFT JOIN SYS_ORGANIZATION B ON A.OrgId = B.FID
+
+                        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 * FROM {mainTable} WHERE 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..d99e78a
--- /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 * FROM {mainTable} WHERE 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..7928a26
--- /dev/null
+++ b/WebApi/Gs.JJGZ/MesJjgzJssalaryController.cs
@@ -0,0 +1,271 @@
+锘縰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>();
+        // 鍋囪涓昏〃涓篗ES_JJGZ_JS_SALARY锛屾槑缁嗚〃涓篗ES_JJGZ_JS_SALARY_DETAIL
+        string mainTable = "MES_JJGZ_JSSALARY";
+        try
+        {
+            string sqlMain = $"SELECT * FROM {mainTable} WHERE 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/MesJjgzScheduleController.cs b/WebApi/Gs.JJGZ/MesJjgzScheduleController.cs
new file mode 100644
index 0000000..c1709d9
--- /dev/null
+++ b/WebApi/Gs.JJGZ/MesJjgzScheduleController.cs
@@ -0,0 +1,296 @@
+锘縰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 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, *
+                        FROM MES_JJGZ_SCHEDULES 
+                        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 * FROM {mainTable} WHERE 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..a3a6e22
--- /dev/null
+++ b/WebApi/Gs.JJGZ/MesJjgzTimeTypeController.cs
@@ -0,0 +1,209 @@
+锘縰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 * FROM MES_JJGZ_TIMETYPE";
+            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 * FROM {mainTable} WHERE 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/GsMesSolution.sln b/WebApi/GsMesSolution.sln
index 204fc7b..dfdacb7 100644
--- a/WebApi/GsMesSolution.sln
+++ b/WebApi/GsMesSolution.sln
@@ -31,68 +31,198 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Gs.Pda", "Gs.Pda\Gs.Pda.csproj", "{33387B1A-A9D8-41D2-B9C0-60F17D350C40}"
 EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Gs.JJGZ", "Gs.JJGZ\Gs.JJGZ.csproj", "{09B053B1-2E1E-452B-8236-41477D61D3D9}"
+EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
 		Debug|Any CPU = Debug|Any CPU
+		Debug|x64 = Debug|x64
+		Debug|x86 = Debug|x86
 		Release|Any CPU = Release|Any CPU
+		Release|x64 = Release|x64
+		Release|x86 = Release|x86
 	EndGlobalSection
 	GlobalSection(ProjectConfigurationPlatforms) = postSolution
 		{AAC197B4-CE8C-4D21-A2A9-73D383859668}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{AAC197B4-CE8C-4D21-A2A9-73D383859668}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{AAC197B4-CE8C-4D21-A2A9-73D383859668}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{AAC197B4-CE8C-4D21-A2A9-73D383859668}.Debug|x64.Build.0 = Debug|Any CPU
+		{AAC197B4-CE8C-4D21-A2A9-73D383859668}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{AAC197B4-CE8C-4D21-A2A9-73D383859668}.Debug|x86.Build.0 = Debug|Any CPU
 		{AAC197B4-CE8C-4D21-A2A9-73D383859668}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{AAC197B4-CE8C-4D21-A2A9-73D383859668}.Release|Any CPU.Build.0 = Release|Any CPU
+		{AAC197B4-CE8C-4D21-A2A9-73D383859668}.Release|x64.ActiveCfg = Release|Any CPU
+		{AAC197B4-CE8C-4D21-A2A9-73D383859668}.Release|x64.Build.0 = Release|Any CPU
+		{AAC197B4-CE8C-4D21-A2A9-73D383859668}.Release|x86.ActiveCfg = Release|Any CPU
+		{AAC197B4-CE8C-4D21-A2A9-73D383859668}.Release|x86.Build.0 = Release|Any CPU
 		{D13D1BCC-6110-4943-BC98-FC6F3E28CE43}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{D13D1BCC-6110-4943-BC98-FC6F3E28CE43}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D13D1BCC-6110-4943-BC98-FC6F3E28CE43}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{D13D1BCC-6110-4943-BC98-FC6F3E28CE43}.Debug|x64.Build.0 = Debug|Any CPU
+		{D13D1BCC-6110-4943-BC98-FC6F3E28CE43}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{D13D1BCC-6110-4943-BC98-FC6F3E28CE43}.Debug|x86.Build.0 = Debug|Any CPU
 		{D13D1BCC-6110-4943-BC98-FC6F3E28CE43}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{D13D1BCC-6110-4943-BC98-FC6F3E28CE43}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D13D1BCC-6110-4943-BC98-FC6F3E28CE43}.Release|x64.ActiveCfg = Release|Any CPU
+		{D13D1BCC-6110-4943-BC98-FC6F3E28CE43}.Release|x64.Build.0 = Release|Any CPU
+		{D13D1BCC-6110-4943-BC98-FC6F3E28CE43}.Release|x86.ActiveCfg = Release|Any CPU
+		{D13D1BCC-6110-4943-BC98-FC6F3E28CE43}.Release|x86.Build.0 = Release|Any CPU
 		{3CA7A99D-C42B-440A-ADA7-B3D76CD02E7C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{3CA7A99D-C42B-440A-ADA7-B3D76CD02E7C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{3CA7A99D-C42B-440A-ADA7-B3D76CD02E7C}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{3CA7A99D-C42B-440A-ADA7-B3D76CD02E7C}.Debug|x64.Build.0 = Debug|Any CPU
+		{3CA7A99D-C42B-440A-ADA7-B3D76CD02E7C}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{3CA7A99D-C42B-440A-ADA7-B3D76CD02E7C}.Debug|x86.Build.0 = Debug|Any CPU
 		{3CA7A99D-C42B-440A-ADA7-B3D76CD02E7C}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{3CA7A99D-C42B-440A-ADA7-B3D76CD02E7C}.Release|Any CPU.Build.0 = Release|Any CPU
+		{3CA7A99D-C42B-440A-ADA7-B3D76CD02E7C}.Release|x64.ActiveCfg = Release|Any CPU
+		{3CA7A99D-C42B-440A-ADA7-B3D76CD02E7C}.Release|x64.Build.0 = Release|Any CPU
+		{3CA7A99D-C42B-440A-ADA7-B3D76CD02E7C}.Release|x86.ActiveCfg = Release|Any CPU
+		{3CA7A99D-C42B-440A-ADA7-B3D76CD02E7C}.Release|x86.Build.0 = Release|Any CPU
 		{A3BA5A9F-70D3-44DF-8332-F03D6565A0FC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{A3BA5A9F-70D3-44DF-8332-F03D6565A0FC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{A3BA5A9F-70D3-44DF-8332-F03D6565A0FC}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{A3BA5A9F-70D3-44DF-8332-F03D6565A0FC}.Debug|x64.Build.0 = Debug|Any CPU
+		{A3BA5A9F-70D3-44DF-8332-F03D6565A0FC}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{A3BA5A9F-70D3-44DF-8332-F03D6565A0FC}.Debug|x86.Build.0 = Debug|Any CPU
 		{A3BA5A9F-70D3-44DF-8332-F03D6565A0FC}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A3BA5A9F-70D3-44DF-8332-F03D6565A0FC}.Release|Any CPU.Build.0 = Release|Any CPU
+		{A3BA5A9F-70D3-44DF-8332-F03D6565A0FC}.Release|x64.ActiveCfg = Release|Any CPU
+		{A3BA5A9F-70D3-44DF-8332-F03D6565A0FC}.Release|x64.Build.0 = Release|Any CPU
+		{A3BA5A9F-70D3-44DF-8332-F03D6565A0FC}.Release|x86.ActiveCfg = Release|Any CPU
+		{A3BA5A9F-70D3-44DF-8332-F03D6565A0FC}.Release|x86.Build.0 = Release|Any CPU
 		{CF9A9DD9-8D22-4628-93BE-2070C81F2697}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{CF9A9DD9-8D22-4628-93BE-2070C81F2697}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{CF9A9DD9-8D22-4628-93BE-2070C81F2697}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{CF9A9DD9-8D22-4628-93BE-2070C81F2697}.Debug|x64.Build.0 = Debug|Any CPU
+		{CF9A9DD9-8D22-4628-93BE-2070C81F2697}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{CF9A9DD9-8D22-4628-93BE-2070C81F2697}.Debug|x86.Build.0 = Debug|Any CPU
 		{CF9A9DD9-8D22-4628-93BE-2070C81F2697}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{CF9A9DD9-8D22-4628-93BE-2070C81F2697}.Release|Any CPU.Build.0 = Release|Any CPU
+		{CF9A9DD9-8D22-4628-93BE-2070C81F2697}.Release|x64.ActiveCfg = Release|Any CPU
+		{CF9A9DD9-8D22-4628-93BE-2070C81F2697}.Release|x64.Build.0 = Release|Any CPU
+		{CF9A9DD9-8D22-4628-93BE-2070C81F2697}.Release|x86.ActiveCfg = Release|Any CPU
+		{CF9A9DD9-8D22-4628-93BE-2070C81F2697}.Release|x86.Build.0 = Release|Any CPU
 		{F67AF605-BF34-4826-90DE-BCFFFC5DB155}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{F67AF605-BF34-4826-90DE-BCFFFC5DB155}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{F67AF605-BF34-4826-90DE-BCFFFC5DB155}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{F67AF605-BF34-4826-90DE-BCFFFC5DB155}.Debug|x64.Build.0 = Debug|Any CPU
+		{F67AF605-BF34-4826-90DE-BCFFFC5DB155}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{F67AF605-BF34-4826-90DE-BCFFFC5DB155}.Debug|x86.Build.0 = Debug|Any CPU
 		{F67AF605-BF34-4826-90DE-BCFFFC5DB155}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{F67AF605-BF34-4826-90DE-BCFFFC5DB155}.Release|Any CPU.Build.0 = Release|Any CPU
+		{F67AF605-BF34-4826-90DE-BCFFFC5DB155}.Release|x64.ActiveCfg = Release|Any CPU
+		{F67AF605-BF34-4826-90DE-BCFFFC5DB155}.Release|x64.Build.0 = Release|Any CPU
+		{F67AF605-BF34-4826-90DE-BCFFFC5DB155}.Release|x86.ActiveCfg = Release|Any CPU
+		{F67AF605-BF34-4826-90DE-BCFFFC5DB155}.Release|x86.Build.0 = Release|Any CPU
 		{FC3259F8-ED36-4118-BF3F-0B59FF6BA2A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{FC3259F8-ED36-4118-BF3F-0B59FF6BA2A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{FC3259F8-ED36-4118-BF3F-0B59FF6BA2A6}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{FC3259F8-ED36-4118-BF3F-0B59FF6BA2A6}.Debug|x64.Build.0 = Debug|Any CPU
+		{FC3259F8-ED36-4118-BF3F-0B59FF6BA2A6}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{FC3259F8-ED36-4118-BF3F-0B59FF6BA2A6}.Debug|x86.Build.0 = Debug|Any CPU
 		{FC3259F8-ED36-4118-BF3F-0B59FF6BA2A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{FC3259F8-ED36-4118-BF3F-0B59FF6BA2A6}.Release|Any CPU.Build.0 = Release|Any CPU
+		{FC3259F8-ED36-4118-BF3F-0B59FF6BA2A6}.Release|x64.ActiveCfg = Release|Any CPU
+		{FC3259F8-ED36-4118-BF3F-0B59FF6BA2A6}.Release|x64.Build.0 = Release|Any CPU
+		{FC3259F8-ED36-4118-BF3F-0B59FF6BA2A6}.Release|x86.ActiveCfg = Release|Any CPU
+		{FC3259F8-ED36-4118-BF3F-0B59FF6BA2A6}.Release|x86.Build.0 = Release|Any CPU
 		{E8851E6F-E65D-4560-851C-406961260265}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{E8851E6F-E65D-4560-851C-406961260265}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{E8851E6F-E65D-4560-851C-406961260265}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{E8851E6F-E65D-4560-851C-406961260265}.Debug|x64.Build.0 = Debug|Any CPU
+		{E8851E6F-E65D-4560-851C-406961260265}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{E8851E6F-E65D-4560-851C-406961260265}.Debug|x86.Build.0 = Debug|Any CPU
 		{E8851E6F-E65D-4560-851C-406961260265}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{E8851E6F-E65D-4560-851C-406961260265}.Release|Any CPU.Build.0 = Release|Any CPU
+		{E8851E6F-E65D-4560-851C-406961260265}.Release|x64.ActiveCfg = Release|Any CPU
+		{E8851E6F-E65D-4560-851C-406961260265}.Release|x64.Build.0 = Release|Any CPU
+		{E8851E6F-E65D-4560-851C-406961260265}.Release|x86.ActiveCfg = Release|Any CPU
+		{E8851E6F-E65D-4560-851C-406961260265}.Release|x86.Build.0 = Release|Any CPU
 		{63823BC6-6242-4EBC-8B15-B72B89E8CEDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{63823BC6-6242-4EBC-8B15-B72B89E8CEDA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{63823BC6-6242-4EBC-8B15-B72B89E8CEDA}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{63823BC6-6242-4EBC-8B15-B72B89E8CEDA}.Debug|x64.Build.0 = Debug|Any CPU
+		{63823BC6-6242-4EBC-8B15-B72B89E8CEDA}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{63823BC6-6242-4EBC-8B15-B72B89E8CEDA}.Debug|x86.Build.0 = Debug|Any CPU
 		{63823BC6-6242-4EBC-8B15-B72B89E8CEDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{63823BC6-6242-4EBC-8B15-B72B89E8CEDA}.Release|Any CPU.Build.0 = Release|Any CPU
+		{63823BC6-6242-4EBC-8B15-B72B89E8CEDA}.Release|x64.ActiveCfg = Release|Any CPU
+		{63823BC6-6242-4EBC-8B15-B72B89E8CEDA}.Release|x64.Build.0 = Release|Any CPU
+		{63823BC6-6242-4EBC-8B15-B72B89E8CEDA}.Release|x86.ActiveCfg = Release|Any CPU
+		{63823BC6-6242-4EBC-8B15-B72B89E8CEDA}.Release|x86.Build.0 = Release|Any CPU
 		{D1743FF9-431C-4D1A-A4B5-3C81D66EE282}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{D1743FF9-431C-4D1A-A4B5-3C81D66EE282}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{D1743FF9-431C-4D1A-A4B5-3C81D66EE282}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{D1743FF9-431C-4D1A-A4B5-3C81D66EE282}.Debug|x64.Build.0 = Debug|Any CPU
+		{D1743FF9-431C-4D1A-A4B5-3C81D66EE282}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{D1743FF9-431C-4D1A-A4B5-3C81D66EE282}.Debug|x86.Build.0 = Debug|Any CPU
 		{D1743FF9-431C-4D1A-A4B5-3C81D66EE282}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{D1743FF9-431C-4D1A-A4B5-3C81D66EE282}.Release|Any CPU.Build.0 = Release|Any CPU
+		{D1743FF9-431C-4D1A-A4B5-3C81D66EE282}.Release|x64.ActiveCfg = Release|Any CPU
+		{D1743FF9-431C-4D1A-A4B5-3C81D66EE282}.Release|x64.Build.0 = Release|Any CPU
+		{D1743FF9-431C-4D1A-A4B5-3C81D66EE282}.Release|x86.ActiveCfg = Release|Any CPU
+		{D1743FF9-431C-4D1A-A4B5-3C81D66EE282}.Release|x86.Build.0 = Release|Any CPU
 		{27AFDBE0-40C0-49CF-A8AF-7DF01FBFE33A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{27AFDBE0-40C0-49CF-A8AF-7DF01FBFE33A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{27AFDBE0-40C0-49CF-A8AF-7DF01FBFE33A}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{27AFDBE0-40C0-49CF-A8AF-7DF01FBFE33A}.Debug|x64.Build.0 = Debug|Any CPU
+		{27AFDBE0-40C0-49CF-A8AF-7DF01FBFE33A}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{27AFDBE0-40C0-49CF-A8AF-7DF01FBFE33A}.Debug|x86.Build.0 = Debug|Any CPU
 		{27AFDBE0-40C0-49CF-A8AF-7DF01FBFE33A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{27AFDBE0-40C0-49CF-A8AF-7DF01FBFE33A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{27AFDBE0-40C0-49CF-A8AF-7DF01FBFE33A}.Release|x64.ActiveCfg = Release|Any CPU
+		{27AFDBE0-40C0-49CF-A8AF-7DF01FBFE33A}.Release|x64.Build.0 = Release|Any CPU
+		{27AFDBE0-40C0-49CF-A8AF-7DF01FBFE33A}.Release|x86.ActiveCfg = Release|Any CPU
+		{27AFDBE0-40C0-49CF-A8AF-7DF01FBFE33A}.Release|x86.Build.0 = Release|Any CPU
 		{A899A72F-5E82-4176-81F6-D34AA8146F3A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{A899A72F-5E82-4176-81F6-D34AA8146F3A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{A899A72F-5E82-4176-81F6-D34AA8146F3A}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{A899A72F-5E82-4176-81F6-D34AA8146F3A}.Debug|x64.Build.0 = Debug|Any CPU
+		{A899A72F-5E82-4176-81F6-D34AA8146F3A}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{A899A72F-5E82-4176-81F6-D34AA8146F3A}.Debug|x86.Build.0 = Debug|Any CPU
 		{A899A72F-5E82-4176-81F6-D34AA8146F3A}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{A899A72F-5E82-4176-81F6-D34AA8146F3A}.Release|Any CPU.Build.0 = Release|Any CPU
+		{A899A72F-5E82-4176-81F6-D34AA8146F3A}.Release|x64.ActiveCfg = Release|Any CPU
+		{A899A72F-5E82-4176-81F6-D34AA8146F3A}.Release|x64.Build.0 = Release|Any CPU
+		{A899A72F-5E82-4176-81F6-D34AA8146F3A}.Release|x86.ActiveCfg = Release|Any CPU
+		{A899A72F-5E82-4176-81F6-D34AA8146F3A}.Release|x86.Build.0 = Release|Any CPU
 		{EA4CCE91-2C56-4E21-B72B-5794DA372890}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{EA4CCE91-2C56-4E21-B72B-5794DA372890}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{EA4CCE91-2C56-4E21-B72B-5794DA372890}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{EA4CCE91-2C56-4E21-B72B-5794DA372890}.Debug|x64.Build.0 = Debug|Any CPU
+		{EA4CCE91-2C56-4E21-B72B-5794DA372890}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{EA4CCE91-2C56-4E21-B72B-5794DA372890}.Debug|x86.Build.0 = Debug|Any CPU
 		{EA4CCE91-2C56-4E21-B72B-5794DA372890}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{EA4CCE91-2C56-4E21-B72B-5794DA372890}.Release|Any CPU.Build.0 = Release|Any CPU
+		{EA4CCE91-2C56-4E21-B72B-5794DA372890}.Release|x64.ActiveCfg = Release|Any CPU
+		{EA4CCE91-2C56-4E21-B72B-5794DA372890}.Release|x64.Build.0 = Release|Any CPU
+		{EA4CCE91-2C56-4E21-B72B-5794DA372890}.Release|x86.ActiveCfg = Release|Any CPU
+		{EA4CCE91-2C56-4E21-B72B-5794DA372890}.Release|x86.Build.0 = Release|Any CPU
 		{33387B1A-A9D8-41D2-B9C0-60F17D350C40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{33387B1A-A9D8-41D2-B9C0-60F17D350C40}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{33387B1A-A9D8-41D2-B9C0-60F17D350C40}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{33387B1A-A9D8-41D2-B9C0-60F17D350C40}.Debug|x64.Build.0 = Debug|Any CPU
+		{33387B1A-A9D8-41D2-B9C0-60F17D350C40}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{33387B1A-A9D8-41D2-B9C0-60F17D350C40}.Debug|x86.Build.0 = Debug|Any CPU
 		{33387B1A-A9D8-41D2-B9C0-60F17D350C40}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{33387B1A-A9D8-41D2-B9C0-60F17D350C40}.Release|Any CPU.Build.0 = Release|Any CPU
+		{33387B1A-A9D8-41D2-B9C0-60F17D350C40}.Release|x64.ActiveCfg = Release|Any CPU
+		{33387B1A-A9D8-41D2-B9C0-60F17D350C40}.Release|x64.Build.0 = Release|Any CPU
+		{33387B1A-A9D8-41D2-B9C0-60F17D350C40}.Release|x86.ActiveCfg = Release|Any CPU
+		{33387B1A-A9D8-41D2-B9C0-60F17D350C40}.Release|x86.Build.0 = Release|Any CPU
+		{09B053B1-2E1E-452B-8236-41477D61D3D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{09B053B1-2E1E-452B-8236-41477D61D3D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{09B053B1-2E1E-452B-8236-41477D61D3D9}.Debug|x64.ActiveCfg = Debug|Any CPU
+		{09B053B1-2E1E-452B-8236-41477D61D3D9}.Debug|x64.Build.0 = Debug|Any CPU
+		{09B053B1-2E1E-452B-8236-41477D61D3D9}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{09B053B1-2E1E-452B-8236-41477D61D3D9}.Debug|x86.Build.0 = Debug|Any CPU
+		{09B053B1-2E1E-452B-8236-41477D61D3D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{09B053B1-2E1E-452B-8236-41477D61D3D9}.Release|Any CPU.Build.0 = Release|Any CPU
+		{09B053B1-2E1E-452B-8236-41477D61D3D9}.Release|x64.ActiveCfg = Release|Any CPU
+		{09B053B1-2E1E-452B-8236-41477D61D3D9}.Release|x64.Build.0 = Release|Any CPU
+		{09B053B1-2E1E-452B-8236-41477D61D3D9}.Release|x86.ActiveCfg = Release|Any CPU
+		{09B053B1-2E1E-452B-8236-41477D61D3D9}.Release|x86.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
 		HideSolutionNode = FALSE

--
Gitblit v1.9.3