暂存修改
This commit is contained in:
391
HT.Cloud.Service/ReportManage/HistoryEleTimeZoneService.cs
Normal file
391
HT.Cloud.Service/ReportManage/HistoryEleTimeZoneService.cs
Normal file
@ -0,0 +1,391 @@
|
||||
using MiniExcelLibs;
|
||||
using Serenity.Services;
|
||||
using SqlSugar;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using HT.Cloud.Domain.ReportManage;
|
||||
using System.Reflection.PortableExecutable;
|
||||
using Newtonsoft.Json;
|
||||
using HT.Cloud.Code;
|
||||
using HT.Cloud.Domain.DevicesManage;
|
||||
using System.Text.RegularExpressions;
|
||||
using Org.BouncyCastle.Asn1.X509;
|
||||
using System.Security.Cryptography;
|
||||
using System.Threading;
|
||||
using System.Data;
|
||||
using iTextSharp.text;
|
||||
using Serenity.Data;
|
||||
using Quartz;
|
||||
using static iTextSharp.text.pdf.XfaForm;
|
||||
using HT.Cloud.Domain.Entity.ReportManage;
|
||||
|
||||
namespace HT.Cloud.Service.ReportManage
|
||||
{
|
||||
public class HistoryEleTimeZoneService : BaseService<Ht_Sys_TimeZoneEntity>, IDenpendency
|
||||
{
|
||||
/// <summary>
|
||||
/// 绑定数据仓库的数据库ID
|
||||
/// </summary>
|
||||
private string dataDBNumber = GlobalContext.SystemConfig.DataDBNumber;
|
||||
|
||||
public HistoryEleTimeZoneService(ISqlSugarClient context) : base(context)
|
||||
{
|
||||
}
|
||||
|
||||
public async Task<string> GetDriverGroupList()
|
||||
{
|
||||
var list_group = _context.AsTenant().QueryableWithAttr<MetaGroupEntity>().ToList();
|
||||
return list_group.ToJson();
|
||||
}
|
||||
|
||||
public async Task<string> GetReportFileName(string startdt, string enddt, int timeinterval)
|
||||
{
|
||||
//SqlParameter[] sqlParameters =
|
||||
//{
|
||||
// new SqlParameter("@startdt",startdt),
|
||||
// new SqlParameter("@enddt",enddt),
|
||||
// new SqlParameter("@timeinterval",timeinterval)
|
||||
//};
|
||||
|
||||
|
||||
////*
|
||||
|
||||
//string conn = db.Database.GetConnectionString(); //"Data Source=192.168.110.32;Initial Catalog=SCADA;User Id= sa;Password= Sa1qaz;Integrated Security=False;Encrypt=True;TrustServerCertificate=True;";
|
||||
//SqlConnection sqlConnection = new SqlConnection(conn);
|
||||
//var ds = sqlConnection.SqlQueryex("Query_Report_YL", sqlParameters);
|
||||
|
||||
//*
|
||||
//var ds = db.SqlQuery("Query_Report_Period", sqlParameters);///
|
||||
|
||||
SugarParameter[] sqlParameters ={
|
||||
new SugarParameter("@startdt",startdt),
|
||||
new SugarParameter("@enddt",enddt),
|
||||
new SugarParameter("@timeinterval",timeinterval)
|
||||
};
|
||||
|
||||
|
||||
|
||||
var Report = _context.AsTenant().GetConnection(dataDBNumber).Ado.UseStoredProcedure().GetDataTable("Query_Report_YL", sqlParameters);
|
||||
Report.TableName = "Report";
|
||||
|
||||
|
||||
var value = new Dictionary<string, object>()
|
||||
{
|
||||
["title"] = "Report",
|
||||
["Report"] = Report,
|
||||
};
|
||||
//var pathroot = "";
|
||||
//var Isdebug = Configuration["Isdebug"];
|
||||
//if (Isdebug.Equals("yes"))
|
||||
//{
|
||||
// pathroot = Directory.GetCurrentDirectory();
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// pathroot = AppContext.BaseDirectory;
|
||||
//}
|
||||
var pathroot = Directory.GetCurrentDirectory();
|
||||
var templatePath = pathroot + "\\wwwroot\\report\\" + "报表预设模板" + ".xlsx";
|
||||
string fileurl = "Report" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
|
||||
//var fileurl = $"电子报表2023_01_03_11_19_53.xlsx";
|
||||
var path = pathroot + "\\wwwroot\\report\\" + fileurl;//{StartTime}-{EndTime}
|
||||
MiniExcel.SaveAsByTemplate(path: path, templatePath: templatePath, value: value);
|
||||
|
||||
////await Task.Delay(1);
|
||||
//Result<string> result = new Result<string>();
|
||||
//result.data = fileurl;
|
||||
return fileurl;
|
||||
}
|
||||
/// <summary>
|
||||
/// sql获取count
|
||||
/// </summary>
|
||||
/// <param name="startdt"></param>
|
||||
/// <param name="enddt"></param>
|
||||
/// <param name="timeinterval"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<object> GetReportNewInitPara(string startdt, string enddt, int timeinterval)
|
||||
{
|
||||
|
||||
SugarParameter[] sqlParameters ={
|
||||
new SugarParameter("@startdt",startdt),
|
||||
new SugarParameter("@enddt",enddt),
|
||||
new SugarParameter("@timeinterval",timeinterval)
|
||||
};
|
||||
var dt_Counts = _context.AsTenant().GetConnection(dataDBNumber).Ado.UseStoredProcedure().GetDataTable("Query_Report_YL_COUNT", sqlParameters);
|
||||
int counts = dt_Counts.Rows[0][0].ToInt();
|
||||
return counts;
|
||||
}
|
||||
/// <summary>
|
||||
/// 代码计算count
|
||||
/// </summary>
|
||||
/// <param name="startdt"></param>
|
||||
/// <param name="enddt"></param>
|
||||
/// <param name="timeinterval"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<object> GetReportNewInitParaInCode(long startdt, long enddt, int timeinterval)
|
||||
{
|
||||
|
||||
var startS = startdt / 1000;
|
||||
var endS = enddt / 1000;
|
||||
var counts = ((endS - startS) / timeinterval) + 1;
|
||||
return counts;
|
||||
}
|
||||
public async Task<string> GetReportNewAsync(string page, string limit, string Startdt, string Enddt, string Timeinterval, string systemName)
|
||||
{
|
||||
var groupName = _context.AsTenant().QueryableWithAttr<MetaGroupEntity>().Where(x => x.GroupDescription == systemName).First().GroupName;
|
||||
//SugarParameter[] sqlParameters ={
|
||||
// new SugarParameter("@startdt",Startdt),
|
||||
// new SugarParameter("@enddt",Enddt),
|
||||
// new SugarParameter("@timeinterval",Timeinterval)
|
||||
//};
|
||||
//var dt_Counts = _context.AsTenant().GetConnection(dataDBNumber).Ado.UseStoredProcedure().GetDataTable("Query_Report_YL_COUNT", sqlParameters);
|
||||
//int counts = dt_Counts.Rows[0][0].ToInt();
|
||||
string msg = "";
|
||||
int code = 0;
|
||||
SugarParameter[] sqlReportParameters ={
|
||||
new SugarParameter("@startdt",Startdt),
|
||||
new SugarParameter("@enddt",Enddt),
|
||||
new SugarParameter("@groupname",groupName),
|
||||
new SugarParameter("@timeinterval",Timeinterval),
|
||||
new SugarParameter("@hpage",page.ToInt()),
|
||||
new SugarParameter("@hlimit",limit.ToInt())
|
||||
};
|
||||
var Report = _context.AsTenant().GetConnection(dataDBNumber).Ado.UseStoredProcedure().GetDataTable("Query_Report_PAGE", sqlReportParameters);
|
||||
|
||||
var jsonResult = JsonConvert.SerializeObject(Report);
|
||||
|
||||
|
||||
var result = new
|
||||
{
|
||||
code = code,
|
||||
msg = msg,
|
||||
//count = counts,
|
||||
data = jsonResult
|
||||
};
|
||||
string serJson = JsonConvert.SerializeObject(result);
|
||||
|
||||
|
||||
return serJson;
|
||||
|
||||
}
|
||||
public async Task<object> GetReportNew(string startdt, string enddt, int timeinterval)
|
||||
{
|
||||
SugarParameter[] sqlParameters ={
|
||||
new SugarParameter("@startdt",startdt),
|
||||
new SugarParameter("@enddt",enddt),
|
||||
new SugarParameter("@timeinterval",timeinterval)
|
||||
};
|
||||
var Report = _context.AsTenant().GetConnection(dataDBNumber).Ado.UseStoredProcedure().GetDataTable("Query_Report_YL", sqlParameters);
|
||||
Report.TableName = "Report";
|
||||
|
||||
//return JsonConvert.SerializeObject(Report);
|
||||
return Report;
|
||||
|
||||
}
|
||||
public async Task<string> GetReportFirstHead(string systemName)
|
||||
{
|
||||
var groupName = _context.AsTenant().QueryableWithAttr<MetaGroupEntity>().Where(x => x.GroupDescription == systemName).First().GroupName;
|
||||
var driverId = _context.AsTenant().QueryableWithAttr<MetaGroupEntity>().Where(x => x.GroupDescription == systemName).First().DriverID;
|
||||
var driverName = _context.AsTenant().QueryableWithAttr<MetaDriverEntity>().Where(x => x.DriverID == driverId).First().DriverName;
|
||||
var list = _context.AsTenant().GetConnection(dataDBNumber).Ado.SqlQuery<Ht_History_ReportEntity>($"SELECT * FROM HT_{driverName}_{groupName}_REPORT");
|
||||
//var list = _context.AsTenant().QueryableWithAttr<Ht_History_ReportEntity>().ToList();
|
||||
List<string> list_name_two = list.Select(t => t.HSYS).GroupBy(c => c).Select(c => c.First()).ToList();
|
||||
return list_name_two.ToJson();
|
||||
}
|
||||
|
||||
public async Task<string> GetReportSecondHead(string systemName)
|
||||
{
|
||||
var groupName = _context.AsTenant().QueryableWithAttr<MetaGroupEntity>().Where(x => x.GroupDescription == systemName).First().GroupName;
|
||||
var driverId = _context.AsTenant().QueryableWithAttr<MetaGroupEntity>().Where(x => x.GroupDescription == systemName).First().DriverID;
|
||||
var driverName = _context.AsTenant().QueryableWithAttr<MetaDriverEntity>().Where(x => x.DriverID == driverId).First().DriverName;
|
||||
var list = _context.AsTenant().GetConnection(dataDBNumber).Ado.SqlQuery<Ht_History_ReportEntity>($"SELECT * FROM HT_{driverName}_{groupName}_REPORT");
|
||||
List<string> list_name_two = list.Select(t => t.HSYS).GroupBy(c => c).Select(c => c.First()).ToList();
|
||||
var relist = new List<SecondHead>();
|
||||
foreach(var t in list_name_two)
|
||||
{
|
||||
var secondHead = new SecondHead();
|
||||
secondHead.HSYS = t;
|
||||
var listHead = list.Where(x=> x.HSYS == t).ToList();
|
||||
var listHeadString = new List<string>();
|
||||
var listTitleString = new List<string>();
|
||||
foreach(var h in listHead)
|
||||
{
|
||||
listHeadString.Add(h.HPRO.ToString());
|
||||
listTitleString.Add(h.HVAR.ToString());
|
||||
}
|
||||
secondHead.Head = listHeadString;
|
||||
secondHead.Title = listTitleString;
|
||||
relist.Add(secondHead);
|
||||
}
|
||||
return relist.ToJson();
|
||||
//return Report.ToJson();
|
||||
}
|
||||
|
||||
public async Task<string> GetReportDownLoad(DateTime startTime, DateTime endTime ,int interval, string systemName)
|
||||
{
|
||||
var groupName = _context.AsTenant().QueryableWithAttr<MetaGroupEntity>().Where(x => x.GroupDescription == systemName).First().GroupName;
|
||||
var driverId = _context.AsTenant().QueryableWithAttr<MetaGroupEntity>().Where(x => x.GroupDescription == systemName).First().DriverID;
|
||||
var driverName = _context.AsTenant().QueryableWithAttr<MetaDriverEntity>().Where(x => x.DriverID == driverId).First().DriverName;
|
||||
var list = _context.AsTenant().GetConnection(dataDBNumber).Ado.SqlQuery<HistoryReportPathEntity>($"SELECT * FROM HT_{driverName}_{groupName}_REPORTPATH");
|
||||
var f3dpath = list.First().ReportPath;
|
||||
|
||||
var listSub = TimeInOneDay(startTime, endTime);
|
||||
|
||||
var pathroot = Directory.GetCurrentDirectory();
|
||||
string fileurl = "报表 " + startTime.ToString("yyyy年MM月dd日 HH.mm.ss") + "至" + endTime.ToString("yyyy年MM月dd日 HH.mm.ss") + "(" + "时间间隔" + interval.ToString() + "秒" + ")" + "_" + DateTime.Now.ToString("yyyy年MM月dd日 HH.mm.ss") + "导出" + ".xlsx";
|
||||
//var fileurl = $"电子报表2023_01_03_11_19_53.xlsx";
|
||||
var path = pathroot + "\\wwwroot\\report\\" + fileurl;//{StartTime}-{EndTime}
|
||||
var path3d = @f3dpath + fileurl;
|
||||
var sheets = new Dictionary<string, object>();
|
||||
var sheets3D = new Dictionary<string, object>();
|
||||
try
|
||||
{
|
||||
for (int i = 0; i < listSub.Count; i++)
|
||||
{
|
||||
var item = listSub[i];
|
||||
var fstartTime = item.starttime;
|
||||
var fendTime = item.endtime;
|
||||
|
||||
SugarParameter[] sqlParameters ={
|
||||
new SugarParameter("@enddt", fendTime.ToString("yyyy-MM-dd HH:mm:ss")),
|
||||
new SugarParameter("@groupname", groupName),
|
||||
new SugarParameter("@startdt", fstartTime.ToString("yyyy-MM-dd HH:mm:ss")),
|
||||
new SugarParameter("@timeinterval",interval)
|
||||
};
|
||||
var reader = _context.AsTenant().GetConnection(dataDBNumber).Ado.UseStoredProcedure().GetDataReader("Query_Report_YL_CHN", sqlParameters);
|
||||
|
||||
//string conn = _context.CurrentConnectionConfig.ConnectionString; //"Data Source=192.168.110.32;Initial Catalog=SCADA;User Id= sa;Password= Sa1qaz;Integrated Security=False;Encrypt=True;TrustServerCertificate=True;";
|
||||
// SqlConnection sqlConnection = new SqlConnection(conn);
|
||||
// SqlCommand command = new SqlCommand("dbo.Query_Report_YL_CHN", sqlConnection);
|
||||
// command.CommandType = CommandType.StoredProcedure;
|
||||
|
||||
//command.Parameters.Add(new SqlParameter("@enddt", fendTime.ToString("yyyy-MM-dd HH:mm:ss")));
|
||||
//command.Parameters.Add(new SqlParameter("@groupname", groupName));
|
||||
//command.Parameters.Add(new SqlParameter("@startdt", fstartTime.ToString("yyyy-MM-dd HH:mm:ss")));
|
||||
//command.Parameters.Add(new SqlParameter("@timeinterval", interval));
|
||||
|
||||
// command.CommandTimeout = 999999;
|
||||
// sqlConnection.Open();
|
||||
// var reader = command.ExecuteReader();
|
||||
|
||||
|
||||
|
||||
//var pathroot = Directory.GetCurrentDirectory();
|
||||
//string fileurl = "报表_" + startTime.ToString("yyyy_MM_dd_HH_mm_ss")+"至"+ endTime.ToString("yyyy_MM_dd_HH_mm_ss")+"("+"时间间隔"+interval.ToString()+"秒"+")"+"_"+DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss")+"导出" + ".xlsx";
|
||||
////var fileurl = $"电子报表2023_01_03_11_19_53.xlsx";
|
||||
//var path = pathroot + "\\wwwroot\\report\\" + fileurl;//{StartTime}-{EndTime}
|
||||
|
||||
var sheetName = fstartTime.ToString("yyyy年MM月dd日 HH.mm.ss") + "至" + fendTime.ToString("HH.mm.ss");
|
||||
|
||||
//MiniExcel.SaveAs(path, reader, true, sheetName, ExcelType.XLSX, null, false);
|
||||
|
||||
sheets.Add(sheetName, reader);
|
||||
sheets3D.Add(sheetName, reader);
|
||||
//sqlConnection.Close();
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.ToString());
|
||||
}
|
||||
try
|
||||
{
|
||||
//var sheets3d = new Dictionary<string, object>(sheets.ToDictionary(pair => pair.Key, pair => pair.Value));
|
||||
|
||||
|
||||
//await Task.Delay(1000);
|
||||
MiniExcel.SaveAs(path, sheets);
|
||||
|
||||
File.Copy(path, path3d, true);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.WriteLine(ex.ToString());
|
||||
}
|
||||
//await Task.WhenAll(taskCloud, task3D);
|
||||
//bool a = true;
|
||||
////MiniExcel.SaveAs(path, reader);
|
||||
//while (a)
|
||||
//{
|
||||
// Thread.Sleep(1000);
|
||||
//}
|
||||
return fileurl.ToJson();
|
||||
}
|
||||
/// <summary>
|
||||
/// 处理分段,截头去尾还需添加
|
||||
/// </summary>
|
||||
/// <param name="startTime"></param>
|
||||
/// <param name="endTime"></param>
|
||||
/// <returns></returns>
|
||||
public List<TimeMDL> TimeInOneDay(DateTime startTime, DateTime endTime)
|
||||
{
|
||||
var hour = startTime.Hour;
|
||||
var minute = startTime.Minute;
|
||||
var second = startTime.Second;
|
||||
var oneendtime = new DateTime(startTime.Year,startTime.Month,startTime.Day,23,59,59);
|
||||
var twostarttime = startTime.AddHours(0 - hour).AddMinutes(0 - minute).AddSeconds(0 - second).AddDays(1);
|
||||
var twoendtime = new DateTime( twostarttime.Year, twostarttime.Month,twostarttime.Day,23,59,59);
|
||||
|
||||
List<TimeMDL> ListTime = new List<TimeMDL>();
|
||||
|
||||
int day = (endTime - startTime).Days;
|
||||
|
||||
for (int i = 0; i <= day; i++)
|
||||
{
|
||||
TimeMDL temptime = new TimeMDL();
|
||||
if (i == 0)
|
||||
{
|
||||
|
||||
temptime.starttime = startTime;
|
||||
temptime.endtime = oneendtime;
|
||||
ListTime.Add(temptime);
|
||||
}
|
||||
else
|
||||
{
|
||||
temptime.starttime = twostarttime;
|
||||
temptime.endtime = twoendtime;
|
||||
twostarttime = twostarttime.AddDays(1);
|
||||
twoendtime = twoendtime.AddDays(1);
|
||||
ListTime.Add(temptime);
|
||||
}
|
||||
}
|
||||
|
||||
//list在处理 第一行和最后一行
|
||||
//ListTime[0].starttime = startTime;
|
||||
ListTime[ListTime.Count-1].endtime = endTime;
|
||||
|
||||
return ListTime;
|
||||
}
|
||||
public class TimeMDL
|
||||
{
|
||||
public DateTime starttime { get; set; }
|
||||
public DateTime endtime { get; set; }
|
||||
}
|
||||
public class SecondHead
|
||||
{
|
||||
public string HSYS { get; set;}
|
||||
public List<string> Head { get; set;}
|
||||
public List<string> Title { get; set; }
|
||||
}
|
||||
|
||||
|
||||
|
||||
public async Task<string> GetTimeZoneData(long startTime, long endTime, string systemName)
|
||||
{
|
||||
var groupName = _context.AsTenant().QueryableWithAttr<MetaGroupEntity>().Where(x => x.GroupDescription == systemName).First().GroupName;
|
||||
var driverId = _context.AsTenant().QueryableWithAttr<MetaGroupEntity>().Where(x => x.GroupDescription == systemName).First().DriverID;
|
||||
var driverName = _context.AsTenant().QueryableWithAttr<MetaDriverEntity>().Where(x => x.DriverID == driverId).First().DriverName;
|
||||
var list = _context.AsTenant().GetConnection(dataDBNumber).Ado.SqlQuery<HistoryReportPathEntity>($"SELECT * FROM HT_WINTER_TIMEZONE");
|
||||
|
||||
return "".ToString();
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user