//后端

public ActionResult TighteningReport(BReportTighteningReportModel model, string rate, string weekTime, string weekEnd, string month)
{
TempData["Tmp"] = "open5";
if (!string.IsNullOrEmpty(rate))
{
using (BaseContext context = new BaseContext("ToolsTB"))
{
var transactionCounts = new List<BReportTighteningReportModel>();
#region 日
if (rate == "0")
{
var totalList = context.T_ToolsResult.Where(m => m.TighteningTime >= model.BeginTime && m.TighteningTime <= model.EndTime).ToList().Count();
var notOkList = context.T_ToolsResult.Where(m => m.TighteningTime >= model.BeginTime && m.TighteningTime <= model.EndTime && m.TighteningResult != "ok")
.GroupBy(m => m.TighteningTime).Select(g => (new { TighteningTime = g.Key, count = g.Count() }));

foreach (var item in notOkList)
{
transactionCounts.Add(new BReportTighteningReportModel() { Date = item.TighteningTime.ToString("yyyy/MM/dd"), Count = item.count });
}
}
#endregion

#region 周
if (rate == "1")
{
var weekT = Convert.ToDateTime(weekTime);
var weekE = Convert.ToDateTime(weekEnd);
var totalList = context.T_ToolsResult.Where(m => m.TighteningTime >= weekT && m.TighteningTime <= weekE).ToList().Count();
var notOkList = context.T_ToolsResult.Where(m => m.TighteningTime >= weekT && m.TighteningTime <= weekE && m.TighteningResult != "ok")
.GroupBy(m => m.TighteningTime).Select(g => (new { TighteningTime = g.Key, count = g.Count() }));
//统计结果值ok
IList<T_ToolsResultDefinition> list = context.T_ToolsResult.Where(m => m.TighteningTime >= weekT && m.TighteningTime <= weekE && m.TighteningResult != "ok").Distinct().ToList();
string filter = string.Empty;
for (int i = 0; i < list.Count(); i++)
{
filter += "and TighteningTime !='" + list[i].TighteningTime.ToString() + "'";
}
string preString = @"SELECT * FROM T_ToolsResult WHERE 1=1 {0}";
string buildSql = string.Format(preString, filter);
var okList = context.T_ToolsResult.SqlQuery(buildSql)
.Where(m => m.TighteningTime >= weekT && m.TighteningTime <= weekE)
.GroupBy(m => m.TighteningTime).Select(g => (new { TighteningTime = g.Key, count = g.Count() }));
//结果值ok的加入highcharts
foreach (var item in okList)
{
transactionCounts.Add(new BReportTighteningReportModel() { Date = item.TighteningTime.ToString("yyyy/MM/dd"), Count = 0 });
}

foreach (var item in notOkList)
{
transactionCounts.Add(new BReportTighteningReportModel() { Date = item.TighteningTime.ToString("yyyy/MM/dd"), Count = item.count });
}
}
#endregion

#region 月
if (rate =="2")
{
DateTime dt = DateTime.Now;
var year = dt.Year;
var weekT = Convert.ToDateTime(dt.Year + "-" + month + "-" + 1);
var weekE = Convert.ToDateTime(dt.Year + "-" + month + "-" + 31);
var totalList = context.T_ToolsResult.Where(m => m.TighteningTime >= weekT && m.TighteningTime <= weekE).ToList().Count();
var notOkList = context.T_ToolsResult.Where(m => m.TighteningTime >= weekT && m.TighteningTime <= weekE && m.TighteningResult != "ok")
.GroupBy(m => m.TighteningTime).Select(g => (new { TighteningTime = g.Key, count = g.Count() }));
//统计结果值ok
IList<T_ToolsResultDefinition> list = context.T_ToolsResult.Where(m => m.TighteningTime >= weekT && m.TighteningTime <= weekE && m.TighteningResult != "ok").Distinct().ToList();
string filter = string.Empty;
for (int i = 0; i < list.Count(); i++)
{
filter += "and TighteningTime !='" + list[i].TighteningTime.ToString() + "'";
}
string preString = @"SELECT * FROM T_ToolsResult WHERE 1=1 {0}";
string buildSql = string.Format(preString, filter);
var okList = context.T_ToolsResult.SqlQuery(buildSql)
.Where(m => m.TighteningTime >= weekT && m.TighteningTime <= weekE)
.GroupBy(m => m.TighteningTime).Select(g => (new { TighteningTime = g.Key, count = g.Count() }));
//结果值ok的加入highcharts
foreach(var item in okList)
{
transactionCounts.Add(new BReportTighteningReportModel() { Date = item.TighteningTime.ToString("yyyy/MM/dd"), Count = 0 });
}
//结果值notok的加入highcharts
foreach (var item in notOkList)
{
transactionCounts.Add(new BReportTighteningReportModel() { Date = item.TighteningTime.ToString("yyyy/MM/dd"), Count = item.count });

}
}
#endregion

#region 数据
//var transactionCounts = new List<BReportTighteningReportModel>{
// new BReportTighteningReportModel(){MonthName="January",Count=30},
// new BReportTighteningReportModel(){MonthName="February",Count=40},
// new BReportTighteningReportModel(){MonthName="March",Count=4},
// new BReportTighteningReportModel(){MonthName="April",Count=35},
// new BReportTighteningReportModel(){MonthName="January",Count=30},
// new BReportTighteningReportModel(){MonthName="February",Count=40},
// new BReportTighteningReportModel(){MonthName="March",Count=4},
// new BReportTighteningReportModel(){MonthName="January",Count=30},
// new BReportTighteningReportModel(){MonthName="February",Count=40},
// new BReportTighteningReportModel(){MonthName="March",Count=4},
// new BReportTighteningReportModel(){MonthName="January",Count=30},
// new BReportTighteningReportModel(){MonthName="February",Count=40},
// new BReportTighteningReportModel(){MonthName="March",Count=4},
// new BReportTighteningReportModel(){MonthName="January",Count=30},
// new BReportTighteningReportModel(){MonthName="February",Count=40},
// new BReportTighteningReportModel(){MonthName="March",Count=4},
// new BReportTighteningReportModel(){MonthName="January",Count=30},
// new BReportTighteningReportModel(){MonthName="February",Count=40},
// new BReportTighteningReportModel(){MonthName="March",Count=4},
// new BReportTighteningReportModel(){MonthName="January",Count=30},
// new BReportTighteningReportModel(){MonthName="February",Count=40},
// new BReportTighteningReportModel(){MonthName="March",Count=4},
// new BReportTighteningReportModel(){MonthName="January",Count=30},
// new BReportTighteningReportModel(){MonthName="February",Count=40},
// new BReportTighteningReportModel(){MonthName="March",Count=4},
// new BReportTighteningReportModel(){MonthName="April",Count=35},
// new BReportTighteningReportModel(){MonthName="January",Count=30},
// new BReportTighteningReportModel(){MonthName="February",Count=40},
// new BReportTighteningReportModel(){MonthName="March",Count=4},
// new BReportTighteningReportModel(){MonthName="January",Count=30}
//};
#endregion

#region 生成highcharts报表
var xDataMonths = transactionCounts.OrderBy(i => i.Date).Select(i => i.Date).ToArray();
var yDataCounts = transactionCounts.OrderBy(i => i.Date).Select(i => new object[] { i.Count }).ToArray();
ViewBag.chart = new Highcharts("chart")
.InitChart(new Chart
{
//DefaultSeriesType = ChartTypes.Line,//折线
//DefaultSeriesType = ChartTypes.Column,//柱状
DefaultSeriesType = ChartTypes.Spline,//曲线
//背景颜色
BackgroundColor = new BackColorOrGradient(Color.AliceBlue),
//3d
//Options3d = new ChartOptions3d
//{
// Enabled = true,
// Alpha = 15,
// Beta = 15,
// Depth = 50,
// ViewDistance = 25
//}
})
.SetTitle(new Title { Text = "统计某段时间内缺陷率" })
.SetSubtitle(new Subtitle { Text = "统计" })
.SetXAxis(new XAxis { Categories = xDataMonths })
.SetYAxis(new YAxis { Title = new YAxisTitle { Text = "缺陷个数" } })
.SetTooltip(new Tooltip
{
Enabled = true,
//Formatter = @"function(){return '<b>'+this.series.name+this.x+'</b></br>:'+this.y/'"+totalList+"';}"
Formatter = @"function(){return '缺陷个数:'+this.y;}"
})
.SetPlotOptions(new PlotOptions
{
Line = new PlotOptionsLine
{
DataLabels = new PlotOptionsLineDataLabels
{
Enabled = true
},
EnableMouseTracking = false
},
//Column = new PlotOptionsColumn //3d
//{
// Depth = 25
//}
})
.SetSeries(new[]
{
new Series{Name = "缺陷率",Data = new Data(yDataCounts),Color = Color.FromArgb(124, 181, 236)},
});
#endregion
}
}
return View();
}

