492 lines
24 KiB
C#
492 lines
24 KiB
C#
using CRM.Core.BLL.B;
|
|
using CRM.Core.BLL.Mon;
|
|
using CRM.Core.Common.WebHelper;
|
|
using CRM.Core.DAL;
|
|
using CRM.Core.Model;
|
|
using CRM.Core.Model.EntityAudit;
|
|
using CRM.Core.Model.EntityUserCenter;
|
|
using CRM.Core.Model.QueryModels;
|
|
using System;
|
|
using System.Collections.Concurrent;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using WX.CRM.Common;
|
|
using static CRM.Core.BLL.Application.Order.ExportAudit;
|
|
|
|
namespace CRM.Core.BLL.Application.Order
|
|
{
|
|
public class QueryAudit
|
|
{
|
|
private static NLog.Logger Logger = NLog.LogManager.GetCurrentClassLogger();
|
|
private Mon_Order_Module_Income_BL _orderModelIncome = new Mon_Order_Module_Income_BL();
|
|
private B_Audit_Items_BL b_Audit_Items_bl = new B_Audit_Items_BL();
|
|
public AuditResultQuery.AuditResult GetItemAuditResult(int itemId, string querytype)
|
|
{
|
|
B_Audit_Check_BL b_Audit_Check_BL = new B_Audit_Check_BL();
|
|
AuditResultQuery.AuditResult auditResult = new AuditResultQuery.AuditResult();
|
|
try
|
|
{
|
|
auditResult.auditItemResults = new List<AuditResultQuery.AuditItemResult>();
|
|
var sql = "SELECT monkey From b_audit_check order by id desc limit 1";
|
|
var monkey = MySqlDbHelper.ExecuteScalar(ConStringHelper.AuditConn, CommandType.Text, sql);
|
|
var lastmonkey = Int32.Parse(monkey.ToString());
|
|
var auditchecks = b_Audit_Check_BL.GetList(d => d.Monkey == lastmonkey &&d.QueryType.Equals("cur") && d.itemId == itemId).OrderByDescending(d => d.Id);
|
|
if (auditchecks == null)
|
|
{
|
|
Logger.Debug($"auditchecks is null,lastmonkey{lastmonkey}");
|
|
}
|
|
var base_ItemsResult = auditchecks.ToDictionary(d => d.Categorie, d => d.Resultskv);
|
|
var itemName = auditchecks.FirstOrDefault().Item;
|
|
|
|
// var baseKV = JsonHelper.FromJson<Dictionary<int, double>>(base_ItemsResult.FirstOrDefault().Value.Resultskv);
|
|
auditResult.sumPayprice = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["sumPayprice"]).FirstOrDefault().Value;
|
|
auditResult.sumRefundprice = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["sumRefundprice"]).FirstOrDefault().Value;
|
|
var incomekv = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["income"]);
|
|
var depositreceivedkv = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["depositreceived"]);
|
|
var costpricekv = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["costprice"]);
|
|
var lastcostpricekv = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["lastcostprice"]);
|
|
var checkCostpricekv = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["checkCostprice"]);
|
|
var modulePricekv = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["modulePrice"]);
|
|
var modulRefundpricekv = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["modulRefundprice"]);
|
|
var orderRefundpricekv = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["orderRefundprice"]);
|
|
var noUseOrderRefundpricekv = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["noUseOrderRefundprice"]);
|
|
var paypricekv = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["payprice"]);
|
|
var usepricekv = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["useprice"]);
|
|
//var onlinePricekv = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["onlinePrice"]);
|
|
var costpriceRefundkv = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["costpriceRefund"]);
|
|
var monIncomekv = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["monIncome"]);
|
|
var actualRefundpricekv = JsonHelper.FromJson<Dictionary<int, decimal>>(base_ItemsResult["actualRefundprice"]);
|
|
var depConsumekvstr = "";
|
|
var depConsumekv = new Dictionary<int, decimal>();
|
|
if (base_ItemsResult.TryGetValue("depConsume", out depConsumekvstr))
|
|
{
|
|
depConsumekv = JsonHelper.FromJson<Dictionary<int, decimal>>(depConsumekvstr);
|
|
}
|
|
|
|
foreach (var item in incomekv)
|
|
{
|
|
AuditResultQuery.AuditItemResult result = new AuditResultQuery.AuditItemResult();
|
|
|
|
result.mon = item.Key;
|
|
result.item = itemName;
|
|
result.income = Math.Round(item.Value, 2);
|
|
|
|
decimal depositreceived = 0m;
|
|
depositreceivedkv.TryGetValue(item.Key, out depositreceived);
|
|
result.depositreceived = Math.Round(depositreceived, 2);
|
|
|
|
decimal costprice = 0m;
|
|
costpricekv.TryGetValue(item.Key, out costprice);
|
|
result.costprice = Math.Round(costprice, 2);
|
|
|
|
decimal lastcostprice = 0m;
|
|
lastcostpricekv.TryGetValue(item.Key, out lastcostprice);
|
|
result.lastcostprice = Math.Round(lastcostprice, 2);
|
|
|
|
decimal checkCostprice = 0m;
|
|
checkCostpricekv.TryGetValue(item.Key, out checkCostprice);
|
|
result.checkCostprice = Math.Round(checkCostprice, 2);
|
|
|
|
decimal modulePrice = 0m;
|
|
modulePricekv.TryGetValue(item.Key, out modulePrice);
|
|
result.modulePrice = Math.Round(modulePrice, 2);
|
|
|
|
decimal modulRefundprice = 0m;
|
|
modulRefundpricekv.TryGetValue(item.Key, out modulRefundprice);
|
|
result.modulRefundprice = Math.Round(modulRefundprice, 2);
|
|
|
|
decimal orderRefundprice = 0m;
|
|
orderRefundpricekv.TryGetValue(item.Key, out orderRefundprice);
|
|
result.orderRefundprice = Math.Round(orderRefundprice, 2);
|
|
|
|
decimal noUseOrderRefundprice = 0m;
|
|
noUseOrderRefundpricekv.TryGetValue(item.Key, out noUseOrderRefundprice);
|
|
result.noUseOrderRefundprice = Math.Round(noUseOrderRefundprice, 2);
|
|
|
|
decimal payprice = 0m;
|
|
paypricekv.TryGetValue(item.Key, out payprice);
|
|
result.payprice = Math.Round(payprice, 2);
|
|
|
|
decimal useprice = 0m;
|
|
usepricekv.TryGetValue(item.Key, out useprice);
|
|
result.useprice = Math.Round(useprice, 2);
|
|
|
|
|
|
//decimal onlinePrice = 0m;
|
|
//onlinePricekv.TryGetValue(item.Key, out onlinePrice);
|
|
//result.onlinePrice = Math.Round(onlinePrice, 2);
|
|
|
|
decimal costpriceRefund = 0m;
|
|
costpriceRefundkv.TryGetValue(item.Key, out costpriceRefund);
|
|
result.costpriceRefund = Math.Round(costpriceRefund, 2);
|
|
|
|
decimal monIncome = 0m;
|
|
monIncomekv.TryGetValue(item.Key, out monIncome);
|
|
result.monIncome = Math.Round(monIncome, 2);
|
|
|
|
decimal actualRefundprice = 0m;
|
|
actualRefundpricekv.TryGetValue(item.Key, out actualRefundprice);
|
|
result.actualRefundprice = Math.Round(actualRefundprice, 2);
|
|
|
|
decimal depConsume = 0m;
|
|
depConsumekv.TryGetValue(item.Key, out depConsume);
|
|
result.depConsume = Math.Round(depConsume, 2);
|
|
|
|
auditResult.auditItemResults.Add(result);
|
|
}
|
|
var finish = _orderModelIncome.GetLastFinish();
|
|
|
|
auditResult.auditDate = finish==null?"":finish.Day.ToString("yyyy-MM-dd");
|
|
auditResult.DataEnd = finish == null ? "" : finish.DataEnd.ToString("yyyy-MM-dd");
|
|
var auditendDate = "";
|
|
if (!string.IsNullOrEmpty(auditResult.DataEnd))
|
|
{
|
|
auditendDate = finish.DataEnd.AddMonths(1).AddDays(-finish.DataEnd.Day - 1).ToString("yyyy-MM-dd");
|
|
}
|
|
auditResult.remark = $"数据日期:{auditResult.DataEnd}(预结算到:{auditendDate}),总金额:{auditResult.sumPayprice},总退款:{auditResult.sumRefundprice}";
|
|
}catch(Exception ex)
|
|
{
|
|
Logger.Error(ex);
|
|
}
|
|
return auditResult;
|
|
}
|
|
public AuditResultQuery.AuditResult GetAuditResult(int monkey, string querytype)
|
|
{
|
|
|
|
B_Audit_Check_BL b_Audit_Check_BL = new B_Audit_Check_BL();
|
|
AuditResultQuery.AuditResult auditResult = new AuditResultQuery.AuditResult();
|
|
try
|
|
{
|
|
auditResult.auditItemResults = new List<AuditResultQuery.AuditItemResult>();
|
|
var lastmonkey = monkey;
|
|
if (monkey == 0)
|
|
{
|
|
var sql = "SELECT monkey From b_audit_check order by id desc limit 1";
|
|
var monkeystr = MySqlDbHelper.ExecuteScalar(ConStringHelper.AuditConn, CommandType.Text, sql);
|
|
lastmonkey = Int32.Parse(monkeystr.ToString());
|
|
}
|
|
var where = PredicateExtensionses.True<B_Audit_Check>();
|
|
where = where.And(d => d.Monkey == lastmonkey);
|
|
|
|
where = where.And(d => d.QueryType.Equals("cur"));
|
|
var audit_checklist = b_Audit_Check_BL.GetList(where).OrderByDescending(d => d.Id).ToList();
|
|
//var auditkvs = audit_checklist.Where(d => d.Categorie.Equals("income")).FirstOrDefault().Resultskv;
|
|
|
|
var auditItemResults= new List<AuditResultQuery.AuditItemResult>();
|
|
foreach (var audit_checkitem in audit_checklist.GroupBy(d => d.Item))
|
|
{
|
|
AuditResultQuery.AuditItemResult result = new AuditResultQuery.AuditItemResult();
|
|
result.item = audit_checkitem.Key;
|
|
|
|
foreach (var item in audit_checkitem)
|
|
{
|
|
result.itemId = item.itemId;
|
|
result.parentId = B_Audit_Items_BL.GetAudit_ItemFromId(item.itemId).ParentId;
|
|
result.sort = B_Audit_Items_BL.GetAudit_ItemFromId(item.itemId).Sort;
|
|
Type type = result.GetType();
|
|
var value = 0m;
|
|
JsonHelper.FromJson<Dictionary<int, decimal>>(item.Resultskv).TryGetValue(monkey, out value);
|
|
|
|
result.mon = monkey;
|
|
foreach (var typeinfo in type.GetProperties())
|
|
{
|
|
if (typeinfo.Name == item.Categorie)
|
|
{
|
|
typeinfo.SetValue(result, Math.Round(value, 2));
|
|
}
|
|
}
|
|
}
|
|
auditItemResults.Add(result);
|
|
}
|
|
auditResult.auditItemResults = AuditResultQuery.SortTrees(auditItemResults,1);
|
|
|
|
var finish = _orderModelIncome.GetLastFinish();
|
|
|
|
auditResult.auditDate = finish == null ? "" : finish.Day.ToString("yyyy-MM-dd");
|
|
auditResult.DataEnd = finish == null ? "" : finish.DataEnd.ToString("yyyy-MM-dd");
|
|
var auditendDate = "";
|
|
if (!string.IsNullOrEmpty(auditResult.DataEnd))
|
|
{
|
|
auditendDate = finish.DataEnd.AddMonths(1).AddDays(-finish.DataEnd.Day - 1).ToString("yyyy-MM-dd");
|
|
}
|
|
|
|
auditResult.remark = $"数据日期:{auditResult.DataEnd}(预结算到:{auditendDate})";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Logger.Error(ex);
|
|
}
|
|
|
|
|
|
return auditResult;
|
|
}
|
|
|
|
public AuditResultQuery.AuditResult GetAuditResult(int monkey,int? itemId, string querytype)
|
|
{
|
|
|
|
B_Audit_Check_BL b_Audit_Check_BL = new B_Audit_Check_BL();
|
|
AuditResultQuery.AuditResult auditResult = new AuditResultQuery.AuditResult();
|
|
try
|
|
{
|
|
auditResult.auditItemResults = new List<AuditResultQuery.AuditItemResult>();
|
|
var lastmonkey = monkey;
|
|
if (monkey == 0)
|
|
{
|
|
var sql = "SELECT monkey From b_audit_check order by id desc limit 1";
|
|
var monkeystr = MySqlDbHelper.ExecuteScalar(ConStringHelper.AuditConn, CommandType.Text, sql);
|
|
lastmonkey = Int32.Parse(monkeystr.ToString());
|
|
}
|
|
var where = PredicateExtensionses.True<B_Audit_Check>();
|
|
where = where.And(d => d.Monkey == lastmonkey);
|
|
|
|
var audit_checklist = b_Audit_Check_BL.GetList(where).OrderByDescending(d => d.Id).ToList();
|
|
//var auditkvs = audit_checklist.Where(d => d.Categorie.Equals("income")).FirstOrDefault().Resultskv;
|
|
|
|
foreach (var audit_checkitem in audit_checklist.GroupBy(d => d.Item))
|
|
{
|
|
AuditResultQuery.AuditItemResult result = new AuditResultQuery.AuditItemResult();
|
|
result.item = audit_checkitem.Key;
|
|
|
|
foreach (var item in audit_checkitem)
|
|
{
|
|
result.itemId = item.itemId;
|
|
result.parentId = B_Audit_Items_BL.GetAudit_ItemFromId(item.itemId).ParentId;
|
|
Type type = result.GetType();
|
|
var value = 0m;
|
|
JsonHelper.FromJson<Dictionary<int, decimal>>(item.Resultskv).TryGetValue(monkey, out value);
|
|
|
|
result.mon = monkey;
|
|
foreach (var typeinfo in type.GetProperties())
|
|
{
|
|
if (typeinfo.Name == item.Categorie)
|
|
{
|
|
typeinfo.SetValue(result, Math.Round(value, 2));
|
|
}
|
|
}
|
|
}
|
|
auditResult.auditItemResults.Add(result);
|
|
}
|
|
auditResult.auditItemResults = auditResult.auditItemResults.OrderBy(d => d.itemId).ToList();
|
|
var finish = _orderModelIncome.GetLastFinish();
|
|
|
|
auditResult.auditDate = finish == null ? "" : finish.Day.ToString("yyyy-MM-dd");
|
|
auditResult.DataEnd = finish == null ? "" : finish.DataEnd.ToString("yyyy-MM-dd");
|
|
var auditendDate = "";
|
|
if (!string.IsNullOrEmpty(auditResult.DataEnd)) {
|
|
auditendDate = finish.DataEnd.AddMonths(1).AddDays(-finish.DataEnd.Day - 1).ToString("yyyy-MM-dd");
|
|
}
|
|
|
|
auditResult.remark = $"数据日期:{auditResult.DataEnd}(预结算到:{auditendDate})";
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Logger.Error(ex);
|
|
}
|
|
|
|
|
|
return auditResult;
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
/// 查询渠道消费数据(广告投放等)
|
|
/// </summary>
|
|
public void QuerydepConsumes()
|
|
{
|
|
B_Audit_Check_BL b_Audit_Check_BL = new B_Audit_Check_BL();
|
|
List<B_Audit_Check> b_Audit_CheckList = new List<B_Audit_Check>();
|
|
List < AuditResultQuery.ItemdepConsume> itemdepConsumes = new List<AuditResultQuery.ItemdepConsume>();
|
|
var monkey = Int32.Parse(DateTime.Now.ToString("yyyyMM"));
|
|
var categorie = "depConsume";
|
|
var queryType = "cur";
|
|
var categorieName = "渠道消费";
|
|
Logger.Info("开始查询渠道消费结果");
|
|
var sql = "SELECT dep.title,con.deptid,dep.campainid,DATE_FORMAT(con.ctime,'%Y%m') mon ,sum(con.price) price From dncmspromotion.channelconsumetotaldept con LEFT JOIN `dncmsbase`.`deptment` dep on dep.id = con.deptid GROUP BY con.deptid,dep.campainid,dep.title,DATE_FORMAT(con.ctime, '%Y%m')";
|
|
var ds= MySqlDbHelper.DataQueray(ConStringHelper.UserCenterConn, CommandType.Text, sql);
|
|
List<AuditResultQuery.depConsume> depConsumes = ds.Tables[0].ToList<AuditResultQuery.depConsume>();
|
|
|
|
var depConsumesGroup = depConsumes.GroupBy(d => d.campainid);
|
|
|
|
|
|
//分类分渠道数据
|
|
foreach (var item in depConsumesGroup)
|
|
{
|
|
var b_Audit_Items= b_Audit_Items_bl.GetAudit_ItemsFromChannel(item.Key);
|
|
|
|
foreach (var b_Audit_Item in b_Audit_Items)
|
|
{
|
|
|
|
foreach (var depConsume in item)
|
|
{
|
|
AuditResultQuery.ItemdepConsume itemdepConsume = new AuditResultQuery.ItemdepConsume()
|
|
{
|
|
itemid = b_Audit_Item.Id,
|
|
item= b_Audit_Item.Item,
|
|
mon=depConsume.mon,
|
|
price=depConsume.price
|
|
};
|
|
itemdepConsumes.Add(itemdepConsume);
|
|
}
|
|
|
|
}
|
|
};
|
|
//写入分渠道数据
|
|
foreach (var item in itemdepConsumes.GroupBy(d=>new { d.itemid,d.item}))
|
|
{
|
|
B_Audit_Check b_Audit_Check = new B_Audit_Check()
|
|
{
|
|
Monkey = monkey,
|
|
QueryType = queryType,
|
|
itemId = item.Key.itemid,
|
|
Item = item.Key.item,
|
|
Categorie = categorie,
|
|
CategorieName = categorieName,
|
|
Resultskv = JsonHelper.ToJson(item.GroupBy(d => d.mon).ToDictionary(d =>int.Parse( d.Key), d => d.Sum(a => a.price))),
|
|
Ctime = DateTime.Now
|
|
};
|
|
b_Audit_CheckList.Add(b_Audit_Check);
|
|
}
|
|
|
|
b_Audit_Check_BL.Delete(d => d.Monkey == monkey&& d.Categorie == categorie);
|
|
b_Audit_Check_BL.AddList(b_Audit_CheckList);
|
|
Logger.Info(string.Format("更新渠道消费结果{0}条", b_Audit_CheckList.Count));
|
|
|
|
|
|
}
|
|
|
|
|
|
public Dictionary<int, double> GetAuditCost()
|
|
{
|
|
Dictionary<int, double> kvs = new Dictionary<int, double>();
|
|
|
|
string sql = "SELECT mon,sum(cost) cost From audit_cost GROUP BY mon ORDER BY mon;";
|
|
var ds = MySqlDbHelper.DataQueray(ConStringHelper.AuditConn, CommandType.Text, sql);
|
|
foreach (DataRow item in ds.Tables[0].Rows)
|
|
{
|
|
kvs.Add(int.Parse(item["mon"].ToString()), double.Parse(item["cost"].ToString()));
|
|
}
|
|
return kvs;
|
|
}
|
|
|
|
|
|
|
|
public List<ExportAudit.ExportItem> QueryAuditItems(string queryType)
|
|
{
|
|
|
|
List<ExportAudit.ExportItem> exportItems = new List<ExportAudit.ExportItem>();
|
|
DateTime endDate;
|
|
|
|
var finish = _orderModelIncome.GetLastFinish();
|
|
|
|
if (finish == null)
|
|
{
|
|
throw new Exception("未找到结算数据,请确认!");
|
|
}
|
|
|
|
var fDate = finish.DataEnd;
|
|
|
|
if (queryType.Equals(AuditResultQuery.QueryType.income.ToString()) || queryType.Equals(AuditResultQuery.QueryType.qc.ToString()))
|
|
{
|
|
fDate = finish.Day;
|
|
endDate = finish.Day;
|
|
}
|
|
else if (queryType.Equals(AuditResultQuery.QueryType.act.ToString()))
|
|
{
|
|
fDate = finish.Day;
|
|
endDate = finish.Day.AddYears(3);
|
|
}
|
|
else
|
|
{
|
|
endDate = fDate.AddYears(3);
|
|
}
|
|
|
|
Stopwatch stopwatch = new Stopwatch();
|
|
|
|
B_Audit_Items_BL _B_Audit_Items = new B_Audit_Items_BL();
|
|
B_Audit_Querysql_BL _B_Audit_Querysql = new B_Audit_Querysql_BL();
|
|
Mon_Ym_BL _Mon_Ym_BL = new Mon_Ym_BL();
|
|
//获取设置和sql
|
|
var audititems = _B_Audit_Items.GetList(t => t.Querytype.Contains(queryType + ",")).OrderBy(d => d.Sort).ToList();
|
|
var auditquerysql = _B_Audit_Querysql.GetList(t => t.Querytype.Contains(queryType + ",")).ToList();
|
|
_Mon_Ym_BL.InitMon_Ym(endDate);
|
|
//截止时间
|
|
var fdate = fDate.AddDays(1).ToString("yyyy-MM-dd");
|
|
//生成channel query sql
|
|
var audititemschannel = _B_Audit_Items.InitChannlquery(audititems);
|
|
|
|
StringBuilder QueryTimes= new StringBuilder();
|
|
|
|
foreach (var item in B_Audit_Items_BL.SortTrees(audititems))
|
|
{
|
|
var categorieskv = new Dictionary<string, ExportAudit.Category>();
|
|
foreach (var sqlitem in auditquerysql)
|
|
{
|
|
var querysql = sqlitem.Querytemp;
|
|
if (!string.IsNullOrEmpty(item.Channel))
|
|
{
|
|
querysql = querysql.Replace("@channelquery", string.Format("where {0}", item.Channelquery));
|
|
}
|
|
|
|
if (!string.IsNullOrEmpty(item.Subqueryitems) && !string.IsNullOrEmpty(sqlitem.Subquery))
|
|
{
|
|
var subquerysqllist = new List<string>();
|
|
var subitemkv = JsonHelper.FromJson<ConcurrentDictionary<string, string>>(item.Subqueryitems);
|
|
var subquerykv = JsonHelper.FromJson<ConcurrentDictionary<string, string>>(sqlitem.Subquery);
|
|
|
|
foreach (var subitem in subitemkv)
|
|
{
|
|
var subquerysql = "";
|
|
if (subquerykv.TryGetValue(subitem.Key, out subquerysql))
|
|
{
|
|
subquerysql = subquerysql.Replace(string.Format("@{0}", subitem.Key), subitem.Value);
|
|
subquerysqllist.Add(subquerysql);
|
|
}
|
|
}
|
|
var subquerysqlstr = string.Join(" and ", subquerysqllist.ToArray());
|
|
|
|
querysql = querysql.Replace("@subquery", string.Format(" and {0}", subquerysqlstr));
|
|
|
|
}
|
|
querysql = querysql.Replace("@timeend", string.Format("'{0}'", fdate));
|
|
querysql = querysql.Replace("@channelquery", "where 1=1").Replace("@subquery", "");
|
|
|
|
//如果查询语句中没有where就
|
|
if (!querysql.Contains("where") && querysql.Contains("and"))
|
|
{
|
|
var index = querysql.IndexOf("and");
|
|
querysql = querysql.Remove(index, 3).Insert(index, "where");
|
|
}
|
|
|
|
Logger.Info(string.Format("{0},{1},\r\n{2}", item.Item, sqlitem.Name, querysql));
|
|
stopwatch.Restart();
|
|
var kvlist = _B_Audit_Querysql.ExcultQuery(querysql);
|
|
stopwatch.Stop();
|
|
if (stopwatch.ElapsedMilliseconds > 100)
|
|
{
|
|
QueryTimes.Append($"{item.Item},{sqlitem.Name},{stopwatch.ElapsedMilliseconds}\r\n");
|
|
}
|
|
Logger.Info(string.Format("耗时:[{0}]结果:\r\n{1}", stopwatch.ElapsedMilliseconds, kvlist.ToJson()));
|
|
var categorie = new ExportAudit.Category { key = sqlitem.QueryKey, name = sqlitem.Name, keyValues = kvlist };
|
|
|
|
categorieskv.Add(categorie.key, categorie);
|
|
}
|
|
exportItems.Add(new ExportAudit.ExportItem { id = item.Id, Name = item.Item, categorieskv = categorieskv });
|
|
}
|
|
|
|
Logger.Info(QueryTimes.ToString());
|
|
|
|
return exportItems;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
} |