From c01d18bc7e003a025e06fc1a2d1ac62fbd036269 Mon Sep 17 00:00:00 2001
From: tjx <t2856754968@163.com>
Date: 星期六, 11 十月 2025 20:06:40 +0800
Subject: [PATCH] 1

---
 WebApi/Gs.Sys/Services/FmController.cs |  334 ++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 242 insertions(+), 92 deletions(-)

diff --git a/WebApi/Gs.Sys/Services/FmController.cs b/WebApi/Gs.Sys/Services/FmController.cs
index 974f493..71c84d2 100644
--- a/WebApi/Gs.Sys/Services/FmController.cs
+++ b/WebApi/Gs.Sys/Services/FmController.cs
@@ -14,7 +14,6 @@
 
 namespace Gs.Sys.Services
 {
-
     [ApiGroup(ApiGroupNames.FM)]
     public class FmController : IRomteService
     {
@@ -28,25 +27,30 @@
                 GetUserGuidAndOrgGuid(_http);
         }
 
-        #region 鐗堥潰
+        #region 甯冨眬閰嶇疆
+
         /// <summary>
-        ///     澧炲姞
+        ///     淇濆瓨鎴栨竻绌鸿〃鍗曞竷灞�
         /// </summary>
         /// <param name="model"></param>
         /// <returns></returns>
+        /// <remarks>Saves layouts: intType 1=standard save, 2=personal save, 3=clear standard, 4=clear personal.</remarks>
         [RequestMethod(RequestMethods.POST)]
         public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model)
         {
             string applyUserGuid = "";
             string formPath = model.formPath;
             int intType = model.intType;
+            // intType: 1 = save standard layout, 2 = save personal layout, 3 = clear standard layout, 4 = clear personal layout.
             dynamic m = new ExpandoObject();
             m.outMsg = "";
+            // Gather batched SQL statements so they can be executed transactionally when saving layouts.
             Hashtable SQLStringList = new Hashtable();
             string _groupGuid = Guid.NewGuid().ToString();
             //鍙湁瓒呯骇绠$悊鍛樻潈闄�
             if (intType == 1 || intType == 3)
             {
+                // Validate the current user has administrator rights when touching standard layouts.
                 int? isAdmin = 0;
                 try
                 {
@@ -54,46 +58,79 @@
                     if (isAdmin <= 0)
                     {
                         m.outMsg = "浣犱笉鏄鐞嗗憳锛屾搷浣滃け璐ワ紒";
-                        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "鎿嶄綔鎴愬姛锛�");
+                        return ReturnDto<dynamic>.QuickReturn(m,
+                            ReturnCode.Default, "鎿嶄綔鎴愬姛锛�");
                     }
                 }
                 catch (Exception ex)
                 {
-                    Gs.Toolbox.LogHelper.Debug(this.ToString(), "EditModel isAdmin error锛�" + ex.Message);
+                    Gs.Toolbox.LogHelper.Debug(this.ToString(),
+                        "EditModel isAdmin error锛�" + ex.Message);
                 }
             }
+
             //淇濆瓨鏍囧噯鐗�
             if (intType == 1)
             {
+                // Persist a new standard layout definition shared by all users.
                 applyUserGuid = null;
-                Gs.Toolbox.DbHelperSQL.ExecuteSql("delete from [FM_LAYOUT] where groupGuid<>'" + _groupGuid + "' and [formPath]=@formPath and applyUserGuid is null", new SqlParameter[] { new SqlParameter("@formPath", formPath) });
+                Gs.Toolbox.DbHelperSQL.ExecuteSql(
+                    "delete from [FM_LAYOUT] where groupGuid<>'" + _groupGuid +
+                    "' and [formPath]=@formPath and applyUserGuid is null",
+                    new SqlParameter[]
+                        { new SqlParameter("@formPath", formPath) });
                 // SQLStringList.Add("delete from [FM_LAYOUT] where groupGuid<>'" + _groupGuid + "' and [formPath]=@formPath and applyUserGuid is null", new SqlParameter[] { new SqlParameter("@formPath", formPath) });
             }
