县级监管平台

InfoController.cs 108KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646
  1. using CallCenterApi.Common;
  2. using CallCenterApi.Interface.Controllers.Base;
  3. using Newtonsoft.Json;
  4. using Newtonsoft.Json.Linq;
  5. using System;
  6. using System.Collections;
  7. using System.Collections.Generic;
  8. using System.Data;
  9. using System.Linq;
  10. using System.Web;
  11. using System.Web.Mvc;
  12. using System.Web.Script.Serialization;
  13. namespace CallCenterApi.Interface.Controllers
  14. {
  15. /// <summary>
  16. /// 大屏公示系统
  17. /// </summary>
  18. //[Authority]
  19. public class InfoController : BaseController
  20. {
  21. // GET: Info
  22. public ActionResult Index()
  23. {
  24. return View();
  25. }
  26. #region 来源渠道
  27. /// <summary>
  28. /// 获取受理区域数量
  29. /// </summary>
  30. /// <param name="branchcode"></param>
  31. /// <param name="date"></param>
  32. /// <returns></returns>
  33. public ActionResult GetAreaCount24ByDate(string branchcode, DateTime? date, string areaid)
  34. {
  35. if (date == null)
  36. {
  37. date = DateTime.Now;
  38. }
  39. int backtotal = 0;
  40. //string sqlwhere = " F_IsDelete=0 ";
  41. string sqlwhere = " F_IsDP=1 ";//大屏展示用到的
  42. if (branchcode == "sqs12345")
  43. {
  44. branchcode = "";
  45. sqlwhere += " and F_IsSQ=0";
  46. }
  47. if (!string.IsNullOrEmpty(branchcode))
  48. {
  49. sqlwhere += " and F_Code='" + branchcode + "'";
  50. }
  51. else
  52. {
  53. backtotal = 1;
  54. sqlwhere += " and F_IsSQ!=1";
  55. }
  56. int first = 1;
  57. int[] hours = Enumerable.Range(0, 24).ToArray<int>();
  58. decimal[,] countstotal = new decimal[10, 24];//用于计算累计值//固定了10个市县区
  59. decimal[] tcountstotal = new decimal[10];
  60. string[] cols = new string[10];
  61. string[] colsx = new string[1];//用于县数据相加
  62. //List<object> items;
  63. List<List<Dictionary<string, object>>> items = new List<List<Dictionary<string, object>>>();
  64. //IEnumerable<List<Dictionary<string, object>>> items;
  65. ArrayList result = new ArrayList();
  66. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  67. string controllername = RouteData.Values["controller"].ToString();
  68. string actionname = RouteData.Values["action"].ToString();
  69. foreach (var l in list)
  70. {
  71. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  72. {
  73. if (!string.IsNullOrEmpty(l.F_AreaId))
  74. {
  75. areaid = l.F_AreaId;
  76. }
  77. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  78. string strparams = "?date=" + date.Value.ToString("yyyy-MM-dd") + "&areaid=" + areaid + "&signcode=" + signcode;
  79. //AjaxResult ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams).ToObject<AjaxResult>();
  80. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);
  81. if (!string.IsNullOrEmpty(branchcode))
  82. {
  83. return Content(ar);//查询单个时直接返回
  84. }
  85. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  86. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  87. {
  88. if (first == 1)
  89. {
  90. string a = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["cols"].ToString(), "[\r\n\t ]", "");
  91. a = a.Replace("[", "");
  92. a = a.Replace("]", "");
  93. a = a.Replace("\"", "");
  94. cols = a.Split(',');
  95. }
  96. else
  97. {
  98. string a = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["cols"].ToString(), "[\r\n\t ]", "");
  99. a = a.Replace("[", "");
  100. a = a.Replace("]", "");
  101. a = a.Replace("\"", "");
  102. colsx = a.Split(',');
  103. }
  104. //string x = jo0["data"].ToString();
  105. for (int i = 0; i < 10; i++)
  106. {
  107. string y = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["counts"][i].ToString(), "[\r\n\t ]", "");
  108. y = y.Replace("[", "");
  109. y = y.Replace("]", "");
  110. string[] z = y.Split(',');
  111. for (int m = 0; m < z.Length; m++)
  112. {
  113. if (first == 1)
  114. {
  115. countstotal[i, m] = decimal.Parse(z[m]);
  116. }
  117. else if (backtotal == 1)
  118. {
  119. if (cols[i] == colsx[0])
  120. {
  121. countstotal[i, m] += decimal.Parse(z[m]);
  122. }
  123. }
  124. }
  125. string p = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["tcounts"].ToString(), "[\r\n\t ]", "");
  126. p = p.Replace("[", "");
  127. p = p.Replace("]", "");
  128. string[] q = p.Split(',');
  129. if (backtotal == 1)
  130. {
  131. if (cols[i] == colsx[0])
  132. {
  133. tcountstotal[i] += decimal.Parse(q[0]);
  134. }
  135. }
  136. else
  137. {
  138. tcountstotal[i] += decimal.Parse(q[i]);
  139. }
  140. //item计算
  141. if (backtotal == 1)
  142. {
  143. if (cols[i] == colsx[0])
  144. {
  145. var rtlist = jo0["data"]["items"][0].ToJson().ToList<Dictionary<string, object>>();
  146. for (int r = 0; r < rtlist.Count; r++)
  147. {
  148. decimal zh = 0;
  149. if (items.Count > i)
  150. {
  151. zh = decimal.Parse(items[i][r]["Count"].ToString());
  152. }
  153. rtlist[r]["Count"] = zh + decimal.Parse(rtlist[r]["Count"].ToString());
  154. }
  155. //List<Dictionary<string, object>> li = new List<Dictionary<string, object>>();
  156. //li.AddRange(rtlist );
  157. items.Add(rtlist);
  158. }
  159. }
  160. else
  161. {
  162. var rtlist = jo0["data"]["items"][i].ToJson().ToList<Dictionary<string, object>>();
  163. items.Add(rtlist);
  164. }
  165. }
  166. first = 0;
  167. }
  168. }
  169. }
  170. var data = new
  171. {
  172. hours = hours,
  173. cols,
  174. counts = countstotal,
  175. tcounts = tcountstotal,
  176. items
  177. };
  178. return Success("成功", data);
  179. }
  180. /// <summary>
  181. /// 获取受理区域数量
  182. /// </summary>
  183. /// <param name="branchcode"></param>
  184. /// <param name="start"></param>
  185. /// <param name="end"></param>
  186. /// <returns></returns>
  187. public ActionResult GetAreaCountByDate(string branchcode, DateTime? start, DateTime? end, string areaid, int datetype = 0)
  188. {
  189. DateTime stime = DateTime.Now; DateTime etime = DateTime.Now;
  190. if (start != null)
  191. {
  192. stime = start.Value;//start = DateTime.Now;
  193. }
  194. if (end != null)
  195. {
  196. etime = end.Value;//end = DateTime.Now;
  197. }
  198. if (datetype > 0)
  199. {
  200. GetStartEndTime(datetype, out stime, out etime);
  201. }
  202. #region
  203. //if (start == null && end == null)
  204. //{
  205. // start = DateTime.Now;
  206. // end = DateTime.Now;
  207. //}
  208. //else
  209. //{
  210. // if (start == null) { start = DateTime.Now; }
  211. // if (end == null) { end = DateTime.Now; }
  212. //}
  213. #endregion
  214. int backtotal = 0;
  215. string sqlwhere = " F_IsDP=1 ";
  216. if (branchcode == "sqs12345")
  217. {
  218. branchcode = "";
  219. }
  220. if (!string.IsNullOrEmpty(branchcode))
  221. {
  222. sqlwhere += " and F_Code='" + branchcode + "'";
  223. }
  224. else
  225. {
  226. backtotal = 1;
  227. sqlwhere += " and F_IsSQ!=1";
  228. }
  229. #region 定义新表
  230. DataTable dtnew = new DataTable();
  231. dtnew.Columns.Add("F_AreaId");
  232. dtnew.Columns.Add("AreaName");
  233. dtnew.Columns.Add("Count");
  234. int first = 1;
  235. #endregion
  236. ArrayList result = new ArrayList();
  237. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  238. string controllername = RouteData.Values["controller"].ToString();
  239. string actionname = RouteData.Values["action"].ToString();
  240. foreach (var l in list)
  241. {
  242. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  243. {
  244. if (!string.IsNullOrEmpty(l.F_AreaId))
  245. {
  246. areaid = l.F_AreaId;
  247. }
  248. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  249. //string strparams = "?start=" + start.Value.ToString("yyyy-MM-dd") + "&end=" + end.Value.ToString("yyyy-MM-dd") + "&areaid=" + areaid + "&backtotal=" + backtotal + "&isdpjk=1" + "&signcode=" + signcode;
  250. string strparams = "?start=" + stime.ToString("yyyy-MM-dd") + "&end=" + etime.ToString("yyyy-MM-dd") + "&areaid=" + areaid + "&backtotal=" + backtotal + "&isdpjk=1" + "&signcode=" + signcode;
  251. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);//.ToObject<AjaxResult>();
  252. if (!string.IsNullOrEmpty(branchcode))
  253. {
  254. return Content(ar);//查询单个时直接返回
  255. }
  256. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  257. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  258. {
  259. if (first == 1)
  260. {
  261. DataTable dt = HeadToDataTable(jo0["data"].ToString(), "Item");
  262. dtnew = dt;
  263. dtnew.Columns.Add("Item", typeof(object));
  264. for (int i = 0; i < dt.Rows.Count; i++)
  265. {
  266. dtnew.Rows[i]["Item"] = jo0["data"][i]["Item"];
  267. }
  268. first = 0;
  269. }
  270. else
  271. {
  272. for (int m = 0; m < dtnew.Rows.Count; m++)
  273. {
  274. //前部分相加
  275. DataTable dt1 = HeadToDataTable(jo0["data"].ToString(), "Item");
  276. for (int i = 0; i < dt1.Rows.Count; i++)
  277. {
  278. if (dtnew.Rows[m][1].ToString() == dt1.Rows[i][1].ToString())
  279. {
  280. decimal t = decimal.Parse(dtnew.Rows[m][2].ToString()) + decimal.Parse(dt1.Rows[i][2].ToString());
  281. dtnew.Rows[m][2] = t;
  282. //后半部分两个datatable相加
  283. DataTable dtitem = new DataTable();
  284. string c = jo0["data"][i]["Item"].ToString();
  285. DataTable dt = HeadToDataTable(jo0["data"][i]["Item"].ToString(), "Item");
  286. dtitem = dt;
  287. DataTable dtold = HeadToDataTable(dtnew.Rows[m]["Item"].ToString(), "Item");
  288. for (int j = 0; j < dt.Rows.Count; j++)
  289. {
  290. for (int n = 0; n < dtold.Rows.Count; n++)
  291. {
  292. if (dtold.Rows[n][0].ToString() == dt.Rows[j][0].ToString())
  293. {
  294. dtitem.Rows[j][0] = dt.Rows[j][0].ToString();
  295. dtitem.Rows[j][1] = decimal.Parse(dtold.Rows[n][1].ToString()) + decimal.Parse(dt.Rows[j][1].ToString());
  296. }
  297. }
  298. }
  299. dtnew.Rows[m]["Item"] = dtitem;
  300. }
  301. }
  302. }
  303. }
  304. }
  305. }
  306. }
  307. return Success("成功", dtnew);
  308. }
  309. /// <summary>
  310. /// 获取来源百分比
  311. /// </summary>
  312. /// <param name="branchcode"></param>
  313. /// <param name="start"></param>
  314. /// <param name="end"></param>
  315. /// <returns></returns>
  316. public ActionResult GetSourcePercentByDate(string branchcode, DateTime? start, DateTime? end, string areaid, int datetype = 0)
  317. {
  318. DateTime stime = DateTime.Now; DateTime etime = DateTime.Now;
  319. if (start != null)
  320. {
  321. stime = start.Value;//start = DateTime.Now;
  322. }
  323. if (end != null)
  324. {
  325. etime = end.Value;//end = DateTime.Now;
  326. }
  327. if (datetype > 0)
  328. {
  329. GetStartEndTime(datetype, out stime, out etime);
  330. }
  331. #region
  332. //if (start == null && end == null)
  333. //{
  334. // start = DateTime.Now;
  335. // end = DateTime.Now;
  336. //}
  337. //else
  338. //{
  339. // if (start == null) { start = DateTime.Now; }
  340. // if (end == null) { end = DateTime.Now; }
  341. //}
  342. #endregion
  343. string sqlwhere = " F_IsDP=1 ";
  344. if (branchcode == "sqs12345")
  345. {
  346. branchcode = "";
  347. }
  348. if (!string.IsNullOrEmpty(branchcode))
  349. {
  350. sqlwhere += " and F_Code='" + branchcode + "'";
  351. }
  352. else
  353. {
  354. sqlwhere += " and F_IsSQ!=1";
  355. }
  356. #region 定义新表
  357. DataTable dtnew = new DataTable();
  358. dtnew.Columns.Add("Id");
  359. dtnew.Columns.Add("Source");
  360. dtnew.Columns.Add("Count");
  361. dtnew.Columns.Add("Percent");
  362. int first = 1;
  363. decimal totalcount = 0;//用于计算百分比
  364. #endregion
  365. ArrayList result = new ArrayList();
  366. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  367. string controllername = RouteData.Values["controller"].ToString();
  368. string actionname = RouteData.Values["action"].ToString();
  369. foreach (var l in list)
  370. {
  371. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  372. {
  373. if (!string.IsNullOrEmpty(l.F_AreaId))
  374. {
  375. areaid = l.F_AreaId;
  376. }
  377. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  378. string strparams = "?start=" + stime.ToString("yyyy-MM-dd") + "&end=" + etime.ToString("yyyy-MM-dd") + "&areaid=" + areaid + "&isdpjk=1" + "&signcode=" + signcode;
  379. //string strparams = "?start=" + start.Value.ToString("yyyy-MM-dd") + "&end=" + end.Value.ToString("yyyy-MM-dd") + "&areaid=" + areaid + "&isdpjk=1" + "&signcode=" + signcode;
  380. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);//.ToObject<AjaxResult>();
  381. if (!string.IsNullOrEmpty(branchcode))
  382. {
  383. return Content(ar);//查询单个时直接返回
  384. }
  385. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  386. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  387. {
  388. if (first == 1)
  389. {
  390. DataTable dt = HeadToDataTable(jo0["data"].ToString(), "Item");
  391. dtnew = dt;
  392. dtnew.Columns.Add("Item", typeof(object));
  393. for (int i = 0; i < dt.Rows.Count; i++)
  394. {
  395. dtnew.Rows[i]["Item"] = jo0["data"][i]["Item"];
  396. }
  397. first = 0;
  398. }
  399. else
  400. {
  401. //前部分相加
  402. DataTable dt1 = HeadToDataTable(jo0["data"].ToString(), "Item");
  403. for (int i = 0; i < dt1.Rows.Count; i++)
  404. {
  405. for (int j = 0; j < dtnew.Rows.Count; j++)
  406. {
  407. if (dtnew.Rows[j]["Source"].ToString() == dt1.Rows[i]["Source"].ToString())
  408. {
  409. decimal t = decimal.Parse(dtnew.Rows[i][2].ToString()) + decimal.Parse(dt1.Rows[i][2].ToString());
  410. //totalcount += t;
  411. dtnew.Rows[i][2] = t;
  412. }
  413. }
  414. }
  415. //后半部分两个datatable相加
  416. for (int i = 0; i < dtnew.Rows.Count; i++)
  417. {
  418. DataTable dtitem = new DataTable();
  419. string c = jo0["data"][i]["Item"].ToString();
  420. DataTable dt = HeadToDataTable(jo0["data"][i]["Item"].ToString(), "Item");
  421. dtitem = dt;
  422. DataTable dtold = HeadToDataTable(dtnew.Rows[i]["Item"].ToString(), "Item");
  423. for (int j = 0; j < dtold.Rows.Count; j++)
  424. {
  425. dtitem.Rows[j][1] = decimal.Parse(dtold.Rows[j][1].ToString()) + decimal.Parse(dt.Rows[j][1].ToString());
  426. }
  427. dtnew.Rows[i]["Item"] = dtitem;
  428. }
  429. }
  430. //var rtlist = ar.data.ToJson().ToList<Dictionary<string, object>>();
  431. //result.AddRange(rtlist);
  432. }
  433. }
  434. }
  435. for (int i = 0; i < dtnew.Rows.Count; i++)
  436. {
  437. totalcount += decimal.Parse(dtnew.Rows[i]["Count"].ToString());
  438. }
  439. //计算百分比
  440. if (totalcount > 0)
  441. {
  442. for (int m = 0; m < dtnew.Rows.Count; m++)
  443. {
  444. dtnew.Rows[m]["Percent"] = Math.Round(decimal.Parse(dtnew.Rows[m]["Count"].ToString()) / totalcount * 100, 2);
  445. }
  446. }
  447. return Success("成功", dtnew);
  448. }
  449. /// <summary>
  450. /// 获取来源数量百分比
  451. /// </summary>
  452. /// <param name="branchcode"></param>
  453. /// <param name="start"></param>
  454. /// <param name="end"></param>
  455. /// <returns></returns>
  456. public ActionResult GetSourceByDate(string branchcode, DateTime? start, DateTime? end, string areaid)
  457. {
  458. if (start == null && end == null)
  459. {
  460. start = DateTime.Now;
  461. end = DateTime.Now;
  462. }
  463. else
  464. {
  465. if (start == null) { start = DateTime.Now; }
  466. if (end == null) { end = DateTime.Now; }
  467. }
  468. string sqlwhere = " F_IsDP=1 ";
  469. if (branchcode == "sqs12345")
  470. {
  471. branchcode = "";
  472. }
  473. if (!string.IsNullOrEmpty(branchcode))
  474. {
  475. sqlwhere += " and F_Code='" + branchcode + "'";
  476. }
  477. else
  478. {
  479. sqlwhere += " and F_IsSQ!=1";
  480. }
  481. #region 定义新表
  482. DataTable dtnew = new DataTable();
  483. dtnew.Columns.Add("Id");
  484. dtnew.Columns.Add("Source");
  485. dtnew.Columns.Add("Count");
  486. //dtnew.Columns.Add("Percent");
  487. int first = 1;
  488. decimal totalcount = 0;
  489. #endregion
  490. ArrayList result = new ArrayList();
  491. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  492. string controllername = RouteData.Values["controller"].ToString();
  493. string actionname = RouteData.Values["action"].ToString();
  494. foreach (var l in list)
  495. {
  496. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  497. {
  498. if (!string.IsNullOrEmpty(l.F_AreaId))
  499. {
  500. areaid = l.F_AreaId;
  501. }
  502. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  503. string strparams = "?start=" + start.Value.ToString("yyyy-MM-dd") + "&end=" + end.Value.ToString("yyyy-MM-dd") + "&areaid=" + areaid + "&isdpjk=1" + "&signcode=" + signcode;
  504. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);//.ToObject<AjaxResult>();
  505. if (!string.IsNullOrEmpty(branchcode))
  506. {
  507. return Content(ar);//查询单个时直接返回
  508. }
  509. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  510. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  511. {
  512. if (first == 1)
  513. {
  514. DataTable dt = HeadToDataTable(jo0["data"].ToString(), "Item");
  515. dtnew = dt;
  516. //dtnew.Columns.Add("Percent", typeof(object));
  517. first = 0;
  518. }
  519. else
  520. {
  521. //前部分相加
  522. DataTable dt1 = HeadToDataTable(jo0["data"].ToString(), "Item");
  523. for (int i = 0; i < dt1.Rows.Count; i++)
  524. {
  525. decimal t = decimal.Parse(dtnew.Rows[i][2].ToString()) + decimal.Parse(dt1.Rows[i][2].ToString());
  526. dtnew.Rows[i][2] = t;
  527. if (dtnew.Rows[i]["Source"].ToString() == "总计")
  528. {
  529. totalcount = t;
  530. }
  531. }
  532. }
  533. }
  534. }
  535. }
  536. //计算百分比
  537. //dtnew.Columns.Add("Percent", typeof(object));
  538. if (totalcount > 0)
  539. {
  540. for (int m = 0; m < dtnew.Rows.Count; m++)
  541. {
  542. dtnew.Rows[m]["Percent"] = Math.Round(decimal.Parse(dtnew.Rows[m]["Count"].ToString()) / totalcount * 100, 2).ToString() + "%";
  543. }
  544. }
  545. return Success("成功", dtnew);
  546. }
  547. #region 20190704
  548. /// <summary>
  549. /// 获取受理区域数量
  550. /// </summary>
  551. /// <param name="branchcode"></param>
  552. /// <param name="start"></param>
  553. /// <param name="end"></param>
  554. /// <returns></returns>
  555. public ActionResult GetAreaCountByDateNew(string branchcode, DateTime? start, DateTime? end, string areaid, int datetype = 0)
  556. {
  557. DateTime stime = DateTime.Now.AddDays(1 - DateTime.Now.Day).Date;//当月第一天
  558. DateTime etime = DateTime.Now;
  559. string strstart = ""; string strend = "";
  560. if (start != null)
  561. {
  562. stime = start.Value;//start = DateTime.Now;
  563. }
  564. if (end != null)
  565. {
  566. etime = end.Value;//end = DateTime.Now;
  567. }
  568. if (datetype > 0)
  569. {
  570. GetStartEndTime(datetype, out stime, out etime);
  571. }
  572. strstart = stime.ToString("yyyy-MM-dd");
  573. strend = etime.ToString("yyyy-MM-dd");
  574. #region
  575. //string strstart = ""; string strend = "";
  576. //if (start != null)
  577. // strstart = start.Value.ToString("yyyy-MM-dd");
  578. //else
  579. // strstart = DateTime.Now.ToString("yyyy-MM-01");
  580. //if (end != null)
  581. // strend = end.Value.ToString("yyyy-MM-dd");
  582. //else
  583. // strend = DateTime.Now.ToString("yyyy-MM-dd");
  584. #endregion
  585. int backtotal = 0;
  586. string sqlwhere = " F_IsDP=1 ";
  587. if (branchcode == "sqs12345")
  588. {
  589. branchcode = "";
  590. }
  591. if (!string.IsNullOrEmpty(branchcode))
  592. {
  593. sqlwhere += " and F_Code='" + branchcode + "'";
  594. }
  595. else
  596. {
  597. backtotal = 1;
  598. sqlwhere += " and F_IsSQ!=1";
  599. }
  600. #region 定义新表
  601. DataTable dtnew = new DataTable();
  602. dtnew.Columns.Add("AreaName");
  603. dtnew.Columns.Add("SLCount");
  604. dtnew.Columns.Add("JACount");
  605. dtnew.Columns.Add("MYCount");
  606. dtnew.Columns.Add("PJCount");
  607. dtnew.Columns.Add("JARate");
  608. dtnew.Columns.Add("MYRate");
  609. int first = 1;
  610. decimal totalsl = 0;
  611. decimal totalja = 0;
  612. decimal totalmy = 0;
  613. decimal totalpj = 0;
  614. #endregion
  615. ArrayList result = new ArrayList();
  616. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  617. string controllername = RouteData.Values["controller"].ToString();
  618. string actionname = RouteData.Values["action"].ToString();
  619. foreach (var l in list)
  620. {
  621. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  622. {
  623. if (!string.IsNullOrEmpty(l.F_AreaId))
  624. {
  625. areaid = l.F_AreaId;
  626. }
  627. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  628. string strparams = "?start=" + strstart + "&end=" + strend + "&areaid=" + areaid + "&backtotal=" + backtotal + "&isdpjk=1" + "&signcode=" + signcode;
  629. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);//.ToObject<AjaxResult>();
  630. if (!string.IsNullOrEmpty(branchcode))
  631. {
  632. return Content(ar);//查询单个时直接返回
  633. }
  634. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  635. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  636. {
  637. if (first == 1)
  638. {
  639. DataTable dt = HeadToDataTable(jo0["data"].ToString(), "Item");
  640. dtnew = dt;
  641. dtnew.Columns.Add("JARate");
  642. dtnew.Columns.Add("MYRate");
  643. first = 0;
  644. }
  645. else
  646. {
  647. for (int m = 0; m < dtnew.Rows.Count; m++)
  648. {
  649. decimal t = decimal.Parse(dtnew.Rows[m]["SLCount"].ToString());
  650. decimal t1 = decimal.Parse(dtnew.Rows[m]["JACount"].ToString());
  651. decimal t2 = decimal.Parse(dtnew.Rows[m]["MYCount"].ToString());
  652. decimal t3 = decimal.Parse(dtnew.Rows[m]["PJCount"].ToString());
  653. #region 县级筛选获取
  654. DataTable dt1 = HeadToDataTable(jo0["data"].ToString(), "Item");
  655. for (int i = 0; i < dt1.Rows.Count; i++)
  656. {
  657. if (dtnew.Rows[m]["AreaName"].ToString() == dt1.Rows[i]["AreaName"].ToString())
  658. {
  659. t += decimal.Parse(dt1.Rows[i]["SLCount"].ToString());
  660. t1 += decimal.Parse(dt1.Rows[i]["JACount"].ToString());
  661. t2 += decimal.Parse(dt1.Rows[i]["MYCount"].ToString());
  662. t3 += decimal.Parse(dt1.Rows[i]["PJCount"].ToString());
  663. }
  664. }
  665. #endregion
  666. dtnew.Rows[m]["SLCount"] = t;
  667. dtnew.Rows[m]["JACount"] = t1;
  668. dtnew.Rows[m]["MYCount"] = t2;
  669. dtnew.Rows[m]["PJCount"] = t3;
  670. if (t > 0)
  671. dtnew.Rows[m]["JARate"] = Math.Round(t1 / t * 100, 2).ToString() + "%";
  672. else
  673. dtnew.Rows[m]["JARate"] = "0";
  674. if (t3 > 0)
  675. dtnew.Rows[m]["MYRate"] = Math.Round(t2 / t3 * 100, 2).ToString() + "%";
  676. else
  677. dtnew.Rows[m]["MYRate"] = "0";
  678. }
  679. }
  680. }
  681. }
  682. }
  683. #region 计算总计
  684. for (int m = 0; m < dtnew.Rows.Count; m++)
  685. {
  686. totalsl += decimal.Parse(dtnew.Rows[m]["SLCount"].ToString());
  687. totalja += decimal.Parse(dtnew.Rows[m]["JACount"].ToString());
  688. totalmy += decimal.Parse(dtnew.Rows[m]["MYCount"].ToString());
  689. totalpj += decimal.Parse(dtnew.Rows[m]["PJCount"].ToString());
  690. }
  691. DataRow drNew = dtnew.NewRow();
  692. drNew["AreaName"] = "总计";
  693. drNew["SLCount"] = totalsl;
  694. drNew["JACount"] = totalja;
  695. drNew["MYCount"] = totalmy;
  696. drNew["PJCount"] = totalpj;
  697. if (totalsl > 0)
  698. drNew["JARate"] = Math.Round(totalja / totalsl * 100, 2).ToString() + "%";
  699. else
  700. drNew["JARate"] = "0";
  701. if (totalpj > 0)
  702. drNew["MYRate"] = Math.Round(totalmy / totalpj * 100, 2).ToString() + "%";
  703. else
  704. drNew["MYRate"] = "0";
  705. dtnew.Rows.Add(drNew);
  706. #endregion
  707. return Success("成功", dtnew);
  708. }
  709. /// <summary>
  710. /// 获取来源数量
  711. /// </summary>
  712. /// <param name="branchcode"></param>
  713. /// <param name="start"></param>
  714. /// <param name="end"></param>
  715. /// <returns></returns>
  716. public ActionResult GetSourceByDateNew(string branchcode, DateTime? start, DateTime? end, string areaid)
  717. {
  718. string strstart = ""; string strend = "";
  719. if (start != null)
  720. strstart = start.Value.ToString("yyyy-MM-dd");
  721. else
  722. strstart = DateTime.Now.ToString("yyyy-MM-01");
  723. if (end != null)
  724. strend = end.Value.ToString("yyyy-MM-dd");
  725. else
  726. strend = DateTime.Now.ToString("yyyy-MM-dd");
  727. string sqlwhere = " F_IsDP=1 ";
  728. if (branchcode == "sqs12345")
  729. {
  730. branchcode = "";
  731. }
  732. if (!string.IsNullOrEmpty(branchcode))
  733. {
  734. sqlwhere += " and F_Code='" + branchcode + "'";
  735. }
  736. else
  737. {
  738. sqlwhere += " and F_IsSQ!=1";
  739. }
  740. #region 定义新表
  741. DataTable dtnew = new DataTable();
  742. dtnew.Columns.Add("Source");
  743. dtnew.Columns.Add("Count");
  744. int first = 1;
  745. decimal totalcount = 0;
  746. #endregion
  747. ArrayList result = new ArrayList();
  748. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  749. string controllername = RouteData.Values["controller"].ToString();
  750. string actionname = RouteData.Values["action"].ToString();
  751. foreach (var l in list)
  752. {
  753. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  754. {
  755. if (!string.IsNullOrEmpty(l.F_AreaId))
  756. {
  757. areaid = l.F_AreaId;
  758. }
  759. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  760. string strparams = "?start=" + strstart + "&end=" + strend + "&areaid=" + areaid + "&isdpjk=1" + "&signcode=" + signcode;
  761. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);//.ToObject<AjaxResult>();
  762. if (!string.IsNullOrEmpty(branchcode))
  763. {
  764. return Content(ar);//查询单个时直接返回
  765. }
  766. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  767. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  768. {
  769. if (first == 1)
  770. {
  771. DataTable dt = HeadToDataTable(jo0["data"].ToString(), "Item");
  772. dtnew = dt;
  773. first = 0;
  774. }
  775. else
  776. {
  777. //前部分相加
  778. DataTable dt1 = HeadToDataTable(jo0["data"].ToString(), "Item");
  779. for (int i = 0; i < dt1.Rows.Count; i++)
  780. {
  781. for(int j = 0; j < dtnew.Rows.Count; j++) {
  782. if (dtnew.Rows[j]["Source"].ToString() == dt1.Rows[i]["Source"].ToString())
  783. {
  784. decimal t = decimal.Parse(dtnew.Rows[j]["Count"].ToString()) + decimal.Parse(dt1.Rows[i]["Count"].ToString());
  785. dtnew.Rows[j]["Count"] = t;
  786. }
  787. }
  788. }
  789. }
  790. }
  791. }
  792. }
  793. for (int i = 0; i < dtnew.Rows.Count; i++)
  794. {
  795. if(dtnew.Rows[i]["Source"].ToString()!="总计")
  796. {
  797. totalcount+= decimal.Parse(dtnew.Rows[i]["Count"].ToString());
  798. }
  799. }
  800. for (int i = 0; i < dtnew.Rows.Count; i++)
  801. {
  802. if (dtnew.Rows[i]["Source"].ToString() == "总计")
  803. {
  804. dtnew.Rows[i]["Count"] = totalcount;
  805. }
  806. decimal t = decimal.Parse(dtnew.Rows[i]["Count"].ToString());
  807. if (totalcount > 0)
  808. {
  809. dtnew.Rows[i]["Rate"] = Math.Round(t / totalcount * 100, 2).ToString() + "%";
  810. }
  811. else
  812. dtnew.Rows[i]["Rate"] = "0";
  813. }
  814. return Success("成功", dtnew);
  815. }
  816. #endregion
  817. #endregion
  818. #region 接单部门
  819. /// <summary>
  820. /// 接单情况汇总(月份)
  821. /// </summary>
  822. /// <param name="branchcode"></param>
  823. /// <returns></returns>
  824. public ActionResult GetStateCountMonthByDate(string branchcode, string areaid)
  825. {
  826. if (branchcode == "sqs12345")
  827. {
  828. branchcode = "";
  829. }
  830. string sqlwhere = " F_IsDP=1 ";
  831. if (!string.IsNullOrEmpty(branchcode))
  832. {
  833. sqlwhere += " and F_Code='" + branchcode + "'";
  834. }
  835. else
  836. {
  837. sqlwhere += " and F_IsSQ!=1";
  838. }
  839. decimal[,] countstotal = new decimal[10, 12];//用于计算累计值
  840. string[] cols = new string[10];
  841. string[] months = new string[12];
  842. ArrayList result = new ArrayList();
  843. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  844. string controllername = RouteData.Values["controller"].ToString();
  845. string actionname = RouteData.Values["action"].ToString();
  846. foreach (var l in list)
  847. {
  848. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  849. {
  850. if (!string.IsNullOrEmpty(l.F_AreaId))
  851. {
  852. areaid = l.F_AreaId;
  853. }
  854. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  855. string strparams = "?signcode=" + signcode + "&areaid=" + areaid;
  856. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);//.ToObject<AjaxResult>();
  857. if (!string.IsNullOrEmpty(branchcode))
  858. {
  859. return Content(ar);//查询单个时直接返回
  860. }
  861. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  862. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  863. {
  864. string a = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["cols"].ToString(), "[\r\n\t ]", "");
  865. a = a.Replace("[", "");
  866. a = a.Replace("]", "");
  867. a = a.Replace("\"", "");
  868. cols = a.Split(',');
  869. string b = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["months"].ToString(), "[\r\n\t ]", "");
  870. b = b.Replace("[", "");
  871. b = b.Replace("]", "");
  872. b = b.Replace("\"", "");
  873. months = b.Split(',');
  874. for (int i = 0; i < 10; i++)
  875. {
  876. string y = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["counts"][i].ToString(), "[\r\n\t ]", "");
  877. y = y.Replace("[", "");
  878. y = y.Replace("]", "");
  879. string[] z = y.Split(',');
  880. for (int m = 0; m < z.Length; m++)
  881. {
  882. countstotal[i, m] += decimal.Parse(z[m]);
  883. }
  884. }
  885. }
  886. }
  887. }
  888. var data = new
  889. {
  890. months,
  891. cols,
  892. counts = countstotal
  893. };
  894. return Success("成功", data);
  895. }
  896. /// <summary>
  897. /// 获取承办单位数量(因为是获取部门的所以未调整)
  898. /// </summary>
  899. /// <param name="branchcode"></param>
  900. /// <param name="start"></param>
  901. /// <param name="end"></param>
  902. /// <param name="deptid"></param>
  903. /// <returns></returns>
  904. public ActionResult GetDeptCountByDateNew(string branchcode, DateTime? start, DateTime? end, string areaid, int deptid = 0)
  905. {
  906. if (branchcode == "sqs12345")
  907. {
  908. branchcode = "";
  909. }
  910. if (start == null && end == null)
  911. {
  912. start = DateTime.Now;
  913. end = DateTime.Now;
  914. }
  915. else
  916. {
  917. if (start == null) { start = DateTime.Now; }
  918. if (end == null) { end = DateTime.Now; }
  919. }
  920. string sqlwhere = " F_IsDP=1 ";
  921. if (!string.IsNullOrEmpty(branchcode))
  922. {
  923. sqlwhere += " and F_Code='" + branchcode + "'";
  924. }
  925. else
  926. {
  927. sqlwhere += " and F_IsSQ!=1";
  928. }
  929. ArrayList result = new ArrayList();
  930. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  931. string controllername = RouteData.Values["controller"].ToString();
  932. string actionname = RouteData.Values["action"].ToString();
  933. foreach (var l in list)
  934. {
  935. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  936. {
  937. if (!string.IsNullOrEmpty(l.F_AreaId))
  938. {
  939. areaid = l.F_AreaId;
  940. }
  941. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  942. string strparams = "?start=" + start.Value.ToString("yyyy-MM-dd") + "&end=" + end.Value.ToString("yyyy-MM-dd") + "&deptid=" + deptid.ToString() + "&areaid=" + areaid + "&signcode=" + signcode;
  943. AjaxResult ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams).ToObject<AjaxResult>();
  944. if (ar.state.ToString() == ResultTypes.success.ToString())
  945. {
  946. var rtlist = ar.data.ToJson().ToList<Dictionary<string, object>>();
  947. result.AddRange(rtlist);
  948. }
  949. }
  950. }
  951. return Success("成功", result);
  952. }
  953. /// <summary>
  954. /// 单位受理处理时间分布
  955. /// </summary>
  956. /// <param name="branchcode"></param>
  957. /// <param name="date"></param>
  958. /// <returns></returns>
  959. public ActionResult GetDealCount24ByDate(string branchcode, DateTime? date, string areaid)
  960. {
  961. if (branchcode == "sqs12345")
  962. {
  963. branchcode = "";
  964. }
  965. if (date == null)
  966. {
  967. date = DateTime.Now;
  968. }
  969. string sqlwhere = " F_IsDP=1 ";
  970. if (!string.IsNullOrEmpty(branchcode))
  971. {
  972. sqlwhere += " and F_Code='" + branchcode + "'";
  973. }
  974. else
  975. {
  976. sqlwhere += " and F_IsSQ!=1";
  977. }
  978. int[] hours = Enumerable.Range(7, 12).ToArray<int>();
  979. int[] acounts = new int[12];
  980. int[] fcounts = new int[12];
  981. ArrayList result = new ArrayList();
  982. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  983. string controllername = RouteData.Values["controller"].ToString();
  984. string actionname = RouteData.Values["action"].ToString();
  985. foreach (var l in list)
  986. {
  987. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  988. {
  989. if (!string.IsNullOrEmpty(l.F_AreaId))
  990. {
  991. areaid = l.F_AreaId;
  992. }
  993. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  994. string strparams = "?date=" + date.Value.ToString("yyyy-MM-dd") + "&signcode=" + signcode + "&areaid=" + areaid;
  995. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);//.ToObject<AjaxResult>();
  996. if (!string.IsNullOrEmpty(branchcode))
  997. {
  998. return Content(ar);//查询单个时直接返回
  999. }
  1000. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  1001. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  1002. {
  1003. for (int i = 0; i < 10; i++)
  1004. {
  1005. string p = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["acounts"].ToString(), "[\r\n\t ]", "");
  1006. p = p.Replace("[", "");
  1007. p = p.Replace("]", "");
  1008. string[] q = p.Split(',');
  1009. acounts[i] += int.Parse(q[i]);
  1010. string a = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["fcounts"].ToString(), "[\r\n\t ]", "");
  1011. a = a.Replace("[", "");
  1012. a = a.Replace("]", "");
  1013. string[] b = a.Split(',');
  1014. fcounts[i] += int.Parse(b[i]);
  1015. }
  1016. }
  1017. }
  1018. }
  1019. var data = new
  1020. {
  1021. hours,
  1022. acounts,
  1023. fcounts
  1024. };
  1025. return Success("成功", data);
  1026. }
  1027. /// <summary>
  1028. /// 接单情况汇总(月份)
  1029. /// </summary>
  1030. /// <param name="branchcode"></param>
  1031. /// <param name="month"></param>
  1032. /// <param name="day"></param>
  1033. /// <returns></returns>
  1034. public ActionResult GetStateCountByMonth(string branchcode, string month, string day, string areaid)
  1035. {
  1036. if (branchcode == "sqs12345")
  1037. {
  1038. branchcode = "";
  1039. }
  1040. if (string.IsNullOrEmpty(month))
  1041. {
  1042. month = DateTime.Now.ToString("yyyy-MM");
  1043. }
  1044. if (string.IsNullOrEmpty(day))
  1045. {
  1046. day = "";
  1047. }
  1048. string sqlwhere = " F_IsDP=1 ";
  1049. if (!string.IsNullOrEmpty(branchcode))
  1050. {
  1051. sqlwhere += " and F_Code='" + branchcode + "'";
  1052. }
  1053. else
  1054. {
  1055. sqlwhere += " and F_IsSQ!=1";
  1056. }
  1057. #region 定义新表
  1058. DataTable dtnew = new DataTable();
  1059. dtnew.Columns.Add("State");
  1060. dtnew.Columns.Add("Name");
  1061. dtnew.Columns.Add("Count");
  1062. int first = 1;
  1063. #endregion
  1064. ArrayList result = new ArrayList();
  1065. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  1066. string controllername = RouteData.Values["controller"].ToString();
  1067. string actionname = RouteData.Values["action"].ToString();
  1068. foreach (var l in list)
  1069. {
  1070. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  1071. {
  1072. if (!string.IsNullOrEmpty(l.F_AreaId))
  1073. {
  1074. areaid = l.F_AreaId;
  1075. }
  1076. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  1077. string strparams = "?month=" + month + "&day=" + day + "&areaid=" + areaid + "&isdpjk=1" + "&signcode=" + signcode;
  1078. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);//.ToObject<AjaxResult>();
  1079. if (!string.IsNullOrEmpty(branchcode))
  1080. {
  1081. return Content(ar);//查询单个时直接返回
  1082. }
  1083. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  1084. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  1085. {
  1086. if (first == 1)
  1087. {
  1088. DataTable dt = HeadToDataTable(jo0["data"].ToString(), "Item");
  1089. dtnew = dt;
  1090. first = 0;
  1091. }
  1092. else
  1093. {
  1094. //前部分相加
  1095. DataTable dt1 = HeadToDataTable(jo0["data"].ToString(), "Item");
  1096. for (int i = 0; i < dt1.Rows.Count; i++)
  1097. {
  1098. decimal t = decimal.Parse(dtnew.Rows[i][2].ToString()) + decimal.Parse(dt1.Rows[i][2].ToString());
  1099. dtnew.Rows[i][2] = t;
  1100. }
  1101. }
  1102. }
  1103. }
  1104. }
  1105. return Success("成功", dtnew);
  1106. }
  1107. /// <summary>
  1108. /// 获取部门列表
  1109. /// </summary>
  1110. /// <returns></returns>
  1111. public ActionResult GetDeptList(string branchcode)
  1112. {
  1113. if (branchcode == "sqs12345")
  1114. {
  1115. branchcode = "";
  1116. }
  1117. string sqlwhere = " F_IsDP=1 ";
  1118. if (!string.IsNullOrEmpty(branchcode))
  1119. {
  1120. sqlwhere += " and F_Code='" + branchcode + "'";
  1121. }
  1122. else
  1123. {
  1124. sqlwhere += " and F_IsSQ!=1";
  1125. }
  1126. ArrayList result = new ArrayList();
  1127. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  1128. string controllername = RouteData.Values["controller"].ToString();
  1129. string actionname = RouteData.Values["action"].ToString();
  1130. foreach (var l in list)
  1131. {
  1132. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  1133. {
  1134. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  1135. string strparams = "?signcode=" + signcode;
  1136. AjaxResult ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams).ToObject<AjaxResult>();
  1137. if (ar.state.ToString() == ResultTypes.success.ToString())
  1138. {
  1139. var rtlist = ar.data.ToJson().ToList<Dictionary<string, object>>();
  1140. result.AddRange(rtlist);
  1141. }
  1142. }
  1143. }
  1144. return Success("成功", result);
  1145. }
  1146. #endregion
  1147. #region 投诉类型
  1148. /// <summary>
  1149. /// 获取关键词列表
  1150. /// </summary>
  1151. /// <returns></returns>
  1152. public ActionResult GetKeyList(string branchcode)
  1153. {
  1154. if (branchcode == "sqs12345")
  1155. {
  1156. branchcode = "";
  1157. }
  1158. string sqlwhere = " F_IsDP=1 ";
  1159. if (!string.IsNullOrEmpty(branchcode))
  1160. {
  1161. sqlwhere += " and F_Code='" + branchcode + "'";
  1162. }
  1163. else
  1164. {
  1165. sqlwhere += " and F_IsSQ!=1";
  1166. }
  1167. ArrayList result = new ArrayList();
  1168. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  1169. string controllername = RouteData.Values["controller"].ToString();
  1170. string actionname = RouteData.Values["action"].ToString();
  1171. foreach (var l in list)
  1172. {
  1173. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  1174. {
  1175. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  1176. string strparams = "?signcode=" + signcode;
  1177. AjaxResult ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams).ToObject<AjaxResult>();
  1178. if (ar.state.ToString() == ResultTypes.success.ToString())
  1179. {
  1180. var rtlist = ar.data.ToJson().ToList<Dictionary<string, object>>();
  1181. result.AddRange(rtlist);
  1182. }
  1183. }
  1184. }
  1185. return Success("成功", result);
  1186. }
  1187. /// <summary>
  1188. /// 接单情况汇总(月份)
  1189. /// </summary>
  1190. /// <param name="branchcode"></param>
  1191. /// <param name="start"></param>
  1192. /// <param name="end"></param>
  1193. /// <returns></returns>
  1194. public ActionResult GetTypeCountMonthByDate(string branchcode, string start, string end, string areaid, int datetype = 0)
  1195. {
  1196. if (branchcode == "sqs12345")
  1197. {
  1198. branchcode = "";
  1199. }
  1200. string sqlwhere = " F_IsDP=1 ";
  1201. if (!string.IsNullOrEmpty(branchcode))
  1202. {
  1203. sqlwhere += " and F_Code='" + branchcode + "'";
  1204. }
  1205. else
  1206. {
  1207. sqlwhere += " and F_IsSQ!=1";
  1208. }
  1209. #region 变量定义
  1210. DateTime startdate = DateTime.Now.AddMonths(-12);
  1211. DateTime enddate = DateTime.Now;
  1212. if (!string.IsNullOrEmpty(start))
  1213. {
  1214. startdate = DateTime.Parse(start + "-01");
  1215. }
  1216. if (!string.IsNullOrEmpty(end))
  1217. {
  1218. enddate = DateTime.Parse(end + "-01");
  1219. }
  1220. if (datetype > 0)
  1221. {
  1222. GetStartEndTime(datetype, out startdate, out enddate);
  1223. }
  1224. int cnt = (enddate.Year - startdate.Year) * 12 + enddate.Month - startdate.Month + 1;
  1225. string[] months = new string[cnt];
  1226. decimal[,] counts = new decimal[6, cnt];//用于计算累计值//固定了10个市县区
  1227. string[] cols = new string[6];
  1228. #endregion
  1229. ArrayList result = new ArrayList();
  1230. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  1231. string controllername = RouteData.Values["controller"].ToString();
  1232. string actionname = RouteData.Values["action"].ToString();
  1233. foreach (var l in list)
  1234. {
  1235. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  1236. {
  1237. if (!string.IsNullOrEmpty(l.F_AreaId))
  1238. {
  1239. areaid = l.F_AreaId;
  1240. }
  1241. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  1242. string strparams = "?start=" + start + "&end=" + end + "&areaid=" + areaid + "&signcode=" + signcode;
  1243. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);//.ToObject<AjaxResult>();
  1244. if (!string.IsNullOrEmpty(branchcode))
  1245. {
  1246. return Content(ar);//查询单个时直接返回
  1247. }
  1248. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  1249. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  1250. {
  1251. for (int i = 0; i < 6; i++)
  1252. {
  1253. string y = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["counts"][i].ToString(), "[\r\n\t ]", "");
  1254. y = y.Replace("[", "");
  1255. y = y.Replace("]", "");
  1256. string[] z = y.Split(',');
  1257. for (int m = 0; m < z.Length; m++)
  1258. {
  1259. counts[i, m] += decimal.Parse(z[m]);
  1260. }
  1261. }
  1262. string a = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["cols"].ToString(), "[\r\n\t ]", "");
  1263. a = a.Replace("[", "");
  1264. a = a.Replace("]", "");
  1265. a = a.Replace("\"", "");
  1266. cols = a.Split(',');
  1267. string p = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["months"].ToString(), "[\r\n\t ]", "");
  1268. p = p.Replace("[", "");
  1269. p = p.Replace("]", "");
  1270. p = p.Replace("\"", "");
  1271. months = p.Split(',');
  1272. }
  1273. }
  1274. }
  1275. var data = new
  1276. {
  1277. months,
  1278. cols,
  1279. counts
  1280. };
  1281. return Success("成功", data);
  1282. }
  1283. /// <summary>
  1284. /// 获取关键词数量
  1285. /// </summary>
  1286. /// <param name="branchcode"></param>
  1287. /// <param name="start"></param>
  1288. /// <param name="end"></param>
  1289. /// <param name="keyid"></param>
  1290. /// <returns></returns>
  1291. public ActionResult GetKeyCountByDateNew(string branchcode, DateTime? start, DateTime? end, string areaid, int keyid = 0)
  1292. {
  1293. if (branchcode == "sqs12345")
  1294. {
  1295. branchcode = "";
  1296. }
  1297. if (start == null && end == null)
  1298. {
  1299. start = DateTime.Now;
  1300. end = DateTime.Now;
  1301. }
  1302. else
  1303. {
  1304. if (start == null) { start = DateTime.Now; }
  1305. if (end == null) { end = DateTime.Now; }
  1306. }
  1307. string sqlwhere = " F_IsDP=1 ";
  1308. if (!string.IsNullOrEmpty(branchcode))
  1309. {
  1310. sqlwhere += " and F_Code='" + branchcode + "'";
  1311. }
  1312. else
  1313. {
  1314. sqlwhere += " and F_IsSQ!=1";
  1315. }
  1316. #region 定义新表
  1317. DataTable dtnew = new DataTable();
  1318. dtnew.Columns.Add("关键字");
  1319. dtnew.Columns.Add("咨询");
  1320. dtnew.Columns.Add("求助");
  1321. dtnew.Columns.Add("投诉");
  1322. dtnew.Columns.Add("建议");
  1323. dtnew.Columns.Add("表扬");
  1324. dtnew.Columns.Add("其他");
  1325. dtnew.Columns.Add("合计");
  1326. //dtnew.Columns.Add("排名");
  1327. int first = 1;
  1328. #endregion
  1329. ArrayList result = new ArrayList();
  1330. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  1331. string controllername = RouteData.Values["controller"].ToString();
  1332. string actionname = RouteData.Values["action"].ToString();
  1333. foreach (var l in list)
  1334. {
  1335. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  1336. {
  1337. if (!string.IsNullOrEmpty(l.F_AreaId))
  1338. {
  1339. areaid = l.F_AreaId;
  1340. }
  1341. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  1342. string strparams = "?start=" + start.Value.ToString("yyyy-MM-dd") + "&end=" + end.Value.ToString("yyyy-MM-dd") + "&areaid=" + areaid + "&keyid=" + keyid + "&signcode=" + signcode;
  1343. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);//.ToObject<AjaxResult>();
  1344. if (!string.IsNullOrEmpty(branchcode))
  1345. {
  1346. return Content(ar);//查询单个时直接返回
  1347. }
  1348. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  1349. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  1350. {
  1351. if (first == 1)
  1352. {
  1353. DataTable dt = HeadToDataTable(jo0["data"].ToString(), "Item");
  1354. dtnew = dt;
  1355. first = 0;
  1356. }
  1357. else
  1358. {
  1359. //前部分相加
  1360. DataTable dt1 = HeadToDataTable(jo0["data"].ToString(), "Item");
  1361. for (int i = 0; i < dt1.Rows.Count; i++)
  1362. {
  1363. for (int m = 0; m < dtnew.Rows.Count; m++)
  1364. {
  1365. if (dtnew.Rows[m][0].ToString() == dt1.Rows[i][0].ToString())
  1366. {
  1367. for (int j = 1; j < 8; j++)
  1368. {
  1369. decimal t = decimal.Parse(dtnew.Rows[i][j].ToString()) + decimal.Parse(dt1.Rows[i][j].ToString());
  1370. dtnew.Rows[i][j] = t;
  1371. }
  1372. }
  1373. }
  1374. }
  1375. }
  1376. }
  1377. }
  1378. }
  1379. //dtnew.Columns.Add("排名");
  1380. dtnew.DefaultView.Sort = "合计 DESC";
  1381. DataTable dtTemp = dtnew.DefaultView.ToTable();
  1382. #region 增加排名
  1383. if (dtTemp != null)
  1384. {
  1385. //DataColumn autoColumn = new DataColumn("排名", System.Type.GetType("System.Int32"));
  1386. //dtTemp.Columns.Add(autoColumn);
  1387. //dtTemp.Columns["排名"].SetOrdinal(0);
  1388. for (int i = 0; i < dtTemp.Rows.Count; i++)
  1389. {
  1390. dtTemp.Rows[i]["排名"] = i + 1;
  1391. }
  1392. }
  1393. #endregion
  1394. return Success("成功", dtTemp);
  1395. }
  1396. /// <summary>
  1397. /// 获取类型数量
  1398. /// </summary>
  1399. /// <param name="branchcode"></param>
  1400. /// <param name="start"></param>
  1401. /// <param name="end"></param>
  1402. /// <returns></returns>
  1403. public ActionResult GetTypeCountByDate(string branchcode, DateTime? start, DateTime? end, string areaid)
  1404. {
  1405. if (branchcode == "sqs12345")
  1406. {
  1407. branchcode = "";
  1408. }
  1409. if (start == null && end == null)
  1410. {
  1411. start = DateTime.Now;
  1412. end = DateTime.Now;
  1413. }
  1414. else
  1415. {
  1416. if (start == null) { start = DateTime.Now; }
  1417. if (end == null) { end = DateTime.Now; }
  1418. }
  1419. string sqlwhere = " F_IsDP=1 ";
  1420. if (!string.IsNullOrEmpty(branchcode))
  1421. {
  1422. sqlwhere += " and F_Code='" + branchcode + "'";
  1423. }
  1424. else
  1425. {
  1426. sqlwhere += " and F_IsSQ!=1";
  1427. }
  1428. #region 定义新表
  1429. DataTable dtnew = new DataTable();
  1430. dtnew.Columns.Add("TypeName");
  1431. dtnew.Columns.Add("Count");
  1432. int first = 1;
  1433. #endregion
  1434. ArrayList result = new ArrayList();
  1435. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  1436. string controllername = RouteData.Values["controller"].ToString();
  1437. string actionname = RouteData.Values["action"].ToString();
  1438. foreach (var l in list)
  1439. {
  1440. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  1441. {
  1442. if (!string.IsNullOrEmpty(l.F_AreaId))
  1443. {
  1444. areaid = l.F_AreaId;
  1445. }
  1446. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  1447. string strparams = "?start=" + start.Value.ToString("yyyy-MM-dd") + "&end=" + end.Value.ToString("yyyy-MM-dd") + "&areaid=" + areaid + "&signcode=" + signcode;
  1448. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);//.ToObject<AjaxResult>();
  1449. if (!string.IsNullOrEmpty(branchcode))
  1450. {
  1451. return Content(ar);//查询单个时直接返回
  1452. }
  1453. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  1454. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  1455. {
  1456. if (first == 1)
  1457. {
  1458. DataTable dt = HeadToDataTable(jo0["data"].ToString(), "Item");
  1459. dtnew = dt;
  1460. first = 0;
  1461. }
  1462. else
  1463. {
  1464. //前部分相加
  1465. DataTable dt1 = HeadToDataTable(jo0["data"].ToString(), "Item");
  1466. for (int i = 0; i < dt1.Rows.Count; i++)
  1467. {
  1468. decimal t = decimal.Parse(dtnew.Rows[i][1].ToString()) + decimal.Parse(dt1.Rows[i][1].ToString());
  1469. dtnew.Rows[i][1] = t;
  1470. }
  1471. }
  1472. //var rtlist = ar.data.ToJson().ToList<Dictionary<string, object>>();
  1473. //result.AddRange(rtlist);
  1474. }
  1475. }
  1476. }
  1477. return Success("成功", dtnew);
  1478. }
  1479. #endregion
  1480. #region 话务数量
  1481. /// <summary>
  1482. /// 坐席闲忙比例
  1483. /// </summary>
  1484. /// <param name="branchcode"></param>
  1485. /// <param name="start"></param>
  1486. /// <param name="end"></param>
  1487. /// <returns></returns>
  1488. public ActionResult GetUserStateCount24ByDate(string branchcode, DateTime? start, DateTime? end, string areaid)
  1489. {
  1490. if (branchcode == "sqs12345")
  1491. {
  1492. branchcode = "";
  1493. }
  1494. if (start == null && end == null)
  1495. {
  1496. start = DateTime.Now;
  1497. end = DateTime.Now;
  1498. }
  1499. else
  1500. {
  1501. if (start == null) { start = DateTime.Now; }
  1502. if (end == null) { end = DateTime.Now; }
  1503. }
  1504. string sqlwhere = " F_IsDP=1 ";
  1505. if (!string.IsNullOrEmpty(branchcode))
  1506. {
  1507. sqlwhere += " and F_Code='" + branchcode + "'";
  1508. }
  1509. else
  1510. {
  1511. sqlwhere += " and F_IsSQ!=1";
  1512. }
  1513. int[] hours = Enumerable.Range(0, 24).ToArray<int>();
  1514. double[] kxpercents = new double[24];
  1515. double[] thpercents = new double[24];
  1516. double[] zmpercents = new double[24];
  1517. string[] kxcon = new string[24];
  1518. string[] thcon = new string[24];
  1519. string[] xxcon = new string[24];
  1520. int[] con = new int[24];
  1521. ArrayList result = new ArrayList();
  1522. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  1523. string controllername = RouteData.Values["controller"].ToString();
  1524. string actionname = "GetUserStateNum24ByDate";// RouteData.Values["action"].ToString();
  1525. foreach (var l in list)
  1526. {
  1527. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  1528. {
  1529. if (!string.IsNullOrEmpty(l.F_AreaId))
  1530. {
  1531. areaid = l.F_AreaId;
  1532. }
  1533. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  1534. string strparams = "?start=" + start.Value.ToString("yyyy-MM-dd") + "&end=" + end.Value.ToString("yyyy-MM-dd") + "&areaid=" + areaid + "&signcode=" + signcode;
  1535. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);//.ToObject<AjaxResult>();
  1536. //if (!string.IsNullOrEmpty(branchcode))
  1537. //{
  1538. // return Content(ar);//查询单个时直接返回
  1539. //}
  1540. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  1541. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  1542. {
  1543. string y = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["kxcon"].ToString(), "[\r\n\t ]", "");
  1544. y = y.Replace("[", "");
  1545. y = y.Replace("]", "");
  1546. y = y.Replace("\"", "");
  1547. string[] z = y.Split(',');
  1548. string p = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["thcon"].ToString(), "[\r\n\t ]", "");
  1549. p = p.Replace("[", "");
  1550. p = p.Replace("]", "");
  1551. p = p.Replace("\"", "");
  1552. string[] q = p.Split(',');
  1553. string a = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["xxcon"].ToString(), "[\r\n\t ]", "");
  1554. a = a.Replace("[", "");
  1555. a = a.Replace("]", "");
  1556. a = a.Replace("\"", "");
  1557. string[] b = a.Split(',');
  1558. string m = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["con"].ToString(), "[\r\n\t ]", "");
  1559. m = m.Replace("[", "");
  1560. m = m.Replace("]", "");
  1561. m = m.Replace("\"", "");
  1562. string[] n = m.Split(',');
  1563. for (int i = 0; i < hours.Length; i++)
  1564. {
  1565. if (kxcon[i] == null)
  1566. {
  1567. kxcon[i] = "0";
  1568. }
  1569. if (thcon[i] == null)
  1570. {
  1571. thcon[i] = "0";
  1572. }
  1573. if (xxcon[i] == null)
  1574. {
  1575. xxcon[i] = "0";
  1576. }
  1577. kxcon[i] = (int.Parse(kxcon[i]) + int.Parse(z[i])).ToString();
  1578. thcon[i] = (int.Parse(thcon[i]) + int.Parse(q[i])).ToString();
  1579. xxcon[i] = (int.Parse(xxcon[i]) + int.Parse(b[i])).ToString();
  1580. con[i] += int.Parse(n[i]);
  1581. }
  1582. }
  1583. }
  1584. }
  1585. for (int i = 0; i < hours.Length; i++)
  1586. {
  1587. if (con[i] == 0)
  1588. {
  1589. kxpercents[i] = 0;
  1590. thpercents[i] = 0;
  1591. zmpercents[i] = 0;
  1592. }
  1593. else
  1594. {
  1595. kxpercents[i] = Math.Round((double.Parse(kxcon[i]) * 100 / con[i]), 2);
  1596. thpercents[i] = Math.Round((double.Parse(thcon[i]) * 100 / con[i]), 2);
  1597. zmpercents[i] = Math.Round((double.Parse(xxcon[i]) * 100 / con[i]), 2);
  1598. }
  1599. }
  1600. var data = new
  1601. {
  1602. hours,
  1603. kxpercents,
  1604. thpercents,
  1605. zmpercents
  1606. };
  1607. return Success("加载成功", data);
  1608. }
  1609. /// <summary>
  1610. /// 话务量实时数据统计
  1611. /// </summary>
  1612. /// <param name="branchcode"></param>
  1613. /// <param name="date"></param>
  1614. /// <returns></returns>
  1615. public ActionResult GetTelCount24ByDate(string branchcode, DateTime? date, string areaid)
  1616. {
  1617. if (branchcode == "sqs12345")
  1618. {
  1619. branchcode = "";
  1620. }
  1621. if (date == null)
  1622. {
  1623. date = DateTime.Now;
  1624. }
  1625. string sqlwhere = " F_IsDP=1 ";
  1626. if (!string.IsNullOrEmpty(branchcode))
  1627. {
  1628. sqlwhere += " and F_Code='" + branchcode + "'";
  1629. }
  1630. else
  1631. {
  1632. sqlwhere += " and F_IsSQ!=1";
  1633. }
  1634. int[] hours = Enumerable.Range(0, 24).ToArray<int>();
  1635. int[] rcounts = new int[24];//来电数量
  1636. int[] ccounts = new int[24];//接通数量
  1637. int[] lcounts = new int[24];//留言数量
  1638. int[] gcounts = new int[24];//放弃数量
  1639. int[] scounts = new int[24];//骚扰数量
  1640. ArrayList result = new ArrayList();
  1641. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  1642. string controllername = RouteData.Values["controller"].ToString();
  1643. string actionname = RouteData.Values["action"].ToString();
  1644. foreach (var l in list)
  1645. {
  1646. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  1647. {
  1648. if (!string.IsNullOrEmpty(l.F_AreaId))
  1649. {
  1650. areaid = l.F_AreaId;
  1651. }
  1652. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  1653. string strparams = "?date=" + date.Value.ToString("yyyy-MM-dd") + "&signcode=" + signcode + "&areaid=" + areaid;
  1654. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);//.ToObject<AjaxResult>();
  1655. if (!string.IsNullOrEmpty(branchcode))
  1656. {
  1657. return Content(ar);//查询单个时直接返回
  1658. }
  1659. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  1660. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  1661. {
  1662. //string x = jo0["data"].ToString();
  1663. string y = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["rcounts"].ToString(), "[\r\n\t ]", "");
  1664. y = y.Replace("[", "");
  1665. y = y.Replace("]", "");
  1666. string[] z = y.Split(',');
  1667. string p = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["ccounts"].ToString(), "[\r\n\t ]", "");
  1668. p = p.Replace("[", "");
  1669. p = p.Replace("]", "");
  1670. string[] q = p.Split(',');
  1671. string a = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["gcounts"].ToString(), "[\r\n\t ]", "");
  1672. a = a.Replace("[", "");
  1673. a = a.Replace("]", "");
  1674. string[] b = a.Split(',');
  1675. string m = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["scounts"].ToString(), "[\r\n\t ]", "");
  1676. m = m.Replace("[", "");
  1677. m = m.Replace("]", "");
  1678. string[] n = m.Split(',');
  1679. for (int i = 0; i < 24; i++)
  1680. {
  1681. rcounts[i] += int.Parse(z[i]);
  1682. ccounts[i] += int.Parse(q[i]);
  1683. gcounts[i] += int.Parse(b[i]);
  1684. scounts[i] += int.Parse(n[i]);
  1685. }
  1686. }
  1687. }
  1688. }
  1689. var data = new
  1690. {
  1691. hours,
  1692. rcounts,
  1693. ccounts,
  1694. //lcounts = lcounts,
  1695. gcounts,
  1696. scounts
  1697. };
  1698. return Success("加载成功", data);
  1699. }
  1700. /// <summary>
  1701. /// 获取通话数量
  1702. /// </summary>
  1703. /// <param name="branchcode"></param>
  1704. /// <param name="date"></param>
  1705. /// <returns></returns>
  1706. public ActionResult GetTelCountByDate(string branchcode, DateTime? date, string areaid)
  1707. {
  1708. if (branchcode == "sqs12345")
  1709. {
  1710. branchcode = "";
  1711. }
  1712. if (date == null)
  1713. {
  1714. date = DateTime.Now;
  1715. }
  1716. string sqlwhere = " F_IsDP=1 ";
  1717. if (!string.IsNullOrEmpty(branchcode))
  1718. {
  1719. sqlwhere += " and F_Code='" + branchcode + "'";
  1720. }
  1721. else
  1722. {
  1723. sqlwhere += " and F_IsSQ!=1";
  1724. }
  1725. decimal hwcon = 0;
  1726. decimal lhcon = 0;
  1727. decimal jtcon = 0;
  1728. double pjthtimes = 0;
  1729. double jtl = 0;
  1730. double thtimes = 0;
  1731. ArrayList result = new ArrayList();
  1732. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  1733. string controllername = RouteData.Values["controller"].ToString();
  1734. string actionname = RouteData.Values["action"].ToString();
  1735. foreach (var l in list)
  1736. {
  1737. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  1738. {
  1739. if (!string.IsNullOrEmpty(l.F_AreaId))
  1740. {
  1741. areaid = l.F_AreaId;
  1742. }
  1743. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  1744. string strparams = "?date=" + date.Value.ToString("yyyy-MM-dd") + "&areaid=" + areaid + "&signcode=" + signcode;
  1745. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);//.ToObject<AjaxResult>();
  1746. if (!string.IsNullOrEmpty(branchcode))
  1747. {
  1748. return Content(ar);//查询单个时直接返回
  1749. }
  1750. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  1751. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  1752. {
  1753. hwcon += decimal.Parse(jo0["data"]["hwcon"].ToString());
  1754. lhcon += decimal.Parse(jo0["data"]["lhcon"].ToString());
  1755. jtcon += decimal.Parse(jo0["data"]["jtcon"].ToString());
  1756. //pjthtimes += decimal.Parse(jo0["data"]["pjthtimes"].ToString());
  1757. thtimes += double.Parse(jo0["data"]["thtimes"].ToString());
  1758. //jtl += decimal.Parse(jo0["data"]["jtl"].ToString());
  1759. if (hwcon > 0)
  1760. {
  1761. jtl = Math.Round((double.Parse(jtcon.ToString()) * 100 / double.Parse(hwcon.ToString())), 2);
  1762. }
  1763. if (jtcon > 0)
  1764. {
  1765. pjthtimes = Math.Round(thtimes / double.Parse(jtcon.ToString()));
  1766. }
  1767. }
  1768. }
  1769. }
  1770. var data = new
  1771. {
  1772. hwcon = hwcon,
  1773. lhcon = lhcon,
  1774. jtcon = jtcon,
  1775. pjthtimes = pjthtimes,
  1776. jtl = jtl
  1777. };
  1778. return Success("加载成功", data);
  1779. }
  1780. #region 20190702
  1781. /// <summary>
  1782. /// 获取关键词数量
  1783. /// </summary>
  1784. /// <param name="start"></param>
  1785. /// <param name="end"></param>
  1786. /// <returns></returns>
  1787. public ActionResult GetKeyCountRankByDate(string branchcode, DateTime? start, DateTime? end, int datetype = 0, int keyid = 0)
  1788. {
  1789. DateTime stime = DateTime.Now;
  1790. DateTime etime = DateTime.Now;
  1791. if (start != null)
  1792. {
  1793. stime = start.Value;//start = DateTime.Now;
  1794. }
  1795. if (end != null)
  1796. {
  1797. etime = end.Value;//end = DateTime.Now;
  1798. }
  1799. if(datetype>0)
  1800. {
  1801. GetStartEndTime(datetype, out stime, out etime);
  1802. }
  1803. if (branchcode == "sqs12345")
  1804. {
  1805. branchcode = "";
  1806. }
  1807. string sqlwhere = " F_IsDP=1 ";
  1808. if (!string.IsNullOrEmpty(branchcode))
  1809. {
  1810. sqlwhere += " and F_Code='" + branchcode + "'";
  1811. }
  1812. else
  1813. {
  1814. sqlwhere += " and F_IsSQ!=1";
  1815. }
  1816. ArrayList result = new ArrayList();
  1817. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  1818. string controllername = RouteData.Values["controller"].ToString();
  1819. string actionname = RouteData.Values["action"].ToString();
  1820. foreach (var l in list)
  1821. {
  1822. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  1823. {
  1824. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  1825. //string strparams = "?start=" + start.Value.ToString("yyyy-MM-dd") + "&end=" + end.Value.ToString("yyyy-MM-dd") + "&keyid=" + keyid + "&signcode=" + signcode;
  1826. string strparams = "?start=" + stime.ToString("yyyy-MM-dd") + "&end=" + etime.ToString("yyyy-MM-dd") + "&keyid=" + keyid + "&signcode=" + signcode;
  1827. AjaxResult ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams).ToObject<AjaxResult>();
  1828. if (ar.state.ToString() == ResultTypes.success.ToString())
  1829. {
  1830. var rtlist = ar.data.ToJson().ToList<Dictionary<string, object>>();
  1831. result.AddRange(rtlist);
  1832. }
  1833. }
  1834. }
  1835. return Success("成功", result);
  1836. }
  1837. /// <summary>
  1838. /// 获取单位关键词数量(new)
  1839. /// </summary>
  1840. /// <param name="start"></param>
  1841. /// <param name="end"></param>
  1842. /// <returns></returns>
  1843. public ActionResult GetDeptKeyCountByDateNew(string branchcode, DateTime? start, DateTime? end, int deptid = 0, int datetype = 0, int keyid = 0)
  1844. {
  1845. DateTime stime = DateTime.Now;
  1846. DateTime etime = DateTime.Now;
  1847. if (start != null)
  1848. {
  1849. stime = start.Value;//start = DateTime.Now;
  1850. }
  1851. if (end != null)
  1852. {
  1853. etime = end.Value;//end = DateTime.Now;
  1854. }
  1855. if (datetype > 0)
  1856. {
  1857. GetStartEndTime(datetype, out stime, out etime);
  1858. }
  1859. #region
  1860. //if (start == null)
  1861. //{
  1862. // start = DateTime.Now;
  1863. //}
  1864. //if (end == null)
  1865. //{
  1866. // end = DateTime.Now;
  1867. //}
  1868. #endregion
  1869. if (branchcode == "sqs12345")
  1870. {
  1871. branchcode = "";
  1872. }
  1873. string sqlwhere = " F_IsDP=1 ";
  1874. if (!string.IsNullOrEmpty(branchcode))
  1875. {
  1876. sqlwhere += " and F_Code='" + branchcode + "'";
  1877. }
  1878. else
  1879. {
  1880. sqlwhere += " and F_IsSQ!=1";
  1881. }
  1882. ArrayList result = new ArrayList();
  1883. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  1884. string controllername = RouteData.Values["controller"].ToString();
  1885. string actionname = RouteData.Values["action"].ToString();
  1886. foreach (var l in list)
  1887. {
  1888. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  1889. {
  1890. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  1891. //string strparams = "?start=" + start.Value.ToString("yyyy-MM-dd") + "&end=" + end.Value.ToString("yyyy-MM-dd") + "&deptid=" + deptid + "&keyid=" + keyid + "&signcode=" + signcode;
  1892. string strparams = "?start=" + stime.ToString("yyyy-MM-dd") + "&end=" + etime.ToString("yyyy-MM-dd") + "&deptid=" + deptid + "&keyid=" + keyid + "&signcode=" + signcode;
  1893. AjaxResult ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams).ToObject<AjaxResult>();
  1894. if (ar.state.ToString() == ResultTypes.success.ToString())
  1895. {
  1896. var rtlist = ar.data.ToJson().ToList<Dictionary<string, object>>();
  1897. result.AddRange(rtlist);
  1898. }
  1899. }
  1900. }
  1901. return Success("成功", result);
  1902. }
  1903. #endregion
  1904. #region 20191125 zhengbingbing 大屏增加工单热点分布
  1905. /// <summary>
  1906. /// 工单热点分布
  1907. /// </summary>
  1908. /// <param name="start"></param>
  1909. /// <param name="end"></param>
  1910. /// <param name="deptid"></param>
  1911. /// <param name="keyid"></param>
  1912. /// <param name="sourcearea"></param>
  1913. /// <param name="source"></param>
  1914. /// <returns></returns>
  1915. public ActionResult GetHotspotMap(DateTime? start, DateTime? end, int deptid = 0, int keyid = 0, int sourcearea = 0, int source = 0)
  1916. {
  1917. if (start == null)
  1918. {
  1919. start = DateTime.Now.AddDays(-3);
  1920. }
  1921. if (end == null)
  1922. {
  1923. end = DateTime.Now;
  1924. }
  1925. string sqlwhere = " F_IsDP=1 and F_Code='sqs12345' ";
  1926. ArrayList result = new ArrayList();
  1927. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  1928. string controllername = RouteData.Values["controller"].ToString();
  1929. string actionname = RouteData.Values["action"].ToString();
  1930. foreach (var l in list)
  1931. {
  1932. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  1933. {
  1934. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  1935. string strparams = "?start=" + start.Value.ToString("yyyy-MM-dd") + "&end=" + end.Value.ToString("yyyy-MM-dd")
  1936. + "&deptid=" + deptid + "&keyid=" + keyid + "&sourcearea=" + sourcearea + "&source=" + source + "&signcode=" + signcode;
  1937. AjaxResult ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams).ToObject<AjaxResult>();
  1938. if (ar.state.ToString() == ResultTypes.success.ToString())
  1939. {
  1940. var rtlist = ar.data.ToJson().ToList<string[]>();
  1941. result.AddRange(rtlist);
  1942. }
  1943. }
  1944. }
  1945. return Success("成功", result);
  1946. }
  1947. #endregion
  1948. #endregion
  1949. #region 中心大数据
  1950. /// <summary>
  1951. /// 工单类型各数量
  1952. /// </summary>
  1953. /// <param name="branchcode"></param>
  1954. /// <returns></returns>
  1955. public ActionResult GetTypeCountNew(string branchcode, string areaid)
  1956. {
  1957. if (branchcode == "sqs12345")
  1958. {
  1959. branchcode = "";
  1960. }
  1961. string sqlwhere = " F_IsDP=1 ";
  1962. if (!string.IsNullOrEmpty(branchcode))
  1963. {
  1964. sqlwhere += " and F_Code='" + branchcode + "'";
  1965. }
  1966. else
  1967. {
  1968. sqlwhere += " and F_IsSQ!=1";
  1969. }
  1970. #region 定义新表
  1971. DataTable dtnew = new DataTable();
  1972. dtnew.Columns.Add("TypeName");
  1973. dtnew.Columns.Add("DayCount");
  1974. dtnew.Columns.Add("MonthCount");
  1975. dtnew.Columns.Add("TotalCount");
  1976. dtnew.Columns.Add("Percent");
  1977. int first = 1;
  1978. Int64 totalcount = 0;
  1979. #endregion
  1980. ArrayList result = new ArrayList();
  1981. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  1982. string controllername = RouteData.Values["controller"].ToString();
  1983. string actionname = RouteData.Values["action"].ToString();
  1984. foreach (var l in list)
  1985. {
  1986. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  1987. {
  1988. if (!string.IsNullOrEmpty(l.F_AreaId))
  1989. {
  1990. areaid = l.F_AreaId;
  1991. }
  1992. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  1993. string strparams = "?signcode=" + signcode + "&areaid=" + areaid;
  1994. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);//.ToObject<AjaxResult>();
  1995. if (!string.IsNullOrEmpty(branchcode))
  1996. {
  1997. return Content(ar);//查询单个时直接返回
  1998. }
  1999. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  2000. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  2001. {
  2002. if (first == 1)
  2003. {
  2004. DataTable dt = HeadToDataTable(jo0["data"].ToString(), "Item");
  2005. dtnew = dt;
  2006. first = 0;
  2007. }
  2008. else
  2009. {
  2010. //前部分相加
  2011. DataTable dt1 = HeadToDataTable(jo0["data"].ToString(), "Item");
  2012. for (int i = 0; i < dt1.Rows.Count; i++)
  2013. {
  2014. for (int j = 1; j < 4; j++)
  2015. {
  2016. decimal t = decimal.Parse(dtnew.Rows[i][j].ToString()) + decimal.Parse(dt1.Rows[i][j].ToString());
  2017. dtnew.Rows[i][j] = t;
  2018. }
  2019. //totalcount += Int64.Parse(dtnew.Rows[i]["TotalCount"].ToString());
  2020. }
  2021. }
  2022. //var rtlist = ar.data.ToJson().ToList<Dictionary<string, object>>();
  2023. //result.AddRange(rtlist);
  2024. }
  2025. }
  2026. }
  2027. #region 计算比例
  2028. for (int j = 0; j < dtnew.Rows.Count; j++)
  2029. {
  2030. totalcount += Int64.Parse(dtnew.Rows[j]["TotalCount"].ToString());
  2031. }
  2032. if (totalcount > 0)
  2033. {
  2034. for (int j = 0; j < dtnew.Rows.Count; j++)
  2035. {
  2036. dtnew.Rows[j]["Percent"] = Math.Round(decimal.Parse(dtnew.Rows[j]["TotalCount"].ToString()) / totalcount * 100, 2);
  2037. }
  2038. }
  2039. #endregion
  2040. return Success("成功", dtnew);
  2041. }
  2042. /// <summary>
  2043. /// 接通率统计
  2044. /// </summary>
  2045. /// <param name="branchcode"></param>
  2046. /// <param name="date"></param>
  2047. /// <returns></returns>
  2048. public ActionResult GetTelRate24ByDate(string branchcode, DateTime? date, string areaid)
  2049. {
  2050. if (branchcode == "sqs12345")
  2051. {
  2052. branchcode = "";
  2053. }
  2054. if (date == null)
  2055. {
  2056. date = DateTime.Now;
  2057. }
  2058. string sqlwhere = " F_IsDP=1 ";
  2059. if (!string.IsNullOrEmpty(branchcode))
  2060. {
  2061. sqlwhere += " and F_Code='" + branchcode + "'";
  2062. }
  2063. else
  2064. {
  2065. sqlwhere += " and F_IsSQ!=1";
  2066. }
  2067. int[] hours = Enumerable.Range(0, 24).ToArray<int>();
  2068. int[] jt = new int[24];
  2069. int[] zs = new int[24];
  2070. double[] rates = new double[24];
  2071. ArrayList result = new ArrayList();
  2072. var list = new BLL.T_Branch_List().GetModelList(sqlwhere);
  2073. string controllername = RouteData.Values["controller"].ToString();
  2074. string actionname = "GetTelNum24ByDate";// RouteData.Values["action"].ToString();
  2075. foreach (var l in list)
  2076. {
  2077. if (!string.IsNullOrEmpty(l.F_Sign) && !string.IsNullOrEmpty(l.F_Url))
  2078. {
  2079. if (!string.IsNullOrEmpty(l.F_AreaId))
  2080. {
  2081. areaid = l.F_AreaId;
  2082. }
  2083. string signcode = CommonHelper.getsigncode(controllername, actionname, l.F_Sign);
  2084. string strparams = "?date=" + date.Value.ToString("yyyy-MM-dd") + "&areaid=" + areaid + "&signcode=" + signcode;
  2085. string ar = HttpMethods.HttpGet(l.F_Url + "/" + controllername + "/" + actionname + strparams);//.ToObject<AjaxResult>();
  2086. //if (!string.IsNullOrEmpty(branchcode))
  2087. //{
  2088. // return Content(ar);//查询单个时直接返回
  2089. //}
  2090. JObject jo0 = (JObject)JsonConvert.DeserializeObject(ar);
  2091. if (jo0 != null && jo0["state"].ToString() == ResultTypes.success.ToString())
  2092. {
  2093. //string x = jo0["data"].ToString();
  2094. string y = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["jt"].ToString(), "[\r\n\t ]", "");
  2095. y = y.Replace("[", "");
  2096. y = y.Replace("]", "");
  2097. string[] z = y.Split(',');
  2098. string p = System.Text.RegularExpressions.Regex.Replace(jo0["data"]["zs"].ToString(), "[\r\n\t ]", "");
  2099. p = p.Replace("[", "");
  2100. p = p.Replace("]", "");
  2101. string[] q = p.Split(',');
  2102. for (int i = 0; i < 24; i++)
  2103. {
  2104. jt[i] += int.Parse(z[i]);
  2105. zs[i] += int.Parse(q[i]);
  2106. }
  2107. }
  2108. }
  2109. }
  2110. for (int j = 0; j < 24; j++)
  2111. {
  2112. rates[j] = zs[j] > 0 ? Math.Round(((double)jt[j] * 100 / zs[j]), 2) : 0;
  2113. }
  2114. var data = new
  2115. {
  2116. hours,
  2117. rates
  2118. };
  2119. return Success("成功", data);
  2120. }
  2121. #endregion
  2122. #region 数据处理
  2123. /// <summary>
  2124. /// Json 字符串 转换为 DataTable数据集合
  2125. /// </summary>
  2126. /// <param name="json"></param>
  2127. /// <returns></returns>
  2128. public static DataTable ToDataTable(string json, string dicstr)//Item
  2129. {
  2130. DataTable dataTable = new DataTable(); //实例化
  2131. DataTable result;
  2132. try
  2133. {
  2134. JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
  2135. javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
  2136. ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json);
  2137. if (arrayList.Count > 0)
  2138. {
  2139. foreach (Dictionary<string, object> dictionary in arrayList)
  2140. {
  2141. if (dictionary.Keys.Count<string>() == 0)
  2142. {
  2143. result = dataTable;
  2144. return result;
  2145. }
  2146. //Columns
  2147. if (dataTable.Columns.Count == 0)
  2148. {
  2149. foreach (string current in dictionary.Keys)
  2150. {
  2151. if (current != dicstr)
  2152. dataTable.Columns.Add(current, dictionary[current].GetType());
  2153. else
  2154. {
  2155. ArrayList list = dictionary[current] as ArrayList;
  2156. foreach (Dictionary<string, object> dic in list)
  2157. {
  2158. foreach (string key in dic.Keys)
  2159. {
  2160. dataTable.Columns.Add(key, dic[key].GetType());
  2161. }
  2162. break;
  2163. }
  2164. }
  2165. }
  2166. }
  2167. //Rows
  2168. //string root = "";
  2169. List<string> cname = new List<string>();
  2170. foreach (string current in dictionary.Keys)
  2171. {
  2172. if (current != dicstr)
  2173. {
  2174. //root = current;
  2175. //dataRow[root] = dictionary[root];
  2176. cname.Add(current);
  2177. }
  2178. else
  2179. {
  2180. ArrayList list = dictionary[current] as ArrayList;
  2181. foreach (Dictionary<string, object> dic in list)
  2182. {
  2183. DataRow dataRow = dataTable.NewRow();
  2184. foreach (var li in cname)
  2185. {
  2186. if (dictionary[li] == null)
  2187. {
  2188. dataRow[li] = -1;
  2189. }
  2190. else
  2191. {
  2192. dataRow[li] = dictionary[li];
  2193. }
  2194. }
  2195. //dataRow[root] = dictionary[root];
  2196. foreach (string key in dic.Keys)
  2197. {
  2198. dataRow[key] = dic[key];
  2199. }
  2200. dataTable.Rows.Add(dataRow);
  2201. }
  2202. }
  2203. }
  2204. }
  2205. }
  2206. }
  2207. catch
  2208. {
  2209. }
  2210. result = dataTable;
  2211. return result;
  2212. }
  2213. public static DataTable HeadToDataTable(string json, string dicstr)//Item
  2214. {
  2215. DataTable dataTable = new DataTable(); //实例化
  2216. DataTable result;
  2217. try
  2218. {
  2219. JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
  2220. javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
  2221. ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json);
  2222. if (arrayList.Count > 0)
  2223. {
  2224. foreach (Dictionary<string, object> dictionary in arrayList)
  2225. {
  2226. if (dictionary.Keys.Count<string>() == 0)
  2227. {
  2228. result = dataTable;
  2229. return result;
  2230. }
  2231. //Columns
  2232. if (dataTable.Columns.Count == 0)
  2233. {
  2234. foreach (string current in dictionary.Keys)
  2235. {
  2236. if (current != dicstr)
  2237. dataTable.Columns.Add(current, dictionary[current].GetType());
  2238. //else
  2239. //{
  2240. // ArrayList list = dictionary[current] as ArrayList;
  2241. // foreach (Dictionary<string, object> dic in list)
  2242. // {
  2243. // foreach (string key in dic.Keys)
  2244. // {
  2245. // dataTable.Columns.Add(key, dic[key].GetType());
  2246. // }
  2247. // break;
  2248. // }
  2249. //}
  2250. }
  2251. }
  2252. //Rows
  2253. //string root = "";
  2254. List<string> cname = new List<string>();
  2255. DataRow dataRow = dataTable.NewRow();
  2256. foreach (string current in dictionary.Keys)
  2257. {
  2258. if (current != dicstr)
  2259. {
  2260. //root = current;
  2261. //dataRow[root] = dictionary[root];
  2262. cname.Add(current);
  2263. }
  2264. foreach (var li in cname)
  2265. {
  2266. if (dictionary[li] == null)
  2267. {
  2268. dataRow[li] = -1;
  2269. }
  2270. else
  2271. {
  2272. dataRow[li] = dictionary[li];
  2273. }
  2274. }
  2275. //dataRow[root] = dictionary[root];
  2276. //else
  2277. //{
  2278. // ArrayList list = dictionary[current] as ArrayList;
  2279. // foreach (Dictionary<string, object> dic in list)
  2280. // {
  2281. // DataRow dataRow = dataTable.NewRow();
  2282. // foreach (var li in cname)
  2283. // {
  2284. // dataRow[li] = dictionary[li];
  2285. // }
  2286. // //dataRow[root] = dictionary[root];
  2287. // foreach (string key in dic.Keys)
  2288. // {
  2289. // dataRow[key] = dic[key];
  2290. // }
  2291. // dataTable.Rows.Add(dataRow);
  2292. // }
  2293. //}
  2294. }
  2295. dataTable.Rows.Add(dataRow);
  2296. }
  2297. }
  2298. }
  2299. catch (Exception ex)
  2300. {
  2301. }
  2302. result = dataTable;
  2303. return result;
  2304. }
  2305. public static DataTable ItemToDataTable(string json, string dicstr)//Item
  2306. {
  2307. DataTable dataTable = new DataTable(); //实例化
  2308. DataTable result;
  2309. try
  2310. {
  2311. JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
  2312. javaScriptSerializer.MaxJsonLength = Int32.MaxValue; //取得最大数值
  2313. ArrayList arrayList = javaScriptSerializer.Deserialize<ArrayList>(json);
  2314. if (arrayList.Count > 0)
  2315. {
  2316. foreach (Dictionary<string, object> dictionary in arrayList)
  2317. {
  2318. if (dictionary.Keys.Count<string>() == 0)
  2319. {
  2320. result = dataTable;
  2321. return result;
  2322. }
  2323. //Columns
  2324. if (dataTable.Columns.Count == 0)
  2325. {
  2326. foreach (string current in dictionary.Keys)
  2327. {
  2328. if (current != dicstr)
  2329. { }//dataTable.Columns.Add(current, dictionary[current].GetType());
  2330. else
  2331. {
  2332. ArrayList list = dictionary[current] as ArrayList;
  2333. foreach (Dictionary<string, object> dic in list)
  2334. {
  2335. foreach (string key in dic.Keys)
  2336. {
  2337. dataTable.Columns.Add(key, dic[key].GetType());
  2338. }
  2339. break;
  2340. }
  2341. }
  2342. }
  2343. }
  2344. //Rows
  2345. //string root = "";
  2346. List<string> cname = new List<string>();
  2347. foreach (string current in dictionary.Keys)
  2348. {
  2349. if (current != dicstr)
  2350. {
  2351. //root = current;
  2352. //dataRow[root] = dictionary[root];
  2353. //cname.Add(current);
  2354. }
  2355. else
  2356. {
  2357. ArrayList list = dictionary[current] as ArrayList;
  2358. foreach (Dictionary<string, object> dic in list)
  2359. {
  2360. DataRow dataRow = dataTable.NewRow();
  2361. //foreach (var li in cname)
  2362. //{
  2363. //dataRow[li] = dictionary[li];
  2364. //}
  2365. //dataRow[root] = dictionary[root];
  2366. foreach (string key in dic.Keys)
  2367. {
  2368. dataRow[key] = dic[key];
  2369. }
  2370. dataTable.Rows.Add(dataRow);
  2371. }
  2372. }
  2373. }
  2374. }
  2375. }
  2376. }
  2377. catch
  2378. {
  2379. }
  2380. result = dataTable;
  2381. return result;
  2382. }
  2383. #endregion
  2384. #region 获取时间
  2385. /// <summary>
  2386. /// 获取当天、本周、本月、本年、累计时间
  2387. /// </summary>
  2388. /// <param name="datetype"></param>
  2389. /// <param name="start"></param>
  2390. /// <param name="end"></param>
  2391. public void GetStartEndTime(int datetype, out DateTime start, out DateTime end)
  2392. {
  2393. var datenow = DateTime.Now;
  2394. var datestart = datenow;
  2395. var dateend = datenow;
  2396. switch (datetype)
  2397. {
  2398. case 0://当天
  2399. break;
  2400. case 1://本周
  2401. int n = (int)datenow.DayOfWeek == 0 ? 7 : (int)datenow.DayOfWeek;
  2402. datestart = datenow.AddDays(1 - n);//本周周一
  2403. dateend = datestart.AddDays(6);//本周周日
  2404. break;
  2405. case 2://本月
  2406. datestart = datenow.AddDays(1 - datenow.Day); //本月月初
  2407. dateend = datestart.AddMonths(1).AddDays(-1); //本月月末
  2408. break;
  2409. case 3://本年
  2410. datestart = new DateTime(datenow.Year, 1, 1); //本年年初
  2411. dateend = new DateTime(datenow.Year, 12, 31); //本年年末
  2412. break;
  2413. default:
  2414. break;
  2415. }
  2416. start = datestart;
  2417. end = dateend;
  2418. }
  2419. #endregion
  2420. }
  2421. }