//前端

@using TPSystem.WWW.Models
@using TPSystem.Business;
@model TPSystem.WWW.Models.BReportTighteningReportModel
@{
ViewBag.Title = "拧紧缺陷报表查询";
Layout = "/Views/Shared/_LayoutBFactory.cshtml";
}
<script src="~/Helpers/highCharts/jquery-1.8.3.min.js"></script>
<script src="~/Helpers/highCharts/highcharts.js"></script>
<script src="~/Helpers/highCharts/exporting.js"></script>
<script src="~/Helpers/highCharts/highcharts-3d.js"></script>
<!--Head-->
<!--Head-->
<!--Content-->
<form name="form1">
<div style="overflow:auto;width:100%;">
<div class="page-content">
<div class="row">
<div class="col-md-12">
<div class="portlet box blue">
<div class="portlet-title">
<div class="caption"><i class="fa fa-edit"></i>拧紧缺陷报表</div>
</div>
<div class="portlet-body">
<table class="tab-search" border="0" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td width="30" align="center"><img src="/Content/images/icon_seach.png"></td>
<td>
统计粒度:
<select name="rate" class="sel txt-select-small">
<option value="-1">请选择</option>
<option value="0" id="opDay">日</option>
<option value="1" id="opWeek">周</option>
<option value="2" id="opMonth">月</option>
</select>
<span class="day">起始时间:</span>@Html.TextBoxFor(m => m.BeginTime, new { Class = "day txt-small", Id = "beginTime", onFocus = "WdatePicker({isShowWeek:true})" })
<span class="day">结束时间:</span>@Html.TextBoxFor(m => m.EndTime, new { Class = "day txt-small", Id = "endTime", onFocus = "WdatePicker({ShowWeek:true})" })
<span class="week">周次:</span>@Html.TextBoxFor(m => m.Week, new { @id = "week", @class = "week txt-small" })&nbsp;@Html.ValidationMessageFor(m=>m.Week)
<span class="month">月份:</span>
<select name="Month" class="month txt-select-small">
<option value="1">一月</option>
<option value="2">二月</option>
<option value="3">三月</option>
<option value="4">四月</option>
<option value="5">五月</option>
<option value="6">六月</option>
<option value="7">七月</option>
<option value="8">八月</option>
<option value="9">九月</option>
<option value="10">十月</option>
<option value="11">十一月</option>
<option value="12">十二月</option>
</select>
<input name="weekTime" type="hidden" />
<input name="weekEnd" type="hidden" />
<input class="btn-small" type="submit" id="btn" value="搜索">&nbsp;
<input class="btn-small" name="excel" onclick="btnExcel();" type="button" value="导出Excel">
<span class="error"></span>
</td>
</tr>
</tbody>
</table>
<div class="table-supplier" style="overflow:auto;">
<table class="table table-condensed table-striped table-hover table-bordered" id="J_table_list">
@(ViewBag.chart)
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</form>

