啊鑫
2025-09-09 f2b71fe1d3c2b7651d525a5b5bbe66fad602ea06
WebApi/Gs.Sys/Services/FmController.cs
@@ -2,6 +2,7 @@
using 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;
@@ -12,416 +13,55 @@
using Newtonsoft.Json.Linq;
using static Gs.Toolbox.UtilityHelper;
namespace Gs.Sys.Services
namespace Gs.Sys.Services;
[ApiGroup(ApiGroupNames.FM)]
public class FmController : IRomteService
{
    private readonly IHttpContextAccessor _http;
    private readonly string _userCode, _userGuid, _orgFids;
    [ApiGroup(ApiGroupNames.FM)]
    public class FmController : IRomteService
    public FmController(IHttpContextAccessor httpContextAccessor)
    {
        private readonly IHttpContextAccessor _http;
        private readonly string _userCode, _userGuid, _orgFids;
        _http = httpContextAccessor;
        (_userCode, _userGuid, _orgFids) =
            GetUserGuidAndOrgGuid(_http);
    }
        public FmController(IHttpContextAccessor httpContextAccessor)
    private int? chkAdmin()
    {
        int? isAdmin = 0;
        var _sb = new StringBuilder();
        _sb.Append("select count(1) from [dbo].[SYS_USER] where GUID='" +
                   _userGuid + "' and  IS_SYS=1");
        var _obj = DbHelperSQL.GetSingle(_sb.ToString());
        if (_obj == null)
            isAdmin = 0;
        else
            isAdmin = ToInt(_obj.ToString());
        return isAdmin;
    }
    #region 版面
    /// <summary>
    ///     增加
    /// </summary>
    /// <param name="model"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model)
    {
        var applyUserGuid = "";
        string formPath = model.formPath;
        int intType = model.intType;
        dynamic m = new ExpandoObject();
        m.outMsg = "";
        var SQLStringList = new Hashtable();
        var _groupGuid = Guid.NewGuid().ToString();
        //只有超级管理员权限
        if (intType == 1 || intType == 3)
        {
            _http = httpContextAccessor;
            (_userCode, _userGuid, _orgFids) =
                GetUserGuidAndOrgGuid(_http);
        }
        #region 版面
        /// <summary>
        ///     增加
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [RequestMethod(RequestMethods.POST)]
        public ReturnDto<ExpandoObject> EditModel([FromBody] dynamic model)
        {
            string applyUserGuid = "";
            string formPath = model.formPath;
            int intType = model.intType;
            dynamic m = new ExpandoObject();
            m.outMsg = "";
            Hashtable SQLStringList = new Hashtable();
            string _groupGuid = Guid.NewGuid().ToString();
            //只有超级管理员权限
            if (intType == 1 || intType == 3)
            {
                int? isAdmin = 0;
                try
                {
                    isAdmin = chkAdmin();
                    if (isAdmin <= 0)
                    {
                        m.outMsg = "你不是管理员,操作失败!";
                        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "操作成功!");
                    }
                }
                catch (Exception ex)
                {
                    Gs.Toolbox.LogHelper.Debug(this.ToString(), "EditModel isAdmin error:" + ex.Message);
                }
            }
            //保存标准版
            if (intType == 1)
            {
                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) });
                // 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)
            {
                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) });
                //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)
            {
                applyUserGuid = null;
                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, "操作成功!");
            }
            //清空个人版本
            if (intType == 4)
            {
                applyUserGuid = _userGuid;
                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, "操作成功!");
            }
            //这是所有的gridview,lay xml
            JArray jArray = model.xmlList;
            try
            {
                foreach (var jsonitem in jArray)
                {
                    JObject job = (JObject)jsonitem;
                    if (job["idName"] != null)
                    {
                        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)
                        });
                    }
                }
                Gs.Toolbox.DbHelperSQL.ExecuteSqlTranRtn(SQLStringList);
                m.outMsg = "保存" + (intType == 1 ? "标准版" : "个人版") + "配置成功!";
                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "操作成功!");
            }
            catch (Exception ex)
            {
                m.outMsg = "操作失败:" + ex.Message;
                Gs.Toolbox.LogHelper.Debug(this.ToString(), "EditModel error:" + ex.Message);
            }
            //这是所有的
            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "操作成功!");
        }
        /// <summary>
        ///     读取
        /// </summary>
        /// <param name="guid"></param>
        /// <returns></returns>
        [RequestMethod(RequestMethods.POST)]
        public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
        {
            string formPath = model.formPath.ToString();
            dynamic m = new ExpandoObject();
            m.list = new List<dynamic>();
            m.list2 = new List<dynamic>();
            SqlParameter[] parameters =
            {
                new("@formPath", formPath),
                new("@userGuid", _userGuid),
            };
            var dset = new DataSet();
            try
            {
                dset = DbHelperSQL.RunProcedure("[fm_get_layout]", parameters, "0");
                if (dset != null && dset.Tables.Count > 0
                 )
                {
                    var _tb = dset.Tables[0].TableToDynamicList();
                    m.list = _tb;
                    var _tb2 = dset.Tables[1].TableToDynamicList();
                    m.list2 = _tb2;
                }
            }
            catch (Exception ex)
            {
                LogHelper.Debug(ToString(), ex.Message);
            }
            if (m != null)
                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
                    "读取成功!");
            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
                "读取失败!");
        }
        /// <summary>
        ///     读取
        /// </summary>
        /// <param name="guid"></param>
        /// <returns></returns>
        [RequestMethod(RequestMethods.POST)]
        public ReturnDto<string> GetModelByVersion([FromBody] dynamic model)
        {
            string formPath = model.formPath.ToString();
            string strMsg = "";
            SqlParameter[] parameters =
            {
                new("@formPath", formPath),
                new("@userGuid", _userGuid),
            };
            var dset = new DataSet();
            try
            {
                dset = DbHelperSQL.RunProcedure("[fm_get_layout_ver]", parameters, "0");
                if (dset != null && dset.Tables.Count > 0
                 )
                {
                    strMsg = dset.Tables[0].Rows[0][0].ToString();
                }
            }
            catch (Exception ex)
            {
                LogHelper.Debug(ToString(), ex.Message);
            }
            return ReturnDto<string>.QuickReturn(strMsg, ReturnCode.Success, "读取成功!");
        }
        #endregion
        private int? chkAdmin()
        {
            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");
            object _obj = Gs.Toolbox.DbHelperSQL.GetSingle(_sb.ToString());
            if (_obj == null)
            {
                isAdmin = 0;
            }
            else
                isAdmin = Gs.Toolbox.UtilityHelper.ToInt(_obj.ToString());
            return isAdmin;
        }
        #region 发送erp新版本
        /// <summary>
        ///
        /// </summary>
        /// <param name="model">keyType:1审核,0反审核</param>
        /// <returns></returns>
        [RequestMethod(RequestMethods.POST)]
        public string SendErp([FromBody] dynamic model)
        {
            //string keyGuid = model.keyGuid; 原生主键
            //string keyUserGuid = model.keyUserGuid;操作用户
            //string keyProduce = model.keyProduce;存储过程名
            //string keyTaskName = model.keyTaskName;任务名
            //string keyChild = model.keyChild;任务子节点名
            //string keyMeth = model.keyMeth;方法名
            //string keyNo = model.keyNo;单据编号
            int _rtnInt = 0;
            string _rtnStr = "";
            try
            {
                string _erpJson = GetErpParam(model);
                if (_erpJson.Length <= 0)
                    return "-1读取erp参数失败!";
                string keyUserGuid = model.keyUserGuid;
                string keyGuid = model.keyGuid;
                string keyNo = model.keyNo;
                string idtype = model.idtype;//这个仅仅是更新工单状态的时候有
                if (string.IsNullOrEmpty(idtype))
                    (_rtnInt, _rtnStr) = InterfaceUtil.HttpPostErp(_erpJson, keyUserGuid, keyGuid, keyNo);
                else
                    (_rtnInt, _rtnStr) = InterfaceUtil.HttpPostErp(_erpJson, keyUserGuid, keyGuid, keyNo, 2);
            }
            catch (Exception ex)
            {
                Gs.Toolbox.LogHelper.Debug(this.ToString(), "Fm SendErp:" + ex.Message);
                return "发送erp失败:" + ex.Message;
            }
            if (_rtnInt <= 0)
            {
                return "发送erp失败:" + _rtnStr;
            }
            return _rtnStr;
        }
        /// <summary>
        /// 构建erp参数
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        private string GetErpParam(dynamic model)
        {
            string keyGuid = model.keyGuid;
            string keyUserGuid = model.keyUserGuid;
            string keyProduce = model.keyProduce;
            string keyTaskName = model.keyTaskName;
            string keyChild = model.keyChild;
            string keyMeth = model.keyMeth;
            string keyNo = model.keyNo;
            string idtype = model.idtype;//这个仅仅是更新工单状态的时候有
            if (keyMeth.ToUpper() == "delete".ToUpper())
                return "";
            try
            {
                System.Data.DataSet dset = new System.Data.DataSet();
                SqlParameter[] parameters =
                      {
                       new("@inOrderGuid", keyGuid),
                       new("@inEdtUserGuid", keyUserGuid),
                       new("@keyMeth", keyMeth.ToLower()),
                   };
                dset = DbHelperSQL.RunProcedure(keyProduce, parameters, "0");
                if (dset == null)
                    return "";
                if (dset.Tables.Count <= 0)
                    return "";
                if (dset.Tables[0].Rows.Count <= 0)
                    return "";
                //这是普通的接口
                if (string.IsNullOrEmpty(idtype))
                {
                    string _mesGuid = dset.Tables[0].Rows[0][0].ToString();
                    dynamic _datajson = new ExpandoObject();
                    if (dset.Tables.Count > 1)
                    {
                        //这是这是普通的接口里的结案,结构和其它不一样
                        if (keyMeth.ToLower() == "toclose".ToLower() || keyMeth.ToLower() == "closure".ToLower() || keyMeth.ToLower() == "unfinish")
                        {
                            _datajson = dset.Tables[1].Rows[0].RowToDynamic();
                        }
                        else
                        {
                            _datajson = dset.Tables[0].Rows[0].RowToDynamic();
                            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);
                }
                //这是订单回传标识
                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);
            }
            catch (Exception ex)
            {
                Gs.Toolbox.LogHelper.Debug(this.ToString(), ex.Message);
                throw ex;
            }
        }
        #endregion
        #region 查询
        /// <summary>
        /// 读取
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [RequestMethod(RequestMethods.POST)]
        public ReturnDto<ExpandoObject> GetQuery([FromBody] dynamic model)
        {
            dynamic m = new ExpandoObject();
            m.list = new List<dynamic>();
            m.list2 = new List<dynamic>();
            m.list3 = new List<dynamic>();
            m.list4 = new List<dynamic>();
            var _split = "|";
            string formPath = model.formPath.ToString();
            System.Text.StringBuilder _sb = new System.Text.StringBuilder();
            foreach (var _obj in model.list)
            {
                var _line =
                     _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),
                new("@colArray", _sb.ToString()),
            };
            var dset = new DataSet();
            try
            {
                dset = DbHelperSQL.RunProcedure("[fm_set_query]", parameters, "0");
                if (dset != null && dset.Tables.Count > 0)
                {
                    m.list = dset.Tables[0].TableToDynamicList();
                    m.list2 = dset.Tables[1].TableToDynamicList();
                    m.list3 = dset.Tables[2].TableToDynamicList();
                    m.list4 = dset.Tables[3].TableToDynamicList();
                }
            }
            catch (Exception ex)
            {
                LogHelper.Debug(ToString(), ex.Message);
            }
            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "读取成功!");
        }
        /// <summary>
        /// 编辑表
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [RequestMethod(RequestMethods.POST)]
        public ReturnDto<ExpandoObject> EditQuery([FromBody] dynamic model)
        {
            dynamic m = new ExpandoObject();
            m.outMsg = "";
            string formPath = model.formPath;
            ArrayList arrayList = new ArrayList();
            string _groupGuid = Guid.NewGuid().ToString();
            int? isAdmin = 0;
            try
            {
@@ -429,101 +69,525 @@
                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);
                LogHelper.Debug(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) });
                foreach (var _obj in model.list)
                {
                    System.Text.StringBuilder _sb = new System.Text.StringBuilder();
                    _sb.Append("INSERT INTO [dbo].[FM_QUERY_TABLE]([guid],[formPath] ,[tableName] ,[lastUpdateBy] ,[lastUpdateDate],[tableOtherName])");
                    _sb.Append(" values(newid(),'" + formPath + "','" + _obj.tableName + "','',getdate(),'" + _obj.tableOtherName + "')");
                    arrayList.Add(_sb.ToString());
                }
                Gs.Toolbox.DbHelperSQL.ExecuteSqlTran(arrayList);
            }
            catch (Exception ex)
            {
                m.outMsg = ex.Message;
                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, ex.Message);
            }
            m.outMsg = "操作成功!";
            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "操作成功!");
        }
        /// <summary>
        ///   删除表
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [RequestMethod(RequestMethods.POST)]
        public ReturnDto<int?> DeleteQuery([FromBody] dynamic model)
        //保存标准版
        if (intType == 1)
        {
            int? rtnInt = (int)ReturnCode.Default;
            int? isAdmin = 0;
            try
            {
                isAdmin = chkAdmin();
                if (isAdmin <= 0)
                {
                    return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Default, "你不是管理员,操作失败!");
                }
            }
            catch (Exception ex)
            {
                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());
            if (rtnInt <= 0)
                return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, "操作失败!");
            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, "操作成功!");
            applyUserGuid = null;
            DbHelperSQL.ExecuteSql(
                "delete from [FM_LAYOUT] where groupGuid<>'" + _groupGuid +
                "' and [formPath]=@formPath and applyUserGuid is null",
                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) });
        }
        /// <summary>
        ///   编辑列
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        [RequestMethod(RequestMethods.POST)]
        public ReturnDto<int?> EditCol([FromBody] dynamic model)
        //保存个人版本
        if (intType == 2)
        {
            int? rtnInt = (int)ReturnCode.Default;
            int? isAdmin = 0;
            try
            {
                isAdmin = chkAdmin();
                if (isAdmin <= 0)
            applyUserGuid = _userGuid;
            DbHelperSQL.ExecuteSql(
                "delete from [FM_LAYOUT] where  groupGuid<>'" + _groupGuid +
                "' and [formPath]=@formPath and applyUserGuid =@applyUserGuid",
                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)
        {
            applyUserGuid = null;
            SQLStringList.Add(
                "delete from [FM_LAYOUT] where [formPath]=@formPath and applyUserGuid is null",
                new[] { new SqlParameter("@formPath", formPath) });
            DbHelperSQL.ExecuteSqlTranRtn(SQLStringList);
            m.outMsg = "清空标准版配置成功!";
            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
                "操作成功!");
        }
        //清空个人版本
        if (intType == 4)
        {
            applyUserGuid = _userGuid;
            SQLStringList.Add(
                "delete from [FM_LAYOUT] where [formPath]=@formPath and applyUserGuid =@applyUserGuid",
                new[]
                {
                    return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Default, "你不是管理员,操作失败!");
                    new SqlParameter("@formPath", formPath),
                    new SqlParameter("@applyUserGuid", applyUserGuid)
                });
            DbHelperSQL.ExecuteSqlTranRtn(SQLStringList);
            m.outMsg = "清空个人版配置成功!";
            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
                "操作成功!");
        }
        //这是所有的gridview,lay xml
        JArray jArray = model.xmlList;
        try
        {
            foreach (var jsonitem in jArray)
            {
                var job = (JObject)jsonitem;
                if (job["idName"] != null)
                {
                    var idName = job["idName"].ToString();
                    var idXml = job["idXml"].ToString();
                    var idType = job["idType"].ToString();
                    var _splitterPosition = job["splitterPosition"].ToString();
                    var splitterPosition =
                        string.IsNullOrEmpty(_splitterPosition)
                            ? "0"
                            : _splitterPosition;
                    var _sql = new 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[]
                    {
                        new SqlParameter("@formPath", formPath),
                        new SqlParameter("@controlId", idName),
                        new SqlParameter("@controlHeight", "0"),
                        new SqlParameter("@lastUpdateBy", _userCode),
                        new SqlParameter("@applyUserGuid", applyUserGuid),
                        new SqlParameter("@controlXml", idXml)
                    });
                }
            }
            catch (Exception ex)
            {
                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();
            if (fType == "1")
                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());
            if (rtnInt <= 0)
                return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception, "操作成功!");
            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, "操作失败!");
            DbHelperSQL.ExecuteSqlTranRtn(SQLStringList);
            m.outMsg = "保存" + (intType == 1 ? "标准版" : "个人版") + "配置成功!";
            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
                "操作成功!");
        }
        #endregion
        catch (Exception ex)
        {
            m.outMsg = "操作失败:" + ex.Message;
            LogHelper.Debug(ToString(), "EditModel error:" + ex.Message);
        }
        //这是所有的
        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "操作成功!");
    }
}
    /// <summary>
    ///     读取
    /// </summary>
    /// <param name="guid"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<ExpandoObject> GetModel([FromBody] dynamic model)
    {
        string formPath = model.formPath.ToString();
        dynamic m = new ExpandoObject();
        m.list = new List<dynamic>();
        m.list2 = new List<dynamic>();
        SqlParameter[] parameters =
        {
            new("@formPath", formPath),
            new("@userGuid", _userGuid)
        };
        var dset = new DataSet();
        try
        {
            dset = DbHelperSQL.RunProcedure("[fm_get_layout]", parameters, "0");
            if (dset != null && dset.Tables.Count > 0
               )
            {
                var _tb = dset.Tables[0].TableToDynamicList();
                m.list = _tb;
                var _tb2 = dset.Tables[1].TableToDynamicList();
                m.list2 = _tb2;
            }
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), ex.Message);
        }
        if (m != null)
            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
                "读取成功!");
        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
            "读取失败!");
    }
    /// <summary>
    ///     读取
    /// </summary>
    /// <param name="guid"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<string> GetModelByVersion([FromBody] dynamic model)
    {
        string formPath = model.formPath.ToString();
        var strMsg = "";
        SqlParameter[] parameters =
        {
            new("@formPath", formPath),
            new("@userGuid", _userGuid)
        };
        var dset = new DataSet();
        try
        {
            dset = DbHelperSQL.RunProcedure("[fm_get_layout_ver]", parameters,
                "0");
            if (dset != null && dset.Tables.Count > 0
               )
                strMsg = dset.Tables[0].Rows[0][0].ToString();
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), ex.Message);
        }
        return ReturnDto<string>.QuickReturn(strMsg, ReturnCode.Success,
            "读取成功!");
    }
    #endregion
    #region 发送erp新版本
    /// <summary>
    /// </summary>
    /// <param name="model">keyType:1审核,0反审核</param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public string SendErp([FromBody] dynamic model)
    {
        //string keyGuid = model.keyGuid; 原生主键
        //string keyUserGuid = model.keyUserGuid;操作用户
        //string keyProduce = model.keyProduce;存储过程名
        //string keyTaskName = model.keyTaskName;任务名
        //string keyChild = model.keyChild;任务子节点名
        //string keyMeth = model.keyMeth;方法名
        //string keyNo = model.keyNo;单据编号
        var _rtnInt = 0;
        var _rtnStr = "";
        try
        {
            string _erpJson = GetErpParam(model);
            if (_erpJson.Length <= 0)
                return "-1读取erp参数失败!";
            string keyUserGuid = model.keyUserGuid;
            string keyGuid = model.keyGuid;
            string keyNo = model.keyNo;
            string idtype = model.idtype; //这个仅仅是更新工单状态的时候有
            if (string.IsNullOrEmpty(idtype))
                (_rtnInt, _rtnStr) = InterfaceUtil.HttpPostErp(_erpJson,
                    keyUserGuid, keyGuid, keyNo);
            else
                (_rtnInt, _rtnStr) = InterfaceUtil.HttpPostErp(_erpJson,
                    keyUserGuid, keyGuid, keyNo, 2);
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), "Fm SendErp:" + ex.Message);
            return "发送erp失败:" + ex.Message;
        }
        if (_rtnInt <= 0) return "发送erp失败:" + _rtnStr;
        return _rtnStr;
    }
    /// <summary>
    ///     构建erp参数
    /// </summary>
    /// <param name="model"></param>
    /// <returns></returns>
    private string GetErpParam(dynamic model)
    {
        string keyGuid = model.keyGuid;
        string keyUserGuid = model.keyUserGuid;
        string keyProduce = model.keyProduce;
        string keyTaskName = model.keyTaskName;
        string keyChild = model.keyChild;
        string keyMeth = model.keyMeth;
        string keyNo = model.keyNo;
        string idtype = model.idtype; //这个仅仅是更新工单状态的时候有
        if (keyMeth.ToUpper() == "delete".ToUpper())
            return "";
        try
        {
            var dset = new DataSet();
            SqlParameter[] parameters =
            {
                new("@inOrderGuid", keyGuid),
                new("@inEdtUserGuid", keyUserGuid),
                new("@keyMeth", keyMeth.ToLower())
            };
            dset = DbHelperSQL.RunProcedure(keyProduce, parameters, "0");
            if (dset == null)
                return "";
            if (dset.Tables.Count <= 0)
                return "";
            if (dset.Tables[0].Rows.Count <= 0)
                return "";
            //这是普通的接口
            if (string.IsNullOrEmpty(idtype))
            {
                var _mesGuid = dset.Tables[0].Rows[0][0].ToString();
                dynamic _datajson = new ExpandoObject();
                if (dset.Tables.Count > 1)
                {
                    //这是这是普通的接口里的结案,结构和其它不一样
                    if (keyMeth.ToLower() == "toclose".ToLower() ||
                        keyMeth.ToLower() == "closure".ToLower() ||
                        keyMeth.ToLower() == "unfinish")
                    {
                        _datajson = dset.Tables[1].Rows[0].RowToDynamic();
                    }
                    else
                    {
                        _datajson = dset.Tables[0].Rows[0].RowToDynamic();
                        var _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 _datajson22 = new List<dynamic>();
            dynamic _ob = new ExpandoObject();
            _ob.ENTRY = dset.Tables[0].TableToDynamicList();
            _datajson22.Add(_ob);
            var _obj22 = new
            {
                taskname = keyTaskName,
                idtype,
                datajson = JsonConvert.SerializeObject(_datajson22)
            };
            return JsonConvert.SerializeObject(_obj22);
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), ex.Message);
            throw ex;
        }
    }
    #endregion
    #region 查询
    /// <summary>
    ///     读取
    /// </summary>
    /// <param name="model"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<ExpandoObject> GetQuery([FromBody] dynamic model)
    {
        dynamic m = new ExpandoObject();
        m.list = new List<dynamic>();
        m.list2 = new List<dynamic>();
        m.list3 = new List<dynamic>();
        m.list4 = new List<dynamic>();
        var _split = "|";
        string formPath = model.formPath.ToString();
        var _sb = new StringBuilder();
        foreach (var _obj in model.list)
        {
            var _line =
                    _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),
            new("@colArray", _sb.ToString())
        };
        var dset = new DataSet();
        try
        {
            dset = DbHelperSQL.RunProcedure("[fm_set_query]", parameters, "0");
            if (dset != null && dset.Tables.Count > 0)
            {
                m.list = dset.Tables[0].TableToDynamicList();
                m.list2 = dset.Tables[1].TableToDynamicList();
                m.list3 = dset.Tables[2].TableToDynamicList();
                m.list4 = dset.Tables[3].TableToDynamicList();
            }
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(), ex.Message);
        }
        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success, "读取成功!");
    }
    /// <summary>
    ///     编辑表
    /// </summary>
    /// <param name="model"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<ExpandoObject> EditQuery([FromBody] dynamic model)
    {
        dynamic m = new ExpandoObject();
        m.outMsg = "";
        string formPath = model.formPath;
        var arrayList = new ArrayList();
        var _groupGuid = Guid.NewGuid().ToString();
        int? isAdmin = 0;
        try
        {
            isAdmin = chkAdmin();
            if (isAdmin <= 0)
            {
                m.outMsg = "你不是管理员,操作失败!";
                return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
                    "操作成功!");
            }
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(),
                "EditModel isAdmin error:" + ex.Message);
        }
        try
        {
            DbHelperSQL.ExecuteSql(
                "delete from [FM_QUERY_TABLE] where formPath=@formPath ",
                new SqlParameter("@formPath", formPath));
            foreach (var _obj in model.list)
            {
                var _sb = new 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());
            }
            DbHelperSQL.ExecuteSqlTran(arrayList);
        }
        catch (Exception ex)
        {
            m.outMsg = ex.Message;
            return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default,
                ex.Message);
        }
        m.outMsg = "操作成功!";
        return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Default, "操作成功!");
    }
    /// <summary>
    ///     删除表
    /// </summary>
    /// <param name="model"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<int?> DeleteQuery([FromBody] dynamic model)
    {
        int? rtnInt = (int)ReturnCode.Default;
        int? isAdmin = 0;
        try
        {
            isAdmin = chkAdmin();
            if (isAdmin <= 0)
                return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Default,
                    "你不是管理员,操作失败!");
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(),
                "EditModel isAdmin error:" + ex.Message);
        }
        Guid? guid = model.guid;
        var stringBuilder = new StringBuilder();
        stringBuilder.Append("delete from FM_QUERY_TABLE where guid='" + guid +
                             "'");
        rtnInt = DbHelperSQL.ExecuteSql(stringBuilder.ToString());
        if (rtnInt <= 0)
            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception,
                "操作失败!");
        return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, "操作成功!");
    }
    /// <summary>
    ///     编辑列
    /// </summary>
    /// <param name="model"></param>
    /// <returns></returns>
    [RequestMethod(RequestMethods.POST)]
    public ReturnDto<int?> EditCol([FromBody] dynamic model)
    {
        int? rtnInt = (int)ReturnCode.Default;
        int? isAdmin = 0;
        try
        {
            isAdmin = chkAdmin();
            if (isAdmin <= 0)
                return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Default,
                    "你不是管理员,操作失败!");
        }
        catch (Exception ex)
        {
            LogHelper.Debug(ToString(),
                "EditModel isAdmin error:" + ex.Message);
        }
        Guid? guid = model.guid;
        string sqlField = model.sqlField;
        string sqlFieldType = model.sqlFieldType;
        string fType = model.fType;
        var stringBuilder = new StringBuilder();
        if (fType == "1")
            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 = DbHelperSQL.ExecuteSql(stringBuilder.ToString());
        if (rtnInt <= 0)
            return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Exception,
                "操作成功!");
        return ReturnDto<int>.QuickReturn(rtnInt, ReturnCode.Success, "操作失败!");
    }
    #endregion
}