+
             //淇濆瓨涓汉鐗堟湰
             if (intType == 2)
             {
+                // Persist the caller's personal layout copy scoped to their user GUID.
                 applyUserGuid = _userGuid;
-                Gs.Toolbox.DbHelperSQL.ExecuteSql("delete from [FM_LAYOUT] where  groupGuid<>'" + _groupGuid + "' and [formPath]=@formPath and applyUserGuid =@applyUserGuid", new SqlParameter[] { new SqlParameter("@formPath", formPath), new SqlParameter("@applyUserGuid", applyUserGuid) });
+                Gs.Toolbox.DbHelperSQL.ExecuteSql(
+                    "delete from [FM_LAYOUT] where  groupGuid<>'" + _groupGuid +
+                    "' and [formPath]=@formPath and applyUserGuid =@applyUserGuid",
+                    new SqlParameter[]
+                    {
+                        new SqlParameter("@formPath", formPath),
+                        new SqlParameter("@applyUserGuid", applyUserGuid)
+                    });
                 //SQLStringList.Add("delete from [FM_LAYOUT] where  groupGuid<>'" + _groupGuid + "' and [formPath]=@formPath and applyUserGuid =@applyUserGuid", new SqlParameter[] { new SqlParameter("@formPath", formPath), new SqlParameter("@applyUserGuid", applyUserGuid) });
             }
+
             //娓呯┖鏍囧噯鐗堟湰
             if (intType == 3)
             {
+                // Administrators can wipe the shared standard layout entirely.
                 applyUserGuid = null;
-                SQLStringList.Add("delete from [FM_LAYOUT] where [formPath]=@formPath and applyUserGuid is null", new SqlParameter[] { new SqlParameter("@formPath", formPath) });
+                SQLStringList.Add(
+                    "delete from [FM_LAYOUT] where [formPath]=@formPath and applyUserGuid is null",
+                    new SqlParameter[]
+                        { new SqlParameter("@formPath", formPath) });
                 Gs.Toolbox.DbHelperSQL.ExecuteSqlTranRtn(SQLStringList);
                 m.outMsg = "娓呯┖鏍囧噯鐗堥厤缃垚鍔燂紒";
-                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+                    "鎿嶄綔鎴愬姛锛�");
             }
+
             //娓呯┖涓汉鐗堟湰
             if (intType == 4)
             {
+                // Remove the caller's personal layout while keeping the shared standard version intact.
                 applyUserGuid = _userGuid;
-                SQLStringList.Add("delete from [FM_LAYOUT] where [formPath]=@formPath and applyUserGuid =@applyUserGuid", new SqlParameter[] { new SqlParameter("@formPath", formPath), new SqlParameter("@applyUserGuid", applyUserGuid) });
+                SQLStringList.Add(
+                    "delete from [FM_LAYOUT] where [formPath]=@formPath and applyUserGuid =@applyUserGuid",
+                    new SqlParameter[]
+                    {
+                        new SqlParameter("@formPath", formPath),
+                        new SqlParameter("@applyUserGuid", applyUserGuid)
+                    });
                 Gs.Toolbox.DbHelperSQL.ExecuteSqlTranRtn(SQLStringList);
                 m.outMsg = "娓呯┖涓汉鐗堥厤缃垚鍔燂紒";
-                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+                    "鎿嶄綔鎴愬姛锛�");
             }
+
             //杩欐槸鎵�鏈夌殑gridview,lay xml
             JArray jArray = model.xmlList;
             try
