using System.Collections;
|
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;
|
using Gs.Toolbox.ApiCore.Group;
|
using Microsoft.AspNetCore.Http;
|
using Microsoft.AspNetCore.Mvc;
|
using Newtonsoft.Json;
|
using Newtonsoft.Json.Linq;
|
using static Gs.Toolbox.UtilityHelper;
|
|
namespace Gs.Sys.Services;
|
|
[ApiGroup(ApiGroupNames.FM)]
|
public class FmController : IRomteService
|
{
|
private readonly IHttpContextAccessor _http;
|
private readonly string _userCode, _userGuid, _orgFids;
|
|
public FmController(IHttpContextAccessor httpContextAccessor)
|
{
|
_http = httpContextAccessor;
|
(_userCode, _userGuid, _orgFids) =
|
GetUserGuidAndOrgGuid(_http);
|
}
|
|
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)
|
{
|
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);
|
}
|
}
|
|
//保存标准版
|
if (intType == 1)
|
{
|
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) });
|
}
|
|
//保存个人版本
|
if (intType == 2)
|
{
|
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[]
|
{
|
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)
|
});
|
}
|
}
|
|
DbHelperSQL.ExecuteSqlTranRtn(SQLStringList);
|
m.outMsg = "保存" + (intType == 1 ? "标准版" : "个人版") + "配置成功!";
|
return ReturnDto<dynamic>.QuickReturn(m, ReturnCode.Success,
|
"操作成功!");
|
}
|
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
|
}
|