Нет описания

CallOutPlanController.cs 51KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231
  1. using CallCenterApi.Interface.Controllers.Base;
  2. using CallCenter.Utility;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Web;
  8. using System.Web.Mvc;
  9. using System.Data;
  10. using CallCenterApi.DB;
  11. using System.IO;
  12. using System.Data.SqlClient;
  13. using CallCenterApi.Interface.Models.Dto;
  14. namespace CallCenterApi.Interface.Controllers.callout
  15. {
  16. public class CallOutPlanController : BaseController
  17. {
  18. private readonly BLL.T_Call_OutTask otBLL = new BLL.T_Call_OutTask();
  19. private readonly BLL.T_Call_OutTaskTelNum otnBLL = new BLL.T_Call_OutTaskTelNum();
  20. private readonly BLL.T_Call_OutTaskRecords otrBLL = new BLL.T_Call_OutTaskRecords();
  21. private readonly BLL.T_Cus_CustomerBase cusBLL = new BLL.T_Cus_CustomerBase();
  22. private readonly BLL.T_Call_OutAnswers ansBLL = new BLL.T_Call_OutAnswers();
  23. private readonly BLL.T_Ask_Question questionBLL = new BLL.T_Ask_Question();
  24. private readonly BLL.T_Ask_QuestionItems questionItemBLL = new BLL.T_Ask_QuestionItems();
  25. private readonly BLL.T_Ask_PagerInfo pagerInfoBLL = new BLL.T_Ask_PagerInfo();
  26. #region 计划信息
  27. public ActionResult GetTaskList(string key, int pagesize = 10, int pageindex = 1)
  28. {
  29. StringBuilder sb = new StringBuilder();
  30. if (!string.IsNullOrWhiteSpace(key))
  31. {
  32. sb.Append(" and (F_TaskName like '%" + key + "%' or F_TaskRemark like '%" + key + "%') ");
  33. }
  34. var recordCount = 0;
  35. var dt = BLL.PagerBLL.GetListPager(
  36. "T_Call_OutTask",
  37. "F_TaskID",
  38. "*",
  39. " and F_DeleteFlag=0 " + sb.ToString(),
  40. "ORDER BY F_TaskID desc",
  41. pagesize,
  42. pageindex,
  43. true,
  44. out recordCount);
  45. var obj = new
  46. {
  47. rows = dt,
  48. total = recordCount
  49. };
  50. return Content(obj.ToJson());
  51. }
  52. public ActionResult GetAllTaskList()
  53. {
  54. var alllist = otBLL.GetModelList(" F_DeleteFlag=0 order by F_TaskID desc");
  55. return Success("获取试题分类成功", alllist);
  56. }
  57. public ActionResult GetTaskModel(int id = 0)
  58. {
  59. if (id <= 0)
  60. return Error("参数不正确");
  61. var model = otBLL.GetModel(id);
  62. if (model == null)
  63. return Error("当前数据不存在");
  64. var papermodel = pagerInfoBLL.GetModel(model.F_PagerID.Value);
  65. var newmodel = new
  66. {
  67. taskmodel = model,
  68. pagermodel = papermodel
  69. };
  70. return Success("获取成功", newmodel);
  71. }
  72. public ActionResult CreateOrUpdateTask(int id = 0, int pagerid = 0, string name = "", string remark = "")
  73. {
  74. var model = new Model.T_Call_OutTask();
  75. if (string.IsNullOrWhiteSpace(name))
  76. return Error("请填写名称" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  77. if (id <= 0)
  78. {
  79. model.F_TaskName = name;
  80. model.F_TaskRemark = remark;
  81. model.F_PagerID = pagerid;
  82. model.F_IsAllot = 0;
  83. model.F_IsStart = 0;
  84. model.F_CreateTime = DateTime.Now;
  85. model.F_CreateUserCode = CurrentUser.UserData.F_UserCode;
  86. model.F_DeleteFlag = 0;
  87. if (otBLL.Add(model) > 0)
  88. return Success("添加成功" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  89. return Error("添加失败" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  90. }
  91. model = otBLL.GetModel(id);
  92. model.F_TaskName = name;
  93. model.F_TaskRemark = remark;
  94. model.F_PagerID = pagerid;
  95. if (otBLL.Update(model))
  96. return Success("修改成功" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  97. return Error("修改失败" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  98. }
  99. public ActionResult DeleteTask(int id = 0)
  100. {
  101. if (otBLL.Delete(id))
  102. {
  103. return Success("删除成功" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  104. }
  105. else
  106. {
  107. return Error("删除失败!" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  108. }
  109. }
  110. //计划启动并关联客户档案、生成任务
  111. public ActionResult EditTaskNum(int taskid = 0, int state = 0)
  112. {
  113. if (state == 1)
  114. {
  115. if (taskid > 0)
  116. {
  117. //var cuslist = cusBLL.GetModelList(" F_AutoFlag=1 ");//标记为有效的客户
  118. //int cc = 0;
  119. //foreach (var cusitem in cuslist)
  120. //{
  121. // var otnModel = new Model.T_Call_OutTaskTelNum();
  122. // otnModel.F_TaskId = taskid;
  123. // otnModel.F_CusID = cusitem.F_CustomerId;
  124. // otnModel.F_CusName = cusitem.F_CustomerName;
  125. // otnModel.F_CreateTime = DateTime.Now;
  126. // otnModel.F_Phone = cusitem.F_Mobile;
  127. // otnModel.F_FPState = 0;
  128. // otnModel.F_HCState = 0;
  129. // otnModel.F_YJState = 0;
  130. // otnModel.F_DeleteFlag = 0;
  131. // if (otnBLL.Add(otnModel) > 0)
  132. // {
  133. // cc++;
  134. // }
  135. //}
  136. //if (cc == cuslist.Count)
  137. //{
  138. if (otBLL.UpdateStart(taskid, 1, DateTime.Now, DateTime.MaxValue))
  139. {
  140. return Success("计划启动成功!taskid=" + taskid + ",操作人:" + CurrentUser.UserData.F_UserCode);
  141. }
  142. else
  143. {
  144. //otnBLL.DeleteByTask(taskid);
  145. return Error("计划启动失败!taskid=" + taskid + ",操作人:" + CurrentUser.UserData.F_UserCode);
  146. }
  147. // }
  148. }
  149. }
  150. else
  151. {
  152. var taskmodel = otBLL.GetModel(taskid);
  153. if (taskmodel.F_IsStart == state)
  154. {
  155. return Error("计划未启动,无法停止!taskid=" + taskid + ",操作人:" + CurrentUser.UserData.F_UserCode);
  156. }
  157. else
  158. {
  159. if (otBLL.UpdateStart(taskid, 0, taskmodel.F_StartTime.Value, DateTime.Now))
  160. {
  161. //otnBLL.DeleteByTask(taskid);
  162. return Success("计划已停止!taskid=" + taskid + ",操作人:" + CurrentUser.UserData.F_UserCode);
  163. }
  164. }
  165. }
  166. return Error("计划操作失败!taskid=" + taskid + ",操作人:" + CurrentUser.UserData.F_UserCode);
  167. }
  168. #endregion
  169. #region 号码导入
  170. int vfileid = 0;
  171. // 导入号码读取填入数据库
  172. public ActionResult TelInput(int taskid)
  173. {
  174. ActionResult res = NoToken("未知错误,请重新登录");
  175. if (Request.IsAuthenticated)
  176. {
  177. DataTable dtres = new DataTable();
  178. string errres = "";
  179. int i = 0;
  180. int count = 0;//导入成功的条数
  181. string Excelsource = "";
  182. int rcount = 0;
  183. int ccount = 0;
  184. System.Text.StringBuilder strBuilder = null;
  185. //Excelsource = Server.MapPath(this.Request.ApplicationPath + "\\ExcelData\\") + filename.ToString();
  186. Excelsource = uploadexcel();
  187. #region 将文件中的数据导入数据库
  188. try
  189. {
  190. //************************将文件中的数据导入数据库*************************//
  191. DataSet dt = ReadEcxel(Excelsource, 0);
  192. try
  193. {
  194. if (dt != null && dt.Tables[0].Rows.Count != 0)
  195. {
  196. rcount = dt.Tables[0].Rows.Count;
  197. ccount = dt.Tables[0].Columns.Count;
  198. strBuilder = new System.Text.StringBuilder();//用于如果导入失败,删除已经导入过的
  199. DataTable dtInputData = dt.Tables[0];//要导入的电话号码
  200. List<string> sqlList = new List<string>();
  201. List<string> lstsql = new List<string>();
  202. int ilns = dt.Tables[0].Columns.Count;
  203. DataSet dsnew = new DataSet();
  204. #region MyRegion
  205. using (SqlConnection coon = new SqlConnection(DbHelperSQL.connectionString))
  206. {
  207. try
  208. {
  209. coon.Open();
  210. int colscount = dtInputData.Columns.Count;//列数
  211. int rowscount = dtInputData.Rows.Count;//行数
  212. Model.T_Call_OutTaskTelNum modelPhoneImport = new Model.T_Call_OutTaskTelNum();
  213. #region
  214. modelPhoneImport.F_FPState = 0;
  215. modelPhoneImport.F_YJState = 0;
  216. modelPhoneImport.F_DeleteFlag = 0;
  217. modelPhoneImport.F_HCState = 0;
  218. modelPhoneImport.ExpandVchField15 = System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff");//导入时间
  219. modelPhoneImport.ExpandVchField14 = CurrentUser.UserData.F_UserId.ToString();//导入坐席ID
  220. modelPhoneImport.ExpandVchField13 = CurrentUser.UserData.F_UserName;
  221. modelPhoneImport.F_TaskId = taskid;
  222. modelPhoneImport.ExpandIntField6 = vfileid;//导入文件id
  223. #endregion
  224. if (rowscount > 0)
  225. {
  226. foreach (DataRow dr in dtInputData.Rows)
  227. {
  228. sqlList.Clear();
  229. lstsql.Clear();
  230. if (dr[1].ToString() != "")
  231. {
  232. string dddddd = dr[1].ToString();
  233. #region 导入表内容
  234. modelPhoneImport.F_CusName = dr[0].ToString();//客户名称
  235. modelPhoneImport.F_Phone = dr[1].ToString();//号码
  236. modelPhoneImport.ExpandVchField12 = dr[2].ToString();//地址
  237. #endregion
  238. int rmw = otnBLL.Add(modelPhoneImport);
  239. if (rmw > 0)
  240. {
  241. count += 1;//导入成功,+1
  242. }
  243. }
  244. }
  245. dtres = dtInputData;
  246. }
  247. else
  248. {
  249. errres += "该文档的内容为空";
  250. }
  251. }
  252. catch (Exception ex)
  253. {
  254. if (coon.State == ConnectionState.Open)
  255. {
  256. coon.Close();
  257. }
  258. i++;
  259. errres += i.ToString() + ".导入出现异常,共导入" + count + "条数据,请从第" + (count + 2).ToString() + "行开始导入;\n";
  260. if (strBuilder.Length > 0)
  261. {
  262. errres += "重复的号码为:" + strBuilder.ToString() + "\n";
  263. }
  264. }
  265. finally
  266. {
  267. if (coon.State == ConnectionState.Open)
  268. {
  269. coon.Close();
  270. }
  271. }
  272. }//****************using*********
  273. #endregion
  274. }
  275. else
  276. {
  277. i++;
  278. errres += i.ToString() + ".Excel中无数据;\n";
  279. }
  280. }
  281. catch
  282. {
  283. i++;
  284. errres += i.ToString() + ".导入出现异常,导入失败;\n";
  285. }
  286. finally
  287. {
  288. dt.Clear();
  289. dt.Dispose();
  290. }
  291. }
  292. catch
  293. {
  294. errres += i.ToString() + ".Excel格式不正确,系统错误,导入失败;\n";
  295. }
  296. #endregion
  297. if (errres != "")
  298. {
  299. res = Error("导入失败!错误信息:" + errres);
  300. }
  301. else
  302. {
  303. string info = "本文件有" + rcount.ToString() + "行" + ccount.ToString() + "列数据";
  304. res = Success("导入成功!" + info, vfileid);
  305. }
  306. }
  307. return res;
  308. }
  309. #region 上传文件
  310. private string uploadexcel()
  311. {
  312. string Excelsource = "";
  313. try
  314. {
  315. //HttpFileCollection hfc = System.Web.HttpContext.Current.Request.Files;
  316. HttpPostedFile _upfile = RequestString.GetFile("upFile");
  317. if (_upfile != null)
  318. {
  319. string imgPath = "";
  320. string newFileName = DateTime.Now.ToString("yyyyMMddHHmmss");
  321. newFileName = newFileName + "_" + _upfile.FileName;
  322. if (!Directory.Exists(Server.MapPath(this.Request.ApplicationPath + "\\ExcelData")))
  323. {
  324. Directory.CreateDirectory(Server.MapPath(this.Request.ApplicationPath + "\\ExcelData"));
  325. }
  326. imgPath = this.Request.ApplicationPath + "/ExcelData/" + newFileName.ToString();
  327. string PhysicalPath = Server.MapPath(imgPath);
  328. _upfile.SaveAs(PhysicalPath);
  329. Excelsource = Server.MapPath(this.Request.ApplicationPath + "\\ExcelData\\") + newFileName.ToString();
  330. Model.T_Vis_Files filesmodel = new Model.T_Vis_Files();
  331. filesmodel.F_FileNewName = newFileName;
  332. filesmodel.F_FileOldName = _upfile.FileName;
  333. filesmodel.F_FilePath = Excelsource;
  334. filesmodel.F_FileType = 0;
  335. filesmodel.F_TypeGroup = 0;
  336. filesmodel.F_FileFix = _upfile.FileName.Substring(_upfile.FileName.LastIndexOf('.') + 1);
  337. filesmodel.F_InputDate = DateTime.Now;
  338. filesmodel.F_InputUserCode = CurrentUser.UserData.F_UserCode;
  339. filesmodel.F_InputUserID = CurrentUser.UserData.F_UserId;
  340. vfileid = new BLL.T_Vis_Files().Add(filesmodel);
  341. }
  342. }
  343. catch (Exception ex) { }
  344. return Excelsource;
  345. }
  346. //导入后获取
  347. public ActionResult GetList(int? fileid, int? taskid)
  348. {
  349. ActionResult res = Error("未知错误,请重新登录");
  350. if (Request.IsAuthenticated)
  351. {
  352. string sql = "";
  353. DataTable dt = new DataTable();
  354. string userid = CurrentUser.UserData.F_UserId.ToString();
  355. if (userid.Trim() != "")
  356. {
  357. sql += " and cast(ExpandVchField14 as varchar(max))='" + userid.Trim() + "' ";
  358. }
  359. if (fileid != null)
  360. {
  361. sql += " and ExpandIntField6='" + fileid + "' ";
  362. }
  363. if (taskid != null)
  364. {
  365. sql += " and F_TaskId=" + taskid;
  366. }
  367. //sql += " and F_InputDate=(select MAX(F_InputDate)from T_Vis_Telphone)";
  368. string strpageindex = RequestString.GetQueryString("page");
  369. int pageindex = 1;
  370. string strpagesize = RequestString.GetQueryString("pagesize");
  371. int pagesize = 10;
  372. if (strpageindex.Trim() != "")
  373. {
  374. pageindex = Convert.ToInt32(strpageindex);
  375. }
  376. if (strpagesize.Trim() != "")
  377. {
  378. pagesize = Convert.ToInt32(strpagesize);
  379. }
  380. int recordCount = 0;
  381. dt = BLL.PagerBLL.GetListPager(
  382. "T_Call_OutTaskTelNum",
  383. "F_Id",
  384. "*",
  385. " " + sql,
  386. "ORDER BY F_Id desc",
  387. pagesize,
  388. pageindex,
  389. true,
  390. out recordCount);
  391. var obj = new
  392. {
  393. rows = dt,
  394. total = recordCount
  395. };
  396. res = Content(obj.ToJson());
  397. }
  398. return res;
  399. }
  400. //删除号码
  401. public ActionResult DeleteTels(string[] ids)
  402. {
  403. if (ids != null && ids.Length > 0)
  404. {
  405. string idd = " ";
  406. foreach (string str in ids)
  407. {
  408. idd += str + ",";
  409. }
  410. if (otnBLL.DeleteList(idd.TrimEnd(',')))
  411. {
  412. return Success("删除成功");
  413. }
  414. else
  415. return Error("删除失败");
  416. }
  417. else
  418. {
  419. return Error("请选择要删除的记录");
  420. }
  421. return Error("删除号码失败,操作人:" + CurrentUser.UserData.F_UserCode);
  422. }
  423. #endregion
  424. #region 读取Excel文件,返一个DataTable
  425. private DataSet ReadEcxel(string FileName, int Rows)
  426. {
  427. return ToDataTable(FileName);
  428. }
  429. /// <summary>
  430. /// 读取Excel文件到DataSet中
  431. /// </summary>
  432. /// <param name="filePath">文件路径</param>
  433. /// <returns></returns>
  434. private DataSet ToDataTable(string filePath)
  435. {
  436. DataSet ds = new DataSet();
  437. DataTable dt = null;
  438. try
  439. {
  440. FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read);
  441. NPOI.SS.UserModel.IWorkbook book = null;
  442. if (filePath.IndexOf(".xlsx") > 0) // 2007版本
  443. book = new NPOI.XSSF.UserModel.XSSFWorkbook(fs);
  444. else if (filePath.IndexOf(".xls") > 0) // 2003版本
  445. book = new NPOI.HSSF.UserModel.HSSFWorkbook(fs);
  446. //NPOI.HSSF.UserModel.HSSFWorkbook book = new NPOI.HSSF.UserModel.HSSFWorkbook(fs);
  447. NPOI.SS.UserModel.ISheet sheet = book.GetSheetAt(0);
  448. NPOI.SS.UserModel.IRow row = sheet.GetRow(0);
  449. int firstCellNum = row.FirstCellNum;
  450. int lastCellNum = row.LastCellNum;
  451. //if (firstCellNum == lastCellNum) continue;
  452. dt = new DataTable(sheet.SheetName);
  453. //for (int i = firstCellNum; i < lastCellNum; i++)
  454. for (int i = firstCellNum; i < 5; i++)
  455. {
  456. if (row.GetCell(i) != null)
  457. {
  458. dt.Columns.Add(row.GetCell(i).ToString() + i.ToString(), typeof(string));
  459. }
  460. else
  461. {
  462. dt.Columns.Add(i.ToString(), typeof(string));
  463. }
  464. }
  465. for (int i = 1; i <= sheet.LastRowNum; i++)
  466. {
  467. if (sheet.GetRow(i).GetCell(1) != null && sheet.GetRow(i).GetCell(1).ToString() != "")
  468. {
  469. DataRow newRow = dt.Rows.Add();
  470. for (int j = firstCellNum; j < 5; j++)
  471. {
  472. if (sheet.GetRow(i).GetCell(j) != null)
  473. {
  474. newRow[j] = sheet.GetRow(i).GetCell(j).ToString();
  475. }
  476. else
  477. {
  478. newRow[j] = "";
  479. }
  480. }
  481. }
  482. }
  483. ds.Tables.Add(dt);
  484. }
  485. catch (Exception ex)
  486. {
  487. //SysLog.WriteLog(ex);
  488. }
  489. return ds;
  490. }
  491. #endregion
  492. #endregion
  493. #region 分配
  494. public ActionResult fpdata(string fpvalue, string[] arruser, string key)
  495. {
  496. string fptype = "0";
  497. StringBuilder sb = new StringBuilder();
  498. sb.Append(" and F_FPState=0 and F_DeleteFlag=0 ");
  499. if (!string.IsNullOrWhiteSpace(key))
  500. {
  501. sb.Append(" and F_Taskid in (select F_TaskID from T_Call_OutTask where F_TaskName like '%" + key + "%' or F_TaskRemark like '%" + key + "%' and F_IsStart=1 and F_DeleteFlag=0 ) ");
  502. }
  503. int userid = CurrentUser.UserData.F_UserId;
  504. string username = CurrentUser.UserData.F_UserName;
  505. #region 按数量平均分配
  506. DataTable dt = DbHelperSQL.Query("select *,NEWID() from T_Call_OutTaskTelNum where 1=1 " + sb.ToString() + " order by NEWID()").Tables[0];
  507. //otnBLL.GetList(" F_FPState=0 ").Tables[0];
  508. List<Model.T_Sys_UserAccount> userlist = new BLL.T_Sys_UserAccount().GetModelList(" F_SeatFlag=1 ");
  509. if (dt != null)
  510. {
  511. int count = dt.Rows.Count;
  512. int cqcount = 0;
  513. if (fptype.Trim() == "0")
  514. {
  515. //按数量平均分配
  516. cqcount = Convert.ToInt32(fpvalue.Trim());
  517. }
  518. int successcount = 0;
  519. if (cqcount > 0)
  520. {
  521. int m = 0;
  522. int n = 0;
  523. for (int i = 0; i < count; i++)
  524. {
  525. #region 更新分配数据
  526. //更新
  527. if (m < cqcount)
  528. {
  529. if (n < arruser.Length)
  530. {
  531. Model.T_Sys_UserAccount usermodel = userlist.Where(u => u.F_UserCode == arruser[n].ToString()).FirstOrDefault();
  532. bool b = otnBLL.UpdateFP(dt.Rows[i]["F_Id"].ToString(), 1, usermodel.F_UserId.ToString(), usermodel.F_UserName);
  533. if (b)
  534. {
  535. successcount++;
  536. }
  537. }
  538. m++;
  539. }
  540. else
  541. {
  542. n++;
  543. m = 0;
  544. i--;
  545. }
  546. #endregion
  547. }
  548. }
  549. return Success("成功分配外呼计划任务" + successcount.ToString() + "条数据" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  550. }
  551. #endregion
  552. return Error("分配外呼计划任务失败" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  553. }
  554. //未分配列表
  555. public ActionResult GetTaskWPF(string key, int pagesize = 10, int pageindex = 1)
  556. {
  557. StringBuilder sb = new StringBuilder();
  558. sb.Append(" and F_FPState=0 and F_DeleteFlag=0 ");
  559. var sql = "";
  560. if (!string.IsNullOrWhiteSpace(key))
  561. {
  562. sql += " and F_Phone='" + key + "' or F_TaskName like '%" + key + "%' or F_TaskRemark like '%" + key + "%'";
  563. }
  564. sb.Append(" and F_Taskid in (select F_TaskID from T_Call_OutTask where F_IsStart=1 and F_DeleteFlag=0 "+sql+" ) ");
  565. var recordCount = 0;
  566. var dt = BLL.PagerBLL.GetListPager(
  567. "T_Call_OutTaskTelNum",
  568. "F_Id",
  569. "*",
  570. sb.ToString(),
  571. "ORDER BY F_Id desc",
  572. pagesize,
  573. pageindex,
  574. true,
  575. out recordCount);
  576. var obj = new
  577. {
  578. rows = dt,
  579. total = recordCount
  580. };
  581. return Content(obj.ToJson());
  582. }
  583. //获取坐席列表
  584. public ActionResult GetSeatList(int pagesize = 10, int pageindex = 1)
  585. {
  586. DataTable dt = new DataTable();
  587. string sql = " ";
  588. sql = " and f_seatflag=1 ";
  589. int roleid = CurrentUser.UserData.F_RoleId;
  590. int deptid = CurrentUser.UserData.F_DeptId;
  591. int recordCount = 0;
  592. dt = BLL.PagerBLL.GetListPager(
  593. "T_Sys_UserAccount",
  594. "F_UserId",
  595. "*",
  596. sql,
  597. "ORDER BY F_UserId desc",
  598. pagesize,
  599. pageindex,
  600. true,
  601. out recordCount);
  602. DataTable dtCount = otnBLL.GetList(" F_DeleteFlag=0 and isnull(F_HJJGName,'')!='正常接通' and isnull(F_YHFKName,'')!='已同意' and F_TaskID in (select F_TaskID from T_Call_OutTask where F_IsStart=1 and F_DeleteFlag=0) ").Tables[0];//new BLL.T_Vis_TelAllot().GetList(" F_state=1 and F_HFTelID in (select F_TelID from T_Vis_Telphone where F_ISAllot=1 and F_ISCallRes=0 ) ").Tables[0];
  603. List<Model.UserAccount> modelList = new BLL.UserAccount().DataTableToList(dt);
  604. var obj = new
  605. {
  606. rows = modelList.Select(x => new
  607. {
  608. UserCode = x.F_UserCode,
  609. UserName = x.F_UserName,
  610. WWCCount = dtCount.Select(" F_UserId=" + x.F_UserId).Count()
  611. }),
  612. total = recordCount
  613. };
  614. return Content(obj.ToJson());
  615. }
  616. #endregion
  617. #region
  618. //获取任务
  619. public ActionResult GetTaskTelModel(int id = 0)
  620. {
  621. if (id <= 0)
  622. return Error("参数不正确");
  623. var model = otnBLL.GetModel(id);
  624. var paperid = 0;
  625. var taskmodel = new CallPlanNewDto();
  626. if (model != null)
  627. {
  628. #region 绑定任务和客户信息
  629. if (model.F_CusID != null)
  630. {
  631. var cusmodel = cusBLL.GetModel(model.F_CusID.Value);
  632. if (cusmodel != null)
  633. {
  634. taskmodel.F_CusID = model.F_CusID.Value;//客户id
  635. taskmodel.F_CityID = cusmodel.F_CityID.Value;//乡镇id
  636. taskmodel.F_Address = cusmodel.F_Address;//住址
  637. taskmodel.F_CusName = cusmodel.F_CustomerName;//客户姓名
  638. taskmodel.F_Phone = cusmodel.F_Telephone;//号码
  639. taskmodel.F_Telephone = cusmodel.F_Mobile;//手机号码
  640. taskmodel.F_City = cusmodel.F_City;//乡镇
  641. }
  642. }
  643. taskmodel.F_Id = model.F_Id;//号码id
  644. taskmodel.F_TaskId = model.F_TaskId.Value;//任务id
  645. taskmodel.F_HJJGId = model.F_HJJGId != null ? model.F_HJJGId.Value : 0;//呼叫结果id
  646. if (!string.IsNullOrWhiteSpace(model.F_CusName))
  647. taskmodel.F_CusName = model.F_CusName;//客户姓名
  648. if (!string.IsNullOrWhiteSpace(model.F_Phone))
  649. taskmodel.F_Phone = model.F_Phone;//号码
  650. if (!string.IsNullOrWhiteSpace(model.ExpandVchField12))
  651. taskmodel.F_Address = model.ExpandVchField12;//住址
  652. #endregion
  653. var tmodel = otBLL.GetModel(model.F_TaskId.Value);
  654. if (tmodel != null)
  655. {
  656. paperid = tmodel.F_PagerID.Value;
  657. taskmodel.F_TaskName = tmodel.F_TaskName;//任务名称
  658. taskmodel.F_TaskRemark = tmodel.F_TaskRemark;//任务备注
  659. }
  660. }
  661. if (model == null)
  662. return Error("当前数据不存在");
  663. var obj = new
  664. {
  665. taskModel = taskmodel,
  666. paperid = paperid
  667. };
  668. return Success("获取成功", obj);
  669. }
  670. //获取我的任务列表
  671. public ActionResult GetMyTaskList(string key, int pagesize = 10, int pageindex = 1)
  672. {
  673. StringBuilder sb = new StringBuilder();
  674. int userid = CurrentUser.UserData.F_UserId;
  675. sb.Append(" and F_UserId=" + userid);
  676. sb.Append(" and F_DeleteFlag=0 ");
  677. //sb.Append(" and isnull(F_HJJGName,'')!='正常接通' and isnull(F_YHFKName,'')!='已同意'");
  678. //sb.Append(" and isnull(F_HJJGName,'')=''");
  679. sb.Append(" and isnull(F_HJJGName,'')!='正常接通' and isnull(F_HJJGName,'')!='免回访'");
  680. sb.Append(" and F_Taskid in (select F_TaskID from T_Call_OutTask where F_IsStart=1 and F_DeleteFlag=0)");
  681. if (!string.IsNullOrWhiteSpace(key))
  682. {
  683. sb.Append(" and F_Phone like '%" + key.Trim() + "%'");
  684. }
  685. //string sqlwhere = "";
  686. //if (!string.IsNullOrWhiteSpace(key))
  687. //{
  688. // sqlwhere = " and F_TaskName like '%" + key + "%' or F_TaskRemark like '%" + key + "%' ";
  689. //}
  690. //sb.Append(" and F_TaskID in (select F_TaskID from T_Call_OutTask where F_IsStart=1 and F_DeleteFlag=0 " + sqlwhere + ") ");
  691. var recordCount = 0;
  692. var dt = BLL.PagerBLL.GetListPager(
  693. "T_Call_OutTaskTelNum",
  694. "F_Id",
  695. "*",
  696. sb.ToString(),
  697. "ORDER BY F_Id desc",
  698. pagesize,
  699. pageindex,
  700. true,
  701. out recordCount);
  702. var obj = new
  703. {
  704. rows = dt,
  705. total = recordCount
  706. };
  707. return Content(obj.ToJson());
  708. }
  709. //获取我的任务结果
  710. public ActionResult GetMyResultList(string key, int hjjgid = 0, int yhfkid = 0, int pagesize = 10, int pageindex = 1)
  711. {
  712. StringBuilder sb = new StringBuilder();
  713. int userid = CurrentUser.UserData.F_UserId;
  714. sb.Append(" and F_UserId=" + userid);
  715. sb.Append(" and F_DeleteFlag=0 ");
  716. if (hjjgid != 0)
  717. {
  718. sb.Append(" and F_HJJGId=" + hjjgid);
  719. }
  720. if (yhfkid != 0)
  721. {
  722. sb.Append(" and F_YHFKId=" + yhfkid);
  723. }
  724. if (!string.IsNullOrWhiteSpace(key))
  725. {
  726. sb.Append(" and F_Phone like '%" + key.Trim() + "%'");
  727. }
  728. //string sqlwhere = "";
  729. //if (!string.IsNullOrWhiteSpace(key))
  730. //{
  731. // sqlwhere = " and F_TaskName like '%" + key + "%' or F_TaskRemark like '%" + key + "%' ";
  732. //}
  733. //sb.Append(" and F_TaskID in (select F_TaskID from T_Call_OutTask where F_IsStart=1 and F_DeleteFlag=0 " + sqlwhere + ") ");
  734. var recordCount = 0;
  735. var dt = BLL.PagerBLL.GetListPager(
  736. "T_Call_OutTaskTelNum",
  737. "F_Id",
  738. "*",
  739. sb.ToString(),
  740. "ORDER BY F_Id desc",
  741. pagesize,
  742. pageindex,
  743. true,
  744. out recordCount);
  745. var obj = new
  746. {
  747. rows = dt,
  748. total = recordCount
  749. };
  750. return Content(obj.ToJson());
  751. }
  752. //获取总体任务结果
  753. public ActionResult GetResultList(string key, int userid = 0, int hjjgid = 0, int yhfkid = 0, int pagesize = 10, int pageindex = 1)
  754. {
  755. StringBuilder sb = new StringBuilder();
  756. sb.Append(" and F_DeleteFlag=0 ");
  757. if (userid != 0)
  758. {
  759. sb.Append(" and F_UserId=" + userid);
  760. }
  761. if (hjjgid != 0)
  762. {
  763. sb.Append(" and F_HJJGId=" + hjjgid);
  764. }
  765. if (yhfkid != 0)
  766. {
  767. sb.Append(" and F_YHFKId=" + yhfkid);
  768. }
  769. if (!string.IsNullOrWhiteSpace(key))
  770. {
  771. sb.Append(" and F_Phone like '%" + key.Trim() + "%'");
  772. }
  773. //string sqlwhere = "";
  774. //if (!string.IsNullOrWhiteSpace(key))
  775. //{
  776. // sqlwhere = " and F_TaskName like '%" + key + "%' or F_TaskRemark like '%" + key + "%' ";
  777. //}
  778. //sb.Append(" and F_TaskID in (select F_TaskID from T_Call_OutTask where F_IsStart=1 and F_DeleteFlag=0 " + sqlwhere + ") ");
  779. var recordCount = 0;
  780. var dt = BLL.PagerBLL.GetListPager(
  781. "T_Call_OutTaskTelNum",
  782. "F_Id",
  783. "*",
  784. sb.ToString(),
  785. "ORDER BY F_Id desc",
  786. pagesize,
  787. pageindex,
  788. true,
  789. out recordCount);
  790. var obj = new
  791. {
  792. rows = dt,
  793. total = recordCount
  794. };
  795. return Content(obj.ToJson());
  796. }
  797. //获取任务结果详情
  798. public ActionResult GetTaskTelInfo(int id = 0)
  799. {
  800. if (id <= 0)
  801. return Error("参数不正确");
  802. var model = otnBLL.GetModel(id);
  803. var paperid = 0;
  804. if (model != null)
  805. {
  806. var taskmodel = new CallPlanNewDto();
  807. #region 绑定任务和客户信息
  808. if (model.F_CusID != null)
  809. {
  810. var cusmodel = cusBLL.GetModel(model.F_CusID.Value);
  811. if (cusmodel != null)
  812. {
  813. taskmodel.F_CusID = model.F_CusID.Value;//客户id
  814. taskmodel.F_CityID = cusmodel.F_CityID.Value;//乡镇id
  815. taskmodel.F_CusName = cusmodel.F_CustomerName;//客户姓名
  816. taskmodel.F_Phone = cusmodel.F_Telephone;//号码
  817. taskmodel.F_Telephone = cusmodel.F_Mobile;//手机号码
  818. taskmodel.F_City = cusmodel.F_City;//乡镇
  819. taskmodel.F_Address = cusmodel.F_Address;//住址
  820. }
  821. }
  822. taskmodel.F_Id = model.F_Id;//号码id
  823. taskmodel.F_TaskId = model.F_TaskId.Value;//任务id
  824. taskmodel.F_HJJGId = model.F_HJJGId != null ? model.F_HJJGId.Value : 0;//呼叫结果id
  825. //if (!string.IsNullOrWhiteSpace(model.F_CusName))
  826. // taskmodel.F_CusName = model.F_CusName;//客户姓名
  827. //if (!string.IsNullOrWhiteSpace(model.F_Phone))
  828. // taskmodel.F_Phone = model.F_Phone;//号码
  829. //if (!string.IsNullOrWhiteSpace(model.ExpandVchField12))
  830. // taskmodel.F_Address = model.ExpandVchField12;//住址
  831. #endregion
  832. var anslist = ansBLL.GetModelList(" F_TaskID=" + model.F_TaskId.Value + " and F_CusTelID=" + id + " ");
  833. var tmodel = otBLL.GetModel(model.F_TaskId.Value);
  834. if (tmodel != null)
  835. {
  836. paperid = tmodel.F_PagerID.Value;
  837. #region 获取问卷试题信息以及答案
  838. var pmodel = pagerInfoBLL.GetModel(paperid);
  839. var qlist = questionBLL.GetModelList(" F_DeleteFlag=0 and F_QuestionId in (select F_QuestionId from T_Ask_PagerItems where F_PagerId=" + paperid + ") order by F_QuestionId ");
  840. var qilist = questionItemBLL.GetModelList(" F_QuestionId in (select F_QuestionId from T_Ask_PagerItems where F_PagerId=" + paperid + ") order by F_ItemId ");
  841. var newmodel = new
  842. {
  843. F_Title = pmodel.F_Title,
  844. F_Remark = pmodel.F_Remark,
  845. F_StartText = pmodel.F_StartText,
  846. F_EndText = pmodel.F_EndText,
  847. F_Questions = qlist.Select(q =>
  848. {
  849. var answers = "";
  850. var qalist = anslist.Where(al => al.F_QID.Value == q.F_QuestionId).ToList<Model.T_Call_OutAnswers>();
  851. if (qalist.Count > 0)
  852. {
  853. if (q.F_Type > 1)
  854. {
  855. foreach (var item in qalist)
  856. {
  857. answers += item.F_QIID + "|";
  858. }
  859. }
  860. else
  861. {
  862. answers = qalist[0].F_Answer;
  863. }
  864. }
  865. return new
  866. {
  867. quesid = q.F_QuestionId,
  868. questitle = q.F_Title,
  869. questype = q.F_Type,
  870. quescontent = q.F_Content,
  871. quesremark = q.F_Remark,
  872. quesanswers = answers.Trim('|'),
  873. quesitems = qilist.Where(qq => qq.F_QuestionId == q.F_QuestionId).Select(qi =>
  874. {
  875. return new
  876. {
  877. itemid = qi.F_ItemId,
  878. itemname = qi.F_ItemName,
  879. itemremark = qi.F_Remark,
  880. };
  881. })
  882. };
  883. })
  884. };
  885. #endregion
  886. taskmodel.F_TaskName = tmodel.F_TaskName;//任务名称
  887. taskmodel.F_TaskRemark = tmodel.F_TaskRemark;//任务备注
  888. var objy = new
  889. {
  890. taskModel = taskmodel,
  891. paperModel = newmodel
  892. };
  893. return Success("获取详情成功", objy);
  894. }
  895. }
  896. return Error("获取详情失败");
  897. }
  898. #endregion
  899. #region 问卷回答
  900. /// <summary>
  901. ///
  902. /// </summary>
  903. /// <param name="taskid">任务ID</param>
  904. /// <param name="custelid">客户电话ID</param>
  905. /// <param name="ans">答案,数组形式["15_20_单选选项内容","17_25|36|58_复选选项内容1|选项内容2|选项内容3","30_0_问答题"]</param>
  906. /// <param name="hjjgid">呼叫结果</param>
  907. /// <param name="telphone">电话号码</param>
  908. /// <param name="name">姓名</param>
  909. /// <param name="phone">固定号码</param>
  910. /// <param name="countryid">乡镇id</param>
  911. /// <param name="address">地址</param>
  912. /// <returns></returns>
  913. public ActionResult Answers(int taskid, int custelid, string[] ans, int hjjgid,
  914. string name, string phone, int countryid, string address)
  915. {
  916. int cc = 0;
  917. if (custelid > 0)
  918. {
  919. var otnModel = otnBLL.GetModel(custelid);
  920. if (otnModel != null)
  921. {
  922. int cusid = saveCus(otnModel.F_Phone, name, phone, countryid, address);
  923. #region 保存答案
  924. var ansModel = new Model.T_Call_OutAnswers();
  925. string askqids = "";
  926. string ansids = "";
  927. if (ans != null)
  928. {
  929. //先删除 后添加
  930. ansBLL.DeleteByTelid(custelid, taskid);
  931. ansModel.F_TaskID = taskid;
  932. ansModel.F_CusTelID = custelid;
  933. ansModel.F_CusID = cusid;
  934. ansModel.F_OptBy = CurrentUser.UserData.F_UserId;
  935. ansModel.F_OptByName = CurrentUser.UserData.F_UserName;
  936. ansModel.F_OptOn = DateTime.Now;
  937. ansModel.F_Expand1 = countryid.ToString();
  938. #region 循环保存
  939. foreach (var item in ans)
  940. {
  941. var nn = 0;
  942. var ii = item.Split('_');
  943. ansModel.F_QID = int.Parse(ii[0]);
  944. askqids += ii[0] + ",";
  945. ansids += ii[1] + ",";
  946. if (ii[1].IndexOf('|') > 0)
  947. {
  948. var iii = ii[1].Trim('|').Split('|');
  949. var iia = ii[2].Trim('|').Split('|');
  950. for (int i = 0; i < iii.Length; i++)
  951. {
  952. ansModel.F_QIID = int.Parse(iii[i]);
  953. ansModel.F_Answer = iia[i];
  954. if (ansBLL.Add(ansModel) > 0)
  955. nn++;
  956. }
  957. if (nn == iii.Length)
  958. cc++;
  959. }
  960. else
  961. {
  962. ansModel.F_QIID = int.Parse(ii[1]);
  963. ansModel.F_Answer = ii[2];
  964. if (ansBLL.Add(ansModel) > 0)
  965. cc++;
  966. }
  967. }
  968. #endregion
  969. }
  970. #endregion
  971. #region 保存日志
  972. otnModel.F_HJJGId = hjjgid;
  973. var hjconfig = new BLL.T_Sys_DictionaryValue().GetModel(hjjgid);
  974. if (hjconfig != null)
  975. otnModel.F_HJJGName = hjconfig.F_Name;
  976. //otnModel.F_YHFKId = yhfkid;
  977. //var fkconfig = new BLL.T_Sys_DictionaryValue().GetModel(yhfkid);
  978. //if (fkconfig != null)
  979. // otnModel.F_YHFKName = fkconfig.F_Name;
  980. otnModel.ExpandIntField1 = countryid;//乡镇
  981. otnModel.ExpandDatField1 = DateTime.Now;//调查时间
  982. otnModel.F_AskRes = askqids;
  983. otnModel.F_AskInfo = ansids;
  984. otnModel.F_CusID = cusid;
  985. otnModel.F_CusName = name;
  986. otnBLL.Update(otnModel);
  987. planrecord(otnModel);
  988. #endregion
  989. }
  990. }
  991. if (ans != null)
  992. {
  993. if (cc == ans.Length)
  994. {
  995. return Success("问卷答案提交成功!taskid=" + taskid + ",custelid=" + custelid + ",操作人:" + CurrentUser.UserData.F_UserCode);
  996. }
  997. else
  998. {
  999. ansBLL.DeleteByTelid(custelid, taskid);
  1000. return Error("问卷答案提交失败!taskid=" + taskid + ",custelid=" + custelid + ",操作人:" + CurrentUser.UserData.F_UserCode);
  1001. }
  1002. }
  1003. else
  1004. {
  1005. return Error("没有问卷答案提交");
  1006. }
  1007. }
  1008. #endregion
  1009. #region 客户档案
  1010. /// <summary>
  1011. /// 保存客户档案
  1012. /// </summary>
  1013. /// <param name="telphone"></param>
  1014. /// <param name="name"></param>
  1015. /// <param name="phone"></param>
  1016. /// <param name="countryid"></param>
  1017. /// <param name="address"></param>
  1018. /// <returns></returns>
  1019. private int saveCus(string telphone, string name, string phone,int countryid, string address)
  1020. {
  1021. int res = 0;
  1022. Model.T_Cus_CustomerBase cusmodel = new Model.T_Cus_CustomerBase();
  1023. if (!string.IsNullOrWhiteSpace(telphone))
  1024. {
  1025. var fkconfig = new BLL.T_Sys_DictionaryValue().GetModel(countryid);
  1026. cusmodel = cusBLL.GetModelByPhone(telphone);
  1027. if (cusmodel != null)
  1028. {
  1029. cusmodel.F_Address = address;
  1030. if (fkconfig != null)
  1031. cusmodel.F_City = fkconfig.F_Name;
  1032. cusmodel.F_CityID = countryid;
  1033. cusmodel.F_CustomerName = name;
  1034. cusmodel.F_Telephone = phone;
  1035. cusBLL.Update(cusmodel);
  1036. res = cusmodel.F_CustomerId;
  1037. }
  1038. else
  1039. {
  1040. cusmodel = new Model.T_Cus_CustomerBase();
  1041. cusmodel.F_Address = address;
  1042. if (fkconfig != null)
  1043. cusmodel.F_City = fkconfig.F_Name;
  1044. cusmodel.F_CityID = countryid;
  1045. cusmodel.F_CustomerName = name;
  1046. cusmodel.F_Telephone = phone;
  1047. cusmodel.F_Mobile = telphone;
  1048. res = cusBLL.Add(cusmodel);
  1049. }
  1050. }
  1051. return res;
  1052. }
  1053. #endregion
  1054. #region 获取记录
  1055. //获取外呼通话记录
  1056. public ActionResult GetTelList(string type, string telid, string phone, string usercode)
  1057. {
  1058. ActionResult res = NoToken("未知错误,请重新登录");
  1059. if (Request.IsAuthenticated)
  1060. {
  1061. string sql = "";
  1062. DataTable dt = new DataTable();
  1063. sql += " and TaskType='1'";
  1064. if (telid != null && telid.Trim() != "")
  1065. {
  1066. sql += " and CallType=1 and TaskPhoneID='" + telid.Trim() + "' ";
  1067. }
  1068. if (phone != null && phone.Trim() != "")
  1069. {
  1070. sql += " and CallNumber like'%" + phone + "%'";
  1071. }
  1072. if (usercode != null && usercode.Trim() != "")
  1073. {
  1074. sql += " and UserCode='" + usercode + "'";
  1075. }
  1076. string strpageindex = RequestString.GetQueryString("page");
  1077. int pageindex = 1;
  1078. string strpagesize = RequestString.GetQueryString("pagesize");
  1079. int pagesize = 10;
  1080. if (strpageindex.Trim() != "")
  1081. {
  1082. pageindex = Convert.ToInt32(strpageindex);
  1083. }
  1084. if (strpagesize.Trim() != "")
  1085. {
  1086. pagesize = Convert.ToInt32(strpagesize);
  1087. }
  1088. int recordCount = 0;
  1089. dt = BLL.PagerBLL.GetListPager(
  1090. "T_Call_CallRecords",
  1091. "CallRecordsId",
  1092. "*",
  1093. sql,
  1094. "ORDER BY CallRecordsId desc",
  1095. pagesize,
  1096. pageindex,
  1097. true,
  1098. out recordCount);
  1099. var obj = new
  1100. {
  1101. rows = dt,
  1102. total = recordCount
  1103. };
  1104. res = Content(obj.ToJson());
  1105. }
  1106. return res;
  1107. }
  1108. #endregion
  1109. #region 记录日志
  1110. private void planrecord(Model.T_Call_OutTaskTelNum tnModel)
  1111. {
  1112. Model.T_Call_OutTaskRecords trModel = new Model.T_Call_OutTaskRecords();
  1113. trModel.F_AskInfo = tnModel.F_AskInfo;
  1114. trModel.F_AskRes = tnModel.F_AskRes;
  1115. trModel.F_CreateTime = tnModel.F_CreateTime;
  1116. trModel.F_CusID = tnModel.F_CusID;
  1117. trModel.F_CusName = tnModel.F_CusName;
  1118. trModel.F_FPState = tnModel.F_FPState;
  1119. trModel.F_HCState = tnModel.F_HCState;
  1120. trModel.F_HJJGId = tnModel.F_HJJGId;
  1121. trModel.F_HJJGName = tnModel.F_HJJGName;
  1122. trModel.F_TelID = tnModel.F_Id;
  1123. trModel.F_OptTime = DateTime.Now;
  1124. trModel.F_OptUserCode = CurrentUser.UserData.F_UserCode;
  1125. trModel.F_Phone = tnModel.F_Phone;
  1126. trModel.F_PhoneBy = tnModel.F_PhoneBy;
  1127. trModel.F_TaskId = tnModel.F_TaskId;
  1128. trModel.F_UserId = tnModel.F_UserId;
  1129. trModel.F_UserName = tnModel.F_UserName;
  1130. trModel.F_YHFKId = tnModel.F_YHFKId;
  1131. trModel.F_YHFKName = tnModel.F_YHFKName;
  1132. trModel.F_YJState = tnModel.F_YJState;
  1133. trModel.ExpandIntField1 = tnModel.ExpandIntField1;
  1134. trModel.ExpandDatField1 = tnModel.ExpandDatField1;
  1135. new BLL.T_Call_OutTaskRecords().Add(trModel);
  1136. }
  1137. #endregion
  1138. }
  1139. }