Nessuna descrizione

T_CTI_Task.cs 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Data;
  6. using CallCenter.Utility;
  7. namespace CallCenterApi.BLL
  8. {
  9. /// <summary>
  10. /// 计划表
  11. /// </summary>
  12. public partial class T_CTI_Task
  13. {
  14. private readonly CallCenterApi.DAL.T_CTI_Task dal = new CallCenterApi.DAL.T_CTI_Task();
  15. private readonly CallCenterApi.DAL.T_Call_TaskTelNum telNumDal = new CallCenterApi.DAL.T_Call_TaskTelNum();
  16. public T_CTI_Task()
  17. { }
  18. #region Method
  19. /// <summary>
  20. /// 是否存在该记录
  21. /// </summary>
  22. public bool Exists(long TaskID)
  23. {
  24. return dal.Exists(TaskID);
  25. }
  26. /// <summary>
  27. /// 增加一条数据
  28. /// </summary>
  29. public long Add(CallCenterApi.Model.T_CTI_Task model)
  30. {
  31. return dal.Add(model);
  32. }
  33. /// <summary>
  34. /// 更新一条数据
  35. /// </summary>
  36. public bool Update(CallCenterApi.Model.T_CTI_Task model)
  37. {
  38. return dal.Update(model);
  39. }
  40. /// <summary>
  41. /// 更新一条数据
  42. /// </summary>
  43. public bool UpdateState(int id, int state)
  44. {
  45. return dal.UpdateState(id, state);
  46. }
  47. /// <summary>
  48. /// 更新多条数据
  49. /// </summary>
  50. public bool UpdateStateBatch(string where, int state)
  51. {
  52. return dal.UpdateStateBatch(where, state);
  53. }
  54. /// <summary>
  55. /// 删除一条数据
  56. /// </summary>
  57. public bool Delete(long TaskID)
  58. {
  59. return dal.Delete(TaskID);
  60. }
  61. /// <summary>
  62. /// 删除一条数据
  63. /// </summary>
  64. public bool DeleteList(string TaskIDlist)
  65. {
  66. return dal.DeleteList(TaskIDlist);
  67. }
  68. /// <summary>
  69. /// 得到一个对象实体
  70. /// </summary>
  71. public CallCenterApi.Model.T_CTI_Task GetModel(long TaskID)
  72. {
  73. return dal.GetModel(TaskID);
  74. }
  75. /// <summary>
  76. /// 获得数据列表
  77. /// </summary>
  78. public DataSet GetList(string strWhere)
  79. {
  80. return dal.GetList(strWhere);
  81. }
  82. /// <summary>
  83. /// 获得数据列表
  84. /// </summary>
  85. public DataSet GetTaskList(string strWhere)
  86. {
  87. return dal.GetTaskList(strWhere);
  88. }
  89. ///// <summary>
  90. ///// 获得前几行数据
  91. ///// </summary>
  92. //public DataSet GetList(int Top, string strWhere, string filedOrder)
  93. //{
  94. // return dal.GetList(Top, strWhere, filedOrder);
  95. //}
  96. /// <summary>
  97. /// 获得数据列表
  98. /// </summary>
  99. public List<CallCenterApi.Model.T_CTI_Task> GetModelList(string strWhere)
  100. {
  101. DataSet ds = dal.GetList(strWhere);
  102. return DataTableToList(ds.Tables[0]);
  103. }
  104. /// <summary>
  105. /// 获得数据列表
  106. /// </summary>
  107. public List<CallCenterApi.Model.T_CTI_Task> DataTableToList(DataTable dt)
  108. {
  109. List<CallCenterApi.Model.T_CTI_Task> modelList = new List<CallCenterApi.Model.T_CTI_Task>();
  110. int rowsCount = dt.Rows.Count;
  111. if (rowsCount > 0)
  112. {
  113. CallCenterApi.Model.T_CTI_Task model;
  114. for (int n = 0; n < rowsCount; n++)
  115. {
  116. model = new CallCenterApi.Model.T_CTI_Task();
  117. if (dt.Rows[n]["TaskID"] != null && dt.Rows[n]["TaskID"].ToString() != "")
  118. {
  119. model.TaskID = long.Parse(dt.Rows[n]["TaskID"].ToString());
  120. }
  121. if (dt.Rows[n]["TaskName"] != null && dt.Rows[n]["TaskName"].ToString() != "")
  122. {
  123. model.TaskName = dt.Rows[n]["TaskName"].ToString();
  124. }
  125. if (dt.Rows[n]["State"] != null && dt.Rows[n]["State"].ToString() != "")
  126. {
  127. model.State = int.Parse(dt.Rows[n]["State"].ToString());
  128. }
  129. if (dt.Rows[n]["AddTime"] != null && dt.Rows[n]["AddTime"].ToString() != "")
  130. {
  131. model.AddTime = DateTime.Parse(dt.Rows[n]["AddTime"].ToString());
  132. }
  133. model.y_YJCount = Convert.ToInt32(dt.Rows[n]["y_YJCount"]);
  134. model.y_HMCount = Convert.ToInt32(dt.Rows[n]["y_HMCount"]);
  135. model.PlanStartDate = dt.Rows[n]["PlanStartDate"] == DBNull.Value ? DateTime.Now : Convert.ToDateTime(dt.Rows[n]["PlanStartDate"]);
  136. model.PlanEndDate = dt.Rows[n]["PlanEndDate"] == DBNull.Value ? DateTime.Now : Convert.ToDateTime(dt.Rows[n]["PlanEndDate"]);
  137. model.StartTime1 = dt.Rows[n]["StartTime1"] == DBNull.Value ? DateTime.Now : Convert.ToDateTime(dt.Rows[n]["StartTime1"]);
  138. model.EndTime1 = dt.Rows[n]["EndTime1"] == DBNull.Value ? DateTime.Now : Convert.ToDateTime(dt.Rows[n]["EndTime1"]);
  139. model.StartTime2 = dt.Rows[n]["StartTime2"] == DBNull.Value ? DateTime.Now : Convert.ToDateTime(dt.Rows[n]["StartTime2"]);
  140. model.EndTime2 = dt.Rows[n]["EndTime2"] == DBNull.Value ? DateTime.Now : Convert.ToDateTime(dt.Rows[n]["EndTime2"]);
  141. model.TaskCategoryId = dt.Rows[n]["TaskCategoryId"] == DBNull.Value ? 0 : Convert.ToInt32(dt.Rows[n]["TaskCategoryId"]);
  142. model.TaskContent = dt.Rows[n]["TaskContent"] == DBNull.Value ? "" : dt.Rows[n]["TaskContent"].ToString();
  143. model.IsExcuteNow = dt.Rows[n]["IsExcuteNow"] == DBNull.Value ? false : Convert.ToBoolean(dt.Rows[n]["IsExcuteNow"]);
  144. model.LoopTime = dt.Rows[n]["LoopTime"] == DBNull.Value ? 0 : Convert.ToInt32(dt.Rows[n]["LoopTime"]);
  145. modelList.Add(model);
  146. }
  147. }
  148. return modelList;
  149. }
  150. ///// <summary>
  151. ///// 获得数据列表
  152. ///// </summary>
  153. //public List<CallCenterApi.Model.vw_CTI_TaskPager> DataTableToListPager(DataTable dt)
  154. //{
  155. // List<CallCenterApi.Model.vw_CTI_TaskPager> modelList = new List<CallCenterApi.Model.vw_CTI_TaskPager>();
  156. // int rowsCount = dt.Rows.Count;
  157. // var columns = dt.Columns;
  158. // if (rowsCount > 0)
  159. // {
  160. // CallCenterApi.Model.vw_CTI_TaskPager model;
  161. // for (int n = 0; n < rowsCount; n++)
  162. // {
  163. // try
  164. // {
  165. // model = new CallCenterApi.Model.vw_CTI_TaskPager();
  166. // if (dt.Rows[n]["TaskID"] != null && dt.Rows[n]["TaskID"].ToString() != "")
  167. // {
  168. // model.TaskID = long.Parse(dt.Rows[n]["TaskID"].ToString());
  169. // }
  170. // if (dt.Rows[n]["TaskName"] != null && dt.Rows[n]["TaskName"].ToString() != "")
  171. // {
  172. // model.TaskName = dt.Rows[n]["TaskName"].ToString();
  173. // }
  174. // if (columns.Contains("TrunkGroupID"))
  175. // {
  176. // if (dt.Rows[n]["TrunkGroupID"] != null && dt.Rows[n]["TrunkGroupID"].ToString() != "")
  177. // {
  178. // model.TrunkGroupID = int.Parse(dt.Rows[n]["TrunkGroupID"].ToString());
  179. // }
  180. // }
  181. // if (dt.Rows[n]["CallerNum"] != null && dt.Rows[n]["CallerNum"].ToString() != "")
  182. // {
  183. // model.CallerNum = dt.Rows[n]["CallerNum"].ToString();
  184. // }
  185. // if (dt.Rows[n]["CallType"] != null && dt.Rows[n]["CallType"].ToString() != "")
  186. // {
  187. // model.CallType = int.Parse(dt.Rows[n]["CallType"].ToString());
  188. // }
  189. // if (dt.Rows[n]["ExInfo"] != null && dt.Rows[n]["ExInfo"].ToString() != "")
  190. // {
  191. // model.ExInfo = dt.Rows[n]["ExInfo"].ToString();
  192. // }
  193. // if (dt.Rows[n]["MaxTrunkCount"] != null && dt.Rows[n]["MaxTrunkCount"].ToString() != "")
  194. // {
  195. // model.MaxTrunkCount = int.Parse(dt.Rows[n]["MaxTrunkCount"].ToString());
  196. // }
  197. // if (dt.Rows[n]["IntensityCoefficient"] != null && dt.Rows[n]["IntensityCoefficient"].ToString() != "")
  198. // {
  199. // model.IntensityCoefficient = decimal.Parse(dt.Rows[n]["IntensityCoefficient"].ToString());
  200. // }
  201. // if (dt.Rows[n]["ItemTableName"] != null && dt.Rows[n]["ItemTableName"].ToString() != "")
  202. // {
  203. // model.ItemTableName = dt.Rows[n]["ItemTableName"].ToString();
  204. // }
  205. // if (dt.Rows[n]["State"] != null && dt.Rows[n]["State"].ToString() != "")
  206. // {
  207. // model.State = int.Parse(dt.Rows[n]["State"].ToString());
  208. // }
  209. // if (dt.Rows[n]["AddTime"] != null && dt.Rows[n]["AddTime"].ToString() != "")
  210. // {
  211. // model.AddTime = Convert.ToDateTime(dt.Rows[n]["AddTime"].ToString());
  212. // }
  213. // if (dt.Rows[n]["y_PSort"] != null && dt.Rows[n]["y_PSort"].ToString() != "")
  214. // {
  215. // model.y_PSort = int.Parse(dt.Rows[n]["y_PSort"].ToString());
  216. // }
  217. // if (dt.Rows[n]["y_TkModelId"] != null && dt.Rows[n]["y_TkModelId"].ToString() != "")
  218. // {
  219. // model.y_TkModelId = long.Parse(dt.Rows[n]["y_TkModelId"].ToString());
  220. // }
  221. // if (dt.Rows[n]["y_SXH"] != null && dt.Rows[n]["y_SXH"].ToString() != "")
  222. // {
  223. // model.y_SXH = int.Parse(dt.Rows[n]["y_SXH"].ToString());
  224. // }
  225. // if (dt.Rows[n]["y_FPCount"] != null && dt.Rows[n]["y_FPCount"].ToString() != "")
  226. // {
  227. // model.y_FPCount = int.Parse(dt.Rows[n]["y_FPCount"].ToString());
  228. // }
  229. // if (dt.Rows[n]["y_YJCount"] != null && dt.Rows[n]["y_YJCount"].ToString() != "")
  230. // {
  231. // model.y_YJCount = int.Parse(dt.Rows[n]["y_YJCount"].ToString());
  232. // }
  233. // if (dt.Rows[n]["y_HCCount"] != null && dt.Rows[n]["y_HCCount"].ToString() != "")
  234. // {
  235. // model.y_HCCount = int.Parse(dt.Rows[n]["y_HCCount"].ToString());
  236. // }
  237. // if (dt.Rows[n]["y_HSCount"] != null && dt.Rows[n]["y_HSCount"].ToString() != "")
  238. // {
  239. // model.y_HSCount = int.Parse(dt.Rows[n]["y_HSCount"].ToString());
  240. // }
  241. // if (dt.Rows[n]["y_HTCount"] != null && dt.Rows[n]["y_HTCount"].ToString() != "")
  242. // {
  243. // model.y_HTCount = int.Parse(dt.Rows[n]["y_HTCount"].ToString());
  244. // }
  245. // if (dt.Rows[n]["y_HMCount"] != null && dt.Rows[n]["y_HMCount"].ToString() != "")
  246. // {
  247. // model.y_HMCount = int.Parse(dt.Rows[n]["y_HMCount"].ToString());
  248. // }
  249. // if (dt.Rows[n]["y_OkCount"] != null && dt.Rows[n]["y_OkCount"].ToString() != "")
  250. // {
  251. // model.y_OkCount = int.Parse(dt.Rows[n]["y_OkCount"].ToString());
  252. // }
  253. // if (dt.Rows[n]["y_RFCount"] != null && dt.Rows[n]["y_RFCount"].ToString() != "")
  254. // {
  255. // model.y_RFCount = int.Parse(dt.Rows[n]["y_RFCount"].ToString());
  256. // }
  257. // if (dt.Rows[n]["y_ConsCount"] != null && dt.Rows[n]["y_ConsCount"].ToString() != "")
  258. // {
  259. // model.y_ConsCount = int.Parse(dt.Rows[n]["y_ConsCount"].ToString());
  260. // }
  261. // if (dt.Rows[n]["y_InvlCount"] != null && dt.Rows[n]["y_InvlCount"].ToString() != "")
  262. // {
  263. // model.y_InvlCount = int.Parse(dt.Rows[n]["y_InvlCount"].ToString());
  264. // }
  265. // if (dt.Rows[n]["y_NoAnswerCount"] != null && dt.Rows[n]["y_NoAnswerCount"].ToString() != "")
  266. // {
  267. // model.y_NoAnswerCount = int.Parse(dt.Rows[n]["y_NoAnswerCount"].ToString());
  268. // }
  269. // if (dt.Rows[n]["y_ShutDownCount"] != null && dt.Rows[n]["y_ShutDownCount"].ToString() != "")
  270. // {
  271. // model.y_ShutDownCount = int.Parse(dt.Rows[n]["y_ShutDownCount"].ToString());
  272. // }
  273. // if (dt.Rows[n]["TaskType"] != null && dt.Rows[n]["TaskType"].ToString() != "")
  274. // {
  275. // model.TaskType = int.Parse(dt.Rows[n]["TaskType"].ToString());
  276. // }
  277. // model.F_Title = dt.Rows[n]["F_Title"].ToString();
  278. // modelList.Add(model);
  279. // }
  280. // catch
  281. // {
  282. // throw new Exception("AddTime=" + dt.Rows[n]["AddTime"].ToString());
  283. // }
  284. // }
  285. // }
  286. // return modelList;
  287. //}
  288. /// <summary>
  289. /// 获得数据列表
  290. /// </summary>
  291. public DataSet GetAllList()
  292. {
  293. return GetList("");
  294. }
  295. /// <summary>
  296. /// 分页获取数据列表
  297. /// </summary>
  298. public int GetRecordCount(string strWhere)
  299. {
  300. return dal.GetRecordCount(strWhere);
  301. }
  302. /// <summary>
  303. /// 分页获取数据列表
  304. /// </summary>
  305. public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)
  306. {
  307. return dal.GetListByPage(strWhere, orderby, startIndex, endIndex);
  308. }
  309. /// <summary>
  310. /// 分页获取数据列表
  311. /// </summary>
  312. //public DataSet GetList(int PageSize,int PageIndex,string strWhere)
  313. //{
  314. //return dal.GetList(PageSize,PageIndex,strWhere);
  315. //}
  316. public DataSet GetTask(int groupId)
  317. {
  318. return dal.GetTask(groupId);
  319. }
  320. /// <summary>
  321. /// 语音自动回访 //taskid=-10002 是语音自动回访任务,固定,仅可以修改内容
  322. /// </summary>
  323. /// <param name="phone"></param>
  324. /// <param name="workOrderId"></param>
  325. /// <param name="assignId"></param>
  326. /// <param name="msg"></param>
  327. /// <returns></returns>
  328. public bool AddToAutoVoiceNotice(string phone, string workOrderId, int? assignId, out string msg)
  329. {
  330. msg = "";
  331. var model = dal.GetModel(-10002);
  332. if (model == null)
  333. {
  334. msg = "语音回访队列阻塞,请联系管理员";
  335. return false;
  336. }
  337. //string fix = ""; string bfix = ""; string wfix = "";
  338. //string zipcode = Configs.GetValue("CallOutZipCode");
  339. //bfix = Configs.GetValue("CallOutBPre");
  340. //wfix = Configs.GetValue("CallOutWPre");
  341. //int zip = GetZipCodeByPhone(phone, zipcode);
  342. //if (zip == 1)
  343. //{
  344. // fix = bfix;
  345. //}
  346. //else if (zip == 2)
  347. //{
  348. // fix = wfix;
  349. //}
  350. var i = telNumDal.Add(new Model.T_Call_TaskTelNum
  351. {
  352. F_TaskId = -10002,
  353. //F_Phone = fix + phone,
  354. F_Phone = phone,
  355. WorkOrderId = workOrderId,
  356. AssignedId = assignId
  357. });
  358. if (i > 0)
  359. {
  360. model.y_HMCount = model.y_HMCount + 1;
  361. var flag = dal.Update(model);
  362. if (flag)
  363. {
  364. msg = "号码已加入语音回访队列";
  365. return true;
  366. }
  367. return false;
  368. }
  369. msg = "语音回访队列阻塞,请联系管理员";
  370. return false;
  371. }
  372. public int GetZipCodeByPhone(string phone, string zipcode)
  373. {
  374. int res = 0;
  375. if (phone.Trim().Length >= 7)
  376. {
  377. //7位及7位以上是固定电话或手机
  378. //判断是否手机
  379. if (phone.Trim().Length == 11 && phone[0] == '1')
  380. {//号码为11位,首位是1,为手机号
  381. BLL.T_Sys_MobileData mobile_Bll = new BLL.T_Sys_MobileData();
  382. Model.T_Sys_MobileData mobileModel = mobile_Bll.GetModelList(" F_MobileNum = '" + phone.Substring(0, 7) + "'").FirstOrDefault();
  383. if (mobileModel != null)
  384. {
  385. if (mobileModel.F_ZipCode.Equals(zipcode))
  386. {
  387. res = 1;
  388. }
  389. else
  390. {
  391. res = 2;
  392. }
  393. }
  394. }
  395. else
  396. {
  397. if (phone.Trim().Length == 11 && phone.Substring(0, 3).Equals(zipcode))
  398. {//号码为11位
  399. //截取前三位区号判断是否本地
  400. bool resbd3 = phone.Substring(0, 3).Equals(zipcode);
  401. //截取前四位区号判断是否本地
  402. bool resbd4 = phone.Substring(0, 4).Equals(zipcode);
  403. if (resbd3 || resbd4)
  404. {
  405. res = 1;
  406. }
  407. }
  408. else if (phone.Trim().Length < 11)
  409. {//号码小于11位,为本地
  410. res = 1;
  411. }
  412. else if (phone.Trim().Length > 11 && phone.Substring(0, 4).Equals(zipcode))
  413. {//号码大于11位,截取前四位区号判断是否本地
  414. res = 1;
  415. }
  416. else
  417. {
  418. res = 2;
  419. }
  420. }
  421. }
  422. return res;
  423. }
  424. #endregion Method
  425. }
  426. }