完成数据分析
This commit is contained in:
parent
155afa715d
commit
47c7fa9ca7
|
|
@ -12,6 +12,7 @@ import org.slf4j.LoggerFactory;
|
|||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Controller;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.ResponseBody;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
|
@ -52,7 +53,7 @@ public class DataAnalysisController extends BaseController{
|
|||
public ModelAndView defaultHandle(HttpServletRequest req,
|
||||
HttpServletResponse res) throws Exception {
|
||||
req.setAttribute("users", getSubmitUsers(req));
|
||||
return new ModelAndView("dataAnalysis");
|
||||
return new ModelAndView("dfm/dataAnalysis");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -154,7 +155,8 @@ public class DataAnalysisController extends BaseController{
|
|||
* @throws Exception
|
||||
*/
|
||||
@RequestMapping("/analysis")
|
||||
public void analysis(HttpServletRequest req, HttpServletResponse res) throws Exception {
|
||||
@ResponseBody
|
||||
public Result analysis(HttpServletRequest req, HttpServletResponse res) throws Exception {
|
||||
String projectName = req.getParameter("projectName");
|
||||
String submitUser = req.getParameter("submitUser");
|
||||
|
||||
|
|
@ -163,10 +165,8 @@ public class DataAnalysisController extends BaseController{
|
|||
|
||||
String analysisType = req.getParameter("analysisType");
|
||||
|
||||
//List<DataAnalysisBean> data = null;
|
||||
Map<String, Object> data = new TreeMap<>();
|
||||
|
||||
UserInfo currentUser = getUserInfo(req);
|
||||
//获取当前登陆用户的用户组
|
||||
//分析原则:系统管理员分析所有的,部门管理员只能分析本部门的,普通用户只能分析自己的
|
||||
|
||||
|
|
@ -174,7 +174,8 @@ public class DataAnalysisController extends BaseController{
|
|||
//校验projectName是否是当前用户可以看到的
|
||||
Result checkResult = checkProjectNameByLoginUser(req, res);
|
||||
if(null == checkResult || !checkResult.isSuccess()) {
|
||||
outputJson(res, JSON.toJSONString(checkResult));
|
||||
// outputJson(res, JSON.toJSONString(checkResult));
|
||||
return checkResult;
|
||||
}
|
||||
|
||||
List<DataAnalysisBean> result = dataAnalysisService.analysisByProject(projectName, startSubmitTime, endSubmitTime);
|
||||
|
|
@ -256,8 +257,8 @@ public class DataAnalysisController extends BaseController{
|
|||
Result result = new Result();
|
||||
result.setSuccess(false);
|
||||
result.setMessage("分析失败,未选择分析类型!");
|
||||
outputJson(res, JSON.toJSONString(result));
|
||||
return;
|
||||
// outputJson(res, JSON.toJSONString(result));
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -266,7 +267,8 @@ public class DataAnalysisController extends BaseController{
|
|||
result.setSuccess(true);
|
||||
result.setMessage("分析成功");
|
||||
result.setData(data);
|
||||
outputJson(res, JSON.toJSONString(result));
|
||||
// outputJson(res, JSON.toJSONString(result));
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,498 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
|
||||
<head>
|
||||
<th:block th:include="include :: header('数据分析')" />
|
||||
<th:block th:include="include :: select2-css" />
|
||||
</head>
|
||||
<body class="gray-bg">
|
||||
<div class="container-div">
|
||||
|
||||
<div class="main-content">
|
||||
<form id="dataAnalysisForm" class="form-horizontal">
|
||||
<h4 class="form-header h4">数据分析</h4>
|
||||
<div class="row">
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group">
|
||||
<div class="col-sm-1" style="text-align:right;">
|
||||
<label class="check-box">
|
||||
<input type="checkbox" name="analysisType" value="submitProject">
|
||||
</label>
|
||||
</div>
|
||||
<label class="col-sm-2 control-label">项目描述:</label>
|
||||
<div class="col-sm-7">
|
||||
<input name="projectName" id="projectName" placeholder="请输入项目名称" class="form-control" type="text" maxlength="30" >
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group">
|
||||
<div class="col-sm-1" style="text-align:right;">
|
||||
<label class="check-box">
|
||||
<input type="checkbox" name="analysisType" value="submitUser">
|
||||
</label>
|
||||
</div>
|
||||
<label class="col-sm-2 control-label">上传人:</label>
|
||||
<div class="col-sm-7">
|
||||
<select name="submitUser" id="submitUser" class="form-control m-b">
|
||||
<option value="-1">--请选择--</option>
|
||||
<option th:each="user : ${users}" th:text="${user.username}" th:value="${user.username}"></option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group">
|
||||
<div class="col-sm-1" style="text-align:right;"></div>
|
||||
<label class="col-sm-2 control-label is-required">上传时间段:</label>
|
||||
<div class="select-time col-sm-7">
|
||||
<input type="text" style="width: 200px;display: inline" class="form-control time-input" id="startSubmitTime" placeholder="开始时间" name="startSubmitTime" required readOnly/>
|
||||
<span>-</span>
|
||||
<input type="text" style="width: 200px;display: inline" class="form-control time-input" id="endSubmitTime" placeholder="结束时间" name="endSubmitTime" required readOnly/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-10" >
|
||||
<div class="form-group">
|
||||
<div class="col-sm-1"></div>
|
||||
<label class="col-sm-2 control-label">所有用户:</label>
|
||||
<div class="col-sm-7">
|
||||
<label class="check-box">
|
||||
<input type="checkbox" name="analysisType" value="allUser" >
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-10" >
|
||||
<div class="form-group">
|
||||
<div class="col-sm-1"></div>
|
||||
<label class="col-sm-2 control-label">所有问题:</label>
|
||||
<div class="col-sm-7">
|
||||
<label class="check-box">
|
||||
<input type="checkbox" name="analysisType" value="allIssue" checked="checked">
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-offset-5 col-sm-10">
|
||||
<button type="button" class="btn btn-sm btn-primary" onclick="submitAnalysis()"><i class="fa fa-check"></i>提 交</button>
|
||||
<button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
|
||||
<div class="col-sm-12 select-table table-striped" >
|
||||
<table id="analysisResultTable"></table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div id="analysisResultChart" style="width:98%;height:400px;"></div>
|
||||
</div>
|
||||
<th:block th:include="include :: footer" />
|
||||
<script th:inline="javascript">
|
||||
|
||||
var prefix = ctx + "dataAnalysis.do";
|
||||
|
||||
$(function() {
|
||||
|
||||
var options = {
|
||||
sortName: "roleSort",
|
||||
modalName: "用户数据分析",
|
||||
pagination: false,
|
||||
columns: [
|
||||
{
|
||||
field: 'submitUserName',
|
||||
title: '上传人',
|
||||
sortable: true
|
||||
},
|
||||
{
|
||||
field: 'issueQty',
|
||||
title: '问题数量',
|
||||
sortable: true
|
||||
}
|
||||
]
|
||||
};
|
||||
$.table.init(options);
|
||||
|
||||
});
|
||||
|
||||
/**
|
||||
* 初始化
|
||||
*/
|
||||
$(document).ready(function(){
|
||||
|
||||
$.each($("input:checkbox[name='analysisType']"), function(i, obj){
|
||||
$(this).on("ifClicked",function(){
|
||||
$.each($("input:checkbox[name='analysisType']"), function(i, obj){
|
||||
$(this).iCheck('uncheck');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
//设置时间默认值
|
||||
var today = new Date();
|
||||
var endSubmitTime = today.getFullYear().toString() + '-'+addzero(today.getMonth() + 1) + '-' + addzero(today.getDate());
|
||||
$('#endSubmitTime').val(endSubmitTime);
|
||||
|
||||
//
|
||||
var startTime = new Date(today.getFullYear(),today.getMonth() - 3 ,today.getDate());
|
||||
var startSubmitTime = startTime.getFullYear().toString() + '-'+addzero(startTime.getMonth() + 1) + '-' + addzero(startTime.getDate());
|
||||
$('#startSubmitTime').val(startSubmitTime);
|
||||
|
||||
});
|
||||
|
||||
function addzero(v) {
|
||||
if (v < 10) return '0' + v;
|
||||
return v.toString();
|
||||
}
|
||||
|
||||
//提交分析
|
||||
function submitAnalysis(){
|
||||
|
||||
//验证业务选择条件
|
||||
var analysisType = $("[name='analysisType']:checked").val();
|
||||
|
||||
if(!analysisType) {
|
||||
$.modal.alertError("请选择分析类型");
|
||||
return false;
|
||||
}
|
||||
|
||||
if("submitUser" == analysisType) {
|
||||
if($("#submitUser").val().trim() == "") {
|
||||
$.modal.alertError("请填写提交人");
|
||||
return false;
|
||||
}
|
||||
} else if("submitProject" == analysisType) {
|
||||
if($("#projectName").val().trim() == "") {
|
||||
$.modal.alertError("请填写项目描述");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
var data = $("#dataAnalysisForm").serialize();
|
||||
|
||||
$.ajax({
|
||||
url: prefix + "/analysis",
|
||||
data: data,
|
||||
cache:false,
|
||||
dataType:"json",
|
||||
success: function(json){
|
||||
//销毁表格
|
||||
$("#analysisResultTable").html("");
|
||||
//销毁图表
|
||||
$("#analysisResultChart").html("");
|
||||
var myChart = echarts.init(document.getElementById('analysisResultChart'));
|
||||
myChart.dispose();
|
||||
if (json.success) {
|
||||
$.modal.alertSuccess("分析成功");
|
||||
showAnalysisResult(json.data);
|
||||
} else {
|
||||
$.modal.alertError("分析失败,原因是:" + json.message);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
//展示分析结果
|
||||
function showAnalysisResult(data) {
|
||||
var analysisType = $("[name='analysisType']:checked").val();
|
||||
|
||||
if ("submitUser" == analysisType) {
|
||||
showAnalysisResultByUserWithTable(data);
|
||||
showAnalysisResultByUserWithChart(data);
|
||||
} else if ("submitProject" == analysisType) {
|
||||
showAnalysisResultByProjectWithTable(data);
|
||||
showAnalysisResultByProjectWithChart(data);
|
||||
} else if ("allUser" == analysisType) {
|
||||
showAnalysisResultByAllUserWithTable(data);
|
||||
showAnalysisResultByAllUserWithChart(data);
|
||||
} else if ("allIssue" == analysisType) {
|
||||
showAnalysisResultByUserWithTable(data);
|
||||
showAnalysisResultByUserWithChart(data);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//按照提交人
|
||||
function showAnalysisResultByAllUserWithTable(data) {
|
||||
|
||||
var options = {
|
||||
sortName: "roleSort",
|
||||
modalName: "问题数据分析",
|
||||
pagination: false,
|
||||
id:"analysisResultTable"
|
||||
};
|
||||
|
||||
|
||||
var table = $("#analysisResultTable");
|
||||
var result = data.result;
|
||||
var tableHtml = "";
|
||||
tableHtml += "<TABLE id=grid ";
|
||||
tableHtml += "style='BORDER-TOP-WIDTH: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-LEFT-COLOR: #cccccc;BORDER-BOTTOM-WIDTH: 0px; BORDER-BOTTOM-COLOR: #cccccc; WIDTH: 100%; BORDER-TOP-COLOR: #cccccc; FONT-STYLE: normal; BACKGROUND-COLOR: #cccccc; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: none; BORDER-RIGHT-COLOR: #cccccc'";
|
||||
tableHtml += "cellSpacing=1 cellPadding=2 rules=all border=0> ";
|
||||
tableHtml += "<TBODY>";
|
||||
tableHtml += "<TR style='FONT-WEIGHT: bold;text-align:center; FONT-STYLE: normal; BACKGROUND-COLOR: #eeeeee; TEXT-DECORATION: none'>";
|
||||
|
||||
tableHtml += "<TD>上传人</TD>";
|
||||
tableHtml += "<TD>问题数量</TD>";
|
||||
|
||||
tableHtml += "</TR>";
|
||||
|
||||
//构造数据行
|
||||
if (null == result || result.length == 0) {
|
||||
tableHtml += "<TR style='FONT-WEIGHT: normal; FONT-STYLE: normal; BACKGROUND-COLOR: white; TEXT-DECORATION: none'>";
|
||||
tableHtml += "<TD colspan=2>--没有数据--</TD>";
|
||||
tableHtml += "</TR>";
|
||||
} else {
|
||||
for (var i=0;i<result.length;i++) {
|
||||
tableHtml += "<TR style='FONT-WEIGHT: normal; FONT-STYLE: normal; BACKGROUND-COLOR: white; TEXT-DECORATION: none'>";
|
||||
tableHtml += "<TD >" + result[i].submitUserName + "</TD>";
|
||||
tableHtml += "<TD >" + result[i].issueQty + "</TD>";
|
||||
tableHtml += "</TR>";
|
||||
}
|
||||
}
|
||||
|
||||
tableHtml += "</TBODY>";
|
||||
tableHtml += "</TABLE>";
|
||||
|
||||
$(table).html(tableHtml);
|
||||
|
||||
$("#analysisResultTable").bootstrapTable(options);
|
||||
}
|
||||
|
||||
//按照提交人
|
||||
function showAnalysisResultByAllUserWithChart(data) {
|
||||
if (null == data || null == data.result) {
|
||||
return false;
|
||||
}
|
||||
var result = data.result;
|
||||
var myChart = echarts.init(document.getElementById('analysisResultChart'));
|
||||
|
||||
var xAxisData = new Array();
|
||||
var seriesData = new Array();
|
||||
|
||||
for(var i=0;i<result.length;i++) {
|
||||
xAxisData.push(result[i].submitUserName);
|
||||
seriesData.push(result[i].issueQty);
|
||||
}
|
||||
|
||||
// 指定图表的配置项和数据
|
||||
var option = {
|
||||
title: {
|
||||
text: '根据提交人数据分析图表展示'
|
||||
},
|
||||
tooltip: {},
|
||||
legend: {
|
||||
data:['问题数量']
|
||||
},
|
||||
xAxis: {
|
||||
data: xAxisData
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '问题数量',
|
||||
type: 'bar',
|
||||
data: seriesData
|
||||
}]
|
||||
};
|
||||
|
||||
// 使用刚指定的配置项和数据显示图表。
|
||||
myChart.setOption(option);
|
||||
|
||||
}
|
||||
|
||||
//按照提交人
|
||||
function showAnalysisResultByUserWithTable(data) {
|
||||
var result = data.result;
|
||||
var options = {
|
||||
sortName: "roleSort",
|
||||
modalName: "问题数据分析",
|
||||
pagination: false,
|
||||
id:"analysisResultTable",
|
||||
columns: [
|
||||
{
|
||||
field: 'issueDescription',
|
||||
title: '问题描述',
|
||||
sortable: true
|
||||
},
|
||||
{
|
||||
field: 'issueQty',
|
||||
title: '问题数量',
|
||||
sortable: true
|
||||
}
|
||||
]
|
||||
};
|
||||
$.table.init(options);
|
||||
$("#analysisResultTable").bootstrapTable('load', result);
|
||||
}
|
||||
|
||||
//按照提交人
|
||||
function showAnalysisResultByUserWithChart(data) {
|
||||
if (null == data || null == data.result) {
|
||||
return false;
|
||||
}
|
||||
var result = data.result;
|
||||
var myChart = echarts.init(document.getElementById('analysisResultChart'));
|
||||
|
||||
var xAxisData = new Array();
|
||||
var seriesData = new Array();
|
||||
|
||||
for(var i=0;i<result.length;i++) {
|
||||
xAxisData.push(result[i].issueDescription);
|
||||
seriesData.push(result[i].issueQty);
|
||||
}
|
||||
|
||||
// 指定图表的配置项和数据
|
||||
var option = {
|
||||
title: {
|
||||
text: '根据提交人数据分析图表展示'
|
||||
},
|
||||
tooltip: {},
|
||||
legend: {
|
||||
data:['问题数量']
|
||||
},
|
||||
xAxis: {
|
||||
data: xAxisData
|
||||
},
|
||||
yAxis: {},
|
||||
series: [{
|
||||
name: '问题数量',
|
||||
type: 'bar',
|
||||
data: seriesData
|
||||
}]
|
||||
};
|
||||
|
||||
// 使用刚指定的配置项和数据显示图表。
|
||||
myChart.setOption(option);
|
||||
|
||||
}
|
||||
|
||||
//按照项目
|
||||
function showAnalysisResultByProjectWithTable(data) {
|
||||
|
||||
var result = data.result;
|
||||
var versions = data.versions;
|
||||
var options = {
|
||||
sortName: "roleSort",
|
||||
modalName: "问题数据分析",
|
||||
pagination: false,
|
||||
id:"analysisResultTable"
|
||||
};
|
||||
|
||||
var table = $("#analysisResultTable");
|
||||
var tableHtml = "";
|
||||
tableHtml += "<TABLE id=grid ";
|
||||
tableHtml += "style='BORDER-TOP-WIDTH: 0px; FONT-WEIGHT: normal; BORDER-LEFT-WIDTH: 0px; BORDER-LEFT-COLOR: #cccccc;BORDER-BOTTOM-WIDTH: 0px; BORDER-BOTTOM-COLOR: #cccccc; WIDTH: 100%; BORDER-TOP-COLOR: #cccccc; FONT-STYLE: normal; BACKGROUND-COLOR: #cccccc; BORDER-RIGHT-WIDTH: 0px; TEXT-DECORATION: none; BORDER-RIGHT-COLOR: #cccccc'";
|
||||
tableHtml += "cellSpacing=1 cellPadding=2 rules=all border=0> ";
|
||||
tableHtml += "<TBODY>";
|
||||
tableHtml += "<TR style='FONT-WEIGHT: bold;text-align:center; FONT-STYLE: normal; BACKGROUND-COLOR: #eeeeee; TEXT-DECORATION: none'>";
|
||||
|
||||
tableHtml += "<TD>问题描述</TD>";
|
||||
if (null != versions && versions.length > 0) {
|
||||
//构造表头
|
||||
for (var i = 0; i < versions.length; i++) {
|
||||
tableHtml += "<TD>版本" + versions[i] + "</TD>";
|
||||
}
|
||||
}
|
||||
|
||||
tableHtml += "</TR>";
|
||||
|
||||
//构造数据行
|
||||
if (null == result || result.length == 0) {
|
||||
tableHtml += "<TR style='FONT-WEIGHT: normal; FONT-STYLE: normal; BACKGROUND-COLOR: white; TEXT-DECORATION: none'>";
|
||||
if (null != versions && versions.length > 0) {
|
||||
tableHtml += "<TD colspan=" + (versions.length + 1)
|
||||
+ ">--没有数据--</TD>";
|
||||
} else {
|
||||
tableHtml += "<TD >--没有数据--</TD>";
|
||||
}
|
||||
tableHtml += "</TR>";
|
||||
} else {
|
||||
for ( var key in result) {
|
||||
tableHtml += "<TR style='FONT-WEIGHT: normal; FONT-STYLE: normal; BACKGROUND-COLOR: white; TEXT-DECORATION: none'>";
|
||||
tableHtml += "<TD >" + key + "</TD>";
|
||||
for (var i = 0; i < result[key].length; i++) {
|
||||
tableHtml += "<TD >" + result[key][i].issueQty + "</TD>";
|
||||
}
|
||||
tableHtml += "</TR>";
|
||||
}
|
||||
}
|
||||
|
||||
tableHtml += "</TBODY>";
|
||||
tableHtml += "</TABLE>";
|
||||
|
||||
$(table).html(tableHtml);
|
||||
$("#analysisResultTable").bootstrapTable(options);
|
||||
}
|
||||
|
||||
//按照项目
|
||||
function showAnalysisResultByProjectWithChart(data) {
|
||||
if (null == data || null == data.result || null == data.versions) {
|
||||
return false;
|
||||
}
|
||||
var GROUP_VERSION_COUNT = 3;
|
||||
var result = data.result;
|
||||
var versions = data.versions;
|
||||
var myChart = echarts.init(document.getElementById('analysisResultChart'));
|
||||
|
||||
var xAxisData = new Array();
|
||||
|
||||
for ( var key in result) {
|
||||
xAxisData.push(key);
|
||||
}
|
||||
var seriesDataArr = new Array();
|
||||
for (var i = 0; i < versions.length; i++) {
|
||||
var seriesData = {};
|
||||
seriesData.name = "版本" + versions[i];
|
||||
seriesData.type = "bar";
|
||||
seriesData.data = [];
|
||||
for ( var key in result) {
|
||||
var list = result[key];
|
||||
for (var j = 0; j < list.length; j++) {
|
||||
if (list[j].version == versions[i]) {
|
||||
seriesData.data.push(list[j].issueQty);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
seriesDataArr.push(seriesData);
|
||||
}
|
||||
|
||||
// 指定图表的配置项和数据
|
||||
var option = {
|
||||
title : {
|
||||
text : '根据项目描述数据分析图表展示'
|
||||
},
|
||||
tooltip : {},
|
||||
legend : {
|
||||
data : [ '问题数量' ]
|
||||
},
|
||||
xAxis : {
|
||||
type : 'category',
|
||||
data : xAxisData
|
||||
},
|
||||
yAxis : {},
|
||||
series : seriesDataArr
|
||||
};
|
||||
|
||||
// 使用刚指定的配置项和数据显示图表。
|
||||
myChart.setOption(option);
|
||||
}
|
||||
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -111,7 +111,6 @@
|
|||
}
|
||||
}
|
||||
});
|
||||
// document.location.href = 'project.do?method=serverMonitor&server=' + v;
|
||||
}
|
||||
|
||||
function fillParams(project) {
|
||||
|
|
@ -152,7 +151,6 @@
|
|||
}
|
||||
}
|
||||
});
|
||||
// document.location.href = 'project.do?method=stopProject&pid=' + pid + '&server=' + server;
|
||||
}
|
||||
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@
|
|||
<script th:src="@{/ajax/libs/layui/layui.js}"></script>
|
||||
<script th:src="@{/ruoyi/js/common.js?v=4.4.0}"></script>
|
||||
<script th:src="@{/ruoyi/js/ry-ui.js?v=4.4.0}"></script>
|
||||
<script th:src="@{/ajax/libs/echarts/echarts.js}"></script>
|
||||
<script th:inline="javascript"> var ctx = [[@{/}]]; </script>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ public class DataAnalysisDAO extends JdbcBaseDao {
|
|||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("SELECT t.F_PROJECT_NAME, t.F_VERSION , t.F_ISSUE_DESCRIPTION, SUM(t.F_ISSUE_QTY) F_ISSUE_QTY ");
|
||||
sb.append("FROM dfm.t_dataays t ");
|
||||
sb.append("FROM t_dataays t ");
|
||||
sb.append("where t.F_PROJECT_NAME = ? AND T.F_SUBMIT_TIME >= ? AND T.F_SUBMIT_TIME <= ? ");
|
||||
sb.append("group by t.F_PROJECT_NAME, t.F_VERSION , t.F_ISSUE_DESCRIPTION ");
|
||||
sb.append("order by SUM(t.F_ISSUE_QTY) desc, t.F_VERSION ASC");
|
||||
|
|
@ -47,7 +47,7 @@ public class DataAnalysisDAO extends JdbcBaseDao {
|
|||
public List<DataAnalysisBean> analysisByUser(String userName, String startSubmitTime, String endSubmitTime) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("SELECT t.F_SUBMIT_USERNAME, t.F_ISSUE_DESCRIPTION, SUM(t.F_ISSUE_QTY) F_ISSUE_QTY ");
|
||||
sb.append("FROM dfm.t_dataays t ");
|
||||
sb.append("FROM t_dataays t ");
|
||||
sb.append("where t.F_SUBMIT_USERNAME = ? AND T.F_SUBMIT_TIME >= ? AND T.F_SUBMIT_TIME <= ? ");
|
||||
sb.append("group by t.F_SUBMIT_USERNAME, t.F_ISSUE_DESCRIPTION ");
|
||||
sb.append("order by SUM(t.F_ISSUE_QTY) DESC");
|
||||
|
|
@ -75,7 +75,7 @@ public class DataAnalysisDAO extends JdbcBaseDao {
|
|||
public List<DataAnalysisBean> analysisByAllUser(String startSubmitTime, String endSubmitTime, List<UserInfo> submitUsers) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("SELECT t.F_SUBMIT_USERNAME, SUM(t.F_ISSUE_QTY) F_ISSUE_QTY ");
|
||||
sb.append("FROM dfm.t_dataays t ");
|
||||
sb.append("FROM t_dataays t ");
|
||||
sb.append("where T.F_SUBMIT_TIME >= ? AND T.F_SUBMIT_TIME <= ? ");
|
||||
sb.append("AND T.F_SUBMIT_USER IN (-1");
|
||||
for (int i = 0; i < submitUsers.size(); ++i)
|
||||
|
|
@ -108,7 +108,7 @@ public class DataAnalysisDAO extends JdbcBaseDao {
|
|||
public List<DataAnalysisBean> analysisByAllIssue(String startSubmitTime, String endSubmitTime, List<UserInfo> submitUsers) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("SELECT t.F_ISSUE_DESCRIPTION, SUM(t.F_ISSUE_QTY) F_ISSUE_QTY ");
|
||||
sb.append("FROM dfm.t_dataays t ");
|
||||
sb.append("FROM t_dataays t ");
|
||||
sb.append("where T.F_SUBMIT_TIME >= ? AND T.F_SUBMIT_TIME <= ? ");
|
||||
sb.append("AND T.F_SUBMIT_USER IN (-1");
|
||||
for (int i = 0; i < submitUsers.size(); ++i)
|
||||
|
|
|
|||
Loading…
Reference in New Issue