地铁二期项目正式开始

CallRecordController.cs 60KB

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