276 lines
9.8 KiB
C#
276 lines
9.8 KiB
C#
using ClosedXML.Excel;
|
||
using IronPython.Hosting;
|
||
using Microsoft.AspNetCore.Authorization;
|
||
using Microsoft.AspNetCore.Http;
|
||
using Microsoft.AspNetCore.Http.HttpResults;
|
||
using Microsoft.AspNetCore.Mvc;
|
||
using Microsoft.EntityFrameworkCore;
|
||
using Microsoft.EntityFrameworkCore.Query.Internal;
|
||
using Microsoft.Extensions.Caching.Memory;
|
||
using MySqlConnector;
|
||
using NLog;
|
||
using System.Data;
|
||
using System.Text;
|
||
using ViewModels;
|
||
using WebAPIServer.Common;
|
||
using WebAPIServer.Models;
|
||
|
||
namespace WebAPIServer.Controllers
|
||
{
|
||
[Route("api/[controller]/[action]")]
|
||
[ApiController]
|
||
public class DataHandleController : ControllerBase
|
||
{
|
||
|
||
private readonly Logger _logger = LogManager.GetCurrentClassLogger();
|
||
public readonly IMemoryCache _memoryCache;
|
||
|
||
public DataHandleController(IMemoryCache memoryCache)
|
||
{
|
||
this._memoryCache = memoryCache;
|
||
}
|
||
[HttpPost()]
|
||
public string NNN()
|
||
{
|
||
return "hello";
|
||
}
|
||
[HttpPost()]
|
||
[Authorize()]
|
||
public ReturnInfo R_InfoCommon([FromBody] PageQueryData S)
|
||
{
|
||
ReturnInfo returnInfo = new ReturnInfo();
|
||
|
||
try
|
||
{
|
||
List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
|
||
|
||
string KKK = "";
|
||
if (S.DBQueryData.Count > 0)
|
||
{
|
||
KKK = string.Join('_', S.DBQueryData);
|
||
}
|
||
string NK = S.Key + S.CmdType??"" + KKK;
|
||
var ooo = _memoryCache.Get<List<Dictionary<string, object>>>(NK);
|
||
if (ooo != null)
|
||
{
|
||
list = ooo;
|
||
}
|
||
else
|
||
{
|
||
|
||
using (var q = new UtsManageContext())
|
||
{
|
||
using IDbConnection conn = q.Database.GetDbConnection();
|
||
|
||
if (conn.State != ConnectionState.Open)
|
||
{
|
||
conn.Open();
|
||
}
|
||
IDbCommand cmd = conn.CreateCommand();
|
||
string VariableName = S.Key;
|
||
string result = "";
|
||
if (S.isFunction)
|
||
{
|
||
if (S.FunParameters.Count == 1)
|
||
{
|
||
result = StaticData.scope.GetVariable(VariableName)(S.FunParameters[0]);
|
||
}
|
||
if (S.FunParameters.Count == 2)
|
||
{
|
||
result = StaticData.scope.GetVariable(VariableName)(S.FunParameters[0], S.FunParameters[1]);
|
||
}
|
||
if (S.FunParameters.Count == 3)
|
||
{
|
||
result = StaticData.scope.GetVariable(VariableName)(S.FunParameters[0], S.FunParameters[1], S.FunParameters[2]);
|
||
}
|
||
if (S.FunParameters.Count == 4)
|
||
{
|
||
result = StaticData.scope.GetVariable(VariableName)(S.FunParameters[0], S.FunParameters[1], S.FunParameters[2], S.FunParameters[3]);
|
||
}
|
||
if (S.FunParameters.Count == 5)
|
||
{
|
||
result = StaticData.scope.GetVariable(VariableName)(S.FunParameters[0], S.FunParameters[1], S.FunParameters[2], S.FunParameters[3], S.FunParameters[4]);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
result = StaticData.scope.GetVariable(VariableName);
|
||
}
|
||
var Q = S.DBQueryData;
|
||
if (S.CmdType.Equals("sys"))
|
||
{
|
||
foreach (var item in Q)
|
||
{
|
||
result = result.Replace(item.Key, item.Value);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
foreach (QueryString item in Q)
|
||
{
|
||
if (item.ValueType.Equals("string"))
|
||
{
|
||
MySqlParameter mmm = new MySqlParameter(item.Key, item.Value);
|
||
cmd.Parameters.Add(mmm);
|
||
}
|
||
else if (item.ValueType.Equals("number"))
|
||
{
|
||
decimal a = 0;
|
||
decimal.TryParse(item.Value, out a);
|
||
MySqlParameter mmm = new MySqlParameter(item.Key, a);
|
||
cmd.Parameters.Add(mmm);
|
||
}
|
||
}
|
||
}
|
||
|
||
cmd.CommandText = result;
|
||
|
||
|
||
cmd.CommandType = CommandType.Text;
|
||
|
||
MySqlCommand command = cmd as MySqlCommand;
|
||
MySqlDataAdapter adapter = new MySqlDataAdapter(command);
|
||
DataSet ds = new DataSet();
|
||
adapter.Fill(ds);
|
||
|
||
DataTable dt = ds.Tables[0];
|
||
|
||
//string str= System.Text.Json.JsonSerializer.Serialize(dt);
|
||
|
||
foreach (DataRow item in dt.Rows)
|
||
{
|
||
Dictionary<string, object> dic = new Dictionary<string, object>();
|
||
foreach (DataColumn item1 in dt.Columns)
|
||
{
|
||
string CName = item1.ColumnName;
|
||
dic.Add(CName, item[CName]);
|
||
}
|
||
list.Add(dic);
|
||
}
|
||
}
|
||
}
|
||
returnInfo.isok = true;
|
||
returnInfo.response = list;
|
||
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
returnInfo.isok = false;
|
||
returnInfo.message = ex.Message;
|
||
}
|
||
return returnInfo;
|
||
}
|
||
|
||
|
||
[HttpPost()]
|
||
[Authorize()]
|
||
public ReturnInfo CUD_InfoCommon([FromBody] PageQueryData S)
|
||
{
|
||
ReturnInfo returnInfo = new ReturnInfo();
|
||
|
||
try
|
||
{
|
||
using (var q = new UtsManageContext())
|
||
{
|
||
using IDbConnection conn = q.Database.GetDbConnection();
|
||
|
||
if (conn.State != ConnectionState.Open)
|
||
{
|
||
conn.Open();
|
||
}
|
||
IDbCommand cmd = conn.CreateCommand();
|
||
string VariableName = S.Key;
|
||
string result = "";
|
||
if (S.isFunction)
|
||
{
|
||
var LG = S.FunParameters;
|
||
result = StaticData.scope.GetVariable(VariableName)(S.FunParameters);
|
||
}
|
||
else
|
||
{
|
||
result = StaticData.scope.GetVariable(VariableName);
|
||
}
|
||
var Q = S.DBQueryData;
|
||
if (S.CmdType.Equals("sys"))
|
||
{
|
||
foreach (var item in Q)
|
||
{
|
||
result = result.Replace(item.Key, item.Value);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
foreach (QueryString item in Q)
|
||
{
|
||
if (item.ValueType.Equals("string"))
|
||
{
|
||
MySqlParameter mmm = new MySqlParameter(item.Key, item.Value);
|
||
cmd.Parameters.Add(mmm);
|
||
}
|
||
else if (item.ValueType.Equals("number"))
|
||
{
|
||
decimal a = 0;
|
||
decimal.TryParse(item.Value, out a);
|
||
MySqlParameter mmm = new MySqlParameter(item.Key, a);
|
||
cmd.Parameters.Add(mmm);
|
||
}
|
||
}
|
||
}
|
||
|
||
cmd.CommandText = result;
|
||
cmd.CommandType = CommandType.Text;
|
||
|
||
object ooo = cmd.ExecuteNonQuery();
|
||
returnInfo.response = ooo;
|
||
returnInfo.isok = true;
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
returnInfo.isok = false;
|
||
returnInfo.message = ex.Message;
|
||
}
|
||
return returnInfo;
|
||
}
|
||
|
||
[HttpPost()]
|
||
public ReturnInfo III([FromBody] PageQueryData S)
|
||
{
|
||
var NNN = S.FunParameters;
|
||
var result = StaticData.scope.GetVariable("a")(NNN);
|
||
return null;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
public record PageQueryData
|
||
{
|
||
public string Key { get; set; }
|
||
public bool isFunction { get; set; } = false;
|
||
|
||
/// <summary>
|
||
/// 参数,最多直接5个参数
|
||
/// </summary>
|
||
public List<string>? FunParameters { get; set; }
|
||
//sys
|
||
//customer
|
||
public string? CmdType { get; set; }
|
||
public List<QueryString>? DBQueryData { get; set; }
|
||
|
||
|
||
}
|
||
public class FunParameter
|
||
{
|
||
public string PKey { get; set; }
|
||
public string PValue { get; set; }
|
||
}
|
||
public record QueryString
|
||
{
|
||
public string Key { get; set; }
|
||
public string Value { get; set; }
|
||
public string ValueType { get; set; }
|
||
}
|
||
}
|