@@ -103,35 +140,52 @@
                     JObject job = (JObject)jsonitem;
                     if (job["idName"] != null)
                     {
+                        // Compose an insert statement for each UI control (grid, layout panel, splitter, etc.).
                         string idName = job["idName"].ToString();
                         string idXml = job["idXml"].ToString();
                         string idType = job["idType"].ToString();
-                        string _splitterPosition = job["splitterPosition"].ToString();
-                        string splitterPosition = string.IsNullOrEmpty(_splitterPosition) ? "0" : _splitterPosition;
-                        System.Text.StringBuilder _sql = new System.Text.StringBuilder();
-                        _sql.Append(" INSERT INTO [dbo].[FM_LAYOUT] ([guid] ,[applyUserGuid] ,[formPath] ,[controlId],[controlHeight],[lastUpdateBy],[lastUpdateDate],controlXml,controlType,groupGuid,splitterPosition)");
-                        _sql.Append("values(newid(),@applyUserGuid,@formPath,@controlId,@controlHeight,@lastUpdateBy,getdate(),@controlXml,'" + idType + "','" + _groupGuid + "'," + splitterPosition + ")");
-                        SQLStringList.Add(_sql, new SqlParameter[] {
-                            new SqlParameter("@formPath", formPath)
-                            , new SqlParameter("@controlId", idName)
-                             , new SqlParameter("@controlHeight", "0")
-                             , new SqlParameter("@lastUpdateBy", _userCode)
-                             , new SqlParameter("@applyUserGuid", applyUserGuid)
-                             , new SqlParameter("@controlXml", idXml)
+                        string _splitterPosition =
+                            job["splitterPosition"].ToString();
+                        string splitterPosition =
+                            string.IsNullOrEmpty(_splitterPosition)
+                                ? "0"
+                                : _splitterPosition;
+                        System.Text.StringBuilder _sql =
+                            new System.Text.StringBuilder();
+                        _sql.Append(
+                            " INSERT INTO [dbo].[FM_LAYOUT] ([guid] ,[applyUserGuid] ,[formPath] ,[controlId],[controlHeight],[lastUpdateBy],[lastUpdateDate],controlXml,controlType,groupGuid,splitterPosition)");
+                        _sql.Append(
+                            "values(newid(),@applyUserGuid,@formPath,@controlId,@controlHeight,@lastUpdateBy,getdate(),@controlXml,'" +
+                            idType + "','" + _groupGuid + "'," +
+                            splitterPosition + ")");
+                        SQLStringList.Add(_sql, new SqlParameter[]
+                        {
+                            new SqlParameter("@formPath", formPath),
+                            new SqlParameter("@controlId", idName),
+                            new SqlParameter("@controlHeight", "0"),
+                            new SqlParameter("@lastUpdateBy", _userCode),
+                            new SqlParameter("@applyUserGuid", applyUserGuid),
+                            new SqlParameter("@controlXml", idXml)
                         });
                     }
                 }
+
                 Gs.Toolbox.DbHelperSQL.ExecuteSqlTranRtn(SQLStringList);
                 m.outMsg = "淇濆瓨" + (intType == 1 ? "鏍囧噯鐗�" : "涓汉鐗�") + "閰嶇疆鎴愬姛锛�";
-                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+                    "鎿嶄綔鎴愬姛锛�");
             }
             catch (Exception ex)
             {
+                // 鎹曡幏淇濆瓨鏌ヨ閰嶇疆鏃剁殑寮傚父锛屽苟灏嗕俊鎭繑鍥炵粰鍓嶇銆�
                 m.outMsg = "鎿嶄綔澶辫触:" + ex.Message;
-                Gs.Toolbox.LogHelper.Debug(this.ToString(), "EditModel error锛�" + ex.Message);
+                Gs.Toolbox.LogHelper.Debug(this.ToString(),
+                    "EditModel error锛�" + ex.Message);
             }
+
             //杩欐槸鎵�鏈夌殑
-            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "鎿嶄綔鎴愬姛锛�");
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
+                "鎿嶄綔鎴愬姛锛�");
         }
 
 
@@ -140,6 +194,7 @@
         /// </summary>
         /// <param name="guid"></param>
         /// <returns></returns>
+        /// <remarks>Combines the shared layout (list) with the current user's override (list2).</remarks>
         [RequestMethod(RequestMethods.POST)]
         public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
         {
@@ -155,10 +210,13 @@
             var dset = new DataSet();
             try
             {
-                dset = DbHelperSQL.RunProcedure("[fm_get_layout]", parameters, "0");
+                // Stored procedure returns both standard layout data and any personal override for the current user.
+                dset = DbHelperSQL.RunProcedure("[fm_get_layout]", parameters,
+                    "0");
                 if (dset != null && dset.Tables.Count > 0
-                 )
+                   )
                 {
+                    // Table[0] represents the standard definition; table[1] holds the user's personal layout snapshot.
                     var _tb = dset.Tables[0].TableToDynamicList();
                     m.list = _tb;
                     var _tb2 = dset.Tables[1].TableToDynamicList();
@@ -167,8 +225,10 @@
             }
             catch (Exception ex)
             {
+                // Log retrieval failure but continue returning default result to caller.
                 LogHelper.Debug(ToString(), ex.Message);
             }
+
             if (m != null)
                 return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
                     "璇诲彇鎴愬姛锛�");
@@ -182,6 +242,7 @@
         /// </summary>
         /// <param name="guid"></param>
         /// <returns></returns>
