地铁二期项目正式开始

CallRecordController.cs 62KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574
  1. using CallCenter.Utility;
  2. using Newtonsoft.Json;
  3. using Newtonsoft.Json.Linq;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Data;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Web;
  10. using System.Web.Mvc;
  11. using YTSoft.BaseCallCenter.Model;
  12. using YTSoft.BaseCallCenter.MVCWeb.Commons;
  13. using YTSoft.BaseCallCenter.MVCWeb.Models;
  14. using YTSoft.Common;
  15. using YTSoft.DBUtility;
  16. namespace YTSoft.BaseCallCenter.MVCWeb.Controllers
  17. {
  18. public class CallRecordController : BaseController
  19. {
  20. //工单信息
  21. BLL.T_Wo_WorkOrderBase orderBLL = new BLL.T_Wo_WorkOrderBase();
  22. //客户信息
  23. BLL.T_Cus_CustomerBase cusBLL = new BLL.T_Cus_CustomerBase();
  24. //部门表
  25. BLL.T_Sys_Department deptBll = new BLL.T_Sys_Department();
  26. //用户表
  27. BLL.T_Sys_UserAccount userBll = new BLL.T_Sys_UserAccount();
  28. //通话记录
  29. BLL.T_Call_CallRecords recordBLL = new BLL.T_Call_CallRecords();
  30. #region 来电弹屏信息
  31. /// <summary>
  32. /// 来电弹屏页面
  33. /// </summary>
  34. /// <param name="workOrderNum">工单编号</param>
  35. /// <returns></returns>
  36. public ActionResult CallScreen(string workOrderNum)
  37. {
  38. //workOrderNum = "12";
  39. //实例化基础信息表
  40. CallScreenModel callScreenModel = new CallScreenModel();
  41. //获取业务工单信息
  42. if (!string.IsNullOrEmpty(workOrderNum))
  43. {
  44. callScreenModel.WorkOrderBaseModel = orderBLL.GetModel(int.Parse(workOrderNum.ToString()));
  45. if (callScreenModel.WorkOrderBaseModel==null)
  46. {
  47. callScreenModel.WorkOrderBaseModel = new Model.T_Wo_WorkOrderBase()
  48. {
  49. CustomerBaseModel = new T_Cus_CustomerBase { F_CustomerId = 0 },
  50. F_WORKORDERID = 0
  51. };
  52. }
  53. //如果电话号码不为空
  54. if (callScreenModel.WorkOrderBaseModel != null && !string.IsNullOrEmpty(callScreenModel.WorkOrderBaseModel.F_CUSTOMERTELEPHONE))
  55. {
  56. //获取客户基本信息
  57. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = cusBLL.GetCusInfoModel(callScreenModel.WorkOrderBaseModel.F_CUSTOMERTELEPHONE);
  58. }
  59. if (callScreenModel.WorkOrderBaseModel != null && !string.IsNullOrEmpty(callScreenModel.WorkOrderBaseModel.F_KSHADDRESSCODE))
  60. {
  61. Model.T_Call_CallRecords callRecordModel = recordBLL.GetModelByCallId(callScreenModel.WorkOrderBaseModel.F_KSHADDRESSCODE);
  62. if (callRecordModel != null)
  63. {
  64. if (callRecordModel.BusinessType != null)
  65. {
  66. //业务选择按键
  67. callScreenModel.SelectBussType = int.Parse(callRecordModel.BusinessType.ToString());
  68. }
  69. else
  70. {
  71. callScreenModel.SelectBussType =1;
  72. }
  73. }
  74. }
  75. }
  76. callScreenModel.WorkOrderTypeModelList = GetWorkTypeModelList();//业务类型字典表
  77. //获取处理年龄段字典表
  78. callScreenModel.AgeModelList = GetCodeType("NLD");
  79. return View(callScreenModel);
  80. }
  81. /// <summary>
  82. /// 业务工单录入页面
  83. /// </summary>
  84. /// <param name="workOrderNum">工单编号</param>
  85. /// <param name="flowid">业务类型</param>
  86. /// <returns></returns>
  87. public ActionResult CallWorkFolw(string workOrderNum, int? flowid)
  88. {
  89. //实例化基础信息表
  90. CallScreenModel callScreenModel = new CallScreenModel();
  91. //选择的业务类型
  92. if (flowid != null && flowid > 0)
  93. {
  94. callScreenModel.Flowid = flowid;
  95. }
  96. else
  97. {
  98. callScreenModel.Flowid = 0;
  99. }
  100. //获取业务工单信息
  101. if (!string.IsNullOrEmpty(workOrderNum))
  102. {
  103. callScreenModel.WorkOrderBaseModel = orderBLL.GetModel(int.Parse(workOrderNum.ToString()));
  104. if (callScreenModel.WorkOrderBaseModel == null)
  105. {
  106. callScreenModel.WorkOrderBaseModel = new Model.T_Wo_WorkOrderBase()
  107. {
  108. CustomerBaseModel = new T_Cus_CustomerBase { F_CustomerId = 0 },
  109. F_WORKORDERID = 0
  110. };
  111. }
  112. //如果电话号码不为空
  113. if (callScreenModel.WorkOrderBaseModel != null && !string.IsNullOrEmpty(callScreenModel.WorkOrderBaseModel.F_CUSTOMERTELEPHONE))
  114. {
  115. T_Cus_CustomerBase baseCusModel = cusBLL.GetCusInfoModel(callScreenModel.WorkOrderBaseModel.F_CUSTOMERTELEPHONE);
  116. if (baseCusModel != null && baseCusModel.F_CustomerId > 0)
  117. {
  118. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = baseCusModel;
  119. }
  120. else
  121. {
  122. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  123. }
  124. //选择的业务类型
  125. if (flowid != null && flowid > 0)
  126. {
  127. callScreenModel.BussnessContnet = GetTypeContenet(int.Parse(flowid.ToString()), callScreenModel.WorkOrderBaseModel.F_CREATEDATE.ToString());
  128. }
  129. }
  130. else
  131. {
  132. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  133. }
  134. //获取客户基本信息
  135. }
  136. //业务类型字典表
  137. callScreenModel.WorkOrderTypeModelList = GetWorkTypeModelList();
  138. //获取处理方式字典表
  139. callScreenModel.GoTypeModelList = GetCodeType("CLFS");
  140. //获取处理年龄段字典表
  141. callScreenModel.AgeModelList = GetCodeType("NLD");
  142. //获取部门列表
  143. callScreenModel.DepartmentList = deptBll.GetModelList("F_ParentId=0");
  144. callScreenModel.HistoryOrderList = historyBll.GetModelList("F_INSTANCEID=" + int.Parse(workOrderNum.ToString()));
  145. return View(callScreenModel);
  146. }
  147. //历史工单表
  148. BLL.T_Wo_WorkOrderHistory historyBll = new BLL.T_Wo_WorkOrderHistory();
  149. /// <summary>
  150. /// 业务工单录入页面
  151. /// </summary>
  152. /// <param name="workOrderNum">工单编号</param>
  153. /// <param name="flowid">业务类型</param>
  154. /// <returns></returns>
  155. public ActionResult EditCallWorkFolw(string workOrderNum)
  156. {
  157. //实例化基础信息表
  158. CallScreenModel callScreenModel = new CallScreenModel();
  159. //获取业务工单信息
  160. if (!string.IsNullOrEmpty(workOrderNum))
  161. {
  162. callScreenModel.WorkOrderBaseModel = orderBLL.GetModel(int.Parse(workOrderNum.ToString()));
  163. //如果电话号码不为空
  164. if (callScreenModel.WorkOrderBaseModel != null && !string.IsNullOrEmpty(callScreenModel.WorkOrderBaseModel.F_CUSTOMERTELEPHONE))
  165. {
  166. T_Cus_CustomerBase baseCusModel = cusBLL.GetCusInfoModel(callScreenModel.WorkOrderBaseModel.F_CUSTOMERTELEPHONE);
  167. if (baseCusModel != null && baseCusModel.F_CustomerId > 0)
  168. {
  169. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = baseCusModel;
  170. }
  171. else
  172. {
  173. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  174. }
  175. }
  176. else
  177. {
  178. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  179. }
  180. //获取客户基本信息
  181. if (!string.IsNullOrEmpty( callScreenModel.WorkOrderBaseModel.F_EMPCODE))
  182. {
  183. T_Cus_CustomerBase baseCusModel = cusBLL.GetCusInfoModel(1,callScreenModel.WorkOrderBaseModel.F_EMPCODE);
  184. if (baseCusModel != null && baseCusModel.F_CustomerId > 0)
  185. {
  186. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = baseCusModel;
  187. }
  188. else
  189. {
  190. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  191. }
  192. }
  193. }
  194. //业务类型字典表
  195. callScreenModel.WorkOrderTypeModelList = GetWorkTypeModelList();
  196. //获取处理方式字典表
  197. callScreenModel.GoTypeModelList = GetCodeType("CLFS");
  198. //回访满意度
  199. callScreenModel.MYdModelList = GetCodeType("khyjfl");
  200. //获取处理年龄段字典表
  201. callScreenModel.AgeModelList = GetCodeType("NLD");
  202. //获取部门列表
  203. callScreenModel.DepartmentList = deptBll.GetModelList("F_ParentId=0");
  204. return View(callScreenModel);
  205. }
  206. /// <summary>
  207. /// 编辑历史工单
  208. /// </summary>
  209. /// <param name="workOrderBaseModel"></param>
  210. /// <returns></returns>
  211. [AcceptVerbs(HttpVerbs.Post)]
  212. public bool workOrderEditData(T_Wo_WorkOrderBase workOrderBaseModel)
  213. {
  214. //工单来源
  215. //workOrderBaseModel.F_REPAIRMANID = 1;
  216. //workOrderBaseModel.F_WORKORDERFROM = "语音";
  217. if (workOrderBaseModel.CustomerBaseModel != null)
  218. {
  219. //最近联络方式
  220. if (workOrderBaseModel.F_REPAIRMANID.ToString() == "4")
  221. {
  222. workOrderBaseModel.CustomerBaseModel.F_Kind = "3";
  223. workOrderBaseModel.F_CUSTOMERTELEPHONE = workOrderBaseModel.CustomerBaseModel.F_Mobile;
  224. }
  225. else
  226. {
  227. workOrderBaseModel.CustomerBaseModel.F_Kind = workOrderBaseModel.F_REPAIRMANID.ToString();
  228. }
  229. workOrderBaseModel.CustomerBaseModel.F_CustomerNature = workOrderBaseModel.F_WORKORDERFROM;
  230. //业务类型
  231. workOrderBaseModel.CustomerBaseModel.F_IndustryId = workOrderBaseModel.F_REPAIRLEVEL;
  232. workOrderBaseModel.CustomerBaseModel.F_Url = workOrderBaseModel.F_ADSLACCOUNT;
  233. //修改客户基础信息
  234. int cusid = cusBLL.EditCusInfoModel(workOrderBaseModel.CustomerBaseModel);
  235. if (cusid > 0)
  236. {
  237. workOrderBaseModel.F_CUSTOMERID = cusid;
  238. }
  239. }
  240. return orderBLL.UpdateHistoryWorkOrderInfoModel(workOrderBaseModel);
  241. }
  242. /// <summary>
  243. /// 撤回历史工单
  244. /// </summary>
  245. /// <param name="workOrderBaseModel"></param>
  246. /// <returns></returns>
  247. [AcceptVerbs(HttpVerbs.Get)]
  248. public bool ResetWorkOrder(int workOrderId)
  249. {
  250. bool result = false;;
  251. int byid = F_UserID;
  252. string bycode = F_UserCode;
  253. string byname =F_UserName;
  254. int bmid = F_DeptId;
  255. string bmmc = "";
  256. if (byid>0) {
  257. YTSoft.BaseCallCenter.BLL.T_Sys_Department depBll = new BLL.T_Sys_Department();
  258. List<Model.T_Sys_Department> list = new List<T_Sys_Department>();
  259. list = depBll.GetModelList("F_DeptId=" + bmid);
  260. if (list.Count>0)
  261. {
  262. bmmc = list[0].F_DeptName.ToString();
  263. result= orderBLL.ResetWorkOrder(workOrderId, byid, byname, bmid, bmmc);
  264. }
  265. }
  266. return result;
  267. }
  268. /// <summary>
  269. /// 获取业务术语模板信息
  270. /// </summary>
  271. /// <param name="bussnessType">业务类型</param>
  272. /// <returns></returns>
  273. public string GetTypeContenet(int bussnessType, string creatDateTime)
  274. {
  275. try
  276. {
  277. //模板内容
  278. string bussContent = "";
  279. if (bussnessType > 0)
  280. {
  281. if (bussnessType > 0)
  282. {
  283. BLL.T_Wo_WorkOrderType bll = new BLL.T_Wo_WorkOrderType();
  284. Model.T_Wo_WorkOrderType orderTypeModel = new T_Wo_WorkOrderType();
  285. orderTypeModel = bll.GetModel(bussnessType);
  286. if (orderTypeModel != null && !string.IsNullOrEmpty(orderTypeModel.F_Remark))
  287. {
  288. bussContent += string.Format(orderTypeModel.F_Remark, DateTime.Parse(creatDateTime).ToString("f") + "分");
  289. }
  290. }
  291. }
  292. return bussContent;
  293. }
  294. catch (Exception ex)
  295. {
  296. }
  297. return null;
  298. }
  299. /// <summary>
  300. /// 保存用户信息
  301. /// </summary>
  302. /// <param name="workOrderBaseModel"></param>
  303. /// <returns></returns>
  304. [AcceptVerbs(HttpVerbs.Post)]
  305. public bool SaveCunInfo(T_Cus_CustomerBase CustomerBaseModel)
  306. {
  307. //客户属性
  308. if (string.IsNullOrEmpty(CustomerBaseModel.F_Kind))
  309. {
  310. CustomerBaseModel.F_Kind = "1";
  311. }
  312. if (string.IsNullOrEmpty(CustomerBaseModel.F_CustomerNature))
  313. {
  314. CustomerBaseModel.F_CustomerNature = "语音";
  315. }
  316. if (CustomerBaseModel.F_CustomerId > 0)
  317. {
  318. AddAction("t_cus_customerbase", CustomerBaseModel.F_CustomerId.ToMyString(), "更新客户信息", CustomerBaseModel.F_CustomerName.ToMyString());
  319. AddAction("t_cus_customerbase", CustomerBaseModel.F_CustomerId.ToMyString(), "更新客户信息", "数据:" + JsonConvert.SerializeObject(CustomerBaseModel), "关键信息");
  320. }
  321. else
  322. {
  323. AddAction("t_cus_customerbase", CustomerBaseModel.F_Telephone, "添加客户信息", CustomerBaseModel.F_CustomerName.ToMyString());
  324. AddAction("t_cus_customerbase", CustomerBaseModel.F_Telephone, "添加客户信息","数据:"+JsonConvert.SerializeObject(CustomerBaseModel), "关键信息");
  325. }
  326. return cusBLL.UpdateCusInfoModel(CustomerBaseModel);
  327. }
  328. /// <summary>
  329. /// 获取员工信息
  330. /// </summary>
  331. /// <param name="deptId">部门id</param>
  332. /// <returns></returns>
  333. public string GetDeptUsers(string deptId)
  334. {
  335. try
  336. {
  337. return JsonConvert.SerializeObject(userBll.GetModelList("F_DeptId=" + deptId));
  338. }
  339. catch (Exception ex)
  340. {
  341. }
  342. return null;
  343. }
  344. #endregion
  345. #region 微博工单
  346. /// <summary>
  347. /// 微信微博工单录入页面
  348. /// </summary>
  349. /// <param name="workOrderNum">工单编号</param>
  350. /// <param name="flowid">业务类型</param>
  351. /// <returns></returns>
  352. public ActionResult WBWorkFlow(string workOrderNum, int? flowid)
  353. {
  354. workOrderNum = "0"; flowid = 0;
  355. //实例化基础信息表
  356. CallScreenModel callScreenModel = new CallScreenModel();
  357. //选择的业务类型
  358. if (flowid != null && flowid > 0)
  359. {
  360. callScreenModel.Flowid = flowid;
  361. }
  362. else
  363. {
  364. callScreenModel.Flowid = 0;
  365. }
  366. //业务类型字典表
  367. callScreenModel.WorkOrderTypeModelList = GetWorkTypeModelList();
  368. //获取处理方式字典表
  369. callScreenModel.GoTypeModelList = GetCodeType("CLFS");
  370. //获取处理年龄段字典表
  371. callScreenModel.AgeModelList = GetCodeType("NLD");
  372. //获取部门列表
  373. callScreenModel.DepartmentList = deptBll.GetModelList("F_ParentId=0");
  374. return View(callScreenModel);
  375. }
  376. /// <summary>
  377. /// 微信编辑
  378. /// </summary>
  379. /// <param name="webChartNum">微信号</param>
  380. /// <param name="recordId">历史记录号</param>
  381. /// <param name="recordId">工单id</param>
  382. /// <returns></returns>
  383. public ActionResult WXWorkFlowEdit(int workOrderNum)
  384. {
  385. //实例化基础信息表
  386. CallScreenModel callScreenModel = new CallScreenModel();
  387. if ( workOrderNum > 0)
  388. {
  389. callScreenModel.WorkOrderBaseModel = orderBLL.GetModel(workOrderNum);
  390. //获取业务工单信息
  391. if (!string.IsNullOrEmpty(callScreenModel.WorkOrderBaseModel.F_EMPCODE))
  392. {
  393. T_Cus_CustomerBase baseCusModel = cusBLL.GetCusInfoModel(1, callScreenModel.WorkOrderBaseModel.F_EMPCODE);
  394. if (baseCusModel != null && baseCusModel.F_CustomerId > 0)
  395. {
  396. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = baseCusModel;
  397. }
  398. else
  399. {
  400. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  401. }
  402. }
  403. else
  404. {
  405. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  406. }
  407. //业务类型字典表
  408. callScreenModel.WorkOrderTypeModelList = GetWorkTypeModelList();
  409. //获取处理方式字典表
  410. callScreenModel.GoTypeModelList = GetCodeType("CLFS");
  411. //获取处理年龄段字典表
  412. callScreenModel.AgeModelList = GetCodeType("NLD");
  413. //获取部门列表
  414. callScreenModel.DepartmentList = deptBll.GetModelList("F_ParentId=0");
  415. callScreenModel.HistoryOrderList = historyBll.GetModelList("F_INSTANCEID=" + int.Parse(workOrderNum.ToString()));
  416. return View(callScreenModel);
  417. }
  418. return View();
  419. }
  420. /// <summary>
  421. /// 微博编辑
  422. /// </summary>
  423. /// <param name="webChartNum">微信号</param>
  424. /// <param name="recordId">历史记录号</param>
  425. /// <param name="recordId">工单id</param>
  426. /// <returns></returns>
  427. public ActionResult WBWorkFlowEdit(int workOrderNum)
  428. {
  429. //实例化基础信息表
  430. CallScreenModel callScreenModel = new CallScreenModel();
  431. if (workOrderNum > 0)
  432. {
  433. callScreenModel.WorkOrderBaseModel = orderBLL.GetModel(workOrderNum);
  434. //获取业务工单信息
  435. if (!string.IsNullOrEmpty(callScreenModel.WorkOrderBaseModel.F_EMPCODE))
  436. {//1微信,2微博
  437. T_Cus_CustomerBase baseCusModel = cusBLL.GetCusInfoModel(1, callScreenModel.WorkOrderBaseModel.F_EMPCODE);
  438. if (baseCusModel != null && baseCusModel.F_CustomerId > 0)
  439. {
  440. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = baseCusModel;
  441. }
  442. else
  443. {
  444. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  445. }
  446. }
  447. else
  448. {
  449. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  450. }
  451. //业务类型字典表
  452. callScreenModel.WorkOrderTypeModelList = GetWorkTypeModelList();
  453. //获取处理方式字典表
  454. callScreenModel.GoTypeModelList = GetCodeType("CLFS");
  455. //获取处理年龄段字典表
  456. callScreenModel.AgeModelList = GetCodeType("NLD");
  457. //获取部门列表
  458. callScreenModel.DepartmentList = deptBll.GetModelList("F_ParentId=0");
  459. callScreenModel.HistoryOrderList = historyBll.GetModelList("F_INSTANCEID=" + int.Parse(workOrderNum.ToString()));
  460. return View(callScreenModel);
  461. }
  462. return View();
  463. }
  464. #endregion
  465. /// <summary>
  466. /// 补录工单处理信息
  467. /// </summary>
  468. /// <param name="workOrderBaseModel"></param>
  469. /// <returns></returns>
  470. [AcceptVerbs(HttpVerbs.Post)]
  471. public bool workOrderAddData(T_Wo_WorkOrderBase workOrderBaseModel)
  472. {
  473. //工单来源
  474. //workOrderBaseModel.F_REPAIRMANID = 1;
  475. //workOrderBaseModel.F_WORKORDERFROM = "语音";
  476. ////当前用户信息
  477. //workOrderBaseModel.F_USERID = F_UserID;//id
  478. //workOrderBaseModel.F_LINKMAN = F_UserCode;//工号
  479. //workOrderBaseModel.F_REPAIRMANNAME = "12";//姓名
  480. workOrderBaseModel.F_DEPTID = F_DeptId;
  481. T_Sys_Department deptmodel = deptBll.GetModel(F_DeptId);
  482. if (deptmodel != null)
  483. {
  484. workOrderBaseModel.F_DEPTCODE = deptmodel.F_DeptName;
  485. }
  486. AddAction("T_Wo_WorkOrderBase", workOrderBaseModel.F_WORKORDERID.ToMyString(), "录入工单", "数据:"+JsonConvert.SerializeObject(workOrderBaseModel), "关键信息");
  487. if (workOrderBaseModel.F_CONTENT == null)
  488. {
  489. workOrderBaseModel.F_CONTENT = "-";
  490. }
  491. if (workOrderBaseModel.F_RETURNVISITCONTENT == null)
  492. {
  493. workOrderBaseModel.F_RETURNVISITCONTENT = "-";
  494. }
  495. if (workOrderBaseModel.CustomerBaseModel != null)
  496. {
  497. //最近联络方式
  498. if (workOrderBaseModel.F_REPAIRMANID == 4)
  499. {
  500. workOrderBaseModel.CustomerBaseModel.F_Kind = "3";
  501. }
  502. else
  503. {
  504. workOrderBaseModel.CustomerBaseModel.F_Kind = workOrderBaseModel.F_REPAIRMANID.ToString();
  505. }
  506. workOrderBaseModel.CustomerBaseModel.F_CustomerNature = workOrderBaseModel.F_WORKORDERFROM;
  507. //业务类型
  508. workOrderBaseModel.CustomerBaseModel.F_IndustryId = workOrderBaseModel.F_REPAIRLEVEL;
  509. workOrderBaseModel.CustomerBaseModel.F_Url = workOrderBaseModel.F_ADSLACCOUNT;
  510. ////客户等级
  511. //workOrderBaseModel.CustomerBaseModel.F_ScaleResume = "1";
  512. //workOrderBaseModel.CustomerBaseModel.F_CustomerClass = "一般客户";
  513. //修改客户基础信息
  514. int cusid = cusBLL.EditCusInfoModel(workOrderBaseModel.CustomerBaseModel);
  515. if (cusid > 1)
  516. {
  517. workOrderBaseModel.F_CUSTOMERID = cusid;
  518. }
  519. }
  520. if (workOrderBaseModel.F_WORKORDERSTATEID > 0)
  521. {
  522. workOrderBaseModel.F_CODE= orderBLL.GetOrderNumber(workOrderBaseModel.F_REPAIRLEVEL.ToInt32());
  523. if (workOrderBaseModel.F_HOUSING == "表扬" || workOrderBaseModel.F_HOUSING == "咨询" || workOrderBaseModel.F_HOUSING == "挂失")
  524. {
  525. workOrderBaseModel.F_WORKORDERTYPEID = 3;
  526. }
  527. else if(workOrderBaseModel.F_WORKORDERTYPEID==3)
  528. {
  529. Model.T_Wo_WorkOrderHistory historyModel = new Model.T_Wo_WorkOrderHistory();
  530. historyModel.F_INSTANCEID = workOrderBaseModel.F_WORKORDERID;
  531. historyModel.F_OPTDATE = DateTime.Now;
  532. historyModel.ReplayTime = DateTime.Now;
  533. historyModel.F_WORKORDERSTATEID = 1;
  534. historyModel.F_StateName = "已处理";
  535. historyModel.NeedReplayTime = workOrderBaseModel.F_REQUESTSERVICETIME;
  536. historyModel.F_OPTUSERID = F_UserID;
  537. historyModel.F_OPTBTNID = F_DeptId;
  538. historyModel.F_UserName = F_UserName;
  539. historyModel.F_REMARK = workOrderBaseModel.F_RETURNVISITCONTENT;
  540. historyModel.F_NEXTOWNERARRID = "计划经营部";
  541. workOrderBaseModel.HistoryOrderList = new List<T_Wo_WorkOrderHistory>();
  542. workOrderBaseModel.HistoryOrderList.Add(historyModel);
  543. }
  544. if (workOrderBaseModel.F_WORKORDERTYPEID == 1)
  545. {
  546. AddAction("t_wo_workorderbase", workOrderBaseModel.F_WORKORDERID.ToMyString(), "转单处理工单", workOrderBaseModel.F_CODE);
  547. }
  548. else
  549. {
  550. AddAction("t_wo_workorderbase", workOrderBaseModel.F_WORKORDERID.ToMyString(), "即时处理工单", workOrderBaseModel.F_CODE);
  551. }
  552. }
  553. else
  554. { workOrderBaseModel.F_CODE = ""; }
  555. return orderBLL.UpdateWorkOrderInfoModel(workOrderBaseModel);
  556. }
  557. /// <summary>
  558. /// 来电弹屏处理工单
  559. /// </summary>
  560. /// <param name="workOrderBaseModel"></param>
  561. /// <returns></returns>
  562. [AcceptVerbs(HttpVerbs.Post)]
  563. public bool workOrderAddDatanew(T_Wo_WorkOrderBase workOrderBaseModel)
  564. {
  565. bool bl = false;
  566. try
  567. {
  568. //工单来源
  569. workOrderBaseModel.F_REPAIRMANID = 4;
  570. workOrderBaseModel.F_WORKORDERFROM = "微博工单";
  571. string wbh = workOrderBaseModel.CustomerBaseModel.F_CustomerEName.Trim();
  572. if (!string.IsNullOrEmpty(wbh))
  573. {
  574. workOrderBaseModel.F_EMPCODE = wbh;
  575. workOrderBaseModel.CustomerBaseModel.F_PostCode = wbh;
  576. }
  577. //当前用户信息
  578. workOrderBaseModel.F_USERID = F_UserID;//id
  579. workOrderBaseModel.F_LINKMAN = F_UserCode;//工号
  580. workOrderBaseModel.F_REPAIRMANNAME = F_UserName;//姓名
  581. workOrderBaseModel.F_LINKMANTELEPHONE = workOrderBaseModel.CustomerBaseModel.F_Mobile;
  582. if (F_UserID > 0)
  583. {
  584. T_Sys_UserAccount usermodel = new T_Sys_UserAccount();
  585. usermodel = userBll.GetModel(F_UserID);
  586. workOrderBaseModel.F_REPAIRMANNAME = usermodel.F_UserName;//姓名
  587. }
  588. if (workOrderBaseModel.CustomerBaseModel != null)
  589. {
  590. //最近联络方式
  591. if (workOrderBaseModel.F_REPAIRMANID.ToString() == "4")
  592. { workOrderBaseModel.CustomerBaseModel.F_Kind = "3"; }
  593. else
  594. {
  595. workOrderBaseModel.CustomerBaseModel.F_Kind = workOrderBaseModel.F_REPAIRMANID.ToString();
  596. }
  597. workOrderBaseModel.CustomerBaseModel.F_CustomerNature = workOrderBaseModel.F_WORKORDERFROM;
  598. //业务类型
  599. workOrderBaseModel.CustomerBaseModel.F_IndustryId = workOrderBaseModel.F_REPAIRLEVEL;
  600. workOrderBaseModel.CustomerBaseModel.F_Url = workOrderBaseModel.F_ADSLACCOUNT;
  601. workOrderBaseModel.CustomerBaseModel.F_CustomerId = Convert.ToInt32(workOrderBaseModel.F_CUSTOMERID);
  602. ////客户等级
  603. workOrderBaseModel.CustomerBaseModel.F_ScaleResume = "1";
  604. workOrderBaseModel.CustomerBaseModel.F_CustomerClass = "一般客户";
  605. //保存工单基础信息
  606. //修改客户基础信息
  607. int cusid = cusBLL.EditCusInfoModel(workOrderBaseModel.CustomerBaseModel);
  608. if (cusid > 0)
  609. {
  610. workOrderBaseModel.F_CUSTOMERID = cusid;
  611. }
  612. }
  613. if (workOrderBaseModel.F_WORKORDERID == 0)
  614. {
  615. workOrderBaseModel.F_CREATEDATE = DateTime.Now;
  616. bl = orderBLL.AddWbgd(workOrderBaseModel);
  617. }
  618. else
  619. {
  620. try
  621. {
  622. YTSoft.BaseCallCenter.Model.T_Wo_WorkOrderBase m = new YTSoft.BaseCallCenter.BLL.T_Wo_WorkOrderBase().GetModel(workOrderBaseModel.F_WORKORDERID);
  623. workOrderBaseModel.F_LINKMANTELEPHONE = m.F_LINKMANTELEPHONE;
  624. workOrderBaseModel.F_CUSTOMERTELEPHONE = m.F_CUSTOMERTELEPHONE;
  625. workOrderBaseModel.F_NUMBER = m.F_CODE;
  626. }
  627. catch
  628. { }
  629. if (workOrderBaseModel.F_SERVICETYPE == "待处理")
  630. {
  631. workOrderBaseModel.F_WORKORDERNAME = "手工工单";
  632. return orderBLL.UpdateWorkOrderInfoModel(workOrderBaseModel);
  633. }
  634. else
  635. {
  636. workOrderBaseModel.F_WORKORDERNAME = "手工工单";
  637. return orderBLL.UpdateWorkOrderInfoModel(workOrderBaseModel);
  638. }
  639. }
  640. }
  641. catch (Exception ex) { }
  642. return bl;
  643. }
  644. /// <summary>
  645. /// 初始化列表
  646. /// </summary>
  647. /// <returns></returns>
  648. public ActionResult CallRecordList()
  649. {
  650. WorkOrderMyModel model = new WorkOrderMyModel();
  651. return View(model);
  652. }
  653. /// <summary>
  654. /// 听取录音
  655. /// </summary>
  656. /// <returns></returns>
  657. public ActionResult VoicePlay(string type, string callid)
  658. {
  659. Models.VoicePlayModel model = new VoicePlayModel();
  660. model.playpath = type;
  661. model.downpath = callid;
  662. AddAction("VoicePlay", callid, "听录音", string.Format("听了callid={0}的录音", callid), "敏感信息");
  663. //model.newpath = "";
  664. //try
  665. //{
  666. // model.playpath = GetSrc(type, callid);
  667. // if (type == "0")
  668. // {
  669. // model.downpath = model.playpath.Replace("playbyappid", "downbyappid");
  670. // }
  671. // else
  672. // {
  673. // model.downpath = model.playpath.Replace("playvoicemail", "downvoicemail");
  674. // }
  675. // if (!string.IsNullOrEmpty(model.playpath))
  676. // {
  677. // StringBuilder returnStr = new StringBuilder();
  678. // string wxAddUrl = model.playpath;
  679. // string addWxResult = HttpHelper.HttpPost(wxAddUrl, null);
  680. // model.playpath = addWxResult;
  681. // }
  682. //}
  683. //catch
  684. //{ }
  685. return View(model);
  686. }
  687. public ActionResult VoicePlay1(string type, string callid)
  688. {
  689. VoicePlayModel voicePlayModel = new VoicePlayModel();
  690. voicePlayModel.playpath = "";
  691. voicePlayModel.downpath = "";
  692. try
  693. {
  694. voicePlayModel.playpath = this.GetSrc(type, callid);
  695. voicePlayModel.downpath = !(type == "0") ? voicePlayModel.playpath.Replace("playvoicemail", "downvoicemail") : voicePlayModel.playpath.Replace("playbyappid", "downbyappid");
  696. if (!string.IsNullOrEmpty(voicePlayModel.playpath))
  697. {
  698. StringBuilder stringBuilder = new StringBuilder();
  699. string str = HttpHelper.HttpPost(voicePlayModel.playpath, (object)null);
  700. voicePlayModel.playpath = str;
  701. }
  702. }
  703. catch
  704. {
  705. }
  706. AddAction("VoicePlay1", callid, "听录音", string.Format("听了callid={0}的录音", callid), "敏感信息");
  707. return (ActionResult)this.View((object)voicePlayModel);
  708. }
  709. public string GetSrc(string type, string callid)
  710. {
  711. string s = "";
  712. BLL.T_Sys_SystemConfig bll_T_Sys_SystemConfig = new BLL.T_Sys_SystemConfig();
  713. try
  714. {
  715. string valueByParamCode = bll_T_Sys_SystemConfig.GetParamValueByParamCode(!(type == "0") ? "PlayLeaveVoice" : "PlayPath");
  716. string str = callid;
  717. s = str.IndexOf(":") >= 0 ? str.Replace("D:", valueByParamCode) : valueByParamCode + str;
  718. s = HttpUtility.HtmlEncode(s);
  719. }
  720. catch
  721. {
  722. }
  723. return s;
  724. }
  725. //public string GetSrc(string type, string callid)
  726. //{
  727. // string res = "";
  728. // try
  729. // {
  730. // string para = "PlayPath";
  731. // if (type == "0")
  732. // {
  733. // para = "PlayPath";
  734. // }
  735. // else
  736. // {
  737. // para = "PlayLeaveVoice";
  738. // }
  739. // BLL.T_Sys_SystemConfig bll_T_Sys_SystemConfig = new BLL.T_Sys_SystemConfig();
  740. // string CTIserverIP = bll_T_Sys_SystemConfig.GetParamValueByParamCode(para);//CTIIP
  741. // string path = callid;
  742. // if (path.IndexOf(":") < 0)
  743. // {
  744. // res = CTIserverIP + path;
  745. // }
  746. // else
  747. // {
  748. // res = path.Replace("D:", CTIserverIP);
  749. // }
  750. // res = HttpUtility.HtmlEncode(res);
  751. // }
  752. // catch
  753. // {
  754. // }
  755. // return res;
  756. //}
  757. /// <summary>
  758. /// 留言管理
  759. /// </summary>
  760. /// <returns></returns>
  761. public ActionResult CallLeaveList()
  762. {
  763. string userid = "0";
  764. YTSoft.BaseCallCenter.Model.T_Sys_UserAccount p_LoginUser = new YTSoft.BaseCallCenter.Model.T_Sys_UserAccount();
  765. try
  766. {
  767. if (Request.Cookies["BaseCallCenter_T_User"] != null)
  768. {
  769. userid = Request.Cookies["BaseCallCenter_T_User"]["F_UserId"];
  770. }
  771. int u = Convert.ToInt32(userid);
  772. }
  773. catch
  774. { }
  775. if (userid != "0")
  776. {
  777. p_LoginUser = new BLL.T_Sys_UserAccount().GetModel(Convert.ToInt32(userid));
  778. if (p_LoginUser != null)
  779. {
  780. if (Request.Cookies["BaseCallCenter_T_User"] != null)
  781. {
  782. p_LoginUser.F_ExtensionNumber = Request.Cookies["BaseCallCenter_T_User"]["F_ExtensionNumber"];
  783. }
  784. }
  785. }
  786. else
  787. {
  788. Response.Redirect("/Default/Login");
  789. }
  790. return View(p_LoginUser);
  791. }
  792. /// <summary>
  793. /// 坐席监控
  794. /// </summary>
  795. /// <returns></returns>
  796. public ActionResult SeatMonitoringList()
  797. {
  798. return View();
  799. }
  800. /// <summary>
  801. /// 获取通话记录
  802. /// </summary>
  803. /// <param name="page">当前页码</param>
  804. /// <param name="limit">每页数据量</param>
  805. /// <param name="sqlWhere">查询条件</param>
  806. /// <returns></returns>
  807. [ActionName("CallRecordData")]
  808. [HttpGet]
  809. public string CallRecordData(DateTime? NowDateTime, int page, int limit, string callnumber, string usercode, string callType,
  810. string callStatus, string dateParty,
  811. int F_WORKORDERTYPEID=0,string F_CONTENT="", string F_HOUSING="", int callid=0,string sort="")
  812. {
  813. AddAction("T_Call_CallRecords", callid.ToMyString(), "获取通话记录列表", string.Format("获取{0}通话记录列表", dateParty), "敏感信息");
  814. //数据结果集
  815. ResponseData dataModel = new ResponseData();
  816. string sql = "";
  817. if (callid>0)
  818. {
  819. sql += string.Format(" and callid={0}", callid);
  820. }
  821. if (!string.IsNullOrEmpty(dateParty))
  822. {
  823. string startDate = dateParty.Substring(0, 10);
  824. string endDate = dateParty.Substring(12);
  825. sql += " and BeginTime>= '" + startDate + " 00:00:00" + "'";
  826. sql += " and BeginTime<= '" + endDate + " 23:59:59" + "'";
  827. }
  828. else
  829. {
  830. sql += " and BeginTime>= '" + DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00" + "'";
  831. sql += " and BeginTime<= '" + DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59" + "'";
  832. }
  833. if (!string.IsNullOrEmpty(callnumber))
  834. {
  835. sql += " and CallNumber like '%" + callnumber.Trim() + "%'";
  836. }
  837. if (!string.IsNullOrEmpty(usercode))
  838. {
  839. sql += " and UserCode like '%" + usercode.Trim() + "%'";
  840. }
  841. //呼叫类型,0呼入1呼出
  842. if (!string.IsNullOrEmpty(callType))
  843. {
  844. sql += " and CallType =" + callType;
  845. }
  846. //呼叫状态,0:未接通电话1已接通电话
  847. if (!string.IsNullOrEmpty(callStatus))
  848. {
  849. sql += " and CallState =" + callStatus;
  850. }
  851. //工单类型 F_HOUSING select F_WORKORDERTYPEID,F_CONTENT,F_HOUSING from T_Wo_WorkOrderBase where 1=1 and F_CONTENT like '%'++'%'
  852. if (F_WORKORDERTYPEID>0)
  853. {
  854. sql += " AND F_WorkOrderTypeId IS NOT null and F_WORKORDERTYPEID=" + F_WORKORDERTYPEID;
  855. } //工单内容 F_CONTENT
  856. if (!string.IsNullOrEmpty(F_CONTENT))
  857. {
  858. sql += string.Format(" AND F_WorkOrderTypeId IS NOT null and T2.F_CONTENT like '%{0}%'", F_CONTENT);
  859. }
  860. //工单类型
  861. if (!string.IsNullOrEmpty(F_HOUSING))
  862. {
  863. sql += string.Format(" AND F_WorkOrderTypeId IS NOT null and T2.F_HOUSING='{0}'", F_HOUSING);
  864. }
  865. //呼叫状态,0:未接通电话1已接通电话
  866. if (!string.IsNullOrEmpty(callStatus))
  867. {
  868. sql += " and CallState =" + callStatus;
  869. }
  870. DataTable dt = new DataTable();
  871. int recordCount = 0;
  872. //BLL.T_Call_CallRecords busCall_CallRecords = new BLL.T_Call_CallRecords();
  873. //busCall_CallRecords.GetListByPage();
  874. Model.PageData<Model.T_Call_CallRecords_All> pageModel = new Model.PageData<Model.T_Call_CallRecords_All>();
  875. dt = BLL.PagerBLL.GetTableList(
  876. " (T_Call_CallRecords T1 LEFT JOIN T_Wo_WorkOrderBase T2 ON T1.CallId=T2.F_KSHADDRESSCODE ) ",
  877. "CallRecordsId",
  878. "T1.*,F_WORKORDERID,F_HOUSING,CONVERT(varchar,BeginTime, 120 ) as BeginTimeNew,CONVERT(varchar,TalkStartTime, 120 ) as TalkStartTimeNew,CONVERT(varchar,TalkEndTime, 120 ) as TalkEndTimeNew"
  879. + @",(select top 1 F_ScaleResume from T_Cus_CustomerBase n where
  880. CallNumber=F_Telephone) as F_ScaleResume,
  881. replace(replace(FilePath,'\','/'),'" + GetSysconfig("newFilePath") + "','" + GetSysconfig("newPlayPath") + "')" +
  882. @" as fileurl,case
  883. when BusinessType=1 then '咨询'
  884. when BusinessType=2 then '建议'
  885. when BusinessType=3 then '表扬'
  886. when BusinessType=4 then '挂失'
  887. when BusinessType=9 then '投诉'
  888. when T1.F_ServiceType=1 then '咨询'
  889. when T1.F_ServiceType = 2 then '投诉'
  890. when T1.F_ServiceType = 3 then '建议'
  891. when T1.F_ServiceType = 4 then '表扬'
  892. when T1.F_ServiceType = 5 then '挂失'
  893. else '' end as
  894. BType, case when (isnull(BusinessType,0)>0 or isnull(T1.F_ServiceType,0)>0) then '人工服务' else '' end as ywtype ",
  895. sql,
  896. // "ORDER BY LongTime,CallRecordsId desc",
  897. string.IsNullOrEmpty(sort) ? " BeginTime desc": sort + " desc"
  898. ,
  899. limit,
  900. page,
  901. out recordCount);
  902. dataModel.code = 0;
  903. dataModel.count = recordCount;
  904. dataModel.data = dt;
  905. string json = JsonConvert.SerializeObject(dataModel);
  906. return json;
  907. }
  908. /// <summary>
  909. /// 获取留言记录
  910. /// </summary>
  911. /// <param name="page">当前页码</param>
  912. /// <param name="limit">每页数据量</param>
  913. /// <param name="sqlWhere">查询条件</param>
  914. /// <returns></returns>
  915. [ActionName("LeaveRecordData")]
  916. [HttpGet]
  917. public string LeaveRecordData(DateTime? NowDateTime, int page, int limit, string callnumber, string leavedate, string status)
  918. {
  919. AddAction("T_Call_LeaveRecord", status, "获取通话记录列表", string.Format("获取{0}留言记录列表", leavedate), "敏感信息");
  920. //数据结果集
  921. ResponseData dataModel = new ResponseData();
  922. string sql = "";
  923. if (!string.IsNullOrEmpty(callnumber))
  924. {
  925. sql += " and F_Phone like '%" + callnumber.Trim() + "%'";
  926. }
  927. //if (!string.IsNullOrEmpty(leavedate))
  928. //{
  929. // sql += " and datediff(day,'" + leavedate + "',F_LeaveTime)=0 ";
  930. //}
  931. string startDate = "";
  932. string endDate = "";
  933. if (!string.IsNullOrEmpty(leavedate))
  934. {
  935. startDate = leavedate.Substring(0, 10);
  936. endDate = leavedate.Substring(12);
  937. sql += " and F_LeaveTime>= '" + startDate + " 00:00:00" + "'";
  938. sql += " and F_LeaveTime<= '" + endDate + " 23:59:59" + "'";
  939. }
  940. else {
  941. startDate = DateTime.Now.AddYears(-1).ToString("yyyy-MM-dd");
  942. endDate = DateTime.Now.ToString("yyyy-MM-dd");
  943. sql += " and F_LeaveTime>= '" + startDate + " 00:00:00" + "'";
  944. sql += " and F_LeaveTime<= '" + endDate + " 23:59:59" + "'";
  945. }
  946. if (!string.IsNullOrEmpty(status))
  947. {
  948. sql += " and F_Status=" + status + " ";
  949. }
  950. DataTable dt = new DataTable();
  951. int recordCount = 0;
  952. dt = BLL.PagerBLL.GetListPager(
  953. "T_Call_LeaveRecord",
  954. "F_Id",
  955. "*,CONVERT(varchar,F_LeaveTime, 120 ) as F_LeaveTimeNew,CONVERT(varchar,F_DealTime, 120 ) as F_DealTimeNew"
  956. + ",(select top 1 F_ScaleResume from T_Cus_CustomerBase n where F_Phone=F_Telephone) as F_ScaleResume ," +
  957. @"replace(replace(F_RecFileUrl, '\','/'),'" + GetSysconfig("newFilePath") + "','" + GetSysconfig("newPlayPath") + "') as TheLuyin",
  958. sql,
  959. "ORDER BY F_Id desc",
  960. limit,
  961. page,
  962. true,
  963. out recordCount);
  964. dataModel.code = 0;
  965. dataModel.count = recordCount;
  966. dataModel.data = dt;
  967. string json = JsonConvert.SerializeObject(dataModel);
  968. return json;
  969. }
  970. /// <summary>
  971. /// 留言创建工单处理
  972. /// </summary>
  973. /// <param name="LeaveOptAjax"></param>
  974. /// <returns></returns>
  975. [ActionName("LeaveOptAjax")]
  976. [HttpGet]
  977. public string LeaveOptAjax(string optaction, string timeno, string callid, string userid, string usercode, string username, string extnumber, string callernum, string leaveid)
  978. {
  979. //&timeno=" + timeno+"&callid=" + callID + "&userid=" + userid + "&usercode=" + usercode
  980. //+ "&username=" + username + "&extnumber" + extnumber + "&callernum=" + callerNum
  981. string res = "error";
  982. try
  983. {
  984. switch (optaction)
  985. {
  986. case "leaveAddOrderEvent":
  987. //振铃事件
  988. res = leaveAddOrderEvent(callid, userid, usercode, username, extnumber, callernum, leaveid);
  989. break;
  990. }
  991. }
  992. catch
  993. { }
  994. return res;
  995. }
  996. #region 来电归属地查询
  997. public string GetPhoneLocation(string phoneNumber, bool isPhone)
  998. {
  999. string location = "未知";
  1000. try
  1001. {
  1002. //如果是手机号码
  1003. if (isPhone)
  1004. {
  1005. BLL.T_Sys_MobileData mobile_Bll = new BLL.T_Sys_MobileData();
  1006. Model.T_Sys_MobileData mobileModel = mobile_Bll.GetModel(phoneNumber.Substring(0, 7));
  1007. return mobileModel != null ? (mobileModel.F_CityDes + mobileModel.F_CardDes) : location;
  1008. }
  1009. else//如果是电话号码
  1010. {
  1011. BLL.T_Sys_TelTitleData numbBll = new BLL.T_Sys_TelTitleData();
  1012. List<Model.T_Sys_TelTitleData> mobileModel = numbBll.GetModelList(" 1=1 and F_KeyPhoneNum='" + phoneNumber.Substring(0, 4) + "'");
  1013. if (mobileModel == null || mobileModel.Count <= 0)
  1014. mobileModel = numbBll.GetModelList(" 1=1 and F_KeyPhoneNum='" + phoneNumber.Substring(0, 3) + "'");
  1015. return mobileModel.Count > 0 ? mobileModel[0].F_TitleName : location;
  1016. }
  1017. }
  1018. catch (System.Exception ex)
  1019. {
  1020. return location;
  1021. }
  1022. }
  1023. #endregion
  1024. #region 自动添加工单
  1025. public bool SubmitOSubmit(string phone, string recordid, string callid, string locationaddress, string userid, string username, string usercode, out int workorderid)
  1026. {
  1027. bool bl = false;
  1028. workorderid = 0;
  1029. try
  1030. {
  1031. Model.T_Wo_WorkOrderBase model = new Model.T_Wo_WorkOrderBase();
  1032. #region 工单信息
  1033. //model.F_WORKORDERTYPEID = Convert.ToInt32(typeid);//类型ID
  1034. model.F_WORKORDERSTATEID = 0;//状态ID
  1035. model.F_REPAIRREQUEST = "未处理";
  1036. model.F_CODE = "";//工单编号
  1037. model.F_WORKORDERNAME = "";//工单名称
  1038. model.F_NUMBER = model.F_CODE;
  1039. //model.F_CUSTOMERNAME = txtCustomerName.Text.Trim();//客户姓名
  1040. model.F_CUSTOMERTELEPHONE = phone.Trim();//客户电话
  1041. model.F_USERID = Convert.ToInt32(userid);//坐席id
  1042. model.F_LINKMAN = usercode.Trim();//坐席工号
  1043. model.F_REPAIRMANNAME = username.Trim();//坐席名称
  1044. model.F_LINKMANTELEPHONE = phone.Trim();//联系人电话
  1045. //model.F_ADSLACCOUNT = hfCallId.Value.Trim();
  1046. model.F_BANDWIDTH = "";
  1047. model.F_STANDARDADDRESS = locationaddress.Trim();
  1048. //model.F_INSTALLADDRESS = F_INSTALLADDRESS;
  1049. model.F_KSHADDRESSCODE = callid;
  1050. model.F_RANGEID = Convert.ToInt32(recordid);
  1051. model.F_PROVINCE = "";
  1052. model.F_CITY = "";
  1053. model.F_AREA = "";
  1054. model.F_ROAD = "";
  1055. model.F_HOUSING = "";
  1056. model.F_REPAIRMANID = 2;
  1057. model.F_WORKORDERFROM = "留言工单";
  1058. //model.F_WORKORDERLEVELID = F_WORKORDERLEVELID;
  1059. model.F_FILEFLAG = 0;
  1060. model.F_CREATEBY = Convert.ToInt32(userid.Trim());
  1061. model.F_CREATEDATE = DateTime.Now;
  1062. model.F_RETURNVISITFLAG = 0;
  1063. model.F_RETURNVISITSTATE = 0;
  1064. model.F_RETURNVISITRESULT = 0;
  1065. model.F_RETURNVISITCONTENT = "";
  1066. model.F_DELETEFLAG = 0;
  1067. model.F_ALLUSETIMES = 0;
  1068. model.F_STARTTIME = DateTime.Now;
  1069. model.F_OVERTIMES = 0;
  1070. model.F_FORMID = 0;
  1071. model.F_HASTENCOUNTS = 0;
  1072. model.F_RANGEX = 0;
  1073. model.F_RANGEY = 0;
  1074. model.F_REPAIRCLOSEMANID = 0;
  1075. model.F_REPAIRCLOSEMANNAME = "";
  1076. model.F_REPAIRCLOSEREASONS = "";
  1077. model.F_REPAIRCLOSEREPTID = 0;
  1078. model.F_REPAIRCLOSEREPT = "";
  1079. #endregion
  1080. int resorderbase = new BLL.T_Wo_WorkOrderBase().Add(model);//添加基本信息
  1081. workorderid = resorderbase;
  1082. if (resorderbase > 0)
  1083. {
  1084. bl = true;
  1085. }
  1086. else
  1087. {
  1088. bl = false;
  1089. }
  1090. }
  1091. catch (Exception ex)
  1092. {
  1093. }
  1094. return bl;
  1095. }
  1096. #endregion
  1097. #region 处理留言创建工单事件
  1098. public string leaveAddOrderEvent(string callid, string userid, string usercode, string username, string extnumber, string callernum, string leaveid)
  1099. {
  1100. string res = "error";
  1101. try
  1102. {
  1103. AddAction("leaveAddOrderEvent", callid, "创建留言工单", string.Format("{0}创建callid={1}留言工单{2}", username, callid, leaveid), "关键信息");
  1104. Model.T_Call_CallRecords vmodel = new BLL.T_Call_CallRecords().GetModelByCallId(callid);
  1105. if (vmodel != null)
  1106. {
  1107. string phone = callernum;
  1108. #region 来电归属地查询
  1109. string location = "";
  1110. //来电归属地查询
  1111. if (phone.Trim().Length == 11 && phone.Substring(0, 1) != "0")
  1112. {
  1113. location = GetPhoneLocation(phone, true);
  1114. }
  1115. else
  1116. {
  1117. location = GetPhoneLocation(phone, false);
  1118. }
  1119. #endregion
  1120. #region 创建工单
  1121. int workorderid = 0;
  1122. bool wobl = SubmitOSubmit(phone, vmodel.CallRecordsId.ToString(), callid, location, userid, username, usercode, out workorderid);
  1123. if (wobl)
  1124. {
  1125. //处理留言
  1126. #region 处理留言
  1127. Model.T_Call_LeaveRecord leavemodel = new BLL.T_Call_LeaveRecord().GetModel(Convert.ToInt32(leaveid));
  1128. if (leavemodel != null)
  1129. {
  1130. //leavemodel.F_CallAppId = workorderid.ToString();
  1131. //leavemodel.F_Status = 1;
  1132. //leavemodel.F_UserId = Convert.ToInt32(userid);
  1133. //leavemodel.F_UserName = username;
  1134. //leavemodel.F_UserCode = usercode;
  1135. //leavemodel.F_DealTime = DateTime.Now;
  1136. //leavemodel.F_DealContent = "留言创建工单";
  1137. //new BLL.T_Call_LeaveRecord().Update(leavemodel);
  1138. string strSql = @"
  1139. update T_Call_LeaveRecord set
  1140. F_CallAppId = " + workorderid.ToString() + @",F_Status = 1,
  1141. F_UserId = " + Convert.ToInt32(userid) + @",F_UserName = '" + username + @"',F_UserCode = '" + usercode + @"',F_DealTime = '" + DateTime.Now + @"',
  1142. F_DealContent = '留言创建工单' where F_Id = " + leavemodel.F_Id;
  1143. int rows = DbHelperSQL.ExecuteSql(strSql);
  1144. }
  1145. #endregion
  1146. try
  1147. {
  1148. Model.T_Call_WorkOrder modelorder = new Model.T_Call_WorkOrder();
  1149. modelorder.CallId = callid;
  1150. modelorder.F_WORKORDERID = workorderid;
  1151. modelorder.F_WORKORDERSTATEID = 0;
  1152. new BLL.T_Call_WorkOrder().Add(modelorder);
  1153. }
  1154. catch { }
  1155. res = workorderid.ToString();
  1156. }
  1157. #endregion
  1158. }
  1159. }
  1160. catch (Exception ex)
  1161. {
  1162. //res = ex.ToString();
  1163. }
  1164. return res;
  1165. }
  1166. #endregion
  1167. /// <summary>
  1168. /// 获取坐席监控坐席列表
  1169. /// </summary>
  1170. /// <returns></returns>
  1171. [ActionName("getseatnewlist")]
  1172. [HttpGet]
  1173. public string getseatnewlist()
  1174. {
  1175. string strHtml = "";
  1176. string strList = "";
  1177. DataTable dt = new DataTable();
  1178. try
  1179. {
  1180. AddAction("T_Sys_UserAccount", "0", "获取坐席监控列表", "", "关键信息");
  1181. BLL.T_Sys_UserAccount bll = new BLL.T_Sys_UserAccount();
  1182. dt = bll.GetList(" f_seatflag=1 order by f_userid desc ").Tables[0];
  1183. if (dt.Rows.Count > 0)
  1184. {
  1185. for (int i = 0; i < dt.Rows.Count; i++)
  1186. {
  1187. strList += dt.Rows[i]["F_WorkNumber"] + ",";// "-" + dt.Rows[i]["ExtensionCode"] + ",";
  1188. strHtml += "<div id=\"div_" + dt.Rows[i]["F_WorkNumber"] + "\" style='float: left; width: 120px; height: 120px; text-align: center; padding: 8px;cursor:pointer'>";
  1189. strHtml += "<div style='height: 90px; border: 1px solid #CCCCCC; padding: 3px; text-align: center;cursor:pointer'";
  1190. strHtml += "onmouseover=\"this.style.border='1px solid #3A8BDC'\" onmouseout=\"this.style.border='1px solid #CCCCCC'\">";
  1191. strHtml += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" width=\"100%\" height=\"100%\" style=\"text-align: center;cursor:pointer\" ";
  1192. strHtml += " onclick=\"GetOneState('" + dt.Rows[i]["F_WorkNumber"] + "','"+ dt.Rows[i]["ExtensionCode"] + "','" + dt.Rows[i]["F_UserName"] + "')\">";
  1193. strHtml += " <tr><td><input type=\"text\" id=\"" + dt.Rows[i]["F_WorkNumber"] + "\" style=\"display: none\" /><input type=\"text\" id=\"txtSeatState_" + dt.Rows[i]["F_WorkNumber"] + "\" value=\"0\" style=\"display: none\" />";
  1194. strHtml += " <span id=\"span_" + dt.Rows[i]["F_WorkNumber"] + "\" style=\"color: #000000;\">";
  1195. strHtml += dt.Rows[i]["F_WorkNumber"] + "(" + dt.Rows[i]["F_UserName"] + ")</span>";
  1196. strHtml += "</td></tr> <tr> <td><img id=\"img_" + dt.Rows[i]["F_WorkNumber"] + "\" src=\"/Content/images/seatimgs/weiqianru.jpg\" />";
  1197. strHtml += "</td></tr><tr><td><span id=\"span_state_" + dt.Rows[i]["F_WorkNumber"] + "\" style=\"color: #cccccc;\">未签入</span>";
  1198. strHtml += " </td></tr></table></div></div>";
  1199. }
  1200. }
  1201. strList += "!@#";
  1202. strList = strList.Replace(",!@#", "").Replace("!@#", "");
  1203. }
  1204. catch
  1205. {
  1206. }
  1207. finally
  1208. {
  1209. dt.Clear();
  1210. dt.Dispose();
  1211. }
  1212. return strList + "~" + strHtml;
  1213. }
  1214. //外呼判断本地外地以及加前缀返回
  1215. [ActionName("GetCallOutprefix")]
  1216. [HttpGet]
  1217. public string GetCallOutprefix(string phone) {
  1218. AddAction("T_Sys_UserAccount", phone, "外呼获取外呼前缀", phone);
  1219. string phone1 = CallCenter.Utility.RequestString.ToDBC(RequestString.RemoveNotNumber(StringHelper.NoHTML(phone)));
  1220. string tophone = phone1;
  1221. string zipcode = ""; string bfix = ""; string wfix = ""; string fix = "";
  1222. // string userseatgroupid = CurrentUser.UserData.F_SeartGroupID.ToString();
  1223. //if (userseatgroupid != "" && userseatgroupid != "0")
  1224. //{
  1225. //Model.T_Sys_SeatGroup smodel = new BLL.T_Sys_SeatGroup().GetModel(int.Parse(userseatgroupid));
  1226. //if (smodel != null)
  1227. //{
  1228. zipcode = "0371";
  1229. bfix ="9";
  1230. wfix = "90";
  1231. //}
  1232. //}
  1233. int zip = GetZipCodeByPhone(phone1, zipcode);
  1234. #region
  1235. if (zip == 1)
  1236. {//手机本地号码
  1237. fix = bfix;
  1238. }
  1239. else if (zip == 2)
  1240. {//手机外地号码
  1241. fix = wfix;
  1242. }
  1243. else
  1244. {
  1245. tophone = phone1.TrimStart('0');
  1246. if (zip == 3)
  1247. {//本地固话去0加9 比如:988888517,937188888517
  1248. fix = bfix;
  1249. }
  1250. else if (zip == 4)
  1251. {//外地固话前加9 比如:9037188888517
  1252. fix = wfix;
  1253. }
  1254. }
  1255. #endregion
  1256. var obj = new
  1257. {
  1258. phone = fix + tophone,
  1259. fix = fix
  1260. };
  1261. return fix;
  1262. // return Success("外呼号码加前缀" + phone, obj);
  1263. }
  1264. /// <summary>
  1265. /// 根据号码和区号判断号码是否为归属地号码
  1266. /// 返回0为分机号或特殊号码
  1267. /// 返回1为手机本地号码
  1268. /// 返回2为手机外地号码
  1269. /// 返回3为固定电话本地号码
  1270. /// 返回4为固定电话外地号码
  1271. /// </summary>
  1272. /// <param name="phone"></param>
  1273. /// <param name="zipcode"></param>
  1274. /// <returns></returns>
  1275. [NonAction]
  1276. public int GetZipCodeByPhone(string phone, string zipcode)
  1277. {
  1278. int n = 0;
  1279. if (phone.Trim().Length >= 7)
  1280. {
  1281. //7位及7位以上是固定电话或手机
  1282. //判断是否手机
  1283. if (phone.Trim().Length == 11 && phone[0] == '1')
  1284. {//号码为11位,首位是1,为手机号
  1285. BLL.T_Sys_MobileData mobile_Bll = new BLL.T_Sys_MobileData();
  1286. Model.T_Sys_MobileData mobileModel = mobile_Bll.GetModelList("F_MobileNum='" + phone.Substring(0, 7) + "'").FirstOrDefault();
  1287. if (mobileModel != null)
  1288. {
  1289. if (mobileModel.F_ZipCode.Equals(zipcode))
  1290. {
  1291. return 1;
  1292. }
  1293. else
  1294. {
  1295. return 2;
  1296. }
  1297. }
  1298. }
  1299. else
  1300. {
  1301. if (phone.Trim().Length == 11 && phone.Substring(0, 3).Equals(zipcode))
  1302. {//号码为11位
  1303. //截取前三位区号判断是否本地
  1304. bool resbd3 = phone.Substring(0, 3).Equals(zipcode);
  1305. //截取前四位区号判断是否本地
  1306. bool resbd4 = phone.Substring(0, 4).Equals(zipcode);
  1307. if (resbd3 || resbd4)
  1308. {
  1309. return 3;
  1310. }
  1311. else
  1312. {
  1313. return 4;
  1314. }
  1315. }
  1316. else if (phone.Trim().Length < 11)
  1317. {//号码小于11位,为本地
  1318. return 3;
  1319. }
  1320. else if (phone.Trim().Length > 11 && phone.Substring(0, 4).Equals(zipcode))
  1321. {//号码大于11位,截取前四位区号判断是否本地
  1322. return 3;
  1323. }
  1324. else
  1325. {
  1326. return 4;
  1327. }
  1328. }
  1329. }
  1330. return n;
  1331. }
  1332. /// <summary>
  1333. /// 获取来电业务类型
  1334. /// </summary>
  1335. /// <param name="CallId">通话记录Callid </param>
  1336. /// <returns></returns>
  1337. [ActionName("GetCallType")]
  1338. [HttpGet]
  1339. public string GetCallType(string CallId)
  1340. {
  1341. //数据结果集
  1342. ResponseData dataModel = new ResponseData();
  1343. //来电业务类型
  1344. string sql = " select F_ServiceType from T_Call_CallRecords where CallId='" + CallId + "' order by BeginTime desc ";
  1345. //排队数量
  1346. // string sql2 = " select COUNT(CallId) as CallId from T_Call_CallRecords where F_linenum=1 ";
  1347. DataTable dt = new DataTable();
  1348. DataSet ds = DbHelperSQL.Query(sql);
  1349. dt = ds.Tables[0];
  1350. //来电业务类型
  1351. dataModel.code = Convert.ToInt32(dt.Rows[0]["F_ServiceType"].ToString() == "" ? "0" : dt.Rows[0]["F_ServiceType"].ToString());
  1352. //DataTable dt2 = new DataTable();
  1353. //DataSet ds2 = DbHelperSQL.Query(sql2);
  1354. //dt2 = ds2.Tables[0];
  1355. ////排队数量
  1356. //dataModel.msg = dt2.Rows[0]["CallId"].ToString() == "" ? "0" : dt2.Rows[0]["CallId"].ToString();
  1357. // dataModel.count = recordCount;
  1358. // dataModel.data = dt;
  1359. string json = JsonConvert.SerializeObject(dataModel);
  1360. return json;
  1361. }
  1362. /// <summary>
  1363. /// 获取排队数量
  1364. /// </summary>
  1365. /// <param name="CallId">通话记录Callid </param>
  1366. /// <returns></returns>
  1367. [ActionName("GetCallLineNum")]
  1368. [HttpGet]
  1369. public string GetCallLineNum()
  1370. {
  1371. //数据结果集
  1372. ResponseData dataModel = new ResponseData();
  1373. //排队数量
  1374. string sql2 = " select COUNT(CallId) as CallId from T_Call_CallRecords where F_linenum=1 and isnull(TalkStartTime,0)=0 ";
  1375. DataTable dt2 = new DataTable();
  1376. DataSet ds2 = DbHelperSQL.Query(sql2);
  1377. dt2 = ds2.Tables[0];
  1378. //排队数量
  1379. dataModel.code = Convert.ToInt32(dt2.Rows[0]["CallId"].ToString() == "" ? "0" : dt2.Rows[0]["CallId"].ToString());
  1380. // dataModel.count = recordCount;
  1381. // dataModel.data = dt;
  1382. string json = JsonConvert.SerializeObject(dataModel);
  1383. // return json;
  1384. return dataModel.code.ToString();
  1385. }
  1386. }
  1387. }