新乡民调(来自息县民调) - 主标

InfoController.cs 176KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801
  1. using CallCenter.Utility;
  2. using CallCenterApi.DB;
  3. using CallCenterApi.Interface.Controllers.Base;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Linq;
  8. using System.Web;
  9. using System.Web.Mvc;
  10. namespace CallCenterApi.Interface.Controllers
  11. {
  12. public class InfoController : BaseController
  13. {
  14. private BLL.T_Wo_WorkOrder workOrderBLL = new BLL.T_Wo_WorkOrder();
  15. private BLL.T_RegionCategory regionCategoryBLL = new BLL.T_RegionCategory();
  16. private BLL.T_Sys_DictionaryValue dicValueBLL = new BLL.T_Sys_DictionaryValue();
  17. private BLL.T_Sys_Department departmentBLL = new BLL.T_Sys_Department();
  18. #region
  19. //来源渠道情况
  20. public ActionResult GetByQD()
  21. {
  22. var dt1 = Getslqd24();
  23. var dt2 = GetArea();
  24. var dt3 = GetArea24();
  25. return Success("加载成功", new
  26. {
  27. a = dt1,
  28. b = dt2,
  29. c = dt3
  30. });
  31. }
  32. //接单部门情况
  33. public ActionResult GetByDept()
  34. {
  35. var dt1 = GetJD();
  36. var dt2 = Getdpt();
  37. var dt3 = GetGDCL();
  38. return Success("加载成功", new
  39. {
  40. a = dt1,
  41. b = dt2,
  42. c = dt3
  43. });
  44. }
  45. //投诉举报情况
  46. #endregion
  47. #region 1.来源渠道情况
  48. //受理渠道24小时实时统计
  49. private object Getslqd24()
  50. {
  51. DataTable dt=DbHelperSQL.Query("select F_Name,(select COUNT(1) from T_Wo_WorkOrder where IsDel=0 and datediff(day,createtime,getdate())=0 and Source=F_Name) con from T_Sys_DictionaryValue where F_DictionaryFlag='GDLY' and F_State=1").Tables[0];
  52. return dt;
  53. }
  54. //受理区域统计
  55. private object GetArea()
  56. {
  57. //186 郑州市
  58. DataTable dt = DbHelperSQL.Query("select F_RegionName,(select COUNT(1) from T_Wo_WorkOrder where IsDel=0 and datediff(day,createtime,getdate())=0 and County=F_RegionName) con from T_RegionCategory where F_DeleteFlag=0 and F_ParentId=186").Tables[0];
  59. return dt;
  60. }
  61. //受理区域统计(按小时统计)
  62. private object GetArea24()
  63. {
  64. DataTable dt = DbHelperSQL.Query("select datepart(hh,CreateTime) hor,County, count(1) con from T_Wo_WorkOrder where IsDel = 0 and datediff(day, createtime, getdate()) = 0 group by datepart(hh, CreateTime), County").Tables[0];
  65. var regionList = regionCategoryBLL.DataTableToList(regionCategoryBLL.GetList(" F_DeleteFlag=0 and F_ParentId=186 ").Tables[0]);
  66. int[] times = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 };
  67. var query3 = times.Select(x => new
  68. {
  69. Time = x,
  70. Arealist = regionList.Select(z =>
  71. {
  72. var con = dt.Select(" hor=" + x.ToString() + " and County='" + z.F_RegionName + "'")[0]["con"].ToString();
  73. if (string.IsNullOrEmpty(con))
  74. {
  75. con = "0";
  76. }
  77. return new
  78. {
  79. Area = z.F_RegionName,
  80. Count = con
  81. };
  82. }).OrderBy(z => z.Area)
  83. });
  84. return query3;
  85. }
  86. #endregion
  87. #region 2.接单部门情况
  88. //接单情况汇总(月份)
  89. private object GetJD()
  90. {
  91. DataTable dt = DbHelperSQL.Query("select datepart(month,CreateTime) mon,TypeClass, count(1) con from T_Wo_WorkOrder where IsDel = 0 and datediff(month,createtime,getdate())<=12 group by datepart(month, CreateTime), TypeClass) desc").Tables[0];
  92. var tsList = dicValueBLL.DataTableToList(dicValueBLL.GetList(" F_DictionaryFlag='TSLX' and F_State=1 ").Tables[0]);
  93. int[] months = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
  94. var query3 = months.Select(x => new
  95. {
  96. Month = DateTime.Now.AddMonths(x - 1).ToString("yyyyMM"),
  97. TSList = tsList.Select(z =>
  98. {
  99. var con = dt.Select(" mon=" + DateTime.Now.AddMonths(x - 1).Month + " and TypeClass='" + z.F_DictionaryValueId + "'")[0]["con"].ToString();
  100. if (string.IsNullOrEmpty(con))
  101. {
  102. con = "0";
  103. }
  104. return new
  105. {
  106. tsname = z.F_Name,
  107. Count = con
  108. };
  109. }).OrderBy(z => z.tsname)
  110. });
  111. return query3;
  112. }
  113. //各部门受理工单情况
  114. private object Getdpt()
  115. {
  116. DataTable dt = DbHelperSQL.Query("select F_DeptName,(select COUNT(1) from T_Wo_WorkOrder where IsDel=0 and datediff(day,createtime,getdate())=0 and ResponDept=F_DeptId) con from T_Sys_Department where F_State=1").Tables[0];
  117. return dt;
  118. }
  119. //工单处理时间分布(小时)
  120. private object GetGDCL()
  121. {
  122. DataTable dt = DbHelperSQL.Query("select datepart(hh,CreateTime) hor,TypeClass, count(1) con from T_Wo_WorkOrder where IsDel = 0 and datediff(day,createtime,getdate())=0 group by datepart(hh, CreateTime), TypeClass").Tables[0];
  123. var tsList = dicValueBLL.DataTableToList(dicValueBLL.GetList(" F_DictionaryFlag='TSLX' and F_State=1 ").Tables[0]);
  124. int[] times = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 };
  125. var query3 = times.Select(x => new
  126. {
  127. Time = x,
  128. TSList = tsList.Select(z =>
  129. {
  130. var con = dt.Select(" hor=" + x.ToString() + " and TypeClass='" + z.F_DictionaryValueId + "'")[0]["con"].ToString();
  131. if (string.IsNullOrEmpty(con))
  132. {
  133. con = "0";
  134. }
  135. return new
  136. {
  137. tsname = z.F_Name,
  138. Count = con
  139. };
  140. }).OrderBy(z => z.tsname)
  141. });
  142. return query3;
  143. }
  144. #endregion
  145. #region 3.投诉举报情况
  146. //投诉/举报汇总
  147. //举报单位/个人统计
  148. //投诉关键字统计
  149. //投诉单位统计
  150. //举报关键字统计
  151. #endregion
  152. #region 4.话务数量情况
  153. //话务量实时数据统计
  154. private object GetHWLSS()
  155. {
  156. //接通量
  157. DataTable dt = DbHelperSQL.Query(" select datepart(hh,BeginTime) hor, count(1) con from T_Call_CallRecords where CallState=1 and datediff(day, BeginTime, getdate()) = 0 group by datepart(hh,BeginTime) ").Tables[0];
  158. //来电量
  159. DataTable dt1 = DbHelperSQL.Query(" select datepart(hh,BeginTime) hor, count(1) con from T_Call_CallRecords where CallType=0 and datediff(day, BeginTime, getdate()) = 0 group by datepart(hh,BeginTime) ").Tables[0];
  160. int[] times = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 };
  161. var query3 = times.Select(x => {
  162. var hwcon = dt.Select(" hor=" + x.ToString() + " ")[0]["con"].ToString();//接通量
  163. var lhcon = dt1.Select(" hor=" + x.ToString() + " ")[0]["con"].ToString();//来电量
  164. if (string.IsNullOrEmpty(hwcon))
  165. {
  166. hwcon = "0";
  167. }
  168. if (string.IsNullOrEmpty(lhcon))
  169. {
  170. lhcon = "0";
  171. }
  172. return new
  173. {
  174. Time = x,
  175. hwcount = hwcon,
  176. lhcount = lhcon,
  177. };
  178. });
  179. return query3;
  180. }
  181. //管辖区域来话量统计
  182. //坐席闲忙比例
  183. private object GetZXXM()
  184. {
  185. DataTable dt = DbHelperSQL.Query(" select datepart(hh,OccurTime) hor,State, count(1) from rep_agent_state where datediff(day, OccurTime, getdate()) = 0 group by datepart(hh,OccurTime),State ").Tables[0];
  186. int[] times = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 };
  187. var query3 = times.Select(x => {
  188. var con= dt.Select(" hor=" + x.ToString() + " ")[0]["con"].ToString();//总量
  189. var kxcon = dt.Select(" hor=" + x.ToString() + " State=2 ")[0]["con"].ToString();//空闲
  190. var thcon = dt.Select(" hor=" + x.ToString() + " State=3 ")[0]["con"].ToString();//通话中
  191. var hhclcon = dt.Select(" hor=" + x.ToString() + " State=4 ")[0]["con"].ToString();//话后处理中
  192. var xxcon = dt.Select(" hor=" + x.ToString() + " State=5 ")[0]["con"].ToString();//小休
  193. var zlcon = dt.Select(" hor=" + x.ToString() + " State=6 ")[0]["con"].ToString();//被请求
  194. var kxbl = 0.00; var thbl = 0.00; var zmbl = 0.00;
  195. if (!string.IsNullOrEmpty(con))
  196. {
  197. if (!string.IsNullOrEmpty(kxcon))
  198. {
  199. kxbl = double.Parse(kxcon) / double.Parse(con);
  200. }
  201. if (!string.IsNullOrEmpty(thcon))
  202. {
  203. thbl = double.Parse(thcon) / double.Parse(con);
  204. }
  205. if (!string.IsNullOrEmpty(xxcon))
  206. {
  207. zmbl = double.Parse(xxcon) / double.Parse(con);
  208. }
  209. }
  210. return new
  211. {
  212. Time = x,
  213. kxbl = Math.Round(kxbl, 2),
  214. thbl = Math.Round(thbl, 2),
  215. zmbl = Math.Round(zmbl, 2),
  216. };
  217. });
  218. return query3;
  219. }
  220. //话务量总体统计
  221. private object GetHWZL()
  222. {
  223. //话务量
  224. DataTable dt = DbHelperSQL.Query(" select count(1) con from T_Call_CallRecords where datediff(day, BeginTime, getdate()) = 0 ").Tables[0];
  225. var hwcon = dt.Rows[0]["con"].ToString();//话务量
  226. if (string.IsNullOrEmpty(hwcon))
  227. {
  228. hwcon = "0";
  229. }
  230. //来话量
  231. DataTable dt1 = DbHelperSQL.Query(" select count(1) con from T_Call_CallRecords where CallType=0 and datediff(day, BeginTime, getdate()) = 0 ").Tables[0];
  232. var lhcon = dt1.Rows[0]["con"].ToString();//话务量
  233. if (string.IsNullOrEmpty(lhcon))
  234. {
  235. lhcon = "0";
  236. }
  237. //接通量,通话时长
  238. DataTable dt2 = DbHelperSQL.Query(" select count(1) con,sum(TalkLongTime) tltimes from T_Call_CallRecords where CallState=1 and datediff(day, BeginTime, getdate()) = 0 ").Tables[0];
  239. var jtcon = dt2.Rows[0]["con"].ToString();//接通量
  240. var thtimes = dt2.Rows[0]["tltimes"].ToString();//通话时长
  241. if (string.IsNullOrEmpty(jtcon))
  242. {
  243. jtcon = "0";
  244. }
  245. if (string.IsNullOrEmpty(thtimes))
  246. {
  247. thtimes = "0";
  248. }
  249. var jtl = 0.00;//接通率
  250. if (hwcon != "0")
  251. {
  252. jtl = double.Parse(jtcon) / double.Parse(hwcon) ;
  253. }
  254. var pjthtimes = 0;//平均通话时长
  255. if (jtcon != "0")
  256. {
  257. pjthtimes = int.Parse(thtimes) / int.Parse(jtcon);
  258. }
  259. var query3 = new {
  260. hwcon = hwcon,
  261. lhcon = lhcon,
  262. jtcon = jtcon,
  263. pjthtimes = pjthtimes,
  264. jtll= Math.Round(jtl, 2)
  265. };
  266. return query3;
  267. }
  268. #endregion
  269. #region 5.中心大数据
  270. //工单类型各数量
  271. //接通率统计源
  272. //投诉举报关键话题排名
  273. //通话数量统计
  274. private object GetHWL()
  275. {
  276. //话务量
  277. DataTable dt = DbHelperSQL.Query(" select datepart(hh,BeginTime) hor,count(1) con from T_Call_CallRecords where datediff(day, BeginTime, getdate()) = 0 group by datepart(hh,BeginTime) ").Tables[0];
  278. int[] times = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 };
  279. var query3 = times.Select(x =>
  280. {
  281. var hwcon = dt.Select(" hor=" + x.ToString() + " ")[0]["con"].ToString();//话务量
  282. var wjt = 0;
  283. if (hwcon == "0")
  284. {
  285. hwcon = "0";
  286. }
  287. return new
  288. {
  289. Time = x,
  290. hwcon = hwcon
  291. };
  292. });
  293. return query3;
  294. }
  295. //接通率统计
  296. private object GetJTL()
  297. {
  298. //话务量
  299. DataTable dt = DbHelperSQL.Query(" select datepart(hh,BeginTime) hor,count(1) con from T_Call_CallRecords where datediff(day, BeginTime, getdate()) = 0 group by datepart(hh,BeginTime) ").Tables[0];
  300. //接通量,通话时长
  301. DataTable dt2 = DbHelperSQL.Query(" select datepart(hh,BeginTime) hor,count(1) con from T_Call_CallRecords where CallState=1 and datediff(day, BeginTime, getdate()) = 0 group by datepart(hh,BeginTime) ").Tables[0];
  302. int[] times = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 };
  303. var query3 = times.Select(x =>
  304. {
  305. var hwcon = dt.Select(" hor=" + x.ToString() + " ")[0]["con"].ToString();//话务量
  306. var jtcon = dt2.Select(" hor=" + x.ToString() + " ")[0]["con"].ToString();
  307. var wjt = 0;
  308. if (hwcon != "0")
  309. {
  310. wjt = int.Parse(hwcon) - int.Parse(jtcon);
  311. }
  312. return new
  313. {
  314. Time = x,
  315. jtcon = jtcon,
  316. wjtcon = wjt,
  317. };
  318. });
  319. return query3;
  320. }
  321. //平均通话时长统计
  322. private object GetPjthsc()
  323. {
  324. //接通量,通话时长
  325. DataTable dt = DbHelperSQL.Query(" select datepart(hh,BeginTime) hor,count(1) con,sum(TalkLongTime) tltimes from T_Call_CallRecords where CallState=1 and datediff(day, BeginTime, getdate()) = 0 group by datepart(hh,BeginTime) ").Tables[0];
  326. int[] times = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24 };
  327. var query3 = times.Select(x => {
  328. var jtcon = dt.Select(" hor=" + x.ToString() + " ")[0]["con"].ToString();
  329. var thtimes = dt.Select(" hor=" + x.ToString() + " ")[0]["tltimes"].ToString();
  330. var pjthsc = 0;
  331. if (!string.IsNullOrEmpty(jtcon))
  332. {
  333. pjthsc = int.Parse(thtimes) / int.Parse(jtcon);
  334. }
  335. return new
  336. {
  337. Time = x,
  338. pjthsc= pjthsc,
  339. };
  340. });
  341. return query3;
  342. }
  343. #endregion
  344. #region 6.服务知识
  345. //工单处理时间统计和分布
  346. //群众咨询知识库情况统计
  347. //工单处理时间统计和分布
  348. #endregion
  349. #region 12345版大屏接口
  350. #region 来源渠道
  351. /// <summary>
  352. /// 获取受理区域数量
  353. /// </summary>
  354. /// <param name="start"></param>
  355. /// <param name="end"></param>
  356. /// <returns></returns>
  357. public ActionResult GetAreaCount24ByDate(DateTime? date)
  358. {
  359. string where = " and IsDel=0";
  360. if (date != null)
  361. {
  362. where += $" and datediff(day,CreateTime,'{date.Value.ToString("yyyy-MM-dd")}')=0 ";
  363. }
  364. else
  365. {
  366. where += " and datediff(day,CreateTime,getdate())=0";
  367. }
  368. var areaList = new BLL.T_Sys_DictionaryValue().GetModelList(" F_DictionaryFlag='JBDW' and F_State=1 ");
  369. //int[] hours = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 };
  370. int[] hours = Enumerable.Range(0, 24).ToArray<int>();
  371. var obj = new
  372. {
  373. hours = hours,
  374. cols = areaList.Select(p => p.F_Name),
  375. counts = new List<int[]>(),
  376. tcounts = new int[areaList.Count],
  377. items = new List<object>()
  378. };
  379. int n = 0;
  380. DataTable[] dts = new DataTable[areaList.Count];
  381. foreach (var area in areaList)
  382. {
  383. int t = 0;
  384. string strwhere = where;
  385. strwhere += " and County='" + area.F_DictionaryValueId + "'";
  386. int[] count = new int[24];
  387. //for (int i = 0; i < hours.Length; i++)
  388. //{
  389. // string sql = " select count(1) from dbo.T_Bus_WorkOrder where datepart(hh, F_CreateTime)=" + hours[i] + strwhere;
  390. // count[i] = Int32.Parse(DbHelperSQL.GetSingle(sql).ToString());
  391. // t = t + count[i];
  392. //}
  393. //2019-4-11修改查询语句
  394. string sqlc = " select datepart(hh, CreateTime),count(1) from dbo.T_Wo_WorkOrder where 1=1" + strwhere + " group by datepart(hh, CreateTime)";
  395. DataTable dtc = DbHelperSQL.Query(sqlc).Tables[0];
  396. dts[n] = dtc;
  397. /*for (int i = 0; i < hours.Length; i++)
  398. {
  399. for (int j = 0; j < dtc.Rows.Count; j++)
  400. {
  401. if (dtc.Rows[j][0].ToString() == hours[i].ToString())
  402. {
  403. if (!string.IsNullOrEmpty(dtc.Rows[j][1].ToString()))
  404. {
  405. count[i] = Int32.Parse(dtc.Rows[j][1].ToString());
  406. t = t + count[i];
  407. }
  408. }
  409. }
  410. }
  411. obj.counts.Add(count);
  412. obj.tcounts[n]= t;*/
  413. n += 1;
  414. string sqltype = " select F_Name TypeName,(select COUNT(1) from T_Wo_WorkOrder where InfoTypeID=F_DictionaryValueId " + strwhere
  415. + ") Count from dbo.T_Sys_DictionaryValue where F_DictionaryFlag='XXFL' and F_State=1 ";
  416. DataTable dttype = DbHelperSQL.Query(sqltype).Tables[0];
  417. obj.items.Add(dttype);
  418. }
  419. for (int m = 0; m < areaList.Count; m++)
  420. {
  421. DataTable dtc = dts[m];
  422. int[] count = new int[24];
  423. int t = 0;
  424. for (int i = 0; i < hours.Length; i++)
  425. {
  426. for (int j = 0; j < dtc.Rows.Count; j++)
  427. {
  428. if (dtc.Rows[j][0].ToString() == hours[i].ToString())
  429. {
  430. if (!string.IsNullOrEmpty(dtc.Rows[j][1].ToString()))
  431. {
  432. count[i] = Int32.Parse(dtc.Rows[j][1].ToString());
  433. t = t + count[i];
  434. }
  435. }
  436. }
  437. }
  438. obj.counts.Add(count);
  439. obj.tcounts[m] = t;
  440. }
  441. return Success("加载成功", obj);
  442. }
  443. /// <summary>
  444. /// 获取受理区域数量
  445. /// </summary>
  446. /// <param name="start"></param>
  447. /// <param name="end"></param>
  448. /// <returns></returns>
  449. public ActionResult GetAreaCountByDate(DateTime? start, DateTime? end, int isdpjk = 0)//isdpjk新版大屏使用接口,返回字段不能重复
  450. {
  451. //start = DateTime .Parse ("2018-05-21");
  452. //end = DateTime.Parse("2018-05-23");
  453. string where = " and IsDel=0";
  454. if (start == null && end == null)
  455. {
  456. where += " and datediff(day,CreateTime,getdate())=0";
  457. }
  458. else
  459. {
  460. if (start == null) { start = DateTime.Now; }
  461. if (end == null) { end = DateTime.Now; }
  462. where += $" and datediff(day,CreateTime,'{start.Value.ToString("yyyy-MM-dd")}')<=0 and datediff(day,CreateTime,'{end.Value.ToString("yyyy-MM-dd")}')>=0 ";
  463. }
  464. //2019-3-27因当即办理和转办都计算为工单量将isnull(F_IsResult,0)=0去掉改为1=1
  465. string sql = " select F_DictionaryValueId F_AreaId,F_Name AreaName,(select COUNT(1) from T_Wo_WorkOrder where 1=1 " + where
  466. //+ "and F_SourceArea=F_AreaId) Count from dbo.T_Sys_Area where F_PrentId=0 and F_State=0 order by F_AreaName";//2019-3-26 去掉永城,添加条件and F_AreaName not like '%永城%'
  467. + "and County=F_DictionaryValueId) Count from dbo.T_Sys_DictionaryValue where F_DictionaryFlag='JBDW' and F_State=1";//2019-3-26 去掉永城,添加条件and F_AreaName not like '%永城%'
  468. DataTable dt = DbHelperSQL.Query(sql).Tables[0];
  469. //2019-3-26 去掉当即办理
  470. /*DataRow dr = dt.NewRow();
  471. dr["F_AreaId"] = "0";
  472. dr["AreaName"] = "当即办理";
  473. string sqlzb = "select COUNT(1) from T_Bus_WorkOrder where isnull(F_IsResult,0)=1" + where;
  474. dr["Count"] = DbHelperSQL.GetSingle(sqlzb).ToString();
  475. dt.Rows.Add(dr);*/
  476. dt.Columns.Add("Item", typeof(object));
  477. foreach (DataRow drnew in dt.Rows)
  478. {
  479. string strwhere = where;
  480. string straid = drnew["F_AreaId"].ToString();
  481. if (straid != "0")
  482. {
  483. //strwhere += " and isnull(F_IsResult,0)=0 and F_SourceArea='" + straid + "' ";//2019-3-27注释掉,改为统计当即办理和转办
  484. //strwhere += " and( (isnull(F_IsResult,0)=0 and F_SourceArea='" + straid + "') or isnull(F_IsResult,0)=1)";
  485. strwhere += " and County='" + straid + "'";
  486. }
  487. //else
  488. //{
  489. // strwhere += " and isnull(F_IsResult,0)=1 ";
  490. //}
  491. if (isdpjk == 0)
  492. {
  493. string sqltype = " select F_Name TypeName,(select COUNT(1) from T_Wo_WorkOrder where InfoTypeID=F_DictionaryValueId " + strwhere
  494. + ") Count from dbo.T_Sys_DictionaryValue where F_DictionaryFlag='XXFL' and F_State=1 ";
  495. DataTable dttype = DbHelperSQL.Query(sqltype).Tables[0];
  496. drnew["Item"] = dttype;
  497. }
  498. else
  499. {
  500. string sqltype = " select F_Name TypeName,(select COUNT(1) from T_Wo_WorkOrder where InfoTypeID=F_DictionaryValueId " + strwhere
  501. + ") CountT from dbo.T_Sys_DictionaryValue where F_DictionaryFlag='XXFL' and F_State=1 ";
  502. DataTable dttype = DbHelperSQL.Query(sqltype).Tables[0];
  503. drnew["Item"] = dttype;
  504. }
  505. }
  506. return Success("加载成功", dt);
  507. }
  508. /// <summary>
  509. /// 获取来源百分比
  510. /// </summary>
  511. /// <param name="start"></param>
  512. /// <param name="end"></param>
  513. /// <returns></returns>
  514. public ActionResult GetSourcePercentByDate(DateTime? start, DateTime? end, string areaid, int isdpjk = 0)//isdpjk新版大屏使用接口,返回字段不能重复
  515. {
  516. string where = " and IsDel=0";
  517. if (start == null && end == null)
  518. {
  519. where += " and datediff(day,CreateTime,getdate())=0";
  520. }
  521. else
  522. {
  523. if (start == null) { start = DateTime.Now; }
  524. if (end == null) { end = DateTime.Now; }
  525. where += $" and datediff(day,CreateTime,'{start.Value.ToString("yyyy-MM-dd")}')<=0 and datediff(day,CreateTime,'{end.Value.ToString("yyyy-MM-dd")}')>=0 ";
  526. }
  527. if (!string.IsNullOrEmpty(areaid))
  528. {
  529. where = " and County=" + areaid;
  530. }
  531. string sql = " select F_DictionaryValueId Id,F_Name Source,(select COUNT(1) from T_Wo_WorkOrder where County=F_DictionaryValueId " + where
  532. + ") Count from dbo.T_Sys_DictionaryValue where F_DictionaryFlag='GDLY' and F_State=1 order by F_Name";
  533. DataTable dt = DbHelperSQL.Query(sql).Tables[0];
  534. int n = Int32.Parse(DbHelperSQL.GetSingle("select COUNT(1) from T_Wo_WorkOrder where 1=1 " + where).ToString());
  535. dt.Columns.Add("Percent", typeof(object));
  536. dt.Columns.Add("Item", typeof(object));
  537. foreach (DataRow drnew in dt.Rows)
  538. {
  539. if (n > 0)
  540. {
  541. drnew["Percent"] = Math.Round((double.Parse(drnew["Count"].ToString()) * 100 / n), 2);
  542. }
  543. string straid = drnew["Id"].ToString();
  544. string strwhere = where + " and County='" + straid + "' ";
  545. if (isdpjk == 0)
  546. {
  547. string sqltype = " select F_Name TypeName,(select COUNT(1) from T_Wo_WorkOrder where InfoTypeID=F_DictionaryValueId " + strwhere
  548. + ") Count from dbo.T_Sys_DictionaryValue where F_DictionaryFlag='GDLX' and F_State=1 order by F_Name";
  549. DataTable dttype = DbHelperSQL.Query(sqltype).Tables[0];
  550. drnew["Item"] = dttype;
  551. }
  552. else
  553. {
  554. string sqltype = " select F_Name TypeName,(select COUNT(1) from T_Wo_WorkOrder where InfoTypeID=F_DictionaryValueId " + strwhere
  555. + ") CountT from dbo.T_Sys_DictionaryValue where F_DictionaryFlag='GDLX' and F_State=1 order by F_Name";
  556. DataTable dttype = DbHelperSQL.Query(sqltype).Tables[0];
  557. drnew["Item"] = dttype;
  558. }
  559. }
  560. return Success("加载成功", dt);
  561. }
  562. #endregion
  563. #region 投诉举报---后两个接口未改,没有此项
  564. /// <summary>
  565. /// 获取类型数量
  566. /// </summary>
  567. /// <param name="start"></param>
  568. /// <param name="end"></param>
  569. /// <returns></returns>
  570. public ActionResult GetTypeCountByDate(DateTime? start, DateTime? end)
  571. {
  572. string where = " and IsDel=0";
  573. if (start == null && end == null)
  574. {
  575. where += " and datediff(day,CreateTime,getdate())=0";
  576. }
  577. else
  578. {
  579. if (start == null) { start = DateTime.Now; }
  580. if (end == null) { end = DateTime.Now; }
  581. where += $" and datediff(day,CreateTime,'{start.Value.ToString("yyyy-MM-dd")}')<=0 and datediff(day,CreateTime,'{end.Value.ToString("yyyy-MM-dd")}')>=0 ";
  582. }
  583. string sql = " select F_Name TypeName,(select COUNT(1) from T_Wo_WorkOrder where InfoTypeID=F_DictionaryValueId " + where
  584. + ") Count from dbo.T_Sys_DictionaryValue where F_DictionaryFlag='GDLX' and F_State=1 order by F_Name";
  585. DataTable dt = DbHelperSQL.Query(sql).Tables[0];
  586. return Success("加载成功", dt);
  587. }
  588. /// <summary>
  589. /// 接单情况汇总(月份)
  590. /// </summary>
  591. /// <param name="start"></param>
  592. /// <param name="end"></param>
  593. /// <returns></returns>
  594. public ActionResult GetTypeCountMonthByDate(string start, string end)
  595. {
  596. DateTime startdate = DateTime.Now.AddMonths(-12);
  597. DateTime enddate = DateTime.Now;
  598. string sqlwhere = "";
  599. if (!string.IsNullOrEmpty(start))
  600. {
  601. startdate = DateTime.Parse(start + "-01");
  602. sqlwhere += " and DATEDIFF(day, CreateTime,'" + startdate.ToString("yyyy-MM-dd") + "')<= 0 ";
  603. }
  604. if (!string.IsNullOrEmpty(end))
  605. {
  606. enddate = DateTime.Parse(end + "-01");
  607. sqlwhere += " and DATEDIFF(day, CreateTime,'" + enddate.ToString("yyyy-MM-dd") + "')>= 0 ";
  608. }
  609. int cnt = (enddate.Year - startdate.Year) * 12 + enddate.Month - startdate.Month + 1;
  610. string[] months = new string[cnt]; DateTime[] monthss = new DateTime[cnt];
  611. for (int i = 0; i < cnt; i++)
  612. {
  613. var date = startdate.AddMonths(i);
  614. string mon = date.ToString("yyyyMM");
  615. months[i] = mon;
  616. monthss[i] = date;
  617. }
  618. var typelist = dicValueBLL.GetModelList("F_DictionaryFlag='GDLX' and F_State=1");
  619. var obj = new
  620. {
  621. months = months,
  622. cols = typelist.Select(p => p.F_Name),
  623. counts = new List<int[]>(),
  624. };
  625. string sql = "select DATEPART(year,CreateTime) years,DATEPART(MONTH,CreateTime) months,InfoType,COUNT(1) ccount from T_Wo_WorkOrder where 1=1 and IsDel=0 " + sqlwhere + " group by DATEPART(YEAR,CreateTime),DATEPART(MONTH, CreateTime) ,InfoType order by DATEPART(YEAR,CreateTime),DATEPART(MONTH, CreateTime) ,InfoType";
  626. DataTable dtnew = DbHelperSQL.Query(sql).Tables[0];
  627. foreach (var l in typelist)
  628. {
  629. int[] count = new int[cnt];
  630. for (int i = 0; i < months.Length; i++)
  631. {
  632. var drInfo = dtnew.Select("years='" + monthss[i].ToString("yyyy") + "' and months='" + monthss[i].ToString("MM") + "' and InfoType=" + l.F_Name );
  633. count[i] = (from DataRow dr in drInfo select dr.Field<int>("ccount")).FirstOrDefault();
  634. }
  635. obj.counts.Add(count);
  636. }
  637. return Success("加载成功", obj);
  638. }
  639. /// <summary>
  640. /// 获取关键词数量
  641. /// </summary>
  642. /// <param name="start"></param>
  643. /// <param name="end"></param>
  644. /// <returns></returns>
  645. public ActionResult GetKeyCountByDate(DateTime? start, DateTime? end)
  646. {
  647. string where = " and IsDel=0";
  648. if (start == null && end == null)
  649. {
  650. where += " and datediff(day,CreateTime,getdate())=0";
  651. }
  652. else
  653. {
  654. if (start == null) { start = DateTime.Now; }
  655. if (end == null) { end = DateTime.Now; }
  656. where += $" and datediff(day,CreateTime,'{start.Value.ToString("yyyy-MM-dd")}')<=0 and datediff(day,CreateTime,'{end.Value.ToString("yyyy-MM-dd")}')>=0 ";
  657. }
  658. string sql = "select * from (select F_DictionaryValueId Id,F_Name TypeName,(select COUNT(1) from T_Wo_WorkOrder where IsDel=0 " + where
  659. + "and ','+F_Key+',' like '%,'+CONVERT(varchar(100),F_ValueId)+',%') Count "
  660. + "from dbo.T_Sys_DictionaryValue where F_ItemId = 3 and F_State = 0) a order by a.Count desc ";
  661. DataTable dt = DbHelperSQL.Query(sql).Tables[0];
  662. dt.Columns.Add("Item", typeof(object));
  663. foreach (DataRow drnew in dt.Rows)
  664. {
  665. string strwhere = where;
  666. string straid = drnew["Id"].ToString();
  667. strwhere += " and ','+F_Key+',' like '%," + straid + ",%' ";
  668. string sqltype = " select F_Value TypeName,(select COUNT(1) from T_Bus_WorkOrder where F_InfoType=F_ValueId " + strwhere
  669. + ") Count from dbo.T_Sys_DictionaryValue where F_PrentId=37 and F_State=0 ";
  670. DataTable dttype = DbHelperSQL.Query(sqltype).Tables[0];
  671. drnew["Item"] = dttype;
  672. }
  673. return Success("加载成功", dt);
  674. }
  675. /// <summary>
  676. /// 获取承办单位数量
  677. /// </summary>
  678. /// <param name="start"></param>
  679. /// <param name="end"></param>
  680. /// <returns></returns>
  681. public ActionResult GetDeptCountByDate(DateTime? start, DateTime? end, string areaid, int deptid = 0)
  682. {
  683. string where = " and F_IsDelete=0";
  684. if (start == null && end == null)
  685. {
  686. where += " and datediff(day,F_CreateTime,getdate())=0";
  687. }
  688. else
  689. {
  690. if (start == null) { start = DateTime.Now; }
  691. if (end == null) { end = DateTime.Now; }
  692. where += $" and datediff(day,F_CreateTime,'{start.Value.ToString("yyyy-MM-dd")}')<=0 and datediff(day,F_CreateTime,'{end.Value.ToString("yyyy-MM-dd")}')>=0 ";
  693. }
  694. string sql = " select F_DeptId Id,F_DeptName AreaName,(select COUNT(1) from T_Bus_WorkOrder where F_IsDelete=0 and F_WorkOrderID in "
  695. + "(select F_WorkOrderID from T_Bus_AssignedInfo where F_IsSure!=3 " + where
  696. + " and F_MainDeptId=F_DeptId)) Count from dbo.T_Sys_Department where F_IsDept='1' ";
  697. if (deptid > 0)
  698. {
  699. sql += " and F_DeptId='" + deptid + "'";
  700. }
  701. DataTable dt = DbHelperSQL.Query(sql).Tables[0];
  702. dt.Columns.Add("Item", typeof(object));
  703. foreach (DataRow drnew in dt.Rows)
  704. {
  705. string strwhere = where;
  706. string straid = drnew["Id"].ToString();
  707. strwhere += " and F_MainDeptId='" + straid + "' ";
  708. string sqltype = " select F_Value TypeName,(select COUNT(1) from T_Bus_WorkOrder where F_IsDelete=0 and F_InfoType=F_ValueId and F_WorkOrderID in"
  709. + "(select F_WorkOrderID from T_Bus_AssignedInfo where F_IsSure!=3 " + strwhere
  710. + ")) Count from dbo.T_Sys_DictionaryValue where F_PrentId=37 and F_State=0 ";
  711. DataTable dttype = DbHelperSQL.Query(sqltype).Tables[0];
  712. drnew["Item"] = dttype;
  713. }
  714. return Success("加载成功", dt);
  715. }
  716. #endregion
  717. #region 话务数量---待测试
  718. /// <summary>
  719. /// 话务量实时数据统计
  720. /// </summary>
  721. /// <param name="start"></param>
  722. /// <param name="end"></param>
  723. /// <returns></returns>
  724. public ActionResult GetTelCount24ByDate(DateTime? date)
  725. {
  726. if (date == null)
  727. {
  728. date = DateTime.Now;
  729. }
  730. string strdate = date.Value.ToString("yyyy-MM-dd");
  731. //int[] hours = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 };
  732. int[] hours = Enumerable.Range(0, 24).ToArray<int>();
  733. int[] tcounts = new int[24];//来电数量
  734. int[] ccounts = new int[24];//接通数量
  735. int[] lcounts = new int[24];//留言数量
  736. int[] gcounts = new int[24];//放弃数量
  737. int[] scounts = new int[24];//骚扰数量
  738. string ldsql = $"select DATEPART(HH,BeginTime) hours,COUNT(1) ccount from T_Call_CallRecords where CallType=0 and DATEDIFF(day, BeginTime, '" + strdate + "') = 0 group by DATEPART(HH, BeginTime) order by DATEPART(HH, BeginTime)";
  739. string jtsql = $"select DATEPART(HH,BeginTime) hours,COUNT(1) ccount from T_Call_CallRecords where CallType=0 and CallState=1 and DATEDIFF(day, BeginTime, '" + strdate + "') = 0 group by DATEPART(HH, BeginTime) order by DATEPART(HH, BeginTime)";
  740. string lysql = $"select DATEPART(HH,BeginTime) hours,COUNT(1) ccount from T_Call_CallRecords where CallType=0 and DealType=4 and DATEDIFF(day, BeginTime, '" + strdate + "') = 0 group by DATEPART(HH, BeginTime) order by DATEPART(HH, BeginTime)";
  741. string srsql = $"select DATEPART(HH,BeginTime) hours,COUNT(1) ccount from T_Call_CallRecords where CallType=0 and DealType=1 and DATEDIFF(day, BeginTime, '" + strdate + "') = 0 group by DATEPART(HH, BeginTime) order by DATEPART(HH, BeginTime)";
  742. DataTable dtld = DbHelperSQL.Query(ldsql).Tables[0];
  743. DataTable dtjt = DbHelperSQL.Query(jtsql).Tables[0];
  744. DataTable dtly = DbHelperSQL.Query(lysql).Tables[0];
  745. DataTable dtsr = DbHelperSQL.Query(srsql).Tables[0];
  746. for (int i = 0; i < hours.Length; i++)
  747. {
  748. var drld = dtld.Select("hours='" + hours[i] + "' ");
  749. tcounts[i] = (from DataRow dr in drld select dr.Field<int>("ccount")).FirstOrDefault();
  750. var drjt = dtjt.Select("hours='" + hours[i] + "' ");
  751. ccounts[i] = (from DataRow dr in drjt select dr.Field<int>("ccount")).FirstOrDefault();
  752. var drly = dtly.Select("hours='" + hours[i] + "' ");
  753. lcounts[i] = (from DataRow dr in drly select dr.Field<int>("ccount")).FirstOrDefault();
  754. var drsr = dtsr.Select("hours='" + hours[i] + "' ");
  755. scounts[i] = (from DataRow dr in drsr select dr.Field<int>("ccount")).FirstOrDefault();
  756. gcounts[i] = tcounts[i] - ccounts[i] - lcounts[i] - scounts[i];
  757. }
  758. #region 优化前
  759. //for (int i = 0; i < hours.Length; i++)
  760. //{
  761. // string sql = " select count(1) from dbo.T_Call_CallRecords where CallType=0 and datediff(day, BeginTime, '" + strdate + "') = 0 "
  762. // + " and datepart(hh,BeginTime)=" + hours[i];
  763. // tcounts[i] = Int32.Parse(DbHelperSQL.GetSingle(sql).ToString());
  764. // sql = " select count(1) from dbo.T_Call_CallRecords where CallType=0 and datediff(day, BeginTime, '" + strdate + "') = 0 "
  765. // + " and CallState=1 and datepart(hh,BeginTime)=" + hours[i];
  766. // ccounts[i] = Int32.Parse(DbHelperSQL.GetSingle(sql).ToString());
  767. // sql = " select count(1) from dbo.T_Call_CallRecords where CallType=0 and datediff(day, BeginTime,'" + strdate + "') = 0 "
  768. // + " and DealType=4 and datepart(hh,BeginTime)=" + hours[i];
  769. // lcounts[i] = Int32.Parse(DbHelperSQL.GetSingle(sql).ToString());
  770. // sql = " select count(1) from dbo.T_Call_CallRecords where CallType=0 and datediff(day, BeginTime, '" + strdate + "') = 0 "
  771. // + " and DealType=1 and datepart(hh,BeginTime)=" + hours[i];
  772. // scounts[i] = Int32.Parse(DbHelperSQL.GetSingle(sql).ToString());
  773. // gcounts[i] = tcounts[i] - ccounts[i] - lcounts[i] - scounts[i];
  774. //}
  775. #endregion
  776. var obj = new
  777. {
  778. hours = hours,
  779. rcounts = tcounts,
  780. ccounts = ccounts,
  781. //lcounts = lcounts,
  782. gcounts = gcounts,
  783. scounts = scounts
  784. };
  785. return Success("加载成功", obj);
  786. }
  787. /// <summary>
  788. /// 获取通话数量
  789. /// </summary>
  790. /// <param name="start"></param>
  791. /// <param name="end"></param>
  792. /// <returns></returns>
  793. public ActionResult GetTelCountByDate(DateTime? date)
  794. {
  795. string where = " ";
  796. if (date == null)
  797. {
  798. date = DateTime.Now;
  799. }
  800. string strdate = date.Value.ToString("yyyy-MM-dd");
  801. where += " and datediff(day,BeginTime,'" + strdate + "')=0";
  802. //if (start == null && end == null)
  803. //{
  804. // where += " and datediff(day,BeginTime,getdate())=0";
  805. //}
  806. //else
  807. //{
  808. // if (start == null) { start = DateTime.Now; }
  809. // if (end == null) { end = DateTime.Now; }
  810. // where += $" and datediff(day,BeginTime,'{start.Value.ToString("yyyy-MM-dd")}')<=0 and datediff(day,BeginTime,'{end.Value.ToString("yyyy-MM-dd")}')>=0 ";
  811. //}
  812. //话务量
  813. //DataTable dt = DbHelperSQL.Query(" select count(1) con from T_Call_CallRecords where 1=1 " + where).Tables[0];
  814. //var hwcon = dt.Rows[0]["con"].ToString();//话务量
  815. //外呼量
  816. DataTable dt = DbHelperSQL.Query(" select count(1) con from T_Call_CallRecords where CallType=1 " + where).Tables[0];
  817. var hwcon = dt.Rows[0]["con"].ToString();//话务量
  818. //来话量
  819. DataTable dt1 = DbHelperSQL.Query(" select count(1) con from T_Call_CallRecords where CallType=0 " + where).Tables[0];
  820. var lhcon = dt1.Rows[0]["con"].ToString();//话务量
  821. //接通量,通话时长
  822. DataTable dt2 = DbHelperSQL.Query(" select count(1) con,sum(TalkLongTime) tltimes from T_Call_CallRecords where CallState=1 " + where).Tables[0];
  823. var jtcon = dt2.Rows[0]["con"].ToString();//接通量
  824. var ths = dt2.Rows[0]["tltimes"];//通话时长
  825. var thtimes = "0";
  826. if (ths != null && ths.ToString() != "")
  827. {
  828. thtimes = ths.ToString();
  829. }
  830. //string jtl = "-";//接通率
  831. //if (hwcon != "0")
  832. //{
  833. // jtl = (double.Parse(jtcon) / double.Parse(hwcon)).ToString("0.00%");
  834. //}
  835. double jtl = 0;//接通率
  836. if (hwcon != "0")
  837. {
  838. jtl = Math.Round((double.Parse(jtcon) * 100 / double.Parse(hwcon)), 2);
  839. }
  840. double pjthtimes = 0.00;//平均通话时长
  841. if (jtcon != "0")
  842. {
  843. pjthtimes = Math.Round(double.Parse(thtimes) / double.Parse(jtcon));
  844. }
  845. var obj = new
  846. {
  847. hwcon = hwcon,
  848. lhcon = lhcon,
  849. jtcon = jtcon,
  850. pjthtimes = pjthtimes,
  851. jtl = jtl,
  852. thtimes
  853. };
  854. return Success("加载成功", obj);
  855. }
  856. /// <summary>
  857. /// 坐席闲忙比例
  858. /// </summary>
  859. /// <param name="start"></param>
  860. /// <param name="end"></param>
  861. /// <returns></returns>
  862. public ActionResult GetUserStateCount24ByDate(DateTime? start, DateTime? end)
  863. {
  864. string where = " 1=1 ";
  865. if (start == null && end == null)
  866. {
  867. where += " and datediff(day,OccurTime,getdate())=0";
  868. }
  869. else
  870. {
  871. if (start == null) { start = DateTime.Now; }
  872. if (end == null) { end = DateTime.Now; }
  873. where += $" and datediff(day,OccurTime,'{start.Value.ToString("yyyy-MM-dd")}')<=0 and datediff(day,OccurTime,'{end.Value.ToString("yyyy-MM-dd")}')>=0 ";
  874. }
  875. string sql = "select hor,type,COUNT(1) con from (select datepart(hh, OccurTime) hor, State type, agentid, count(1) con "
  876. + " from rep_agent_state where " + where
  877. + " group by datepart(hh, OccurTime), State, agentid ) t group by hor, type";
  878. DataTable dt = DbHelperSQL.Query(sql).Tables[0];
  879. //int[] hours = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 };
  880. int[] hours = Enumerable.Range(0, 24).ToArray<int>();
  881. double[] kxpercents = new double[24];
  882. double[] thpercents = new double[24];
  883. double[] zmpercents = new double[24];
  884. for (int i = 0; i < hours.Length; i++)
  885. {
  886. var list = dt.Select(" hor=" + hours[i]);
  887. int con = 0;//总量
  888. foreach (var l in list)
  889. {
  890. con = con + Int32.Parse(l["con"].ToString());
  891. }
  892. //var con = list.Count() > 0 ? list[0]["con"].ToString() : "0";//总量
  893. var kxlist = dt.Select(" hor=" + hours[i] + " and type=2 ");
  894. var kxcon = kxlist.Count() > 0 ? kxlist[0]["con"].ToString() : "0";//空闲
  895. var thlist = dt.Select(" hor=" + hours[i] + " and type=3 ");
  896. var thcon = thlist.Count() > 0 ? thlist[0]["con"].ToString() : "0"; ;//通话中
  897. var hhcllist = dt.Select(" hor=" + hours[i] + " and type=4 ");
  898. var hhclcon = hhcllist.Count() > 0 ? hhcllist[0]["con"].ToString() : "0"; ;//话后处理中
  899. var xxlist = dt.Select(" hor=" + hours[i] + " and type=5 ");
  900. var xxcon = xxlist.Count() > 0 ? xxlist[0]["con"].ToString() : "0"; ;//小休
  901. var zllist = dt.Select(" hor=" + hours[i] + " and type=6 ");
  902. var zlcon = zllist.Count() > 0 ? zllist[0]["con"].ToString() : "0"; ;//被请求
  903. if (con == 0)
  904. {
  905. kxpercents[i] = 0;
  906. thpercents[i] = 0;
  907. zmpercents[i] = 0;
  908. }
  909. else
  910. {
  911. double zm = double.Parse(hhclcon) + double.Parse(xxcon) + double.Parse(zlcon);
  912. kxpercents[i] = Math.Round((double.Parse(kxcon) * 100 / con), 2);
  913. thpercents[i] = Math.Round((double.Parse(thcon) * 100 / con), 2);
  914. zmpercents[i] = Math.Round((zm * 100 / con), 2);//zmpercents[i] = Math.Round((double.Parse(xxcon) * 100 / con), 2);//2020-4-14调整置忙比例计算
  915. }
  916. }
  917. var obj = new
  918. {
  919. hours = hours,
  920. kxpercents = kxpercents,
  921. thpercents = thpercents,
  922. zmpercents = zmpercents
  923. };
  924. return Success("加载成功", obj);
  925. }
  926. #endregion
  927. #region 中心大数据---正在修改,有一部分数据没有
  928. /// <summary>
  929. /// 工单类型各数量
  930. /// </summary>
  931. /// <param name="start"></param>
  932. /// <param name="end"></param>
  933. /// <returns></returns>
  934. public ActionResult GetCenterTypeCountByDate()
  935. {
  936. string sql = " select F_Name TypeName,(select COUNT(1) from T_Wo_WorkOrder where IsDel=0 "
  937. + "and InfoTypeID=F_DictionaryValueId) Count from dbo.T_Sys_DictionaryValue whereF_DictionaryFlag='GDLX' and F_State=1 ";
  938. DataTable dt = DbHelperSQL.Query(sql).Tables[0];
  939. DataRow dr = dt.NewRow();
  940. dr["TypeName"] = "工单总计";
  941. string sqlzj = "select COUNT(1) from T_Wo_WorkOrder WITH(NOLOCK) where IsDel=0 ";
  942. dr["Count"] = DbHelperSQL.GetSingle(sqlzj).ToString();
  943. dt.Rows.InsertAt(dr, 0);
  944. DataRow dr1 = dt.NewRow();
  945. dr1["TypeName"] = "今日受理量";
  946. string sqldayaccept = "select COUNT(1) from T_Wo_WorkOrder WITH(NOLOCK) where IsDel=0 and datediff(day,CreateTime,getdate())=0 ";
  947. dr1["Count"] = DbHelperSQL.GetSingle(sqldayaccept).ToString();
  948. dt.Rows.InsertAt(dr1, 1);
  949. DataRow dr2 = dt.NewRow();
  950. dr2["TypeName"] = "今日交办量";//----没有交办数据
  951. string sqldayassign = "select COUNT(1) from T_Wo_WorkOrder WITH(NOLOCK) where IsDel=0 and datediff(day,CreateTime,getdate())=0 and isnull(F_IsResult,0)=0 and F_WorkState>1 ";
  952. dr2["Count"] = DbHelperSQL.GetSingle(sqldayassign).ToString();
  953. dt.Rows.InsertAt(dr2, 2);
  954. return Success("加载成功", dt);
  955. }
  956. /// <summary>
  957. /// 工单类型各数量(new)
  958. /// </summary>
  959. /// <param name="start"></param>
  960. /// <param name="end"></param>
  961. /// <returns></returns>
  962. public ActionResult GetTypeCountNew(string areaid)
  963. {
  964. string strwhere = "";
  965. if (!string.IsNullOrEmpty(areaid))
  966. {
  967. strwhere += " and F_SourceArea=" + areaid;
  968. }
  969. int n = Int32.Parse(DbHelperSQL.GetSingle("select COUNT(1) from T_Bus_WorkOrder where F_IsDelete=0 and isnull(F_InfoType,0)!=0" + strwhere).ToString());
  970. string sql = " select F_Value TypeName,(select COUNT(1) from T_Bus_WorkOrder where F_IsDelete=0 and datediff(day,F_CreateTime,getdate())=0"
  971. + "and F_InfoType=F_ValueId" + strwhere + ") DayCount, (select COUNT(1) from T_Bus_WorkOrder where F_IsDelete=0 and datediff(month,F_CreateTime,getdate())=0"
  972. + "and F_InfoType=F_ValueId" + strwhere + ") MonthCount, (select COUNT(1) from T_Bus_WorkOrder where F_IsDelete=0 "
  973. + "and F_InfoType=F_ValueId" + strwhere + ") TotalCount from dbo.T_Sys_DictionaryValue where F_PrentId=37 and F_State=0 order by F_Value ";
  974. DataTable dt = DbHelperSQL.Query(sql).Tables[0];
  975. dt.Columns.Add("Percent", typeof(object));
  976. foreach (DataRow drnew in dt.Rows)
  977. {
  978. if (n > 0)
  979. {
  980. drnew["Percent"] = Math.Round((double.Parse(drnew["TotalCount"].ToString()) * 100 / n), 2) + "%";
  981. }
  982. else
  983. {
  984. drnew["Percent"] = "";
  985. }
  986. }
  987. return Success("加载成功", dt);
  988. }
  989. /// <summary>
  990. /// 接通率统计
  991. /// </summary>
  992. /// <param name="start"></param>
  993. /// <param name="end"></param>
  994. /// <returns></returns>
  995. public ActionResult GetTelRate24ByDate(DateTime? date)
  996. {
  997. if (date == null)
  998. {
  999. date = DateTime.Now;
  1000. }
  1001. string strdate = date.Value.ToString("yyyy-MM-dd");
  1002. //int[] hours = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 };
  1003. int[] hours = Enumerable.Range(0, 24).ToArray<int>();
  1004. //string[] rates = new string[24];
  1005. double[] rates = new double[24];
  1006. for (int i = 0; i < hours.Length; i++)
  1007. {
  1008. string sql = " select count(1) from dbo.T_Call_CallRecords WITH(NOLOCK) where CallType=0 and CallState=1 and UserCode is not null "
  1009. + " and datediff(day, BeginTime, '" + strdate + "') = 0 and datepart(hh,BeginTime)=" + hours[i];
  1010. var c = Int32.Parse(DbHelperSQL.Query(sql).Tables[0].Rows[0][0].ToString());
  1011. sql = " select count(1) from dbo.T_Call_CallRecords WITH(NOLOCK) where CallType=0 and UserCode is not null "
  1012. + "and datediff(day, BeginTime, '" + strdate + "') = 0 and datepart(hh,BeginTime)=" + hours[i];
  1013. var t = Int32.Parse(DbHelperSQL.Query(sql).Tables[0].Rows[0][0].ToString());
  1014. //rates[i]= t > 0 ? ((double)c / t).ToString("0.00%") : "-";
  1015. rates[i] = t > 0 ? Math.Round(((double)c * 100 / t), 2) : 0;
  1016. }
  1017. var obj = new
  1018. {
  1019. hours = hours,
  1020. rates = rates
  1021. };
  1022. return Success("加载成功", obj);
  1023. }
  1024. /// <summary>
  1025. /// 平均通话时长统计
  1026. /// </summary>
  1027. /// <param name="start"></param>
  1028. /// <param name="end"></param>
  1029. /// <returns></returns>
  1030. public ActionResult GetAvgTelTime24ByDate(DateTime? date)
  1031. {
  1032. if (date == null)
  1033. {
  1034. date = DateTime.Now;
  1035. }
  1036. string strdate = date.Value.ToString("yyyy-MM-dd");
  1037. //接通量,通话时长
  1038. string sql = " select datepart(hh,BeginTime) hor,count(1) con,sum(TalkLongTime) tltimes from T_Call_CallRecords WITH(NOLOCK) where "
  1039. + "CallState=1 and datediff(day, BeginTime, '" + strdate + "') = 0 group by datepart(hh,BeginTime) ";
  1040. DataTable dt = DbHelperSQL.Query(sql).Tables[0];
  1041. //int[] hours = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 };
  1042. int[] hours = Enumerable.Range(0, 24).ToArray<int>();
  1043. double[] avgtimes = new double[24];
  1044. for (int i = 0; i < hours.Length; i++)
  1045. {
  1046. var jtlist = dt.Select(" hor=" + hours[i] + " ");
  1047. var jtcon = jtlist.Count() > 0 ? jtlist[0]["con"].ToString() : "0";
  1048. var thtimes = jtlist.Count() > 0 ? jtlist[0]["tltimes"].ToString() : "0";
  1049. double avgtime = 0.00;
  1050. if (jtcon != "0")
  1051. {
  1052. if (thtimes == "") { thtimes = "0"; }
  1053. avgtime = Math.Round(double.Parse(thtimes) / double.Parse(jtcon), 2);
  1054. }
  1055. avgtimes[i] = avgtime;
  1056. }
  1057. var obj = new
  1058. {
  1059. hours = hours,
  1060. avgtimes = avgtimes
  1061. };
  1062. return Success("加载成功", obj);
  1063. }
  1064. #endregion
  1065. #region 安全感、满意度数据大屏展示
  1066. private readonly BLL.T_Ask_QuestionItems questionItemBLL = new BLL.T_Ask_QuestionItems();
  1067. private readonly BLL.T_Sys_DictionaryValue dvItemBLL = new BLL.T_Sys_DictionaryValue();
  1068. private readonly BLL.T_Call_OutAnswers ansBLL = new BLL.T_Call_OutAnswers();
  1069. #region 社会治安安全感统计数据
  1070. /// <summary>
  1071. ///
  1072. /// </summary>
  1073. /// <param name="TaskID">任务id</param>
  1074. /// <param name="quesid">问题id</param>
  1075. /// <param name="countryid">乡镇id</param>
  1076. /// <param name="sdate">开始时间</param>
  1077. /// <param name="edate">结束时间</param>
  1078. /// <returns></returns>
  1079. public ActionResult GetAQG(string TaskID, string ques, string countryid, string sdate, string edate,int isdc=0)
  1080. {
  1081. string quesid = "52";
  1082. if (string.IsNullOrEmpty(sdate))
  1083. {
  1084. sdate = DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00";
  1085. }
  1086. if (string.IsNullOrEmpty(edate))
  1087. {
  1088. edate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1089. }
  1090. #region 新建输出表
  1091. DataTable dtnew = new DataTable();
  1092. dtnew.Columns.Add("乡镇");
  1093. var dsi = questionItemBLL.GetModelList(" F_QuestionId='" + quesid + "'");
  1094. if (dsi.Count > 0)
  1095. {
  1096. foreach (var itemconf in dsi)
  1097. {
  1098. string cname = itemconf.F_ItemName;
  1099. if (itemconf.F_ItemName.Contains ("→"))
  1100. {
  1101. int index = itemconf.F_ItemName.IndexOf("→");
  1102. cname = itemconf.F_ItemName.Substring(0,index);
  1103. }
  1104. dtnew.Columns.Add(cname);
  1105. dtnew.Columns.Add(cname + "比例");
  1106. }
  1107. }
  1108. dtnew.Columns.Add("总数");
  1109. dtnew.Columns.Add("安全感比例");
  1110. #endregion
  1111. string strtaskid = "";
  1112. if (!string.IsNullOrEmpty(TaskID))
  1113. {
  1114. strtaskid = " and F_TaskID='" + TaskID + "' ";
  1115. }
  1116. //2018-7-6
  1117. DataRow drtotal = dtnew.NewRow();
  1118. drtotal["乡镇"] = "合计";
  1119. #region 根据单位和QuestionItemID统计数量
  1120. if (string.IsNullOrEmpty(countryid))//countryid == "")//为空时统计全部乡镇信息,否则显示单个乡镇数据
  1121. {
  1122. //从数据字典表中获取乡镇信息(JBDW)
  1123. var dsc = dvItemBLL.GetModelList(" F_DictionaryFlag='XZQY'");
  1124. //var dsc = questionItemBLL.GetModelList(" F_QuestionId='34'");//获取全部乡镇
  1125. if (dsc.Count > 0)
  1126. {
  1127. foreach (var iconf in dsc)
  1128. {
  1129. DataRow dr = dtnew.NewRow();
  1130. dr["乡镇"] = iconf.F_Name;
  1131. DataSet dsa = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "' " + strtaskid);
  1132. DataTable dta = dsa.Tables[0];
  1133. if (dta.Rows.Count > 0)
  1134. {
  1135. int totalnum = 0;
  1136. decimal safenum = 0;
  1137. decimal knownnum = 0;
  1138. decimal joinnum = 0;
  1139. decimal mynum = 0;
  1140. decimal unknownnum = 0;
  1141. //获取问题各项答案数据
  1142. if (dsi.Count > 0)
  1143. {
  1144. foreach (var itemconf in dsi)
  1145. {
  1146. var dsk = ansBLL.GetRecordCount(" F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + " and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "') and F_QID='" + quesid + "' and F_QIID='" + itemconf.F_ItemId + "'");
  1147. string cname = itemconf.F_ItemName;
  1148. if (itemconf.F_ItemName.Contains("→"))
  1149. {
  1150. int index = itemconf.F_ItemName.IndexOf("→");
  1151. cname = itemconf.F_ItemName.Substring(0, index );
  1152. }
  1153. dr[cname] = dsk;
  1154. totalnum += dsk;
  1155. if (quesid == "52")
  1156. {
  1157. string qitem = itemconf.F_ItemName;
  1158. if ((qitem.Length > 1 && qitem.Substring(0, 2) == "安全") || (qitem.Length > 3 && qitem.Substring(0, 4) == "基本安全"))
  1159. {
  1160. safenum += dsk;
  1161. }
  1162. }
  1163. #region
  1164. /*else if (quesid == "50")
  1165. {
  1166. if (itemconf.F_ItemName == "参加了")
  1167. {
  1168. joinnum += dsk;
  1169. }
  1170. else if (itemconf.F_ItemName == "知道,没参加")
  1171. {
  1172. knownnum += dsk;
  1173. }
  1174. }
  1175. else if (quesid == "53")
  1176. {
  1177. if (itemconf.F_ItemName == "比较了解" || itemconf.F_ItemName == "基本了解" || itemconf.F_ItemName == "知道一些")
  1178. {
  1179. knownnum += dsk;
  1180. }
  1181. }
  1182. else if (quesid == "54")
  1183. {
  1184. if (itemconf.F_ItemName == "非常满意" || itemconf.F_ItemName == "一般满意")
  1185. {
  1186. mynum += dsk;
  1187. }
  1188. else if (itemconf.F_ItemName == "不知道")
  1189. {
  1190. unknownnum += dsk;
  1191. }
  1192. }*/
  1193. #endregion
  1194. }
  1195. dr["总数"] = totalnum;
  1196. //公众安全感需加安全感指数
  1197. if (quesid == "52")
  1198. {
  1199. foreach (var itemconf in dsi)
  1200. {
  1201. if (totalnum > 0)
  1202. {
  1203. string cname = itemconf.F_ItemName;
  1204. if (itemconf.F_ItemName.Contains("→"))
  1205. {
  1206. int index = itemconf.F_ItemName.IndexOf("→");
  1207. cname = itemconf.F_ItemName.Substring(0, index );
  1208. }
  1209. dr[cname + "比例"] = Math.Round(decimal.Parse(dr[cname ].ToString()) / totalnum * 100, 2).ToString() + "%";
  1210. }
  1211. else
  1212. {
  1213. string cname = itemconf.F_ItemName;
  1214. if (itemconf.F_ItemName.Contains("→"))
  1215. {
  1216. int index = itemconf.F_ItemName.IndexOf("→");
  1217. cname = itemconf.F_ItemName.Substring(0, index);
  1218. }
  1219. dr[cname + "比例"] = 0;
  1220. }
  1221. }
  1222. if (totalnum > 0)
  1223. {
  1224. dr["安全感比例"] = Math.Round(safenum / totalnum * 100, 2).ToString() + "%";//安全感=(安全+基本安全)/成功总数
  1225. }
  1226. else
  1227. {
  1228. dr["安全感比例"] = 0;
  1229. }
  1230. }
  1231. //平安建设知晓率需加知晓率和参与率
  1232. /*if (quesid == "50")
  1233. {
  1234. if (totalnum > 0)
  1235. {
  1236. dr["知晓率"] = Math.Round((knownnum + joinnum) / totalnum * 100, 2).ToString() + "%";//知晓率=(参加过+知道没参加)/成功总数
  1237. dr["参与率"] = Math.Round(joinnum / totalnum * 100, 2).ToString() + "%";//参与率=参加过/成功总数
  1238. }
  1239. else
  1240. {
  1241. dr["知晓率"] = 0;
  1242. dr["参与率"] = 0;
  1243. }
  1244. }
  1245. if (quesid == "53")
  1246. {
  1247. if (totalnum > 0)
  1248. {
  1249. dr["知晓率"] = Math.Round(knownnum / totalnum * 100, 2).ToString() + "%";//知晓率=(参加过+知道没参加)/成功总数
  1250. }
  1251. else
  1252. {
  1253. dr["知晓率"] = 0;
  1254. }
  1255. }
  1256. if (quesid == "54")
  1257. {
  1258. if (totalnum - unknownnum > 0)
  1259. {
  1260. dr["满意度"] = Math.Round(mynum / (totalnum - unknownnum) * 100, 2).ToString() + "%";//知晓率=(参加过+知道没参加)/成功总数
  1261. }
  1262. else
  1263. {
  1264. dr["满意度"] = 0;
  1265. }
  1266. }*/
  1267. dtnew.Rows.Add(dr);
  1268. }
  1269. }
  1270. }
  1271. }
  1272. }
  1273. else//SELECT COUNT(1) as buanquanshu FROM T_Call_OutAnswers WHERE F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where F_OptOn between '" + startdate + "' and '" + enddate + "' and F_QID=102 and F_QIID=101) and F_QID=102 and F_QIID=101
  1274. {
  1275. string contyname = "";
  1276. var dsn = dvItemBLL.GetModelList(" F_DictionaryValueId='" + countryid + "'");
  1277. if (dsn.Count > 0)
  1278. {
  1279. contyname = dsn[0].F_Name;// iconf.F_Name;
  1280. }
  1281. DataRow dr = dtnew.NewRow();
  1282. //根据id获取单位名和总数,因为按F_Answer分组此项值已固定,所以查询最多只有一行数据,固定取第一行
  1283. //select count(F_Expand3),F_Answer from T_Call_OutAnswers where F_TaskID='1' and F_OptOn between '2018-02-03' and '2018-06-25' and F_QIID='167' GROUP BY F_Answer
  1284. DataSet dsa = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 and ltrim(rtrim(F_Answer))='" + contyname + "'"+ strtaskid);
  1285. DataTable dta = dsa.Tables[0];
  1286. if (dta.Rows.Count > 0)
  1287. {
  1288. dr["乡镇"] = contyname;// dta.Rows[0][1].ToString();
  1289. //dr["总数"] = dta.Rows[0][0].ToString();
  1290. int totalnum = 0;
  1291. decimal safenum = 0;
  1292. decimal knownnum = 0;
  1293. decimal joinnum = 0;
  1294. decimal mynum = 0;
  1295. //获取问题各项答案数据
  1296. if (dsi.Count > 0)
  1297. {
  1298. foreach (var itemconf in dsi)
  1299. {
  1300. var dsc = ansBLL.GetRecordCount(" F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where F_TaskID='" + TaskID + "' and DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + " and ltrim(rtrim(F_Answer))='" + contyname + "') and F_QID='" + quesid + "' and F_QIID='" + itemconf.F_ItemId + "'");
  1301. string cname = itemconf.F_ItemName;
  1302. if (itemconf.F_ItemName.Contains("→"))
  1303. {
  1304. int index = itemconf.F_ItemName.IndexOf("→");
  1305. cname = itemconf.F_ItemName.Substring(0, index );
  1306. }
  1307. dr[cname ] = dsc;
  1308. totalnum += dsc;
  1309. if (quesid == "52")
  1310. {
  1311. string qitem = itemconf.F_ItemName;
  1312. if ((qitem.Length > 1 && qitem.Substring(0, 2) == "安全") || (qitem.Length > 3 && qitem.Substring(0, 4) == "基本安全"))
  1313. {
  1314. safenum += dsc;
  1315. }
  1316. }
  1317. #region
  1318. /*else if (quesid == "50" || quesid == "新增")
  1319. {
  1320. if (itemconf.F_ItemName == "参加了")
  1321. {
  1322. joinnum += dsc;
  1323. }
  1324. else if (itemconf.F_ItemName == "知道,没参加")
  1325. {
  1326. knownnum += dsc;
  1327. }
  1328. }
  1329. else if (quesid == "53")
  1330. {
  1331. if (itemconf.F_ItemName == "比较了解" || itemconf.F_ItemName == "基本了解" || itemconf.F_ItemName == "知道一些")
  1332. {
  1333. knownnum += dsc;
  1334. }
  1335. }
  1336. else if (quesid == "54")
  1337. {
  1338. if (itemconf.F_ItemName == "非常满意" || itemconf.F_ItemName == "一般满意")
  1339. {
  1340. mynum += dsc;
  1341. }
  1342. }*/
  1343. #endregion
  1344. }
  1345. dr["总数"] = totalnum;
  1346. //公众安全感需加安全感指数
  1347. if (quesid == "52")
  1348. {
  1349. foreach (var itemconf in dsi)
  1350. {
  1351. if (totalnum > 0)
  1352. {
  1353. string cname = itemconf.F_ItemName;
  1354. if (itemconf.F_ItemName.Contains("→"))
  1355. {
  1356. int index = itemconf.F_ItemName.IndexOf("→");
  1357. cname = itemconf.F_ItemName.Substring(0, index);
  1358. }
  1359. dr[cname + "比例"] = Math.Round(decimal.Parse(dr[itemconf.F_ItemName].ToString()) / totalnum * 100, 2).ToString() + "%";
  1360. }
  1361. else
  1362. {
  1363. string cname = itemconf.F_ItemName;
  1364. if (itemconf.F_ItemName.Contains("→"))
  1365. {
  1366. int index = itemconf.F_ItemName.IndexOf("→");
  1367. cname = itemconf.F_ItemName.Substring(0, index);
  1368. }
  1369. dr[cname + "比例"] = 0;
  1370. }
  1371. }
  1372. if (totalnum > 0)
  1373. {
  1374. dr["安全感比例"] = Math.Round(safenum / totalnum * 100, 2).ToString() + "%";//安全感=(安全+基本安全)/成功总数
  1375. }
  1376. else
  1377. {
  1378. dr["安全感比例"] = 0;
  1379. }
  1380. }
  1381. //平安建设知晓率需加知晓率和参与率
  1382. /*if (quesid == "50")
  1383. {
  1384. if (totalnum > 0)
  1385. {
  1386. dr["知晓率"] = Math.Round((knownnum + joinnum) / totalnum * 100, 2).ToString() + "%";//知晓率=(参加过+知道没参加)/成功总数
  1387. dr["参与率"] = Math.Round(joinnum / totalnum * 100, 2).ToString() + "%";//参与率=参加过/成功总数
  1388. }
  1389. else
  1390. {
  1391. dr["知晓率"] = 0;
  1392. dr["参与率"] = 0;
  1393. }
  1394. }
  1395. if (quesid == "53")
  1396. {
  1397. if (totalnum > 0)
  1398. {
  1399. dr["知晓率"] = Math.Round(knownnum / totalnum * 100, 2).ToString() + "%";//知晓率=(参加过+知道没参加)/成功总数
  1400. }
  1401. else
  1402. {
  1403. dr["知晓率"] = 0;
  1404. }
  1405. }
  1406. if (quesid == "54")
  1407. {
  1408. if (totalnum > 0)
  1409. {
  1410. dr["满意度"] = Math.Round(mynum / totalnum * 100, 2).ToString() + "%";//知晓率=(参加过+知道没参加)/成功总数
  1411. }
  1412. else
  1413. {
  1414. dr["满意度"] = 0;
  1415. }
  1416. }*/
  1417. dtnew.Rows.Add(dr);
  1418. }
  1419. }
  1420. }
  1421. if (dsi.Count > 0)
  1422. {
  1423. foreach (var itemconf in dsi)
  1424. {
  1425. if (quesid == "52")
  1426. {
  1427. if (!itemconf.F_ItemName .Contains ("比例"))
  1428. {
  1429. string cname = itemconf.F_ItemName;
  1430. if (itemconf.F_ItemName.Contains("→"))
  1431. {
  1432. int index = itemconf.F_ItemName.IndexOf("→");
  1433. cname = itemconf.F_ItemName.Substring(0, index);
  1434. }
  1435. drtotal[cname ] = ColumnSum(dtnew, itemconf.F_ItemName);
  1436. // drtotal[cname + "比例"] = ColumnSum(dtnew, itemconf.F_ItemName);
  1437. }
  1438. else
  1439. {
  1440. string cname = itemconf.F_ItemName;
  1441. if (itemconf.F_ItemName.Contains("→"))
  1442. {
  1443. int index = itemconf.F_ItemName.IndexOf("→");
  1444. cname = itemconf.F_ItemName.Substring(0, index);
  1445. }
  1446. drtotal[cname +"比例"] = 0;
  1447. }
  1448. }
  1449. /*else if (quesid == "50")
  1450. {
  1451. if (itemconf.F_ItemName != "知晓率" && itemconf.F_ItemName != "参与率")
  1452. {
  1453. drtotal[itemconf.F_ItemName] = ColumnSum(dtnew, itemconf.F_ItemName);
  1454. }
  1455. else
  1456. {
  1457. drtotal[itemconf.F_ItemName] = "";
  1458. }
  1459. }
  1460. else if (quesid == "53")
  1461. {
  1462. if (itemconf.F_ItemName != "知晓率")
  1463. {
  1464. drtotal[itemconf.F_ItemName] = ColumnSum(dtnew, itemconf.F_ItemName);
  1465. }
  1466. else
  1467. {
  1468. drtotal[itemconf.F_ItemName] = "";
  1469. }
  1470. }
  1471. else if (quesid == "54")
  1472. {
  1473. if (itemconf.F_ItemName != "满意度")
  1474. {
  1475. drtotal[itemconf.F_ItemName] = ColumnSum(dtnew, itemconf.F_ItemName);
  1476. }
  1477. else
  1478. {
  1479. drtotal[itemconf.F_ItemName] = "";
  1480. }
  1481. }*/
  1482. else
  1483. {
  1484. string cname = itemconf.F_ItemName;
  1485. if (itemconf.F_ItemName.Contains("→"))
  1486. {
  1487. int index = itemconf.F_ItemName.IndexOf("→");
  1488. cname = itemconf.F_ItemName.Substring(0, index);
  1489. }
  1490. drtotal[cname ] = ColumnSum(dtnew, itemconf.F_ItemName);
  1491. }
  1492. }
  1493. }
  1494. //if (quesid == "1" || quesid == "50")
  1495. //{ drtotal["总数"] = ColumnSum(dtnew, "总数"); }
  1496. drtotal["总数"] = ColumnSum(dtnew, "总数");
  1497. #region 计算总的知晓率等
  1498. if (quesid == "52")
  1499. {
  1500. decimal aqg = decimal.Parse(drtotal[1].ToString()) + decimal.Parse(drtotal[3].ToString());
  1501. if (decimal.Parse(drtotal["总数"].ToString()) > 0)
  1502. {
  1503. drtotal["安全感比例"] = Math.Round(aqg / decimal.Parse(drtotal["总数"].ToString()) * 100, 2).ToString() + "%";
  1504. }
  1505. else
  1506. {
  1507. drtotal["安全感比例"] = 0;
  1508. }
  1509. }
  1510. /*else if (quesid == "50")
  1511. {
  1512. if (decimal.Parse(drtotal["总数"].ToString()) > 0)
  1513. {
  1514. drtotal["知晓率"] = Math.Round(decimal.Parse(drtotal["知道,没参加"].ToString()) / decimal.Parse(drtotal["总数"].ToString()) * 100, 2).ToString() + "%";
  1515. drtotal["参与率"] = Math.Round(decimal.Parse(drtotal["参加了"].ToString()) / decimal.Parse(drtotal["总数"].ToString()) * 100, 2).ToString() + "%";
  1516. }
  1517. }
  1518. else if (quesid == "53")
  1519. {
  1520. decimal aqg = decimal.Parse(drtotal["比较了解"].ToString()) + decimal.Parse(drtotal["基本了解"].ToString()) + decimal.Parse(drtotal["知道一些"].ToString());
  1521. if (decimal.Parse(drtotal["总数"].ToString()) > 0)
  1522. {
  1523. drtotal["知晓率"] = Math.Round(aqg / decimal.Parse(drtotal["总数"].ToString()) * 100, 2).ToString() + "%";
  1524. }
  1525. }
  1526. else if (quesid == "54")
  1527. {
  1528. decimal aqg = decimal.Parse(drtotal["非常满意"].ToString()) + decimal.Parse(drtotal["一般满意"].ToString());
  1529. if (decimal.Parse(drtotal["总数"].ToString()) > 0)
  1530. {
  1531. drtotal["满意度"] = Math.Round(aqg / decimal.Parse(drtotal["总数"].ToString()) * 100, 2).ToString() + "%";
  1532. }
  1533. }*/
  1534. #endregion
  1535. dtnew.Rows.Add(drtotal);
  1536. dtnew.DefaultView.Sort = "总数 DESC";
  1537. dtnew = dtnew.DefaultView.ToTable();
  1538. if (isdc == 0)
  1539. {
  1540. return Success("获取安全感数据成功", dtnew);
  1541. }
  1542. else
  1543. {
  1544. string sedate = DateTime.Parse (sdate).ToString ("yyyy-MM-dd");
  1545. if (sdate != edate)
  1546. {
  1547. sedate = DateTime.Parse(sdate).ToString("yyyy-MM-dd") + "---" + DateTime.Parse(edate).ToString("yyyy-MM-dd");
  1548. }
  1549. NPOIHelper npoi = new NPOIHelper();
  1550. if (npoi.ExportToExcel2("社会治安安全感" + sedate, dtnew, null) == "")
  1551. {
  1552. return Success("导出成功");
  1553. }
  1554. else
  1555. {
  1556. return Error("导出失败");
  1557. }
  1558. }
  1559. #endregion
  1560. }
  1561. #endregion
  1562. #region 计算数据列和
  1563. double ColumnSum(DataTable dt, string ColumnName)
  1564. {
  1565. double d = 0;
  1566. foreach (DataRow row in dt.Rows)
  1567. {
  1568. string cname = ColumnName;
  1569. if (ColumnName.Contains("→"))
  1570. {
  1571. int index = ColumnName.IndexOf("→");
  1572. cname = ColumnName.Substring(0, index);
  1573. }
  1574. d += double.Parse(row[cname ].ToString());
  1575. }
  1576. return d;
  1577. }
  1578. #endregion
  1579. #region 政法机关执法满意度报表
  1580. /// <summary>
  1581. /// 政法机关执法满意度报表
  1582. /// </summary>
  1583. /// <param name="TaskID">任务id</param>
  1584. /// <param name="quesid">问题id</param>
  1585. /// <param name="countryid">乡镇id</param>
  1586. /// <param name="sdate">开始时间</param>
  1587. /// <param name="edate">结束时间</param>
  1588. /// <returns></returns>
  1589. public ActionResult GetMYD(string TaskID, string sdate, string edate,string countyid,int isdc=0)
  1590. {
  1591. if (string.IsNullOrEmpty(sdate))
  1592. {
  1593. sdate = DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00";
  1594. }
  1595. if (string.IsNullOrEmpty(edate))
  1596. {
  1597. edate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1598. }
  1599. #region 新建输出表
  1600. DataTable dtnew = new DataTable();
  1601. #endregion
  1602. #region 添加列
  1603. dtnew.Columns.Add("分类" );
  1604. dtnew.Columns.Add("公安局");
  1605. dtnew.Columns.Add("检察院");
  1606. dtnew.Columns.Add("法院");
  1607. dtnew.Columns.Add("司法局");
  1608. dtnew.Rows.Add();
  1609. dtnew.Rows [0][0]="满意数量";
  1610. dtnew.Rows.Add();
  1611. dtnew.Rows[1][0] = "比较满意数量";
  1612. dtnew.Rows.Add();
  1613. dtnew.Rows[2][0] = "不太满意数量";
  1614. dtnew.Rows.Add();
  1615. dtnew.Rows[3][0] = "不满意数量";
  1616. dtnew.Rows.Add();
  1617. dtnew.Rows[4][0] = "不了解数量";
  1618. dtnew.Rows.Add();
  1619. dtnew.Rows[5][0] = "总计";
  1620. dtnew.Rows.Add();
  1621. dtnew.Rows[6][0] = "满意度";
  1622. #endregion
  1623. string strtaskid = "";
  1624. if (!string.IsNullOrEmpty(TaskID))
  1625. {
  1626. strtaskid = " and F_TaskID='" + TaskID + "' ";
  1627. }
  1628. //从数据字典表中获取乡镇信息(JBDW)
  1629. var ds = dvItemBLL.GetModelList(" F_DictionaryFlag='XZQY'");
  1630. if (!string.IsNullOrEmpty(countyid))
  1631. {
  1632. ds= dvItemBLL.GetModelList(" F_DictionaryValueId="+ countyid);
  1633. }
  1634. if (ds.Count > 0)
  1635. {
  1636. foreach (var iconf in ds)
  1637. {
  1638. #region 根据单位和满意度统计数量
  1639. DataSet dsa = DbHelperSQL.Query("select isnull(SUM(case when F_QIID=262 then 1 else 0 end),0) as MY,isnull(SUM(case when F_QIID=263 then 1 else 0 end),0) as JBMY,isnull(SUM(case when F_QIID=264 then 1 else 0 end),0) as BTMY,isnull(SUM(case when F_QIID=265 then 1 else 0 end),0) as BMY,isnull(SUM(case when F_QIID=266 then 1 else 0 end),0) as BLJ,COUNT (F_Expand3) AS ZJ from T_Call_OutAnswers where F_QID=56 and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + " and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "')");
  1640. DataTable dta = dsa.Tables[0];
  1641. if (dta.Rows.Count > 0)
  1642. {
  1643. dtnew.Rows[0][1] = int.Parse(dtnew.Rows[0][1].ToString()==""?"0": dtnew.Rows[0][1].ToString()) +int.Parse (dta.Rows[0]["MY"].ToString());
  1644. dtnew.Rows[1][1] = int.Parse(dtnew.Rows[1][1].ToString() == "" ? "0" : dtnew.Rows[1][1].ToString()) + int.Parse(dta.Rows[0]["JBMY"].ToString());
  1645. dtnew.Rows[2][1] = int.Parse(dtnew.Rows[2][1].ToString() == "" ? "0" : dtnew.Rows[2][1].ToString()) + int.Parse(dta.Rows[0]["BTMY"].ToString());
  1646. dtnew.Rows[3][1] = int.Parse(dtnew.Rows[3][1].ToString() == "" ? "0" : dtnew.Rows[3][1].ToString()) + int.Parse(dta.Rows[0]["BMY"].ToString());
  1647. dtnew.Rows[4][1] = int.Parse(dtnew.Rows[4][1].ToString() == "" ? "0" : dtnew.Rows[4][1].ToString()) + int.Parse(dta.Rows[0]["BLJ"].ToString());
  1648. dtnew.Rows[5][1] = int.Parse(dtnew.Rows[5][1].ToString() == "" ? "0" : dtnew.Rows[5][1].ToString()) + int.Parse(dta.Rows[0]["ZJ"].ToString());
  1649. decimal my = Convert.ToDecimal(dtnew.Rows[0][1]) + Convert.ToDecimal(dtnew.Rows[1][1]);
  1650. decimal zj = Convert.ToDecimal(dtnew.Rows[5][1]) - Convert.ToDecimal(dtnew.Rows[4][1]);
  1651. if (zj > 0)
  1652. {
  1653. dtnew.Rows[6][1] = Math.Round((my / zj * 100), 2) + "%";
  1654. }
  1655. else
  1656. {
  1657. dtnew.Rows[6][1] = 0;
  1658. }
  1659. }
  1660. //检察院
  1661. DataSet dsb = DbHelperSQL.Query("select isnull(SUM(case when F_QIID=276 then 1 else 0 end),0) as MY,isnull(SUM(case when F_QIID=277 then 1 else 0 end),0) as JBMY,isnull(SUM(case when F_QIID=278 then 1 else 0 end),0) as BTMY,isnull(SUM(case when F_QIID=279 then 1 else 0 end),0) as BMY,isnull(SUM(case when F_QIID=280 then 1 else 0 end),0) as BLJ,COUNT (F_Expand3) AS ZJ from T_Call_OutAnswers where F_QID=58 and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + "and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "')");
  1662. DataTable dtb = dsb.Tables[0];
  1663. if (dtb.Rows.Count > 0)
  1664. {
  1665. dtnew.Rows[0][2] = int.Parse(dtnew.Rows[0][2].ToString() == "" ? "0" : dtnew.Rows[0][2].ToString()) + int.Parse(dtb.Rows[0]["MY"].ToString());
  1666. dtnew.Rows[1][2] = int.Parse(dtnew.Rows[1][2].ToString() == "" ? "0" : dtnew.Rows[1][2].ToString()) + int.Parse(dtb.Rows[0]["JBMY"].ToString());
  1667. dtnew.Rows[2][2] = int.Parse(dtnew.Rows[2][2].ToString() == "" ? "0" : dtnew.Rows[2][2].ToString()) + int.Parse(dtb.Rows[0]["BTMY"].ToString());
  1668. dtnew.Rows[3][2] = int.Parse(dtnew.Rows[3][2].ToString() == "" ? "0" : dtnew.Rows[3][2].ToString()) + int.Parse(dtb.Rows[0]["BMY"].ToString());
  1669. dtnew.Rows[4][2] = int.Parse(dtnew.Rows[4][2].ToString() == "" ? "0" : dtnew.Rows[4][2].ToString()) + int.Parse(dtb.Rows[0]["BLJ"].ToString());
  1670. dtnew.Rows[5][2] = int.Parse(dtnew.Rows[5][2].ToString() == "" ? "0" : dtnew.Rows[5][2].ToString()) + int.Parse(dtb.Rows[0]["ZJ"].ToString());
  1671. decimal my = Convert.ToDecimal(dtnew.Rows[0][2]) + Convert.ToDecimal(dtnew.Rows[1][2]);
  1672. decimal zj = Convert.ToDecimal(dtnew.Rows[5][2]) - Convert.ToDecimal(dtnew.Rows[4][2]);
  1673. if (zj > 0)
  1674. {
  1675. dtnew.Rows[6][2] = Math.Round((my / zj * 100), 2) + "%";
  1676. }
  1677. else
  1678. {
  1679. dtnew.Rows[6][2] = 0;
  1680. }
  1681. }
  1682. //法
  1683. DataSet dsc = DbHelperSQL.Query("select isnull(SUM(case when F_QIID=290 then 1 else 0 end),0) as MY,isnull(SUM(case when F_QIID=291 then 1 else 0 end),0) as JBMY,isnull(SUM(case when F_QIID=292 then 1 else 0 end),0) as BTMY,isnull(SUM(case when F_QIID=293 then 1 else 0 end),0) as BMY,isnull(SUM(case when F_QIID=294 then 1 else 0 end),0) as BLJ,COUNT (F_Expand3) AS ZJ from T_Call_OutAnswers where F_QID=60 and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + " and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "')");
  1684. DataTable dtc = dsc.Tables[0];
  1685. if (dtc.Rows.Count > 0)
  1686. {
  1687. dtnew.Rows[0][3] = int.Parse(dtnew.Rows[0][3].ToString() == "" ? "0" : dtnew.Rows[0][3].ToString()) + int.Parse(dtc.Rows[0]["MY"].ToString());
  1688. dtnew.Rows[1][3] = int.Parse(dtnew.Rows[1][3].ToString() == "" ? "0" : dtnew.Rows[1][3].ToString()) + int.Parse(dtc.Rows[0]["JBMY"].ToString());
  1689. dtnew.Rows[2][3] = int.Parse(dtnew.Rows[2][3].ToString() == "" ? "0" : dtnew.Rows[2][3].ToString()) + int.Parse(dtc.Rows[0]["BTMY"].ToString());
  1690. dtnew.Rows[3][3] = int.Parse(dtnew.Rows[3][3].ToString() == "" ? "0" : dtnew.Rows[3][3].ToString()) + int.Parse(dtc.Rows[0]["BMY"].ToString());
  1691. dtnew.Rows[4][3] = int.Parse(dtnew.Rows[4][3].ToString() == "" ? "0" : dtnew.Rows[4][3].ToString()) + int.Parse(dtc.Rows[0]["BLJ"].ToString());
  1692. dtnew.Rows[5][3] = int.Parse(dtnew.Rows[5][3].ToString() == "" ? "0" : dtnew.Rows[5][3].ToString()) + int.Parse(dtc.Rows[0]["ZJ"].ToString());
  1693. decimal my = Convert.ToDecimal(dtnew.Rows[0][3]) + Convert.ToDecimal(dtnew.Rows[1][3]);
  1694. decimal zj = Convert.ToDecimal(dtnew.Rows[5][3]) - Convert.ToDecimal(dtnew.Rows[4][3]);
  1695. if (zj > 0)
  1696. {
  1697. dtnew.Rows[6][3] = Math.Round((my / zj * 100), 2) + "%";
  1698. }
  1699. else
  1700. {
  1701. dtnew.Rows[6][3] = 0;
  1702. }
  1703. }
  1704. //司法局
  1705. DataSet dsd = DbHelperSQL.Query("select isnull(SUM(case when F_QIID=304 then 1 else 0 end),0) as MY,isnull(SUM(case when F_QIID=305 then 1 else 0 end),0) as JBMY,isnull(SUM(case when F_QIID=306 then 1 else 0 end),0) as BTMY,isnull(SUM(case when F_QIID=307 then 1 else 0 end),0) as BMY,isnull(SUM(case when F_QIID=308 then 1 else 0 end),0) as BLJ,COUNT (F_Expand3) AS ZJ from T_Call_OutAnswers where F_QID=62 and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + "and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "')");
  1706. DataTable dtd = dsd.Tables[0];
  1707. if (dtd.Rows.Count > 0)
  1708. {
  1709. dtnew.Rows[0][4] = int.Parse(dtnew.Rows[0][4].ToString() == "" ? "0" : dtnew.Rows[0][4].ToString()) + int.Parse(dtd.Rows[0]["MY"].ToString());
  1710. dtnew.Rows[1][4] = int.Parse(dtnew.Rows[1][4].ToString() == "" ? "0" : dtnew.Rows[1][4].ToString()) + int.Parse(dtd.Rows[0]["JBMY"].ToString());
  1711. dtnew.Rows[2][4] = int.Parse(dtnew.Rows[2][4].ToString() == "" ? "0" : dtnew.Rows[2][4].ToString()) + int.Parse(dtd.Rows[0]["BTMY"].ToString());
  1712. dtnew.Rows[3][4] = int.Parse(dtnew.Rows[3][4].ToString() == "" ? "0" : dtnew.Rows[3][4].ToString()) + int.Parse(dtd.Rows[0]["BMY"].ToString());
  1713. dtnew.Rows[4][4] = int.Parse(dtnew.Rows[4][4].ToString() == "" ? "0" : dtnew.Rows[4][4].ToString()) + int.Parse(dtd.Rows[0]["BLJ"].ToString());
  1714. dtnew.Rows[5][4] = int.Parse(dtnew.Rows[5][4].ToString() == "" ? "0" : dtnew.Rows[5][4].ToString()) + int.Parse(dtd.Rows[0]["ZJ"].ToString());
  1715. decimal my = Convert.ToDecimal(dtnew.Rows[0][4]) + Convert.ToDecimal(dtnew.Rows[1][4]);
  1716. decimal zj = Convert.ToDecimal(dtnew.Rows[5][4]) - Convert.ToDecimal(dtnew.Rows[4][4]);
  1717. if (zj > 0)
  1718. {
  1719. dtnew.Rows[6][4] = Math.Round((my / zj * 100), 2) + "%";
  1720. }
  1721. else
  1722. {
  1723. dtnew.Rows[6][4] = 0;
  1724. }
  1725. }
  1726. #endregion
  1727. }
  1728. }
  1729. if(isdc ==0)
  1730. {
  1731. return Success("获取政法机关执法满意度数据成功", dtnew);
  1732. }
  1733. else
  1734. {
  1735. string sedate = DateTime.Parse(sdate).ToString("yyyy-MM-dd");
  1736. if (sdate != edate)
  1737. {
  1738. sedate = DateTime.Parse(sdate).ToString("yyyy-MM-dd") + "---" + DateTime.Parse(edate).ToString("yyyy-MM-dd");
  1739. }
  1740. NPOIHelper npoi = new NPOIHelper();
  1741. if (npoi.ExportToExcel2("政法机关执法满意度" + sedate, dtnew, null) == "")
  1742. {
  1743. return Success("导出成功");
  1744. }
  1745. else
  1746. {
  1747. return Error("导出失败");
  1748. }
  1749. }
  1750. }
  1751. public ActionResult GetMYDB(string TaskID, string sdate, string edate, string countyid)
  1752. {
  1753. if (string.IsNullOrEmpty(sdate))
  1754. {
  1755. sdate = DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00";
  1756. }
  1757. if (string.IsNullOrEmpty(edate))
  1758. {
  1759. edate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1760. }
  1761. #region 新建输出表
  1762. DataTable dtnew = new DataTable();
  1763. #endregion
  1764. #region 添加列
  1765. dtnew.Columns.Add("分类");
  1766. dtnew.Columns.Add("公安局");
  1767. dtnew.Columns.Add("检察院");
  1768. dtnew.Columns.Add("法院");
  1769. dtnew.Columns.Add("司法局");
  1770. dtnew.Rows.Add();
  1771. dtnew.Rows[0][0] = "满意数量";
  1772. dtnew.Rows.Add();
  1773. dtnew.Rows[1][0] = "比较满意数量";
  1774. dtnew.Rows.Add();
  1775. dtnew.Rows[2][0] = "不太满意数量";
  1776. dtnew.Rows.Add();
  1777. dtnew.Rows[3][0] = "不满意数量";
  1778. dtnew.Rows.Add();
  1779. dtnew.Rows[4][0] = "不了解数量";
  1780. dtnew.Rows.Add();
  1781. dtnew.Rows[5][0] = "总计";
  1782. dtnew.Rows.Add();
  1783. dtnew.Rows[6][0] = "满意度";
  1784. #endregion
  1785. string strtaskid = "";
  1786. if (!string.IsNullOrEmpty(TaskID))
  1787. {
  1788. strtaskid = " and F_TaskID='" + TaskID + "' ";
  1789. }
  1790. //从数据字典表中获取乡镇信息(JBDW)
  1791. var ds = dvItemBLL.GetModelList(" F_DictionaryFlag='XZQY'");
  1792. if (!string.IsNullOrEmpty(countyid))
  1793. {
  1794. ds = dvItemBLL.GetModelList(" F_DictionaryValueId=" + countyid);
  1795. }
  1796. if (ds.Count > 0)
  1797. {
  1798. foreach (var iconf in ds)
  1799. {
  1800. #region 根据单位和满意度统计数量
  1801. DataSet dsa = DbHelperSQL.Query("select isnull(SUM(case when F_QIID=262 then 1 else 0 end),0) as MY,isnull(SUM(case when F_QIID=263 then 1 else 0 end),0) as JBMY,isnull(SUM(case when F_QIID=264 then 1 else 0 end),0) as BTMY,isnull(SUM(case when F_QIID=265 then 1 else 0 end),0) as BMY,isnull(SUM(case when F_QIID=266 then 1 else 0 end),0) as BLJ,COUNT (F_Expand3) AS ZJ from T_Call_OutAnswers where F_QID=56 and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + " and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "')");
  1802. DataTable dta = dsa.Tables[0];
  1803. if (dta.Rows.Count > 0)
  1804. {
  1805. dtnew.Rows[0][1] = dta.Rows[0]["MY"].ToString();
  1806. dtnew.Rows[1][1] = dta.Rows[0]["JBMY"].ToString();
  1807. dtnew.Rows[2][1] = dta.Rows[0]["BTMY"].ToString();
  1808. dtnew.Rows[3][1] = dta.Rows[0]["BMY"].ToString();
  1809. dtnew.Rows[4][1] = dta.Rows[0]["BLJ"].ToString();
  1810. dtnew.Rows[5][1] = dta.Rows[0]["ZJ"].ToString();
  1811. decimal my = Convert.ToDecimal(dta.Rows[0]["MY"]) + Convert.ToDecimal(dta.Rows[0]["JBMY"]);
  1812. decimal zj = Convert.ToDecimal(dta.Rows[0]["ZJ"]) - Convert.ToDecimal(dta.Rows[0]["BLJ"]);
  1813. if (zj > 0)
  1814. {
  1815. dtnew.Rows[6][1] = Math.Round((my / zj * 100), 2) + "%";
  1816. }
  1817. else
  1818. {
  1819. dtnew.Rows[6][1] = 0;
  1820. }
  1821. }
  1822. //检察院
  1823. DataSet dsb = DbHelperSQL.Query("select isnull(SUM(case when F_QIID=276 then 1 else 0 end),0) as MY,isnull(SUM(case when F_QIID=277 then 1 else 0 end),0) as JBMY,isnull(SUM(case when F_QIID=278 then 1 else 0 end),0) as BTMY,isnull(SUM(case when F_QIID=279 then 1 else 0 end),0) as BMY,isnull(SUM(case when F_QIID=280 then 1 else 0 end),0) as BLJ,COUNT (F_Expand3) AS ZJ from T_Call_OutAnswers where F_QID=58 and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + "and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "')");
  1824. DataTable dtb = dsb.Tables[0];
  1825. if (dtb.Rows.Count > 0)
  1826. {
  1827. dtnew.Rows[0][2] = dtb.Rows[0]["MY"].ToString();
  1828. dtnew.Rows[1][2] = dtb.Rows[0]["JBMY"].ToString();
  1829. dtnew.Rows[2][2] = dtb.Rows[0]["BTMY"].ToString();
  1830. dtnew.Rows[3][2] = dtb.Rows[0]["BMY"].ToString();
  1831. dtnew.Rows[4][2] = dtb.Rows[0]["BLJ"].ToString();
  1832. dtnew.Rows[5][2] = dtb.Rows[0]["ZJ"].ToString();
  1833. decimal my = Convert.ToDecimal(dtb.Rows[0]["MY"]) + Convert.ToDecimal(dtb.Rows[0]["JBMY"]);
  1834. decimal zj = Convert.ToDecimal(dtb.Rows[0]["ZJ"]) - Convert.ToDecimal(dtb.Rows[0]["BLJ"]);
  1835. if (zj > 0)
  1836. {
  1837. dtnew.Rows[6][2] = Math.Round((my / zj * 100), 2) + "%";
  1838. }
  1839. else
  1840. {
  1841. dtnew.Rows[6][2] = 0;
  1842. }
  1843. }
  1844. //法
  1845. DataSet dsc = DbHelperSQL.Query("select isnull(SUM(case when F_QIID=290 then 1 else 0 end),0) as MY,isnull(SUM(case when F_QIID=291 then 1 else 0 end),0) as JBMY,isnull(SUM(case when F_QIID=292 then 1 else 0 end),0) as BTMY,isnull(SUM(case when F_QIID=293 then 1 else 0 end),0) as BMY,isnull(SUM(case when F_QIID=294 then 1 else 0 end),0) as BLJ,COUNT (F_Expand3) AS ZJ from T_Call_OutAnswers where F_QID=60 and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + " and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "')");
  1846. DataTable dtc = dsc.Tables[0];
  1847. if (dtc.Rows.Count > 0)
  1848. {
  1849. dtnew.Rows[0][3] = dtc.Rows[0]["MY"].ToString();
  1850. dtnew.Rows[1][3] = dtc.Rows[0]["JBMY"].ToString();
  1851. dtnew.Rows[2][3] = dtc.Rows[0]["BTMY"].ToString();
  1852. dtnew.Rows[3][3] = dtc.Rows[0]["BMY"].ToString();
  1853. dtnew.Rows[4][3] = dtc.Rows[0]["BLJ"].ToString();
  1854. dtnew.Rows[5][3] = dtc.Rows[0]["ZJ"].ToString();
  1855. decimal my = Convert.ToDecimal(dtc.Rows[0]["MY"]) + Convert.ToDecimal(dtc.Rows[0]["JBMY"]);
  1856. decimal zj = Convert.ToDecimal(dtc.Rows[0]["ZJ"]) - Convert.ToDecimal(dtc.Rows[0]["BLJ"]);
  1857. if (zj > 0)
  1858. {
  1859. dtnew.Rows[6][3] = Math.Round((my / zj * 100), 2) + "%";
  1860. }
  1861. else
  1862. {
  1863. dtnew.Rows[6][3] = 0;
  1864. }
  1865. }
  1866. //司法局
  1867. DataSet dsd = DbHelperSQL.Query("select isnull(SUM(case when F_QIID=304 then 1 else 0 end),0) as MY,isnull(SUM(case when F_QIID=305 then 1 else 0 end),0) as JBMY,isnull(SUM(case when F_QIID=306 then 1 else 0 end),0) as BTMY,isnull(SUM(case when F_QIID=307 then 1 else 0 end),0) as BMY,isnull(SUM(case when F_QIID=308 then 1 else 0 end),0) as BLJ,COUNT (F_Expand3) AS ZJ from T_Call_OutAnswers where F_QID=62 and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + "and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "')");
  1868. DataTable dtd = dsd.Tables[0];
  1869. if (dtd.Rows.Count > 0)
  1870. {
  1871. dtnew.Rows[0][4] = dtd.Rows[0]["MY"].ToString();
  1872. dtnew.Rows[1][4] = dtd.Rows[0]["JBMY"].ToString();
  1873. dtnew.Rows[2][4] = dtd.Rows[0]["BTMY"].ToString();
  1874. dtnew.Rows[3][4] = dtd.Rows[0]["BMY"].ToString();
  1875. dtnew.Rows[4][4] = dtd.Rows[0]["BLJ"].ToString();
  1876. dtnew.Rows[5][4] = dtd.Rows[0]["ZJ"].ToString();
  1877. decimal my = Convert.ToDecimal(dtd.Rows[0]["MY"]) + Convert.ToDecimal(dtd.Rows[0]["JBMY"]);
  1878. decimal zj = Convert.ToDecimal(dtd.Rows[0]["ZJ"]) - Convert.ToDecimal(dtd.Rows[0]["BLJ"]);
  1879. if (zj > 0)
  1880. {
  1881. dtnew.Rows[6][4] = Math.Round((my / zj * 100), 2) + "%";
  1882. }
  1883. else
  1884. {
  1885. dtnew.Rows[6][4] = 0;
  1886. }
  1887. }
  1888. #endregion
  1889. }
  1890. }
  1891. return Success("获取政法机关执法满意度数据成功", dtnew);
  1892. }
  1893. public ActionResult GetMYDOLD(string TaskID, string sdate, string edate, string countyid)
  1894. {
  1895. if (string.IsNullOrEmpty(sdate))
  1896. {
  1897. sdate = DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00";
  1898. }
  1899. if (string.IsNullOrEmpty(edate))
  1900. {
  1901. edate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1902. }
  1903. #region 新建输出表
  1904. DataTable dtnew = new DataTable();
  1905. //for (int i = 0; i < 29; i++)
  1906. //{
  1907. // dtnew.Columns.Add("Column" + i.ToString());
  1908. //}
  1909. #endregion
  1910. #region 添加列
  1911. dtnew.Columns.Add("乡镇");
  1912. dtnew.Columns.Add("公安局满意数量");
  1913. dtnew.Columns.Add("公安局比较满意数量");
  1914. dtnew.Columns.Add("公安局不太满意数量");
  1915. dtnew.Columns.Add("公安局不满意数量");
  1916. dtnew.Columns.Add("公安局不了解数量");
  1917. dtnew.Columns.Add("公安局总计");
  1918. dtnew.Columns.Add("公安局满意度");
  1919. dtnew.Columns.Add("检察院满意数量");
  1920. dtnew.Columns.Add("检察院比较满意数量");
  1921. dtnew.Columns.Add("检察院不太满意数量");
  1922. dtnew.Columns.Add("检察院不满意数量");
  1923. dtnew.Columns.Add("检察院不了解数量");
  1924. dtnew.Columns.Add("检察院总计");
  1925. dtnew.Columns.Add("检察院满意度");
  1926. dtnew.Columns.Add("法院满意数量");
  1927. dtnew.Columns.Add("法院比较满意数量");
  1928. dtnew.Columns.Add("法院不太满意数量");
  1929. dtnew.Columns.Add("法院不满意数量");
  1930. dtnew.Columns.Add("法院不了解数量");
  1931. dtnew.Columns.Add("法院总计");
  1932. dtnew.Columns.Add("法院满意度");
  1933. dtnew.Columns.Add("司法局满意数量");
  1934. dtnew.Columns.Add("司法局比较满意数量");
  1935. dtnew.Columns.Add("司法局不太满意数量");
  1936. dtnew.Columns.Add("司法局不满意数量");
  1937. dtnew.Columns.Add("司法局不了解数量");
  1938. dtnew.Columns.Add("司法局总计");
  1939. dtnew.Columns.Add("司法局满意度");
  1940. #endregion
  1941. string strtaskid = "";
  1942. if (!string.IsNullOrEmpty(TaskID))
  1943. {
  1944. strtaskid = " and F_TaskID='" + TaskID + "' ";
  1945. }
  1946. DataRow drtotal = dtnew.NewRow();
  1947. drtotal["乡镇"] = "合计";
  1948. //从数据字典表中获取乡镇信息(JBDW)
  1949. var ds = dvItemBLL.GetModelList(" F_DictionaryFlag='XZQY'");
  1950. if (!string.IsNullOrEmpty(countyid))
  1951. {
  1952. ds = dvItemBLL.GetModelList(" F_DictionaryValueId=" + countyid);
  1953. }
  1954. //var dsc = questionItemBLL.GetModelList(" F_QuestionId='34'");//获取全部乡镇
  1955. if (ds.Count > 0)
  1956. {
  1957. foreach (var iconf in ds)
  1958. {
  1959. #region 根据单位和满意度统计数量
  1960. DataRow dr = dtnew.NewRow();
  1961. dr["乡镇"] = iconf.F_Name;
  1962. //公
  1963. DataSet dsa = DbHelperSQL.Query("select isnull(SUM(case when F_QIID=262 then 1 else 0 end),0) as MY,isnull(SUM(case when F_QIID=263 then 1 else 0 end),0) as JBMY,isnull(SUM(case when F_QIID=264 then 1 else 0 end),0) as BTMY,isnull(SUM(case when F_QIID=265 then 1 else 0 end),0) as BMY,isnull(SUM(case when F_QIID=266 then 1 else 0 end),0) as BLJ,COUNT (F_Expand3) AS ZJ from T_Call_OutAnswers where F_QID=56 and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + " and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "')");
  1964. DataTable dta = dsa.Tables[0];
  1965. if (dta.Rows.Count > 0)
  1966. {
  1967. dr["公安局满意数量"] = dta.Rows[0]["MY"].ToString();
  1968. dr["公安局比较满意数量"] = dta.Rows[0]["JBMY"].ToString();
  1969. dr["公安局不太满意数量"] = dta.Rows[0]["BTMY"].ToString();
  1970. dr["公安局不满意数量"] = dta.Rows[0]["BMY"].ToString();
  1971. dr["公安局不了解数量"] = dta.Rows[0]["BLJ"].ToString();
  1972. dr["公安局总计"] = dta.Rows[0]["ZJ"].ToString();
  1973. decimal my = Convert.ToDecimal(dta.Rows[0]["MY"]) + Convert.ToDecimal(dta.Rows[0]["JBMY"]);
  1974. decimal zj = Convert.ToDecimal(dta.Rows[0]["ZJ"]) - Convert.ToDecimal(dta.Rows[0]["BLJ"]);
  1975. if (zj > 0)
  1976. {
  1977. dr["公安局满意度"] = Math.Round((my / zj * 100), 2) + "%";
  1978. }
  1979. else
  1980. {
  1981. dr["公安局满意度"] = 0;
  1982. }
  1983. }
  1984. //检察院
  1985. DataSet dsb = DbHelperSQL.Query("select isnull(SUM(case when F_QIID=276 then 1 else 0 end),0) as MY,isnull(SUM(case when F_QIID=277 then 1 else 0 end),0) as JBMY,isnull(SUM(case when F_QIID=278 then 1 else 0 end),0) as BTMY,isnull(SUM(case when F_QIID=279 then 1 else 0 end),0) as BMY,isnull(SUM(case when F_QIID=280 then 1 else 0 end),0) as BLJ,COUNT (F_Expand3) AS ZJ from T_Call_OutAnswers where F_QID=58 and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + "and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "')");
  1986. DataTable dtb = dsb.Tables[0];
  1987. if (dtb.Rows.Count > 0)
  1988. {
  1989. dr["检察院满意数量"] = dtb.Rows[0]["MY"].ToString();
  1990. dr["检察院比较满意数量"] = dtb.Rows[0]["JBMY"].ToString();
  1991. dr["检察院不太满意数量"] = dtb.Rows[0]["BTMY"].ToString();
  1992. dr["检察院不满意数量"] = dtb.Rows[0]["BMY"].ToString();
  1993. dr["检察院不了解数量"] = dtb.Rows[0]["BLJ"].ToString();
  1994. dr["检察院总计"] = dtb.Rows[0]["ZJ"].ToString();
  1995. decimal my = Convert.ToDecimal(dtb.Rows[0]["MY"]) + Convert.ToDecimal(dtb.Rows[0]["JBMY"]);
  1996. decimal zj = Convert.ToDecimal(dtb.Rows[0]["ZJ"]) - Convert.ToDecimal(dtb.Rows[0]["BLJ"]);
  1997. if (zj > 0)
  1998. {
  1999. dr["检察院满意度"] = Math.Round((my / zj * 100), 2) + "%";
  2000. }
  2001. else
  2002. {
  2003. dr["检察院满意度"] = 0;
  2004. }
  2005. }
  2006. //法
  2007. DataSet dsc = DbHelperSQL.Query("select isnull(SUM(case when F_QIID=290 then 1 else 0 end),0) as MY,isnull(SUM(case when F_QIID=291 then 1 else 0 end),0) as JBMY,isnull(SUM(case when F_QIID=292 then 1 else 0 end),0) as BTMY,isnull(SUM(case when F_QIID=293 then 1 else 0 end),0) as BMY,isnull(SUM(case when F_QIID=294 then 1 else 0 end),0) as BLJ,COUNT (F_Expand3) AS ZJ from T_Call_OutAnswers where F_QID=60 and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + " and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "')");
  2008. DataTable dtc = dsc.Tables[0];
  2009. if (dtc.Rows.Count > 0)
  2010. {
  2011. dr["法院满意数量"] = dtc.Rows[0]["MY"].ToString();
  2012. dr["法院比较满意数量"] = dtc.Rows[0]["JBMY"].ToString();
  2013. dr["法院不太满意数量"] = dtc.Rows[0]["BTMY"].ToString();
  2014. dr["法院不满意数量"] = dtc.Rows[0]["BMY"].ToString();
  2015. dr["法院不了解数量"] = dtc.Rows[0]["BLJ"].ToString();
  2016. dr["法院总计"] = dtc.Rows[0]["ZJ"].ToString();
  2017. decimal my = Convert.ToDecimal(dtc.Rows[0]["MY"]) + Convert.ToDecimal(dtc.Rows[0]["JBMY"]);
  2018. decimal zj = Convert.ToDecimal(dtc.Rows[0]["ZJ"]) - Convert.ToDecimal(dtc.Rows[0]["BLJ"]);
  2019. if (zj > 0)
  2020. {
  2021. dr["法院满意度"] = Math.Round((my / zj * 100), 2) + "%";
  2022. }
  2023. else
  2024. {
  2025. dr["法院满意度"] = 0;
  2026. }
  2027. }
  2028. //司法局
  2029. DataSet dsd = DbHelperSQL.Query("select isnull(SUM(case when F_QIID=304 then 1 else 0 end),0) as MY,isnull(SUM(case when F_QIID=305 then 1 else 0 end),0) as JBMY,isnull(SUM(case when F_QIID=306 then 1 else 0 end),0) as BTMY,isnull(SUM(case when F_QIID=307 then 1 else 0 end),0) as BMY,isnull(SUM(case when F_QIID=308 then 1 else 0 end),0) as BLJ,COUNT (F_Expand3) AS ZJ from T_Call_OutAnswers where F_QID=62 and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + "and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "')");
  2030. DataTable dtd = dsd.Tables[0];
  2031. if (dtd.Rows.Count > 0)
  2032. {
  2033. dr["司法局满意数量"] = dtd.Rows[0]["MY"].ToString();
  2034. dr["司法局比较满意数量"] = dtd.Rows[0]["JBMY"].ToString();
  2035. dr["司法局不太满意数量"] = dtd.Rows[0]["BTMY"].ToString();
  2036. dr["司法局不满意数量"] = dtd.Rows[0]["BMY"].ToString();
  2037. dr["司法局不了解数量"] = dtd.Rows[0]["BLJ"].ToString();
  2038. dr["司法局总计"] = dtd.Rows[0]["ZJ"].ToString();
  2039. decimal my = Convert.ToDecimal(dtd.Rows[0]["MY"]) + Convert.ToDecimal(dtd.Rows[0]["JBMY"]);
  2040. decimal zj = Convert.ToDecimal(dtd.Rows[0]["ZJ"]) - Convert.ToDecimal(dtd.Rows[0]["BLJ"]);
  2041. if (zj > 0)
  2042. {
  2043. dr["司法局满意度"] = Math.Round((my / zj * 100), 2) + "%";
  2044. }
  2045. else
  2046. {
  2047. dr["司法局满意度"] = 0;
  2048. }
  2049. }
  2050. #endregion
  2051. dtnew.Rows.Add(dr);
  2052. }
  2053. }
  2054. foreach (DataColumn item in dtnew.Columns)
  2055. {
  2056. //drDic.Add(item.ColumnName, dr[item.ColumnName]);
  2057. if (item.ColumnName != "乡镇" && item.ColumnName != "公安局满意度" && item.ColumnName != "检察院满意度" && item.ColumnName != "法院满意度" && item.ColumnName != "司法局满意度")
  2058. {
  2059. drtotal[item.ColumnName] = ColumnSum(dtnew, item.ColumnName);
  2060. }
  2061. }
  2062. decimal gamy = decimal.Parse(drtotal[1].ToString()) + decimal.Parse(drtotal[2].ToString());
  2063. decimal gatotal = decimal.Parse(drtotal[1].ToString()) + decimal.Parse(drtotal[2].ToString()) + decimal.Parse(drtotal[3].ToString()) + decimal.Parse(drtotal[4].ToString());
  2064. if (gatotal > 0)
  2065. {
  2066. drtotal["公安局满意度"] = Math.Round((gamy / gatotal * 100), 2) + "%";
  2067. }
  2068. else
  2069. {
  2070. drtotal["公安局满意度"] = 0;
  2071. }
  2072. decimal jcymy = decimal.Parse(drtotal[8].ToString()) + decimal.Parse(drtotal[9].ToString());
  2073. decimal jcytotal = decimal.Parse(drtotal[8].ToString()) + decimal.Parse(drtotal[9].ToString()) + decimal.Parse(drtotal[10].ToString()) + decimal.Parse(drtotal[11].ToString());
  2074. if (jcytotal > 0)
  2075. {
  2076. drtotal["检察院满意度"] = Math.Round((jcymy / jcytotal * 100), 2) + "%";
  2077. }
  2078. else
  2079. {
  2080. drtotal["检察院满意度"] = 0;
  2081. }
  2082. decimal fymy = decimal.Parse(drtotal[15].ToString()) + decimal.Parse(drtotal[16].ToString());
  2083. decimal fytotal = decimal.Parse(drtotal[15].ToString()) + decimal.Parse(drtotal[16].ToString()) + decimal.Parse(drtotal[17].ToString()) + decimal.Parse(drtotal[18].ToString());
  2084. if (fytotal > 0)
  2085. {
  2086. drtotal["法院满意度"] = Math.Round((fymy / fytotal * 100), 2) + "%";
  2087. }
  2088. else
  2089. {
  2090. drtotal["法院满意度"] = 0;
  2091. }
  2092. decimal sfjmy = decimal.Parse(drtotal[22].ToString()) + decimal.Parse(drtotal[23].ToString());
  2093. decimal sfjtotal = decimal.Parse(drtotal[22].ToString()) + decimal.Parse(drtotal[23].ToString()) + decimal.Parse(drtotal[24].ToString()) + decimal.Parse(drtotal[25].ToString());
  2094. if (sfjtotal > 0)
  2095. {
  2096. drtotal["司法局满意度"] = Math.Round((sfjmy / sfjtotal * 100), 2) + "%";
  2097. }
  2098. else
  2099. {
  2100. drtotal["司法局满意度"] = 0;
  2101. }
  2102. dtnew.Rows.Add(drtotal);
  2103. return Success("获取政法机关执法满意度数据成功", dtnew);
  2104. }
  2105. #endregion
  2106. #region 政法机关执法满意度报表--列名没有改
  2107. /// <summary>
  2108. /// 政法机关执法满意度报表
  2109. /// </summary>
  2110. /// <param name="TaskID">任务id</param>
  2111. /// <param name="quesid">问题id</param>
  2112. /// <param name="countryid">乡镇id</param>
  2113. /// <param name="sdate">开始时间</param>
  2114. /// <param name="edate">结束时间</param>
  2115. /// <returns></returns>
  2116. public ActionResult GetMYDBAK(string TaskID, string sdate, string edate, string countyid)
  2117. {
  2118. if (string.IsNullOrEmpty(sdate))
  2119. {
  2120. sdate = DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00";
  2121. }
  2122. if (string.IsNullOrEmpty(edate))
  2123. {
  2124. edate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  2125. }
  2126. #region 新建输出表
  2127. DataTable dtnew = new DataTable();
  2128. for (int i = 0; i < 29; i++)
  2129. {
  2130. dtnew.Columns.Add("Column" + i.ToString());
  2131. }
  2132. #endregion
  2133. string strtaskid = "";
  2134. if (!string.IsNullOrEmpty(TaskID))
  2135. {
  2136. strtaskid = " and F_TaskID='" + TaskID + "' ";
  2137. }
  2138. DataRow drtotal = dtnew.NewRow();
  2139. drtotal["Column0"] = "合计";
  2140. //从数据字典表中获取乡镇信息(JBDW)
  2141. var ds = dvItemBLL.GetModelList(" F_DictionaryFlag='XZQY'");
  2142. if (!string.IsNullOrEmpty(countyid))
  2143. {
  2144. ds = dvItemBLL.GetModelList(" F_DictionaryValueId=" + countyid);
  2145. }
  2146. //var dsc = questionItemBLL.GetModelList(" F_QuestionId='34'");//获取全部乡镇
  2147. if (ds.Count > 0)
  2148. {
  2149. foreach (var iconf in ds)
  2150. {
  2151. #region 根据单位和满意度统计数量
  2152. DataRow dr = dtnew.NewRow();
  2153. dr["Column0"] = iconf.F_Name;
  2154. //公
  2155. DataSet dsa = DbHelperSQL.Query("select isnull(SUM(case when F_QIID=262 then 1 else 0 end),0) as MY,isnull(SUM(case when F_QIID=263 then 1 else 0 end),0) as JBMY,isnull(SUM(case when F_QIID=264 then 1 else 0 end),0) as BTMY,isnull(SUM(case when F_QIID=265 then 1 else 0 end),0) as BMY,isnull(SUM(case when F_QIID=266 then 1 else 0 end),0) as BLJ,COUNT (F_Expand3) AS ZJ from T_Call_OutAnswers where F_QID=56 and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + " and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "')");
  2156. DataTable dta = dsa.Tables[0];
  2157. if (dta.Rows.Count > 0)
  2158. {
  2159. dr["Column1"] = dta.Rows[0]["MY"].ToString();
  2160. dr["Column2"] = dta.Rows[0]["JBMY"].ToString();
  2161. dr["Column3"] = dta.Rows[0]["BTMY"].ToString();
  2162. dr["Column4"] = dta.Rows[0]["BMY"].ToString();
  2163. dr["Column5"] = dta.Rows[0]["BLJ"].ToString();
  2164. dr["Column6"] = dta.Rows[0]["ZJ"].ToString();
  2165. decimal my = Convert.ToDecimal(dta.Rows[0]["MY"]) + Convert.ToDecimal(dta.Rows[0]["JBMY"]);
  2166. decimal zj = Convert.ToDecimal(dta.Rows[0]["ZJ"]) - Convert.ToDecimal(dta.Rows[0]["BLJ"]);
  2167. if (zj > 0)
  2168. {
  2169. dr["Column7"] = Math.Round((my / zj * 100), 2) + "%";
  2170. }
  2171. else
  2172. {
  2173. dr["Column7"] = 0;
  2174. }
  2175. }
  2176. //检察院
  2177. DataSet dsb = DbHelperSQL.Query("select isnull(SUM(case when F_QIID=276 then 1 else 0 end),0) as MY,isnull(SUM(case when F_QIID=277 then 1 else 0 end),0) as JBMY,isnull(SUM(case when F_QIID=278 then 1 else 0 end),0) as BTMY,isnull(SUM(case when F_QIID=279 then 1 else 0 end),0) as BMY,isnull(SUM(case when F_QIID=280 then 1 else 0 end),0) as BLJ,COUNT (F_Expand3) AS ZJ from T_Call_OutAnswers where F_QID=58 and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + "and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "')");
  2178. DataTable dtb = dsb.Tables[0];
  2179. if (dtb.Rows.Count > 0)
  2180. {
  2181. dr["Column8"] = dtb.Rows[0]["MY"].ToString();
  2182. dr["Column9"] = dtb.Rows[0]["JBMY"].ToString();
  2183. dr["Column10"] = dtb.Rows[0]["BTMY"].ToString();
  2184. dr["Column11"] = dtb.Rows[0]["BMY"].ToString();
  2185. dr["Column12"] = dtb.Rows[0]["BLJ"].ToString();
  2186. dr["Column13"] = dtb.Rows[0]["ZJ"].ToString();
  2187. decimal my = Convert.ToDecimal(dtb.Rows[0]["MY"]) + Convert.ToDecimal(dtb.Rows[0]["JBMY"]);
  2188. decimal zj = Convert.ToDecimal(dtb.Rows[0]["ZJ"]) - Convert.ToDecimal(dtb.Rows[0]["BLJ"]);
  2189. if (zj > 0)
  2190. {
  2191. dr["Column14"] = Math.Round((my / zj * 100), 2) + "%";
  2192. }
  2193. else
  2194. {
  2195. dr["Column14"] = 0;
  2196. }
  2197. }
  2198. //法
  2199. DataSet dsc = DbHelperSQL.Query("select isnull(SUM(case when F_QIID=290 then 1 else 0 end),0) as MY,isnull(SUM(case when F_QIID=291 then 1 else 0 end),0) as JBMY,isnull(SUM(case when F_QIID=292 then 1 else 0 end),0) as BTMY,isnull(SUM(case when F_QIID=293 then 1 else 0 end),0) as BMY,isnull(SUM(case when F_QIID=294 then 1 else 0 end),0) as BLJ,COUNT (F_Expand3) AS ZJ from T_Call_OutAnswers where F_QID=60 and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + " and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "')");
  2200. DataTable dtc = dsc.Tables[0];
  2201. if (dtc.Rows.Count > 0)
  2202. {
  2203. dr["Column15"] = dtc.Rows[0]["MY"].ToString();
  2204. dr["Column16"] = dtc.Rows[0]["JBMY"].ToString();
  2205. dr["Column17"] = dtc.Rows[0]["BTMY"].ToString();
  2206. dr["Column18"] = dtc.Rows[0]["BMY"].ToString();
  2207. dr["Column19"] = dtc.Rows[0]["BLJ"].ToString();
  2208. dr["Column20"] = dtc.Rows[0]["ZJ"].ToString();
  2209. decimal my = Convert.ToDecimal(dtc.Rows[0]["MY"]) + Convert.ToDecimal(dtc.Rows[0]["JBMY"]);
  2210. decimal zj = Convert.ToDecimal(dtc.Rows[0]["ZJ"]) - Convert.ToDecimal(dtc.Rows[0]["BLJ"]);
  2211. if (zj > 0)
  2212. {
  2213. dr["Column21"] = Math.Round((my / zj * 100), 2) + "%";
  2214. }
  2215. else
  2216. {
  2217. dr["Column21"] = 0;
  2218. }
  2219. }
  2220. //司法局
  2221. DataSet dsd = DbHelperSQL.Query("select isnull(SUM(case when F_QIID=304 then 1 else 0 end),0) as MY,isnull(SUM(case when F_QIID=305 then 1 else 0 end),0) as JBMY,isnull(SUM(case when F_QIID=306 then 1 else 0 end),0) as BTMY,isnull(SUM(case when F_QIID=307 then 1 else 0 end),0) as BMY,isnull(SUM(case when F_QIID=308 then 1 else 0 end),0) as BLJ,COUNT (F_Expand3) AS ZJ from T_Call_OutAnswers where F_QID=62 and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + "and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "')");
  2222. DataTable dtd = dsd.Tables[0];
  2223. if (dtd.Rows.Count > 0)
  2224. {
  2225. dr["Column22"] = dtd.Rows[0]["MY"].ToString();
  2226. dr["Column23"] = dtd.Rows[0]["JBMY"].ToString();
  2227. dr["Column24"] = dtd.Rows[0]["BTMY"].ToString();
  2228. dr["Column25"] = dtd.Rows[0]["BMY"].ToString();
  2229. dr["Column26"] = dtd.Rows[0]["BLJ"].ToString();
  2230. dr["Column27"] = dtd.Rows[0]["ZJ"].ToString();
  2231. decimal my = Convert.ToDecimal(dtd.Rows[0]["MY"]) + Convert.ToDecimal(dtd.Rows[0]["JBMY"]);
  2232. decimal zj = Convert.ToDecimal(dtd.Rows[0]["ZJ"]) - Convert.ToDecimal(dtd.Rows[0]["BLJ"]);
  2233. if (zj > 0)
  2234. {
  2235. dr["Column28"] = Math.Round((my / zj * 100), 2) + "%";
  2236. }
  2237. else
  2238. {
  2239. dr["Column28"] = 0;
  2240. }
  2241. }
  2242. #endregion
  2243. dtnew.Rows.Add(dr);
  2244. }
  2245. }
  2246. for (int i = 1; i < 29; i++)
  2247. {
  2248. if (i != 7 && i != 14 && i != 21 && i != 28)
  2249. {
  2250. drtotal["Column" + i.ToString()] = ColumnSum(dtnew, "Column" + i.ToString());
  2251. }
  2252. }
  2253. dtnew.Rows.Add(drtotal);
  2254. return Success("获取政法机关执法满意度数据成功", dtnew);
  2255. }
  2256. #endregion
  2257. #region 根据问题统计数据
  2258. /// <summary>
  2259. ///
  2260. /// </summary>
  2261. /// <param name="TaskID">任务id</param>
  2262. /// <param name="quesid">问题id</param>
  2263. /// <param name="countryid">乡镇id</param>
  2264. /// <param name="sdate">开始时间</param>
  2265. /// <param name="edate">结束时间</param>
  2266. /// <returns></returns>
  2267. public ActionResult GetData(string TaskID, string ques, string countyid, string sdate, string edate)
  2268. {
  2269. if (string.IsNullOrEmpty(sdate))
  2270. {
  2271. sdate = DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00";
  2272. }
  2273. if (string.IsNullOrEmpty(edate))
  2274. {
  2275. edate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  2276. }
  2277. //countyid = "515";
  2278. string quesid = "67";
  2279. if (ques == "社会治安")
  2280. {
  2281. quesid = "53";
  2282. }
  2283. else if (ques == "扫黑除恶")
  2284. {
  2285. quesid = "55";
  2286. }
  2287. else if (ques == "巡防效果")
  2288. {
  2289. quesid = "65";
  2290. }
  2291. else if (ques == "视频监控")
  2292. {
  2293. quesid = "67";
  2294. }
  2295. else if (ques == "公安执法")
  2296. {
  2297. quesid = "57";
  2298. }
  2299. else if (ques == "检察院执法")
  2300. {
  2301. quesid = "59";
  2302. }
  2303. else if (ques == "司法局执法")
  2304. {
  2305. quesid = "63";
  2306. }
  2307. else if (ques == "法院执法")
  2308. {
  2309. quesid = "61";
  2310. }
  2311. else if (ques == "黑恶势力")
  2312. {
  2313. quesid = "54";
  2314. }
  2315. #region 新建输出表
  2316. DataTable dtnew = new DataTable();
  2317. dtnew.Columns.Add("分类");
  2318. dtnew.Columns.Add("数量");
  2319. dtnew.Columns.Add("比例");
  2320. int c = 0;
  2321. var dsi = questionItemBLL.GetModelList(" F_QuestionId='" + quesid + "' ORDER BY F_Sort, F_ItemId");
  2322. if (dsi.Count > 0)
  2323. {
  2324. foreach (var itemconf in dsi)
  2325. {
  2326. string cname = itemconf.F_ItemName;
  2327. if (!cname.Contains("不读出")&& !cname.Contains("无"))
  2328. {
  2329. dtnew.Rows.Add();
  2330. dtnew.Rows[c][0] = cname;
  2331. c++;
  2332. }
  2333. else if (itemconf.F_ItemName.Contains("不读出"))
  2334. {
  2335. int index = itemconf.F_ItemName.IndexOf("不读出");
  2336. cname = itemconf.F_ItemName.Substring(0, index - 1);
  2337. dtnew.Rows.Add();
  2338. dtnew.Rows[c][0] = cname;
  2339. c++;
  2340. }
  2341. }
  2342. }
  2343. #endregion
  2344. string strtaskid = "";
  2345. if (!string.IsNullOrEmpty(TaskID))
  2346. {
  2347. strtaskid = " and F_TaskID='" + TaskID + "' ";
  2348. }
  2349. #region 根据单位和QuestionItemID统计数量
  2350. if (string.IsNullOrEmpty(countyid))//为空时统计全部乡镇信息,否则显示单个乡镇数据
  2351. {
  2352. decimal total = 0;
  2353. DataSet ds = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 and F_QID='"+quesid +"'" + strtaskid);
  2354. DataTable dt = ds.Tables[0];
  2355. if (dt.Rows.Count > 0)
  2356. {
  2357. total = Decimal.Parse (dt.Rows[0][0].ToString ());
  2358. }
  2359. c = 0;
  2360. foreach (var itemconf in dsi)
  2361. {
  2362. string cname = itemconf.F_ItemName;
  2363. if (itemconf.F_ItemName.Contains("不读出"))
  2364. {
  2365. int index = itemconf.F_ItemName.IndexOf("不读出");
  2366. cname = itemconf.F_ItemName.Substring(0,index -1);
  2367. //continue;
  2368. }
  2369. DataSet dsa = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 and F_QID='" + quesid + "' and ltrim(rtrim(F_Answer))='" + itemconf.F_ItemName + "' " + strtaskid);
  2370. DataTable dta = dsa.Tables[0];
  2371. if (dta.Rows.Count > 0)
  2372. {
  2373. dtnew.Rows[c][1] = dta.Rows[0][0];
  2374. if (total > 0)
  2375. {
  2376. dtnew.Rows[c][2] = Math.Round(decimal.Parse(dta.Rows[0][0].ToString()) / total * 100, 2).ToString() + "%";
  2377. }
  2378. else
  2379. {
  2380. dtnew.Rows[c][2] = 0;
  2381. }
  2382. }
  2383. c++;
  2384. }
  2385. }
  2386. else
  2387. {
  2388. string contyname = "";
  2389. var dsn = dvItemBLL.GetModelList(" F_DictionaryValueId='" + countyid + "'");
  2390. if (dsn.Count > 0)
  2391. {
  2392. contyname = dsn[0].F_Name;// iconf.F_Name;
  2393. }
  2394. #region
  2395. decimal total = 0;
  2396. DataSet ds = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 and F_QID='" + quesid + "'" + strtaskid+ " and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + " and ltrim(rtrim(F_Answer))='" + contyname + "')");
  2397. DataTable dt = ds.Tables[0];
  2398. if (dt.Rows.Count > 0)
  2399. {
  2400. total = Decimal.Parse(dt.Rows[0][0].ToString());
  2401. }
  2402. c = 0;
  2403. foreach (var itemconf in dsi)
  2404. {
  2405. string cname = itemconf.F_ItemName;
  2406. if (itemconf.F_ItemName.Contains("不读出"))
  2407. {
  2408. int index = itemconf.F_ItemName.IndexOf("不读出");
  2409. cname = itemconf.F_ItemName.Substring(0, index - 1);
  2410. //continue;
  2411. }
  2412. DataSet dsa = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 and F_QID='" + quesid + "'" + strtaskid + " and ltrim(rtrim(F_Answer))='" + itemconf.F_ItemName + "' and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + " and F_Answer='" + contyname + "')");
  2413. DataTable dta = dsa.Tables[0];
  2414. if (dta.Rows.Count > 0)
  2415. {
  2416. dtnew.Rows[c][1] = dta.Rows[0][0];
  2417. if (total > 0)
  2418. {
  2419. dtnew.Rows[c][2] = Math.Round(decimal.Parse(dta.Rows[0][0].ToString()) / total * 100, 2).ToString() + "%";
  2420. }
  2421. else
  2422. {
  2423. dtnew.Rows[c][2] = 0;
  2424. }
  2425. }
  2426. c++;
  2427. }
  2428. #endregion
  2429. }
  2430. if (ques != "扫黑除恶"&& ques != "巡防效果" && ques != "视频监控")
  2431. {
  2432. dtnew.DefaultView.Sort = "数量 DESC";
  2433. dtnew = dtnew.DefaultView.ToTable();
  2434. }
  2435. var obj = new
  2436. {
  2437. //ans = dsi,
  2438. data = dtnew
  2439. };
  2440. return Success("按问题获取数据成功", obj);
  2441. #endregion
  2442. }
  2443. public ActionResult GetDataBAK(string TaskID, string ques, string countyid, string sdate, string edate)
  2444. {
  2445. if (string.IsNullOrEmpty(sdate))
  2446. {
  2447. sdate = DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00";
  2448. }
  2449. if (string.IsNullOrEmpty(edate))
  2450. {
  2451. edate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  2452. }
  2453. string quesid = "53";
  2454. if (ques == "社会治安")
  2455. {
  2456. quesid = "53";
  2457. }
  2458. else if (ques == "扫黑除恶")
  2459. {
  2460. quesid = "55";
  2461. }
  2462. else if (ques == "巡防效果")
  2463. {
  2464. quesid = "65";
  2465. }
  2466. else if (ques == "视频监控")
  2467. {
  2468. quesid = "66";
  2469. }
  2470. else if (ques == "公安执法")
  2471. {
  2472. quesid = "57";
  2473. }
  2474. else if (ques == "检察院执法")
  2475. {
  2476. quesid = "59";
  2477. }
  2478. else if (ques == "司法局执法")
  2479. {
  2480. quesid = "63";
  2481. }
  2482. else if (ques == "法院执法")
  2483. {
  2484. quesid = "61";
  2485. }
  2486. else if (ques == "黑恶势力")
  2487. {
  2488. quesid = "54";
  2489. }
  2490. #region 新建输出表
  2491. DataTable dtnew = new DataTable();
  2492. dtnew.Columns.Add("乡镇");
  2493. var dsi = questionItemBLL.GetModelList(" F_QuestionId='" + quesid + "'");
  2494. if (dsi.Count > 0)
  2495. {
  2496. foreach (var itemconf in dsi)
  2497. {
  2498. string cname = itemconf.F_ItemName;
  2499. dtnew.Columns.Add(cname);
  2500. dtnew.Columns.Add(cname + "比例");
  2501. }
  2502. }
  2503. #endregion
  2504. string strtaskid = "";
  2505. if (!string.IsNullOrEmpty(TaskID))
  2506. {
  2507. strtaskid = " and F_TaskID='" + TaskID + "' ";
  2508. }
  2509. //2018-7-6
  2510. //DataRow drtotal = dtnew.NewRow();
  2511. //drtotal["乡镇"] = "合计";
  2512. #region 根据单位和QuestionItemID统计数量
  2513. if (string.IsNullOrEmpty(countyid))//为空时统计全部乡镇信息,否则显示单个乡镇数据
  2514. {
  2515. decimal total = 0;
  2516. DataSet ds = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 and F_QID='" + quesid + "'" + strtaskid);
  2517. DataTable dt = ds.Tables[0];
  2518. if (dt.Rows.Count > 0)
  2519. {
  2520. total = Decimal.Parse(dt.Rows[0][0].ToString());
  2521. }
  2522. DataRow dr = dtnew.NewRow();
  2523. dr["乡镇"] = "合计";
  2524. foreach (var itemconf in dsi)
  2525. {
  2526. DataSet dsa = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 and F_QID='" + quesid + "' and ltrim(rtrim(F_Answer))='" + itemconf.F_ItemName + "' " + strtaskid);
  2527. DataTable dta = dsa.Tables[0];
  2528. if (dta.Rows.Count > 0)
  2529. {
  2530. dr[itemconf.F_ItemName] = dta.Rows[0][0];
  2531. if (total > 0)
  2532. {
  2533. dr[itemconf.F_ItemName + "比例"] = Math.Round(decimal.Parse(dr[itemconf.F_ItemName].ToString()) / total * 100, 2).ToString() + "%";
  2534. }
  2535. else
  2536. {
  2537. dr[itemconf.F_ItemName + "比例"] = 0;
  2538. }
  2539. }
  2540. }
  2541. dtnew.Rows.Add(dr);
  2542. }
  2543. else
  2544. {
  2545. string contyname = "";
  2546. var dsn = dvItemBLL.GetModelList(" F_DictionaryValueId='" + countyid + "'");
  2547. if (dsn.Count > 0)
  2548. {
  2549. contyname = dsn[0].F_Name;// iconf.F_Name;
  2550. }
  2551. #region
  2552. decimal total = 0;
  2553. DataSet ds = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 and F_QID='" + quesid + "'" + strtaskid + " and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + " and ltrim(rtrim(F_Answer))='" + contyname + "')");
  2554. DataTable dt = ds.Tables[0];
  2555. if (dt.Rows.Count > 0)
  2556. {
  2557. total = Decimal.Parse(dt.Rows[0][0].ToString());
  2558. }
  2559. DataRow dr = dtnew.NewRow();
  2560. dr["乡镇"] = "合计";
  2561. foreach (var itemconf in dsi)
  2562. {
  2563. DataSet dsa = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 and F_QID='" + quesid + "'" + strtaskid + " and ltrim(rtrim(F_Answer))='" + itemconf.F_ItemName.Trim() + "' and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + " and F_Answer='" + contyname + "')");
  2564. DataTable dta = dsa.Tables[0];
  2565. if (dta.Rows.Count > 0)
  2566. {
  2567. dr[itemconf.F_ItemName] = dta.Rows[0][0];
  2568. if (total > 0)
  2569. {
  2570. dr[itemconf.F_ItemName + "比例"] = Math.Round(decimal.Parse(dr[itemconf.F_ItemName].ToString()) / total * 100, 2).ToString() + "%";
  2571. }
  2572. else
  2573. {
  2574. dr[itemconf.F_ItemName + "比例"] = 0;
  2575. }
  2576. }
  2577. }
  2578. dtnew.Rows.Add(dr);
  2579. #endregion
  2580. }
  2581. var obj = new
  2582. {
  2583. ans = dsi,
  2584. data = dtnew
  2585. };
  2586. return Success("按问题获取数据成功", obj);
  2587. #endregion
  2588. }
  2589. #endregion
  2590. #region 统计调查问卷数量
  2591. /// <summary>
  2592. ///
  2593. /// </summary>
  2594. /// <param name="TaskID">任务id</param>
  2595. /// <param name="quesid">问题id</param>
  2596. /// <param name="countryid">乡镇id</param>
  2597. /// <param name="sdate">开始时间</param>
  2598. /// <param name="edate">结束时间</param>
  2599. /// <returns></returns>
  2600. public ActionResult GetTotal(string TaskID, string countryid, string sdate, string edate)
  2601. {
  2602. if (string.IsNullOrEmpty(sdate))
  2603. {
  2604. //sdate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  2605. sdate = DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00";
  2606. }
  2607. if (string.IsNullOrEmpty(edate))
  2608. {
  2609. edate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  2610. }
  2611. string quesid = "48";
  2612. #region 新建输出表
  2613. DataTable dtnew = new DataTable();
  2614. dtnew.Columns.Add("分类");
  2615. dtnew.Columns.Add("数量",typeof (int));
  2616. dtnew.Rows.Add();
  2617. dtnew.Rows[0][0] = "系统量";
  2618. dtnew.Rows.Add();
  2619. dtnew.Rows[1][0] = "今日量";
  2620. var dsi = questionItemBLL.GetModelList(" F_QuestionId='" + quesid + "'");
  2621. if (dsi.Count > 0)
  2622. {
  2623. int c = 2;
  2624. foreach (var itemconf in dsi)
  2625. {
  2626. string cname = itemconf.F_ItemName;
  2627. if (!cname.Contains ("都不是"))
  2628. {
  2629. dtnew.Rows.Add();
  2630. dtnew.Rows[c][0] = cname;
  2631. c++;
  2632. }
  2633. }
  2634. }
  2635. #endregion
  2636. string strtaskid = "";
  2637. if (!string.IsNullOrEmpty(TaskID))
  2638. {
  2639. strtaskid = " and F_TaskID='" + TaskID + "' ";
  2640. }
  2641. DataSet ds0 = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers ");
  2642. DataTable dt0 = ds0.Tables[0];
  2643. if (dt0.Rows.Count > 0)
  2644. {
  2645. dtnew.Rows[0][1] = dt0.Rows[0][0];
  2646. }
  2647. //今日量
  2648. DataSet ds1 = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,GETDATE() )=0 ");
  2649. DataTable dt1 = ds1.Tables[0];
  2650. if (dt1.Rows.Count > 0)
  2651. {
  2652. dtnew.Rows[1][1] = dt1.Rows[0][0];
  2653. }
  2654. #region 根据单位和QuestionItemID统计数量
  2655. int cou = 2;
  2656. //从数据字典表中获取乡镇信息(JBDW)
  2657. var dsc = dvItemBLL.GetModelList(" F_DictionaryFlag='XZQY'");
  2658. int totalnum = 0;
  2659. if (dsc.Count > 0)
  2660. {
  2661. foreach (var iconf in dsc)
  2662. {
  2663. DataSet dsa = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "' " + strtaskid);
  2664. DataTable dta = dsa.Tables[0];
  2665. if (dta.Rows.Count > 0)
  2666. {
  2667. dtnew.Rows[cou][1] = dta.Rows[0][0];
  2668. if (dta.Rows[0][0] != null && dta.Rows[0][0].ToString() != "")
  2669. {
  2670. totalnum += Convert.ToInt32(dta.Rows[0][0]);
  2671. }
  2672. }
  2673. cou++;
  2674. }
  2675. }
  2676. dtnew.DefaultView.Sort = "数量 DESC";
  2677. dtnew = dtnew.DefaultView.ToTable();
  2678. #region 添加时间段总量
  2679. dtnew.Rows.Add();
  2680. dtnew.Rows[dtnew.Rows.Count - 1][0] = "总量";
  2681. dtnew.Rows[dtnew.Rows.Count - 1][1] = totalnum;
  2682. #endregion
  2683. return Success("获取调查问卷统计数据成功", dtnew);
  2684. #endregion
  2685. }
  2686. #endregion
  2687. #endregion
  2688. /// <summary>
  2689. /// 外呼量统计
  2690. /// </summary>
  2691. /// <param name="start"></param>
  2692. /// <param name="end"></param>
  2693. /// <returns></returns>
  2694. public ActionResult GetCallOutData(string date,string edate)
  2695. {
  2696. if (string.IsNullOrEmpty(date))
  2697. {
  2698. date = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  2699. //sdate = DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00";
  2700. }
  2701. if (string.IsNullOrEmpty(edate))
  2702. {
  2703. edate = date;
  2704. //edate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  2705. }
  2706. int total = Int32.Parse(DbHelperSQL.GetSingle("select COUNT(1) from T_Call_CallRecords where CallType=1 and DATEDIFF(day,BeginTime,'" + date + "')<=0 and DATEDIFF(day,BeginTime,'" + edate + "')>=0").ToString());
  2707. int wh = Int32.Parse(DbHelperSQL.GetSingle("select COUNT(1) from T_Call_CallRecords where CallType=1 and DATEDIFF(day,BeginTime,'" + date + "')<=0 and DATEDIFF(day,BeginTime,'" + edate + "')>=0").ToString());
  2708. int jt = Int32.Parse(DbHelperSQL.GetSingle("select COUNT(1) from T_Call_CallRecords where CallType=1 and CallState=1 and DATEDIFF(day,BeginTime,'" + date + "')<=0 and DATEDIFF(day,BeginTime,'" + edate + "')>=0").ToString());
  2709. int jdl = Int32.Parse(DbHelperSQL.GetSingle("select COUNT(1) from T_Wo_WorkOrder where CallID IN(select CallID from T_Call_CallRecords where CallType=1 and DATEDIFF(day,BeginTime,'" + date + "')<=0 and DATEDIFF(day,BeginTime,'" + edate + "')>=0) AND IsDel=0").ToString());
  2710. DataTable dtnew = new DataTable();
  2711. dtnew.Columns.Add("分类");
  2712. dtnew.Columns.Add("数量");
  2713. dtnew.Columns.Add("比例");
  2714. dtnew.Rows.Add();
  2715. dtnew.Rows[0][0] = "外呼量";
  2716. dtnew.Rows.Add();
  2717. dtnew.Rows[1][0] = "接通量";
  2718. dtnew.Rows.Add();
  2719. dtnew.Rows[2][0] = "建单量";
  2720. dtnew.Rows[0][1] = wh;
  2721. dtnew.Rows[1][1] = jt;
  2722. dtnew.Rows[2][1] = jdl;
  2723. if (total > 0)
  2724. {
  2725. dtnew.Rows[0][2] = Math.Round((double.Parse(wh.ToString()) * 100 / total), 2) + "%";
  2726. }
  2727. else
  2728. { dtnew.Rows[0][2] = 0; }
  2729. if (wh > 0)
  2730. {
  2731. dtnew.Rows[1][2] = Math.Round((double.Parse(jt.ToString()) * 100 / wh), 2) + "%";
  2732. }
  2733. else
  2734. { dtnew.Rows[1][2] = 0; }
  2735. if (jt > 0)
  2736. {
  2737. dtnew.Rows[2][2] = Math.Round((double.Parse(jdl.ToString()) * 100 / jt), 2) + "%";
  2738. }
  2739. else
  2740. { dtnew.Rows[2][2] = 0; }
  2741. return Success("加载成功", dtnew);
  2742. }
  2743. #endregion
  2744. #region 大屏数据添加导出
  2745. /// <summary>
  2746. ///
  2747. /// </summary>
  2748. /// <param name="TaskID">任务id</param>
  2749. /// <param name="quesid">问题id</param>
  2750. /// <param name="countryid">乡镇id</param>
  2751. /// <param name="sdate">开始时间</param>
  2752. /// <param name="edate">结束时间</param>
  2753. /// <returns></returns>
  2754. public ActionResult ExportData(string TaskID, string ques, string countyid, string sdate, string edate)
  2755. {
  2756. if (string.IsNullOrEmpty(sdate))
  2757. {
  2758. sdate = DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00";
  2759. }
  2760. if (string.IsNullOrEmpty(edate))
  2761. {
  2762. edate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  2763. }
  2764. string excelname = "";
  2765. //countyid = "515";
  2766. string quesid = "67";
  2767. if (ques == "社会治安")
  2768. {
  2769. quesid = "53";
  2770. excelname = "社会治安不安全原因统计";
  2771. }
  2772. else if (ques == "扫黑除恶")
  2773. {
  2774. quesid = "55";
  2775. excelname = "扫黑除恶满意度";
  2776. }
  2777. else if (ques == "巡防效果")
  2778. {
  2779. quesid = "65";
  2780. excelname = "巡防效果满意度";
  2781. }
  2782. else if (ques == "视频监控")
  2783. {
  2784. quesid = "67";
  2785. excelname = "视频监控满意度";
  2786. }
  2787. else if (ques == "公安执法")
  2788. {
  2789. quesid = "57";
  2790. excelname = "公安机关执法不(太)满意原因";
  2791. }
  2792. else if (ques == "检察院执法")
  2793. {
  2794. quesid = "59";
  2795. excelname = "检察机关执法不(太)满意原因";
  2796. }
  2797. else if (ques == "司法局执法")
  2798. {
  2799. quesid = "63";
  2800. excelname = "司法局执法不(太)满意原因";
  2801. }
  2802. else if (ques == "法院执法")
  2803. {
  2804. quesid = "61";
  2805. excelname = "法院执法不(太)满意原因";
  2806. }
  2807. else if (ques == "黑恶势力")
  2808. {
  2809. quesid = "54";
  2810. excelname = "黑恶势力情况";
  2811. }
  2812. #region 新建输出表
  2813. DataTable dtnew = new DataTable();
  2814. dtnew.Columns.Add("原因");
  2815. dtnew.Columns.Add("数量");
  2816. dtnew.Columns.Add("比例");
  2817. int c = 0;
  2818. var dsi = questionItemBLL.GetModelList(" F_QuestionId='" + quesid + "' ORDER BY F_ItemId");
  2819. if (dsi.Count > 0)
  2820. {
  2821. foreach (var itemconf in dsi)
  2822. {
  2823. string cname = itemconf.F_ItemName;
  2824. if (!cname.Contains("不读出") && !cname.Contains("无"))
  2825. {
  2826. dtnew.Rows.Add();
  2827. dtnew.Rows[c][0] = cname;
  2828. c++;
  2829. }
  2830. else if (itemconf.F_ItemName.Contains("不读出"))
  2831. {
  2832. int index = itemconf.F_ItemName.IndexOf("不读出");
  2833. cname = itemconf.F_ItemName.Substring(0, index - 1);
  2834. dtnew.Rows.Add();
  2835. dtnew.Rows[c][0] = cname;
  2836. c++;
  2837. }
  2838. }
  2839. }
  2840. #endregion
  2841. string strtaskid = "";
  2842. if (!string.IsNullOrEmpty(TaskID))
  2843. {
  2844. strtaskid = " and F_TaskID='" + TaskID + "' ";
  2845. }
  2846. #region 根据单位和QuestionItemID统计数量
  2847. if (string.IsNullOrEmpty(countyid))//为空时统计全部乡镇信息,否则显示单个乡镇数据
  2848. {
  2849. decimal total = 0;
  2850. DataSet ds = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 and F_QID='" + quesid + "'" + strtaskid);
  2851. DataTable dt = ds.Tables[0];
  2852. if (dt.Rows.Count > 0)
  2853. {
  2854. total = Decimal.Parse(dt.Rows[0][0].ToString());
  2855. }
  2856. c = 0;
  2857. foreach (var itemconf in dsi)
  2858. {
  2859. string cname = itemconf.F_ItemName;
  2860. if (itemconf.F_ItemName.Contains("不读出"))
  2861. {
  2862. int index = itemconf.F_ItemName.IndexOf("不读出");
  2863. cname = itemconf.F_ItemName.Substring(0, index - 1);
  2864. //continue;
  2865. }
  2866. DataSet dsa = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 and F_QID='" + quesid + "' and ltrim(rtrim(F_Answer))='" + itemconf.F_ItemName + "' " + strtaskid);
  2867. DataTable dta = dsa.Tables[0];
  2868. if (dta.Rows.Count > 0)
  2869. {
  2870. dtnew.Rows[c][1] = dta.Rows[0][0];
  2871. if (total > 0)
  2872. {
  2873. dtnew.Rows[c][2] = Math.Round(decimal.Parse(dta.Rows[0][0].ToString()) / total * 100, 2).ToString() + "%";
  2874. }
  2875. else
  2876. {
  2877. dtnew.Rows[c][2] = 0;
  2878. }
  2879. }
  2880. c++;
  2881. }
  2882. }
  2883. else
  2884. {
  2885. string contyname = "";
  2886. var dsn = dvItemBLL.GetModelList(" F_DictionaryValueId='" + countyid + "'");
  2887. if (dsn.Count > 0)
  2888. {
  2889. contyname = dsn[0].F_Name;// iconf.F_Name;
  2890. }
  2891. #region
  2892. decimal total = 0;
  2893. DataSet ds = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 and F_QID='" + quesid + "'" + strtaskid + " and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + " and ltrim(rtrim(F_Answer))='" + contyname + "')");
  2894. DataTable dt = ds.Tables[0];
  2895. if (dt.Rows.Count > 0)
  2896. {
  2897. total = Decimal.Parse(dt.Rows[0][0].ToString());
  2898. }
  2899. c = 0;
  2900. foreach (var itemconf in dsi)
  2901. {
  2902. string cname = itemconf.F_ItemName;
  2903. if (itemconf.F_ItemName.Contains("不读出"))
  2904. {
  2905. int index = itemconf.F_ItemName.IndexOf("不读出");
  2906. cname = itemconf.F_ItemName.Substring(0, index - 1);
  2907. //continue;
  2908. }
  2909. DataSet dsa = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 and F_QID='" + quesid + "'" + strtaskid + " and ltrim(rtrim(F_Answer))='" + itemconf.F_ItemName + "' and F_Expand3 IN (select F_Expand3 from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 " + strtaskid + " and F_Answer='" + contyname + "')");
  2910. DataTable dta = dsa.Tables[0];
  2911. if (dta.Rows.Count > 0)
  2912. {
  2913. dtnew.Rows[c][1] = dta.Rows[0][0];
  2914. if (total > 0)
  2915. {
  2916. dtnew.Rows[c][2] = Math.Round(decimal.Parse(dta.Rows[0][0].ToString()) / total * 100, 2).ToString() + "%";
  2917. }
  2918. else
  2919. {
  2920. dtnew.Rows[c][2] = 0;
  2921. }
  2922. }
  2923. c++;
  2924. }
  2925. #endregion
  2926. }
  2927. if (ques != "扫黑除恶" && ques != "巡防效果" && ques != "视频监控")
  2928. {
  2929. dtnew.DefaultView.Sort = "数量 DESC";
  2930. dtnew = dtnew.DefaultView.ToTable();
  2931. }
  2932. string sedate = DateTime.Parse(sdate).ToString("yyyy-MM-dd");
  2933. if (sdate != edate)
  2934. {
  2935. sedate = DateTime.Parse(sdate).ToString("yyyy-MM-dd") + "---" + DateTime.Parse(edate).ToString("yyyy-MM-dd");
  2936. }
  2937. NPOIHelper npoi = new NPOIHelper();
  2938. if (npoi.ExportToExcel2(excelname+sedate , dtnew, null) == "")
  2939. {
  2940. return Success("导出成功");
  2941. }
  2942. else
  2943. {
  2944. return Error("导出失败");
  2945. }
  2946. #endregion
  2947. }
  2948. #endregion
  2949. #region 导出统计调查问卷数量
  2950. /// <summary>
  2951. ///
  2952. /// </summary>
  2953. /// <param name="TaskID">任务id</param>
  2954. /// <param name="quesid">问题id</param>
  2955. /// <param name="countryid">乡镇id</param>
  2956. /// <param name="sdate">开始时间</param>
  2957. /// <param name="edate">结束时间</param>
  2958. /// <returns></returns>
  2959. public ActionResult GetTotalExpt(string TaskID, string countryid, string sdate, string edate)
  2960. {
  2961. if (string.IsNullOrEmpty(sdate))
  2962. {
  2963. sdate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  2964. //sdate = DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00";
  2965. }
  2966. if (string.IsNullOrEmpty(edate))
  2967. {
  2968. edate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  2969. }
  2970. string quesid = "48";
  2971. #region 新建输出表
  2972. DataTable dtnew = new DataTable();
  2973. dtnew.Columns.Add("分类");
  2974. dtnew.Columns.Add("数量", typeof(int));
  2975. dtnew.Rows.Add();
  2976. dtnew.Rows[0][0] = "系统量";
  2977. dtnew.Rows.Add();
  2978. dtnew.Rows[1][0] = "今日量";
  2979. var dsi = questionItemBLL.GetModelList(" F_QuestionId='" + quesid + "'");
  2980. if (dsi.Count > 0)
  2981. {
  2982. int c = 2;
  2983. foreach (var itemconf in dsi)
  2984. {
  2985. string cname = itemconf.F_ItemName;
  2986. if (!cname.Contains("都不是"))
  2987. {
  2988. dtnew.Rows.Add();
  2989. dtnew.Rows[c][0] = cname;
  2990. c++;
  2991. }
  2992. }
  2993. }
  2994. #endregion
  2995. string strtaskid = "";
  2996. if (!string.IsNullOrEmpty(TaskID))
  2997. {
  2998. strtaskid = " and F_TaskID='" + TaskID + "' ";
  2999. }
  3000. DataSet ds0 = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers ");
  3001. DataTable dt0 = ds0.Tables[0];
  3002. if (dt0.Rows.Count > 0)
  3003. {
  3004. dtnew.Rows[0][1] = dt0.Rows[0][0];
  3005. }
  3006. //今日量
  3007. DataSet ds1 = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,GETDATE() )=0 ");
  3008. DataTable dt1 = ds1.Tables[0];
  3009. if (dt1.Rows.Count > 0)
  3010. {
  3011. dtnew.Rows[1][1] = dt1.Rows[0][0];
  3012. }
  3013. #region 根据单位和QuestionItemID统计数量
  3014. int cou = 2;
  3015. //从数据字典表中获取乡镇信息(JBDW)
  3016. var dsc = dvItemBLL.GetModelList(" F_DictionaryFlag='XZQY'");
  3017. if (dsc.Count > 0)
  3018. {
  3019. foreach (var iconf in dsc)
  3020. {
  3021. DataSet dsa = DbHelperSQL.Query("select count(F_Expand3) from T_Call_OutAnswers where DATEDIFF(day,F_OptOn,'" + sdate + "')<=0 and DATEDIFF(day,F_OptOn,'" + edate + "')>=0 and ltrim(rtrim(F_Answer))='" + iconf.F_Name + "' " + strtaskid);
  3022. DataTable dta = dsa.Tables[0];
  3023. if (dta.Rows.Count > 0)
  3024. {
  3025. dtnew.Rows[cou][1] = dta.Rows[0][0];
  3026. }
  3027. cou++;
  3028. }
  3029. }
  3030. dtnew.DefaultView.Sort = "数量 DESC";
  3031. dtnew = dtnew.DefaultView.ToTable();
  3032. //return Success("获取调查问卷统计数据成功", dtnew);
  3033. string sedate = DateTime.Parse(sdate).ToString("yyyy-MM-dd");
  3034. if (sdate != edate)
  3035. {
  3036. sedate = DateTime.Parse(sdate).ToString("yyyy-MM-dd") + "---" + DateTime.Parse(edate).ToString("yyyy-MM-dd");
  3037. }
  3038. NPOIHelper npoi = new NPOIHelper();
  3039. if (npoi.ExportToExcel2("调查问卷统计数据"+sedate , dtnew, null) == "")
  3040. {
  3041. return Success("导出成功");
  3042. }
  3043. else
  3044. {
  3045. return Error("导出失败");
  3046. }
  3047. #endregion
  3048. }
  3049. #endregion
  3050. #region 话务数据导出
  3051. /// <summary>
  3052. /// 话务量实时数据统计
  3053. /// </summary>
  3054. /// <param name="start"></param>
  3055. /// <param name="end"></param>
  3056. /// <returns></returns>
  3057. public ActionResult GetTelCount24ByDateExpt(DateTime? date)
  3058. {
  3059. if (date == null)
  3060. {
  3061. date = DateTime.Now;
  3062. }
  3063. string strdate = date.Value.ToString("yyyy-MM-dd");
  3064. //int[] hours = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 };
  3065. int[] hours = Enumerable.Range(0, 24).ToArray<int>();
  3066. int[] tcounts = new int[24];//来电数量
  3067. int[] ccounts = new int[24];//接通数量
  3068. int[] lcounts = new int[24];//留言数量
  3069. int[] gcounts = new int[24];//放弃数量
  3070. int[] scounts = new int[24];//骚扰数量
  3071. string ldsql = $"select DATEPART(HH,BeginTime) hours,COUNT(1) ccount from T_Call_CallRecords where CallType=0 and DATEDIFF(day, BeginTime, '" + strdate + "') = 0 group by DATEPART(HH, BeginTime) order by DATEPART(HH, BeginTime)";
  3072. string jtsql = $"select DATEPART(HH,BeginTime) hours,COUNT(1) ccount from T_Call_CallRecords where CallType=0 and CallState=1 and DATEDIFF(day, BeginTime, '" + strdate + "') = 0 group by DATEPART(HH, BeginTime) order by DATEPART(HH, BeginTime)";
  3073. string lysql = $"select DATEPART(HH,BeginTime) hours,COUNT(1) ccount from T_Call_CallRecords where CallType=0 and DealType=4 and DATEDIFF(day, BeginTime, '" + strdate + "') = 0 group by DATEPART(HH, BeginTime) order by DATEPART(HH, BeginTime)";
  3074. string srsql = $"select DATEPART(HH,BeginTime) hours,COUNT(1) ccount from T_Call_CallRecords where CallType=0 and DealType=1 and DATEDIFF(day, BeginTime, '" + strdate + "') = 0 group by DATEPART(HH, BeginTime) order by DATEPART(HH, BeginTime)";
  3075. DataTable dtld = DbHelperSQL.Query(ldsql).Tables[0];
  3076. DataTable dtjt = DbHelperSQL.Query(jtsql).Tables[0];
  3077. DataTable dtly = DbHelperSQL.Query(lysql).Tables[0];
  3078. DataTable dtsr = DbHelperSQL.Query(srsql).Tables[0];
  3079. for (int i = 0; i < hours.Length; i++)
  3080. {
  3081. var drld = dtld.Select("hours='" + hours[i] + "' ");
  3082. tcounts[i] = (from DataRow dr in drld select dr.Field<int>("ccount")).FirstOrDefault();
  3083. var drjt = dtjt.Select("hours='" + hours[i] + "' ");
  3084. ccounts[i] = (from DataRow dr in drjt select dr.Field<int>("ccount")).FirstOrDefault();
  3085. var drly = dtly.Select("hours='" + hours[i] + "' ");
  3086. lcounts[i] = (from DataRow dr in drly select dr.Field<int>("ccount")).FirstOrDefault();
  3087. var drsr = dtsr.Select("hours='" + hours[i] + "' ");
  3088. scounts[i] = (from DataRow dr in drsr select dr.Field<int>("ccount")).FirstOrDefault();
  3089. gcounts[i] = tcounts[i] - ccounts[i] - lcounts[i] - scounts[i];
  3090. }
  3091. DataTable dt = new DataTable();
  3092. dt.Columns.Add("小时");
  3093. dt.Columns.Add("来电数量");
  3094. dt.Columns.Add("接通数量");
  3095. dt.Columns.Add("放弃数量");
  3096. dt.Columns.Add("黑名单拒接数量");
  3097. for (int i = 0; i < 24; i++)
  3098. {
  3099. dt.Rows.Add();
  3100. dt.Rows[i][0] = hours[i];
  3101. dt.Rows[i][1] = tcounts[i];
  3102. dt.Rows[i][2] = ccounts[i];
  3103. dt.Rows[i][3] = gcounts[i];
  3104. dt.Rows[i][4] = scounts[i];
  3105. }
  3106. //return Success("加载成功", obj);
  3107. string sedate = Convert.ToDateTime (date).ToString("yyyy-MM-dd");
  3108. NPOIHelper npoi = new NPOIHelper();
  3109. if (npoi.ExportToExcel2("话务量实时数据统计" + sedate, dt, null) == "")
  3110. {
  3111. return Success("导出成功");
  3112. }
  3113. else
  3114. {
  3115. return Error("导出失败");
  3116. }
  3117. }
  3118. /// <summary>
  3119. /// 获取通话数量
  3120. /// </summary>
  3121. /// <param name="start"></param>
  3122. /// <param name="end"></param>
  3123. /// <returns></returns>
  3124. public ActionResult GetTelCountByDateExpt(DateTime? date)
  3125. {
  3126. string where = " ";
  3127. if (date == null)
  3128. {
  3129. date = DateTime.Now;
  3130. }
  3131. string strdate = date.Value.ToString("yyyy-MM-dd");
  3132. where += " and datediff(day,BeginTime,'" + strdate + "')=0";
  3133. //if (start == null && end == null)
  3134. //{
  3135. // where += " and datediff(day,BeginTime,getdate())=0";
  3136. //}
  3137. //else
  3138. //{
  3139. // if (start == null) { start = DateTime.Now; }
  3140. // if (end == null) { end = DateTime.Now; }
  3141. // where += $" and datediff(day,BeginTime,'{start.Value.ToString("yyyy-MM-dd")}')<=0 and datediff(day,BeginTime,'{end.Value.ToString("yyyy-MM-dd")}')>=0 ";
  3142. //}
  3143. //话务量
  3144. //DataTable dt = DbHelperSQL.Query(" select count(1) con from T_Call_CallRecords where 1=1 " + where).Tables[0];
  3145. //var hwcon = dt.Rows[0]["con"].ToString();//话务量
  3146. //外呼量
  3147. DataTable dt = DbHelperSQL.Query(" select count(1) con from T_Call_CallRecords where CallType=1 " + where).Tables[0];
  3148. var hwcon = dt.Rows[0]["con"].ToString();//话务量
  3149. //来话量
  3150. DataTable dt1 = DbHelperSQL.Query(" select count(1) con from T_Call_CallRecords where CallType=0 " + where).Tables[0];
  3151. var lhcon = dt1.Rows[0]["con"].ToString();//话务量
  3152. //接通量,通话时长
  3153. DataTable dt2 = DbHelperSQL.Query(" select count(1) con,sum(TalkLongTime) tltimes from T_Call_CallRecords where CallState=1 " + where).Tables[0];
  3154. var jtcon = dt2.Rows[0]["con"].ToString();//接通量
  3155. var ths = dt2.Rows[0]["tltimes"];//通话时长
  3156. var thtimes = "0";
  3157. if (ths != null && ths.ToString() != "")
  3158. {
  3159. thtimes = ths.ToString();
  3160. }
  3161. //string jtl = "-";//接通率
  3162. //if (hwcon != "0")
  3163. //{
  3164. // jtl = (double.Parse(jtcon) / double.Parse(hwcon)).ToString("0.00%");
  3165. //}
  3166. double jtl = 0;//接通率
  3167. if (hwcon != "0")
  3168. {
  3169. jtl = Math.Round((double.Parse(jtcon) * 100 / double.Parse(hwcon)), 2);
  3170. }
  3171. double pjthtimes = 0.00;//平均通话时长
  3172. if (jtcon != "0")
  3173. {
  3174. pjthtimes = Math.Round(double.Parse(thtimes) / double.Parse(jtcon));
  3175. }
  3176. var obj = new
  3177. {
  3178. hwcon = hwcon,
  3179. lhcon = lhcon,
  3180. jtcon = jtcon,
  3181. pjthtimes = pjthtimes,
  3182. jtl = jtl,
  3183. thtimes
  3184. };
  3185. DataTable dtt = new DataTable();
  3186. dtt.Columns.Add("外呼量");
  3187. dtt.Columns.Add("呼入量");
  3188. dtt.Columns.Add("接通量");
  3189. dtt.Columns.Add("平均通话时长");
  3190. dtt.Columns.Add("总通话时长");
  3191. dtt.Rows.Add();
  3192. dtt.Rows[0][0] = hwcon;
  3193. dtt.Rows[0][1] = lhcon;
  3194. dtt.Rows[0][2] = jtcon;
  3195. dtt.Rows[0][3] = pjthtimes;
  3196. dtt.Rows[0][4] = thtimes;
  3197. //return Success("加载成功", obj);
  3198. string sedate = Convert.ToDateTime (date).ToString("yyyy-MM-dd");
  3199. NPOIHelper npoi = new NPOIHelper();
  3200. if (npoi.ExportToExcel2("当日话务量总体统计" + sedate, dtt, null) == "")
  3201. {
  3202. return Success("导出成功");
  3203. }
  3204. else
  3205. {
  3206. return Error("导出失败");
  3207. }
  3208. }
  3209. /// <summary>
  3210. /// 坐席闲忙比例
  3211. /// </summary>
  3212. /// <param name="start"></param>
  3213. /// <param name="end"></param>
  3214. /// <returns></returns>
  3215. public ActionResult GetUserStateCount24ByDateExpt(DateTime? start, DateTime? end)
  3216. {
  3217. string where = " 1=1 ";
  3218. if (start == null && end == null)
  3219. {
  3220. where += " and datediff(day,OccurTime,getdate())=0";
  3221. }
  3222. else
  3223. {
  3224. if (start == null) { start = DateTime.Now; }
  3225. if (end == null) { end = DateTime.Now; }
  3226. where += $" and datediff(day,OccurTime,'{start.Value.ToString("yyyy-MM-dd")}')<=0 and datediff(day,OccurTime,'{end.Value.ToString("yyyy-MM-dd")}')>=0 ";
  3227. }
  3228. string sql = "select hor,type,COUNT(1) con from (select datepart(hh, OccurTime) hor, State type, agentid, count(1) con "
  3229. + " from rep_agent_state where " + where
  3230. + " group by datepart(hh, OccurTime), State, agentid ) t group by hor, type";
  3231. DataTable dt = DbHelperSQL.Query(sql).Tables[0];
  3232. //int[] hours = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 };
  3233. int[] hours = Enumerable.Range(0, 24).ToArray<int>();
  3234. double[] kxpercents = new double[24];
  3235. double[] thpercents = new double[24];
  3236. double[] zmpercents = new double[24];
  3237. for (int i = 0; i < hours.Length; i++)
  3238. {
  3239. var list = dt.Select(" hor=" + hours[i]);
  3240. int con = 0;//总量
  3241. foreach (var l in list)
  3242. {
  3243. con = con + Int32.Parse(l["con"].ToString());
  3244. }
  3245. //var con = list.Count() > 0 ? list[0]["con"].ToString() : "0";//总量
  3246. var kxlist = dt.Select(" hor=" + hours[i] + " and type=2 ");
  3247. var kxcon = kxlist.Count() > 0 ? kxlist[0]["con"].ToString() : "0";//空闲
  3248. var thlist = dt.Select(" hor=" + hours[i] + " and type=3 ");
  3249. var thcon = thlist.Count() > 0 ? thlist[0]["con"].ToString() : "0"; ;//通话中
  3250. var hhcllist = dt.Select(" hor=" + hours[i] + " and type=4 ");
  3251. var hhclcon = hhcllist.Count() > 0 ? hhcllist[0]["con"].ToString() : "0"; ;//话后处理中
  3252. var xxlist = dt.Select(" hor=" + hours[i] + " and type=5 ");
  3253. var xxcon = xxlist.Count() > 0 ? xxlist[0]["con"].ToString() : "0"; ;//小休
  3254. var zllist = dt.Select(" hor=" + hours[i] + " and type=6 ");
  3255. var zlcon = zllist.Count() > 0 ? zllist[0]["con"].ToString() : "0"; ;//被请求
  3256. if (con == 0)
  3257. {
  3258. kxpercents[i] = 0;
  3259. thpercents[i] = 0;
  3260. zmpercents[i] = 0;
  3261. }
  3262. else
  3263. {
  3264. double zm = double.Parse(hhclcon) + double.Parse(xxcon) + double.Parse(zlcon);
  3265. kxpercents[i] = Math.Round((double.Parse(kxcon) * 100 / con), 2);
  3266. thpercents[i] = Math.Round((double.Parse(thcon) * 100 / con), 2);
  3267. zmpercents[i] = Math.Round((zm * 100 / con), 2);//zmpercents[i] = Math.Round((double.Parse(xxcon) * 100 / con), 2);//2020-4-14调整置忙比例计算
  3268. }
  3269. }
  3270. DataTable dtt = new DataTable();
  3271. dtt.Columns.Add("小时");
  3272. dtt.Columns.Add("空闲比例");
  3273. dtt.Columns.Add("通话比例");
  3274. dtt.Columns.Add("置忙比例");
  3275. for (int i = 0; i < 24; i++)
  3276. {
  3277. dtt.Rows.Add();
  3278. dtt.Rows[i][0] = hours[i];
  3279. dtt.Rows[i][1] = kxpercents[i];
  3280. dtt.Rows[i][2] = thpercents[i];
  3281. dtt.Rows[i][3] = zmpercents[i];
  3282. }
  3283. //return Success("加载成功", obj);
  3284. string sedate = Convert.ToDateTime (start).ToString("yyyy-MM-dd");
  3285. if (start != end)
  3286. {
  3287. sedate = Convert.ToDateTime(start).ToString("yyyy-MM-dd") + "---" + Convert.ToDateTime(end).ToString("yyyy-MM-dd");
  3288. }
  3289. NPOIHelper npoi = new NPOIHelper();
  3290. if (npoi.ExportToExcel2("坐席闲忙比例统计" + sedate, dtt, null) == "")
  3291. {
  3292. return Success("导出成功");
  3293. }
  3294. else
  3295. {
  3296. return Error("导出失败");
  3297. }
  3298. }
  3299. /// <summary>
  3300. /// 平均通话时长统计
  3301. /// </summary>
  3302. /// <param name="start"></param>
  3303. /// <param name="end"></param>
  3304. /// <returns></returns>
  3305. public ActionResult GetAvgTelTime24ByDateExpt(DateTime? date)
  3306. {
  3307. if (date == null)
  3308. {
  3309. date = DateTime.Now;
  3310. }
  3311. string strdate = date.Value.ToString("yyyy-MM-dd");
  3312. //接通量,通话时长
  3313. string sql = " select datepart(hh,BeginTime) hor,count(1) con,sum(TalkLongTime) tltimes from T_Call_CallRecords WITH(NOLOCK) where "
  3314. + "CallState=1 and datediff(day, BeginTime, '" + strdate + "') = 0 group by datepart(hh,BeginTime) ";
  3315. DataTable dt = DbHelperSQL.Query(sql).Tables[0];
  3316. //int[] hours = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23 };
  3317. int[] hours = Enumerable.Range(0, 24).ToArray<int>();
  3318. double[] avgtimes = new double[24];
  3319. for (int i = 0; i < hours.Length; i++)
  3320. {
  3321. var jtlist = dt.Select(" hor=" + hours[i] + " ");
  3322. var jtcon = jtlist.Count() > 0 ? jtlist[0]["con"].ToString() : "0";
  3323. var thtimes = jtlist.Count() > 0 ? jtlist[0]["tltimes"].ToString() : "0";
  3324. double avgtime = 0.00;
  3325. if (jtcon != "0")
  3326. {
  3327. if (thtimes == "") { thtimes = "0"; }
  3328. avgtime = Math.Round(double.Parse(thtimes) / double.Parse(jtcon), 2);
  3329. }
  3330. avgtimes[i] = avgtime;
  3331. }
  3332. //var obj = new
  3333. //{
  3334. // hours = hours,
  3335. // avgtimes = avgtimes
  3336. //};
  3337. //return Success("加载成功", obj);
  3338. DataTable dtt = new DataTable();
  3339. dtt.Columns.Add("小时");
  3340. dtt.Columns.Add("平均通话时长");
  3341. for (int i = 0; i < 24; i++)
  3342. {
  3343. dtt.Rows.Add();
  3344. dtt.Rows[i][0] = hours[i];
  3345. dtt.Rows[i][1] = avgtimes[i];
  3346. }
  3347. //return Success("加载成功", obj);
  3348. string sedate = Convert.ToDateTime (date).ToString("yyyy-MM-dd");
  3349. NPOIHelper npoi = new NPOIHelper();
  3350. if (npoi.ExportToExcel2("平均通话时长统计" + sedate, dtt, null) == "")
  3351. {
  3352. return Success("导出成功");
  3353. }
  3354. else
  3355. {
  3356. return Error("导出失败");
  3357. }
  3358. }
  3359. /// <summary>
  3360. /// 外呼量统计
  3361. /// </summary>
  3362. /// <param name="start"></param>
  3363. /// <param name="end"></param>
  3364. /// <returns></returns>
  3365. public ActionResult GetCallOutDataExpt(string date, string edate)
  3366. {
  3367. if (string.IsNullOrEmpty(date))
  3368. {
  3369. date = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  3370. //sdate = DateTime.Now.ToString("yyyy-MM") + "-01 00:00:00";
  3371. }
  3372. if (string.IsNullOrEmpty(edate))
  3373. {
  3374. edate = date;
  3375. //edate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  3376. }
  3377. int total = Int32.Parse(DbHelperSQL.GetSingle("select COUNT(1) from T_Call_CallRecords where CallType=1 and DATEDIFF(day,BeginTime,'" + date + "')<=0 and DATEDIFF(day,BeginTime,'" + edate + "')>=0").ToString());
  3378. int wh = Int32.Parse(DbHelperSQL.GetSingle("select COUNT(1) from T_Call_CallRecords where CallType=1 and DATEDIFF(day,BeginTime,'" + date + "')<=0 and DATEDIFF(day,BeginTime,'" + edate + "')>=0").ToString());
  3379. int jt = Int32.Parse(DbHelperSQL.GetSingle("select COUNT(1) from T_Call_CallRecords where CallType=1 and CallState=1 and DATEDIFF(day,BeginTime,'" + date + "')<=0 and DATEDIFF(day,BeginTime,'" + edate + "')>=0").ToString());
  3380. int jdl = Int32.Parse(DbHelperSQL.GetSingle("select COUNT(1) from T_Wo_WorkOrder where CallID IN(select CallID from T_Call_CallRecords where CallType=1 and DATEDIFF(day,BeginTime,'" + date + "')<=0 and DATEDIFF(day,BeginTime,'" + edate + "')>=0) AND IsDel=0").ToString());
  3381. DataTable dtnew = new DataTable();
  3382. dtnew.Columns.Add("分类");
  3383. dtnew.Columns.Add("数量");
  3384. //dtnew.Columns.Add("比例");
  3385. dtnew.Rows.Add();
  3386. dtnew.Rows[0][0] = "外呼量";
  3387. dtnew.Rows.Add();
  3388. dtnew.Rows[1][0] = "接通量";
  3389. dtnew.Rows.Add();
  3390. dtnew.Rows[2][0] = "建单量";
  3391. dtnew.Rows[0][1] = wh;
  3392. dtnew.Rows[1][1] = jt;
  3393. dtnew.Rows[2][1] = jdl;
  3394. //if (total > 0)
  3395. //{
  3396. // dtnew.Rows[0][2] = Math.Round((double.Parse(wh.ToString()) * 100 / total), 2) + "%";
  3397. //}
  3398. //else
  3399. //{ dtnew.Rows[0][2] = 0; }
  3400. //if (wh > 0)
  3401. //{
  3402. // dtnew.Rows[1][2] = Math.Round((double.Parse(jt.ToString()) * 100 / wh), 2) + "%";
  3403. //}
  3404. //else
  3405. //{ dtnew.Rows[1][2] = 0; }
  3406. //if (jt > 0)
  3407. //{
  3408. // dtnew.Rows[2][2] = Math.Round((double.Parse(jdl.ToString()) * 100 / jt), 2) + "%";
  3409. //}
  3410. //else
  3411. //{ dtnew.Rows[2][2] = 0; }
  3412. string sedate = Convert.ToDateTime (date).ToString("yyyy-MM-dd");
  3413. NPOIHelper npoi = new NPOIHelper();
  3414. if (npoi.ExportToExcel2("外呼量统计" + sedate, dtnew, null) == "")
  3415. {
  3416. return Success("导出成功");
  3417. }
  3418. else
  3419. {
  3420. return Error("导出失败");
  3421. }
  3422. }
  3423. #endregion
  3424. }
  3425. }