<script type="text/javascript">
$(function () {
//切换日周月
$(".week").css("display", "none");
$(".month").css("display", "none");
$('.sel').change(function () {
var val = $("select[name='rate']").children('option:selected').val();
if (val == 0) {
$(".day").css("display", "");
$(".week").css("display", "none");
$(".month").css("display", "none");
}
else if (val == 1) {
$(".week").css("display", "");
$(".day").css("display", "none");
$(".month").css("display", "none");
}
else if (val == 2) {
$(".month").css("display", "");
$(".day").css("display", "none");
$(".week").css("display", "none");
}
});

//周换算日期
$("#btn").click(function () {
var week = $("#week").val();
if (week != "") {
var mydate = new Date();
var year = mydate.getFullYear();
var yearStart = new Date(parseInt(year), 0, 1) //设置该年1.1.
var firstDay = yearStart.getDay(); //星期
var yearEnd = new Date(parseInt(year), 11, 31) //设置该年12.31.
var endDay = yearEnd.getDay(); //星期
//-------------------------------------------------------------------------------------
//判断输入是否超过最大周次.
var maxWeek; //该年最大周次.1.1.在周一到周四,则为该年第一周,否则为上年最后一周.
if ((firstDay >= 1 && firstDay <= 4) && (endDay == 0 || endDay == 4 || endDay == 5 || endDay == 6)) {
maxWeek = 53; //1.1.和12.31.都在本年,则该年有53周,否则52周
}
else {
maxWeek = 52;
}
if (parseInt(document.form1.week.value, 10) > maxWeek) {
alert(year + " 年只有 " + maxWeek + " 周,请重新填写周次.");
document.form1.week.focus();
return false;
}
//-------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------
//对1.1.所在周的前后几天特殊处理.
if (firstDay >= 0 && firstDay <= 4) { other = firstDay - 1; }
else { other = firstDay - 8 }
//-------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------
//时间调整,得出要计算周的起/始时间.
//距离当年1.1.的总天数
days = (parseInt(document.form1.week.value, 10) - 1) * 7 - other;
//转换成Ms.......
var oneMinute = 60 * 1000;
var oneHour = oneMinute * 60;
var oneDay = oneHour * 24;
//1.1.至1/1/70的毫秒数
var dateInMs = yearStart.getTime();
//当前所选周第一天离1/1/70的毫秒数.
dateInMs += oneDay * days
//日期调整(设置1/1/70至今的毫秒数)
yearStart.setTime(dateInMs);
//当前所选周最后一天处理,同上.
var weekEnd = new Date(parseInt(year), 0, 1)
var dateInMs1 = weekEnd.getTime();
dateInMs1 += oneDay * (days + 6);
weekEnd.setTime(dateInMs1)
//-------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------
//月和日的处理,一位变两位,如:1->01.
var month = yearStart.getMonth() + 1
if (month < 10) { month = "0" + month; }
var day = yearStart.getDate();
if (day < 10) { day = "0" + day; }
var month1 = weekEnd.getMonth() + 1;
if (month1 < 10) { month1 = "0" + month1; }
var day1 = weekEnd.getDate();
if (day1 < 10) { day1 = "0" + day1; }
//-------------------------------------------------------------------------------------

//-------------------------------------------------------------------------------------
//赋值给text框显示.
document.form1.weekTime.value = yearStart.getFullYear() + "-" + month + "-" + day;
document.form1.weekEnd.value = weekEnd.getFullYear() + "-" + month1 + "-" + day1;
//-------------------------------------------------------------------------------------
}
});
});
</script>