+        /// <remarks>Retrieves the serialized layout string for the latest saved version (standard or personal).</remarks>
         [RequestMethod(RequestMethods.POST)]
         public ReturnDto<string> GetModelByVersion([FromBody] dynamic model)
         {
@@ -195,21 +256,26 @@
             var dset = new DataSet();
             try
             {
-                dset = DbHelperSQL.RunProcedure("[fm_get_layout_ver]", parameters, "0");
+                // Stored procedure exposes the latest serialized layout snapshot based on formPath and user scope.
+                dset = DbHelperSQL.RunProcedure("[fm_get_layout_ver]",
+                    parameters, "0");
                 if (dset != null && dset.Tables.Count > 0
-                 )
+                   )
                 {
                     strMsg = dset.Tables[0].Rows[0][0].ToString();
                 }
             }
             catch (Exception ex)
             {
-                LogHelper.Debug(ToString(), ex.Message+ ",formPath:"+ formPath+ ",_userGuid:"+ _userGuid);
-
+                // Capture context when reading layout versions fails to help diagnose environment-specific issues.
+                LogHelper.Debug(ToString(),
+                    ex.Message + ",formPath:" + formPath + ",_userGuid:" +
+                    _userGuid);
             }
-            return ReturnDto<string>.QuickReturn(strMsg, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
-        }
 
+            return ReturnDto<string>.QuickReturn(strMsg, ReturnCode.Success,
+                "璇诲彇鎴愬姛锛�");
+        }
 
         #endregion
 
@@ -217,7 +283,9 @@
         {
             int? isAdmin = 0;
             System.Text.StringBuilder _sb = new System.Text.StringBuilder();
-            _sb.Append("select count(1) from [dbo].[SYS_USER] where GUID='" + _userGuid + "' and  IS_SYS=1");
+            // Uses SYS_USER.IS_SYS flag to decide if the caller has elevated privileges.
+            _sb.Append("select count(1) from [dbo].[SYS_USER] where GUID='" +
+                       _userGuid + "' and  IS_SYS=1");
             object _obj = Gs.Toolbox.DbHelperSQL.GetSingle(_sb.ToString());
             if (_obj == null)
             {
@@ -225,6 +293,7 @@
             }
             else
                 isAdmin = Gs.Toolbox.UtilityHelper.ToInt(_obj.ToString());
+
             return isAdmin;
         }
 
@@ -235,6 +304,7 @@
         /// </summary>
         /// <param name="model">keyType:1瀹℃牳锛�0鍙嶅鏍�</param>
         /// <returns></returns>
+        /// <remarks>Packages MES data into ERP payloads and posts them according to the requested operation.</remarks>
         [RequestMethod(RequestMethods.POST)]
         public string SendErp([FromBody] dynamic model)
         {
@@ -245,6 +315,7 @@
             //string keyChild = model.keyChild;浠诲姟瀛愯妭鐐瑰悕
             //string keyMeth = model.keyMeth;鏂规硶鍚�
             //string keyNo = model.keyNo;鍗曟嵁缂栧彿
+            //string keyUrl = model.keyUrl;鎺ュ彛鍦板潃
             int _rtnInt = 0;
             string _rtnStr = "";
             try
@@ -255,21 +326,34 @@
                 string keyUserGuid = model.keyUserGuid;
                 string keyGuid = model.keyGuid;
                 string keyNo = model.keyNo;
-                string idtype = model.idtype;//杩欎釜浠呬粎鏄洿鏂板伐鍗曠姸鎬佺殑鏃跺�欐湁
+                string idtype = model.idtype; //杩欎釜浠呬粎鏄洿鏂板伐鍗曠姸鎬佺殑鏃跺�欐湁
+                string keyUrl = model.keyUrl;
                 if (string.IsNullOrEmpty(idtype))
-                    (_rtnInt, _rtnStr) = InterfaceUtil.HttpPostErp(_erpJson, keyUserGuid, keyGuid, keyNo);
+                {
+                    // 甯歌鎺ュ彛锛氭寜鎿嶄綔绫诲瀷鎺ㄩ�佸崟鏉′笟鍔℃暟鎹��
+                    (_rtnInt, _rtnStr) = InterfaceUtil.HttpPostErp(_erpJson,
+                        keyUserGuid, keyGuid, keyNo, 0, keyUrl);
+                }
                 else
-                    (_rtnInt, _rtnStr) = InterfaceUtil.HttpPostErp(_erpJson, keyUserGuid, keyGuid, keyNo, 2);
+                {
+                    // 甯� idtype 鐨勮姹傜敤浜庣壒娈婃祦绋嬶紙濡傚叧闂�佸弽鍏抽棴锛夛紝ERP 闇�瑕侀澶栫殑鐘舵�佹爣璁般��
+                    (_rtnInt, _rtnStr) = InterfaceUtil.HttpPostErp(_erpJson,
+                        keyUserGuid, keyGuid, keyNo, 2, keyUrl);
+                }
             }
             catch (Exception ex)
             {
-                Gs.Toolbox.LogHelper.Debug(this.ToString(), "Fm SendErp:" + ex.Message);
+                // 璁板綍 ERP 鏁版嵁杞崲寮傚父锛屼究浜庡畾浣嶅瓨鍌ㄨ繃绋嬫垨搴忓垪鍖栭棶棰樸��
+                Gs.Toolbox.LogHelper.Debug(this.ToString(),
+                    "Fm SendErp:" + ex.Message);
                 return "鍙戦�乪rp澶辫触:" + ex.Message;
             }
