Commit 65334be3 by Neo Turing

支持多节点统计

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