地铁二期项目正式开始

WXInterFaceController.cs 21KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531
  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Web;
  7. using System.Web.Mvc;
  8. using YTSoft.BaseCallCenter.Model;
  9. using YTSoft.BaseCallCenter.MVCWeb.Commons;
  10. using YTSoft.BaseCallCenter.MVCWeb.Models;
  11. namespace YTSoft.BaseCallCenter.MVCWeb.Controllers
  12. {
  13. public class WXInterFaceController : Controller
  14. {
  15. //工单信息
  16. BLL.T_Wo_WorkOrderBase orderBLL = new BLL.T_Wo_WorkOrderBase();
  17. //客户信息
  18. BLL.T_Cus_CustomerBase cusBLL = new BLL.T_Cus_CustomerBase();
  19. //部门表
  20. BLL.T_Sys_Department deptBll = new BLL.T_Sys_Department();
  21. //用户表
  22. BLL.T_Sys_UserAccount userBll = new BLL.T_Sys_UserAccount();
  23. //通话记录
  24. BLL.T_Call_CallRecords recordBLL = new BLL.T_Call_CallRecords();
  25. //
  26. // GET: /WXInterFace/
  27. /// <summary>
  28. /// 微信创建工单
  29. /// </summary>
  30. /// <param name="workOrderType">1、微信号/2、微博号</param>
  31. /// <param name="webChartNum">微信号/微博号</param>
  32. /// <param name="recordId">工单id</param>
  33. /// <returns></returns>
  34. public ActionResult WXWorkFlow(int workOrderType, string userCode, string webChartNum, string recordId)
  35. {
  36. #region 创建工单
  37. int workOrderNum = 0;
  38. bool wobl = false;
  39. wobl = CreateWXWorkOrder(workOrderType, userCode, webChartNum, recordId, out workOrderNum);
  40. //实例化基础信息表
  41. CallScreenModel callScreenModel = new CallScreenModel();
  42. if (wobl && workOrderNum > 0)
  43. {
  44. callScreenModel.WorkOrderBaseModel = orderBLL.GetModel(workOrderNum);
  45. if (!string.IsNullOrEmpty(webChartNum))
  46. {
  47. //如果电话号码不为空
  48. if (callScreenModel.WorkOrderBaseModel != null)
  49. {
  50. T_Cus_CustomerBase baseCusModel = cusBLL.GetCusInfoModel(workOrderType, webChartNum);
  51. //微信号或者微博号
  52. callScreenModel.WorkOrderBaseModel.F_EMPCODE = webChartNum;
  53. if (baseCusModel != null && baseCusModel.F_CustomerId > 0)
  54. {
  55. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = baseCusModel;
  56. }
  57. else
  58. {
  59. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  60. }
  61. }
  62. else
  63. {
  64. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  65. }
  66. }
  67. else
  68. {
  69. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  70. }
  71. callScreenModel.WorkOrderBaseModel.CustomerBaseModel.F_Kind = (workOrderType + 1).ToString();
  72. if (workOrderType == 1)
  73. {
  74. callScreenModel.WorkOrderBaseModel.CustomerBaseModel.F_CustomerNature = "微信";
  75. }
  76. else
  77. {
  78. callScreenModel.WorkOrderBaseModel.CustomerBaseModel.F_CustomerNature = "微博";
  79. }
  80. //业务类型字典表
  81. callScreenModel.WorkOrderTypeModelList = GetWorkTypeModelList();
  82. //获取处理方式字典表
  83. callScreenModel.GoTypeModelList = GetCodeType("CLFS");
  84. //获取处理年龄段字典表
  85. callScreenModel.AgeModelList = GetCodeType("NLD");
  86. //获取部门列表
  87. callScreenModel.DepartmentList = deptBll.GetModelList("F_ParentId=0");
  88. return View(callScreenModel);
  89. }
  90. #endregion
  91. return View();
  92. }
  93. /// <summary>
  94. /// 保存来电弹屏信息
  95. /// </summary>
  96. /// <param name="workOrderBaseModel"></param>
  97. /// <returns></returns>
  98. [AcceptVerbs(HttpVerbs.Post)]
  99. public bool workOrderAddData(T_Wo_WorkOrderBase workOrderBaseModel)
  100. {
  101. //工单来源
  102. //workOrderBaseModel.F_REPAIRMANID = 1;
  103. //workOrderBaseModel.F_WORKORDERFROM = "语音";
  104. ////当前用户信息
  105. //workOrderBaseModel.F_USERID = F_UserID;//id
  106. //workOrderBaseModel.F_LINKMAN = F_UserCode;//工号
  107. //workOrderBaseModel.F_REPAIRMANNAME = "12";//姓名
  108. if (workOrderBaseModel.CustomerBaseModel != null)
  109. {
  110. //最近联络方式
  111. if (workOrderBaseModel.F_REPAIRMANID.ToString() == "4")
  112. { workOrderBaseModel.CustomerBaseModel.F_Kind = "3"; }
  113. else
  114. {
  115. workOrderBaseModel.CustomerBaseModel.F_Kind = workOrderBaseModel.F_REPAIRMANID.ToString();
  116. }
  117. workOrderBaseModel.CustomerBaseModel.F_CustomerNature = workOrderBaseModel.F_WORKORDERFROM;
  118. //业务类型
  119. workOrderBaseModel.CustomerBaseModel.F_IndustryId = workOrderBaseModel.F_REPAIRLEVEL;
  120. workOrderBaseModel.CustomerBaseModel.F_Url = workOrderBaseModel.F_ADSLACCOUNT;
  121. ////客户等级
  122. //workOrderBaseModel.CustomerBaseModel.F_ScaleResume = "1";
  123. //workOrderBaseModel.CustomerBaseModel.F_CustomerClass = "一般客户";
  124. //修改客户基础信息
  125. int cusid = cusBLL.EditCusInfoModel(workOrderBaseModel.CustomerBaseModel);
  126. if (cusid > 0)
  127. {
  128. workOrderBaseModel.F_CUSTOMERID = cusid;
  129. }
  130. }
  131. return orderBLL.UpdateWorkOrderInfoModel(workOrderBaseModel);
  132. }
  133. /// <summary>
  134. /// 获取业务术语模板信息
  135. /// </summary>
  136. /// <param name="bussnessType">业务类型</param>
  137. /// <returns></returns>
  138. public string GetTypeContenet(int bussnessType, string creatDateTime)
  139. {
  140. try
  141. {
  142. //模板内容
  143. string bussContent = "";
  144. if (bussnessType > 0)
  145. {
  146. if (bussnessType > 0)
  147. {
  148. BLL.T_Wo_WorkOrderType bll = new BLL.T_Wo_WorkOrderType();
  149. Model.T_Wo_WorkOrderType orderTypeModel = new T_Wo_WorkOrderType();
  150. orderTypeModel = bll.GetModel(bussnessType);
  151. if (orderTypeModel != null && !string.IsNullOrEmpty(orderTypeModel.F_Remark))
  152. {
  153. bussContent += string.Format(orderTypeModel.F_Remark, DateTime.Parse(creatDateTime).ToString("f") + "分");
  154. }
  155. }
  156. }
  157. return bussContent;
  158. }
  159. catch (Exception ex)
  160. {
  161. }
  162. return null;
  163. }
  164. #region 创建微信/微博工单
  165. public bool CreateWXWorkOrder(int workOrderType,string userCode ,string webChartNum, string recordId, out int workorderid)
  166. {
  167. bool bl = false;
  168. workorderid = 0;
  169. try
  170. {
  171. Model.T_Wo_WorkOrderBase model = new Model.T_Wo_WorkOrderBase();
  172. BLL.T_Sys_UserAccount userBLL = new BLL.T_Sys_UserAccount();
  173. Model.T_Sys_UserAccount userModel = userBLL.GetModelByUserCode(userCode);
  174. #region 工单信息
  175. model.F_EMPCODE = webChartNum;//微信微博号
  176. model.F_SERVICEWAY = recordId;//微信微博聊天记录
  177. //model.F_WORKORDERTYPEID = Convert.ToInt32(typeid);//类型ID
  178. model.F_WORKORDERSTATEID = 0;//状态ID
  179. model.F_REPAIRREQUEST = "未处理";
  180. model.F_CODE = "";//工单编号
  181. model.F_WORKORDERNAME = "";//工单名称
  182. model.F_NUMBER = model.F_CODE;
  183. //model.F_CUSTOMERNAME = txtCustomerName.Text.Trim();//客户姓名
  184. // model.F_CUSTOMERTELEPHONE = phone.Trim();//客户电话
  185. model.F_USERID = userModel.F_UserId;//坐席id
  186. model.F_LINKMAN = userModel.F_UserCode;//坐席工号
  187. model.F_REPAIRMANNAME = userModel.F_UserName;//坐席名称
  188. // model.F_LINKMANTELEPHONE = phone.Trim();//联系人电话
  189. //model.F_ADSLACCOUNT = hfCallId.Value.Trim();
  190. model.F_BANDWIDTH = "";
  191. // model.F_STANDARDADDRESS = locationaddress.Trim();
  192. //model.F_INSTALLADDRESS = F_INSTALLADDRESS;
  193. // model.F_KSHADDRESSCODE = callid;
  194. // model.F_RANGEID = Convert.ToInt32(recordid);
  195. model.F_PROVINCE = "";
  196. model.F_CITY = "";
  197. model.F_AREA = "";
  198. model.F_ROAD = "";
  199. model.F_HOUSING = "";
  200. if (workOrderType == 1)
  201. {
  202. model.F_REPAIRMANID = 3;
  203. model.F_WORKORDERFROM = "微信工单";
  204. }
  205. else
  206. {
  207. model.F_REPAIRMANID = 4;
  208. model.F_WORKORDERFROM = "微博工单";
  209. }
  210. //model.F_WORKORDERLEVELID = F_WORKORDERLEVELID;
  211. model.F_FILEFLAG = 0;
  212. model.F_CREATEBY = userModel.F_UserId;
  213. model.F_CREATEDATE = DateTime.Now;
  214. model.F_RETURNVISITFLAG = 0;
  215. model.F_RETURNVISITSTATE = 0;
  216. model.F_RETURNVISITRESULT = 0;
  217. model.F_RETURNVISITCONTENT = "";
  218. model.F_DELETEFLAG = 0;
  219. model.F_ALLUSETIMES = 0;
  220. model.F_STARTTIME = DateTime.Now;
  221. model.F_OVERTIMES = 0;
  222. model.F_FORMID = 0;
  223. model.F_HASTENCOUNTS = 0;
  224. model.F_RANGEX = 0;
  225. model.F_RANGEY = 0;
  226. model.F_REPAIRCLOSEMANID = 0;
  227. model.F_REPAIRCLOSEMANNAME = "";
  228. model.F_REPAIRCLOSEREASONS = "";
  229. model.F_REPAIRCLOSEREPTID = 0;
  230. model.F_REPAIRCLOSEREPT = "";
  231. #endregion
  232. int resorderbase = new BLL.T_Wo_WorkOrderBase().Add(model);//添加基本信息
  233. workorderid = resorderbase;
  234. if (resorderbase > 0)
  235. {
  236. bl = true;
  237. #region 调用接口回调
  238. try
  239. {
  240. StringBuilder returnStr = new StringBuilder();
  241. string wxAddUrl = string.Format("http://zzmetro-kf.sujie-china.com/api/customer/close/{0}/{1}", recordId, resorderbase);
  242. HttpHelper.HttpGet(wxAddUrl);
  243. }
  244. catch (Exception ex)
  245. {
  246. }
  247. #endregion
  248. }
  249. else
  250. {
  251. bl = false;
  252. }
  253. }
  254. catch (Exception ex)
  255. {
  256. }
  257. return bl;
  258. }
  259. #endregion
  260. //字典表
  261. BLL.T_Sys_DictionaryValue dicValueBll = new BLL.T_Sys_DictionaryValue();
  262. /// <summary>
  263. /// 获取员工信息
  264. /// </summary>
  265. /// <param name="deptId">部门id</param>
  266. /// <returns></returns>
  267. public string GetDeptUsers(string deptId)
  268. {
  269. try
  270. {
  271. return JsonConvert.SerializeObject(userBll.GetModelList("F_DeptId=" + deptId));
  272. }
  273. catch (Exception ex)
  274. {
  275. }
  276. return null;
  277. }
  278. #region 获取处理类型字典
  279. /// <summary>
  280. /// 获取处理类型字典
  281. /// </summary>
  282. /// <returns></returns>
  283. public List<T_Sys_DictionaryValue> GetCodeType(string dicCodeType)
  284. {
  285. return dicValueBll.GetModelList("F_DictionaryFlag='" + dicCodeType + "'");
  286. }
  287. #endregion
  288. #region 获取业务类型
  289. /// <summary>
  290. /// 获取业务类型
  291. /// </summary>
  292. public List<Model.T_Wo_WorkOrderType> GetWorkTypeModelList()
  293. {
  294. //最终需要返回的菜单
  295. List<Model.T_Wo_WorkOrderType> newModelList = new List<T_Wo_WorkOrderType>();
  296. Model.PageData<Model.T_Wo_WorkOrderType> pageModel = new Model.PageData<Model.T_Wo_WorkOrderType>();
  297. BLL.T_Wo_WorkOrderType bll = new BLL.T_Wo_WorkOrderType();
  298. //获取业务类型列表
  299. List<Model.T_Wo_WorkOrderType> WorkTypeModelList = bll.GetModelList("");
  300. if (WorkTypeModelList != null && WorkTypeModelList.Count > 0)
  301. {
  302. //获取默认根节点
  303. Model.T_Wo_WorkOrderType rootNode = WorkTypeModelList.FirstOrDefault(m => m.F_ParentId == 0);
  304. //获取一级节点
  305. List<Model.T_Wo_WorkOrderType> rootModelList = WorkTypeModelList.Where(t => t.F_ParentId == rootNode.F_WorkOrderTypeId).ToList();
  306. if (rootModelList != null && rootModelList.Count > 0)
  307. {
  308. foreach (T_Wo_WorkOrderType WorkOrderTypeModel in rootModelList)
  309. {
  310. List<Model.T_Wo_WorkOrderType> nullModelList = new List<T_Wo_WorkOrderType>();
  311. WorkOrderTypeModel.WorkTypeModelList = nullModelList;
  312. newModelList.Add(GetWorkTypeModelChild(WorkOrderTypeModel, WorkOrderTypeModel, WorkTypeModelList));
  313. }
  314. }
  315. }
  316. return newModelList;
  317. }
  318. //获取所有子集
  319. public Model.T_Wo_WorkOrderType GetWorkTypeModelChild(T_Wo_WorkOrderType rootNode, T_Wo_WorkOrderType WorkOrderTypeModel, List<Model.T_Wo_WorkOrderType> WorkTypeModelList)
  320. {
  321. //获取子集节点
  322. List<Model.T_Wo_WorkOrderType> sonModelList = WorkTypeModelList.Where(t => t.F_ParentId == WorkOrderTypeModel.F_WorkOrderTypeId).ToList();
  323. if (sonModelList != null && sonModelList.Count > 0)
  324. {
  325. foreach (T_Wo_WorkOrderType workOrderTypeModel in sonModelList)
  326. {
  327. //获取子子集
  328. List<Model.T_Wo_WorkOrderType> childModelList = WorkTypeModelList.Where(t => t.F_ParentId == workOrderTypeModel.F_WorkOrderTypeId).ToList();
  329. if (childModelList != null && childModelList.Count > 0)
  330. {
  331. GetWorkTypeModelChild(rootNode, workOrderTypeModel, WorkTypeModelList);
  332. }
  333. else
  334. {
  335. rootNode.WorkTypeModelList.Add(workOrderTypeModel);
  336. }
  337. }
  338. }
  339. return rootNode;
  340. }
  341. #endregion
  342. /// <summary>
  343. /// 获取字典信息
  344. /// </summary>
  345. /// <returns></returns>
  346. public ActionResult GetDicSelect(string diccode, string code1, string name1, string code2, string name2, string code3, string name3)
  347. {
  348. SelectInfoTypeModel modelRes = new SelectInfoTypeModel();
  349. modelRes.diccode = diccode;
  350. modelRes.code1 = code1;
  351. modelRes.name1 = string.IsNullOrEmpty(name1) ? "请选择" : name1;
  352. modelRes.code2 = code2;
  353. modelRes.name2 = string.IsNullOrEmpty(name2) ? "请选择" : name2;
  354. modelRes.code3 = code3;
  355. modelRes.name3 = string.IsNullOrEmpty(name3) ? "请选择" : name3;
  356. List<T_Sys_DictionaryValue> modelList = new List<T_Sys_DictionaryValue>();
  357. BLL.T_Sys_DictionaryValue dicValueBll = new BLL.T_Sys_DictionaryValue();
  358. modelList = dicValueBll.GetModelList("F_DictionaryFlag='ZDXX'");
  359. if (modelList != null && modelList.Count > 0)
  360. {
  361. foreach (T_Sys_DictionaryValue model in modelList)
  362. {
  363. model.DictionaryValueModelList = dicValueBll.GetModelList("F_DictionaryFlag='" + model.F_ValueCode + "'");
  364. }
  365. }
  366. modelRes.modelList = modelList;
  367. return View(modelRes);
  368. }
  369. /// <summary>
  370. /// 编辑手工工单信息
  371. /// </summary>
  372. /// <param name="workOrderBaseModel"></param>
  373. /// <returns></returns>
  374. [AcceptVerbs(HttpVerbs.Post)]
  375. public bool workOrderAddDatanew(T_Wo_WorkOrderBase workOrderBaseModel)
  376. {
  377. bool bl = false;
  378. try
  379. {
  380. //工单来源
  381. workOrderBaseModel.F_REPAIRMANID = 4;
  382. workOrderBaseModel.F_WORKORDERFROM = "微博工单";
  383. string wbh = workOrderBaseModel.CustomerBaseModel.F_CustomerEName.Trim();
  384. if (!string.IsNullOrEmpty(wbh))
  385. {
  386. workOrderBaseModel.F_EMPCODE = wbh;
  387. workOrderBaseModel.CustomerBaseModel.F_PostCode = wbh;
  388. }
  389. //当前用户信息
  390. //workOrderBaseModel.F_USERID = F_UserID;//id
  391. //workOrderBaseModel.F_LINKMAN = F_UserCode;//工号
  392. //workOrderBaseModel.F_REPAIRMANNAME = F_UserName;//姓名
  393. workOrderBaseModel.F_LINKMANTELEPHONE = workOrderBaseModel.CustomerBaseModel.F_Mobile;
  394. //if (F_UserID > 0)
  395. //{
  396. // T_Sys_UserAccount usermodel = new T_Sys_UserAccount();
  397. // usermodel = userBll.GetModel(F_UserID);
  398. // workOrderBaseModel.F_REPAIRMANNAME = usermodel.F_UserName;//姓名
  399. //}
  400. if (workOrderBaseModel.CustomerBaseModel != null)
  401. {
  402. //最近联络方式
  403. if (workOrderBaseModel.F_REPAIRMANID.ToString()=="4")
  404. { workOrderBaseModel.CustomerBaseModel.F_Kind = "3"; }
  405. else {
  406. workOrderBaseModel.CustomerBaseModel.F_Kind = workOrderBaseModel.F_REPAIRMANID.ToString();
  407. }
  408. workOrderBaseModel.CustomerBaseModel.F_CustomerNature = workOrderBaseModel.F_WORKORDERFROM;
  409. //业务类型
  410. workOrderBaseModel.CustomerBaseModel.F_IndustryId = workOrderBaseModel.F_REPAIRLEVEL;
  411. workOrderBaseModel.CustomerBaseModel.F_Url = workOrderBaseModel.F_ADSLACCOUNT;
  412. workOrderBaseModel.CustomerBaseModel.F_CustomerId = Convert.ToInt32(workOrderBaseModel.F_CUSTOMERID);
  413. ////客户等级
  414. workOrderBaseModel.CustomerBaseModel.F_ScaleResume = "1";
  415. workOrderBaseModel.CustomerBaseModel.F_CustomerClass = "一般客户";
  416. //保存工单基础信息
  417. //修改客户基础信息
  418. int cusid = cusBLL.EditCusInfoModel(workOrderBaseModel.CustomerBaseModel);
  419. if (cusid > 0)
  420. {
  421. workOrderBaseModel.F_CUSTOMERID = cusid;
  422. }
  423. }
  424. if (workOrderBaseModel.F_WORKORDERID == 0)
  425. {
  426. workOrderBaseModel.F_CREATEDATE = DateTime.Now;
  427. bl =orderBLL.AddWbgd(workOrderBaseModel);
  428. }
  429. else
  430. {
  431. try
  432. {
  433. YTSoft.BaseCallCenter.Model.T_Wo_WorkOrderBase m = new YTSoft.BaseCallCenter.BLL.T_Wo_WorkOrderBase().GetModel(workOrderBaseModel.F_WORKORDERID);
  434. workOrderBaseModel.F_LINKMANTELEPHONE = m.F_LINKMANTELEPHONE;
  435. workOrderBaseModel.F_CUSTOMERTELEPHONE = m.F_CUSTOMERTELEPHONE;
  436. workOrderBaseModel.F_NUMBER = m.F_CODE;
  437. }
  438. catch
  439. { }
  440. if (workOrderBaseModel.F_SERVICETYPE == "待处理")
  441. {
  442. workOrderBaseModel.F_WORKORDERNAME = "手工工单";
  443. return orderBLL.UpdateWorkOrderInfoModel(workOrderBaseModel);
  444. }
  445. else
  446. {
  447. workOrderBaseModel.F_WORKORDERNAME = "手工工单";
  448. return orderBLL.UpdateWorkOrderInfoModel(workOrderBaseModel);
  449. }
  450. }
  451. }
  452. catch (Exception ex) { }
  453. return bl;
  454. }
  455. }
  456. }