+
             if (_rtnInt <= 0)
             {
                 return "鍙戦�乪rp澶辫触:" + _rtnStr;
             }
+
             return _rtnStr;
         }
 
@@ -287,18 +371,20 @@
             string keyChild = model.keyChild;
             string keyMeth = model.keyMeth;
             string keyNo = model.keyNo;
-            string idtype = model.idtype;//杩欎釜浠呬粎鏄洿鏂板伐鍗曠姸鎬佺殑鏃跺�欐湁
+            string idtype = model.idtype; //杩欎釜浠呬粎鏄洿鏂板伐鍗曠姸鎬佺殑鏃跺�欐湁
             if (keyMeth.ToUpper() == "delete".ToUpper())
+                // 鍒犻櫎鎿嶄綔鏃犻渶鍚� ERP 鎺ㄩ�佹暟鎹紝鍙渶杩斿洖绌轰覆銆�
                 return "";
             try
             {
                 System.Data.DataSet dset = new System.Data.DataSet();
                 SqlParameter[] parameters =
-                      {
-                       new("@inOrderGuid", keyGuid),
-                       new("@inEdtUserGuid", keyUserGuid),
-                       new("@keyMeth", keyMeth.ToLower()),
-                   };
+                {
+                    new("@inOrderGuid", keyGuid),
+                    new("@inEdtUserGuid", keyUserGuid),
+                    new("@keyMeth", keyMeth.ToLower()),
+                };
+                // 璋冪敤涓氬姟瀹氫箟鐨勫瓨鍌ㄨ繃绋嬶紝灏� MES 鏁版嵁鎵撳寘缁� ERP銆�
                 dset = DbHelperSQL.RunProcedure(keyProduce, parameters, "0");
                 if (dset == null)
                     return "";
@@ -309,50 +395,62 @@
                 //杩欐槸鏅�氱殑鎺ュ彛
                 if (string.IsNullOrEmpty(idtype))
                 {
+                    // 甯歌鍑哄弬锛氱涓�寮犺〃鏄富鏁版嵁锛岀浜屽紶琛紙鑻ュ瓨鍦級鏄瓙琛ㄩ泦鍚堛��
                     string _mesGuid = dset.Tables[0].Rows[0][0].ToString();
                     dynamic _datajson = new ExpandoObject();
                     if (dset.Tables.Count > 1)
                     {
+                        // 澶氳〃杩斿洖鏃讹紝闇�瑕佹妸瀛愯〃闆嗗悎鎸傚埌 datajson 涓��
                         //杩欐槸杩欐槸鏅�氱殑鎺ュ彛閲岀殑缁撴锛岀粨鏋勫拰鍏跺畠涓嶄竴鏍�
-                        if (keyMeth.ToLower() == "toclose".ToLower() || keyMeth.ToLower() == "closure".ToLower() || keyMeth.ToLower() == "unfinish")
+                        if (keyMeth.ToLower() == "toclose".ToLower() ||
+                            keyMeth.ToLower() == "closure".ToLower() ||
+                            keyMeth.ToLower() == "unfinish")
                         {
                             _datajson = dset.Tables[1].Rows[0].RowToDynamic();
                         }
                         else
                         {
                             _datajson = dset.Tables[0].Rows[0].RowToDynamic();
-                            List<dynamic> _lst = dset.Tables[1].TableToDynamicList();
-                            ((IDictionary<string, object>)_datajson)[keyChild] = _lst;
+                            List<dynamic> _lst =
+                                dset.Tables[1].TableToDynamicList();
+                            ((IDictionary<string, object>)_datajson)[keyChild] =
+                                _lst;
                         }
                     }
-                    var _obj = new
-                    {
-                        mesid = _mesGuid,
-                        taskname = keyTaskName,
-                        optype = keyMeth,
-                        datajson = JsonConvert.SerializeObject(_datajson),
-                    };
-                    return JsonConvert.SerializeObject(_obj);
+
+                    // var _obj = new
+                    // {
+                    //     mesid = _mesGuid,
+                    //     taskname = keyTaskName,
+                    //     optype = keyMeth,
+                    //     datajson = JsonConvert.SerializeObject(_datajson),
+                    // };
+                    // return JsonConvert.SerializeObject(_obj);
+                    return JsonConvert.SerializeObject(_datajson);
                 }
+
                 //杩欐槸璁㈠崟鍥炰紶鏍囪瘑
                 List<dynamic> _datajson22 = new List<dynamic>();
                 dynamic _ob = new ExpandoObject();
                 _ob.ENTRY = dset.Tables[0].TableToDynamicList();
                 _datajson22.Add(_ob);
-                var _obj22 = new
-                {
-                    taskname = keyTaskName,
-                    idtype = idtype,
-                    datajson = JsonConvert.SerializeObject(_datajson22),
-                };
-                return JsonConvert.SerializeObject(_obj22);
+                // var _obj22 = new
+                // {
+                //     taskname = keyTaskName,
+                //     idtype = idtype,
+                //     datajson = JsonConvert.SerializeObject(_datajson22),
+                // };
+                // return JsonConvert.SerializeObject(_obj22);
+                return JsonConvert.SerializeObject(_datajson22);
             }
             catch (Exception ex)
             {
+                // 璁板綍 ERP 鏁版嵁杞崲寮傚父锛屼究浜庡畾浣嶅瓨鍌ㄨ繃绋嬫垨搴忓垪鍖栭棶棰樸��
                 Gs.Toolbox.LogHelper.Debug(this.ToString(), ex.Message);
                 throw ex;
             }
         }
