地铁二期项目正式开始

WorkOrderController.cs 73KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862
  1. using Newtonsoft.Json;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Web;
  7. using System.Web.Mvc;
  8. using YTSoft.BaseCallCenter.Model;
  9. using YTSoft.BaseCallCenter.MVCWeb.Models;
  10. using YTSoft.Common;
  11. using YTSoft.DBUtility;
  12. namespace YTSoft.BaseCallCenter.MVCWeb.Controllers
  13. {
  14. public class WorkOrderController : BaseController
  15. {
  16. //工单信息
  17. BLL.T_Wo_WorkOrderBase orderBLL = new BLL.T_Wo_WorkOrderBase();
  18. //客户信息
  19. BLL.T_Cus_CustomerBase cusBLL = new BLL.T_Cus_CustomerBase();
  20. //部门表
  21. BLL.T_Sys_Department deptBll = new BLL.T_Sys_Department();
  22. //用户表
  23. BLL.T_Sys_UserAccount userBll = new BLL.T_Sys_UserAccount();
  24. //历史工单表
  25. BLL.T_Wo_WorkOrderHistory historyBll = new BLL.T_Wo_WorkOrderHistory();
  26. #region 公共
  27. /// <summary>
  28. /// 获取二级业务类型
  29. /// </summary>
  30. /// <param name="deptId">业务类别</param>
  31. /// <returns></returns>
  32. public string GetBussType(int? bussnessType)
  33. {
  34. try
  35. {
  36. if (bussnessType != null && bussnessType > 0)
  37. {
  38. List<Model.T_Wo_WorkOrderType> modelList = GetWorkTypeModelList();
  39. return JsonConvert.SerializeObject(modelList.Where(t => t.F_WorkOrderTypeId == bussnessType).ToList()[0].WorkTypeModelList);
  40. }
  41. else
  42. {
  43. return null;
  44. }
  45. }
  46. catch (Exception ex)
  47. {
  48. }
  49. return null;
  50. }
  51. /// <summary>
  52. /// 导出数据
  53. /// </summary>
  54. /// <param name="page">当前页码</param>
  55. /// <param name="limit">每页数据量</param>
  56. /// <param name="sqlWhere">查询条件</param>
  57. /// <returns></returns>
  58. [AcceptVerbs(HttpVerbs.Post)]
  59. public string ExToExcel(ExToExcel paramModel)
  60. {
  61. //数据结果集
  62. ResponseData dataModel = new ResponseData();
  63. string sql = "";
  64. //工单编号
  65. if (!string.IsNullOrEmpty(paramModel.workorderNum))
  66. {
  67. sql += " and t.F_CODE like '%" + paramModel.workorderNum.Trim() + "%'";
  68. }
  69. //客户姓名
  70. if (!string.IsNullOrEmpty(paramModel.cusName))
  71. {
  72. sql += " and t.F_CUSTOMERNAME like '%" + paramModel.cusName.Trim() + "%'";
  73. }
  74. //客户电话
  75. if (!string.IsNullOrEmpty(paramModel.phoneNumber))
  76. {
  77. sql += " and t.F_CUSTOMERTELEPHONE like '%" + paramModel.phoneNumber.Trim() + "%'";
  78. }
  79. //坐席工号
  80. if (!string.IsNullOrEmpty(paramModel.userInfo))
  81. {
  82. sql += " and t.F_LINKMAN like '%" + paramModel.userInfo.Trim() + "%'";
  83. }
  84. //状态
  85. if (paramModel.status != null)
  86. {
  87. sql += " and t.F_WORKORDERSTATEID =" + paramModel.status;
  88. }
  89. //业务类别
  90. if (paramModel.bussType != null && paramModel.bussType > 0)
  91. {
  92. sql += " and t.F_FILEFLAG =" + paramModel.bussType;
  93. }
  94. //业务类型
  95. if (paramModel.detailType != null && paramModel.detailType > 0)
  96. {
  97. sql += " and t.F_REPAIRLEVEL =" + paramModel.detailType;
  98. }
  99. //内容
  100. if (!string.IsNullOrEmpty(paramModel.Content))
  101. {
  102. sql += " and t.F_CONTENT like '%" + paramModel.Content.Trim() + "%'";
  103. }
  104. //处理方式
  105. if (paramModel.GoType != null && paramModel.GoType > 0)
  106. {
  107. sql += " and t.F_WORKORDERTYPEID =" + paramModel.GoType;
  108. }
  109. //渠道
  110. if (paramModel.FromType != null && paramModel.FromType > 0)
  111. {
  112. sql += " and t.F_REPAIRMANID =" + paramModel.FromType;
  113. }
  114. //查询按钮
  115. if (!string.IsNullOrEmpty(paramModel.dateParty))
  116. {
  117. string startDate = paramModel.dateParty.Substring(0, 10);
  118. string endDate = paramModel.dateParty.Substring(12);
  119. sql += " and t.F_CREATEDATE>= '" + startDate + " 00:00:00" + "'";
  120. sql += " and t.F_CREATEDATE<= '" + endDate + " 23:59:59" + "'";
  121. }
  122. string tableNew = "";
  123. if (F_RoleID == 17)
  124. {
  125. tableNew = string.Format("(select DISTINCT t.* from T_Wo_WorkOrderBase t LEFT JOIN T_Wo_WorkOrderHistory h ON " +
  126. "t.F_WORKORDERID=h.F_INSTANCEID LEFT JOIN T_Sys_UserAccount u ON t.F_USERID= u.F_UserId) as t");
  127. }
  128. else
  129. {
  130. tableNew = string.Format("(select DISTINCT t.* from T_Wo_WorkOrderBase t LEFT JOIN T_Wo_WorkOrderHistory h ON " +
  131. "t.F_WORKORDERID=h.F_INSTANCEID LEFT JOIN T_Sys_UserAccount u ON t.F_USERID= u.F_UserId where " +
  132. "(u.F_DeptId={0} OR h.F_OPTBTNID={0})) as t", F_DeptId);
  133. }
  134. DataTable dt = new DataTable();
  135. int recordCount = 0;
  136. Model.PageData<Model.T_Wo_WorkOrderBase> pageModel = new Model.PageData<Model.T_Wo_WorkOrderBase>();
  137. dt = BLL.PagerBLL.GetListPager(
  138. tableNew,
  139. "F_WORKORDERID",
  140. " t.F_CODE as 工单编号"
  141. + ",F_CUSTOMERNAME as 客户姓名"
  142. + ",F_CUSTOMERTELEPHONE as 客户电话"
  143. + ",F_LINKMAN as 坐席工号"
  144. + ",F_REPAIRMANNAME as 坐席姓名"
  145. + ",F_WORKORDERFROM as 接入渠道"
  146. + " , CONVERT(varchar, t.F_CREATEDATE, 120) as 受理时间"
  147. + ",F_REPAIRREQUEST as 业务状态"
  148. + ",F_CONTENT as 内容"
  149. + ",F_RETURNVISITCONTENT as 处理回复内容"
  150. + ",F_HOUSING as 业务类型"
  151. + ",F_ADSLACCOUNT as 业务明细"
  152. ,
  153. sql,
  154. "ORDER BY t.F_CREATEDATE desc",
  155. 100000,
  156. 1,
  157. true,
  158. out recordCount);
  159. ResponseDataModel NewData = new ResponseDataModel();
  160. ExcelReadWrite erw = new ExcelReadWrite();
  161. byte[] Filebyte = erw.GetExcelByte(dt, "sheet1", true);
  162. int officeVersion = erw.OfficeType();
  163. if (officeVersion == 1 || officeVersion == 2)
  164. {
  165. NewData.Message = DateTime.Now.ToString("yyyy-MM-dd") + "工单数据.xls";
  166. }
  167. else
  168. {
  169. NewData.Message = DateTime.Now.ToString("yyyy-MM-dd") + "工单数据.xlsx";
  170. }
  171. NewData.Code = "0";
  172. NewData.Data = JsonConvert.SerializeObject(Filebyte);
  173. return JsonConvert.SerializeObject(NewData);
  174. }
  175. #endregion
  176. #region 工单详情
  177. public ActionResult ViewMyOrder(int orderKeyId)
  178. {
  179. //实例化基础信息表
  180. CallScreenModel callScreenModel = new CallScreenModel();
  181. //获取业务工单信息
  182. if (orderKeyId > 0)
  183. {
  184. callScreenModel.WorkOrderBaseModel = orderBLL.GetModel(orderKeyId);
  185. //如果电话号码不为空
  186. if (callScreenModel.WorkOrderBaseModel != null && !string.IsNullOrEmpty(callScreenModel.WorkOrderBaseModel.F_CUSTOMERTELEPHONE))
  187. {
  188. T_Cus_CustomerBase baseCusModel = cusBLL.GetCusInfoModel(callScreenModel.WorkOrderBaseModel.F_CUSTOMERTELEPHONE);
  189. if (baseCusModel != null && baseCusModel.F_CustomerId > 0)
  190. {
  191. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = baseCusModel;
  192. }
  193. else
  194. {
  195. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  196. }
  197. }
  198. else
  199. {
  200. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  201. }
  202. //获取客户基本信息
  203. if (!string.IsNullOrEmpty(callScreenModel.WorkOrderBaseModel.F_EMPCODE))
  204. {
  205. T_Cus_CustomerBase baseCusModel = cusBLL.GetCusInfoModel(1, callScreenModel.WorkOrderBaseModel.F_EMPCODE);
  206. if (baseCusModel != null && baseCusModel.F_CustomerId > 0)
  207. {
  208. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = baseCusModel;
  209. }
  210. else
  211. {
  212. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  213. }
  214. }
  215. }
  216. //业务类型字典表
  217. callScreenModel.WorkOrderTypeModelList = GetWorkTypeModelList();
  218. //获取处理方式字典表
  219. callScreenModel.GoTypeModelList = GetCodeType("CLFS");
  220. //获取部门列表
  221. callScreenModel.DepartmentList = deptBll.GetModelList("F_ParentId=0");
  222. callScreenModel.HistoryOrderList = historyBll.GetModelList("F_INSTANCEID=" + orderKeyId);
  223. return View(callScreenModel);
  224. }
  225. #endregion
  226. #region 所有工单信息
  227. /// <summary>
  228. /// 获取所有工单信息
  229. /// </summary>
  230. /// <returns></returns>
  231. public ActionResult WorkOrderAllList(int? orderType)
  232. {
  233. CallScreenModel callScreenModel = new CallScreenModel();
  234. //业务类型字典表
  235. callScreenModel.WorkOrderTypeModelList = GetWorkTypeModelList();
  236. //业务类型字典表
  237. callScreenModel.GoTypeModelList = GetCodeType("CLFS");
  238. //话务标志
  239. callScreenModel.SeatFlag = F_SeatFlag;
  240. //1、所有工单页面2、工单编辑页面
  241. if (orderType != null && orderType > 0)
  242. {
  243. callScreenModel.OrderType = int.Parse(orderType.ToString());
  244. }
  245. else
  246. {
  247. callScreenModel.OrderType = 1;
  248. }
  249. return View(callScreenModel);
  250. }
  251. /// <summary>
  252. /// 获取工单信息
  253. /// </summary>
  254. /// <param name="page">当前页码</param>
  255. /// <param name="limit">每页数据量</param>
  256. /// <param name="sqlWhere">查询条件</param>
  257. /// <returns></returns>
  258. [ActionName("WorkOrderAllData")]
  259. [HttpGet]
  260. public string WorkOrderAllList(DateTime? NowDateTime, int page, int limit, int? types, string dateParty,
  261. string workorderNum, string cusName, string phoneNumber, string userInfo, int? status, int? bussType, int? detailType, string Content, int? GoType, int? FromType)
  262. {
  263. //数据结果集
  264. ResponseData dataModel = new ResponseData();
  265. string sql = "";
  266. //工单编号
  267. if (!string.IsNullOrEmpty(workorderNum))
  268. {
  269. sql += " and t.F_CODE like '%" + workorderNum.Trim() + "%'";
  270. }
  271. //客户姓名
  272. if (!string.IsNullOrEmpty(cusName))
  273. {
  274. sql += " and t.F_CUSTOMERNAME like '%" + cusName.Trim() + "%'";
  275. }
  276. //客户电话
  277. if (!string.IsNullOrEmpty(phoneNumber))
  278. {
  279. sql += " and t.F_CUSTOMERTELEPHONE like '%" + phoneNumber.Trim() + "%'";
  280. }
  281. //坐席工号
  282. if (!string.IsNullOrEmpty(userInfo))
  283. {
  284. sql += " and t.F_LINKMAN like '%" + userInfo.Trim() + "%'";
  285. }
  286. //状态 F_WORKORDERSTATEID 0未处理 1处理中 2已办结
  287. if (status != null)
  288. {
  289. sql += " and t.F_WORKORDERSTATEID =" + status;
  290. }
  291. //业务类别
  292. if (bussType != null && bussType > 0)
  293. {
  294. sql += " and t.F_FILEFLAG =" + bussType;
  295. }
  296. //业务类型
  297. if (detailType != null && detailType > 0)
  298. {
  299. sql += " and t.F_REPAIRLEVEL =" + detailType;
  300. }
  301. //内容
  302. if (!string.IsNullOrEmpty(Content))
  303. {
  304. sql += " and t.F_CONTENT like '%" + Content.Trim() + "%'";
  305. }
  306. //处理方式 F_WORKORDERTYPEID 处理方式 1转单 3客服处理
  307. if (GoType != null && GoType > 0)
  308. {
  309. sql += " and t.F_WORKORDERTYPEID =" + GoType;
  310. }
  311. //接入渠道 1语音 2留言 3微信 4微博
  312. if (FromType != null && FromType > 0)
  313. {
  314. sql += " and t.F_REPAIRMANID =" + FromType;
  315. }
  316. //查询按钮
  317. if (types == 0 || types==null)
  318. {
  319. if (!string.IsNullOrEmpty(dateParty))
  320. {
  321. string startDate = dateParty.Substring(0, 10);
  322. string endDate = dateParty.Substring(12);
  323. sql += " and t.F_CREATEDATE>= '" + startDate + " 00:00:00" + "'";
  324. sql += " and t.F_CREATEDATE<= '" + endDate + " 23:59:59" + "'";
  325. }
  326. else {
  327. string endDate = DateTime.Now.ToString("yyyy-MM-dd");
  328. string startDate = DateTime.Now.ToString("yyyy-MM-dd");
  329. sql += " and t.F_CREATEDATE>= '" + startDate + " 00:00:00" + "'";
  330. sql += " and t.F_CREATEDATE<= '" + endDate + " 23:59:59" + "'";
  331. }
  332. //sql += " and F_WORKORDERID not in (select top 1 F_INSTANCEID from T_Wo_WorkOrderHistory where F_INSTANCEID = t.F_WORKORDERID and F_TASKFLAG = 2 and F_HISTORYID = (select top 1 F_HISTORYID from T_Wo_WorkOrderHistory where F_INSTANCEID = t.F_WORKORDERID order by F_OPTDATE desc))";
  333. }//一周按钮
  334. else if (types == 1)
  335. {
  336. string endDate = DateTime.Now.ToString("yyyy-MM-dd");
  337. string startDate = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd");
  338. sql += " and t.F_CREATEDATE>= '" + startDate + " 00:00:00" + "'";
  339. sql += " and t.F_CREATEDATE<= '" + endDate + " 23:59:59" + "'";
  340. }//一月按钮
  341. else if (types == 2)
  342. {
  343. string endDate = DateTime.Now.ToString("yyyy-MM-dd");
  344. string startDate = DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd");
  345. sql += " and t.F_CREATEDATE>= '" + startDate + " 00:00:00" + "'";
  346. sql += " and t.F_CREATEDATE<= '" + endDate + " 23:59:59" + "'";
  347. }//一年按钮
  348. else if (types == 3)
  349. {
  350. string endDate = DateTime.Now.ToString("yyyy-MM-dd");
  351. string startDate = DateTime.Now.AddYears(-1).ToString("yyyy-MM-dd");
  352. sql += " and t.F_CREATEDATE>= '" + startDate + " 00:00:00" + "'";
  353. sql += " and t.F_CREATEDATE<= '" + endDate + " 23:59:59" + "'";
  354. }
  355. //一天按钮
  356. else if (types == 4)
  357. {
  358. string endDate = DateTime.Now.ToString("yyyy-MM-dd");
  359. string startDate = DateTime.Now.ToString("yyyy-MM-dd");
  360. sql += " and t.F_CREATEDATE>= '" + startDate + " 00:00:00" + "'";
  361. sql += " and t.F_CREATEDATE<= '" + endDate + " 23:59:59" + "'";
  362. }
  363. string tableNew = string.Format("(select DISTINCT t.* from T_Wo_WorkOrderBase t LEFT JOIN T_Wo_WorkOrderHistory h ON t.F_WORKORDERID=h.F_INSTANCEID LEFT JOIN T_Sys_UserAccount u ON t.F_USERID= u.F_UserId where (u.F_DeptId={0} OR h.F_OPTBTNID={0})) as t", F_DeptId);
  364. DataTable dt = new DataTable();
  365. int recordCount = 0;
  366. Model.PageData<Model.T_Wo_WorkOrderBase> pageModel = new Model.PageData<Model.T_Wo_WorkOrderBase>();
  367. dt = BLL.PagerBLL.GetListPager(
  368. tableNew,
  369. "F_WORKORDERID",
  370. " t.*,CONVERT(varchar,t.F_CREATEDATE, 120 ) as F_CREATEDATENew"
  371. + @" , replace(replace(CASE F_WORKORDERFROM WHEN '留言工单' THEN (SELECT top 1 F_RecFileUrl FROM dbo.T_Call_LeaveRecord WHERE F_CallId=t.F_KSHADDRESSCODE) WHEN '语音工单' THEN (SELECT top 1 FilePath FROM dbo.T_Call_CallRecords WHERE CallId=t.F_KSHADDRESSCODE) ELSE NULL END,'\','/'),'" + GetSysconfig("newFilePath") + "','" + GetSysconfig("newPlayPath") + "') as FilePath"
  372. ,
  373. sql,
  374. "ORDER BY t.F_CREATEDATE desc",
  375. limit,
  376. page,
  377. true,
  378. out recordCount);
  379. dataModel.code = 0;
  380. dataModel.count = recordCount;
  381. dataModel.data = dt;
  382. return JsonConvert.SerializeObject(dataModel);
  383. }
  384. #endregion
  385. #region 待处理工单 新
  386. /// <summary>
  387. /// 获取待办工单 新
  388. /// </summary>
  389. /// <param name="dtype">工单类型 1、所有待办工单 2、代办结工单</param>
  390. /// <returns></returns>
  391. public ActionResult WorkOrderWaitList(int dtype)
  392. {
  393. WorkOrderMyModel model = new WorkOrderMyModel();
  394. model.DType = dtype;
  395. //业务类型字典表
  396. model.WorkOrderTypeModelList = GetWorkTypeModelList();
  397. //话务标志
  398. model.SeatFlag = F_SeatFlag;
  399. return View(model);
  400. }
  401. /// <summary>
  402. /// 我的待办工单
  403. /// </summary>
  404. /// <param name="page">当前页码</param>
  405. /// <param name="limit">每页数据量</param>
  406. /// <param name="sqlWhere">查询条件</param>
  407. /// <returns></returns>
  408. [ActionName("WorkOrderMyWaitData")]
  409. [HttpGet]
  410. public string WorkOrderMyWaitData(DateTime? NowDateTime, int page, int limit, int? types, string dateParty,
  411. string workorderNum, string cusName, string phoneNumber,
  412. string userInfo, int? bussType, int? detailType, string Content,string datatype)
  413. {
  414. //数据结果集
  415. ResponseData dataModel = new ResponseData();
  416. //F_FILEFLAG 业务类型ID
  417. //F_WORKORDERSTATEID 0未处理 1处理中 2已办结 status
  418. //F_WORKORDERTYPEID 处理方式 1转单 3客服处理 GoType
  419. //F_REPAIRMANID 接入渠道 1语音 2留言 3微信 4微博 FromType
  420. datatype = "可撤回";
  421. string sql = "";
  422. if (datatype != "可撤回")
  423. {
  424. sql = string.Format(" and F_WORKORDERTYPEID=1 and F_WORKORDERSTATEID=1 and F_WORKORDERID in (select F_INSTANCEID from T_Wo_WorkOrderHistory where F_WORKORDERSTATEID=0 and F_OPTUSERID={0})", F_UserID);
  425. }
  426. else
  427. {
  428. sql = string.Format(" and F_WORKORDERTYPEID=1 and F_WORKORDERSTATEID=3 and F_WORKORDERID in (select F_INSTANCEID from T_Wo_WorkOrderHistory where F_WORKORDERSTATEID=1 and F_OPTUSERID={0})", F_UserID);
  429. }
  430. //工单编号
  431. if (!string.IsNullOrEmpty(workorderNum))
  432. {
  433. sql += " and F_CODE like '%" + workorderNum.Trim() + "%'";
  434. }
  435. //客户姓名
  436. if (!string.IsNullOrEmpty(cusName))
  437. {
  438. sql += " and F_CUSTOMERNAME like '%" + cusName.Trim() + "%'";
  439. }
  440. //客户电话
  441. if (!string.IsNullOrEmpty(phoneNumber))
  442. {
  443. sql += " and F_CUSTOMERTELEPHONE like '%" + phoneNumber.Trim() + "%'";
  444. }
  445. //坐席工号
  446. if (!string.IsNullOrEmpty(userInfo))
  447. {
  448. sql += " and F_LINKMAN like '%" + userInfo.Trim() + "%'";
  449. }
  450. //业务类别
  451. if (bussType != null && bussType > 0)
  452. {
  453. sql += " and F_FILEFLAG =" + bussType;
  454. }
  455. //业务类型
  456. if (detailType != null && detailType > 0)
  457. {
  458. sql += " and F_REPAIRLEVEL =" + detailType;
  459. }
  460. //内容
  461. if (!string.IsNullOrEmpty(Content))
  462. {
  463. sql += " and F_CONTENT like '%" + Content.Trim() + "%'";
  464. }
  465. //查询按钮
  466. if (types == 0)
  467. {
  468. if (!string.IsNullOrEmpty(dateParty))
  469. {
  470. string startDate = dateParty.Substring(0, 10);
  471. string endDate = dateParty.Substring(12);
  472. sql += " and F_CREATEDATE>= '" + startDate + " 00:00:00" + "'";
  473. sql += " and F_CREATEDATE<= '" + endDate + " 23:59:59" + "'";
  474. }
  475. }//一周按钮
  476. else if (types == 1)
  477. {
  478. string endDate = DateTime.Now.ToString();
  479. string startDate = DateTime.Now.AddDays(-7).ToString();
  480. sql += " and F_CREATEDATE>= '" + startDate + "'";
  481. sql += " and F_CREATEDATE<= '" + endDate + "'";
  482. }//一月按钮
  483. else if (types == 2)
  484. {
  485. string endDate = DateTime.Now.ToString();
  486. string startDate = DateTime.Now.AddMonths(-1).ToString();
  487. sql += " and F_CREATEDATE>= '" + startDate + "'";
  488. sql += " and F_CREATEDATE<= '" + endDate + "'";
  489. }//一年按钮
  490. else if (types == 3)
  491. {
  492. string endDate = DateTime.Now.ToString();
  493. string startDate = DateTime.Now.AddYears(-1).ToString();
  494. sql += " and F_CREATEDATE>= '" + startDate + "'";
  495. sql += " and F_CREATEDATE<= '" + endDate + "'";
  496. }
  497. DataTable dt = new DataTable();
  498. int recordCount = 0;
  499. Model.PageData<Model.T_Wo_WorkOrderBase> pageModel = new Model.PageData<Model.T_Wo_WorkOrderBase>();
  500. dt = BLL.PagerBLL.GetListPager(
  501. "T_Wo_WorkOrderBase",
  502. "F_WORKORDERID",
  503. "*,CONVERT(varchar,F_CREATEDATE, 120 ) as F_CREATEDATENew"
  504. + string.Format(",(select F_HISTORYID from T_Wo_WorkOrderHistory where F_INSTANCEID=F_WORKORDERID and F_WORKORDERSTATEID=0 and F_OPTUSERID={0}) AS F_HISTORYID", F_UserID)
  505. + @" , replace(replace(CASE F_WORKORDERFROM WHEN '留言工单' THEN (SELECT F_RecFileUrl FROM dbo.T_Call_LeaveRecord WHERE F_CallId=F_KSHADDRESSCODE) WHEN '语音工单' THEN (SELECT FilePath FROM dbo.T_Call_CallRecords WHERE CallId=F_KSHADDRESSCODE AND FilePath!='') ELSE NULL END,'\','/'),'" + GetSysconfig("newFilePath") + "','" + GetSysconfig("newPlayPath") + "') as FilePath",
  506. //+ " ,(CASE F_WORKORDERFROM WHEN '留言工单' THEN (SELECT F_RecFileUrl FROM dbo.T_Call_LeaveRecord WHERE F_CallId=F_KSHADDRESSCODE) WHEN '语音工单' THEN (SELECT FilePath FROM dbo.T_Call_CallRecords WHERE CallId=F_KSHADDRESSCODE AND FilePath!='') ELSE NULL END ) as FilePath",
  507. sql,
  508. "ORDER BY F_CREATEDATE desc",
  509. limit,
  510. page,
  511. true,
  512. out recordCount);
  513. dataModel.code = 0;
  514. dataModel.count = recordCount;
  515. dataModel.data = dt;
  516. return JsonConvert.SerializeObject(dataModel);
  517. }
  518. /// <summary>
  519. /// 二级单位处理完成提交处理信息
  520. /// </summary>
  521. /// <param name="workOrderBaseModel"></param>
  522. /// <returns></returns>
  523. [AcceptVerbs(HttpVerbs.Post)]
  524. public bool SubmitOrder(T_Wo_WorkOrderHistory workOrderBaseModel)
  525. {
  526. return orderBLL.SubmitOrder(workOrderBaseModel, workOrderBaseModel.F_INSTANCEID, F_UserName);
  527. }
  528. #endregion
  529. #region 待回访
  530. /// <summary>
  531. /// 获取待回访工单
  532. /// </summary>
  533. /// <param name="dtype">工单类型 1、所有待办工单 2、代办结工单</param>
  534. /// <returns></returns>
  535. public ActionResult WorkOrderMyListHF(int dtype)
  536. {
  537. WorkOrderMyModel model = new WorkOrderMyModel();
  538. model.DType = dtype;
  539. //业务类型字典表
  540. model.WorkOrderTypeModelList = GetWorkTypeModelList();
  541. //话务标志
  542. model.SeatFlag = F_SeatFlag;
  543. return View(model);
  544. }
  545. /// <summary>
  546. /// 全媒体客服处理回访
  547. /// </summary>
  548. /// <param name="workOrderBaseModel"></param>
  549. /// <returns></returns>
  550. [AcceptVerbs(HttpVerbs.Post)]
  551. public bool SubmitOrderHF(T_Wo_WorkOrderBase workOrderBaseModel)
  552. {
  553. return orderBLL.SubmitOrderHF(workOrderBaseModel);
  554. }
  555. /// <summary>
  556. /// 待回访工单
  557. /// </summary>
  558. /// <param name="page">当前页码</param>
  559. /// <param name="limit">每页数据量</param>
  560. /// <param name="sqlWhere">查询条件</param>
  561. /// <returns></returns>
  562. [ActionName("WorkOrderMyDataHF")]
  563. [HttpGet]
  564. public string WorkOrderMyDataHF(DateTime? NowDateTime, int page, int limit, int? types, string dateParty,
  565. string workorderNum, string cusName, string phoneNumber,
  566. string userInfo, int? bussType, int? detailType, string Content)
  567. {
  568. //数据结果集
  569. ResponseData dataModel = new ResponseData();
  570. //F_FILEFLAG 业务类型ID
  571. //F_WORKORDERSTATEID 0未处理 1处理中 2已办结 status
  572. //F_WORKORDERTYPEID 处理方式 1转单 3客服处理 GoType
  573. //F_REPAIRMANID 接入渠道 1语音 2留言 3微信 4微博 FromType
  574. //string sql = string.Format(" and F_WORKORDERTYPEID=1 and F_WORKORDERSTATEID=1 and F_WORKORDERID in (select F_INSTANCEID from T_Wo_WorkOrderHistory where F_WORKORDERSTATEID=0 and F_OPTUSERID={0})", F_UserID);
  575. string sql = string.Format(" and F_WORKORDERTYPEID=3 and F_WORKORDERSTATEID=3 and F_UserId={0}", F_UserID);
  576. //工单编号
  577. if (!string.IsNullOrEmpty(workorderNum))
  578. {
  579. sql += " and F_CODE like '%" + workorderNum.Trim() + "%'";
  580. }
  581. //客户姓名
  582. if (!string.IsNullOrEmpty(cusName))
  583. {
  584. sql += " and F_CUSTOMERNAME like '%" + cusName.Trim() + "%'";
  585. }
  586. //客户电话
  587. if (!string.IsNullOrEmpty(phoneNumber))
  588. {
  589. sql += " and F_CUSTOMERTELEPHONE like '%" + phoneNumber.Trim() + "%'";
  590. }
  591. //坐席工号
  592. if (!string.IsNullOrEmpty(userInfo))
  593. {
  594. sql += " and F_LINKMAN like '%" + userInfo.Trim() + "%'";
  595. }
  596. //业务类别
  597. if (bussType != null && bussType > 0)
  598. {
  599. sql += " and F_FILEFLAG =" + bussType;
  600. }
  601. //业务类型
  602. if (detailType != null && detailType > 0)
  603. {
  604. sql += " and F_REPAIRLEVEL =" + detailType;
  605. }
  606. //内容
  607. if (!string.IsNullOrEmpty(Content))
  608. {
  609. sql += " and F_CONTENT like '%" + Content.Trim() + "%'";
  610. }
  611. //查询按钮
  612. if (types == 0)
  613. {
  614. if (!string.IsNullOrEmpty(dateParty))
  615. {
  616. string startDate = dateParty.Substring(0, 10);
  617. string endDate = dateParty.Substring(12);
  618. sql += " and F_CREATEDATE>= '" + startDate + " 00:00:00" + "'";
  619. sql += " and F_CREATEDATE<= '" + endDate + " 23:59:59" + "'";
  620. }
  621. }//一周按钮
  622. else if (types == 1)
  623. {
  624. string endDate = DateTime.Now.ToString();
  625. string startDate = DateTime.Now.AddDays(-7).ToString();
  626. sql += " and F_CREATEDATE>= '" + startDate + "'";
  627. sql += " and F_CREATEDATE<= '" + endDate + "'";
  628. }//一月按钮
  629. else if (types == 2)
  630. {
  631. string endDate = DateTime.Now.ToString();
  632. string startDate = DateTime.Now.AddMonths(-1).ToString();
  633. sql += " and F_CREATEDATE>= '" + startDate + "'";
  634. sql += " and F_CREATEDATE<= '" + endDate + "'";
  635. }//一年按钮
  636. else if (types == 3)
  637. {
  638. string endDate = DateTime.Now.ToString();
  639. string startDate = DateTime.Now.AddYears(-1).ToString();
  640. sql += " and F_CREATEDATE>= '" + startDate + "'";
  641. sql += " and F_CREATEDATE<= '" + endDate + "'";
  642. }
  643. DataTable dt = new DataTable();
  644. int recordCount = 0;
  645. Model.PageData<Model.T_Wo_WorkOrderBase> pageModel = new Model.PageData<Model.T_Wo_WorkOrderBase>();
  646. dt = BLL.PagerBLL.GetListPager(
  647. "T_Wo_WorkOrderBase",
  648. "F_WORKORDERID",
  649. "*,CONVERT(varchar,F_CREATEDATE, 120 ) as F_CREATEDATENew"
  650. + @" , replace(replace(CASE F_WORKORDERFROM WHEN '留言工单' THEN (SELECT F_RecFileUrl FROM dbo.T_Call_LeaveRecord WHERE F_CallId=F_KSHADDRESSCODE) WHEN '语音工单' THEN (SELECT FilePath FROM dbo.T_Call_CallRecords WHERE CallId=F_KSHADDRESSCODE AND FilePath!='') ELSE NULL END,'\','/'),'" + GetSysconfig("newFilePath") + "','" + GetSysconfig("newPlayPath") + "') as FilePath",
  651. //+ " ,(CASE F_WORKORDERFROM WHEN '留言工单' THEN (SELECT F_RecFileUrl FROM dbo.T_Call_LeaveRecord WHERE F_CallId=F_KSHADDRESSCODE) WHEN '语音工单' THEN (SELECT FilePath FROM dbo.T_Call_CallRecords WHERE CallId=F_KSHADDRESSCODE AND FilePath!='') ELSE NULL END ) as FilePath",
  652. sql,
  653. "ORDER BY F_CREATEDATE desc",
  654. limit,
  655. page,
  656. true,
  657. out recordCount);
  658. dataModel.code = 0;
  659. dataModel.count = recordCount;
  660. dataModel.data = dt;
  661. return JsonConvert.SerializeObject(dataModel);
  662. }
  663. #endregion
  664. #region 待处理
  665. /// <summary>
  666. /// 获取待办工单
  667. /// </summary>
  668. /// <param name="dtype">工单类型 1、所有待办工单 2、代办结工单</param>
  669. /// <returns></returns>
  670. public ActionResult WorkOrderMyList(int dtype)
  671. {
  672. WorkOrderMyModel model = new WorkOrderMyModel();
  673. model.DType = dtype;
  674. //业务类型字典表
  675. model.WorkOrderTypeModelList = GetWorkTypeModelList();
  676. //话务标志
  677. model.SeatFlag = F_SeatFlag;
  678. return View(model);
  679. }
  680. /// <summary>
  681. /// 处理历史工单
  682. /// </summary>
  683. /// <param name="orderKeyId">主键</param>
  684. /// <returns></returns>
  685. public ActionResult EditMyOrder(int dtype=0, int orderKeyId=0)
  686. {
  687. //实例化基础信息表
  688. CallScreenModel callScreenModel = new CallScreenModel();
  689. //工单类型
  690. callScreenModel.DType = dtype;
  691. //话务标志
  692. callScreenModel.SeatFlag = F_SeatFlag;
  693. //获取业务工单信息
  694. if (orderKeyId > 0)
  695. {
  696. callScreenModel.WorkOrderBaseModel = orderBLL.GetModel(orderKeyId);
  697. //如果电话号码不为空
  698. if (callScreenModel.WorkOrderBaseModel != null && callScreenModel.WorkOrderBaseModel.F_CUSTOMERID>1)
  699. {
  700. T_Cus_CustomerBase baseCusModel = cusBLL.GetModel((int)callScreenModel.WorkOrderBaseModel.F_CUSTOMERID);
  701. if (baseCusModel != null && baseCusModel.F_CustomerId > 1)
  702. {
  703. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = baseCusModel;
  704. }
  705. else
  706. {
  707. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  708. }
  709. }
  710. else
  711. {
  712. callScreenModel.WorkOrderBaseModel.CustomerBaseModel = new T_Cus_CustomerBase();
  713. }
  714. }
  715. //业务类型字典表
  716. callScreenModel.WorkOrderTypeModelList = GetWorkTypeModelList();
  717. //获取处理方式字典表
  718. callScreenModel.GoTypeModelList = GetCodeType("CLFS");
  719. //回访满意度
  720. callScreenModel.MYdModelList = GetCodeType("khyjfl");
  721. //获取部门列表
  722. callScreenModel.DepartmentList = deptBll.GetModelList("F_ParentId=0");
  723. callScreenModel.HistoryOrderList = historyBll.GetModelList("F_INSTANCEID=" + orderKeyId);
  724. return View(callScreenModel);
  725. }
  726. /// <summary>
  727. /// 保存转办信息
  728. /// </summary>
  729. /// <param name="workOrderBaseModel"></param>
  730. /// <returns></returns>
  731. [AcceptVerbs(HttpVerbs.Post)]
  732. public bool workMyOrderAddData(T_Wo_WorkOrderBase workOrderBaseModel)
  733. {
  734. return orderBLL.EditMyOrderInfo(workOrderBaseModel);
  735. }
  736. /// <summary>
  737. /// 关闭转办订单
  738. /// </summary>
  739. /// <param name="workOrderBaseModel"></param>
  740. /// <returns></returns>
  741. [AcceptVerbs(HttpVerbs.Post)]
  742. public bool workMyOrderCloseData(T_Wo_WorkOrderBase workOrderBaseModel)
  743. {
  744. workOrderBaseModel.F_WORKORDERSTATEID = 2;
  745. workOrderBaseModel.F_REPAIRREQUEST = "已办结";
  746. return orderBLL.CloseMyOrderInfo(workOrderBaseModel);
  747. }
  748. /// <summary>
  749. /// 我的待办工单
  750. /// </summary>
  751. /// <param name="page">当前页码</param>
  752. /// <param name="limit">每页数据量</param>
  753. /// <param name="sqlWhere">查询条件</param>
  754. /// <returns></returns>
  755. [ActionName("WorkOrderMyData")]
  756. [HttpGet]
  757. public string WorkOrderMyData(DateTime? NowDateTime, int page, int limit, int? types, string dateParty,
  758. string workorderNum, string cusName, string phoneNumber,
  759. string userInfo, int? bussType, int? detailType, string Content)
  760. {
  761. //数据结果集
  762. ResponseData dataModel = new ResponseData();
  763. //F_FILEFLAG 业务类型ID
  764. //F_WORKORDERSTATEID 0未处理 1处理中 2已办结 status
  765. //F_WORKORDERTYPEID 处理方式 1转单 3客服处理 GoType
  766. //F_REPAIRMANID 接入渠道 1语音 2留言 3微信 4微博 FromType
  767. string sql = string.Format(" and F_WORKORDERTYPEID=1 and F_WORKORDERSTATEID=1 and F_WORKORDERID in (select F_INSTANCEID from T_Wo_WorkOrderHistory where F_WORKORDERSTATEID=0 and F_OPTUSERID={0})", F_UserID);
  768. //工单编号
  769. if (!string.IsNullOrEmpty(workorderNum))
  770. {
  771. sql += " and F_CODE like '%" + workorderNum.Trim() + "%'";
  772. }
  773. //客户姓名
  774. if (!string.IsNullOrEmpty(cusName))
  775. {
  776. sql += " and F_CUSTOMERNAME like '%" + cusName.Trim() + "%'";
  777. }
  778. //客户电话
  779. if (!string.IsNullOrEmpty(phoneNumber))
  780. {
  781. sql += " and F_CUSTOMERTELEPHONE like '%" + phoneNumber.Trim() + "%'";
  782. }
  783. //坐席工号
  784. if (!string.IsNullOrEmpty(userInfo))
  785. {
  786. sql += " and F_LINKMAN like '%" + userInfo.Trim() + "%'";
  787. }
  788. //业务类别
  789. if (bussType != null && bussType > 0)
  790. {
  791. sql += " and F_FILEFLAG =" + bussType;
  792. }
  793. //业务类型
  794. if (detailType != null && detailType > 0)
  795. {
  796. sql += " and F_REPAIRLEVEL =" + detailType;
  797. }
  798. //内容
  799. if (!string.IsNullOrEmpty(Content))
  800. {
  801. sql += " and F_CONTENT like '%" + Content.Trim() + "%'";
  802. }
  803. //查询按钮
  804. if (types == 0)
  805. {
  806. if (!string.IsNullOrEmpty(dateParty))
  807. {
  808. string startDate = dateParty.Substring(0, 10);
  809. string endDate = dateParty.Substring(12);
  810. sql += " and F_CREATEDATE>= '" + startDate + " 00:00:00" + "'";
  811. sql += " and F_CREATEDATE<= '" + endDate + " 23:59:59" + "'";
  812. }
  813. }//一周按钮
  814. else if (types == 1)
  815. {
  816. string endDate = DateTime.Now.ToString();
  817. string startDate = DateTime.Now.AddDays(-7).ToString();
  818. sql += " and F_CREATEDATE>= '" + startDate + "'";
  819. sql += " and F_CREATEDATE<= '" + endDate + "'";
  820. }//一月按钮
  821. else if (types == 2)
  822. {
  823. string endDate = DateTime.Now.ToString();
  824. string startDate = DateTime.Now.AddMonths(-1).ToString();
  825. sql += " and F_CREATEDATE>= '" + startDate + "'";
  826. sql += " and F_CREATEDATE<= '" + endDate + "'";
  827. }//一年按钮
  828. else if (types == 3)
  829. {
  830. string endDate = DateTime.Now.ToString();
  831. string startDate = DateTime.Now.AddYears(-1).ToString();
  832. sql += " and F_CREATEDATE>= '" + startDate + "'";
  833. sql += " and F_CREATEDATE<= '" + endDate + "'";
  834. }
  835. DataTable dt = new DataTable();
  836. int recordCount = 0;
  837. Model.PageData<Model.T_Wo_WorkOrderBase> pageModel = new Model.PageData<Model.T_Wo_WorkOrderBase>();
  838. dt = BLL.PagerBLL.GetListPager(
  839. "T_Wo_WorkOrderBase",
  840. "F_WORKORDERID",
  841. "*,CONVERT(varchar,F_CREATEDATE, 120 ) as F_CREATEDATENew"
  842. + @" , replace(replace(CASE F_WORKORDERFROM WHEN '留言工单' THEN (SELECT F_RecFileUrl FROM dbo.T_Call_LeaveRecord WHERE F_CallId=F_KSHADDRESSCODE) WHEN '语音工单' THEN (SELECT FilePath FROM dbo.T_Call_CallRecords WHERE CallId=F_KSHADDRESSCODE AND FilePath!='') ELSE NULL END,'\','/'),'" + GetSysconfig("newFilePath") + "','" + GetSysconfig("newPlayPath") + "') as FilePath",
  843. //+ " ,(CASE F_WORKORDERFROM WHEN '留言工单' THEN (SELECT F_RecFileUrl FROM dbo.T_Call_LeaveRecord WHERE F_CallId=F_KSHADDRESSCODE) WHEN '语音工单' THEN (SELECT FilePath FROM dbo.T_Call_CallRecords WHERE CallId=F_KSHADDRESSCODE AND FilePath!='') ELSE NULL END ) as FilePath",
  844. sql,
  845. "ORDER BY F_CREATEDATE desc",
  846. limit,
  847. page,
  848. true,
  849. out recordCount);
  850. dataModel.code = 0;
  851. dataModel.count = recordCount;
  852. dataModel.data = dt;
  853. return JsonConvert.SerializeObject(dataModel);
  854. }
  855. #endregion
  856. #region 补录工单管理
  857. /// <summary>
  858. /// 获取代办工单
  859. /// </summary>
  860. /// <returns></returns>
  861. public ActionResult WorkOrderNoList()
  862. {
  863. WorkOrderMyModel model = new WorkOrderMyModel();
  864. //话务标志
  865. model.SeatFlag = F_SeatFlag;
  866. return View(model);
  867. }
  868. /// <summary>
  869. /// 补录工单管理
  870. /// </summary>
  871. /// <param name="page">当前页码</param>
  872. /// <param name="limit">每页数据量</param>
  873. /// <param name="sqlWhere">查询条件</param>
  874. /// <returns></returns>
  875. [ActionName("WorkOrderNoData")]
  876. [HttpGet]
  877. public string WorkOrderNoData(DateTime? NowDateTime,
  878. int page, int limit, int? types, string dateParty,
  879. string F_CONTENT,string F_HOUSING,int? F_WORKORDERTYPEID
  880. )
  881. {
  882. //数据结果集
  883. ResponseData dataModel = new ResponseData();
  884. //工单类型:转单 工单状态:处理中 处理人员:当前用户id
  885. string sql = " and F_WORKORDERSTATEID=0 and F_USERID=" + F_UserID;
  886. //查询按钮
  887. if (types == 0)
  888. {
  889. if (!string.IsNullOrEmpty(dateParty))
  890. {
  891. string startDate = dateParty.Substring(0, 10);
  892. string endDate = dateParty.Substring(12);
  893. sql += " and F_CREATEDATE>= '" + startDate + " 00:00:00" + "'";
  894. sql += " and F_CREATEDATE<= '" + endDate + " 23:59:59" + "'";
  895. }
  896. }//一周按钮
  897. else if (types == 1)
  898. {
  899. string endDate = DateTime.Now.ToString();
  900. string startDate = DateTime.Now.AddDays(-7).ToString();
  901. sql += " and F_CREATEDATE>= '" + startDate + "'";
  902. sql += " and F_CREATEDATE<= '" + endDate + "'";
  903. }//一月按钮
  904. else if (types == 2)
  905. {
  906. string endDate = DateTime.Now.ToString();
  907. string startDate = DateTime.Now.AddMonths(-1).ToString();
  908. sql += " and F_CREATEDATE>= '" + startDate + "'";
  909. sql += " and F_CREATEDATE<= '" + endDate + "'";
  910. }//一年按钮
  911. else if (types == 3)
  912. {
  913. string endDate = DateTime.Now.ToString();
  914. string startDate = DateTime.Now.AddYears(-1).ToString();
  915. sql += " and F_CREATEDATE>= '" + startDate + "'";
  916. sql += " and F_CREATEDATE<= '" + endDate + "'";
  917. }
  918. //内容类型 模糊查询
  919. if (F_CONTENT!=null) {
  920. sql += " and F_CONTENT like '%" + F_CONTENT + "%'";
  921. }
  922. // 工单类型 查询F_WORKORDERTYPEID
  923. if (F_WORKORDERTYPEID >0)
  924. {
  925. sql += " and F_WORKORDERTYPEID ="+ F_WORKORDERTYPEID;
  926. }
  927. if (F_HOUSING!=null) {
  928. sql += " and F_HOUSING like '%" + F_HOUSING + "%'";
  929. }
  930. DataTable dt = new DataTable();
  931. int recordCount = 0;
  932. Model.PageData<Model.T_Wo_WorkOrderBase> pageModel = new Model.PageData<Model.T_Wo_WorkOrderBase>();
  933. dt = BLL.PagerBLL.GetListPager(
  934. "T_Wo_WorkOrderBase",
  935. "F_WORKORDERID",
  936. "*,CONVERT(varchar,F_CREATEDATE, 120 ) as F_CREATEDATENew"
  937. //+ ",(SELECT FilePath FROM dbo.T_Call_CallRecords WHERE CallId=F_KSHADDRESSCODE) AS FilePath",
  938. + @" , replace(replace(CASE F_WORKORDERFROM WHEN '留言工单' THEN (SELECT top 1 F_RecFileUrl FROM dbo.T_Call_LeaveRecord WHERE F_CallId=F_KSHADDRESSCODE) WHEN '语音工单' THEN (SELECT top 1 FilePath FROM dbo.T_Call_CallRecords WHERE CallId=F_KSHADDRESSCODE) ELSE NULL END,'\','/'),'" + GetSysconfig("newFilePath") + "','" + GetSysconfig("newPlayPath") + "') as FilePath",
  939. // + " ,(CASE F_WORKORDERFROM WHEN '留言工单' THEN (SELECT top 1 F_RecFileUrl FROM dbo.T_Call_LeaveRecord WHERE F_CallId=F_KSHADDRESSCODE) WHEN '语音工单' THEN (SELECT top 1 FilePath FROM dbo.T_Call_CallRecords WHERE CallId=F_KSHADDRESSCODE) ELSE NULL END ) as FilePath",
  940. sql,
  941. "ORDER BY F_CREATEDATE desc",
  942. limit,
  943. page,
  944. true,
  945. out recordCount);
  946. dataModel.code = 0;
  947. dataModel.count = recordCount;
  948. dataModel.data = dt;
  949. return JsonConvert.SerializeObject(dataModel);
  950. }
  951. #endregion
  952. #region
  953. /// <summary>
  954. /// 获取微博工单
  955. /// </summary>
  956. /// <returns></returns>
  957. public ActionResult WorkOrderAllList_Wb()
  958. {
  959. WorkOrderMyModel model = new WorkOrderMyModel();
  960. //话务标志
  961. model.SeatFlag = F_SeatFlag;
  962. return View(model);
  963. }
  964. /// <summary>
  965. /// 微博工单管理
  966. /// </summary>
  967. /// <param name="page">当前页码</param>
  968. /// <param name="limit">每页数据量</param>
  969. /// <param name="sqlWhere">查询条件</param>
  970. /// <returns></returns>
  971. [ActionName("WorkOrderWebData")]
  972. [HttpGet]
  973. public string WorkOrderWebData(DateTime? NowDateTime,
  974. int page, int limit, int? types, string dateParty, string F_CONTENT, string F_HOUSING)
  975. {
  976. //数据结果集
  977. ResponseData dataModel = new ResponseData();
  978. //工单类型:微博 工单状态:处理中 处理人员:当前用户id
  979. string sql = " and F_WORKORDERSTATEID=0 and F_REPAIRMANID=4 and F_USERID=" + F_UserID;
  980. //查询按钮
  981. if (types == 0)
  982. {
  983. if (!string.IsNullOrEmpty(dateParty))
  984. {
  985. string startDate = dateParty.Substring(0, 10);
  986. string endDate = dateParty.Substring(12);
  987. sql += " and F_CREATEDATE>= '" + startDate + " 00:00:00" + "'";
  988. sql += " and F_CREATEDATE<= '" + endDate + " 23:59:59" + "'";
  989. }
  990. }//一周按钮
  991. else if (types == 1)
  992. {
  993. string endDate = DateTime.Now.ToString();
  994. string startDate = DateTime.Now.AddDays(-7).ToString();
  995. sql += " and F_CREATEDATE>= '" + startDate + "'";
  996. sql += " and F_CREATEDATE<= '" + endDate + "'";
  997. }//一月按钮
  998. else if (types == 2)
  999. {
  1000. string endDate = DateTime.Now.ToString();
  1001. string startDate = DateTime.Now.AddMonths(-1).ToString();
  1002. sql += " and F_CREATEDATE>= '" + startDate + "'";
  1003. sql += " and F_CREATEDATE<= '" + endDate + "'";
  1004. }//一年按钮
  1005. else if (types == 3)
  1006. {
  1007. string endDate = DateTime.Now.ToString();
  1008. string startDate = DateTime.Now.AddYears(-1).ToString();
  1009. sql += " and F_CREATEDATE>= '" + startDate + "'";
  1010. sql += " and F_CREATEDATE<= '" + endDate + "'";
  1011. }
  1012. else
  1013. {
  1014. sql += " and F_CREATEDATE>= '" + DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00" + "'";
  1015. sql += " and F_CREATEDATE<= '" + DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59" + "'";
  1016. }
  1017. //内容类型 模糊查询
  1018. if (F_CONTENT != null)
  1019. {
  1020. sql += " and F_CONTENT like '%" + F_CONTENT + "%'";
  1021. }
  1022. if (F_HOUSING != null)
  1023. {
  1024. sql += " and F_HOUSING like '%" + F_HOUSING + "%'";
  1025. }
  1026. DataTable dt = new DataTable();
  1027. int recordCount = 0;
  1028. Model.PageData<Model.T_Wo_WorkOrderBase> pageModel = new Model.PageData<Model.T_Wo_WorkOrderBase>();
  1029. dt = BLL.PagerBLL.GetListPager(
  1030. "T_Wo_WorkOrderBase",
  1031. "F_WORKORDERID",
  1032. "*,CONVERT(varchar,F_CREATEDATE, 120 ) as F_CREATEDATENew"
  1033. //+ ",(SELECT FilePath FROM dbo.T_Call_CallRecords WHERE CallId=F_KSHADDRESSCODE) AS FilePath",
  1034. + " ,(CASE F_WORKORDERFROM WHEN '留言工单' THEN (SELECT F_RecFileUrl FROM dbo.T_Call_LeaveRecord WHERE F_CallId=F_KSHADDRESSCODE) WHEN '语音工单' THEN (SELECT FilePath FROM dbo.T_Call_CallRecords WHERE CallId=F_KSHADDRESSCODE) ELSE NULL END ) as FilePath",
  1035. sql,
  1036. "ORDER BY F_CREATEDATE desc",
  1037. limit,
  1038. page,
  1039. true,
  1040. out recordCount);
  1041. dataModel.code = 0;
  1042. dataModel.count = recordCount;
  1043. dataModel.data = dt;
  1044. return JsonConvert.SerializeObject(dataModel);
  1045. }
  1046. #endregion
  1047. #region 来电弹屏工单列表
  1048. /// <summary>
  1049. /// 获取工单信息
  1050. /// </summary>
  1051. /// <param name="page">当前页码</param>
  1052. /// <param name="limit">每页数据量</param>
  1053. /// <param name="sqlWhere">查询条件</param>
  1054. /// <returns></returns>
  1055. [ActionName("WorkOrderHistoryData")]
  1056. [HttpGet]
  1057. public string WorkOrderHistoryData(DateTime? NowDateTime, string phoneNumber)
  1058. {
  1059. //数据结果集
  1060. ResponseData dataModel = new ResponseData();
  1061. string sql = " and F_CUSTOMERTELEPHONE ='" + phoneNumber.Trim() + "'";
  1062. DataTable dt = new DataTable();
  1063. int recordCount = 0;
  1064. Model.PageData<Model.T_Wo_WorkOrderBase> pageModel = new Model.PageData<Model.T_Wo_WorkOrderBase>();
  1065. dt = BLL.PagerBLL.GetListPager(
  1066. "T_Wo_WorkOrderBase",
  1067. "F_WORKORDERID",
  1068. "*,CONVERT(varchar,F_CREATEDATE, 120 ) as F_CREATEDATENew",
  1069. sql,
  1070. "ORDER BY F_CREATEDATE desc",
  1071. 10,
  1072. 1,
  1073. true,
  1074. out recordCount);
  1075. dataModel.code = 0;
  1076. dataModel.count = recordCount;
  1077. dataModel.data = dt;
  1078. return JsonConvert.SerializeObject(dataModel);
  1079. }
  1080. #endregion
  1081. #region
  1082. /// <summary>
  1083. /// 获取业务类型工单信息
  1084. /// </summary>
  1085. /// <returns></returns>
  1086. public ActionResult WorkOrderAllListReport(int? orderType)
  1087. {
  1088. CallScreenModel callScreenModel = new CallScreenModel();
  1089. //业务类型字典表
  1090. callScreenModel.WorkOrderTypeModelList = GetWorkTypeModelList();
  1091. return View(callScreenModel);
  1092. }
  1093. /// <summary>
  1094. /// 获取工单信息
  1095. /// </summary>
  1096. /// <param name="page">当前页码</param>
  1097. /// <param name="limit">每页数据量</param>
  1098. /// <param name="sqlWhere">查询条件</param>
  1099. /// <returns></returns>
  1100. [ActionName("WorkOrderAllListDataReport")]
  1101. [HttpGet]
  1102. public string WorkOrderAllListDataReport(DateTime? NowDateTime, int page, int limit, string dateParty,
  1103. int? bussType, int? detailType, string linkman,string clfs,string bblb, string Qdyw ,string ywlx,
  1104. string hfmyd)
  1105. {
  1106. //数据结果集
  1107. ResponseData dataModel = new ResponseData();
  1108. string sql = "";
  1109. #region
  1110. string startDate = "";
  1111. string endDate = "";
  1112. if (bussType == null && detailType !=0 && detailType!=null)
  1113. {
  1114. bussType = detailType;
  1115. detailType = null;
  1116. sql += " and t.F_FILEFLAG <>0 ";
  1117. }
  1118. else if (bussType ==null && detailType==0 )
  1119. {
  1120. sql += " and t.F_FILEFLAG <>0 " ;
  1121. }
  1122. if (!string.IsNullOrEmpty(dateParty))
  1123. {
  1124. if (dateParty.Length==23)
  1125. {
  1126. startDate = dateParty.Substring(0, 10) + " 00:00:00";
  1127. endDate = dateParty.Substring(12) + " 23:59:59";
  1128. }
  1129. else {
  1130. startDate = dateParty.Split('~')[0].Trim();
  1131. endDate = dateParty.Split('~')[1].Trim();
  1132. }
  1133. }
  1134. else
  1135. {
  1136. startDate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  1137. endDate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1138. }
  1139. sql += " and t.F_CREATEDATE>= '" + startDate + "'";
  1140. sql += " and t.F_CREATEDATE<= '" + endDate + "'";
  1141. //业务类别
  1142. if (bussType != null && bussType > 0)
  1143. {
  1144. sql += " and t.F_FILEFLAG =" + bussType;
  1145. }
  1146. //业务类型
  1147. if (detailType != null && detailType > 0)
  1148. {
  1149. sql += " and t.F_REPAIRLEVEL =" + detailType;
  1150. }
  1151. //坐席
  1152. if(!string.IsNullOrEmpty(linkman))
  1153. {
  1154. sql += " and t.F_LINKMAN =" + linkman;
  1155. }
  1156. //处理方式
  1157. if (!string.IsNullOrEmpty(clfs))
  1158. {
  1159. sql += " and t.F_WORKORDERTYPEID =" + clfs;
  1160. }
  1161. //报表类别,综合报表为空(语音工单:1、2;微信工单:3;微博工单:4)
  1162. if (bblb != "1" && !string.IsNullOrEmpty(bblb))
  1163. {
  1164. sql = sql + " and t.F_REPAIRMANID<=2 ";
  1165. }
  1166. //渠道业务报表
  1167. if (!String.IsNullOrEmpty(Qdyw))
  1168. {
  1169. switch (Qdyw)
  1170. {
  1171. case "1": sql = sql + " and t.F_REPAIRMANID in (1,2) and t.F_REPAIRLEVEL>0 and t.F_FILEFLAG>0"; break;
  1172. case "3": sql = sql + "and t.F_REPAIRMANID =3 and t.F_REPAIRLEVEL>0 and t.F_FILEFLAG>0"; break;
  1173. case "4": sql = sql + "and t.F_REPAIRMANID =4 and t.F_REPAIRLEVEL>0 and t.F_FILEFLAG>0"; break;
  1174. default: break;
  1175. }
  1176. }
  1177. else
  1178. { sql = sql + "and t.F_REPAIRLEVEL>0 and t.F_FILEFLAG>0"; }
  1179. //坐席业务量报表:业务类型0全部业务,1语音业务数量,2在线业务数量,3微信业务数量,4微博业务数量
  1180. if (!String.IsNullOrEmpty(ywlx))
  1181. {
  1182. switch (ywlx)
  1183. {
  1184. case "0": sql = sql + " and t.F_REPAIRMANID in (1,2,3,4) and t.F_REPAIRLEVEL>0 and t.F_FILEFLAG>0"; break;
  1185. case "1": sql = sql + " and t.F_REPAIRMANID in (1,2) and t.F_REPAIRLEVEL>0 and t.F_FILEFLAG>0"; break;
  1186. case "2": sql = sql + "and t.F_REPAIRMANID in (3,4) and t.F_REPAIRLEVEL>0 and t.F_FILEFLAG>0"; break;
  1187. case "3": sql = sql + "and t.F_REPAIRMANID =3 and t.F_REPAIRLEVEL>0 and t.F_FILEFLAG>0"; break;
  1188. case "4": sql = sql + "and t.F_REPAIRMANID =4 and t.F_REPAIRLEVEL>0 and t.F_FILEFLAG>0"; break;
  1189. default: break;
  1190. }
  1191. }
  1192. //hfmyd 回访满意度:1-满意,2-一般,3-不满意
  1193. if (!string.IsNullOrEmpty(hfmyd))
  1194. {
  1195. switch (hfmyd)
  1196. {
  1197. case "1":sql = sql + "and t.F_FILEFLAG=3 and t.F_WORKORDERTYPEID = 1 and ISNULL(t.F_RETURNVISITRESULT, 2) =1"; break;
  1198. case "2": sql = sql + "and t.F_FILEFLAG=3 and t.F_WORKORDERTYPEID = 1 and ISNULL(t.F_RETURNVISITRESULT, 2) =2"; break;
  1199. case "3": sql = sql + "and t.F_FILEFLAG=3 and t.F_WORKORDERTYPEID = 1 and ISNULL(t.F_RETURNVISITRESULT, 2) =3"; break;
  1200. default: break;
  1201. }
  1202. }
  1203. #endregion
  1204. string tableNew = "";
  1205. if (F_RoleID == 17)
  1206. {
  1207. tableNew = string.Format("(select DISTINCT t.* from T_Wo_WorkOrderBase t LEFT JOIN T_Wo_WorkOrderHistory h ON " +
  1208. "t.F_WORKORDERID=h.F_INSTANCEID LEFT JOIN T_Sys_UserAccount u ON " +
  1209. " t.F_USERID= u.F_UserId) as t");
  1210. }
  1211. else
  1212. {
  1213. tableNew = string.Format("(select DISTINCT t.* from T_Wo_WorkOrderBase t LEFT JOIN T_Wo_WorkOrderHistory h ON " +
  1214. "t.F_WORKORDERID=h.F_INSTANCEID LEFT JOIN T_Sys_UserAccount u ON " +
  1215. " t.F_USERID= u.F_UserId where (u.F_DeptId={0} OR h.F_OPTBTNID={0})) as t", F_DeptId);
  1216. }
  1217. DataTable dt = new DataTable();
  1218. int recordCount = 0;
  1219. Model.PageData<Model.T_Wo_WorkOrderBase> pageModel = new Model.PageData<Model.T_Wo_WorkOrderBase>();
  1220. dt = BLL.PagerBLL.GetListPager(
  1221. tableNew,
  1222. "F_WORKORDERID",
  1223. " t.*,CONVERT(varchar,t.F_CREATEDATE, 120 ) as F_CREATEDATENew"
  1224. + " ,(CASE F_WORKORDERFROM WHEN '留言工单' THEN (SELECT top 1 F_RecFileUrl FROM dbo.T_Call_LeaveRecord WHERE F_CallId=t.F_KSHADDRESSCODE) WHEN '语音工单' THEN (SELECT top 1 FilePath FROM dbo.T_Call_CallRecords WHERE CallId=t.F_KSHADDRESSCODE) ELSE NULL END ) as FilePath",
  1225. sql,
  1226. "ORDER BY t.F_CREATEDATE desc",
  1227. limit,
  1228. page,
  1229. true,
  1230. out recordCount);
  1231. dataModel.code = 0;
  1232. dataModel.count = recordCount;
  1233. dataModel.data = dt;
  1234. return JsonConvert.SerializeObject(dataModel);
  1235. }
  1236. /// <summary>
  1237. /// 导出报表数据
  1238. /// </summary>
  1239. /// <param name="page">当前页码</param>
  1240. /// <param name="limit">每页数据量</param>
  1241. /// <param name="sqlWhere">查询条件</param>
  1242. /// <returns></returns>
  1243. [AcceptVerbs(HttpVerbs.Post)]
  1244. public string ExToExcelReport(ExToExcel paramModel)
  1245. {
  1246. //数据结果集
  1247. ResponseData dataModel = new ResponseData();
  1248. string sql = "";
  1249. #region
  1250. string startDate = "";
  1251. string endDate = "";
  1252. if (paramModel.bussType == null && paramModel.detailType != 0)
  1253. {
  1254. paramModel.bussType = paramModel.detailType;
  1255. paramModel.detailType = null;
  1256. }
  1257. else if (paramModel.bussType == null && paramModel.detailType == 0)
  1258. {
  1259. sql += " and t.F_FILEFLAG <>0 ";
  1260. }
  1261. if (!string.IsNullOrEmpty(paramModel.dateParty))
  1262. {
  1263. startDate = paramModel.dateParty.Split('~')[0].Trim();
  1264. endDate = paramModel.dateParty.Split('~')[1].Trim();
  1265. }
  1266. else
  1267. {
  1268. startDate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  1269. endDate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1270. }
  1271. sql += " and t.F_CREATEDATE>= '" + startDate + "'";
  1272. sql += " and t.F_CREATEDATE<= '" + endDate + "'";
  1273. #endregion
  1274. //业务类别
  1275. if (paramModel.bussType != null && paramModel.bussType > 0)
  1276. {
  1277. sql += " and t.F_FILEFLAG =" + paramModel.bussType;
  1278. }
  1279. //业务类型
  1280. if (paramModel.detailType != null && paramModel.detailType > 0)
  1281. {
  1282. sql += " and t.F_REPAIRLEVEL =" + paramModel.detailType;
  1283. }
  1284. string tableNew = string.Format("(select DISTINCT t.* from T_Wo_WorkOrderBase t LEFT JOIN T_Wo_WorkOrderHistory h ON t.F_WORKORDERID=h.F_INSTANCEID LEFT JOIN T_Sys_UserAccount u ON t.F_USERID= u.F_UserId where (u.F_DeptId={0} OR h.F_OPTBTNID={0})) as t", F_DeptId);
  1285. DataTable dt = new DataTable();
  1286. int recordCount = 0;
  1287. Model.PageData<Model.T_Wo_WorkOrderBase> pageModel = new Model.PageData<Model.T_Wo_WorkOrderBase>();
  1288. dt = BLL.PagerBLL.GetListPager(
  1289. tableNew,
  1290. "F_WORKORDERID",
  1291. " t.F_CODE as 工单编号"
  1292. + ",F_CUSTOMERNAME as 客户姓名"
  1293. + ",F_CUSTOMERTELEPHONE as 客户电话"
  1294. + ",F_LINKMAN as 坐席工号"
  1295. + ",F_REPAIRMANNAME as 坐席姓名"
  1296. + ",F_WORKORDERFROM as 接入渠道"
  1297. + " , CONVERT(varchar, t.F_CREATEDATE, 120) as 受理时间"
  1298. + ",F_REPAIRREQUEST as 业务状态"
  1299. + ",F_CONTENT as 内容"
  1300. + ",F_RETURNVISITCONTENT as 处理回复内容"
  1301. + ",F_HOUSING as 业务类型"
  1302. + ",F_ADSLACCOUNT as 业务明细"
  1303. ,
  1304. sql,
  1305. "ORDER BY t.F_CREATEDATE desc",
  1306. 100000,
  1307. 1,
  1308. true,
  1309. out recordCount);
  1310. ResponseDataModel NewData = new ResponseDataModel();
  1311. ExcelReadWrite erw = new ExcelReadWrite();
  1312. byte[] Filebyte = erw.GetExcelByte(dt, "sheet1", true);
  1313. int officeVersion = erw.OfficeType();
  1314. if (officeVersion == 1 || officeVersion == 2)
  1315. {
  1316. NewData.Message = DateTime.Now.ToString("yyyy-MM-dd") + "工单数据.xls";
  1317. }
  1318. else
  1319. {
  1320. NewData.Message = DateTime.Now.ToString("yyyy-MM-dd") + "工单数据.xlsx";
  1321. }
  1322. NewData.Code = "0";
  1323. NewData.Data = JsonConvert.SerializeObject(Filebyte);
  1324. return JsonConvert.SerializeObject(NewData);
  1325. }
  1326. #endregion
  1327. #region 获取来电时间工单列表
  1328. /// <summary>
  1329. /// 获取来电时间工单列表
  1330. /// </summary>
  1331. /// <returns></returns>
  1332. public ActionResult WorkOrderAllListShow(int? orderType)
  1333. {
  1334. CallScreenModel callScreenModel = new CallScreenModel();
  1335. return View(callScreenModel);
  1336. }
  1337. #endregion
  1338. /// <summary>
  1339. /// 驳回待处理即处理中的工单
  1340. /// </summary>
  1341. /// <param name="workOrderBaseModel"></param>
  1342. /// <returns></returns>
  1343. [AcceptVerbs(HttpVerbs.Get)]
  1344. public bool OverruleWorkOrder(int workOrderId,string opinion)
  1345. {
  1346. string F_UserCode = "";
  1347. if (Request.Cookies["BaseCallCenter_T_User"] != null)
  1348. {
  1349. F_UserCode = Request.Cookies["BaseCallCenter_T_User"]["F_UserCode"];
  1350. }
  1351. string linkman = "";
  1352. //如果处理人历史中已处理 就不能驳回到补录工单了
  1353. try
  1354. {
  1355. linkman = DbHelperSQL.GetSingle(" SELECT F_UserName FROM dbo.T_Wo_WorkOrderHistory WHERE F_StateName='未处理' AND F_INSTANCEID='" +workOrderId + "'").ToString();
  1356. }
  1357. catch (Exception)
  1358. {
  1359. return false;
  1360. }
  1361. if (linkman.Equals(F_UserName))
  1362. {
  1363. bool result = false; ;
  1364. int bmid = F_DeptId;
  1365. string bmmc = "";
  1366. if (F_UserID > 0)
  1367. {
  1368. YTSoft.BaseCallCenter.BLL.T_Sys_Department depBll = new BLL.T_Sys_Department();
  1369. List<Model.T_Sys_Department> list = new List<T_Sys_Department>();
  1370. list = depBll.GetModelList("F_DeptId=" + bmid);
  1371. if (list.Count > 0)
  1372. {
  1373. bmmc = list[0].F_DeptName.ToString();
  1374. result = orderBLL.OverruleWorkOrder(workOrderId, F_UserID, F_UserName, F_DeptId, bmmc,opinion);
  1375. }
  1376. }
  1377. return result;
  1378. }
  1379. else
  1380. {
  1381. return false;
  1382. }
  1383. }
  1384. /// <summary>
  1385. /// 驳回待回访列表 即状态是待回访的工单
  1386. /// </summary>
  1387. /// <param name="workOrderBaseModel"></param>
  1388. /// <returns></returns>
  1389. [AcceptVerbs(HttpVerbs.Get)]
  1390. public bool OverruleDHFWorkOrder(int workOrderId,string opinion)
  1391. {
  1392. string F_UserCode = "";
  1393. if (Request.Cookies["BaseCallCenter_T_User"] != null)
  1394. {
  1395. F_UserCode = Request.Cookies["BaseCallCenter_T_User"]["F_UserCode"];
  1396. }
  1397. //string linkman = DbHelperSQL.GetSingle("select F_LINKMAN from T_Wo_WorkOrderBase where F_WORKORDERID='" +
  1398. // workOrderId + "'").ToString();
  1399. //if (linkman.Equals(F_UserCode))
  1400. //{
  1401. bool result = false; ;
  1402. string bycode = F_UserCode;
  1403. string byname = F_UserName;
  1404. int bmid = F_DeptId;
  1405. string bmmc = "";
  1406. if (F_UserID > 0)
  1407. {
  1408. YTSoft.BaseCallCenter.BLL.T_Sys_Department depBll = new BLL.T_Sys_Department();
  1409. List<Model.T_Sys_Department> list = new List<T_Sys_Department>();
  1410. list = depBll.GetModelList("F_DeptId=" + bmid);
  1411. if (list.Count > 0)
  1412. {
  1413. bmmc = list[0].F_DeptName.ToString();
  1414. result = orderBLL.OverruleDHFWorkOrder(workOrderId, F_UserID, F_UserName, F_DeptId, bmmc, opinion);
  1415. }
  1416. }
  1417. return result;
  1418. //}
  1419. //else
  1420. //{
  1421. // return false;
  1422. //}
  1423. }
  1424. /// <summary>
  1425. /// 驳回待定责列表 即状态是待定责的工单
  1426. /// </summary>
  1427. /// <param name="workOrderBaseModel"></param>
  1428. /// <returns></returns>
  1429. [AcceptVerbs(HttpVerbs.Get)]
  1430. public bool OverruleDDZWorkOrder(int workOrderId,string opinion)
  1431. {
  1432. string F_UserCode = "";
  1433. if (Request.Cookies["BaseCallCenter_T_User"] != null)
  1434. {
  1435. F_UserCode = Request.Cookies["BaseCallCenter_T_User"]["F_UserCode"];
  1436. }
  1437. Model.T_Wo_WorkOrderBase workordermodel= orderBLL.GetModel(workOrderId);
  1438. bool result = false; ;
  1439. string bycode = F_UserCode;
  1440. string byname = F_UserName;
  1441. int bmid = F_DeptId;
  1442. string bmmc = "";
  1443. //转办的工单驳回
  1444. if (F_UserID > 0 )
  1445. {
  1446. YTSoft.BaseCallCenter.BLL.T_Sys_Department depBll = new BLL.T_Sys_Department();
  1447. List<Model.T_Sys_Department> list = new List<T_Sys_Department>();
  1448. list = depBll.GetModelList("F_DeptId=" + bmid);
  1449. if (list.Count > 0)
  1450. {
  1451. bmmc = list[0].F_DeptName.ToString();
  1452. result = orderBLL.OverruleDDZWorkOrder(workOrderId, F_UserID, F_UserName, F_DeptId, bmmc, opinion);
  1453. }
  1454. }
  1455. return result;
  1456. //}
  1457. //else
  1458. //{
  1459. // return false;
  1460. //}
  1461. }
  1462. //工单可撤回列表
  1463. //处理人可以撤回的工单列表(工单状态是待回访,history表有处理记录)
  1464. [ActionName("WorkOrderMyKCH")]
  1465. [HttpGet]
  1466. public string WorkOrderMyKCH(DateTime? NowDateTime, int page, int limit, int? types, string dateParty,
  1467. string workorderNum, string cusName, string phoneNumber,
  1468. string userInfo, int? bussType, int? detailType, string Content)
  1469. {
  1470. //数据结果集
  1471. ResponseData dataModel = new ResponseData();
  1472. //F_FILEFLAG 业务类型ID
  1473. //F_WORKORDERSTATEID 0未处理 1处理中 2已办结 status 3 待回访
  1474. //F_WORKORDERTYPEID 处理方式 1转单 3客服处理 GoType
  1475. //F_REPAIRMANID 接入渠道 1语音 2留言 3微信 4微博 FromType
  1476. string sql = string.Format(" and F_WORKORDERTYPEID=1 and F_WORKORDERSTATEID=3 and F_WORKORDERID in (select F_INSTANCEID from T_Wo_WorkOrderHistory where F_WORKORDERSTATEID=1 and F_OPTUSERID={0})", F_UserID);
  1477. //工单编号
  1478. if (!string.IsNullOrEmpty(workorderNum))
  1479. {
  1480. sql += " and F_CODE like '%" + workorderNum.Trim() + "%'";
  1481. }
  1482. //客户姓名
  1483. if (!string.IsNullOrEmpty(cusName))
  1484. {
  1485. sql += " and F_CUSTOMERNAME like '%" + cusName.Trim() + "%'";
  1486. }
  1487. //客户电话
  1488. if (!string.IsNullOrEmpty(phoneNumber))
  1489. {
  1490. sql += " and F_CUSTOMERTELEPHONE like '%" + phoneNumber.Trim() + "%'";
  1491. }
  1492. //坐席工号
  1493. if (!string.IsNullOrEmpty(userInfo))
  1494. {
  1495. sql += " and F_LINKMAN like '%" + userInfo.Trim() + "%'";
  1496. }
  1497. //业务类别
  1498. if (bussType != null && bussType > 0)
  1499. {
  1500. sql += " and F_FILEFLAG =" + bussType;
  1501. }
  1502. //业务类型
  1503. if (detailType != null && detailType > 0)
  1504. {
  1505. sql += " and F_REPAIRLEVEL =" + detailType;
  1506. }
  1507. //内容
  1508. if (!string.IsNullOrEmpty(Content))
  1509. {
  1510. sql += " and F_CONTENT like '%" + Content.Trim() + "%'";
  1511. }
  1512. //查询按钮
  1513. if (types == 0)
  1514. {
  1515. if (!string.IsNullOrEmpty(dateParty))
  1516. {
  1517. string startDate = dateParty.Substring(0, 10);
  1518. string endDate = dateParty.Substring(12);
  1519. sql += " and F_CREATEDATE>= '" + startDate + " 00:00:00" + "'";
  1520. sql += " and F_CREATEDATE<= '" + endDate + " 23:59:59" + "'";
  1521. }
  1522. }//一周按钮
  1523. else if (types == 1)
  1524. {
  1525. string endDate = DateTime.Now.ToString();
  1526. string startDate = DateTime.Now.AddDays(-7).ToString();
  1527. sql += " and F_CREATEDATE>= '" + startDate + "'";
  1528. sql += " and F_CREATEDATE<= '" + endDate + "'";
  1529. }//一月按钮
  1530. else if (types == 2)
  1531. {
  1532. string endDate = DateTime.Now.ToString();
  1533. string startDate = DateTime.Now.AddMonths(-1).ToString();
  1534. sql += " and F_CREATEDATE>= '" + startDate + "'";
  1535. sql += " and F_CREATEDATE<= '" + endDate + "'";
  1536. }//一年按钮
  1537. else if (types == 3)
  1538. {
  1539. string endDate = DateTime.Now.ToString();
  1540. string startDate = DateTime.Now.AddYears(-1).ToString();
  1541. sql += " and F_CREATEDATE>= '" + startDate + "'";
  1542. sql += " and F_CREATEDATE<= '" + endDate + "'";
  1543. }
  1544. DataTable dt = new DataTable();
  1545. int recordCount = 0;
  1546. Model.PageData<Model.T_Wo_WorkOrderBase> pageModel = new Model.PageData<Model.T_Wo_WorkOrderBase>();
  1547. dt = BLL.PagerBLL.GetListPager(
  1548. "T_Wo_WorkOrderBase",
  1549. "F_WORKORDERID",
  1550. "*,CONVERT(varchar,F_CREATEDATE, 120 ) as F_CREATEDATENew"
  1551. + string.Format(",(select F_HISTORYID from T_Wo_WorkOrderHistory where F_INSTANCEID=F_WORKORDERID and F_WORKORDERSTATEID=0 and F_OPTUSERID={0}) AS F_HISTORYID", F_UserID)
  1552. + @" , replace(replace(CASE F_WORKORDERFROM WHEN '留言工单' THEN (SELECT F_RecFileUrl FROM dbo.T_Call_LeaveRecord WHERE F_CallId=F_KSHADDRESSCODE) WHEN '语音工单' THEN (SELECT FilePath FROM dbo.T_Call_CallRecords WHERE CallId=F_KSHADDRESSCODE AND FilePath!='') ELSE NULL END,'\','/'),'" + GetSysconfig("newFilePath") + "','" + GetSysconfig("newPlayPath") + "') as FilePath",
  1553. //+ " ,(CASE F_WORKORDERFROM WHEN '留言工单' THEN (SELECT F_RecFileUrl FROM dbo.T_Call_LeaveRecord WHERE F_CallId=F_KSHADDRESSCODE) WHEN '语音工单' THEN (SELECT FilePath FROM dbo.T_Call_CallRecords WHERE CallId=F_KSHADDRESSCODE AND FilePath!='') ELSE NULL END ) as FilePath",
  1554. sql,
  1555. "ORDER BY F_CREATEDATE desc",
  1556. limit,
  1557. page,
  1558. true,
  1559. out recordCount);
  1560. dataModel.code = 0;
  1561. dataModel.count = recordCount;
  1562. dataModel.data = dt;
  1563. return JsonConvert.SerializeObject(dataModel);
  1564. }
  1565. ////待回访之前撤回已处理工单
  1566. //[AcceptVerbs(HttpVerbs.Get)]
  1567. //public bool CheHuiYCLWorkOrder(int workOrderId)
  1568. //{
  1569. // string F_UserCode = "";
  1570. // if (Request.Cookies["BaseCallCenter_T_User"] != null)
  1571. // {
  1572. // F_UserCode = Request.Cookies["BaseCallCenter_T_User"]["F_UserCode"];
  1573. // }
  1574. // bool result = false; ;
  1575. // string bycode = F_UserCode;
  1576. // string byname = F_UserName;
  1577. // int bmid = F_DeptId;
  1578. // string bmmc = "";
  1579. // if (F_UserID > 0)
  1580. // {
  1581. // YTSoft.BaseCallCenter.BLL.T_Sys_Department depBll = new BLL.T_Sys_Department();
  1582. // List<Model.T_Sys_Department> list = new List<T_Sys_Department>();
  1583. // list = depBll.GetModelList("F_DeptId=" + bmid);
  1584. // if (list.Count > 0)
  1585. // {
  1586. // bmmc = list[0].F_DeptName.ToString();
  1587. // result = orderBLL.CheHuiYCLWorkOrder(workOrderId, F_UserID, F_UserName, F_DeptId, bmmc);
  1588. // }
  1589. // }
  1590. // return result;
  1591. //}
  1592. }
  1593. }