Нет описания

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