+
         #endregion
 
 
@@ -377,15 +475,17 @@
             foreach (var _obj in model.list)
             {
                 var _line =
-                     _obj.colName + _split
-                    + _obj.colCap + _split
-                   ;
+                        _obj.colName + _split
+                                     + _obj.colCap + _split
+                    ;
                 if (_sb.Length > 0)
                     _sb.Append("~");
                 _sb.Append(_line);
             }
+
             ;
             var lst = new List<dynamic>();
+            // 灏嗗垪鍚嶅拰鏄剧ず鏍囬鎷兼垚 "~" 鍒嗛殧鐨勫弬鏁帮紝浼犵粰瀛樺偍杩囩▼鐢熸垚鏌ヨ閰嶇疆銆�
             SqlParameter[] parameters =
             {
                 new("@formPath", formPath),
@@ -394,7 +494,9 @@
             var dset = new DataSet();
             try
             {
-                dset = DbHelperSQL.RunProcedure("[fm_set_query]", parameters, "0");
+                // fm_set_query 浼氳繑鍥炴煡璇㈡潯浠躲�佺粨鏋滃瓧娈点�佹帓搴忕瓑澶氬紶閰嶇疆琛ㄣ��
+                dset = DbHelperSQL.RunProcedure("[fm_set_query]", parameters,
+                    "0");
                 if (dset != null && dset.Tables.Count > 0)
                 {
                     m.list = dset.Tables[0].TableToDynamicList();
@@ -405,9 +507,12 @@
             }
             catch (Exception ex)
             {
+                // 璁板綍 ERP 鏁版嵁杞崲寮傚父锛屼究浜庡畾浣嶅瓨鍌ㄨ繃绋嬫垨搴忓垪鍖栭棶棰樸��
                 LogHelper.Debug(ToString(), ex.Message);
             }
-            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "璇诲彇鎴愬姛锛�");
+
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
+                "璇诲彇鎴愬姛锛�");
         }
 
         /// <summary>
