@@ -922,9 +922,19 @@ namespace Learun.Application.Web.Areas.LR_NewWorkFlow.Controllers | |||||
/// </summary> | /// </summary> | ||||
/// <param name="queryJson"></param> | /// <param name="queryJson"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
public ActionResult GetStatisticCountData() | |||||
public ActionResult GetStatisticCountData(string queryJson) | |||||
{ | { | ||||
var taskdata = nWFTaskIBLL.GetFinishTaskList(); | var taskdata = nWFTaskIBLL.GetFinishTaskList(); | ||||
if (!string.IsNullOrEmpty(queryJson)) | |||||
{ | |||||
var queryParam = queryJson.ToJObject(); | |||||
if (!queryParam["year"].IsEmpty()) | |||||
{ | |||||
var year = queryParam["year"].ToInt(); | |||||
taskdata = taskdata.Where(x => x.F_ModifyDate.HasValue && x.F_ModifyDate.Value.Year == year); | |||||
} | |||||
} | |||||
var taskgroup = taskdata.GroupBy(x => new { x.F_ModifyUserId, x.F_ModifyUserName }).Select(x => new | var taskgroup = taskdata.GroupBy(x => new { x.F_ModifyUserId, x.F_ModifyUserName }).Select(x => new | ||||
{ | { | ||||
userId = x.Key.F_ModifyUserId, | userId = x.Key.F_ModifyUserId, | ||||
@@ -8,6 +8,14 @@ | |||||
<div class="lr-layout-center"> | <div class="lr-layout-center"> | ||||
<div class="lr-layout-wrap lr-layout-wrap-notitle"> | <div class="lr-layout-wrap lr-layout-wrap-notitle"> | ||||
<div class="lr-layout-tool"> | <div class="lr-layout-tool"> | ||||
<div class="lr-layout-tool-left"> | |||||
<div class="lr-layout-tool-item"> | |||||
<input id="year" type="text" class="form-control lr-input-wdatepicker" onfocus="WdatePicker({ dateFmt:'yyyy',onpicked: function () { $('#year').trigger('change'); } })" placeholder="请选择年" /> | |||||
</div> | |||||
<div class="lr-layout-tool-item"> | |||||
<a id="btn_Search" class="btn btn-primary btn-sm"><i class="fa fa-search"></i> <span class="lrlt">查询</span></a> | |||||
</div> | |||||
</div> | |||||
<div class="lr-layout-tool-right"> | <div class="lr-layout-tool-right"> | ||||
<div class="btn-group btn-group-sm" learun-authorize="yes"> | <div class="btn-group btn-group-sm" learun-authorize="yes"> | ||||
<a id="lr-replace" class="btn btn-default"><i class="fa fa-refresh"></i> <span class="lrlt">刷新</span></a> | <a id="lr-replace" class="btn btn-default"><i class="fa fa-refresh"></i> <span class="lrlt">刷新</span></a> | ||||
@@ -1,24 +1,35 @@ | |||||
| | ||||
var bootstrap = function ($, learun) { | var bootstrap = function ($, learun) { | ||||
"use strict"; | "use strict"; | ||||
var year = ""; | |||||
var page = { | var page = { | ||||
init: function () { | init: function () { | ||||
page.bind(); | page.bind(); | ||||
page.initChart(); | page.initChart(); | ||||
}, | }, | ||||
bind: function () { | bind: function () { | ||||
//当前年 | |||||
var now = learun.formatDate(new Date(), 'yyyy'); | |||||
$('#year').val(now); | |||||
year = now; | |||||
// 刷新 | // 刷新 | ||||
$('#lr-replace').on('click', function () { | $('#lr-replace').on('click', function () { | ||||
location.reload(); | location.reload(); | ||||
}); | }); | ||||
//查询 | |||||
$('#btn_Search').on('click', function () { | |||||
year = $('#year').val(); | |||||
page.search(); | |||||
}); | |||||
}, | }, | ||||
initChart: function () { | initChart: function () { | ||||
var myChart1 = echarts.init(document.getElementById('main')); | var myChart1 = echarts.init(document.getElementById('main')); | ||||
learun.httpAsyncPost(top.$.rootUrl + "/LR_NewWorkFlow/NWFProcess/GetStatisticCountData", { }, function (res) { | |||||
var queryJson = { year: year }; | |||||
learun.httpAsyncPost(top.$.rootUrl + "/LR_NewWorkFlow/NWFProcess/GetStatisticCountData", { queryJson: JSON.stringify(queryJson)}, function (res) { | |||||
if (res.code == 200) { | if (res.code == 200) { | ||||
var option1 = { | var option1 = { | ||||
title: { | title: { | ||||
text: '审批次数分析图', | |||||
text: year + '年流程审批次数分析图', | |||||
x: 'center' | x: 'center' | ||||
}, | }, | ||||
tooltip: { | tooltip: { | ||||
@@ -52,6 +63,11 @@ var bootstrap = function ($, learun) { | |||||
} | } | ||||
}); | }); | ||||
}, | }, | ||||
search: function (param) { | |||||
param = param || {}; | |||||
param.year = year; | |||||
page.initChart(); | |||||
} | |||||
}; | }; | ||||
page.init(); | page.init(); | ||||
@@ -20,6 +20,7 @@ namespace Learun.Application.Web.Areas.LR_ReportModule.Controllers | |||||
{ | { | ||||
private WfSchemeIBLL wfSchemeIBLL = new WfSchemeBLL(); | private WfSchemeIBLL wfSchemeIBLL = new WfSchemeBLL(); | ||||
private DataItemIBLL dataItemIBLL = new DataItemBLL(); | private DataItemIBLL dataItemIBLL = new DataItemBLL(); | ||||
private NWFSchemeIBLL nWFSchemeIBLL = new NWFSchemeBLL(); | |||||
#region 视图功能 | #region 视图功能 | ||||
/// <summary> | /// <summary> | ||||
/// 采购报表 | /// 采购报表 | ||||
@@ -130,20 +131,20 @@ namespace Learun.Application.Web.Areas.LR_ReportModule.Controllers | |||||
{ | { | ||||
var usedata = wfSchemeIBLL.GetWfSchemeUseList(queryJson).ToList(); | var usedata = wfSchemeIBLL.GetWfSchemeUseList(queryJson).ToList(); | ||||
var data = usedata.GroupBy(x => new { x.F_Category ,x.F_Code}).Select(x => new | |||||
var data = usedata.GroupBy(x => new { x.F_Category, x.F_Code }).Select(x => new | |||||
{ | { | ||||
category=x.Key.F_Category, | |||||
code=x.Key.F_Code, | |||||
category = x.Key.F_Category, | |||||
code = x.Key.F_Code, | |||||
name = x.Select(y => y.F_Name).FirstOrDefault(), | name = x.Select(y => y.F_Name).FirstOrDefault(), | ||||
kind=x.Select(y => y.F_Kind).FirstOrDefault(), | |||||
kind = x.Select(y => y.F_Kind).FirstOrDefault(), | |||||
total = x.Select(y => y.F_Id).Count() | total = x.Select(y => y.F_Id).Count() | ||||
}).OrderByDescending(m=>m.total).ToList(); | |||||
}).OrderByDescending(m => m.total).ToList(); | |||||
return JsonResult(data); | return JsonResult(data); | ||||
} | } | ||||
/// <summary> | /// <summary> | ||||
/// 获取图表数据 | |||||
/// 获取流程报表图表数据 | |||||
/// </summary> | /// </summary> | ||||
/// <param name="queryJson"></param> | /// <param name="queryJson"></param> | ||||
/// <returns></returns> | /// <returns></returns> | ||||
@@ -219,6 +220,104 @@ namespace Learun.Application.Web.Areas.LR_ReportModule.Controllers | |||||
return Success(jsonData); | return Success(jsonData); | ||||
} | } | ||||
/// <summary> | |||||
/// 获取新版流程报表数据 | |||||
/// </summary> | |||||
/// <returns></returns> | |||||
[HttpGet] | |||||
public ActionResult GetNWFSchemeReportList(string queryJson) | |||||
{ | |||||
var usedata = nWFSchemeIBLL.GetNWFSchemeUseList(queryJson).ToList(); | |||||
var data = usedata.GroupBy(x => new { x.F_Category, x.F_Code, x.F_Name }).Select(x => new | |||||
{ | |||||
category = x.Key.F_Category, | |||||
code = x.Key.F_Code, | |||||
name = x.Key.F_Name, | |||||
kind = x.Select(y => y.F_Kind).FirstOrDefault(), | |||||
total = x.Where(y => !string.IsNullOrEmpty(y.F_ProcessId)).Count() | |||||
}).OrderByDescending(m => m.total).ToList(); | |||||
return JsonResult(data); | |||||
} | |||||
/// <summary> | |||||
/// 获取新版流程报表图表数据 | |||||
/// </summary> | |||||
/// <param name="queryJson"></param> | |||||
/// <returns></returns> | |||||
public ActionResult GetNWFSchemeUseList(string queryJson) | |||||
{ | |||||
var categorydata = dataItemIBLL.GetDetailList("FlowSort"); | |||||
var usedata = nWFSchemeIBLL.GetNWFSchemeUseList(queryJson).ToList(); | |||||
var aa = usedata.GroupBy(x => x.F_Category).Select(x => new WfSchemeReportModelOfPie() | |||||
{ | |||||
name = x.Key, | |||||
value = x.Where(y => !string.IsNullOrEmpty(y.F_ProcessId)).Count() | |||||
}); | |||||
var bb = usedata.Where(x => x.F_CreateDate.HasValue).GroupBy(x => new { x.F_Category, x.F_CreateDate.Value.Month }).Select(x => new | |||||
{ | |||||
name = x.Key.F_Category, | |||||
month = x.Key.Month, | |||||
value = x.Select(y => y.F_ProcessId).Count() | |||||
}); | |||||
var legendData = new List<string>(); | |||||
var seriesData = new List<WfSchemeReportModelOfPie>(); | |||||
var seriesLineData = new List<WfSchemeReportModelOfLine>(); | |||||
var xAxis = new List<string>(); | |||||
for (int i = 0; i < 12; i++) | |||||
{ | |||||
xAxis.Add(string.Format("{0}月", i + 1)); | |||||
} | |||||
foreach (var category in categorydata) | |||||
{ | |||||
//饼图项 | |||||
legendData.Add(category.F_ItemName); | |||||
//饼图数据 | |||||
var model = new WfSchemeReportModelOfPie() | |||||
{ | |||||
value = aa.FirstOrDefault(x => x.name == category.F_ItemValue) == null ? 0 : aa.FirstOrDefault(x => x.name == category.F_ItemValue).value, | |||||
name = category.F_ItemName | |||||
}; | |||||
seriesData.Add(model); | |||||
//折线图数据 | |||||
var monthData = new List<int>(); | |||||
for (int i = 0; i < 12; i++) | |||||
{ | |||||
monthData.Add(0); | |||||
} | |||||
var linemodel = new WfSchemeReportModelOfLine() | |||||
{ | |||||
name = category.F_ItemName, | |||||
type = "line", | |||||
stack = "次数", | |||||
data = monthData | |||||
}; | |||||
var bbb = bb.Where(x => x.name == category.F_ItemValue); | |||||
if (bbb.Any()) | |||||
{ | |||||
foreach (var bbbb in bbb) | |||||
{ | |||||
linemodel.data[bbbb.month - 1] = bbbb.value; | |||||
} | |||||
} | |||||
seriesLineData.Add(linemodel); | |||||
} | |||||
var jsonData = new | |||||
{ | |||||
legendData = legendData, | |||||
seriesData = seriesData, | |||||
seriesLineData = seriesLineData, | |||||
xAxis = xAxis | |||||
}; | |||||
return Success(jsonData); | |||||
} | |||||
#endregion | #endregion | ||||
} | } | ||||
} | } |
@@ -1,6 +1,6 @@ | |||||
| | ||||
@{ | @{ | ||||
ViewBag.Title = "流程报表"; | |||||
ViewBag.Title = "流程使用报表"; | |||||
Layout = "~/Views/Shared/_ReportTemplate.cshtml"; | Layout = "~/Views/Shared/_ReportTemplate.cshtml"; | ||||
} | } | ||||
@@ -25,10 +25,22 @@ | |||||
initGrid: function () { | initGrid: function () { | ||||
$(".lr-layout-grid").height($(window).height() - 110); | $(".lr-layout-grid").height($(window).height() - 110); | ||||
$('#gridtable').jfGrid({ | $('#gridtable').jfGrid({ | ||||
url: top.$.rootUrl + '/LR_ReportModule/ReportTemplate/GetWfSchemeReportList', | |||||
url: top.$.rootUrl + '/LR_ReportModule/ReportTemplate/GetNWFSchemeReportList', | |||||
headData: [ | headData: [ | ||||
{ name: "category", label: "分类", width: 100, align: "center" }, | |||||
{ name: "name", label: "名称", width: 150, align: "center" }, | |||||
{ name: "code", label: "编号", width: 200, align: "left" }, | |||||
{ name: "name", label: "名称", width: 200, align: "left" }, | |||||
{ | |||||
name: "category", label: "分类", width: 100, align: "center", | |||||
formatterAsync: function (callback, value, row) { | |||||
learun.clientdata.getAsync('dataItem', { | |||||
key: value, | |||||
code: 'FlowSort', | |||||
callback: function (_data) { | |||||
callback(_data.text); | |||||
} | |||||
}); | |||||
} | |||||
}, | |||||
{ | { | ||||
name: "kind", label: "类型", width: 100, align: "center", | name: "kind", label: "类型", width: 100, align: "center", | ||||
formatter: function (cellvalue, row) { | formatter: function (cellvalue, row) { | ||||
@@ -39,7 +51,7 @@ | |||||
} | } | ||||
} | } | ||||
}, | }, | ||||
{ name: "total", label: "次数", width: 200, align: "center" } | |||||
{ name: "total", label: "次数", width: 200, align: "center", statistics: true } | |||||
] | ] | ||||
}); | }); | ||||
page.search(); | page.search(); | ||||
@@ -48,7 +60,7 @@ | |||||
var myChart1 = echarts.init(document.getElementById('main')); | var myChart1 = echarts.init(document.getElementById('main')); | ||||
var myChart2 = echarts.init(document.getElementById('main1')); | var myChart2 = echarts.init(document.getElementById('main1')); | ||||
var queryJson = { year: year }; | var queryJson = { year: year }; | ||||
learun.httpAsyncPost(top.$.rootUrl + "/LR_ReportModule/ReportTemplate/GetWfSchemeUseList", { queryJson: JSON.stringify(queryJson) }, function (res) { | |||||
learun.httpAsyncPost(top.$.rootUrl + "/LR_ReportModule/ReportTemplate/GetNWFSchemeUseList", { queryJson: JSON.stringify(queryJson) }, function (res) { | |||||
if (res.code == 200) { | if (res.code == 200) { | ||||
var option1 = { | var option1 = { | ||||
title: { | title: { | ||||
@@ -1,4 +1,5 @@ | |||||
using Learun.Util; | using Learun.Util; | ||||
using System; | |||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
namespace Learun.Application.WorkFlow | namespace Learun.Application.WorkFlow | ||||
@@ -155,5 +156,33 @@ namespace Learun.Application.WorkFlow | |||||
nWFSchemeService.UpdateState(schemeInfoId, state); | nWFSchemeService.UpdateState(schemeInfoId, state); | ||||
} | } | ||||
#endregion | #endregion | ||||
#region 扩展数据 | |||||
/// <summary> | |||||
/// 获取流程模板使用次数列表 | |||||
/// </summary> | |||||
/// <param name="queryJson">查询参数</param> | |||||
/// <returns></returns> | |||||
public IEnumerable<NWFSchemeInfoEntity> GetNWFSchemeUseList(string queryJson) | |||||
{ | |||||
try | |||||
{ | |||||
return nWFSchemeService.GetNWFSchemeUseList(queryJson); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (ex is ExceptionEx) | |||||
{ | |||||
throw; | |||||
} | |||||
else | |||||
{ | |||||
throw ExceptionEx.ThrowBusinessException(ex); | |||||
} | |||||
} | |||||
} | |||||
#endregion | |||||
} | } | ||||
} | } |
@@ -100,5 +100,16 @@ namespace Learun.Application.WorkFlow | |||||
/// <param name="state">状态1启用0禁用</param> | /// <param name="state">状态1启用0禁用</param> | ||||
void UpdateState(string schemeInfoId, int state); | void UpdateState(string schemeInfoId, int state); | ||||
#endregion | #endregion | ||||
#region 扩展数据 | |||||
/// <summary> | |||||
/// 获取流程模板使用次数列表 | |||||
/// </summary> | |||||
/// <param name="queryJson">查询参数</param> | |||||
/// <returns></returns> | |||||
IEnumerable<NWFSchemeInfoEntity> GetNWFSchemeUseList(string queryJson); | |||||
#endregion | |||||
} | } | ||||
} | } |
@@ -124,6 +124,12 @@ namespace Learun.Application.WorkFlow | |||||
/// <returns></returns> | /// <returns></returns> | ||||
[NotMapped] | [NotMapped] | ||||
public string F_CreateUserName { get; set; } | public string F_CreateUserName { get; set; } | ||||
/// <summary> | |||||
/// 流程主键 | |||||
/// </summary> | |||||
/// <returns></returns> | |||||
[NotMapped] | |||||
public string F_ProcessId { get; set; } | |||||
#endregion | #endregion | ||||
} | } | ||||
} | } |
@@ -467,5 +467,47 @@ namespace Learun.Application.WorkFlow | |||||
} | } | ||||
} | } | ||||
#endregion | #endregion | ||||
#region 扩展数据 | |||||
/// <summary> | |||||
/// 获取流程模板使用次数列表 | |||||
/// </summary> | |||||
/// <param name="queryJson">查询参数</param> | |||||
/// <returns></returns> | |||||
public IEnumerable<NWFSchemeInfoEntity> GetNWFSchemeUseList(string queryJson) | |||||
{ | |||||
try | |||||
{ | |||||
var dp = new object(); | |||||
var queryParam = queryJson.ToJObject(); | |||||
var strSql = new StringBuilder(); | |||||
strSql.Append("select si.*,p.F_Id as F_ProcessId,p.F_CreateDate from LR_NWF_SchemeInfo si"); | |||||
strSql.Append(" left join LR_NWF_Scheme s on si.F_Id=s.F_SchemeInfoId and s.F_Type=1 "); | |||||
strSql.Append(" left join LR_NWF_Process p on s.F_Id=p.F_SchemeId "); | |||||
if (!queryParam["year"].IsEmpty()) | |||||
{ | |||||
dp = new { year = queryParam["year"].ToInt() }; | |||||
strSql.Append(" and DATEPART(yyyy,p.F_CreateDate) = @year "); | |||||
} | |||||
strSql.Append(" where si.F_EnabledMark=1 "); | |||||
return this.BaseRepository().FindList<NWFSchemeInfoEntity>(strSql.ToString(), dp); | |||||
} | |||||
catch (Exception ex) | |||||
{ | |||||
if (ex is ExceptionEx) | |||||
{ | |||||
throw; | |||||
} | |||||
else | |||||
{ | |||||
throw ExceptionEx.ThrowServiceException(ex); | |||||
} | |||||
} | |||||
} | |||||
#endregion | |||||
} | } | ||||
} | } |