Нет описания

CallOutPlanController.cs 56KB

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