@@ -429,33 +534,51 @@
                 isAdmin = chkAdmin();
                 if (isAdmin <= 0)
                 {
+                    // Query configuration is restricted to administrators to protect shared metadata.
                     m.outMsg = "浣犱笉鏄鐞嗗憳锛屾搷浣滃け璐ワ紒";
-                    return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "鎿嶄綔鎴愬姛锛�");
+                    return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
+                        "鎿嶄綔鎴愬姛锛�");
                 }
             }
             catch (Exception ex)
             {
-                Gs.Toolbox.LogHelper.Debug(this.ToString(), "EditModel isAdmin error锛�" + ex.Message);
+                // 璁板綍 ERP 鏁版嵁杞崲寮傚父锛屼究浜庡畾浣嶅瓨鍌ㄨ繃绋嬫垨搴忓垪鍖栭棶棰樸��
+                Gs.Toolbox.LogHelper.Debug(this.ToString(),
+                    "EditModel isAdmin error锛�" + ex.Message);
             }
+
             try
             {
-                Gs.Toolbox.DbHelperSQL.ExecuteSql("delete from [FM_QUERY_TABLE] where formPath=@formPath ", new SqlParameter[] { new SqlParameter("@formPath", formPath) });
+                // 鍏堟竻绌哄師鏈夋煡璇㈡潵婧愯〃锛屽啀鎵归噺鎻掑叆鏈�鏂伴厤缃��
+                Gs.Toolbox.DbHelperSQL.ExecuteSql(
+                    "delete from [FM_QUERY_TABLE] where formPath=@formPath ",
+                    new SqlParameter[]
+                        { new SqlParameter("@formPath", formPath) });
                 foreach (var _obj in model.list)
                 {
-                    System.Text.StringBuilder _sb = new System.Text.StringBuilder();
-                    _sb.Append("INSERT INTO [dbo].[FM_QUERY_TABLE]([guid],[formPath] ,[tableName] ,[lastUpdateBy] ,[lastUpdateDate],[tableOtherName])");
-                    _sb.Append(" values(newid(),'" + formPath + "','" + _obj.tableName + "','',getdate(),'" + _obj.tableOtherName + "')");
+                    System.Text.StringBuilder _sb =
+                        new System.Text.StringBuilder();
+                    _sb.Append(
+                        "INSERT INTO [dbo].[FM_QUERY_TABLE]([guid],[formPath] ,[tableName] ,[lastUpdateBy] ,[lastUpdateDate],[tableOtherName])");
+                    _sb.Append(" values(newid(),'" + formPath + "','" +
+                               _obj.tableName + "','',getdate(),'" +
+                               _obj.tableOtherName + "')");
                     arrayList.Add(_sb.ToString());
                 }
+
                 Gs.Toolbox.DbHelperSQL.ExecuteSqlTran(arrayList);
             }
             catch (Exception ex)
             {
+                // 鎹曡幏淇濆瓨鏌ヨ閰嶇疆鏃剁殑寮傚父锛屽苟灏嗕俊鎭繑鍥炵粰鍓嶇銆�
                 m.outMsg = ex.Message;
-                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, ex.Message);
+                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
+                    ex.Message);
             }
+
             m.outMsg = "鎿嶄綔鎴愬姛锛�";
-            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "鎿嶄綔鎴愬姛锛�");
+            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
+                "鎿嶄綔鎴愬姛锛�");
         }
 
         /// <summary>
@@ -473,20 +596,31 @@
                 isAdmin = chkAdmin();
                 if (isAdmin <= 0)
                 {
-                    return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Default, "浣犱笉鏄鐞嗗憳锛屾搷浣滃け璐ワ紒");
+                    // 鍒犻櫎鏌ヨ閰嶇疆鍚屾牱闇�瑕佺鐞嗗憳鏉冮檺銆�
+                    return ReturnDto<int>.QuickReturn(rtnInt,
+                        ReturnCode.Default, "浣犱笉鏄鐞嗗憳锛屾搷浣滃け璐ワ紒");
                 }
             }
             catch (Exception ex)
             {
-                Gs.Toolbox.LogHelper.Debug(this.ToString(), "EditModel isAdmin error锛�" + ex.Message);
+                // 璁板綍 ERP 鏁版嵁杞崲寮傚父锛屼究浜庡畾浣嶅瓨鍌ㄨ繃绋嬫垨搴忓垪鍖栭棶棰樸��
+                Gs.Toolbox.LogHelper.Debug(this.ToString(),
+                    "EditModel isAdmin error锛�" + ex.Message);
             }
