Нет описания

IndexController.cs 76KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668
  1. using CallCenter.Utility;
  2. using CallCenterApi.Common;
  3. using CallCenterApi.DB;
  4. using CallCenterApi.Interface.Controllers.Base;
  5. using CallCenterApi.Interface.Models.Input;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Data;
  9. using System.Linq;
  10. using System.Web;
  11. using System.Web.Caching;
  12. using System.Web.Mvc;
  13. namespace CallCenterApi.Interface.Controllers
  14. {
  15. public class IndexController : BaseController
  16. {
  17. private BLL.T_Sys_UserAccount userBLL = new BLL.T_Sys_UserAccount();
  18. private BLL.T_Sys_Function moduleFunctionBLL = new BLL.T_Sys_Function();
  19. private BLL.T_Sys_RoleFunction roleFunctionBLL = new BLL.T_Sys_RoleFunction();
  20. private BLL.T_Sys_RoleInfo rolebll = new BLL.T_Sys_RoleInfo();
  21. private BLL.T_Msg_Chat bllchat = new BLL.T_Msg_Chat();
  22. private BLL.T_Msg_Chat_Map bllmap = new BLL.T_Msg_Chat_Map();
  23. private readonly BLL.T_Sys_UserAccount userAccount = new BLL.T_Sys_UserAccount();
  24. private BLL.T_Sys_SystemConfig configBll = new BLL.T_Sys_SystemConfig();
  25. private BLL.T_Bus_WorkOrder workorderBLL = new BLL.T_Bus_WorkOrder();
  26. /// <summary>
  27. /// 获取菜单
  28. /// </summary>
  29. /// <returns></returns>
  30. [Authority]
  31. public ActionResult GetCount()
  32. {
  33. int zxdcl = 0;
  34. string zxdclsql = "";
  35. if (User.F_RoleCode != "GLY" && User.F_RoleCode != "SPZ" && User.F_RoleCode != "SPZJZ" && User.F_RoleCode != "ZXLD" && User.F_RoleCode != "YSZY" && User.F_RoleCode != "DDZG" && User.F_RoleCode != "MTDD" && User.F_RoleCode != "DMTSH")
  36. {
  37. if (User.F_RoleCode != "ZJZY" && User.F_RoleCode != "ZXHWY")
  38. zxdclsql += " and F_CreateUser='" + User.F_UserCode + "'";
  39. }
  40. zxdclsql += "and F_ToBereply=0" ;
  41. zxdclsql += "and (F_IsReturn !='1' or F_IsReturn is null)";
  42. string sqlzxdcl = "SELECT count(1) from T_Bus_WorkOrder where F_IsDelete=0 " + zxdclsql;
  43. zxdcl = Int32.Parse(DbHelperSQL.Query(sqlzxdcl).Tables[0].Rows[0][0].ToString());
  44. int gdbh = 0;
  45. string gdbhsql = " and F_WorkState in (0,10) and F_IsReturn=1";
  46. if (User.F_RoleCode != "GLY"
  47. && User.F_RoleCode != "SPZ" && User.F_RoleCode != "SPZJZ" && User.F_RoleCode != "DDZG")
  48. {
  49. gdbhsql += " and F_CreateUser='" + User.F_UserCode + "'";
  50. }
  51. string sqlgdbh = "SELECT count(1) from T_Bus_WorkOrder where F_IsDelete=0 " + gdbhsql;
  52. gdbh = Int32.Parse(DbHelperSQL.Query(sqlgdbh).Tables[0].Rows[0][0].ToString());
  53. int ybdhf = 0;
  54. string ybdhfsql = "";
  55. if (User.F_RoleCode != "GLY"
  56. && User.F_RoleCode != "SPZ" && User.F_RoleCode != "SPZJZ" && User.F_RoleCode != "ZXLD" && User.F_RoleCode != "YSZY" && User.F_RoleCode != "DDZG" && User.F_RoleCode != "MTDD" && User.F_RoleCode != "DMTSH")
  57. {
  58. if (User.F_RoleCode != "ZJZY" && User.F_RoleCode != "ZXHWY")
  59. ybdhfsql += " and F_CreateUser='" + User.F_UserCode + "'";
  60. }
  61. ybdhfsql += "and F_ToBereply=1";
  62. ybdhfsql += " and F_WorkState = '6' ";
  63. ybdhfsql += "and F_WorkOrderID not in (select F_WorkOrderID from T_Bus_RemindRecord where F_Type=1 and F_IsDelete=0and (F_Content != '推诿工单' or F_Content is null ) and F_State!=2)";
  64. string sqlybdhf = "SELECT count(1) from T_Bus_WorkOrder where F_IsDelete=0 " + ybdhfsql;
  65. ybdhf = Int32.Parse(DbHelperSQL.Query(sqlybdhf).Tables[0].Rows[0][0].ToString());
  66. var obj = new
  67. {
  68. zxdcl,
  69. gdbh,
  70. ybdhf
  71. };
  72. return Success("成功", obj);
  73. }
  74. /// <summary>
  75. /// 获取菜单
  76. /// </summary>
  77. /// <returns></returns>
  78. [Authority]
  79. public ActionResult GetMenu()
  80. {
  81. var fids = new BLL.T_Sys_RoleFunction().GetModelList(" F_RoleId='" + User.F_RoleId + "'").Select(p => p.F_FunctionId).ToList();
  82. if (fids.Count > 0)
  83. {
  84. var ids = string.Join(",", fids);
  85. var dt = new BLL.T_Sys_Function().GetList(0, " F_FunctionId in (" + ids + ") and F_State=1 and F_ParentId=-1 ", " F_Sort asc").Tables[0];
  86. dt.Columns.Add("item", typeof(object));
  87. foreach (DataRow dr in dt.Rows)
  88. {
  89. var item = new BLL.T_Sys_Function().GetList(0, " F_FunctionId in (" + ids + ") and F_State=1 and F_ParentId=" + dr["F_FunctionId"].ToString(), " F_Sort asc").Tables[0];
  90. dr["item"] = item;
  91. item.Columns.Add("item", typeof(object));
  92. foreach (DataRow dv in item.Rows )
  93. {
  94. dv["item"] = new BLL.T_Sys_Function().GetList(0, " F_FunctionId in (" + ids + ") and F_State=1 and F_ParentId=" + dv["F_FunctionId"].ToString(), " F_Sort asc").Tables[0];
  95. }
  96. }
  97. return Success("成功", dt);
  98. }
  99. else
  100. {
  101. return Error("失败");
  102. }
  103. }
  104. /// <summary>
  105. /// 上传用户图片
  106. /// </summary>
  107. /// <returns></returns>
  108. [Authority]
  109. public ActionResult UploadTX()
  110. {
  111. string path = string.Empty;
  112. HttpPostedFile _upfile = RequestString.GetFile("upFile");
  113. if (_upfile != null)
  114. {
  115. //byte[] buffer = new Byte[(int)_upfile.InputStream.Length]; //声明文件长度的二进制类型
  116. //_upfile.InputStream.Read(buffer, 0, buffer.Length); //将文件转成二进制
  117. ImageUpload iu = new ImageUpload();
  118. iu.SavePath = "/Upload/ZXTX/";
  119. iu.PostFile = _upfile;
  120. iu.InFileName = User.F_UserCode + ".jpg";
  121. iu.SaveType = 1;
  122. iu.Upload();
  123. path = "/Upload/ZXTX/" + iu.OutFileName;
  124. User.F_See = path;
  125. new BLL.T_Sys_UserAccount().Update(User);
  126. return Success("成功", path);
  127. }
  128. else
  129. {
  130. return Error("请选择要上传的文件");
  131. }
  132. }
  133. /// <summary>
  134. /// 上传用户图片
  135. /// </summary>
  136. /// <returns></returns>
  137. [Authority]
  138. public ActionResult UploadTX64()
  139. {
  140. string path = string.Empty;
  141. string dataurl = HttpUtility.UrlDecode(RequestString.GetFormString("dataurl"));
  142. if (!string.IsNullOrEmpty(dataurl))
  143. {
  144. ImageUpload iu = new ImageUpload();
  145. iu.SavePath = "/Upload/ZXTX/";
  146. iu.DataUrl = dataurl;
  147. iu.InFileName = User.F_UserCode +".jpg";
  148. iu.SaveType = 1;
  149. iu.Upload64();
  150. int n = iu.Error;
  151. if (n == 0)
  152. {
  153. path = "/Upload/ZXTX/" + iu.OutFileName;
  154. User.F_See = path;
  155. new BLL.T_Sys_UserAccount().Update(User);
  156. return Success("成功", path);
  157. }
  158. else
  159. {
  160. string msg = string.Empty;
  161. switch (n)
  162. {
  163. case 1: msg = "请选择要上传的文件"; break;
  164. case 2: msg = "上传的文件类型不支持"; break;
  165. case 3: msg = "上传的文件过大"; break;
  166. case 4: msg = "未知错误"; break;
  167. }
  168. return Error(msg);
  169. }
  170. }
  171. else
  172. {
  173. return Error("请选择要上传的文件");
  174. }
  175. }
  176. /// <summary>
  177. /// 通话记录数量
  178. /// </summary>
  179. /// <returns></returns>
  180. [Authority]
  181. public ActionResult GetTelRecordsTotal()
  182. {
  183. var date = DateTime.Now;
  184. string strDate = date.ToString("yyyy-MM-dd");
  185. string strMonth = date.ToString("yyyy-MM");
  186. string where = " 1=1 ";
  187. if (User.F_RoleCode == "ZXHWY" || User.F_RoleCode == "ZXBZ")
  188. {
  189. where = " UserCode='" + User.F_UserCode + "' ";
  190. }
  191. BLL.T_Call_CallRecords bll = new BLL.T_Call_CallRecords();
  192. //var dayinlist = bll.GetModelList(where + " and CallType='0' and CONVERT(varchar(10),BeginTime, 23)='" + strDate + "' and CallState='1' ");
  193. //var dayoutlist = bll.GetModelList(where + " and CallType='1' and CONVERT(varchar(10),BeginTime, 23)='" + strDate + "' and CallState='1' ");
  194. //var moninlist = bll.GetModelList(where + " and CallType='0' and CONVERT(char(7),BeginTime,20)='" + strMonth + "' and CallState='1' ");
  195. //var monoutlist = bll.GetModelList(where + " and CallType='1' and CONVERT(char(7),BeginTime,20)='" + strMonth + "' and CallState='1' ");
  196. var dayinlist = bll.GetModelList(where + " and CallType='0' and CONVERT(varchar(10),BeginTime, 23)='" + strDate + "' ");
  197. var dayoutlist = bll.GetModelList(where + " and CallType='1' and CONVERT(varchar(10),BeginTime, 23)='" + strDate + "' ");
  198. var moninlist = bll.GetModelList(where + " and CallType='0' and CONVERT(char(7),BeginTime,20)='" + strMonth + "' ");
  199. var monoutlist = bll.GetModelList(where + " and CallType='1' and CONVERT(char(7),BeginTime,20)='" + strMonth + "' ");
  200. int daynocon = bll.GetList("CallType='0' and CONVERT(varchar(100),BeginTime, 23)='" + strDate + "' and CallState='0' ").Tables[0].Rows.Count;
  201. var obj = new
  202. {
  203. //dayin = new { count = dayinlist.Count, totaltime = dayinlist.Select(p => p.TalkLongTime).Sum() },
  204. //dayout = new { count = dayoutlist.Count, totaltime = dayoutlist.Select(p => p.TalkLongTime).Sum() },
  205. //monin = new { count = moninlist.Count, totaltime = moninlist.Select(p => p.TalkLongTime).Sum() },
  206. //monout = new { count = monoutlist.Count, totaltime = monoutlist.Select(p => p.TalkLongTime).Sum() },
  207. dayin = new { count = dayinlist.Count, totaltime = DateTimeConvert.parseTimeSecond(int .Parse(dayinlist.Select(p => p.TalkLongTime).Sum().ToString()), 0) },
  208. dayout = new { count = dayoutlist.Count, totaltime = DateTimeConvert.parseTimeSecond(int .Parse(dayoutlist.Select(p => p.TalkLongTime).Sum().ToString()), 0) },
  209. monin = new { count = moninlist.Count, totaltime = DateTimeConvert.parseTimeSecond(int .Parse(moninlist.Select(p => p.TalkLongTime).Sum().ToString()), 0) },
  210. monout = new { count = monoutlist.Count, totaltime = DateTimeConvert.parseTimeSecond(int .Parse(monoutlist.Select(p => p.TalkLongTime).Sum().ToString()), 0) },
  211. daynocon = daynocon
  212. };
  213. return Success("成功", obj);
  214. }
  215. /// <summary>
  216. /// 获取当月/当天的工单量(已完成,未完成)
  217. /// </summary>
  218. /// <returns></returns>
  219. [Authority]
  220. public ActionResult GetWorkTotal()
  221. {
  222. var date = DateTime.Now;//DateTime.Parse("2015-04-14"); //
  223. string strDate = date.ToString("yyyy-MM-dd");
  224. string strMonth = date.ToString("yyyy-MM");
  225. string where = " ";
  226. if (User.F_RoleCode == "ZXHWY")
  227. {
  228. where += " and F_CreateUser='" + User.F_UserCode + "' ";
  229. }
  230. //BLL.T_Wo_WorkOrderBase bll = new BLL.T_Wo_WorkOrderBase();
  231. //var list1 = bll.GetList(" F_USERID='" + User.F_UserId + "' and CONVERT(varchar(10),F_CREATEDATE, 23)='" + strDate + "' and F_WORKORDERSTATEID in (0,8) ").Tables[0];
  232. //var list2 = bll.GetList(" F_USERID='" + User.F_UserId + "' and CONVERT(varchar(10),F_CREATEDATE, 23)='" + strDate + "' and F_WORKORDERSTATEID in (4,5,6,7,9,12,13) ").Tables[0];
  233. //var list3 = bll.GetList(" F_USERID='" + User.F_UserId + "' and CONVERT(char(7),F_CREATEDATE,20)='" + strMonth + "' and F_WORKORDERSTATEID in (0,8) ").Tables[0];
  234. //var list4 = bll.GetList(" F_USERID='" + User.F_UserId + "' and CONVERT(char(7),F_CREATEDATE,20)='" + strMonth + "' and F_WORKORDERSTATEID in (4,5,6,7,9,12,13) ").Tables[0];
  235. BLL.T_Bus_WorkOrder bll = new BLL.T_Bus_WorkOrder();
  236. int daywc = Int32.Parse(DbHelperSQL.GetSingle("select COUNT(1) from T_Bus_WorkOrder where 1=1 and CONVERT(varchar(10),F_CreateTime, 23)='" + strDate + "' and F_WorkState =9 and F_IsDelete=0 " + where).ToString());
  237. int daywwc = Int32.Parse(DbHelperSQL.GetSingle("select COUNT(1) from T_Bus_WorkOrder where 1=1 and CONVERT(varchar(10),F_CreateTime, 23)='" + strDate + "' and F_WorkState !=9 and F_IsDelete=0 " + where).ToString());
  238. int monwc = Int32.Parse(DbHelperSQL.GetSingle("select COUNT(1) from T_Bus_WorkOrder where 1=1 and CONVERT(char(7),F_CreateTime,20)='" + strMonth + "' and F_WorkState =9 and F_IsDelete=0" + where).ToString());
  239. int monwwc = Int32.Parse(DbHelperSQL.GetSingle("select COUNT(1) from T_Bus_WorkOrder where 1=1 and CONVERT(char(7),F_CreateTime,20)='" + strMonth + "' and F_WorkState !=9 and F_IsDelete=0 " + where).ToString());
  240. //var list1 = bll.GetList(where + " and CONVERT(varchar(10),F_CreateTime, 23)='" + strDate + "' and F_WorkState =9 and F_IsDelete=0 ").Tables[0];
  241. //var list2 = bll.GetList(where + " and CONVERT(varchar(10),F_CreateTime, 23)='" + strDate + "' and F_WorkState !=9 and F_IsDelete=0 ").Tables[0];
  242. //var list3 = bll.GetList(where + " and CONVERT(char(7),F_CreateTime,20)='" + strMonth + "' and F_WorkState =9 and F_IsDelete=0 ").Tables[0];
  243. //var list4 = bll.GetList(where + " and CONVERT(char(7),F_CreateTime,20)='" + strMonth + "' and F_WorkState !=9 and F_IsDelete=0 ").Tables[0];
  244. var obj = new
  245. {
  246. daywc,
  247. daywwc ,
  248. monwc ,
  249. monwwc
  250. };
  251. return Success("成功", obj);
  252. }
  253. /// <summary>
  254. /// 当天每小时的总通话量和接通量
  255. /// </summary>
  256. /// <returns></returns>
  257. [Authority]
  258. public ActionResult GetTelRecordsByHour()
  259. {
  260. string where = " CallType=0 ";
  261. if (User.F_RoleCode == "ZXHWY")
  262. {
  263. where += " and UserCode='" + User.F_UserCode + "' ";
  264. }
  265. else
  266. {
  267. where += " and UserCode is not null ";
  268. }
  269. var date = DateTime.Now;//DateTime.Parse("2014-05-05"); //
  270. string strDate = date.ToString("yyyy-MM-dd");
  271. where += " and datediff(day,BeginTime,'" + strDate + "')=0";
  272. //string[] cols = { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24" };
  273. string[] cols = Enumerable.Range(0, 24).ToList<int>().ConvertAll<string>(x => x < 10 ? "0" + x.ToString() : x.ToString()).ToArray<string>();
  274. DataTable dtTel = DbHelperSQL.Query("select datepart(hour,BeginTime) hourtime,count(1) telcount from T_Call_CallRecords WITH(NOLOCK) where " + where + " group by datepart(hour,BeginTime) order by datepart(hour,BeginTime)").Tables[0];
  275. DataTable dtTelJT = DbHelperSQL.Query("select datepart(hour,BeginTime) hourtime,count(1) telcount from T_Call_CallRecords WITH(NOLOCK) where " + where + " and CallState=1 group by datepart(hour,BeginTime) order by datepart(hour,BeginTime)").Tables[0];
  276. //BLL.T_Call_CallRecords bll = new BLL.T_Call_CallRecords();
  277. int[] total = new int[24];
  278. int[] count = new int[24];
  279. for (int i = 0; i < cols.Length; i++)
  280. {
  281. var drTel = dtTel.Select("hourtime='" + (i+1) + "'");
  282. if (drTel.Length > 0)
  283. {
  284. int drTelCount = (from DataRow dr in drTel select dr.Field<int>("telcount")).FirstOrDefault();
  285. total[i] = drTelCount;
  286. }
  287. else
  288. total[i] = 0;
  289. var drTelJT = dtTelJT.Select("hourtime='" + (i + 1) + "'");
  290. if (drTelJT.Length > 0)
  291. {
  292. int drTelCount = (from DataRow dr in drTelJT select dr.Field<int>("telcount")).FirstOrDefault();
  293. count[i] = drTelCount;
  294. }
  295. else
  296. count[i] = 0;
  297. #region 优化前
  298. //var list = bll.GetModelList(where + " and CONVERT(varchar(13),BeginTime, 120)='" + (strDate + " " + cols[i]) + "' ");
  299. //var conlist = list.Where(p => p.CallState == 1);
  300. //total[i] = list.Count;
  301. //count[i] = conlist.Count();
  302. #endregion
  303. }
  304. var obj = new
  305. {
  306. col = cols,
  307. total = total,
  308. count = count
  309. };
  310. return Success("成功", obj);
  311. }
  312. /// <summary>
  313. /// 获取当月每天的工单量和话务量
  314. /// </summary>
  315. /// <returns></returns>
  316. [Authority]
  317. public ActionResult GetWorkTelByDay()
  318. {
  319. string telwhere = " 1=1 ";
  320. string workwhere = " F_IsDelete=0 ";
  321. if (User.F_RoleCode == "ZXHWY" || User.F_RoleCode == "ZXBZ")
  322. {
  323. telwhere += " and UserCode='" + User.F_UserCode + "' ";
  324. workwhere += " and F_CreateUser='" + User.F_UserCode + "' ";
  325. }
  326. else
  327. {
  328. telwhere += " and UserCode is not null ";
  329. }
  330. var date = DateTime.Now;//DateTime.Parse("2015-04-05"); //
  331. telwhere += " and datediff(month,BeginTime,'"+ date + "')=0";
  332. workwhere += " and datediff(month,F_CreateTime,'" + date + "')=0";
  333. string strDate = date.ToString("yyyy-MM");
  334. int days = DateTime.DaysInMonth(date.Year, date.Month);
  335. //string[] strcols = { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10",
  336. // "11", "12", "13", "14", "15", "16", "17", "18", "19", "20",
  337. // "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31" };
  338. string[] strcols = Enumerable.Range(1, 31).ToList<int>().ConvertAll<string>(x => x < 10 ? "0" + x.ToString() : x.ToString()).ToArray<string>();
  339. int newcount = 0;
  340. List<string> cols = strcols.Take(days).ToList();
  341. //BLL.T_Call_CallRecords telbll = new BLL.T_Call_CallRecords();
  342. //BLL.T_Bus_WorkOrder workbll = new BLL.T_Bus_WorkOrder();
  343. int[] teltotal = new int[days];
  344. int[] worktotal = new int[days];
  345. DataTable dtTel = DbHelperSQL.Query("select DAY(BeginTime) daytime,count(1) telcount from T_Call_CallRecords WITH(NOLOCK) where " + telwhere + " group by DAY(BeginTime) order by DAY(BeginTime)").Tables[0];
  346. DataTable dtOrder = DbHelperSQL.Query("select DAY(F_CreateTime) daytime,count(1) ordercount from T_Bus_WorkOrder WITH(NOLOCK) where " + workwhere+ " group by DAY(F_CreateTime) order by DAY(F_CreateTime)").Tables[0];
  347. for (int i = 0; i < cols.Count; i++)
  348. {
  349. var drTel = dtTel.Select("daytime='" + (i + 1) + "'");
  350. if (drTel.Length > 0)
  351. {
  352. int drTelCount = (from DataRow dr in drTel select dr.Field<int>("telcount")).FirstOrDefault();
  353. teltotal[i] = drTelCount;
  354. newcount = newcount + drTelCount;
  355. }
  356. else
  357. teltotal[i] = 0;
  358. var drOrder = dtOrder.Select("daytime='" + (i + 1) + "'");
  359. if (drOrder.Length > 0)
  360. {
  361. int drOrderCount = (from DataRow dr in drOrder select dr.Field<int>("ordercount")).FirstOrDefault();
  362. worktotal[i] = drOrderCount;
  363. }
  364. else
  365. worktotal[i] = 0;
  366. #region 优化前
  367. //var tellist = telbll.GetModelList(telwhere + " and CONVERT(varchar(10),BeginTime, 23)='" + (strDate + "-" + cols[i]) + "' ");
  368. //teltotal[i] = tellist.Count;
  369. //newcount = newcount + tellist.Count;
  370. //var worklist = workbll.GetList(workwhere + " and CONVERT(varchar(10),F_CreateTime, 23)='" + (strDate + "-" + cols[i]) + "' ").Tables[0];
  371. //worktotal[i] = worklist.Rows.Count;
  372. #endregion
  373. }
  374. var olddate = date.AddYears(-1);
  375. string strold1 = olddate.ToString("yyyy-MM") + "-1";
  376. string strold2 = olddate.ToString("yyyy-MM-dd");
  377. string bl = string.Empty;
  378. string oldwhere = " 1=1 ";
  379. if (User.F_RoleCode == "ZXHWY" || User.F_RoleCode == "ZXBZ")
  380. {
  381. oldwhere += " and UserCode='" + User.F_UserCode + "'";
  382. }
  383. else
  384. {
  385. oldwhere += " and UserCode is not null ";
  386. }
  387. DataTable dtOldTel = DbHelperSQL.Query("select count(1) telcount from T_Call_CallRecords WITH(NOLOCK) where " + oldwhere + " and CONVERT(varchar(10),BeginTime, 23)>='" + strold1 + "' and CONVERT(varchar(10),BeginTime, 23)<='" + strold2 + "' ").Tables[0];
  388. //var oldcount = telbll.GetModelList(oldwhere + " and CONVERT(varchar(10),BeginTime, 23)>='" + strold1 + "' and CONVERT(varchar(10),BeginTime, 23)<='" + strold2 + "' ").Count;
  389. int oldcount = 0;
  390. var drOldTel = dtOldTel.Select();
  391. if (drOldTel.Length > 0)
  392. {
  393. oldcount = (from DataRow dr in drOldTel select dr.Field<int>("telcount")).FirstOrDefault();
  394. }
  395. if (oldcount == newcount)
  396. {
  397. bl = " 持平";
  398. }
  399. else
  400. {
  401. if (newcount != 0)
  402. {
  403. if (oldcount > newcount)
  404. {
  405. bl = " ↓ " + (Convert.ToDouble(oldcount - newcount) / Convert.ToDouble(newcount)).ToString("0.0%");
  406. }
  407. else if (oldcount < newcount)
  408. {
  409. bl = " ↑ " + (Convert.ToDouble(newcount - oldcount) / Convert.ToDouble(newcount)).ToString("0.0%");
  410. }
  411. }
  412. else
  413. {
  414. bl = " --";
  415. }
  416. }
  417. var obj = new
  418. {
  419. bl = bl,
  420. col = cols.Select(p => p + "日"),
  421. worktotal = worktotal,
  422. teltotal = teltotal
  423. };
  424. return Success("成功", obj);
  425. }
  426. /// <summary>
  427. /// 获取未处理的工单数
  428. /// </summary>
  429. /// <returns></returns>
  430. [Authority]
  431. public ActionResult GetNoDealWorkTotal()
  432. {
  433. #region 与前端对应状态
  434. //0-待处理-话务员、班长 :0
  435. //1-待交办-调度专员:1
  436. //2-待查收-二级单位:2
  437. //3-退回审核中-调度专员:3
  438. //4-办理中(主办)-二级单位:2,4,8
  439. //5-延时审核中-调度专员:5
  440. //6-待回访-质检专员:6
  441. //7-已回访-质检专员:7
  442. //8-重办中-二级单位:8
  443. //9-已结案-所有:9
  444. //10-办理中(协办)-协办单位:2,4,8
  445. //11-待处理-三级网络单位:4,5 **办理中和延时审核的指派给三级单位的工单
  446. //12-待审核-话务班长:12
  447. //13-待督办-督办专员:提交督办的所有工单
  448. //15-超期工单-
  449. //16-重办驳回-质检专员:13
  450. #endregion
  451. #region 中心话务员(ZXHWY)
  452. if (User.F_RoleCode == "ZXHWY")
  453. {//中心话务员(ZXHWY)
  454. int[] sts = { 0 };
  455. string sql = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder where F_IsDelete=0 and F_WorkState in (0) "
  456. + "and F_CreateUser='" + User.F_UserCode + "' group by F_WorkState order by F_WorkState";
  457. var dt = DbHelperSQL.Query(sql).Tables[0];
  458. var obj = sts.Select(p =>
  459. {
  460. var list = dt.Select(" state=" + p);
  461. return new
  462. {
  463. state = p,
  464. con = list.Count() > 0 ? list[0]["con"].ToString() : "0"
  465. };
  466. });
  467. return Success("成功", obj);
  468. }
  469. #endregion
  470. #region 坐席班长/话务组长(ZXBZ)
  471. if (User.F_RoleCode == "ZXBZ")
  472. {//坐席班长/话务组长(ZXBZ)
  473. int[] sts = { 0, 12 };
  474. string sql = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder where F_IsDelete=0 and F_WorkState in (0,10) "
  475. + "and F_CreateUser='" + User.F_UserCode + "' group by F_WorkState order by F_WorkState";
  476. var dt = DbHelperSQL.Query(sql).Tables[0];
  477. var obj = sts.Select(p =>
  478. {
  479. var list = dt.Select(" state=" + p);
  480. if (p == 12)
  481. list = dt.Select(" state=10 ");
  482. return new
  483. {
  484. state = p,
  485. con = list.Count() > 0 ? list[0]["con"].ToString() : "0"
  486. };
  487. });
  488. return Success("成功", obj);
  489. }
  490. #endregion
  491. #region
  492. //20190315需求变动,待回访改为待审核 中心话务员只有待处理 话务组长有待处理和待审核 20190328 zhengbingbing
  493. //if (User.F_RoleCode == "ZXHWY" || User.F_RoleCode == "ZXBZ")
  494. //{//中心话务员(ZXHWY) 坐席班长/话务组长(ZXBZ)
  495. // int[] sts = { 0, 6 };
  496. // string sql = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder where F_IsDelete=0 and F_WorkState in (0,6) "
  497. // + "and F_CreateUser='" + User.F_UserCode + "' group by F_WorkState order by F_WorkState";
  498. // var dt = DbHelperSQL.Query(sql).Tables[0];
  499. // var obj = sts.Select(p => {
  500. // var list = dt.Select(" state=" + p);
  501. // return new
  502. // {
  503. // state = p,
  504. // con = list.Count() > 0 ? list[0]["con"].ToString() : "0"
  505. // };
  506. // });
  507. // return Success("成功", obj);
  508. //}
  509. #endregion
  510. #region 调度专员(ZXLD) 中心领导(ZXLDGLY) 中心领导管理员(ZXLDGLYGLY) 调度主管(DDZG)
  511. if (User.F_RoleCode == "ZXLD" || User.F_RoleCode == "YSZY" || User.F_RoleCode == "MTDD" || User.F_RoleCode == "ZXLDGLY" || User.F_RoleCode == "ZXLDGLYGLY" || User.F_RoleCode == "DMTSH")
  512. {//调度专员(ZXLD) 中心领导(ZXLDGLY) 中心领导管理员(ZXLDGLYGLY)
  513. int[] sts = { 1, 3, 5 };
  514. string sql = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder where F_IsDelete=0 and F_WorkState in (3,5) and "
  515. + "F_WorkOrderId in (select F_WorkOrderId from T_Bus_AssignedInfo where F_State=1 and F_IsDelete=0 and F_CreateUser='"
  516. + User.F_UserCode + "') group by F_WorkState order by F_WorkState";
  517. var dt = DbHelperSQL.Query(sql).Tables[0];
  518. DataRow dr = dt.NewRow();
  519. dr["state"] = 1;
  520. string sqlcon = "select count(1) from T_Bus_WorkOrder where F_IsDelete=0 and F_WorkState=1 and (F_WorkOrderId in "
  521. + "(select F_WorkOrderId from T_Bus_AssignedInfo where F_State=1 and F_IsDelete=0 and F_CreateUser='"
  522. + User.F_UserCode + "') or (select top 1 F_WorkOrderId from T_Bus_AssignedInfo where F_State=1 and F_IsDelete=0 "
  523. + "and T_Bus_AssignedInfo.F_WorkOrderId = T_Bus_WorkOrder.F_WorkOrderId ) is null)";
  524. dr["con"] = DbHelperSQL.GetSingle(sqlcon).ToString();
  525. dt.Rows.InsertAt(dr, 0);
  526. var obj = sts.Select(p =>
  527. {
  528. var list = dt.Select(" state=" + p);
  529. return new
  530. {
  531. state = p,
  532. con = list.Count() > 0 ? list[0]["con"].ToString() : "0"
  533. };
  534. });
  535. return Success("成功", obj);
  536. }
  537. #endregion
  538. #region 二级网络单位(WLDW)
  539. if (User.F_RoleCode == "WLDW")
  540. {//二级网络单位(WLDW)
  541. int[] sts = { 2, 4, 10, 8 };
  542. var sql = " where F_IsDelete=0 and F_WorkState in (2,4,8) and F_WorkOrderId in (select F_WorkOrderId from T_Bus_AssignedInfo "
  543. + " where F_State=1 and F_IsDelete=0 and F_IsSure in (0,1) and ISNULL(F_FeedbackTime, '')='' "
  544. //+ " and (F_MainDeptId = " + User.F_DeptId + " or ','+F_OtherDeptIds+',' like '," + User.F_DeptId + ",'))";
  545. + " and F_MainDeptId = " + User.F_DeptId + " )";
  546. string sql1 = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder " + sql + " group by F_WorkState order by F_WorkState";
  547. var dt = DbHelperSQL.Query(sql1).Tables[0];
  548. var obj = sts.Select(p =>
  549. {
  550. if (p != 10)
  551. {
  552. var list = dt.Select(" state=" + p);
  553. return new
  554. {
  555. state = p,
  556. con = list.Count() > 0 ? list[0]["con"].ToString() : "0"
  557. };
  558. }
  559. else
  560. {
  561. string sqlxb = " select count(1) from T_Bus_WorkOrder where F_IsDelete=0 and F_WorkState in (2,4,8) and F_WorkOrderId in "
  562. + "(select F_WorkOrderId from T_Bus_AssignedItemInfo where F_State=1 and F_IsDelete=0 and "
  563. + " ISNULL(F_FeedbackTime, '')='' and F_DeptId =" + User.F_DeptId + ")";
  564. return new
  565. {
  566. state = p,
  567. con = DbHelperSQL.GetSingle(sqlxb).ToString()
  568. };
  569. }
  570. });
  571. return Success("成功", obj);
  572. }
  573. #endregion
  574. #region 三级网络单位(EJWLDW)
  575. if (User.F_RoleCode == "EJWLDW")
  576. {//三级网络单位
  577. var sql = " where F_IsDelete=0 and F_WorkState in (4,5) and F_WorkOrderId in (select F_WorkOrderId from T_Bus_AssignedInfo_Next where F_State=1 "
  578. + "and F_IsDelete=0 and ISNULL(F_FeedbackTime, '')='' and F_MainDeptId =" + User.F_DeptId + " and F_IsSure in (0,1))";
  579. string sql1 = "select count(1) con from T_Bus_WorkOrder " + sql;
  580. var con = DbHelperSQL.GetSingle(sql1).ToString();
  581. var obj = new
  582. {
  583. state = 11,
  584. con = con
  585. };
  586. return Success("成功", obj);
  587. }
  588. #endregion
  589. #region 管理员(GLY)
  590. if (User.F_RoleCode == "GLY" || User.F_RoleCode == "SPZ" || User.F_RoleCode == "SPZJZ" || User.F_RoleCode == "SPZ" || User.F_RoleCode == "SPZJZ" || User.F_RoleCode == "DDZG")
  591. {//管理员
  592. int[] sts = { 0, 12, 1, 2, 3, 4, 10, 5, 6, 7, 8,16 };
  593. string sql = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder where F_IsDelete=0 and F_WorkState !=9 "
  594. + " group by F_WorkState order by F_WorkState";
  595. string sqlbh = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder where F_IsDelete=0 and F_WorkState in (13) "
  596. + " and F_WorkOrderID in (select F_WorkOrderId from T_Bus_Operation where F_Id in (select max(F_Id) from T_Bus_Operation where F_State = 11 and F_WorkOrderId in (select F_WorkOrderId from T_Bus_Operation where F_State=13) group by F_WorkOrderId) )" + " group by F_WorkState order by F_WorkState";
  597. var dt = DbHelperSQL.Query(sql).Tables[0];
  598. var dtbh = DbHelperSQL.Query(sqlbh).Tables[0];//重办驳回
  599. var obj = sts.Select(p =>
  600. {
  601. if (p != 10)
  602. {
  603. var list = dt.Select(" state=" + p);
  604. if (p == 12)
  605. list = dt.Select(" state=10 ");
  606. return new
  607. {
  608. state = p,
  609. con = list.Count() > 0 ? list[0]["con"].ToString() : "0"
  610. };
  611. }
  612. else if (p == 16)
  613. {
  614. var list = dtbh.Select();
  615. return new
  616. {
  617. state = p,
  618. con = list.Count() > 0 ? list[0]["con"].ToString() : "0"
  619. };
  620. }
  621. else
  622. {
  623. string sqlxb = " select count(1) from T_Bus_WorkOrder where F_IsDelete=0 and F_WorkState in (2,4,8) and F_WorkOrderId in "
  624. + "(select F_WorkOrderId from T_Bus_AssignedItemInfo where F_State=1 and F_IsDelete=0 and ISNULL(F_FeedbackTime, '')='' )";
  625. return new
  626. {
  627. state = p,
  628. con = DbHelperSQL.GetSingle(sqlxb).ToString()
  629. };
  630. }
  631. });
  632. return Success("成功", obj);
  633. }
  634. #endregion
  635. #region 质检专员(ZJZY)
  636. if (User.F_RoleCode == "ZJZY")
  637. {//质检专员
  638. int[] sts = { 6,7, 16 };
  639. string sql = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder where F_IsDelete=0 and F_WorkState in (6,7) "//+ "and F_CreateUser='" + User.F_UserCode
  640. + " group by F_WorkState order by F_WorkState";
  641. string sqlbh = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder where F_IsDelete=0 and F_WorkState in (13) "
  642. + " and F_WorkOrderID in (select F_WorkOrderId from T_Bus_Operation where F_Id in (select max(F_Id) from T_Bus_Operation where F_State = 11 and F_WorkOrderId in (select F_WorkOrderId from T_Bus_Operation where F_State=13) group by F_WorkOrderId) and F_CreateUser='" + User.F_UserCode + "')"+ " group by F_WorkState order by F_WorkState";
  643. var dt = DbHelperSQL.Query(sql).Tables[0];//已办理
  644. var dtbh = DbHelperSQL.Query(sqlbh).Tables[0];//重办驳回
  645. var obj = sts.Select(p =>
  646. {
  647. var list = dt.Select(" state=" + p);
  648. if (p == 16)
  649. list = dtbh.Select();
  650. return new
  651. {
  652. state = p,
  653. con = list.Count() > 0 ? list[0]["con"].ToString() : "0"
  654. };
  655. });
  656. return Success("成功", obj);
  657. }
  658. #endregion
  659. #region 督办专员(DBZY)
  660. if (User.F_RoleCode == "DBZY")
  661. {
  662. string sql = "select count(1) con from T_Bus_WorkOrder where F_IsDelete=0 and F_WorkOrderID in(select F_WorkOrderID from T_Bus_RemindRecord where F_State=0 and F_IsDelete=0 and F_Type =1 ) "
  663. + "and F_CreateUser='" + User.F_UserCode + "'";// + " group by F_WorkState order by F_WorkState";
  664. var con = DbHelperSQL.GetSingle(sql).ToString();
  665. int[] sts = { 13 };
  666. var obj = sts.Select(p =>
  667. {
  668. return new
  669. {
  670. state = p,
  671. con = con
  672. };
  673. });
  674. return Success("成功", obj);
  675. }
  676. #endregion
  677. return Success("成功");
  678. }
  679. #region 20191129 zhengbingbing 新增接口
  680. [Authority]
  681. public ActionResult GetNoDealOrderCounts()
  682. {
  683. if (User != null)
  684. {
  685. var IsEject = 0;//是否弹窗
  686. var roleModel = rolebll.GetModel(User.F_RoleId);
  687. if (roleModel != null)
  688. IsEject = roleModel.F_IsEject;
  689. object obj = new object();
  690. if (IsEject == 1)
  691. {
  692. #region 中心话务员(ZXHWY)
  693. if (User.F_RoleCode == "ZXHWY")
  694. {//中心话务员(ZXHWY)
  695. int[] sts = { 0 };
  696. string sql = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder WITH(NOLOCK) where F_IsDelete=0 and F_WorkState in (0) "
  697. + "and F_CreateUser='" + User.F_UserCode + "' group by F_WorkState order by F_WorkState";
  698. var dt = DbHelperSQL.Query(sql).Tables[0];
  699. obj = sts.Select(p =>
  700. {
  701. var list = dt.Select(" state=" + p);
  702. return new
  703. {
  704. state = p,
  705. con = list.Count() > 0 ? list[0]["con"].ToString() : "0"
  706. };
  707. });
  708. }
  709. #endregion
  710. #region 坐席班长/话务组长(ZXBZ)
  711. if (User.F_RoleCode == "ZXBZ")
  712. {//坐席班长/话务组长(ZXBZ)
  713. int[] sts = { 0, 12 };
  714. string sql = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder WITH(NOLOCK) where F_IsDelete=0 and F_WorkState in (0,10) "
  715. + "and F_CreateUser='" + User.F_UserCode + "' group by F_WorkState order by F_WorkState";
  716. var dt = DbHelperSQL.Query(sql).Tables[0];
  717. obj = sts.Select(p =>
  718. {
  719. var list = dt.Select(" state=" + p);
  720. if (p == 12)
  721. list = dt.Select(" state=10 ");
  722. return new
  723. {
  724. state = p,
  725. con = list.Count() > 0 ? list[0]["con"].ToString() : "0"
  726. };
  727. });
  728. }
  729. #endregion
  730. #region 调度专员(ZXLD) 中心领导(ZXLDGLY) 中心领导管理员(ZXLDGLYGLY)
  731. if (User.F_RoleCode == "ZXLD" || User.F_RoleCode == "YSZY" || User.F_RoleCode == "MTDD" || User.F_RoleCode == "ZXLDGLY" || User.F_RoleCode == "ZXLDGLYGLY" || User.F_RoleCode == "DMTSH")
  732. {//调度专员(ZXLD) 中心领导(ZXLDGLY) 中心领导管理员(ZXLDGLYGLY)
  733. int[] sts = { 1, 3, 5 };
  734. string sql = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder WITH(NOLOCK) where F_IsDelete=0 and F_WorkState in (3,5) and "
  735. + "F_WorkOrderId in (select F_WorkOrderId from T_Bus_AssignedInfo WITH(NOLOCK) where F_State=1 and F_IsDelete=0 and F_CreateUser='"
  736. + User.F_UserCode + "') group by F_WorkState order by F_WorkState";
  737. var dt = DbHelperSQL.Query(sql).Tables[0];
  738. DataRow dr = dt.NewRow();
  739. dr["state"] = 1;
  740. string sqlcon = "select count(1) from T_Bus_WorkOrder WITH(NOLOCK) where F_IsDelete=0 and F_WorkState=1 and (F_WorkOrderId in "
  741. + "(select F_WorkOrderId from T_Bus_AssignedInfo WITH(NOLOCK) where F_State=1 and F_IsDelete=0 and F_CreateUser='"
  742. + User.F_UserCode + "') or (select top 1 F_WorkOrderId from T_Bus_AssignedInfo WITH(NOLOCK) where F_State=1 and F_IsDelete=0 "
  743. + "and T_Bus_AssignedInfo.F_WorkOrderId = T_Bus_WorkOrder.F_WorkOrderId ) is null)";
  744. dr["con"] = DbHelperSQL.GetSingle(sqlcon).ToString();
  745. dt.Rows.InsertAt(dr, 0);
  746. obj = sts.Select(p =>
  747. {
  748. var list = dt.Select(" state=" + p);
  749. return new
  750. {
  751. state = p,
  752. con = list.Count() > 0 ? list[0]["con"].ToString() : "0"
  753. };
  754. });
  755. }
  756. #endregion
  757. #region 二级网络单位(WLDW)
  758. if (User.F_RoleCode == "WLDW")
  759. {//二级网络单位(WLDW)
  760. int[] sts = { 2, 4, 10, 8 };
  761. var sql = " where F_IsDelete=0 and F_WorkState in (2,4,8) and F_WorkOrderId in (select F_WorkOrderId from T_Bus_AssignedInfo "
  762. + " where F_State=1 and F_IsDelete=0 and F_IsSure in (0,1) and ISNULL(F_FeedbackTime, '')='' "
  763. //+ " and (F_MainDeptId = " + User.F_DeptId + " or ','+F_OtherDeptIds+',' like '," + User.F_DeptId + ",'))";
  764. + " and F_MainDeptId = " + User.F_DeptId + " )";
  765. string sql1 = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder WITH(NOLOCK) " + sql + " group by F_WorkState order by F_WorkState";
  766. var dt = DbHelperSQL.Query(sql1).Tables[0];
  767. obj = sts.Select(p =>
  768. {
  769. if (p != 10)
  770. {
  771. var list = dt.Select(" state=" + p);
  772. return new
  773. {
  774. state = p,
  775. con = list.Count() > 0 ? list[0]["con"].ToString() : "0"
  776. };
  777. }
  778. else
  779. {
  780. string sqlxb = " select count(1) from T_Bus_WorkOrder WITH(NOLOCK) where F_IsDelete=0 and F_WorkState in (2,4,8) and F_WorkOrderId in "
  781. + "(select F_WorkOrderId from T_Bus_AssignedItemInfo WITH(NOLOCK) where F_State=1 and F_IsDelete=0 and "
  782. + " ISNULL(F_FeedbackTime, '')='' and F_DeptId =" + User.F_DeptId + ")";
  783. return new
  784. {
  785. state = p,
  786. con = DbHelperSQL.GetSingle(sqlxb).ToString()
  787. };
  788. }
  789. });
  790. }
  791. #endregion
  792. #region 三级网络单位(EJWLDW)
  793. if (User.F_RoleCode == "EJWLDW")
  794. {//三级网络单位
  795. var sql = " where F_IsDelete=0 and F_WorkState in (4,5) and F_WorkOrderId in (select F_WorkOrderId from T_Bus_AssignedInfo_Next where F_State=1 "
  796. + "and F_IsDelete=0 and ISNULL(F_FeedbackTime, '')='' and F_MainDeptId =" + User.F_DeptId + " and F_IsSure in (0,1))";
  797. string sql1 = "select count(1) con from T_Bus_WorkOrder WITH(NOLOCK) " + sql;
  798. var con = DbHelperSQL.GetSingle(sql1).ToString();
  799. obj = new
  800. {
  801. state = 11,
  802. con = con
  803. };
  804. }
  805. #endregion
  806. #region 管理员(GLY)
  807. if (User.F_RoleCode == "GLY" || User.F_RoleCode == "SPZ" || User.F_RoleCode == "SPZJZ" || User.F_RoleCode == "SPZ" || User.F_RoleCode == "SPZJZ" || User.F_RoleCode == "DDZG")
  808. {//管理员
  809. int[] sts = { 0, 12, 1, 2, 3, 4, 10, 5, 6, 7, 8 };
  810. string sql = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder WITH(NOLOCK) where F_IsDelete=0 and F_WorkState !=9 "
  811. + " group by F_WorkState order by F_WorkState";
  812. string sqlbh = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder WITH(NOLOCK) where F_IsDelete=0 and F_WorkState in (13) "
  813. + " and F_WorkOrderID in (select F_WorkOrderId from T_Bus_Operation WITH(NOLOCK) where F_Id in (select max(F_Id) from T_Bus_Operation where F_State = 11 and F_WorkOrderId in (select F_WorkOrderId from T_Bus_Operation WITH(NOLOCK) where F_State=13) group by F_WorkOrderId) )" + " group by F_WorkState order by F_WorkState";
  814. var dt = DbHelperSQL.Query(sql).Tables[0];
  815. var dtbh = DbHelperSQL.Query(sqlbh).Tables[0];//重办驳回
  816. obj = sts.Select(p =>
  817. {
  818. if (p != 10)
  819. {
  820. var list = dt.Select(" state=" + p);
  821. if (p == 12)
  822. list = dt.Select(" state=10 ");
  823. return new
  824. {
  825. state = p,
  826. con = list.Count() > 0 ? list[0]["con"].ToString() : "0"
  827. };
  828. }
  829. else if (p == 16)
  830. {
  831. var list = dtbh.Select();
  832. return new
  833. {
  834. state = p,
  835. con = list.Count() > 0 ? list[0]["con"].ToString() : "0"
  836. };
  837. }
  838. else
  839. {
  840. string sqlxb = " select count(1) from T_Bus_WorkOrder WITH(NOLOCK) where F_IsDelete=0 and F_WorkState in (2,4,8) and F_WorkOrderId in "
  841. + "(select F_WorkOrderId from T_Bus_AssignedItemInfo WITH(NOLOCK) where F_State=1 and F_IsDelete=0 and ISNULL(F_FeedbackTime, '')='' )";
  842. return new
  843. {
  844. state = p,
  845. con = DbHelperSQL.GetSingle(sqlxb).ToString()
  846. };
  847. }
  848. });
  849. }
  850. #endregion
  851. #region 质检专员(ZJZY)
  852. if (User.F_RoleCode == "ZJZY")
  853. {//质检专员
  854. int[] sts = { 6 };
  855. string sql = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder WITH(NOLOCK) where F_IsDelete=0 and F_WorkState in (6) "
  856. + " group by F_WorkState order by F_WorkState";
  857. string sqlbh = "select F_WorkState as state,count(1) con from T_Bus_WorkOrder WITH(NOLOCK) where F_IsDelete=0 and F_WorkState in (13) and F_WorkOrderID in (select F_WorkOrderId from T_Bus_Operation WITH(NOLOCK) where F_Id in (select max(F_Id) from T_Bus_Operation where F_State = 11 and F_WorkOrderId in (select F_WorkOrderId from T_Bus_Operation WITH(NOLOCK) where F_State=13) group by F_WorkOrderId) and F_CreateUser='" + User.F_UserCode + "')" + " group by F_WorkState order by F_WorkState";
  858. var dt = DbHelperSQL.Query(sql).Tables[0];//已办理
  859. var dtbh = DbHelperSQL.Query(sqlbh).Tables[0];//重办驳回
  860. obj = sts.Select(p =>
  861. {
  862. var list = dt.Select(" state=" + p);
  863. if (p == 16)
  864. list = dtbh.Select();
  865. return new
  866. {
  867. state = p,
  868. con = list.Count() > 0 ? list[0]["con"].ToString() : "0"
  869. };
  870. });
  871. }
  872. #endregion
  873. #region 督办专员(DBZY)
  874. if (User.F_RoleCode == "DBZY")
  875. {
  876. string sql = "select count(1) con from T_Bus_WorkOrder WITH(NOLOCK) where F_IsDelete=0 and F_WorkOrderID in(select F_WorkOrderID from T_Bus_RemindRecord WITH(NOLOCK) where F_State=0 and F_IsDelete=0 and F_Type =1 ) "
  877. + "and F_CreateUser='" + User.F_UserCode + "'";// + " group by F_WorkState order by F_WorkState";
  878. var con = DbHelperSQL.GetSingle(sql).ToString();
  879. int[] sts = { 13 };
  880. obj = sts.Select(p =>
  881. {
  882. return new
  883. {
  884. state = p,
  885. con = con
  886. };
  887. });
  888. }
  889. #endregion
  890. }
  891. var newobj = new
  892. {
  893. IsEject,
  894. lists = obj
  895. };
  896. return Success("成功", newobj);
  897. }
  898. return Error("权限不足");
  899. }
  900. #endregion
  901. /// <summary>
  902. /// 及时提醒工单(获取最新工单数和内容)
  903. /// </summary>
  904. /// <returns></returns>
  905. [Authority]
  906. public ActionResult GetPromptOrder(string mid)
  907. {
  908. int recordCount = 0, fid = 0;
  909. DataTable dt = null;
  910. BLL.T_Bus_WorkOrder bll = new BLL.T_Bus_WorkOrder();
  911. int.TryParse(mid, out fid);
  912. //获取最大id
  913. int maxid = bll.GetMaxId() - 1;
  914. if (fid > 0)
  915. {
  916. dt = bll.GetList(" F_IsDelete=0 and F_Id > " + fid + " ").Tables[0];
  917. recordCount = dt.Rows.Count;
  918. }
  919. var obj = new
  920. {
  921. rows = dt,
  922. total = recordCount,
  923. maxid = maxid
  924. };
  925. return Content(obj.ToJson());
  926. }
  927. ///// <summary>
  928. ///// 及时提醒工单(获取最新工单数和内容) => 获取未处理的工单数
  929. ///// workorder\WorkOrderController.cs 接口:GetDWDealList
  930. ///// </summary>
  931. ///// <returns></returns>
  932. //[Authority]
  933. //public ActionResult GetNoDealOrder(string top)
  934. //{
  935. // DataTable dt = null;
  936. //
  937. // string strpageindex = RequestString.GetQueryString("page");
  938. // int pageindex = 1;
  939. // string strpagesize = RequestString.GetQueryString("top");
  940. // int pagesize = 10;
  941. // if (strpageindex.Trim() != "")
  942. // {
  943. // pageindex = Convert.ToInt32(strpageindex);
  944. // }
  945. // if (strpagesize.Trim() != "")
  946. // {
  947. // pagesize = Convert.ToInt32(strpagesize);
  948. // }
  949. //
  950. // string sql = " and F_IsDelete=0 and F_WorkState in (2,4,8)";
  951. // //管理员GLY
  952. // //if (User.F_RoleCode != "GLY")
  953. // //{
  954. // // sql += " and F_WorkOrderId in (select F_WorkOrderId from T_Bus_AssignedInfo where F_State=1 and F_IsDelete=0 and "
  955. // // + " ISNULL(F_FeedbackTime, '')='' and F_MainDeptId =" + User.F_DeptId + " and F_IsSure in (0,1)";
  956. // // sql += ")";
  957. // //}
  958. // sql += " and ( F_WorkOrderId in (select F_WorkOrderId from T_Bus_AssignedInfo where F_State=1 and F_IsDelete=0 and F_LimitTime<getdate() and isnull(F_FeedbackTime,'')='' and F_IsSure in (0,1) ";
  959. // if (User.F_RoleCode != "GLY")
  960. // {
  961. // sql += " and F_MainDeptId = '" + User.F_DeptId + "' ";
  962. // }
  963. // sql += ") or F_WorkOrderId in (select F_WorkOrderId from T_Bus_AssignedItemInfo where F_State=1 and F_IsDelete=0 and F_LimitTime<getdate() and ISNULL(F_FeedbackTime, '')='' ";
  964. // if (User.F_RoleCode != "GLY")
  965. // {
  966. // sql += " and F_DeptId = '" + User.F_DeptId + "' ";
  967. // }
  968. // sql += "))";
  969. // string cols = "F_Id,F_WorkOrderId,F_CusName,F_CusPhone,F_ComTitle,F_ComContent,F_SourceAddress,F_CreateTime,dbo.GetUserName(F_CreateUser) as UserName,dbo.GetDictionaryName(F_InfoType) as TypeName,dbo.GetDictionaryName(F_InfoSource) as SourceName ";
  970. // int recordCount = 0;
  971. // dt = BLL.PagerBLL.GetListPager(
  972. // "T_Bus_WorkOrder",
  973. // "F_WorkOrderId",
  974. // cols,
  975. // sql,
  976. // "ORDER BY F_CreateTime DESC",
  977. // pagesize,
  978. // pageindex,
  979. // true,
  980. // out recordCount);
  981. // var obj = new
  982. // {
  983. // rows = dt,
  984. // total = recordCount,
  985. // timeoutcount = DbHelperSQL.GetSingle(" select count(1) as con from T_Bus_WorkOrder where 1=1 " + sql)
  986. // };
  987. // return Content(obj.ToJson());
  988. //}
  989. /// <summary>
  990. /// 及时提醒工单(获取最新工单数和内容) => 获取未处理的工单数
  991. /// workorder\WorkOrderController.cs 接口:GetDWDealList
  992. /// </summary>
  993. /// <returns></returns>
  994. [Authority]
  995. public ActionResult GetNoDealOrder(int top)
  996. {
  997. DataTable dt = null;
  998. string sql = " and F_IsDelete=0 and F_WorkState in (2,4,8)";
  999. if (User.F_RoleCode == "ZXHWY")
  1000. {
  1001. sql += " and F_CreateUser = '" + User.F_UserCode + "' ";
  1002. }
  1003. sql += " and ( F_WorkOrderId in (select F_WorkOrderId from T_Bus_AssignedInfo WITH(NOLOCK) where F_State=1 and F_IsDelete=0 and isnull(F_FeedbackTime,'')='' and F_IsSure in (0,1) ";
  1004. if (User.F_RoleCode == "WLDW")
  1005. {
  1006. sql += " and F_MainDeptId = '" + User.F_DeptId + "') or F_WorkOrderId in (select F_WorkOrderId from T_Bus_AssignedItemInfo"
  1007. + " where F_State=1 and F_IsDelete=0 and ISNULL(F_FeedbackTime, '')='' and F_DeptId = '" + User.F_DeptId + "' ";
  1008. }
  1009. if (User.F_RoleCode == "ZXLD" || User.F_RoleCode == "YSZY" || User.F_RoleCode == "MTDD" || User.F_RoleCode == "DMTSH")
  1010. {
  1011. sql += " and F_CreateUser = '" + User.F_UserCode + "' ";
  1012. }
  1013. sql += "))";
  1014. string sqltimeout = " and F_IsDelete=0 and F_WorkState in (2,4,8)";
  1015. if (User.F_RoleCode == "ZXHWY")
  1016. {
  1017. sqltimeout += " and F_CreateUser = '" + User.F_UserCode + "' ";
  1018. }
  1019. sqltimeout += " and ( F_WorkOrderId in (select F_WorkOrderId from T_Bus_AssignedInfo WITH(NOLOCK) where F_State=1 and F_IsDelete=0 and F_LimitTime<getdate() and isnull(F_FeedbackTime,'')='' and F_IsSure in (0,1) ";
  1020. if (User.F_RoleCode == "WLDW")
  1021. {
  1022. sqltimeout += " and F_MainDeptId = '" + User.F_DeptId + "') or F_WorkOrderId in (select F_WorkOrderId from T_Bus_AssignedItemInfo WITH(NOLOCK) "
  1023. + " where F_State=1 and F_IsDelete=0 and F_LimitTime<getdate() and ISNULL(F_FeedbackTime, '')='' and F_DeptId = '" + User.F_DeptId + "' ";
  1024. }
  1025. if (User.F_RoleCode == "ZXLD" || User.F_RoleCode == "YSZY" || User.F_RoleCode == "MTDD" || User.F_RoleCode == "DMTSH")
  1026. {
  1027. sqltimeout += " and F_CreateUser = '" + User.F_UserCode + "' ";
  1028. }
  1029. sqltimeout += "))";
  1030. string cols = "F_Id,F_WorkOrderId,F_CusName,F_CusPhone,F_ComTitle,F_ComContent,F_SourceAddress,F_CreateTime,dbo.GetUserName(F_CreateUser) as UserName,dbo.GetDictionaryName(F_InfoType) as TypeName,dbo.GetDictionaryName(F_InfoSource) as SourceName ";
  1031. dt = DbHelperSQL.Query("select top "+ top+ " "+ cols + " from T_Bus_WorkOrder with (nolock) where 1=1 " + sql+ " ORDER BY F_CreateTime DESC ").Tables[0];
  1032. var obj = new
  1033. {
  1034. rows = dt,
  1035. total = DbHelperSQL.GetSingle(" select count(1) as con from T_Bus_WorkOrder with (nolock) where 1=1 " + sql),
  1036. timeoutcount = DbHelperSQL.GetSingle(" select count(1) as con from T_Bus_WorkOrder with (nolock) where 1=1 " + sqltimeout)
  1037. };
  1038. return Content(obj.ToJson());
  1039. }
  1040. #region 及时通讯
  1041. #region 模仿微信聊天(暂时不用)
  1042. /// <summary>
  1043. /// 即时聊天 - 角色信息
  1044. /// </summary>
  1045. /// <param name="pageIndex"></param>
  1046. /// <param name="pageSize"></param>
  1047. /// <param name="code"></param>
  1048. /// <param name="name"></param>
  1049. /// <returns></returns>
  1050. [Authority]
  1051. public ActionResult GetRoleList()
  1052. {
  1053. //var dtCache = CacheHelper.Get<DataTable>($"RoleList");
  1054. var dtCache = RedisHelper.StringGet("RoleList");
  1055. if (dtCache != null)
  1056. {
  1057. return Success("获取成功", dtCache.ToString().ToObject<DataTable>());
  1058. }
  1059. DataTable dt = new DataTable();
  1060. dt = rolebll.GetAllList().Tables[0];
  1061. //CacheHelper.Insert($"RoleList", dt, 10);
  1062. RedisHelper.StringSet("RoleList", dt.ToJson(), new TimeSpan(0, 10, 0));
  1063. return Success("获取成功", dt);
  1064. }
  1065. /// <summary>
  1066. /// 即时聊天 - 坐席人员
  1067. /// </summary>
  1068. /// <param name="pageIndex"></param>
  1069. /// <param name="pageSize"></param>
  1070. /// <param name="code"></param>
  1071. /// <param name="name"></param>
  1072. /// <returns></returns>
  1073. [Authority]
  1074. public ActionResult GetUserListByRoleId(int roleid, string keyword)
  1075. {
  1076. DataTable dt = new DataTable();
  1077. //取得前天日期
  1078. DateTime start = DateTime.Parse(DateTime.Now.AddDays(-2).ToShortDateString() + " 00:00:00");
  1079. string sql1 = "SELECT FromUserId,COUNT(1)AS counts FROM T_Msg_Chat_Map WHERE ToUserId = " + User.F_UserId + " AND ISNULL(IsRead,0) = 0 AND CreateDate > '" + start + "' group by FromUserId order by FromUserId";
  1080. var dt1 = DbHelperSQL.Query(sql1).Tables[0];
  1081. //缓存
  1082. //var dtCache = CacheHelper.Get<DataTable>($"UserList{roleid}");
  1083. var objCache = RedisHelper.StringGet($"UserList{roleid}");
  1084. if (objCache != null)
  1085. {
  1086. var dtCache = objCache.ToString().ToObject<DataTable>();
  1087. #region 提示统计
  1088. if (!string.IsNullOrEmpty(keyword))
  1089. {
  1090. dtCache = ToDataTable1(dtCache.Select("F_UserName LIKE '%" + keyword + "%' OR F_UserCode LIKE '%" + keyword + "%'"));
  1091. }
  1092. foreach (DataRow dr in dtCache.Rows)
  1093. {
  1094. var list = dt1.Select(" FromUserId=" + dr["F_UserId"]);
  1095. dr["counts"] = list.Count() > 0 ? list[0]["counts"].ToString() : "0";
  1096. }
  1097. #endregion
  1098. return Success("获取成功", dtCache);
  1099. }
  1100. //实时查询
  1101. var sql = " F_DeleteFlag=0 ";
  1102. if (roleid != 0)
  1103. {
  1104. sql += " and F_RoleId = " + roleid + "";
  1105. }
  1106. string sqldt = "SELECT F_UserId,F_UserCode,F_UserName,F_RoleId,F_SexFlag,F_See FROM T_Sys_UserAccount WHERE " + sql + " ";
  1107. dt = DbHelperSQL.Query(sqldt).Tables[0];
  1108. #region 提示统计
  1109. dt.Columns.Add("counts", typeof(string)); //统计
  1110. //string sql1 = "SELECT FromUserId,COUNT(1)AS counts FROM T_Msg_Chat_Map WHERE ToUserId = " + User.F_UserId + " AND ISNULL(IsRead,0) = 0 AND CreateDate > '" + start + "' group by FromUserId order by FromUserId";
  1111. //var dt1 = DbHelperSQL.Query(sql1).Tables[0];
  1112. foreach (DataRow dr in dt.Rows)
  1113. {
  1114. var list = dt1.Select(" FromUserId=" + dr["F_UserId"]);
  1115. dr["counts"] = list.Count() > 0 ? list[0]["counts"].ToString() : "0";
  1116. }
  1117. //缓存保存
  1118. //CacheHelper.Insert($"UserList{roleid}", dt, 10);
  1119. RedisHelper.StringSet($"UserList{roleid}",dt.ToJson(), new TimeSpan(0, 10, 0));
  1120. if (!string.IsNullOrEmpty(keyword))
  1121. {
  1122. dt = ToDataTable1(dt.Select("F_UserName LIKE '%" + keyword + "%' OR F_UserCode LIKE '%" + keyword + "%'"));
  1123. }
  1124. #endregion
  1125. return Success("获取成功", dt);
  1126. }
  1127. /// <summary>
  1128. /// 即时聊天 - 获取最新通讯(获取双方记录【聊天】)
  1129. /// </summary>
  1130. /// <returns></returns>
  1131. [Authority]
  1132. public ActionResult GetChatList(int fromuserId)
  1133. {
  1134. DataTable dt = null;
  1135. int recordCount = 0;
  1136. //取得前天日期
  1137. DateTime start = DateTime.Parse(DateTime.Now.AddDays(-2).ToShortDateString() + " 00:00:00");
  1138. //接收坐席Id
  1139. if (fromuserId > 0)
  1140. {
  1141. //条件(最近3天的记录)
  1142. string sql = " ISNULL(a.IsDelete,0) = 0 AND ISNULL(c.F_DeleteFlag,0) = 0 "; // AND ISNULL(b.IsRead,0) = 0
  1143. if (fromuserId > 0)
  1144. {
  1145. sql += " and (b.FromUserId = " + fromuserId + " or b.ToUserId = " + fromuserId + ") ";
  1146. }
  1147. if (User.F_UserId > 0)
  1148. {
  1149. sql += " and (b.ToUserId = " + User.F_UserId + " or b.FromUserId = " + User.F_UserId + ") ";
  1150. }
  1151. if (start != null)
  1152. {
  1153. sql += " and b.CreateDate > '" + start + "' ";
  1154. }
  1155. //查询(聊天记录)
  1156. string sql1 = "SELECT a.Id,a.FromUserId,a.Content,a.IsToAll,a.CreateDate,c.F_UserName FROM dbo.T_Msg_Chat a RIGHT JOIN dbo.T_Msg_Chat_Map b ON b.ChatId = a.Id LEFT JOIN dbo.T_Sys_UserAccount c ON c.F_UserId = a.FromUserId WHERE " + sql + " ORDER BY a.CreateDate ASC";
  1157. dt = DbHelperSQL.Query(sql1).Tables[0];
  1158. recordCount = dt.Rows.Count;
  1159. //修改(设置已读)
  1160. string sqlwhere = " ISNULL(IsRead,0) = 0 ";
  1161. if (fromuserId > 0)
  1162. {
  1163. sqlwhere += " and FromUserId = " + fromuserId + " ";
  1164. }
  1165. if (User.F_UserId > 0)
  1166. {
  1167. sqlwhere += " and ToUserId = " + User.F_UserId + " ";
  1168. }
  1169. string sqlwhere1 = "UPDATE dbo.T_Msg_Chat_Map SET IsRead = 1 WHERE " + sqlwhere + " ";
  1170. DbHelperSQL.ExecuteSql(sqlwhere1);
  1171. }
  1172. var obj = new
  1173. {
  1174. rows = dt,
  1175. total = recordCount
  1176. };
  1177. return Content(obj.ToJson());
  1178. }
  1179. #endregion
  1180. #region 及时通讯 - 通讯列表
  1181. /// <summary>
  1182. /// 即时通讯 - 获取通讯列表
  1183. /// </summary>
  1184. /// <returns></returns>
  1185. [Authority]
  1186. public ActionResult GetChatListSearch()
  1187. {
  1188. DataTable dt = new DataTable();
  1189. int fromid = RequestString.GetInt("fromid", 0);
  1190. int isread = RequestString.GetInt("isread", -1);
  1191. string strstarttime = HttpUtility.UrlDecode(RequestString.GetQueryString("strstarttime"));
  1192. string strendtime = HttpUtility.UrlDecode(RequestString.GetQueryString("strendtime"));
  1193. string strpageindex = RequestString.GetQueryString("page");
  1194. int pageindex = 1;
  1195. string strpagesize = RequestString.GetQueryString("pagesize");
  1196. int pagesize = 10;
  1197. //接收坐席Id
  1198. string sql = " and ISNULL(a.IsDelete,0) = 0 AND ISNULL(c.F_DeleteFlag,0) = 0 ";
  1199. #region 权限设置
  1200. //管理员,坐席班长
  1201. if (User.F_RoleCode == "GLY" || User.F_RoleCode == "SPZ" || User.F_RoleCode == "SPZJZ" || User.F_RoleCode == "DDZG" || User.F_RoleCode == "ZXBZ")
  1202. {
  1203. //
  1204. }
  1205. else {
  1206. sql += " and (b.ToUserId = " + User.F_UserId + " OR b.FromUserId = " + User.F_UserId + ") ";
  1207. }
  1208. #endregion
  1209. if (fromid > 0)
  1210. {
  1211. sql += " and (b.FromUserId = " + fromid + " or b.ToUserId = " + fromid + ") ";
  1212. }
  1213. if (isread != -1)
  1214. {
  1215. sql += " and ISNULL(b.IsRead,0) = " + isread + " ";
  1216. }
  1217. if (!string.IsNullOrEmpty(strstarttime))
  1218. {
  1219. sql += " and datediff(day,b.CreateDate,'" + strstarttime + "')<=0 ";
  1220. }
  1221. if (!string.IsNullOrEmpty(strendtime))
  1222. {
  1223. sql += " and datediff(day,b.CreateDate,'" + strendtime + "')>=0 ";
  1224. }
  1225. if (strpageindex.Trim() != "")
  1226. {
  1227. pageindex = Convert.ToInt32(strpageindex);
  1228. }
  1229. if (strpagesize.Trim() != "")
  1230. {
  1231. pagesize = Convert.ToInt32(strpagesize);
  1232. }
  1233. int recordCount = 0;
  1234. var col = "a.Id,b.FromUserId,b.ToUserId,a.Content,a.IsToAll,a.CreateDate,b.IsRead,c.F_UserName,c.F_UserCode,c.F_RoleId,d.F_UserName AS ToUserName,d.F_UserCode AS ToUserCode,d.F_RoleId AS ToRoleId";
  1235. dt = BLL.PagerBLL.GetListPager(
  1236. " dbo.T_Msg_Chat a RIGHT JOIN dbo.T_Msg_Chat_Map b ON b.ChatId = a.Id LEFT JOIN dbo.T_Sys_UserAccount c ON c.F_UserId = b.FromUserId LEFT JOIN dbo.T_Sys_UserAccount d ON d.F_UserId = b.ToUserId ",
  1237. "b.Id",
  1238. col,
  1239. sql,
  1240. " ORDER BY a.CreateDate ASC",
  1241. pagesize,
  1242. pageindex,
  1243. true,
  1244. out recordCount);
  1245. var obj = new
  1246. {
  1247. rows = dt,
  1248. total = recordCount
  1249. };
  1250. return Content(obj.ToJson());
  1251. }
  1252. #endregion
  1253. /// <summary>
  1254. /// 即时聊天 - 保存最新通讯
  1255. /// </summary>
  1256. /// <returns></returns>
  1257. [Authority]
  1258. public ActionResult SaveChatInfo(ChatInput input)
  1259. {
  1260. //发送坐席Id
  1261. var model = new Model.T_Msg_Chat();
  1262. var modelmap = new Model.T_Msg_Chat_Map();
  1263. model.Content = input.Content; //必填
  1264. model.VoiceUrl = input.VoiceUrl;
  1265. model.FromUserId = User.F_UserId;
  1266. model.ToUserId = input.ToUserId;
  1267. model.ToRoleId = input.ToRoleId;
  1268. //如果用户和角色都为0,则发送所有人
  1269. if (input.ToUserId == 0 && input.ToRoleId == 0) {
  1270. input.IsToAll = 1;
  1271. }
  1272. model.IsToAll = input.IsToAll;
  1273. int chatId = bllchat.Add(model);
  1274. if (chatId > 0)
  1275. {
  1276. modelmap.ChatId = chatId;
  1277. modelmap.FromUserId = User.F_UserId;
  1278. //群发聊天
  1279. if (input.IsToAll > 0)
  1280. {
  1281. var userList = userAccount.DataTableToList(userAccount.GetList(" F_DeleteFlag=0 ").Tables[0]);
  1282. foreach (var u in userList)
  1283. {
  1284. modelmap.ToUserId = u.F_UserId;
  1285. bllmap.Add(modelmap);
  1286. }
  1287. return Success("发送成功");
  1288. }
  1289. //角色聊天
  1290. if (input.ToRoleId > 0 && input.ToUserId == 0) {
  1291. var userList = userAccount.DataTableToList(userAccount.GetList(" F_DeleteFlag=0 AND F_RoleId=" + input.ToRoleId + " ").Tables[0]);
  1292. foreach (var u in userList)
  1293. {
  1294. modelmap.ToUserId = u.F_UserId;
  1295. bllmap.Add(modelmap);
  1296. }
  1297. return Success("发送成功");
  1298. }
  1299. //私人聊天
  1300. modelmap.ToUserId = input.ToUserId;
  1301. //关闭之前所有的信息
  1302. string sqlwhere1 = "UPDATE dbo.T_Msg_Chat_Map SET IsRead = 1 WHERE FromUserId = " + input.ToUserId + " or ToUserId = " + User.F_UserId + " ";
  1303. DbHelperSQL.ExecuteSql(sqlwhere1);
  1304. //后添加新的信息
  1305. bllmap.Add(modelmap);
  1306. return Success("发送成功");
  1307. }
  1308. return Error("发送失败");
  1309. }
  1310. /// <summary>
  1311. /// 即时通讯 - 获取最新通讯(单方查看)
  1312. /// </summary>
  1313. /// <param name="isread">0未读1已读2全部</param>
  1314. /// <returns></returns>
  1315. [Authority]
  1316. public ActionResult GetChatLists(int top,int fromid, int isread = 0)
  1317. {
  1318. DataTable dt = null;
  1319. int recordCount = 0;
  1320. //接收坐席Id
  1321. string sql = " ISNULL(a.IsDelete,0) = 0 AND ISNULL(c.F_DeleteFlag,0) = 0 "; // AND ISNULL(b.IsRead,0) = 0
  1322. if (top <= 0)
  1323. {
  1324. top = 50;
  1325. }
  1326. if (fromid > 0)
  1327. {
  1328. //sql += " and ISNULL(b.FromUserId,0) = " + fromid + " ";
  1329. sql += " and (b.FromUserId = " + fromid + " or b.ToUserId = " + fromid + ") ";
  1330. sql += " and (b.ToUserId = " + User.F_UserId + " or b.FromUserId = " + User.F_UserId + ") ";
  1331. }
  1332. else
  1333. {
  1334. sql += " and b.ToUserId = " + User.F_UserId + " ";
  1335. }
  1336. if (isread != 2)
  1337. {
  1338. sql += " and ISNULL(b.IsRead,0) = " + isread + " ";
  1339. }
  1340. //查询(聊天记录)
  1341. string sql1 = "SELECT TOP " + top + " a.Id,b.FromUserId,b.ToUserId,a.Content,a.IsToAll,a.CreateDate,b.IsRead,c.F_UserName,c.F_RoleId,c.F_SexFlag,c.F_See FROM dbo.T_Msg_Chat a RIGHT JOIN dbo.T_Msg_Chat_Map b ON b.ChatId = a.Id LEFT JOIN dbo.T_Sys_UserAccount c ON c.F_UserId = a.FromUserId WHERE " + sql + " ORDER BY a.CreateDate ASC";
  1342. dt = DbHelperSQL.Query(sql1).Tables[0];
  1343. recordCount = dt.Rows.Count;
  1344. var obj = new
  1345. {
  1346. rows = dt,
  1347. total = recordCount
  1348. };
  1349. return Content(obj.ToJson());
  1350. }
  1351. /// <summary>
  1352. /// 即时通讯 - 获取最新通讯数量(单方查看)
  1353. /// </summary>
  1354. /// <param name="isread">0未读1已读2全部</param>
  1355. /// <returns></returns>
  1356. [Authority]
  1357. public ActionResult GetChatCount(int top)
  1358. {
  1359. DataTable dt = null;
  1360. int recordCount = 0;
  1361. //接收坐席Id
  1362. if (top <= 0)
  1363. {
  1364. top = 50;
  1365. }
  1366. string sql = " ISNULL(a.IsDelete,0) = 0 AND ISNULL(c.F_DeleteFlag,0) = 0 "; // AND ISNULL(b.IsRead,0) = 0
  1367. sql += " and b.ToUserId = " + User.F_UserId + " and ISNULL(b.IsRead,0) = 0 ";
  1368. //查询(聊天记录)
  1369. string sql1 = "SELECT TOP " + top + " a.Id FROM dbo.T_Msg_Chat a WITH (NOLOCK) RIGHT JOIN dbo.T_Msg_Chat_Map b WITH (NOLOCK) ON b.ChatId = a.Id LEFT JOIN dbo.T_Sys_UserAccount c WITH (NOLOCK) ON c.F_UserId = a.FromUserId WHERE " + sql + " ORDER BY a.CreateDate ASC";
  1370. dt = DbHelperSQL.Query(sql1).Tables[0];
  1371. recordCount = dt.Rows.Count;
  1372. var obj = new
  1373. {
  1374. rows = "",
  1375. total = recordCount
  1376. };
  1377. return Content(obj.ToJson());
  1378. }
  1379. /// <summary>
  1380. /// 即时通讯 - 获取最新通讯信息(单方查看)
  1381. /// </summary>
  1382. /// <param name="id"></param>
  1383. /// <param name="User.F_UserId"></param>
  1384. /// <returns></returns>
  1385. [Authority]
  1386. public ActionResult GetChatInfoById(int id)
  1387. {
  1388. if (id <= 0)
  1389. {
  1390. return Error("参数出错");
  1391. }
  1392. DataTable dt = null;
  1393. string cid = string.Empty, content = string.Empty, createDate = string.Empty, userName = string.Empty, isread = string.Empty, roleId=string.Empty;
  1394. //接收坐席Id
  1395. string sql = " ISNULL(a.IsDelete,0) = 0 AND ISNULL(c.F_DeleteFlag,0) = 0 "; // AND ISNULL(b.IsRead,0) = 0
  1396. if (User.F_UserId > 0)
  1397. {
  1398. sql += " and b.ToUserId = " + User.F_UserId + " ";
  1399. }
  1400. if (id > 0)
  1401. {
  1402. sql += " and a.Id = " + id + " ";
  1403. }
  1404. //查询(聊天记录)
  1405. string sql1 = "SELECT a.Id,a.FromUserId,a.Content,a.IsToAll,a.CreateDate,b.IsRead,c.F_UserName,c.F_RoleId FROM dbo.T_Msg_Chat a RIGHT JOIN dbo.T_Msg_Chat_Map b ON b.ChatId = a.Id LEFT JOIN dbo.T_Sys_UserAccount c ON c.F_UserId = a.FromUserId WHERE " + sql + " ORDER BY a.CreateDate ASC";
  1406. dt = DbHelperSQL.Query(sql1).Tables[0];
  1407. if (dt.Rows.Count > 0)
  1408. {
  1409. cid = dt.Rows[0]["Id"].ToString();
  1410. content = dt.Rows[0]["Content"].ToString();
  1411. createDate = dt.Rows[0]["CreateDate"].ToString();
  1412. userName = dt.Rows[0]["F_UserName"].ToString();
  1413. roleId = dt.Rows[0]["F_RoleId"].ToString();
  1414. isread = dt.Rows[0]["IsRead"].ToString();
  1415. }
  1416. //修改(设置已读)
  1417. string sqlwhere = " ISNULL(IsRead,0) = 0 ";
  1418. if (User.F_UserId > 0)
  1419. {
  1420. sqlwhere += " and ToUserId = " + User.F_UserId + " ";
  1421. }
  1422. if (id > 0)
  1423. {
  1424. sqlwhere += " and ChatId = " + id + " ";
  1425. }
  1426. string sqlwhere1 = "UPDATE dbo.T_Msg_Chat_Map SET IsRead = 1 WHERE " + sqlwhere + " ";
  1427. DbHelperSQL.ExecuteSql(sqlwhere1);
  1428. var obj = new
  1429. {
  1430. id = cid,
  1431. username = userName,
  1432. content = content,
  1433. createdate = createDate,
  1434. roleId = roleId,
  1435. isread = isread
  1436. };
  1437. return Content(obj.ToJson());
  1438. }
  1439. /// <summary>
  1440. /// 即时通讯 - 关闭通讯信息(单方查看)
  1441. /// </summary>
  1442. /// <param name="id"></param>
  1443. /// <param name="User.F_UserId"></param>
  1444. /// <returns></returns>
  1445. [Authority]
  1446. public ActionResult CloseChat(int id)
  1447. {
  1448. //接收坐席Id
  1449. int recordCount = 0;
  1450. //修改(设置已读)
  1451. string sqlwhere = " ISNULL(IsRead,0) = 0 ";
  1452. if (User.F_UserId > 0)
  1453. {
  1454. sqlwhere += " and ToUserId = " + User.F_UserId + " ";
  1455. }
  1456. if (id > 0)
  1457. {
  1458. sqlwhere += " and ChatId = " + id + " ";
  1459. }
  1460. string sqlwhere1 = "UPDATE dbo.T_Msg_Chat_Map SET IsRead = 1 WHERE " + sqlwhere + " ";
  1461. int n = DbHelperSQL.ExecuteSql(sqlwhere1);
  1462. if (n > 0)
  1463. {
  1464. recordCount = n;
  1465. }
  1466. var obj = new
  1467. {
  1468. rows = "",
  1469. total = recordCount
  1470. };
  1471. return Content(obj.ToJson());
  1472. }
  1473. /// <summary>
  1474. /// DataRow转成DataTable
  1475. /// </summary>
  1476. /// <param name="rows"></param>
  1477. /// <returns></returns>
  1478. public DataTable ToDataTable1(DataRow[] rows)
  1479. {
  1480. if (rows == null || rows.Length == 0) return null;
  1481. DataTable tmp = rows[0].Table.Clone(); // 复制DataRow的表结构
  1482. foreach (DataRow row in rows)
  1483. {
  1484. tmp.ImportRow(row); // 将DataRow添加到DataTable中
  1485. }
  1486. return tmp;
  1487. }
  1488. #endregion
  1489. }
  1490. }