192 lines
7.6 KiB
C#
192 lines
7.6 KiB
C#
using APT.Infrastructure.Core;
|
||
using Microsoft.AspNetCore.Mvc;
|
||
using System.Collections.Generic;
|
||
using APT.Utility;
|
||
using APT.BaseData.Domain.Entities.LG;
|
||
using APT.BaseData.Domain.ApiModel.LG;
|
||
using System;
|
||
using APT.BaseData.Domain.Enums;
|
||
using System.Threading.Tasks;
|
||
using InfluxData.Net.InfluxDb.Models;
|
||
using APT.BaseData.Domain.Entities.FM;
|
||
using Microsoft.EntityFrameworkCore.Internal;
|
||
using System.Linq;
|
||
using APT.BaseData.Domain.ApiModel.Platform;
|
||
using Microsoft.Extensions.DependencyInjection;
|
||
using APT.Infrastructure.Api.Redis;
|
||
using APT.Infrastructure.Api;
|
||
namespace APT.LG.WebApi.Controllers.Api
|
||
{
|
||
|
||
#region Oprate-表单操作日志表
|
||
/// <summary>
|
||
/// 表单操作日志表
|
||
/// </summary>
|
||
[Route("api/LG/LGOperate")]
|
||
public partial class OprateController : AuthorizeApiController<T_LG_OPRATE>
|
||
{
|
||
/// <summary>
|
||
/// 新增日志
|
||
/// </summary>
|
||
/// <param name="filter">新增日志</param>
|
||
/// <returns></returns>
|
||
[HttpPost, Route("Add")]
|
||
public async Task<JsonActionResult<bool>> Add([FromBody] LgOprateModel model)
|
||
{
|
||
//var redisManager = APT.Infrastructure.Api.ServiceLocator.Instance.GetService<RedisManager>();
|
||
//int num = 0;
|
||
//if (CsRedisManager.KeyExists(RedisCacheKey.HardWarePVInfo))
|
||
//{
|
||
// num = CsRedisManager.StringGet<int>(RedisCacheKey.HardWarePVInfo);
|
||
//}
|
||
//num++;
|
||
//CsRedisManager.StringSet<int>(RedisCacheKey.HardWarePVInfo, num);
|
||
var isLog = LibUtils.ToBoolean(
|
||
ConfigurationManager.AppSettings["isSqlLog"]);
|
||
bool isSuccess = true;
|
||
if (isLog)
|
||
{
|
||
var user = this.GetEntityByRedis<T_FM_USER>(model.UserId, new Guid(model.OrgId));
|
||
if (user == null)
|
||
throw new Exception("用户不存在");
|
||
var dt = DateTime.Now;
|
||
var points = new Point
|
||
{
|
||
Name = dt.Year + dt.Month.PadLeft(2, '0'),
|
||
Timestamp = dt,
|
||
Tags = new Dictionary<string, object>()
|
||
{
|
||
{ "Id", Guid.NewGuid().ToString()}
|
||
},
|
||
Fields = new Dictionary<string, object>()
|
||
{
|
||
{ "FormCode", model.FormCode },
|
||
{ "FormName", model.FormName },
|
||
{ "BtnCode", model.BtnCode??"" },
|
||
{ "BtnName", model.BtnName??"" },
|
||
{ "OrgId", model.OrgId },
|
||
{ "UserId", model.UserId },
|
||
{ "UserCode",user.CODE },
|
||
{ "OperateType",string.IsNullOrEmpty(model.BtnCode)?(int)LGOperateTypeEnum.表单加载:(int)LGOperateTypeEnum.按钮点击 }
|
||
}
|
||
};
|
||
|
||
var response = await InfluxDbHelper.InfluxDbClient.Client.WriteAsync(points, InfluxDbHelper.InfluxLogDbName);
|
||
isSuccess = response.Success;
|
||
}
|
||
|
||
return SafeExecute<bool>(() =>
|
||
{
|
||
return isSuccess;
|
||
|
||
});
|
||
}
|
||
|
||
/// <summary>
|
||
/// 查询所有数据
|
||
/// </summary>
|
||
/// <param name="filter">过滤实体</param>
|
||
/// <returns></returns>
|
||
[HttpPost, Route("LGOrderPaged")]
|
||
public async Task<PagedActionResult<LgOprateModel>> LGOrderPaged([FromBody] KeywordPageFilter filters)
|
||
{
|
||
var actionResult = new PagedActionResult<LgOprateModel>();
|
||
string timestr = filters.Parameter1;
|
||
if (string.IsNullOrEmpty(timestr))
|
||
{
|
||
this.ThrowError("120001");
|
||
}
|
||
//if (string.IsNullOrEmpty(filters.Parameter2))
|
||
//{
|
||
// this.ThrowError("120002");
|
||
//}
|
||
var timeAry = timestr.Split(new char[] { ',' });
|
||
if (timeAry.Length != 2)
|
||
this.ThrowError("120001");
|
||
var dtStart = DateTime.Parse(timeAry[0]);
|
||
var dtEnd = DateTime.Parse(timeAry[1]);
|
||
T_FM_USER user = null;
|
||
if (!string.IsNullOrEmpty(filters.Keyword))
|
||
{
|
||
user = this.GetEntity<T_FM_USER>(i => i.NAME == filters.Keyword || i.CODE == filters.Keyword, new BaseFilter(filters.OrgId));
|
||
if (user == null)
|
||
return actionResult;
|
||
}
|
||
List<string> querys = new List<string>();
|
||
List<string> queryCounts = new List<string>();
|
||
for (var x = dtStart; x <= dtEnd; x = x.AddMonths(1))
|
||
{
|
||
var tableName = x.Year + x.Month.PadLeft(2, '0');
|
||
var query = $" FROM \"{tableName}\" WHERE time >= '{dtStart.ToString("yyyy-MM-dd HH:mm:ss")}' and time<='{dtEnd.ToString("yyyy-MM-dd HH:mm:ss")}'";
|
||
if (user != null)
|
||
query += $" and UserId='{user.ID.ToString()}'";
|
||
//表单
|
||
if (!string.IsNullOrEmpty(filters.Parameter3))
|
||
{
|
||
query += $" and FormCode='{filters.Parameter3}'";
|
||
}
|
||
var offSet = (filters.PageIndex - 1) * filters.Limit;
|
||
var querySql = query + $" order by time desc limit {filters.Limit} OFFSET {offSet}";
|
||
querySql = "SELECT * " + querySql;
|
||
querys.Add(querySql);
|
||
var queryCount = "SELECT COUNT(OrgId) " + query;
|
||
queryCounts.Add(queryCount);
|
||
}
|
||
|
||
var response = await InfluxDbHelper.InfluxDbClient.Client.MultiQueryAsync(querys, InfluxDbHelper.InfluxLogDbName);
|
||
if (!response.Any())
|
||
return actionResult;
|
||
//得到Serie集合对象(返回执行多个查询的结果)
|
||
//取出第一条命令的查询结果,是一个集合
|
||
List<LgOprateModel> opList = new List<LgOprateModel>();
|
||
//从集合中取出第一条数据
|
||
foreach (var list in response)
|
||
{
|
||
foreach (var table in list)
|
||
{
|
||
foreach (var item in table.Values)
|
||
{
|
||
var point = new LgOprateModel
|
||
{
|
||
BtnCode = item[1].ToString(),
|
||
BtnName = item[2].ToString(),
|
||
FormCode = item[3].ToString(),
|
||
FormName = item[4].ToString(),
|
||
ID = item[5].ToString(),
|
||
OrgId = item[7].ToString(),
|
||
UserCode = item[8].ToString(),
|
||
UserId = item[9].ToString(),
|
||
Datetime = item[0].ToString(),
|
||
};
|
||
opList.Add(point);
|
||
}
|
||
|
||
|
||
}
|
||
}
|
||
opList = opList.OrderByDescending(t => t.Datetime).Take(filters.Limit).ToList();
|
||
actionResult.Data = opList;
|
||
|
||
var responseCount = await InfluxDbHelper.InfluxDbClient.Client.MultiQueryAsync(queryCounts, InfluxDbHelper.InfluxLogDbName);
|
||
var totalCount = 0;
|
||
foreach (var list in responseCount)
|
||
{
|
||
foreach (var table in list)
|
||
{
|
||
foreach (var item in table.Values)
|
||
{
|
||
totalCount += int.Parse(item[1].ToString());
|
||
}
|
||
}
|
||
}
|
||
actionResult.TotalCount = totalCount;
|
||
|
||
return actionResult;
|
||
}
|
||
|
||
|
||
}
|
||
#endregion
|
||
}
|
||
|