地铁二期项目正式开始

ReportOtherController.cs 40KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017
  1. using Newtonsoft.Json;
  2. using Newtonsoft.Json.Linq;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Web;
  9. using System.Web.Mvc;
  10. using System.Web.Script.Serialization;
  11. using YTSoft.BaseCallCenter.Model;
  12. using YTSoft.BaseCallCenter.MVCWeb.Commons;
  13. using YTSoft.BaseCallCenter.MVCWeb.Models;
  14. using YTSoft.Common;
  15. using YTSoft.DBUtility;
  16. namespace YTSoft.BaseCallCenter.MVCWeb.Controllers
  17. {
  18. public class ReportOtherController : BaseController
  19. {
  20. BLL.ReportBLL busReport = new BLL.ReportBLL();
  21. #region 其他指标
  22. public ActionResult GetindexView()
  23. {
  24. WorkOrderMyModel model = new WorkOrderMyModel();
  25. return View(model);
  26. }
  27. /// <summary>
  28. /// 获取工单信息
  29. /// </summary>
  30. /// <param name="page">当前页码</param>
  31. /// <param name="limit">每页数据量</param>
  32. /// <param name="sqlWhere">查询条件</param>
  33. /// <returns></returns>
  34. [ActionName("GetindexData")]
  35. [HttpGet]
  36. public string GetindexData(DateTime? NowDateTime, string dateParty)
  37. {
  38. //数据结果集
  39. ResponseData dataModel = new ResponseData();
  40. try
  41. {
  42. string startDate = "";
  43. string endDate = "";
  44. if (!string.IsNullOrEmpty(dateParty))
  45. {
  46. startDate = dateParty.Substring(0, 10);
  47. endDate = dateParty.Substring(12);
  48. }
  49. else
  50. {
  51. startDate = endDate = DateTime.Now.ToString("yyyy-MM-dd");
  52. }
  53. DataTable datas = null;
  54. DataTable newTable = new DataTable();
  55. //newTable.Columns.Add("ID");
  56. newTable.Columns.Add("指标名称");
  57. newTable.Columns.Add("指标值");
  58. DataRow dataRow;
  59. int OvertimeCount = 0;
  60. #region 接通率
  61. dataRow = newTable.NewRow();
  62. datas = busReport.GetOtherData1(startDate, endDate);
  63. if (datas != null && datas.Rows.Count > 0)
  64. {
  65. string data1 = "-";
  66. int tempTotal = 0;
  67. int tempint = 0;
  68. foreach (DataRow thisRow in datas.Rows)
  69. {
  70. if (thisRow["CallState"].ToInt32() == 1)
  71. {
  72. tempint = thisRow["num"].ToInt32();
  73. }
  74. tempTotal += thisRow["num"].ToInt32();
  75. }
  76. if (tempTotal != 0)
  77. {
  78. data1 = (tempint / (double)tempTotal).ToString("0.00%");
  79. }
  80. dataRow["指标名称"] = "接通率";
  81. dataRow["指标值"] = data1;
  82. }
  83. else
  84. {
  85. dataRow["指标名称"] = "接通率";
  86. dataRow["指标值"] = "-";
  87. }
  88. newTable.Rows.Add(dataRow);
  89. #endregion
  90. #region 流失率
  91. datas = busReport.GetOtherData2(startDate, endDate);
  92. dataRow = newTable.NewRow();
  93. if (datas != null && datas.Rows.Count > 0)
  94. {
  95. string data1 = "-";
  96. int tempTotal = 0;
  97. int tempint = 0;
  98. foreach (DataRow thisRow in datas.Rows)
  99. {
  100. if (thisRow["CallState"].ToInt32() == 0)
  101. {
  102. tempint = thisRow["num"].ToInt32();
  103. }
  104. tempTotal += thisRow["num"].ToInt32();
  105. }
  106. if (tempTotal != 0)
  107. {
  108. data1 = (tempint / (double)tempTotal).ToString("0.00%");
  109. }
  110. dataRow["指标名称"] = "流失率";
  111. dataRow["指标值"] = data1;
  112. }
  113. else
  114. {
  115. dataRow["指标名称"] = "流失率";
  116. dataRow["指标值"] = "-";
  117. }
  118. newTable.Rows.Add(dataRow);
  119. #endregion
  120. #region 按时转出率
  121. datas = busReport.GetOtherData3(startDate, endDate);
  122. if (datas != null && datas.Rows.Count > 0)
  123. {
  124. string data1 = "-";
  125. int tempTotal = 0;
  126. int tempint = 0;
  127. foreach (DataRow thisRow in datas.Rows)
  128. {
  129. if (thisRow["CallState"].ToInt32() == 1)
  130. {
  131. tempint = thisRow["num"].ToInt32();
  132. }
  133. tempTotal += thisRow["num"].ToInt32();
  134. }
  135. if (tempTotal != 0)
  136. {
  137. data1 = (tempint / (double)tempTotal).ToString("0.00%");
  138. }
  139. dataRow = newTable.NewRow();
  140. dataRow["指标名称"] = "按时转出率";
  141. dataRow["指标值"] = data1;
  142. newTable.Rows.Add(dataRow);
  143. }
  144. #endregion
  145. #region 首呼解决率
  146. datas = busReport.GetOtherData10(startDate, endDate);
  147. if (datas != null && datas.Rows.Count > 0)
  148. {
  149. string data1 = "100.00%";
  150. string data2 = "-";
  151. string data3 = "-";
  152. int tempTotal = 0;
  153. int tempint = 0;
  154. int tempTotal1 = 0;
  155. int tempint1 = 0;
  156. int tempTotal2 = 0;
  157. int tempint2 = 0;
  158. foreach (DataRow thisRow in datas.Rows)
  159. {
  160. //if (thisRow["F_HOUSING"].ToMyString() == "咨询")
  161. //{
  162. // if (thisRow["CallState"].ToInt32() == 1)
  163. // {
  164. // tempint = thisRow["num"].ToInt32();
  165. // }
  166. // tempTotal += thisRow["num"].ToInt32();
  167. //}
  168. if (thisRow["F_HOUSING"].ToMyString() == "建议")
  169. {
  170. if (thisRow["CallState"].ToInt32() == 1)
  171. {
  172. tempint1 = thisRow["num"].ToInt32();
  173. }
  174. tempTotal1 += thisRow["num"].ToInt32();
  175. }
  176. if (thisRow["F_HOUSING"].ToMyString() == "投诉")
  177. {
  178. if (thisRow["CallState"].ToInt32() == 1)
  179. {
  180. tempint2 = thisRow["num"].ToInt32();
  181. }
  182. tempTotal2 += thisRow["num"].ToInt32();
  183. }
  184. }
  185. //if (tempTotal != 0)
  186. //{
  187. // data1 = (tempint / (double)tempTotal).ToString("0.00%");
  188. //}
  189. if (tempTotal1 != 0)
  190. {
  191. data2 = (tempint1 / (double)tempTotal1).ToString("0.00%");
  192. }
  193. if (tempTotal2 != 0)
  194. {
  195. data3 = (tempint2 / (double)tempTotal2).ToString("0.00%");
  196. }
  197. dataRow = newTable.NewRow();
  198. dataRow["指标名称"] = "咨询客服化解率";
  199. dataRow["指标值"] = data1;
  200. newTable.Rows.Add(dataRow);
  201. dataRow = newTable.NewRow();
  202. dataRow["指标名称"] = "建议客服化解率";
  203. dataRow["指标值"] = data2;
  204. newTable.Rows.Add(dataRow);
  205. dataRow = newTable.NewRow();
  206. dataRow["指标名称"] = "投诉客服化解率";
  207. dataRow["指标值"] = data3;
  208. newTable.Rows.Add(dataRow);
  209. }
  210. #endregion
  211. #region 按时办结率
  212. datas = busReport.GetOtherData4(startDate, endDate);
  213. if (datas != null && datas.Rows.Count > 0)
  214. {
  215. string data1 = "-";
  216. string data2 = "-";
  217. string data3 = "-";
  218. int tempTotal = 0;
  219. int tempint = 0;
  220. int tempTotal1 = 0;
  221. int tempint1 = 0;
  222. int tempTotal2 = 0;
  223. int tempint2 = 0;
  224. foreach (DataRow thisRow in datas.Rows)
  225. {
  226. if (thisRow["CallState"].ToInt32() == 0)
  227. {
  228. OvertimeCount += thisRow["num"].ToInt32();
  229. }
  230. if (thisRow["F_HOUSING"].ToMyString() == "咨询")
  231. {
  232. if (thisRow["CallState"].ToInt32() == 1)
  233. {
  234. tempint = thisRow["num"].ToInt32();
  235. }
  236. tempTotal += thisRow["num"].ToInt32();
  237. }
  238. if (thisRow["F_HOUSING"].ToMyString() == "建议")
  239. {
  240. if (thisRow["CallState"].ToInt32() == 1)
  241. {
  242. tempint1 = thisRow["num"].ToInt32();
  243. }
  244. tempTotal1 += thisRow["num"].ToInt32();
  245. }
  246. if (thisRow["F_HOUSING"].ToMyString() == "投诉")
  247. {
  248. if (thisRow["CallState"].ToInt32() == 1)
  249. {
  250. tempint2 = thisRow["num"].ToInt32();
  251. }
  252. tempTotal2 += thisRow["num"].ToInt32();
  253. }
  254. }
  255. if (tempTotal != 0)
  256. {
  257. data1 = (tempint / (double)tempTotal).ToString("0.00%");
  258. }
  259. if (tempTotal1 != 0)
  260. {
  261. data2 = (tempint1 / (double)tempTotal1).ToString("0.00%");
  262. }
  263. if (tempTotal2 != 0)
  264. {
  265. data3 = (tempint2 / (double)tempTotal2).ToString("0.00%");
  266. }
  267. dataRow = newTable.NewRow();
  268. dataRow["指标名称"] = "咨询按时办结率";
  269. dataRow["指标值"] = data1;
  270. newTable.Rows.Add(dataRow);
  271. dataRow = newTable.NewRow();
  272. dataRow["指标名称"] = "建议按时办结率";
  273. dataRow["指标值"] = data2;
  274. newTable.Rows.Add(dataRow);
  275. dataRow = newTable.NewRow();
  276. dataRow["指标名称"] = "投诉按时办结率";
  277. dataRow["指标值"] = data3;
  278. newTable.Rows.Add(dataRow);
  279. }
  280. #endregion
  281. #region 按时答复率
  282. datas = busReport.GetOtherData5(startDate, endDate);
  283. if (datas != null && datas.Rows.Count > 0)
  284. {
  285. string data1 = "-";
  286. int tempTotal = 0;
  287. int tempint = 0;
  288. foreach (DataRow thisRow in datas.Rows)
  289. {
  290. if (thisRow["CallState"].ToInt32() == 1)
  291. {
  292. tempint = thisRow["num"].ToInt32();
  293. }
  294. tempTotal += thisRow["num"].ToInt32();
  295. }
  296. if (tempTotal != 0)
  297. {
  298. data1 = (tempint / (double)tempTotal).ToString("0.00%");
  299. }
  300. dataRow = newTable.NewRow();
  301. dataRow["指标名称"] = "按时答复率";
  302. dataRow["指标值"] = data1;
  303. newTable.Rows.Add(dataRow);
  304. }
  305. #endregion
  306. #region 超时工单数
  307. dataRow = newTable.NewRow();
  308. dataRow["指标名称"] = "超时工单数";
  309. dataRow["指标值"] = OvertimeCount;
  310. newTable.Rows.Add(dataRow);
  311. #endregion
  312. #region 定责指标
  313. datas = busReport.GetOtherData6(startDate, endDate);
  314. if (true)
  315. {
  316. string data1 = "-";
  317. string data2 = "-";
  318. string data3 = "-";
  319. string data4 = "-";
  320. int tempTotal1 = 0;
  321. int tempint1 = 0;
  322. int tempTotal2 = 0;
  323. int tempint2 = 0;
  324. int tempTotal3 = 0;
  325. int tempint3 = 0;
  326. int tempTotal4 = 0;
  327. int tempint4 = 0;
  328. if (datas != null && datas.Rows.Count > 0)
  329. {
  330. foreach (DataRow thisRow in datas.Rows)
  331. {
  332. // 根据事件概况,初步定性为无效投诉
  333. // 根据事件概况,初步定性为有效无责投诉
  334. // 根据事件概况,初步定性为一级有责投诉
  335. // 根据事件概况,初步定性为二级有责投诉
  336. // 根据事件概况,初步定性为三级有责投诉
  337. if (thisRow["F_SERVICENATURE"].ToMyString().Contains("无效投诉"))
  338. {
  339. tempint1 += thisRow["num"].ToInt32();
  340. tempTotal1 += thisRow["num"].ToInt32();
  341. }
  342. else if (thisRow["F_SERVICENATURE"].ToMyString().Contains("责投诉"))
  343. {
  344. tempint2 += thisRow["num"].ToInt32();
  345. tempTotal1 += thisRow["num"].ToInt32();
  346. }
  347. if (thisRow["F_SERVICENATURE"].ToMyString().Contains("有责投诉"))
  348. {
  349. tempint3 += thisRow["num"].ToInt32();
  350. }
  351. else if (thisRow["F_SERVICENATURE"].ToMyString().Contains("有效无责投诉"))
  352. {
  353. tempint4 += thisRow["num"].ToInt32();
  354. }
  355. }
  356. }
  357. if (tempTotal1 != 0)
  358. {
  359. data1 = (tempint1 / (double)tempTotal1).ToString("0.00%");
  360. data2 = (tempint2 / (double)tempTotal1).ToString("0.00%");
  361. data3 = (tempint3 / (double)tempTotal1).ToString("0.00%");
  362. data4 = (tempint4 / (double)tempTotal1).ToString("0.00%");
  363. }
  364. #region 指标赋值
  365. dataRow = newTable.NewRow();
  366. dataRow["指标名称"] = "无效投诉数量";
  367. dataRow["指标值"] = tempint1;
  368. newTable.Rows.Add(dataRow);
  369. dataRow = newTable.NewRow();
  370. dataRow["指标名称"] = "无效投诉占比";
  371. dataRow["指标值"] = data1;
  372. newTable.Rows.Add(dataRow);
  373. dataRow = newTable.NewRow();
  374. dataRow["指标名称"] = "有效投诉数量";
  375. dataRow["指标值"] = tempint2;
  376. newTable.Rows.Add(dataRow);
  377. dataRow = newTable.NewRow();
  378. dataRow["指标名称"] = "有效投诉占比";
  379. dataRow["指标值"] = data2;
  380. newTable.Rows.Add(dataRow);
  381. dataRow = newTable.NewRow();
  382. dataRow["指标名称"] = "有责投诉数量";
  383. dataRow["指标值"] = tempint3;
  384. newTable.Rows.Add(dataRow);
  385. dataRow = newTable.NewRow();
  386. dataRow["指标名称"] = "有责投诉占比";
  387. dataRow["指标值"] = data3;
  388. newTable.Rows.Add(dataRow);
  389. dataRow = newTable.NewRow();
  390. dataRow["指标名称"] = "有效无责数量";
  391. dataRow["指标值"] = tempint4;
  392. newTable.Rows.Add(dataRow);
  393. dataRow = newTable.NewRow();
  394. dataRow["指标名称"] = "有效无责占比";
  395. dataRow["指标值"] = data4;
  396. newTable.Rows.Add(dataRow);
  397. #endregion
  398. }
  399. #endregion
  400. dataModel.code = 0;
  401. dataModel.data = newTable;
  402. }
  403. catch (Exception ex)
  404. {
  405. dataModel.code = 200;
  406. dataModel.msg = ex.Message;
  407. }
  408. return JsonConvert.SerializeObject(dataModel);
  409. }
  410. #endregion
  411. #region 定责指标
  412. public ActionResult GetDZView()
  413. {
  414. WorkOrderMyModel model = new WorkOrderMyModel();
  415. return View(model);
  416. }
  417. /// <summary>
  418. /// 获取工单信息
  419. /// </summary>
  420. /// <param name="page">当前页码</param>
  421. /// <param name="limit">每页数据量</param>
  422. /// <param name="sqlWhere">查询条件</param>
  423. /// <returns></returns>
  424. [ActionName("GetDZData")]
  425. [HttpGet]
  426. public string GetDZData(DateTime? NowDateTime, string dateParty)
  427. {
  428. //数据结果集
  429. ResponseData dataModel = new ResponseData();
  430. try
  431. {
  432. string startDate = "";
  433. string endDate = "";
  434. if (!string.IsNullOrEmpty(dateParty))
  435. {
  436. startDate = dateParty.Substring(0, 10);
  437. endDate = dateParty.Substring(12);
  438. }
  439. else
  440. {
  441. startDate = endDate = DateTime.Now.ToString("yyyy-MM-dd");
  442. }
  443. DataTable newTable = new DataTable();
  444. newTable.Columns.Add("一级分类");
  445. newTable.Columns.Add("一级数量");
  446. newTable.Columns.Add("一级占比");
  447. newTable.Columns.Add("二级分类");
  448. newTable.Columns.Add("二级数量");
  449. newTable.Columns.Add("二级占比");
  450. newTable.Columns.Add("三级分类");
  451. newTable.Columns.Add("三级数量");
  452. newTable.Columns.Add("三级占比");
  453. DataRow dataRow;
  454. #region 统计
  455. DataTable datas7 = busReport.GetOtherData7(startDate, endDate);
  456. DataTable datas8 = busReport.GetOtherData8(startDate, endDate);
  457. DataTable datas9 = busReport.GetOtherData9(startDate, endDate);
  458. int totle7 = 0;
  459. int totle8 = 0;
  460. int totle9 = 0;
  461. #region 计算总数 百分比
  462. if (datas7 != null && datas7.Rows.Count > 0)
  463. {
  464. foreach (DataRow dr in datas7.Rows)
  465. {
  466. totle7 += dr["num"].ToInt32();
  467. }
  468. }
  469. if (datas8 != null && datas8.Rows.Count > 0)
  470. {
  471. foreach (DataRow dr in datas8.Rows)
  472. {
  473. totle8 += dr["num"].ToInt32();
  474. }
  475. }
  476. if (datas9 != null && datas9.Rows.Count > 0)
  477. {
  478. foreach (DataRow dr in datas9.Rows)
  479. {
  480. totle9 += dr["num"].ToInt32();
  481. }
  482. }
  483. #endregion
  484. for (int i = 0; i < 10; i++)
  485. {
  486. dataRow = newTable.NewRow();
  487. #region 一级分类
  488. if (totle7 > 0&&datas7.Rows.Count>i)
  489. {
  490. dataRow["一级分类"] = datas7.Rows[i]["name"];
  491. int tempn = datas7.Rows[i]["num"].ToInt32();
  492. dataRow["一级数量"] = tempn;
  493. dataRow["一级占比"] = (tempn/ (double)totle7).ToString("0.00%");
  494. }
  495. else
  496. {
  497. dataRow["一级分类"] = "-";
  498. dataRow["一级数量"] = "-";
  499. dataRow["一级占比"] = "-";
  500. }
  501. #endregion
  502. #region 二级分类
  503. if (totle8 > 0 && datas8.Rows.Count > i)
  504. {
  505. dataRow["二级分类"] = datas8.Rows[i]["name"];
  506. int tempn = datas8.Rows[i]["num"].ToInt32();
  507. dataRow["二级数量"] = tempn;
  508. dataRow["二级占比"] = (tempn / (double)totle8).ToString("0.00%");
  509. }
  510. else
  511. {
  512. dataRow["二级分类"] = "-";
  513. dataRow["二级数量"] = "-";
  514. dataRow["二级占比"] = "-";
  515. }
  516. #endregion
  517. #region 三级分类
  518. if (totle9 > 0 && datas9.Rows.Count > i)
  519. {
  520. dataRow["三级分类"] = datas9.Rows[i]["name"];
  521. int tempn = datas9.Rows[i]["num"].ToInt32();
  522. dataRow["三级数量"] = tempn;
  523. dataRow["三级占比"] = (tempn / (double)totle9).ToString("0.00%");
  524. }
  525. else
  526. {
  527. dataRow["三级分类"] = "-";
  528. dataRow["三级数量"] = "-";
  529. dataRow["三级占比"] = "-";
  530. }
  531. #endregion
  532. newTable.Rows.Add(dataRow);
  533. }
  534. #endregion
  535. dataModel.code = 0;
  536. dataModel.data = newTable;
  537. }
  538. catch (Exception ex)
  539. {
  540. dataModel.code = 200;
  541. dataModel.msg = ex.Message;
  542. }
  543. return JsonConvert.SerializeObject(dataModel);
  544. }
  545. [AcceptVerbs(HttpVerbs.Post)]
  546. public string GetDZDataExcel(DateTime? NowDateTime, string dateParty)
  547. {
  548. //数据结果集
  549. ResponseData dataModel = new ResponseData();
  550. try
  551. {
  552. string startDate = "";
  553. string endDate = "";
  554. if (!string.IsNullOrEmpty(dateParty))
  555. {
  556. startDate = dateParty.Substring(0, 10);
  557. endDate = dateParty.Substring(12);
  558. }
  559. else
  560. {
  561. startDate = endDate = DateTime.Now.ToString("yyyy-MM-dd");
  562. }
  563. DataTable newTable = new DataTable();
  564. newTable.Columns.Add("一级分类");
  565. newTable.Columns.Add("一级数量");
  566. newTable.Columns.Add("一级占比");
  567. newTable.Columns.Add("二级分类");
  568. newTable.Columns.Add("二级数量");
  569. newTable.Columns.Add("二级占比");
  570. newTable.Columns.Add("三级分类");
  571. newTable.Columns.Add("三级数量");
  572. newTable.Columns.Add("三级占比");
  573. DataRow dataRow;
  574. #region 统计
  575. DataTable datas7 = busReport.GetOtherData7(startDate, endDate);
  576. DataTable datas8 = busReport.GetOtherData8(startDate, endDate);
  577. DataTable datas9 = busReport.GetOtherData9(startDate, endDate);
  578. int totle7 = 0;
  579. int totle8 = 0;
  580. int totle9 = 0;
  581. #region 计算总数 百分比
  582. if (datas7 != null && datas7.Rows.Count > 0)
  583. {
  584. foreach (DataRow dr in datas7.Rows)
  585. {
  586. totle7 += dr["num"].ToInt32();
  587. }
  588. }
  589. if (datas8 != null && datas8.Rows.Count > 0)
  590. {
  591. foreach (DataRow dr in datas8.Rows)
  592. {
  593. totle8 += dr["num"].ToInt32();
  594. }
  595. }
  596. if (datas9 != null && datas9.Rows.Count > 0)
  597. {
  598. foreach (DataRow dr in datas9.Rows)
  599. {
  600. totle9 += dr["num"].ToInt32();
  601. }
  602. }
  603. #endregion
  604. for (int i = 0; i < 10; i++)
  605. {
  606. dataRow = newTable.NewRow();
  607. #region 一级分类
  608. if (totle7 > 0 && datas7.Rows.Count > i)
  609. {
  610. dataRow["一级分类"] = datas7.Rows[i]["name"];
  611. int tempn = datas7.Rows[i]["num"].ToInt32();
  612. dataRow["一级数量"] = tempn;
  613. dataRow["一级占比"] = (tempn / (double)totle7).ToString("0.00%");
  614. }
  615. else
  616. {
  617. dataRow["一级分类"] = "-";
  618. dataRow["一级数量"] = "-";
  619. dataRow["一级占比"] = "-";
  620. }
  621. #endregion
  622. #region 二级分类
  623. if (totle8 > 0 && datas8.Rows.Count > i)
  624. {
  625. dataRow["二级分类"] = datas8.Rows[i]["name"];
  626. int tempn = datas8.Rows[i]["num"].ToInt32();
  627. dataRow["二级数量"] = tempn;
  628. dataRow["二级占比"] = (tempn / (double)totle8).ToString("0.00%");
  629. }
  630. else
  631. {
  632. dataRow["二级分类"] = "-";
  633. dataRow["二级数量"] = "-";
  634. dataRow["二级占比"] = "-";
  635. }
  636. #endregion
  637. #region 三级分类
  638. if (totle9 > 0 && datas9.Rows.Count > i)
  639. {
  640. dataRow["三级分类"] = datas9.Rows[i]["name"];
  641. int tempn = datas9.Rows[i]["num"].ToInt32();
  642. dataRow["三级数量"] = tempn;
  643. dataRow["三级占比"] = (tempn / (double)totle9).ToString("0.00%");
  644. }
  645. else
  646. {
  647. dataRow["三级分类"] = "-";
  648. dataRow["三级数量"] = "-";
  649. dataRow["三级占比"] = "-";
  650. }
  651. #endregion
  652. newTable.Rows.Add(dataRow);
  653. }
  654. #endregion
  655. dataModel.code = 0;
  656. dataModel.data = newTable;
  657. }
  658. catch (Exception ex)
  659. {
  660. dataModel.code = 200;
  661. dataModel.msg = ex.Message;
  662. }
  663. ResponseDataModel NewData = new ResponseDataModel();
  664. ExcelReadWrite erw = new ExcelReadWrite();
  665. byte[] Filebyte = erw.GetExcelByte(dataModel.data, "sheet1", true);
  666. int officeVersion = erw.OfficeType();
  667. if (officeVersion == 1 || officeVersion == 2)
  668. {
  669. NewData.Message = DateTime.Now.ToString("yyyy-MM-dd") + "定责分类统计汇总表.xls";
  670. }
  671. else
  672. {
  673. NewData.Message = DateTime.Now.ToString("yyyy-MM-dd") + "定责分类统计汇总表.xlsx";
  674. }
  675. NewData.Code = "0";
  676. NewData.Data = JsonConvert.SerializeObject(Filebyte);
  677. return JsonConvert.SerializeObject(NewData);
  678. }
  679. #endregion
  680. #region 风险等级报表
  681. /// <summary>
  682. /// 饼图
  683. /// </summary>
  684. /// <param name="stime"></param>
  685. /// <param name="etime"></param>
  686. /// <returns></returns>
  687. [HttpGet]
  688. public string GetPieChart(string stime, string etime)
  689. {
  690. 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);
  691. var dataModel = DbHelperSQL.Query(levelsql).Tables[0];
  692. return JsonConvert.SerializeObject(dataModel);
  693. }
  694. /// <summary>
  695. /// 折线图,时间范围是一个月以内,x坐标显示日,大于一个月 x坐标是月;时间范围不能大于1年
  696. /// </summary>
  697. /// <param name="stime"></param>
  698. /// <param name="etime"></param>
  699. /// <returns></returns>
  700. [HttpGet]
  701. public object GetLineChart(string stime, string etime)
  702. {
  703. DateTime starttime = Convert.ToDateTime(stime);
  704. DateTime endtime = Convert.ToDateTime(etime);
  705. TimeSpan ts = endtime.Subtract(starttime);
  706. string groupby = "";
  707. string orderby = "";
  708. List<string> datelist = new List<string>();
  709. if (ts.Days > 365)
  710. {
  711. //var obj = new
  712. //{
  713. // status = "error",
  714. // text = "日期间隔不能大于1年"
  715. //};
  716. return Error("日期间隔不能大于1年");
  717. }
  718. else if (ts.Days <= 31)
  719. {
  720. groupby = " group by convert(varchar(10), F_CREATEDATE,120)";
  721. orderby = "order by convert(varchar(10), F_CREATEDATE,120) asc";
  722. 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;
  723. DataTable yijidt = DbHelperSQL.Query(yijisql).Tables[0];
  724. for (DateTime i = starttime; i < endtime; i = i.AddDays(1))
  725. {
  726. datelist.Add(i.ToString("yyyy-MM-dd"));
  727. }
  728. for (DateTime i = starttime; i < endtime; i = i.AddDays(1))
  729. {
  730. var dr = yijidt.Select("currentday='" + i.ToString("yyyy-MM-dd") + "'");
  731. if (dr == null || dr.Count() == 0)
  732. {
  733. var newdr = yijidt.NewRow();
  734. newdr["cnt"] = 0;
  735. newdr["currentday"] = i.ToString("yyyy-MM-dd");
  736. yijidt.Rows.Add(newdr);
  737. }
  738. }
  739. 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;
  740. DataTable erjidt = DbHelperSQL.Query(erjisql).Tables[0];
  741. for (DateTime i = starttime; i < endtime; i = i.AddDays(1))
  742. {
  743. var dr = erjidt.Select("currentday='" + i.ToString("yyyy-MM-dd") + "'");
  744. if (dr == null || dr.Count() == 0)
  745. {
  746. var newdr = erjidt.NewRow();
  747. newdr["cnt"] = 0;
  748. newdr["currentday"] = i.ToString("yyyy-MM-dd");
  749. erjidt.Rows.Add(newdr);
  750. }
  751. }
  752. 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;
  753. DataTable sanjidt = DbHelperSQL.Query(sanjisql).Tables[0];
  754. for (DateTime i = starttime; i < endtime; i = i.AddDays(1))
  755. {
  756. var dr = sanjidt.Select("currentday='" + i.ToString("yyyy-MM-dd") + "'");
  757. if (dr == null || dr.Count() == 0)
  758. {
  759. var newdr = sanjidt.NewRow();
  760. newdr["cnt"] = 0;
  761. newdr["currentday"] = i.ToString("yyyy-MM-dd");
  762. sanjidt.Rows.Add(newdr);
  763. }
  764. }
  765. yijidt.DefaultView.Sort = " currentday asc";
  766. var yiji = yijidt.DefaultView.ToTable();
  767. erjidt.DefaultView.Sort = " currentday asc";
  768. var erji = erjidt.DefaultView.ToTable();
  769. sanjidt.DefaultView.Sort = " currentday asc";
  770. var sanji = sanjidt.DefaultView.ToTable();
  771. var obj = new
  772. {
  773. yiji = yiji.AsEnumerable().Select(v => v.Field<object>("cnt")).ToArray(),
  774. erji = erji.AsEnumerable().Select(v => v.Field<object>("cnt")).ToArray(),
  775. sanji = sanji.AsEnumerable().Select(v => v.Field<object>("cnt")).ToArray(),
  776. datelist = datelist
  777. };
  778. return Success("", obj);
  779. }
  780. else
  781. {
  782. groupby = " group by convert(varchar(7), F_CREATEDATE,120)";
  783. orderby = " order by convert(varchar(7), F_CREATEDATE,120) asc";
  784. endtime = endtime.AddDays(1 - endtime.Day).AddMonths(1).AddDays(-1);
  785. 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;
  786. DataTable yijidt = DbHelperSQL.Query(yijisql).Tables[0];
  787. for (DateTime i = starttime; i <= endtime; i = i.AddMonths(1))
  788. {
  789. datelist.Add(i.ToString("yyyy-MM"));
  790. }
  791. for (DateTime i = starttime; i <= endtime; i = i.AddMonths(1))
  792. {
  793. var dr = yijidt.Select("currentday='" + i.ToString("yyyy-MM") + "'");
  794. if (dr == null || dr.Count() == 0)
  795. {
  796. var newdr = yijidt.NewRow();
  797. newdr["cnt"] = 0;
  798. newdr["currentday"] = i.ToString("yyyy-MM");
  799. yijidt.Rows.Add(newdr);
  800. }
  801. }
  802. 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;
  803. DataTable erjidt = DbHelperSQL.Query(erjisql).Tables[0];
  804. for (DateTime i = starttime; i < endtime; i = i.AddDays(1))
  805. {
  806. var dr = erjidt.Select("currentday='" + i.ToString("yyyy-MM") + "'");
  807. if (dr == null || dr.Count() == 0)
  808. {
  809. var newdr = erjidt.NewRow();
  810. newdr["cnt"] = 0;
  811. newdr["currentday"] = i.ToString("yyyy-MM");
  812. erjidt.Rows.Add(newdr);
  813. }
  814. }
  815. 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;
  816. DataTable sanjidt = DbHelperSQL.Query(sanjisql).Tables[0];
  817. for (DateTime i = starttime; i < endtime; i = i.AddDays(1))
  818. {
  819. var dr = sanjidt.Select("currentday='" + i.ToString("yyyy-MM") + "'");
  820. if (dr == null || dr.Count() == 0)
  821. {
  822. var newdr = sanjidt.NewRow();
  823. newdr["cnt"] = 0;
  824. newdr["currentday"] = i.ToString("yyyy-MM");
  825. sanjidt.Rows.Add(newdr);
  826. }
  827. }
  828. yijidt.DefaultView.Sort = " currentday asc";
  829. var yiji = yijidt.DefaultView.ToTable();
  830. erjidt.DefaultView.Sort = " currentday asc";
  831. var erji = erjidt.DefaultView.ToTable();
  832. sanjidt.DefaultView.Sort = " currentday asc";
  833. var sanji = sanjidt.DefaultView.ToTable();
  834. var obj = new
  835. {
  836. yiji = yiji.AsEnumerable().Select(v => v.Field<object>("cnt")).ToArray(),
  837. erji = erji.AsEnumerable().Select(v => v.Field<object>("cnt")).ToArray(),
  838. sanji = sanji.AsEnumerable().Select(v => v.Field<object>("cnt")).ToArray(),
  839. datelist = datelist
  840. };
  841. return Success("", obj)
  842. ;
  843. }
  844. }
  845. [HttpGet]
  846. public object GetTableList(string stime, string etime, string level)
  847. {
  848. string sqlwhere = "";
  849. if (string.IsNullOrEmpty(stime))
  850. {
  851. stime = DateTime.Now.AddDays(-30).ToString("yyyyMMdd") + " 00:00:00";
  852. }
  853. if (string.IsNullOrEmpty(etime))
  854. {
  855. etime = DateTime.Now.ToString("yyyyMMdd") + " 23:59:59";
  856. }
  857. sqlwhere += " and F_createdate>='" + stime + "' and F_Createdate <='" + etime + "'";
  858. if (!string.IsNullOrEmpty(level))
  859. {
  860. sqlwhere += " and F_level='" + level + "'";
  861. }
  862. 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";
  863. var dt = DbHelperSQL.Query(sql).Tables[0];
  864. dt.Columns.Add("allpercent", typeof(string));// 总占比
  865. dt.Columns.Add("percent", typeof(string));// 占比
  866. dt.Columns.Add("total", typeof(string));
  867. if (dt != null && dt.Rows.Count > 0)
  868. {
  869. foreach (DataRow item in dt.Rows)
  870. {
  871. int sum = dt.Select("F_LabelId='" + Convert.ToInt32(item["F_LabelId"].ToString()) + "'").Sum(x => x.Field<int>("cnt"));
  872. item["total"] = sum;
  873. item["percent"] = string.Format("{0:f2}%", (Convert.ToDecimal(item["cnt"].ToString()) / sum) * 100);
  874. int allcnt = dt.Select("cnt >0").Sum(x => x.Field<int>("cnt"));
  875. item["allpercent"] = string.Format("{0:f2}%", (Convert.ToDecimal(sum) / allcnt) * 100);
  876. }
  877. return Success("数据成功", dt);
  878. }
  879. else
  880. {
  881. return Success("没有数据");
  882. }
  883. }
  884. #endregion
  885. }
  886. }