<!--Content-->

ASP.NET MVC4 + Highcharts生成报表的更多相关文章

  1. Asp.net mvc4 + HighCharts + 曲线图

    前端代码: @{ Layout = null;}<!DOCTYPE html><html><head> <title></title> &l ...

  2. Asp.net mvc4 + HighCharts + 柱状图

    前端代码: @{ Layout = null;} <!DOCTYPE html> <html><head> <meta name="viewport ...

  3. Asp.net Mvc4默认权限详细(下)

    前言 菜鸟去重复之Sql的问题还没有得到满意的答案.如果哪位大哥有相关的资料解释,能够分享给我,那就太谢谢了. 以后每发表一篇博文我都会将以前遗留的问题在前言里指出,直到解决为止. 本文主要在于探讨一 ...

  4. 转:Asp.net Mvc4默认权限详细(上)

    前言 上篇的菜鸟去重复之Sql的问题还没有得到满意的答案.如果哪位大哥有相关的资料解释,能够分享给我,那就太谢谢了. 以后每发表一篇博文我都会将以前遗留的问题在前言里指出,直到解决为止. 本文主要在于 ...

  5. Asp.net Mvc4默认权限详细(上)

    Asp.net Mvc4默认权限详细(上) 前言 上篇的菜鸟去重复之Sql的问题还没有得到满意的答案.如果哪位大哥有相关的资料解释,能够分享给我,那就太谢谢了. 以后每发表一篇博文我都会将以前遗留的问 ...

  6. ASP.NET 生成报表的几中方案

    1. 用html 表格绘制报表,javascript导出EXCEL 2. 采用datagrid绑定报表数据,用后台方法导出 //Response.AppendHeader("Content- ...

  7. ASP.NET MVC4学习笔记路由系统概念与应用篇

    一.概念 1.路由是计算机网络中的一个技术概念,表示把数据包从一个网段转发至另一网段.ASP.NET中的路由系统作用类似,其作用是把请求Url映射到相应的"资源"上,资源可以是一段 ...

  8. CentOS上 Mono 3.2.8运行ASP.NET MVC4经验

    周一到周三,折腾了两天半的时间,经历几次周折,在小蝶惊鸿的鼎力帮助下,终于在Mono 3.2.8上运行成功MVC4.在此总结经验如下: 系统平台的版本: CentOS 6.5 Mono 3.2.8 J ...

  9. [MVC4]ASP.NET MVC4+EF5(Lambda/Linq)读取数据

    继续上一节初始ASP.NET MVC4,继续深入学习,感受了一下微软的MVC4+EF5(EntityFramework5)框架的强大,能够高效的开发出网站应用开发系统,下面就看一下如何用MVC4+EF ...

