| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017 |
- using Newtonsoft.Json;
- using Newtonsoft.Json.Linq;
- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Linq;
- using System.Text;
- using System.Web;
- using System.Web.Mvc;
- using System.Web.Script.Serialization;
- using YTSoft.BaseCallCenter.Model;
- using YTSoft.BaseCallCenter.MVCWeb.Commons;
- using YTSoft.BaseCallCenter.MVCWeb.Models;
- using YTSoft.Common;
- using YTSoft.DBUtility;
- namespace YTSoft.BaseCallCenter.MVCWeb.Controllers
- {
- public class ReportOtherController : BaseController
- {
- BLL.ReportBLL busReport = new BLL.ReportBLL();
- #region 其他指标
- public ActionResult GetindexView()
- {
- WorkOrderMyModel model = new WorkOrderMyModel();
- return View(model);
- }
- /// <summary>
- /// 获取工单信息
- /// </summary>
- /// <param name="page">当前页码</param>
- /// <param name="limit">每页数据量</param>
- /// <param name="sqlWhere">查询条件</param>
- /// <returns></returns>
- [ActionName("GetindexData")]
- [HttpGet]
- public string GetindexData(DateTime? NowDateTime, string dateParty)
- {
- //数据结果集
- ResponseData dataModel = new ResponseData();
- try
- {
- string startDate = "";
- string endDate = "";
- if (!string.IsNullOrEmpty(dateParty))
- {
- startDate = dateParty.Substring(0, 10);
- endDate = dateParty.Substring(12);
- }
- else
- {
- startDate = endDate = DateTime.Now.ToString("yyyy-MM-dd");
- }
- DataTable datas = null;
- DataTable newTable = new DataTable();
- //newTable.Columns.Add("ID");
- newTable.Columns.Add("指标名称");
- newTable.Columns.Add("指标值");
- DataRow dataRow;
- int OvertimeCount = 0;
- #region 接通率
- dataRow = newTable.NewRow();
- datas = busReport.GetOtherData1(startDate, endDate);
- if (datas != null && datas.Rows.Count > 0)
- {
- string data1 = "-";
- int tempTotal = 0;
- int tempint = 0;
- foreach (DataRow thisRow in datas.Rows)
- {
- if (thisRow["CallState"].ToInt32() == 1)
- {
- tempint = thisRow["num"].ToInt32();
- }
- tempTotal += thisRow["num"].ToInt32();
-
- }
- if (tempTotal != 0)
- {
- data1 = (tempint / (double)tempTotal).ToString("0.00%");
- }
-
- dataRow["指标名称"] = "接通率";
- dataRow["指标值"] = data1;
-
- }
- else
- {
- dataRow["指标名称"] = "接通率";
- dataRow["指标值"] = "-";
- }
- newTable.Rows.Add(dataRow);
- #endregion
- #region 流失率
- datas = busReport.GetOtherData2(startDate, endDate);
- dataRow = newTable.NewRow();
- if (datas != null && datas.Rows.Count > 0)
- {
- string data1 = "-";
- int tempTotal = 0;
- int tempint = 0;
- foreach (DataRow thisRow in datas.Rows)
- {
- if (thisRow["CallState"].ToInt32() == 0)
- {
- tempint = thisRow["num"].ToInt32();
- }
- tempTotal += thisRow["num"].ToInt32();
- }
- if (tempTotal != 0)
- {
- data1 = (tempint / (double)tempTotal).ToString("0.00%");
- }
- dataRow["指标名称"] = "流失率";
- dataRow["指标值"] = data1;
- }
- else
- {
- dataRow["指标名称"] = "流失率";
- dataRow["指标值"] = "-";
- }
- newTable.Rows.Add(dataRow);
- #endregion
- #region 按时转出率
- datas = busReport.GetOtherData3(startDate, endDate);
- if (datas != null && datas.Rows.Count > 0)
- {
- string data1 = "-";
- int tempTotal = 0;
- int tempint = 0;
- foreach (DataRow thisRow in datas.Rows)
- {
- if (thisRow["CallState"].ToInt32() == 1)
- {
- tempint = thisRow["num"].ToInt32();
- }
- tempTotal += thisRow["num"].ToInt32();
- }
- if (tempTotal != 0)
- {
- data1 = (tempint / (double)tempTotal).ToString("0.00%");
- }
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "按时转出率";
- dataRow["指标值"] = data1;
- newTable.Rows.Add(dataRow);
- }
- #endregion
- #region 首呼解决率
- datas = busReport.GetOtherData10(startDate, endDate);
- if (datas != null && datas.Rows.Count > 0)
- {
- string data1 = "100.00%";
- string data2 = "-";
- string data3 = "-";
- int tempTotal = 0;
- int tempint = 0;
- int tempTotal1 = 0;
- int tempint1 = 0;
- int tempTotal2 = 0;
- int tempint2 = 0;
- foreach (DataRow thisRow in datas.Rows)
- {
- //if (thisRow["F_HOUSING"].ToMyString() == "咨询")
- //{
- // if (thisRow["CallState"].ToInt32() == 1)
- // {
- // tempint = thisRow["num"].ToInt32();
- // }
- // tempTotal += thisRow["num"].ToInt32();
- //}
- if (thisRow["F_HOUSING"].ToMyString() == "建议")
- {
- if (thisRow["CallState"].ToInt32() == 1)
- {
- tempint1 = thisRow["num"].ToInt32();
- }
- tempTotal1 += thisRow["num"].ToInt32();
- }
- if (thisRow["F_HOUSING"].ToMyString() == "投诉")
- {
- if (thisRow["CallState"].ToInt32() == 1)
- {
- tempint2 = thisRow["num"].ToInt32();
- }
- tempTotal2 += thisRow["num"].ToInt32();
- }
- }
- //if (tempTotal != 0)
- //{
- // data1 = (tempint / (double)tempTotal).ToString("0.00%");
- //}
- if (tempTotal1 != 0)
- {
- data2 = (tempint1 / (double)tempTotal1).ToString("0.00%");
- }
- if (tempTotal2 != 0)
- {
- data3 = (tempint2 / (double)tempTotal2).ToString("0.00%");
- }
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "咨询客服化解率";
- dataRow["指标值"] = data1;
- newTable.Rows.Add(dataRow);
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "建议客服化解率";
- dataRow["指标值"] = data2;
- newTable.Rows.Add(dataRow);
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "投诉客服化解率";
- dataRow["指标值"] = data3;
- newTable.Rows.Add(dataRow);
- }
- #endregion
- #region 按时办结率
- datas = busReport.GetOtherData4(startDate, endDate);
- if (datas != null && datas.Rows.Count > 0)
- {
- string data1 = "-";
- string data2 = "-";
- string data3 = "-";
- int tempTotal = 0;
- int tempint = 0;
- int tempTotal1 = 0;
- int tempint1 = 0;
- int tempTotal2 = 0;
- int tempint2 = 0;
- foreach (DataRow thisRow in datas.Rows)
- {
-
- if (thisRow["CallState"].ToInt32() == 0)
- {
- OvertimeCount += thisRow["num"].ToInt32();
- }
- if (thisRow["F_HOUSING"].ToMyString() == "咨询")
- {
- if (thisRow["CallState"].ToInt32() == 1)
- {
- tempint = thisRow["num"].ToInt32();
- }
- tempTotal += thisRow["num"].ToInt32();
- }
- if (thisRow["F_HOUSING"].ToMyString() == "建议")
- {
- if (thisRow["CallState"].ToInt32() == 1)
- {
- tempint1 = thisRow["num"].ToInt32();
- }
- tempTotal1 += thisRow["num"].ToInt32();
- }
- if (thisRow["F_HOUSING"].ToMyString() == "投诉")
- {
- if (thisRow["CallState"].ToInt32() == 1)
- {
- tempint2 = thisRow["num"].ToInt32();
- }
- tempTotal2 += thisRow["num"].ToInt32();
- }
- }
- if (tempTotal != 0)
- {
- data1 = (tempint / (double)tempTotal).ToString("0.00%");
- }
- if (tempTotal1 != 0)
- {
- data2 = (tempint1 / (double)tempTotal1).ToString("0.00%");
- }
- if (tempTotal2 != 0)
- {
- data3 = (tempint2 / (double)tempTotal2).ToString("0.00%");
- }
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "咨询按时办结率";
- dataRow["指标值"] = data1;
- newTable.Rows.Add(dataRow);
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "建议按时办结率";
- dataRow["指标值"] = data2;
- newTable.Rows.Add(dataRow);
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "投诉按时办结率";
- dataRow["指标值"] = data3;
- newTable.Rows.Add(dataRow);
- }
- #endregion
- #region 按时答复率
- datas = busReport.GetOtherData5(startDate, endDate);
- if (datas != null && datas.Rows.Count > 0)
- {
- string data1 = "-";
- int tempTotal = 0;
- int tempint = 0;
- foreach (DataRow thisRow in datas.Rows)
- {
- if (thisRow["CallState"].ToInt32() == 1)
- {
- tempint = thisRow["num"].ToInt32();
- }
- tempTotal += thisRow["num"].ToInt32();
- }
- if (tempTotal != 0)
- {
- data1 = (tempint / (double)tempTotal).ToString("0.00%");
- }
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "按时答复率";
- dataRow["指标值"] = data1;
- newTable.Rows.Add(dataRow);
- }
- #endregion
- #region 超时工单数
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "超时工单数";
- dataRow["指标值"] = OvertimeCount;
- newTable.Rows.Add(dataRow);
- #endregion
- #region 定责指标
- datas = busReport.GetOtherData6(startDate, endDate);
- if (true)
- {
- string data1 = "-";
- string data2 = "-";
- string data3 = "-";
- string data4 = "-";
- int tempTotal1 = 0;
- int tempint1 = 0;
- int tempTotal2 = 0;
- int tempint2 = 0;
- int tempTotal3 = 0;
- int tempint3 = 0;
- int tempTotal4 = 0;
- int tempint4 = 0;
- if (datas != null && datas.Rows.Count > 0)
- {
- foreach (DataRow thisRow in datas.Rows)
- {
- // 根据事件概况,初步定性为无效投诉
- // 根据事件概况,初步定性为有效无责投诉
- // 根据事件概况,初步定性为一级有责投诉
- // 根据事件概况,初步定性为二级有责投诉
- // 根据事件概况,初步定性为三级有责投诉
- if (thisRow["F_SERVICENATURE"].ToMyString().Contains("无效投诉"))
- {
- tempint1 += thisRow["num"].ToInt32();
- tempTotal1 += thisRow["num"].ToInt32();
- }
- else if (thisRow["F_SERVICENATURE"].ToMyString().Contains("责投诉"))
- {
- tempint2 += thisRow["num"].ToInt32();
- tempTotal1 += thisRow["num"].ToInt32();
- }
- if (thisRow["F_SERVICENATURE"].ToMyString().Contains("有责投诉"))
- {
- tempint3 += thisRow["num"].ToInt32();
- }
- else if (thisRow["F_SERVICENATURE"].ToMyString().Contains("有效无责投诉"))
- {
- tempint4 += thisRow["num"].ToInt32();
- }
- }
- }
- if (tempTotal1 != 0)
- {
- data1 = (tempint1 / (double)tempTotal1).ToString("0.00%");
- data2 = (tempint2 / (double)tempTotal1).ToString("0.00%");
- data3 = (tempint3 / (double)tempTotal1).ToString("0.00%");
- data4 = (tempint4 / (double)tempTotal1).ToString("0.00%");
- }
- #region 指标赋值
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "无效投诉数量";
- dataRow["指标值"] = tempint1;
- newTable.Rows.Add(dataRow);
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "无效投诉占比";
- dataRow["指标值"] = data1;
- newTable.Rows.Add(dataRow);
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "有效投诉数量";
- dataRow["指标值"] = tempint2;
- newTable.Rows.Add(dataRow);
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "有效投诉占比";
- dataRow["指标值"] = data2;
- newTable.Rows.Add(dataRow);
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "有责投诉数量";
- dataRow["指标值"] = tempint3;
- newTable.Rows.Add(dataRow);
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "有责投诉占比";
- dataRow["指标值"] = data3;
- newTable.Rows.Add(dataRow);
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "有效无责数量";
- dataRow["指标值"] = tempint4;
- newTable.Rows.Add(dataRow);
- dataRow = newTable.NewRow();
- dataRow["指标名称"] = "有效无责占比";
- dataRow["指标值"] = data4;
- newTable.Rows.Add(dataRow);
- #endregion
- }
- #endregion
- dataModel.code = 0;
- dataModel.data = newTable;
- }
- catch (Exception ex)
- {
- dataModel.code = 200;
- dataModel.msg = ex.Message;
- }
- return JsonConvert.SerializeObject(dataModel);
- }
- #endregion
- #region 定责指标
- public ActionResult GetDZView()
- {
- WorkOrderMyModel model = new WorkOrderMyModel();
- return View(model);
- }
- /// <summary>
- /// 获取工单信息
- /// </summary>
- /// <param name="page">当前页码</param>
- /// <param name="limit">每页数据量</param>
- /// <param name="sqlWhere">查询条件</param>
- /// <returns></returns>
- [ActionName("GetDZData")]
- [HttpGet]
- public string GetDZData(DateTime? NowDateTime, string dateParty)
- {
- //数据结果集
- ResponseData dataModel = new ResponseData();
- try
- {
- string startDate = "";
- string endDate = "";
- if (!string.IsNullOrEmpty(dateParty))
- {
- startDate = dateParty.Substring(0, 10);
- endDate = dateParty.Substring(12);
- }
- else
- {
- startDate = endDate = DateTime.Now.ToString("yyyy-MM-dd");
- }
- DataTable newTable = new DataTable();
- newTable.Columns.Add("一级分类");
- newTable.Columns.Add("一级数量");
- newTable.Columns.Add("一级占比");
- newTable.Columns.Add("二级分类");
- newTable.Columns.Add("二级数量");
- newTable.Columns.Add("二级占比");
- newTable.Columns.Add("三级分类");
- newTable.Columns.Add("三级数量");
- newTable.Columns.Add("三级占比");
- DataRow dataRow;
- #region 统计
- DataTable datas7 = busReport.GetOtherData7(startDate, endDate);
- DataTable datas8 = busReport.GetOtherData8(startDate, endDate);
- DataTable datas9 = busReport.GetOtherData9(startDate, endDate);
- int totle7 = 0;
- int totle8 = 0;
- int totle9 = 0;
- #region 计算总数 百分比
- if (datas7 != null && datas7.Rows.Count > 0)
- {
- foreach (DataRow dr in datas7.Rows)
- {
- totle7 += dr["num"].ToInt32();
- }
- }
- if (datas8 != null && datas8.Rows.Count > 0)
- {
- foreach (DataRow dr in datas8.Rows)
- {
- totle8 += dr["num"].ToInt32();
- }
- }
- if (datas9 != null && datas9.Rows.Count > 0)
- {
- foreach (DataRow dr in datas9.Rows)
- {
- totle9 += dr["num"].ToInt32();
- }
- }
- #endregion
- for (int i = 0; i < 10; i++)
- {
- dataRow = newTable.NewRow();
- #region 一级分类
- if (totle7 > 0&&datas7.Rows.Count>i)
- {
- dataRow["一级分类"] = datas7.Rows[i]["name"];
- int tempn = datas7.Rows[i]["num"].ToInt32();
- dataRow["一级数量"] = tempn;
- dataRow["一级占比"] = (tempn/ (double)totle7).ToString("0.00%");
- }
- else
- {
- dataRow["一级分类"] = "-";
- dataRow["一级数量"] = "-";
- dataRow["一级占比"] = "-";
- }
- #endregion
- #region 二级分类
- if (totle8 > 0 && datas8.Rows.Count > i)
- {
- dataRow["二级分类"] = datas8.Rows[i]["name"];
- int tempn = datas8.Rows[i]["num"].ToInt32();
- dataRow["二级数量"] = tempn;
- dataRow["二级占比"] = (tempn / (double)totle8).ToString("0.00%");
- }
- else
- {
- dataRow["二级分类"] = "-";
- dataRow["二级数量"] = "-";
- dataRow["二级占比"] = "-";
- }
- #endregion
- #region 三级分类
- if (totle9 > 0 && datas9.Rows.Count > i)
- {
- dataRow["三级分类"] = datas9.Rows[i]["name"];
- int tempn = datas9.Rows[i]["num"].ToInt32();
- dataRow["三级数量"] = tempn;
- dataRow["三级占比"] = (tempn / (double)totle9).ToString("0.00%");
- }
- else
- {
- dataRow["三级分类"] = "-";
- dataRow["三级数量"] = "-";
- dataRow["三级占比"] = "-";
- }
- #endregion
- newTable.Rows.Add(dataRow);
- }
- #endregion
- dataModel.code = 0;
- dataModel.data = newTable;
- }
- catch (Exception ex)
- {
- dataModel.code = 200;
- dataModel.msg = ex.Message;
- }
- return JsonConvert.SerializeObject(dataModel);
- }
- [AcceptVerbs(HttpVerbs.Post)]
- public string GetDZDataExcel(DateTime? NowDateTime, string dateParty)
- {
- //数据结果集
- ResponseData dataModel = new ResponseData();
- try
- {
- string startDate = "";
- string endDate = "";
- if (!string.IsNullOrEmpty(dateParty))
- {
- startDate = dateParty.Substring(0, 10);
- endDate = dateParty.Substring(12);
- }
- else
- {
- startDate = endDate = DateTime.Now.ToString("yyyy-MM-dd");
- }
- DataTable newTable = new DataTable();
- newTable.Columns.Add("一级分类");
- newTable.Columns.Add("一级数量");
- newTable.Columns.Add("一级占比");
- newTable.Columns.Add("二级分类");
- newTable.Columns.Add("二级数量");
- newTable.Columns.Add("二级占比");
- newTable.Columns.Add("三级分类");
- newTable.Columns.Add("三级数量");
- newTable.Columns.Add("三级占比");
- DataRow dataRow;
- #region 统计
- DataTable datas7 = busReport.GetOtherData7(startDate, endDate);
- DataTable datas8 = busReport.GetOtherData8(startDate, endDate);
- DataTable datas9 = busReport.GetOtherData9(startDate, endDate);
- int totle7 = 0;
- int totle8 = 0;
- int totle9 = 0;
- #region 计算总数 百分比
- if (datas7 != null && datas7.Rows.Count > 0)
- {
- foreach (DataRow dr in datas7.Rows)
- {
- totle7 += dr["num"].ToInt32();
- }
- }
- if (datas8 != null && datas8.Rows.Count > 0)
- {
- foreach (DataRow dr in datas8.Rows)
- {
- totle8 += dr["num"].ToInt32();
- }
- }
- if (datas9 != null && datas9.Rows.Count > 0)
- {
- foreach (DataRow dr in datas9.Rows)
- {
- totle9 += dr["num"].ToInt32();
- }
- }
- #endregion
- for (int i = 0; i < 10; i++)
- {
- dataRow = newTable.NewRow();
- #region 一级分类
- if (totle7 > 0 && datas7.Rows.Count > i)
- {
- dataRow["一级分类"] = datas7.Rows[i]["name"];
- int tempn = datas7.Rows[i]["num"].ToInt32();
- dataRow["一级数量"] = tempn;
- dataRow["一级占比"] = (tempn / (double)totle7).ToString("0.00%");
- }
- else
- {
- dataRow["一级分类"] = "-";
- dataRow["一级数量"] = "-";
- dataRow["一级占比"] = "-";
- }
- #endregion
- #region 二级分类
- if (totle8 > 0 && datas8.Rows.Count > i)
- {
- dataRow["二级分类"] = datas8.Rows[i]["name"];
- int tempn = datas8.Rows[i]["num"].ToInt32();
- dataRow["二级数量"] = tempn;
- dataRow["二级占比"] = (tempn / (double)totle8).ToString("0.00%");
- }
- else
- {
- dataRow["二级分类"] = "-";
- dataRow["二级数量"] = "-";
- dataRow["二级占比"] = "-";
- }
- #endregion
- #region 三级分类
- if (totle9 > 0 && datas9.Rows.Count > i)
- {
- dataRow["三级分类"] = datas9.Rows[i]["name"];
- int tempn = datas9.Rows[i]["num"].ToInt32();
- dataRow["三级数量"] = tempn;
- dataRow["三级占比"] = (tempn / (double)totle9).ToString("0.00%");
- }
- else
- {
- dataRow["三级分类"] = "-";
- dataRow["三级数量"] = "-";
- dataRow["三级占比"] = "-";
- }
- #endregion
- newTable.Rows.Add(dataRow);
- }
- #endregion
- dataModel.code = 0;
- dataModel.data = newTable;
- }
- catch (Exception ex)
- {
- dataModel.code = 200;
- dataModel.msg = ex.Message;
- }
- ResponseDataModel NewData = new ResponseDataModel();
- ExcelReadWrite erw = new ExcelReadWrite();
- byte[] Filebyte = erw.GetExcelByte(dataModel.data, "sheet1", true);
- int officeVersion = erw.OfficeType();
- if (officeVersion == 1 || officeVersion == 2)
- {
- NewData.Message = DateTime.Now.ToString("yyyy-MM-dd") + "定责分类统计汇总表.xls";
- }
- else
- {
- NewData.Message = DateTime.Now.ToString("yyyy-MM-dd") + "定责分类统计汇总表.xlsx";
- }
- NewData.Code = "0";
- NewData.Data = JsonConvert.SerializeObject(Filebyte);
- return JsonConvert.SerializeObject(NewData);
- }
- #endregion
- #region 风险等级报表
- /// <summary>
- /// 饼图
- /// </summary>
- /// <param name="stime"></param>
- /// <param name="etime"></param>
- /// <returns></returns>
- [HttpGet]
- public string GetPieChart(string stime, string etime)
- {
- string levelsql = String.Format(" select l.level,ISNULL(c.cnt,0) count from ( select '一级' level union select '二级' level union select '三级' level ) l left join( select F_Level, Count(1) cnt from T_Wo_WorkOrderBase where F_CREATEDATE >='{0}' and F_CREATEDATE <='{1}' group by F_Level ) c on l.level = c.F_Level ", stime, etime);
- var dataModel = DbHelperSQL.Query(levelsql).Tables[0];
- return JsonConvert.SerializeObject(dataModel);
- }
- /// <summary>
- /// 折线图,时间范围是一个月以内,x坐标显示日,大于一个月 x坐标是月;时间范围不能大于1年
- /// </summary>
- /// <param name="stime"></param>
- /// <param name="etime"></param>
- /// <returns></returns>
- [HttpGet]
- public object GetLineChart(string stime, string etime)
- {
- DateTime starttime = Convert.ToDateTime(stime);
- DateTime endtime = Convert.ToDateTime(etime);
- TimeSpan ts = endtime.Subtract(starttime);
- string groupby = "";
- string orderby = "";
- List<string> datelist = new List<string>();
- if (ts.Days > 365)
- {
- //var obj = new
- //{
- // status = "error",
- // text = "日期间隔不能大于1年"
- //};
- return Error("日期间隔不能大于1年");
- }
- else if (ts.Days <= 31)
- {
- groupby = " group by convert(varchar(10), F_CREATEDATE,120)";
- orderby = "order by convert(varchar(10), F_CREATEDATE,120) asc";
- string yijisql = " select count(1) cnt,convert(varchar(10), F_CREATEDATE,120) currentday from T_Wo_WorkOrderBase where F_CREATEDATE>'" + stime + "' and F_CREATEDATE<='" + etime + "' and F_Level='一级'" + groupby + orderby;
- DataTable yijidt = DbHelperSQL.Query(yijisql).Tables[0];
- for (DateTime i = starttime; i < endtime; i = i.AddDays(1))
- {
- datelist.Add(i.ToString("yyyy-MM-dd"));
- }
- for (DateTime i = starttime; i < endtime; i = i.AddDays(1))
- {
- var dr = yijidt.Select("currentday='" + i.ToString("yyyy-MM-dd") + "'");
- if (dr == null || dr.Count() == 0)
- {
- var newdr = yijidt.NewRow();
- newdr["cnt"] = 0;
- newdr["currentday"] = i.ToString("yyyy-MM-dd");
- yijidt.Rows.Add(newdr);
- }
- }
- string erjisql = " select count(1) cnt,convert(varchar(10), F_CREATEDATE,120) currentday from T_Wo_WorkOrderBase where F_CREATEDATE>'" + stime + "' and F_CREATEDATE<='" + etime + "' and F_Level='二级'" + groupby + orderby;
- DataTable erjidt = DbHelperSQL.Query(erjisql).Tables[0];
- for (DateTime i = starttime; i < endtime; i = i.AddDays(1))
- {
- var dr = erjidt.Select("currentday='" + i.ToString("yyyy-MM-dd") + "'");
- if (dr == null || dr.Count() == 0)
- {
- var newdr = erjidt.NewRow();
- newdr["cnt"] = 0;
- newdr["currentday"] = i.ToString("yyyy-MM-dd");
- erjidt.Rows.Add(newdr);
- }
- }
- string sanjisql = " select count(1) cnt,convert(varchar(10), F_CREATEDATE,120) currentday from T_Wo_WorkOrderBase where F_CREATEDATE>'" + stime + "' and F_CREATEDATE<='" + etime + "' and F_Level='三级'" + groupby + orderby;
- DataTable sanjidt = DbHelperSQL.Query(sanjisql).Tables[0];
- for (DateTime i = starttime; i < endtime; i = i.AddDays(1))
- {
- var dr = sanjidt.Select("currentday='" + i.ToString("yyyy-MM-dd") + "'");
- if (dr == null || dr.Count() == 0)
- {
- var newdr = sanjidt.NewRow();
- newdr["cnt"] = 0;
- newdr["currentday"] = i.ToString("yyyy-MM-dd");
- sanjidt.Rows.Add(newdr);
- }
- }
- yijidt.DefaultView.Sort = " currentday asc";
- var yiji = yijidt.DefaultView.ToTable();
- erjidt.DefaultView.Sort = " currentday asc";
- var erji = erjidt.DefaultView.ToTable();
- sanjidt.DefaultView.Sort = " currentday asc";
- var sanji = sanjidt.DefaultView.ToTable();
- var obj = new
- {
- yiji = yiji.AsEnumerable().Select(v => v.Field<object>("cnt")).ToArray(),
- erji = erji.AsEnumerable().Select(v => v.Field<object>("cnt")).ToArray(),
- sanji = sanji.AsEnumerable().Select(v => v.Field<object>("cnt")).ToArray(),
- datelist = datelist
- };
- return Success("", obj);
- }
- else
- {
- groupby = " group by convert(varchar(7), F_CREATEDATE,120)";
- orderby = " order by convert(varchar(7), F_CREATEDATE,120) asc";
- endtime = endtime.AddDays(1 - endtime.Day).AddMonths(1).AddDays(-1);
- string yijisql = " select count(1) cnt,convert(varchar(7), F_CREATEDATE,120) currentday from T_Wo_WorkOrderBase where F_CREATEDATE>'" + stime + "' and F_CREATEDATE<='" + etime + "' and F_Level='一级'" + groupby + orderby;
- DataTable yijidt = DbHelperSQL.Query(yijisql).Tables[0];
- for (DateTime i = starttime; i <= endtime; i = i.AddMonths(1))
- {
- datelist.Add(i.ToString("yyyy-MM"));
- }
- for (DateTime i = starttime; i <= endtime; i = i.AddMonths(1))
- {
- var dr = yijidt.Select("currentday='" + i.ToString("yyyy-MM") + "'");
- if (dr == null || dr.Count() == 0)
- {
- var newdr = yijidt.NewRow();
- newdr["cnt"] = 0;
- newdr["currentday"] = i.ToString("yyyy-MM");
- yijidt.Rows.Add(newdr);
- }
- }
- string erjisql = " select count(1) cnt,convert(varchar(7), F_CREATEDATE,120) currentday from T_Wo_WorkOrderBase where F_CREATEDATE>'" + stime + "' and F_CREATEDATE<='" + etime + "' and F_Level='二级'" + groupby + orderby;
- DataTable erjidt = DbHelperSQL.Query(erjisql).Tables[0];
- for (DateTime i = starttime; i < endtime; i = i.AddDays(1))
- {
- var dr = erjidt.Select("currentday='" + i.ToString("yyyy-MM") + "'");
- if (dr == null || dr.Count() == 0)
- {
- var newdr = erjidt.NewRow();
- newdr["cnt"] = 0;
- newdr["currentday"] = i.ToString("yyyy-MM");
- erjidt.Rows.Add(newdr);
- }
- }
- string sanjisql = " select count(1) cnt,convert(varchar(7), F_CREATEDATE,120) currentday from T_Wo_WorkOrderBase where F_CREATEDATE>'" + stime + "' and F_CREATEDATE<='" + etime + "' and F_Level='三级'" + groupby + orderby;
- DataTable sanjidt = DbHelperSQL.Query(sanjisql).Tables[0];
- for (DateTime i = starttime; i < endtime; i = i.AddDays(1))
- {
- var dr = sanjidt.Select("currentday='" + i.ToString("yyyy-MM") + "'");
- if (dr == null || dr.Count() == 0)
- {
- var newdr = sanjidt.NewRow();
- newdr["cnt"] = 0;
- newdr["currentday"] = i.ToString("yyyy-MM");
- sanjidt.Rows.Add(newdr);
- }
- }
- yijidt.DefaultView.Sort = " currentday asc";
- var yiji = yijidt.DefaultView.ToTable();
- erjidt.DefaultView.Sort = " currentday asc";
- var erji = erjidt.DefaultView.ToTable();
- sanjidt.DefaultView.Sort = " currentday asc";
- var sanji = sanjidt.DefaultView.ToTable();
- var obj = new
- {
- yiji = yiji.AsEnumerable().Select(v => v.Field<object>("cnt")).ToArray(),
- erji = erji.AsEnumerable().Select(v => v.Field<object>("cnt")).ToArray(),
- sanji = sanji.AsEnumerable().Select(v => v.Field<object>("cnt")).ToArray(),
- datelist = datelist
- };
- return Success("", obj)
- ;
- }
- }
- [HttpGet]
- public object GetTableList(string stime, string etime, string level)
- {
- string sqlwhere = "";
- if (string.IsNullOrEmpty(stime))
- {
- stime = DateTime.Now.AddDays(-30).ToString("yyyyMMdd") + " 00:00:00";
- }
- if (string.IsNullOrEmpty(etime))
- {
- etime = DateTime.Now.ToString("yyyyMMdd") + " 23:59:59";
- }
- sqlwhere += " and F_createdate>='" + stime + "' and F_Createdate <='" + etime + "'";
- if (!string.IsNullOrEmpty(level))
- {
- sqlwhere += " and F_level='" + level + "'";
- }
- string sql = " select F_LabelId ,F_level,F_labelName,count(1) cnt from T_Wo_WorkOrderBase where F_LabelId>0 and F_level!='' and F_level !='自动'" + sqlwhere + " group by F_LabelId,F_labelName,F_level order by F_LabelId";
- var dt = DbHelperSQL.Query(sql).Tables[0];
- dt.Columns.Add("allpercent", typeof(string));// 总占比
- dt.Columns.Add("percent", typeof(string));// 占比
- dt.Columns.Add("total", typeof(string));
- if (dt != null && dt.Rows.Count > 0)
- {
- foreach (DataRow item in dt.Rows)
- {
- int sum = dt.Select("F_LabelId='" + Convert.ToInt32(item["F_LabelId"].ToString()) + "'").Sum(x => x.Field<int>("cnt"));
- item["total"] = sum;
- item["percent"] = string.Format("{0:f2}%", (Convert.ToDecimal(item["cnt"].ToString()) / sum) * 100);
- int allcnt = dt.Select("cnt >0").Sum(x => x.Field<int>("cnt"));
- item["allpercent"] = string.Format("{0:f2}%", (Convert.ToDecimal(sum) / allcnt) * 100);
- }
- return Success("数据成功", dt);
- }
- else
- {
- return Success("没有数据");
- }
- }
-
- #endregion
- }
- }
|