+
             Guid? guid = model.guid;
-            System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();
-            stringBuilder.Append("delete from FM_QUERY_TABLE where guid='" + guid + "'");
-            rtnInt = Gs.Toolbox.DbHelperSQL.ExecuteSql(stringBuilder.ToString());
+            System.Text.StringBuilder stringBuilder =
+                new System.Text.StringBuilder();
+            // 閲囩敤 GUID 绮剧‘鍒犻櫎鎸囧畾鐨勬煡璇㈡暟鎹簮璁板綍銆�
+            stringBuilder.Append("delete from FM_QUERY_TABLE where guid='" +
+                                 guid + "'");
+            rtnInt =
+                Gs.Toolbox.DbHelperSQL.ExecuteSql(stringBuilder.ToString());
             if (rtnInt <= 0)
-                return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, "鎿嶄綔澶辫触锛�");
-            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, "鎿嶄綔鎴愬姛锛�");
+                return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception,
+                    "鎿嶄綔澶辫触锛�");
+            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success,
+                "鎿嶄綔鎴愬姛锛�");
         }
 
         /// <summary>
@@ -504,27 +638,43 @@
                 isAdmin = chkAdmin();
                 if (isAdmin <= 0)
                 {
-                    return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Default, "浣犱笉鏄鐞嗗憳锛屾搷浣滃け璐ワ紒");
+                    // 鍙湁绠$悊鍛樻墠鑳借皟鏁存煡璇㈠垪瀛楁鏄犲皠銆�
+                    return ReturnDto<int>.QuickReturn(rtnInt,
+                        ReturnCode.Default, "浣犱笉鏄鐞嗗憳锛屾搷浣滃け璐ワ紒");
                 }
             }
             catch (Exception ex)
             {
-                Gs.Toolbox.LogHelper.Debug(this.ToString(), "EditModel isAdmin error锛�" + ex.Message);
+                // 璁板綍 ERP 鏁版嵁杞崲寮傚父锛屼究浜庡畾浣嶅瓨鍌ㄨ繃绋嬫垨搴忓垪鍖栭棶棰樸��
+                Gs.Toolbox.LogHelper.Debug(this.ToString(),
+                    "EditModel isAdmin error锛�" + ex.Message);
             }
+
             Guid? guid = model.guid;
             string sqlField = model.sqlField;
             string sqlFieldType = model.sqlFieldType;
             string fType = model.fType;
-            System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();
+            System.Text.StringBuilder stringBuilder =
+                new System.Text.StringBuilder();
             if (fType == "1")
-                stringBuilder.Append("update  FM_QUERY set sqlFieldType='" + sqlFieldType + "', lastUpdateDate=getdate() where guid='" + guid + "'");
+                stringBuilder.Append("update  FM_QUERY set sqlFieldType='" +
+                                     sqlFieldType +
+                                     "', lastUpdateDate=getdate() where guid='" +
+                                     guid + "'");
             else
-                stringBuilder.Append("update  FM_QUERY set sqlField='" + sqlField + "', lastUpdateDate=getdate() where guid='" + guid + "'");
-            rtnInt = Gs.Toolbox.DbHelperSQL.ExecuteSql(stringBuilder.ToString());
+                stringBuilder.Append("update  FM_QUERY set sqlField='" +
+                                     sqlField +
+                                     "', lastUpdateDate=getdate() where guid='" +
+                                     guid + "'");
+            rtnInt =
+                Gs.Toolbox.DbHelperSQL.ExecuteSql(stringBuilder.ToString());
             if (rtnInt <= 0)
-                return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, "鎿嶄綔鎴愬姛锛�");
-            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, "鎿嶄綔澶辫触锛�");
+                return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception,
+                    "鎿嶄綔鎴愬姛锛�");
+            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success,
+                "鎿嶄綔澶辫触锛�");
         }
+
         #endregion
     }
-}
+}
\ No newline at end of file

--
Gitblit v1.9.3