Commit 65334be3 by Neo Turing

支持多节点统计

parent 9b32e4cf
......@@ -32,6 +32,6 @@ using System.Runtime.InteropServices;
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("5.4.2024.5280")]
[assembly: AssemblyFileVersion("5.4.2024.5280")]
[assembly: AssemblyVersion("5.4.2024.6200")]
[assembly: AssemblyFileVersion("5.4.2024.6200")]
......@@ -15,6 +15,7 @@ namespace Jst.Lims.Timeliness
public class TimelineStatistic
{
public Guid Kvid { get; set; }
public Guid PolicyNodeKvid { get; set; }
public Guid RootKvid { get; set; }
......@@ -61,7 +62,7 @@ namespace Jst.Lims.Timeliness
[RequiresAnyRole(SystemRoles.Everyone)]
public class TimelineStatisticDataEntry : RestfulExecution<TimelineStatistic>
{
public Guid PolicyNodeKvid { get; set; }
public List<Guid> PolicyNodeKvids { get; set; }
/// <summary>
/// 统计的开始日期
......@@ -102,8 +103,8 @@ namespace Jst.Lims.Timeliness
var query = conn.From<Timeline>();
query.LeftJoin<Report>((o, r) => o.BizKvid == r.Kvid);
if (PolicyNodeKvid == Guid.Empty) query.Where<Timeline>(o => o.PreKvid == Guid.Empty && o.RootKvid == o.Kvid);//不指定节点,就查根节点
else query.Where<Timeline>(o => o.PolicyNodeKvid == PolicyNodeKvid && o.PreKvid != Guid.Empty);//指定节点,不能包含根节点
if (PolicyNodeKvids.IsNullOrEmpty()) query.Where<Timeline>(o => o.PreKvid == Guid.Empty && o.RootKvid == o.Kvid);//不指定节点,就查根节点
else query.Where<Timeline>(o => Sql.In(o.PolicyNodeKvid, PolicyNodeKvids) && o.PreKvid != Guid.Empty);//指定节点,不能包含根节点
query.Where<Report>(o => o.DeadDate >= BeginDate && o.DeadDate <= EndDate && Sql.In(o.TypeEx, "W", "Z"));//只查看不加急并且要求完成日期在所选范围内的时效记录
query.And<Report>(o => !o.ReportId.ToLower().Contains("test"));
if (Urgent != null)
......@@ -112,12 +113,14 @@ namespace Jst.Lims.Timeliness
else query.And<Report>(o => o.UrgentRate == 1);
}
query.And<Report>(o => (o.BizType != "G0" && o.BizType != "G1") || o.BizType == null);
query.OrderBy<Report>(o => o.DeadDate);
query.OrderBy<Timeline>(o => o.PolicyNodeKvid);
query.ThenBy<Report>(o => o.DeadDate);
query.Select<Timeline, Report>((o, r) => new
{
o.Kvid,
o.RootKvid,
o.ParentKvid,
o.PolicyNodeKvid,
o.OperatorName,
o.OwnerKvid,
o.OwnerName,
......@@ -142,7 +145,7 @@ namespace Jst.Lims.Timeliness
}
if (Grouped)
{
if (PolicyNodeKvid == Guid.Empty)//不按照节点Group统计,按照整个报告的时效进行统计
if (PolicyNodeKvids.IsNullOrEmpty())//不按照节点Group统计,按照整个报告的时效进行统计
{
var group = results.GroupBy(o => o.ReportDeadDate);
foreach (var kv in group)
......@@ -196,7 +199,7 @@ namespace Jst.Lims.Timeliness
}
else//按照节点Group
{
var group = results.GroupBy(o => new { o.ReportDeadDate, o.Title });
var group = results.GroupBy(o => new { o.PolicyNodeKvid,o.ReportDeadDate, o.Title });
foreach (var kv in group)
{
......@@ -229,6 +232,7 @@ namespace Jst.Lims.Timeliness
break;
}
var total = new TimelineStatistic();
total.PolicyNodeKvid = kv.Key.PolicyNodeKvid;
total.ReportDeadDate = kv.Key.ReportDeadDate;
total.Title = kv.Key.Title;
total.Quantity = kv.Count();
......@@ -259,7 +263,7 @@ namespace Jst.Lims.Timeliness
[RequiresAnyRole(SystemRoles.Everyone)]
public class TimelineStatisticCommission : RestfulExecution<TimelineStatistic>
{
public Guid PolicyNodeKvid { get; set; }
public List<Guid> PolicyNodeKvids { get; set; }
/// <summary>
/// 统计的开始日期
......@@ -300,8 +304,8 @@ namespace Jst.Lims.Timeliness
var query = conn.From<Timeline>();
query.LeftJoin<Report>((o, r) => o.BizKvid == r.Kvid);
if (PolicyNodeKvid == Guid.Empty) query.Where<Timeline>(o => o.PreKvid == Guid.Empty && o.RootKvid == o.Kvid);//不指定节点,就查根节点
else query.Where<Timeline>(o => o.PolicyNodeKvid == PolicyNodeKvid && o.PreKvid != Guid.Empty);//指定节点,不能包含根节点
if (PolicyNodeKvids.IsNullOrEmpty()) query.Where<Timeline>(o => o.PreKvid == Guid.Empty && o.RootKvid == o.Kvid);//不指定节点,就查根节点
else query.Where<Timeline>(o => Sql.In(o.PolicyNodeKvid , PolicyNodeKvids) && o.PreKvid != Guid.Empty);//指定节点,不能包含根节点
query.Where<Report>(o => o.DealDate >= BeginDate && o.DealDate <= EndDate && Sql.In(o.TypeEx, "W", "Z"));//只查看不加急并且要求完成日期在所选范围内的时效记录
query.And<Report>(o => !o.ReportId.ToLower().Contains("test"));
if (Urgent != null)
......@@ -310,12 +314,14 @@ namespace Jst.Lims.Timeliness
else query.And<Report>(o => o.UrgentRate == 1);
}
query.And<Report>(o => (o.BizType != "G0" && o.BizType != "G1") || o.BizType == null);
query.OrderBy<Report>(o => o.DealDate);
query.OrderBy<Timeline>(o => o.PolicyNodeKvid);
query.ThenBy<Report>(o => o.DealDate);
query.Select<Timeline, Report>((o, r) => new
{
o.Kvid,
o.RootKvid,
o.ParentKvid,
o.PolicyNodeKvid,
o.OwnerKvid,
o.OwnerName,
o.OperatorName,
......@@ -340,7 +346,7 @@ namespace Jst.Lims.Timeliness
}
if (Grouped)
{
if (PolicyNodeKvid == Guid.Empty)//不按照节点Group统计,按照整个报告的时效进行统计
if (PolicyNodeKvids.IsNullOrEmpty())//不按照节点Group统计,按照整个报告的时效进行统计
{
var group = results.GroupBy(o => o.ReportDealDate);
foreach (var kv in group)
......@@ -382,10 +388,11 @@ namespace Jst.Lims.Timeliness
}
else//按照节点Group
{
var group = results.GroupBy(o => new { o.ReportDealDate, o.Title });
var group = results.GroupBy(o => new { o.PolicyNodeKvid,o.ReportDealDate, o.Title });
foreach (var kv in group)
{
var total = new TimelineStatistic();
total.PolicyNodeKvid = kv.Key.PolicyNodeKvid;
total.ReportDealDate = kv.Key.ReportDealDate;
total.Title = kv.Key.Title;
total.Quantity = kv.Count();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment