You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
384 lines
12 KiB
384 lines
12 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Web;
|
|
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 QMFrameWork.WebUI.DataSource;
|
|
using QMFrameWork.Common.Serialization;
|
|
using QMAPP.MESReport.Entity.LineQTY;
|
|
|
|
using System.Collections;
|
|
using System.Reflection;
|
|
using QMFrameWork.ServiceInterface;
|
|
using System.Data.SqlClient;
|
|
using System.Data;
|
|
using QMAPP.Common.Web.Util;
|
|
|
|
using QMFrameWork.WebUI.QMEChart;
|
|
using QMFrameWork.WebUI.QMEChart.Data;
|
|
using QMAPP.MESReport.Web.Models;
|
|
using QMAPP.MESReport.BLL.LineQTY;
|
|
using System.Text;
|
|
|
|
namespace QMAPP.MESReport.Web.Controllers
|
|
{
|
|
/// <summary>
|
|
/// 生产统计
|
|
/// 于子清
|
|
/// 2017-10-18
|
|
/// </summary>
|
|
public class QTYInfoCountController : QController
|
|
{
|
|
public ActionResult QTYInfoCountView()
|
|
{
|
|
QTYInfoCountVModel model = new QTYInfoCountVModel();
|
|
model.START_DATE = System.DateTime.Now.ToShortDateString();
|
|
model.END_DATE = System.DateTime.Now.ToShortDateString();
|
|
|
|
return View(model);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 异步刷新TABLE
|
|
/// </summary>
|
|
/// <param name="pageIndex"></param>
|
|
/// <returns></returns>
|
|
public ActionResult GetTable(string MATERIAL_CODE, string TYPE_COUNT, string START_DATE, string END_DATE)
|
|
{
|
|
|
|
ServiceAgent wcfAgent = this.GetServiceAgent();
|
|
|
|
QTYInfoCountVModel seachModel = null;
|
|
seachModel = GetModel<QTYInfoCountVModel>();
|
|
DataPage page = null;
|
|
page = this.GetDataPage(seachModel);
|
|
QTYInfoCountDModel condition = new QTYInfoCountDModel();
|
|
|
|
List<QTYInfoCountDModel> nli = new List<QTYInfoCountDModel>();
|
|
try
|
|
{
|
|
condition = CopyToModel<QTYInfoCountDModel, QTYInfoCountVModel>(seachModel);
|
|
//初始没有查询条件的情况下返回空
|
|
if (string.IsNullOrEmpty(condition.PROJECTCODE))
|
|
{
|
|
return Json("");
|
|
}
|
|
|
|
|
|
#region wcf服务统一接口
|
|
var dataResult = wcfAgent.InvokeServiceFunction<DataResult<List<QTYInfoCountDModel>>>("QTYInfoCountBLL_GetAllList", condition);
|
|
|
|
nli = dataResult.Result;
|
|
|
|
#endregion
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
string sss = GetHTMLStr(nli, TYPE_COUNT);
|
|
return Json(sss);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 拼接字符串
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string GetHTMLStr(List<QTYInfoCountDModel> nli, string TYPE_COUNT)
|
|
{
|
|
StringBuilder html = new StringBuilder();
|
|
|
|
if (nli == null)
|
|
{
|
|
return "没有数据";
|
|
}
|
|
|
|
string timetype = "号";
|
|
if (TYPE_COUNT == "WEEK")
|
|
{
|
|
timetype = "周";
|
|
}
|
|
else if (TYPE_COUNT == "MONTH")
|
|
{
|
|
timetype = "月";
|
|
}
|
|
|
|
//拼接表头
|
|
html.Append("<tr><td class='L1cos'>产品种类</td>");
|
|
|
|
List<string> arr = new List<string>();
|
|
|
|
foreach (QTYInfoCountDModel item in nli)
|
|
{
|
|
if (html.ToString().Contains(item.TDAY + timetype))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
html.Append("<td>");
|
|
if (item.TDAY.Equals("累计"))
|
|
{
|
|
html.Append(item.TDAY);
|
|
}
|
|
else
|
|
{
|
|
html.Append(item.TDAY + timetype);
|
|
arr.Add(item.TDAY + timetype);
|
|
}
|
|
html.Append("</td>");
|
|
}
|
|
html.Append("</tr>");
|
|
|
|
Dictionary<string, List<QTYInfoCountDModel>> dls = new Dictionary<string, List<QTYInfoCountDModel>>();
|
|
|
|
//对结果集分类
|
|
foreach (QTYInfoCountDModel item in nli)
|
|
{
|
|
if (dls.Keys.Contains(item.MATERIAL_NAME + item.MATERIAL_CODE))
|
|
{
|
|
//则添加到KEY下
|
|
dls[item.MATERIAL_NAME + item.MATERIAL_CODE].Add(item);
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
//新建key
|
|
List<QTYInfoCountDModel> li = new List<QTYInfoCountDModel>();
|
|
li.Add(item);
|
|
dls.Add(item.MATERIAL_NAME + item.MATERIAL_CODE, li);
|
|
}
|
|
}
|
|
|
|
//拼接主体数据
|
|
foreach (List<QTYInfoCountDModel> item in dls.Values)
|
|
{
|
|
if (item[0].MATERIAL_NAME.Equals("累计"))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
html.Append("<tr>");
|
|
html.Append("<td>" + item[0].MATERIAL_NAME);
|
|
html.Append("</td>");
|
|
|
|
foreach (string itit in arr)
|
|
{
|
|
bool sss = true;
|
|
string QTY = "";
|
|
foreach (QTYInfoCountDModel its in item)
|
|
{
|
|
if (its.TDAY + timetype == itit)
|
|
{
|
|
sss = false;
|
|
QTY = its.QTY;
|
|
break;
|
|
}
|
|
}
|
|
if (sss)
|
|
{
|
|
html.Append("<td>0</td>");
|
|
}
|
|
else
|
|
{
|
|
html.Append("<td>" + QTY + "</td>");
|
|
}
|
|
}
|
|
|
|
html.Append("</tr>");
|
|
}
|
|
|
|
return html.ToString();
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 堆积柱状图
|
|
/// </summary>
|
|
/// <returns>处理结果</returns>
|
|
[HandleException]
|
|
public ActionResult GetEchartDataBar2()
|
|
{
|
|
QTYInfoCountVModel seachModel = null;
|
|
DataPage page = null;
|
|
ServiceAgent wcfAgent = this.GetServiceAgent();
|
|
QTYInfoCountDModel condition = null;
|
|
List<QTYInfoCountDModel> nli = new List<QTYInfoCountDModel>();
|
|
try
|
|
{
|
|
//获取查询对象
|
|
seachModel = GetModel<QTYInfoCountVModel>();
|
|
//获取前台分页设置信息
|
|
page = this.GetDataPage(seachModel);
|
|
condition = CopyToModel<QTYInfoCountDModel, QTYInfoCountVModel>(seachModel);
|
|
|
|
//初始没有查询条件的情况下返回空
|
|
if (string.IsNullOrEmpty(condition.PROJECTCODE))
|
|
{
|
|
return Content("");
|
|
}
|
|
|
|
#region wcf服务统一接口
|
|
var dataResult = wcfAgent.InvokeServiceFunction<DataResult<List<QTYInfoCountDModel>>>("QTYInfoCountBLL_GetAllList", condition);
|
|
|
|
nli = dataResult.Result;
|
|
|
|
#endregion
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
|
|
#region 源数据定义
|
|
|
|
//生成数据
|
|
List<TestEChartModel> dataList = new List<TestEChartModel>();
|
|
|
|
if (nli!=null)
|
|
{
|
|
string timetype = "号";
|
|
if (condition.TYPE_COUNT == "MONTH")
|
|
{
|
|
timetype = "月";
|
|
}
|
|
else if (condition.TYPE_COUNT == "WEEK")
|
|
{
|
|
timetype = "周";
|
|
}
|
|
|
|
foreach (QTYInfoCountDModel item in nli)
|
|
{
|
|
dataList.Add(new TestEChartModel() { Week = item.TDAY + timetype, Value = item.QTY, TypeValue = item.MATERIAL_NAME, StackValue = item.MATERIAL_NAME });
|
|
}
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
#region 默认设置
|
|
|
|
QMEChartBar chartLBar = new QMEChartBar() { BarType = "bar2" };
|
|
|
|
//设置源数据列表
|
|
chartLBar.DataList = dataList;
|
|
|
|
#region 设置标题
|
|
//不为空时显示Title,为空时不显示
|
|
chartLBar.Title = new QMECTitle();
|
|
chartLBar.Title.Text = "";
|
|
chartLBar.Title.Subtext = "";
|
|
#endregion
|
|
|
|
#region Tooltip提示窗口设置
|
|
|
|
//是否显示ToolTip工具条
|
|
chartLBar.HaveTooltip = true;
|
|
|
|
#endregion
|
|
|
|
#region Legend图例设置
|
|
//是否有Legend
|
|
chartLBar.HaveLegend = true;
|
|
//Legend的自动统计字段,对应chartLine.DataList中用于统计的字段
|
|
chartLBar.LegendField = "TypeValue";
|
|
|
|
#endregion
|
|
|
|
#region Toolbox工具栏设置
|
|
//是否存在工具栏,为空时使用默认设置
|
|
chartLBar.HaveToolBox = false;
|
|
|
|
#endregion
|
|
|
|
#region XAxis横坐标轴设置
|
|
//为空时使用默认值并从数据源中统计类型,需要设置DataList数据源
|
|
chartLBar.HaveXAxis = true;
|
|
//设置X轴统计类型字段
|
|
chartLBar.XAxisField = "Week";
|
|
#endregion
|
|
|
|
#region YAxis纵坐标轴设置
|
|
//设置Y轴显示格式。
|
|
chartLBar.HaveYAxis = true;
|
|
//自定义设置
|
|
chartLBar.YAxis = new QMECYAxis() { AxisLabel = new QMECAxisLabel() };
|
|
chartLBar.YAxis.Type = "value";
|
|
#endregion
|
|
|
|
#region 堆积字段设置
|
|
|
|
//堆积字段,是否是堆积图形
|
|
chartLBar.StackField = "StackValue";
|
|
#endregion
|
|
|
|
#region 生成图表所需要数据格式
|
|
//转换数据格式,值字段
|
|
chartLBar.ValueField = "Value";
|
|
chartLBar.Series = QMEChartHelper.CovertDataToSeries(chartLBar);
|
|
foreach (QMECSerie serie in chartLBar.Series)
|
|
{
|
|
//显示数值
|
|
serie.ItemStyle = new QMECItemStyle();
|
|
serie.ItemStyle.Normal = new QMECNormal();
|
|
serie.ItemStyle.Normal.Label = new QMECLabel();
|
|
serie.ItemStyle.Normal.Label.Show = true;
|
|
}
|
|
#endregion
|
|
|
|
#region 辅助线设置,有则设置,没有则无需设置
|
|
//设置辅助线
|
|
QMECMarkLine ml = new QMECMarkLine() { ItemStyle = new QMECItemStyle() { Normal = new QMECNormal() { LineStyle = new QMECLineStyle() } }, LineData = new List<QMECPoint>() };
|
|
ml.ItemStyle.Normal.LineStyle = new QMECLineStyle() { Type = "dashed", Width = 1 };
|
|
List<QMECMarkPoint> mp = new List<QMECMarkPoint>();
|
|
QMECPoint mpstart = new QMECPoint();
|
|
QMECPoint mpend = new QMECPoint();
|
|
mpstart.Type = "min";
|
|
mpend.Type = "max";
|
|
ml.LineData.Add(mpstart);
|
|
ml.LineData.Add(mpend);
|
|
|
|
foreach (QMECSerie ser in chartLBar.Series)
|
|
{
|
|
if (ser.Name == "搜索引擎")
|
|
{
|
|
ser.MarkLine = ml;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
return Content(QMEChartHelper.QMECHelper<QMEChartBar>(chartLBar));
|
|
|
|
#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
|
|
|
|
}
|
|
}
|
|
|