随机推荐

  1. 分数相加减的代码(c++)

    #include <iostream> using namespace std; int gy(int a,int k1) {int min; if(a>k1)min=k1; els ...

  2. iOS学习之懒加载

    懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内存小).所谓懒加载,其实是重写getter方法. 注意:如果是懒加载的话则一定要注意先判断是否已经有了,如果没有那么再去进行实例化 使用懒 ...

  3. Cisco Anyconnect Secure Mobility Client

    Backup 进入安装文件目录cd anyconnect-3.1.00495/binary 安装sudo./vpnsetup.sh 查看安装情况ps aux  |  grep  cisco 在搜索中, ...

  4. ImageNet && 医学图像的识别

    医学图像识别的问题 如果将CNN应用于医学图像,首要面对的问题是训练数据的缺乏.因为CNN的训练数据都需要有类别标号,这通常需要专家来手工标记.要是标记像ImageNet这样大规模的上百万张的训练图像 ...

  5. Ubuntu 怎么在右键添加打开终端

    方法一: 搜索nautilus-open-terminal安装 命令行:sudo apt-get install nautilus-open-terminal        (如果提示为找的什么的就s ...

  6. JSP(一)

    一.JSP概要 一]JSP的概念 1>JSP是SUN公司开发的一个基于服务端的一种动态WEB开发技术.         2>JSP的代码结构/内容 = HTML内容+JSP特有元素内容   ...

  7. How to run Tomcat without root privileges? 常规用户使用tomcat的80端口

    How to run Tomcat without root privileges? 1. The best way is to use jsvc, available as part of the  ...

  8. Android 对话框简介

    对话框(Dialog)是程序运行过程中弹出的窗口,Android中有好多种对话框,如警告对话框,进度对话框,列表对话框,单选对话框,日期选择对话框,时间选择对话框等: 下面用几个例子来演示一下各种对话 ...

  9. linux网络配置相关文件

    网络接口(interface)是网络硬件设备在操作系统中的表示方法,比如网卡在Linux操作系统中用ethX,是由0开始的正整数,比如eth0.eth1...... ethX.而普通猫和ADSL的接口 ...

  10. XSS初体验

    主要内容 什么是XSS? XSS的危害有哪些? 常见的XSS漏洞 如何防范XSS?   什么是XSS? 跨站脚本攻击(Cross Site Scripting),是一种 Web 应用程序的漏洞,当来自 ...