using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web.Mvc; using QMAPP.MESReport.Web.Models.LineQTY; using QMAPP.Common.Web.Controllers; using QMFrameWork.WebUI.Attribute; using QMFrameWork.Data; using QMAPP.Entity; using QMAPP.ServicesAgent; using QMAPP.MESReport.Entity.LineQTY; using System.Text; using QMFrameWork.Common.ExcelOperation; using QMFrameWork.Log; using ExcelOperationHelper = QMAPP.MESReport.Web.Common.ExcelOperationHelper; namespace QMAPP.MESReport.Web.Controllers { /// <summary> /// 维修平均时间 /// 周晓东 /// 2017-10-20 /// </summary> public class AnDongRepairTimeAvgController : QController { public ActionResult List() { AnDongCallVModel seachModel = new AnDongCallVModel(); seachModel.START_DATE = DateTime.Now.Date.AddDays(-30).ToString("yyyy-MM-dd HH:mm:ss"); seachModel.END_DATE = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); return View(seachModel); } #region //报表 /// <summary> /// 异步刷新TABLE /// </summary> /// <param name="pageIndex"></param> /// <returns></returns> public ActionResult GetTable(string START_DATE, string END_DATE) { ServiceAgent wcfAgent = this.GetServiceAgent(); AnDongCallDModel condition = new AnDongCallDModel(); condition.START_DATE = START_DATE; condition.END_DATE = END_DATE; List<AnDongCallDModel> nli = new List<AnDongCallDModel>(); try { #region wcf服务统一接口 var dataResult = wcfAgent.InvokeServiceFunction<DataResult<List<AnDongCallDModel>>>("AnDongCallBLL_GetRepairTimeAvg", condition); nli = dataResult.Result; #endregion } catch (Exception ex) { throw ex; } string sss = GetHTMLStr(nli); return Json(sss); } /// <summary> /// 拼接字符串 /// </summary> /// <returns></returns> public string GetHTMLStr(List<AnDongCallDModel> nli) { StringBuilder html = new StringBuilder(); if (nli == null || nli.Count == 0) { return "没有数据"; } //拼接表头 html.Append("<tr><td ></td>"); foreach (AnDongCallDModel item in nli) { html.Append("<td>"); html.Append(item.MACHINENAME); html.Append("</td>"); } html.Append("</tr>"); //拼接第一行 html.Append("<tr><td >时间</td>"); foreach (AnDongCallDModel item in nli) { html.Append("<td>"); html.Append(item.REPAIR_TIME); html.Append("</td>"); } html.Append("</tr>"); //拼接第二行 html.Append("<tr><td >次数</td>"); foreach (AnDongCallDModel item in nli) { html.Append("<td>"); html.Append(item.NUM); html.Append("</td>"); } html.Append("</tr>"); return html.ToString(); } #endregion #region 导出图片 [HttpPost] [HandleException] public ActionResult ExportBanCi() { string imgSend = Request.Form["hiChartImg"]; imgSend = imgSend.Replace(" ", "+"); string[] contents = imgSend.Split(','); imgSend = contents[1]; byte[] content = Convert.FromBase64String(imgSend); System.Web.Mvc.FileContentResult result = null; result = new System.Web.Mvc.FileContentResult(content, "application/png"); result.FileDownloadName = System.Web.HttpUtility.UrlEncode("维修平均时间分析.png", System.Text.Encoding.UTF8); return result; } #endregion #region 图表 /// <summary> /// 多图叠加 /// </summary> /// <returns>处理结果</returns> [HandleException] public ActionResult GetEchartDataGroup1() { AnDongCallVModel seachModel = null; DataPage page = null; ServiceAgent wcfAgent = this.GetServiceAgent(); AnDongCallDModel condition = null; List<AnDongCallDModel> nli = new List<AnDongCallDModel>(); try { //获取查询对象 seachModel = GetModel<AnDongCallVModel>(); if (string.IsNullOrEmpty(seachModel.START_DATE) || string.IsNullOrEmpty(seachModel.END_DATE)) { //return Content(null); } else { //获取前台分页设置信息 page = this.GetDataPage(seachModel); condition = CopyToModel<AnDongCallDModel, AnDongCallVModel>(seachModel); #region wcf服务统一接口 var dataResult = wcfAgent.InvokeServiceFunction<DataResult<List<AnDongCallDModel>>>( "AnDongCallBLL_GetRepairTimeAvg", condition); nli = dataResult.Result; #endregion } } catch (Exception ex) { throw ex; } #region 源数据定义 string fenmu = "", fenzi = "", bfb = "", xLabe = "", dou = ""; bool first = true; foreach (AnDongCallDModel item in nli) { fenmu += dou + "'" + item.NUM + "'"; fenzi += dou + "'" + item.REPAIR_TIME + "'"; bfb += dou + "'" + (Convert.ToDouble(item.REPAIR_TIME) / Convert.ToDouble(item.NUM)).ToString("0") + "'"; xLabe += dou + "'" + item.MACHINENAME + "'"; if (first) { first = false; dou = ","; } } string strOption = @"{ noDataLoadingOption: { text: '无数据', effect: 'bubble', effectOption: { effect: { n: 0 } } }, tooltip: { trigger: 'axis' }, toolbox: { show: false, feature: { mark: { show: true }, dataView: { show: true, readOnly: false }, magicType: { show: true, type: ['line', 'bar'] }, restore: { show: true }, saveAsImage: { show: true } } }, calculable: true, legend: { data: ['修理时间', '修理次数'] }, xAxis: [ { type: 'category', axisLabel : { //坐标轴刻度标签的相关设置。 interval:0, rotate:10 }, data: [" + xLabe + @"] } ], yAxis: [ { type: 'value', name: '维修时间(分钟)', axisLabel: { formatter: '{value}' } }, { type: 'value', name: '平均时间(分钟)', axisLabel: { formatter: '{value}' } } ], series: [ { name: '修理时间', type: 'bar', data: [" + fenzi + @"] }, { name: '修理次数', type: 'bar', data: [" + fenmu + @"] }, { name: '平均时间', type: 'line', yAxisIndex: 1, data: [" + bfb + @"] , itemStyle: { normal: { label: { show: true}} } } ] }"; #endregion return Content(strOption); } /// <summary> /// 统计图页面配置 /// </summary> /// <returns></returns> public static string QMEChartPageConfig() { StringBuilder configBuilder = new StringBuilder(); configBuilder.AppendLine(""); configBuilder.AppendLine("<!--图表控件-->"); configBuilder.AppendLine("<script src=\"../../Scripts/echarts-2.2.2/build/dist/echarts.js\" type=\"text/javascript\" language=\"javascript\"></script>"); configBuilder.AppendLine("<script type=\"text/javascript\">"); configBuilder.AppendLine("<!-- 路径配置-->"); configBuilder.AppendLine(" require.config({"); configBuilder.AppendLine(" paths: {"); configBuilder.AppendLine(" echarts: '../../Scripts/echarts-2.2.2/build/dist',"); configBuilder.AppendLine(" themes: '../../Scripts/echarts-2.2.2/src'"); configBuilder.AppendLine(" }"); configBuilder.AppendLine(" });"); configBuilder.AppendLine(" if (!window.console || !console.firebug) {"); configBuilder.AppendLine(" var names = ['log', 'debug', 'info', 'warn', 'error', 'assert', 'dir', 'dirxml', 'group', 'groupEnd', 'time', 'timeEnd', 'count', 'trace', 'profile', 'profileEnd'];"); configBuilder.AppendLine(" window.console = {};"); configBuilder.AppendLine(" for (var i = 0; i < names.length; ++i)"); configBuilder.AppendLine(" window.console[names[i]] = function () { }"); configBuilder.AppendLine(" } "); configBuilder.AppendLine("</script>"); return configBuilder.ToString(); } #endregion #region 导出excel /// <summary> /// 导出excel /// </summary> /// <returns>结果</returns> [HandleException] public ActionResult ExportExcel() { AnDongCallVModel seachModel = null; AnDongCallDModel condition = null; DataTable exportDt = new DataTable(); string selectKey = Request["selectKey"]; ServiceAgent wcfAgent = this.GetServiceAgent(); try { //获取查询对象 seachModel = GetModel<AnDongCallVModel>(); condition = CopyToModel<AnDongCallDModel, AnDongCallVModel>(seachModel); //选择Excel condition.selectExcel = 1; //获取数据 var dataResult = wcfAgent.InvokeServiceFunction<DataResult<DataTable>>("AnDongCallBLL_GetExportData", condition); //通过返回dataResult判断 if (dataResult.Ex != null) { throw dataResult.Ex; } else if (dataResult.IsSuccess) { exportDt = dataResult.Result; } else { SetMessage(dataResult.Msg); return View(true); } //根据所选信息进行导出 if (!String.IsNullOrEmpty(selectKey)) { DataView dv = new DataView(exportDt); string strWhere = ""; string[] list = selectKey.Split(":".ToCharArray()); foreach (string ID in list) { strWhere += " PID='" + ID + "' or"; } if (strWhere != "") { strWhere = strWhere.Remove((strWhere.Length - 2), 2); } dv.RowFilter = strWhere; exportDt = dv.ToTable(); } //导出 IEExcelHelper ieExcelHelper = new IEExcelHelper(); var sheetInfo = ieExcelHelper.GetMainInfo("AnDongRepairTimeAvgExp"); var fileName = System.Guid.NewGuid().ToString() + ".xlsx"; ieExcelHelper.ExportExcel(sheetInfo, exportDt, Common.ExcelOperationHelper.GetTempPath() + fileName, true); return Content(fileName); } catch (Exception ex) { LogManager.LogHelper.Error(new LogInfo { ErrorInfo = ex, Info = "导出excel", Tag = "平均故障恢复时间" }); SetMessage("导出excel失败"); return View(true); } } /// <summary> /// 导出文件 /// </summary> /// <returns></returns> public ActionResult ExportFile() { String filePath = Common.ExcelOperationHelper.GetTempPath(); String fileName = Request["FileName"]; ExcelOperationHelper.FileDownload(Response, filePath + fileName, "平均故障恢复时间.xlsx"); return Content(""); } #endregion } }