ZZDianXin_API - 郑州电信演示

QuestionnaireController.cs 77KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680
  1. using CallCenter.Utility;
  2. using CallCenterApi.DB;
  3. using CallCenterApi.Interface.Controllers.Base;
  4. using CallCenterApi.Interface.Models.Filter;
  5. using CallCenterApi.Interface.Models.Input;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.Data;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Web;
  12. using System.Web.Mvc;
  13. namespace CallCenterApi.Interface.Controllers.Question
  14. {
  15. public class QuestionnaireController : BaseController
  16. {
  17. private readonly BLL.T_Ask_QuestionCategory qCategoryBLL = new BLL.T_Ask_QuestionCategory();
  18. private readonly BLL.T_Ask_Question questionBLL = new BLL.T_Ask_Question();
  19. private readonly BLL.T_Ask_QuestionItems questionItemBLL = new BLL.T_Ask_QuestionItems();
  20. private readonly BLL.T_Ask_PagerInfo pagerInfoBLL = new BLL.T_Ask_PagerInfo();
  21. private readonly BLL.T_Ask_PagerItems pagerInfoItemsBLL = new BLL.T_Ask_PagerItems();
  22. #region 问卷设置 - 试题问卷
  23. /// <summary>
  24. /// 问卷设置 - 试题问卷
  25. /// </summary>
  26. /// <param name="filter"></param>
  27. /// <returns></returns>
  28. public ActionResult GetPagerInfoList(FilterPagerInfo filter)
  29. {
  30. string sql = "";
  31. if (!string.IsNullOrWhiteSpace(filter.Key))
  32. {
  33. sql += $" and F_Title like '%{ filter.Key.Trim()}%'";
  34. }
  35. var recordCount = 0;
  36. var dt = BLL.PagerBLL.GetListPager(
  37. "T_Ask_PagerInfo",
  38. "F_PagerId",
  39. "*",
  40. " and F_DeleteFlag=0 " + sql,
  41. "ORDER BY F_PagerId desc",
  42. filter.PageSize,
  43. filter.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 GetPagerInfoModel(int pid)
  54. {
  55. var model = pagerInfoBLL.GetModel(pid);
  56. return Success("获取问卷成功", model);
  57. }
  58. public ActionResult CreateOrUpdatePager(Pagerinfo input)
  59. {
  60. var model = new Model.T_Ask_PagerInfo();
  61. if (input.Id <= 0)
  62. {
  63. model.F_Title = input.Title;
  64. model.F_StartText = input.StartText;
  65. model.F_EndText = input.EndText;
  66. model.F_Remark = input.Remark;
  67. model.F_Times = input.Times;
  68. model.F_DeleteFlag = 0;
  69. model.F_CreateOn = DateTime.Now;
  70. model.F_CreateBy = CurrentUser.UserData.F_UserId;
  71. if (pagerInfoBLL.Add(model) > 0)
  72. return Success("添加问卷成功" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  73. return Error("添加问卷失败" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  74. }
  75. model = pagerInfoBLL.GetModel(input.Id);
  76. model.F_Title = input.Title;
  77. model.F_StartText = input.StartText;
  78. model.F_EndText = input.EndText;
  79. model.F_Remark = input.Remark;
  80. model.F_Times = input.Times;
  81. model.F_DeleteFlag = 0;
  82. model.F_ModifyBy = CurrentUser.UserData.F_UserId;
  83. model.F_ModifyOn = DateTime.Now;
  84. if (pagerInfoBLL.Update(model))
  85. return Success("修改问卷成功" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  86. return Error("修改问卷失败" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  87. }
  88. /// <summary>
  89. /// 选择试题 - 修改 - 选择试题(左侧)
  90. /// </summary>
  91. /// <returns></returns>
  92. public ActionResult GetQuestionNotItemsList(FilterQuestion filter)
  93. {
  94. StringBuilder sb = new StringBuilder();
  95. if (filter.CategoryId > 0)
  96. {
  97. sb.Append(" and F_CategoryId=" + filter.CategoryId);
  98. }
  99. if (filter.SelectType > 0)
  100. {
  101. sb.Append(" and F_Type=" + filter.SelectType);
  102. }
  103. if (filter.PagerId > 0)
  104. {
  105. sb.Append(" and F_QuestionId not in (SELECT [F_QuestionId] FROM [T_Ask_PagerItems] where [F_PagerId]=" + filter.PagerId + ") ");
  106. }
  107. if (!string.IsNullOrWhiteSpace(filter.Key))
  108. {
  109. sb.Append(" and (F_Title like '%" + filter.Key + "%' or F_Content like '%" + filter.Key + "%') ");
  110. }
  111. var recordCount = 0;
  112. var dt = BLL.PagerBLL.GetListPager(
  113. "vw_Ask_Question",
  114. "F_QuestionId",
  115. "*",
  116. " and F_DeleteFlag=0 " + sb.ToString(),
  117. "ORDER BY F_QuestionId desc",
  118. filter.PageSize,
  119. filter.PageIndex,
  120. true,
  121. out recordCount);
  122. var quesitemlist = questionItemBLL.GetModelList("");
  123. for (int i = 0; i < dt.Rows.Count; i++)
  124. {
  125. var items = "";
  126. string qid = dt.Rows[i]["F_QuestionId"].ToString();
  127. var quesitem = quesitemlist.Where(qi => qi.F_QuestionId == int.Parse(qid));
  128. if (quesitem.Count() > 0)
  129. {
  130. foreach (var item in quesitem)
  131. {
  132. items += ";" + item.F_ItemName;
  133. }
  134. }
  135. dt.Rows[i]["F_Content"] = items.Trim(';');
  136. }
  137. var obj = new
  138. {
  139. rows = dt,
  140. total = recordCount
  141. };
  142. return Content(obj.ToJson());
  143. }
  144. /// <summary>
  145. /// 选择试题 - 修改 - 选择试题(右侧)
  146. /// </summary>
  147. /// <returns></returns>
  148. public ActionResult GetQuestionPageList(FilterQuestion filter)
  149. {
  150. StringBuilder sb = new StringBuilder();
  151. if (filter.PagerId > 0)
  152. {
  153. sb.Append(" and F_PagerId=" + filter.PagerId);
  154. }
  155. var recordCount = 0;
  156. var dt = BLL.PagerBLL.GetListPager(
  157. "vw_Ask_PagerQuestion",
  158. "F_ItemId",
  159. "*",
  160. " and F_DeleteFlag=0 " + sb.ToString(),
  161. "ORDER BY F_Sort desc",
  162. filter.PageSize,
  163. filter.PageIndex,
  164. true,
  165. out recordCount);
  166. var quesitemlist = questionItemBLL.GetModelList("");
  167. for (int i = 0; i < dt.Rows.Count; i++)
  168. {
  169. var items = "";
  170. string qid = dt.Rows[i]["F_QuestionId"].ToString();
  171. var quesitem = quesitemlist.Where(qi => qi.F_QuestionId == int.Parse(qid));
  172. if (quesitem.Count() > 0)
  173. {
  174. foreach (var item in quesitem)
  175. {
  176. items += ";" + item.F_ItemName;
  177. }
  178. }
  179. dt.Rows[i]["F_Content"] = items.Trim(';');
  180. }
  181. var obj = new
  182. {
  183. rows = dt,
  184. total = recordCount
  185. };
  186. return Content(obj.ToJson());
  187. }
  188. /// <summary>
  189. /// 选择试题 - 修改 - 批量选入(左侧 -> 右侧)
  190. /// </summary>
  191. /// <returns></returns>
  192. public ActionResult AddPagerItems(string[] ids, string pid, string sort = "0")
  193. {
  194. //string[] arrid = ids.Split(',');
  195. if (ids.Count() > 0)
  196. {
  197. int intsort = 0;
  198. intsort = Convert.ToInt32(sort) + 1;
  199. int cc = 0;
  200. foreach (string squestionid in ids)
  201. {
  202. Model.T_Ask_PagerItems model = new Model.T_Ask_PagerItems();
  203. int pagerid = 0;
  204. int questionid = 0;
  205. pagerid = Convert.ToInt32(pid);
  206. questionid = Convert.ToInt32(squestionid);
  207. model.F_PagerId = pagerid;
  208. model.F_QuestionId = questionid;
  209. model.F_Sort = intsort;
  210. intsort++;
  211. if (pagerInfoItemsBLL.Add(model) > 0)
  212. {
  213. cc++;
  214. }
  215. }
  216. if (cc == ids.Length)
  217. {
  218. return Success("选入试题成功" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  219. }
  220. }
  221. return Error("选入试题失败" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  222. }
  223. /// <summary>
  224. /// 选择试题 - 修改 - 批量选出(右侧 -> 左侧)
  225. /// </summary>
  226. /// <returns></returns>
  227. public ActionResult DelPagerItems(string[] ids)
  228. {
  229. //string[] arrid = ids.Split(',');
  230. if (ids.Length > 0)
  231. {
  232. int cc = 0;
  233. foreach (string itemid in ids)
  234. {
  235. if (pagerInfoItemsBLL.Delete(Convert.ToInt32(itemid)))
  236. {
  237. cc++;
  238. }
  239. }
  240. if (cc == ids.Length)
  241. {
  242. return Success("选出试题成功" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  243. }
  244. }
  245. return Error("选出试题失败" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  246. }
  247. /// <summary>
  248. /// 删除试题问卷(删除两表信息)
  249. /// </summary>
  250. /// <param name="id"></param>
  251. /// <returns></returns>
  252. public ActionResult DeletePagerInfo(int id = 0)
  253. {
  254. if (pagerInfoBLL.Delete(id))
  255. {
  256. pagerInfoItemsBLL.DeleteByPagerId(id);
  257. return Success("删除试题问卷成功" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  258. }
  259. else
  260. {
  261. return Error("删除试题问卷失败" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  262. }
  263. }
  264. #endregion
  265. #region 问卷设置 - 问卷信息
  266. public ActionResult GetPagerInfoQ(int pid)
  267. {
  268. var model = pagerInfoBLL.GetModel(pid);
  269. if (model != null)
  270. {
  271. var qlist = questionBLL.GetModelList(" F_DeleteFlag=0 and F_QuestionId in (select F_QuestionId from T_Ask_PagerItems where F_PagerId=" + pid + ") order by F_QuestionId ");
  272. var qilist = questionItemBLL.GetModelList(" F_QuestionId in (select F_QuestionId from T_Ask_PagerItems where F_PagerId=" + pid + ") order by F_ItemId ");
  273. var newmodel = new
  274. {
  275. F_Title = model.F_Title,
  276. F_StartText = model.F_StartText,
  277. F_EndText = model.F_EndText,
  278. F_Remark = model.F_Remark,
  279. F_Questions = qlist.Select(q =>
  280. {
  281. return new
  282. {
  283. quesid = q.F_QuestionId,
  284. questitle = q.F_Title,
  285. questype = q.F_Type,
  286. quescontent = q.F_Content,
  287. quesremark = q.F_Remark,
  288. quesitems = qilist.Where(qq => qq.F_QuestionId == q.F_QuestionId).Select(qi =>
  289. {
  290. return new
  291. {
  292. itemid = qi.F_ItemId,
  293. itemname = qi.F_ItemName,
  294. itemremark = qi.F_Remark,
  295. };
  296. })
  297. };
  298. })
  299. };
  300. return Success("获取问卷试题信息成功", newmodel);
  301. }
  302. return Error("获取问卷试题信息失败");
  303. }
  304. public ActionResult GetPagerInfoA(int pid)
  305. {
  306. var model = pagerInfoBLL.GetModel(pid);
  307. var qlist = questionBLL.GetModelList(" F_DeleteFlag=0 and F_QuestionId in (select F_QuestionId from T_Ask_PagerItems where F_PagerId=" + pid + ") order by F_QuestionId ");
  308. var qilist = questionItemBLL.GetModelList(" F_QuestionId in (select F_QuestionId from T_Ask_PagerItems where F_PagerId=" + pid + ") order by F_ItemId ");
  309. var newmodel = new
  310. {
  311. F_Title = model.F_Title,
  312. F_StartText = model.F_StartText,
  313. F_EndText = model.F_EndText,
  314. F_Remark = model.F_Remark,
  315. F_Questions = qlist.Select(q =>
  316. {
  317. return new
  318. {
  319. quesid = q.F_QuestionId,
  320. questitle = q.F_Title,
  321. questype = q.F_Type,
  322. quescontent = q.F_Content,
  323. quesremark = q.F_Remark,
  324. quesitems = qilist.Where(qq => qq.F_QuestionId == q.F_QuestionId).Select(qi =>
  325. {
  326. return new
  327. {
  328. itemid = qi.F_ItemId,
  329. itemname = qi.F_ItemName,
  330. itemremark = qi.F_Remark,
  331. };
  332. })
  333. };
  334. })
  335. };
  336. return Success("获取问卷试题信息成功", newmodel);
  337. }
  338. #endregion
  339. #region 试题管理 - 试题分类
  340. /// <summary>
  341. /// 试题管理 - 试题分类
  342. /// </summary>
  343. /// <param name="pagesize"></param>
  344. /// <param name="pageindex"></param>
  345. /// <returns></returns>
  346. public ActionResult GetQCategoryList(int pagesize = 10, int pageindex = 1)
  347. {
  348. //if (!Request.IsAuthenticated)
  349. // return NoToken("未知错误,请重新登录");
  350. var recordCount = 0;
  351. var dt = BLL.PagerBLL.GetListPager(
  352. "T_Ask_QuestionCategory",
  353. "F_CategoryId",
  354. "*",
  355. "",
  356. "ORDER BY F_CategoryId desc",
  357. pagesize,
  358. pageindex,
  359. true,
  360. out recordCount);
  361. var obj = new
  362. {
  363. rows = dt,
  364. total = recordCount
  365. };
  366. return Content(obj.ToJson());
  367. }
  368. public ActionResult GetQCategoryAlllist()
  369. {
  370. var alllist = qCategoryBLL.GetModelList(" 1=1 order by F_CategoryId desc");
  371. return Success("获取试题分类成功", alllist);
  372. }
  373. public ActionResult GetQCategoryModel(int id = 0)
  374. {
  375. //if (!Request.IsAuthenticated)
  376. // return NoToken("未知错误,请重新登录");
  377. var model = qCategoryBLL.GetModel(id);
  378. if (model == null)
  379. return Error("当前数据不存在");
  380. return Success("", model);
  381. }
  382. public ActionResult CreateOrUpdateQCategory(int id = 0, string name = "")
  383. {
  384. //if (!Request.IsAuthenticated)
  385. // return NoToken("未知错误,请重新登录");
  386. var model = new Model.T_Ask_QuestionCategory();
  387. if (string.IsNullOrWhiteSpace(name))
  388. return Error("请填写名称" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  389. if (id <= 0)
  390. {
  391. model.F_CategoryName = name;
  392. model.F_CreateOn = DateTime.Now;
  393. model.F_CreateBy = CurrentUser.UserData.F_UserId;
  394. model.F_DeleteFlag = 0;
  395. if (qCategoryBLL.Add(model) > 0)
  396. return Success("添加试题分类成功" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  397. return Error("添加试题分类失败" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  398. }
  399. model = qCategoryBLL.GetModel(id);
  400. model.F_CategoryName = name;
  401. if (qCategoryBLL.Update(model))
  402. return Success("修改试题分类成功" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  403. return Error("修改试题分类失败" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  404. }
  405. public ActionResult DeleteQCategory(int id = 0)
  406. {
  407. //if (!Request.IsAuthenticated)
  408. // return NoToken("未知错误,请重新登录");
  409. if (qCategoryBLL.Delete(id))
  410. return Success("删除试题分类成功" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  411. return Error("删除试题分类失败" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  412. }
  413. #endregion
  414. #region 试题管理 - 试题列表
  415. public ActionResult GetQuestionList(FilterQuestion filter)
  416. {
  417. //if (!Request.IsAuthenticated)
  418. // return NoToken("未知错误,请重新登录");
  419. StringBuilder sb = new StringBuilder();
  420. if (filter.CategoryId > 0)
  421. {
  422. sb.Append(" and F_CategoryId=" + filter.CategoryId);
  423. }
  424. if (filter.SelectType > 0)
  425. {
  426. sb.Append(" and F_Type=" + filter.SelectType);
  427. }
  428. if (!string.IsNullOrWhiteSpace(filter.Key))
  429. {
  430. sb.Append(" and (F_Title like '%" + filter.Key + "%' or F_Content like '%" + filter.Key + "%') ");
  431. }
  432. var recordCount = 0;
  433. var dt = BLL.PagerBLL.GetListPager(
  434. "vw_Ask_Question",
  435. "F_QuestionId",
  436. "*",
  437. " and F_DeleteFlag=0 " + sb.ToString(),
  438. "ORDER BY F_QuestionId desc",
  439. filter.PageSize,
  440. filter.PageIndex,
  441. true,
  442. out recordCount);
  443. var quesitemlist = questionItemBLL.GetModelList("");
  444. for (int i = 0; i < dt.Rows.Count; i++)
  445. {
  446. var items = "";
  447. string qid = dt.Rows[i]["F_QuestionId"].ToString();
  448. var quesitem = quesitemlist.Where(qi => qi.F_QuestionId == int.Parse(qid));
  449. if (quesitem.Count() > 0)
  450. {
  451. foreach (var item in quesitem)
  452. {
  453. items += ";" + item.F_ItemName;
  454. }
  455. }
  456. dt.Rows[i]["F_Content"] = items.Trim(';');
  457. }
  458. var obj = new
  459. {
  460. rows = dt,
  461. total = recordCount
  462. };
  463. return Content(obj.ToJson());
  464. }
  465. public ActionResult GetQuestionModel(int id = 0)
  466. {
  467. if (id <= 0)
  468. return Error("参数不正确");
  469. var model = questionBLL.GetModel(id);
  470. if (model == null)
  471. return Error("当前数据不存在");
  472. return Success("获取试题成功", model);
  473. }
  474. public ActionResult CreateOrUpdateQuestion(QuesttionInput input)
  475. {
  476. DataTable dt = new DataTable();
  477. var model = new Model.T_Ask_Question();
  478. if (string.IsNullOrWhiteSpace(input.F_Title))
  479. return Error("请填写试题标题" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  480. //20180519 zhengbingbing
  481. #region 此模块暂时无用
  482. ////1问答题 2单选题 3多选题
  483. //if (input.F_Type > 1)
  484. //{
  485. // //var questionItemList = questionItemBLL.DataTableToList(questionItemBLL.GetList($" F_QuestionId='{input.F_QuestionId}' ORDER BY F_Sort ").Tables[0]);
  486. // #region 获取内容F_Content,格式:A.满意;B.一般;C.不满意;
  487. // string[] arr1 = new string[] { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20" };
  488. // string[] arr2 = new string[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T" };
  489. // dt = new BLL.T_Ask_QuestionItems().GetList(" F_QuestionId=" + input.F_QuestionId + " ORDER BY F_Sort ").Tables[0];
  490. // for (int i = 0; i < dt.Rows.Count; i++)
  491. // {
  492. // string vsort = "";
  493. // if (input.F_SortModel == 1)
  494. // {
  495. // vsort = arr2[i];
  496. // }
  497. // else
  498. // {
  499. // vsort = arr1[i];
  500. // }
  501. // input.F_Content += vsort + "." + dt.Rows[i]["F_ItemName"].ToString().Trim() + ";";
  502. // }
  503. // model.F_SortModel = input.F_SortModel;
  504. // #endregion
  505. //}
  506. //else
  507. //{
  508. // model.F_SortModel = null;
  509. //}
  510. #endregion
  511. if (input.F_QuestionId <= 0)
  512. {
  513. //model.F_SortModel = input.F_SortModel;
  514. model.F_QuestionId = CurrentUser.UserData.F_UserId;
  515. model.F_CategoryId = input.F_CategoryId;
  516. model.F_Type = input.F_Type;
  517. model.F_Title = input.F_Title;
  518. model.F_Content = input.F_Content;
  519. model.F_Remark = input.F_Remark;
  520. model.F_CreateOn = DateTime.Now;
  521. model.F_CreateBy = CurrentUser.UserData.F_UserId;
  522. model.F_ModifyOn = DateTime.Now;
  523. model.F_ModifyBy = CurrentUser.UserData.F_UserId;
  524. model.F_DeleteFlag = 0;
  525. if (questionBLL.Add(model) > 0)
  526. return Success("添加试题成功" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  527. return Error("添加试题失败" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  528. }
  529. model = questionBLL.GetModel(input.F_QuestionId);
  530. //model.F_SortModel = input.F_SortModel;
  531. model.F_CategoryId = input.F_CategoryId;
  532. model.F_Title = input.F_Title;
  533. model.F_Type = input.F_Type;
  534. model.F_Content = input.F_Content;
  535. model.F_Remark = input.F_Remark;
  536. model.F_ModifyOn = DateTime.Now;
  537. model.F_ModifyBy = CurrentUser.UserData.F_UserId;
  538. if (questionBLL.Update(model))
  539. return Success("修改试题成功" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  540. return Error("修改试题失败" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  541. }
  542. /// <summary>
  543. /// 删除试题列表(删除两表信息)
  544. /// </summary>
  545. /// <param name="id"></param>
  546. /// <returns></returns>
  547. public ActionResult DeleteQuestion(int id = 0)
  548. {
  549. if (questionBLL.Delete(id))
  550. {
  551. questionItemBLL.DeleteByQuestionId(id); ;
  552. return Success("删除试题成功" + ",操作人:" + CurrentUser.UserData.F_UserCode); ;
  553. }
  554. else
  555. {
  556. return Error("删除试题失败!" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  557. }
  558. }
  559. #endregion
  560. #region 试题管理 - 试题列表 -- 问题答案管理
  561. public ActionResult GetQuestionItemList(int pagesize = 10, int pageindex = 1, int id = 0)
  562. {
  563. //if (!Request.IsAuthenticated)
  564. // return NoToken("未知错误,请重新登录");
  565. var sql = "";
  566. if (id > 0)
  567. {
  568. sql = " and F_QuestionId=" + id;
  569. }
  570. var recordCount = 0;
  571. var dt = BLL.PagerBLL.GetListPager(
  572. "T_Ask_QuestionItems",
  573. "F_ItemId",
  574. "*",
  575. " " + sql,
  576. "ORDER BY F_Sort ",
  577. pagesize,
  578. pageindex,
  579. true,
  580. out recordCount);
  581. var obj = new
  582. {
  583. rows = dt,
  584. total = recordCount
  585. };
  586. return Content(obj.ToJson());
  587. }
  588. public ActionResult GetQuestionItemModel(int id = 0)
  589. {
  590. var model = questionItemBLL.GetModel(id);
  591. if (model == null)
  592. return Error("当前数据不存在");
  593. return Success("", model);
  594. }
  595. public ActionResult CreateOrUpdateQuestionItem(QuesttionItemInput input)
  596. {
  597. var model = new Model.T_Ask_QuestionItems();
  598. if (input.Id <= 0)
  599. {
  600. model.F_ItemName = input.Name;
  601. model.F_QuestionId = input.QuestionId;
  602. model.F_Remark = input.Remark;
  603. //model.F_IsAnswer = input.IsAnswer;
  604. //model.F_Sort = input.Sort;
  605. //model.F_SortModel = input.SortMode;
  606. if (questionItemBLL.Add(model) > 0)
  607. return Success("添加试题选项成功" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  608. return Error("添加试题选项失败" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  609. }
  610. model = questionItemBLL.GetModel(input.Id);
  611. model.F_ItemName = input.Name;
  612. model.F_QuestionId = input.QuestionId;
  613. model.F_Remark = input.Remark;
  614. //model.F_IsAnswer = input.IsAnswer;
  615. //model.F_Sort = input.Sort;
  616. //model.F_SortModel = input.SortMode;
  617. if (questionItemBLL.Update(model))
  618. return Success("修改试题选项成功" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  619. return Error("修改试题选项失败" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  620. }
  621. public ActionResult DeleteQuestionItme(int id = 0)
  622. {
  623. if (questionItemBLL.Delete(id))
  624. return Success("删除试题选项成功" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  625. return Error("删除试题选项失败" + ",操作人:" + CurrentUser.UserData.F_UserCode);
  626. }
  627. #endregion
  628. #region 问卷调查报告数据简单查询
  629. public ActionResult GetReport()
  630. {
  631. ActionResult res = NoToken("未知错误,请重新登录");
  632. string TaskName = HttpUtility.UrlDecode(RequestString.GetQueryString("taskname"));
  633. DataTable dtnew = new DataTable();
  634. dtnew.Columns.Add("wenti");
  635. dtnew.Columns.Add("xuanxiang");
  636. dtnew.Columns.Add("shuliang");
  637. dtnew.Columns.Add("bili");
  638. //根据任务名获取任务ID
  639. string TaskID = "";
  640. var objo = DbHelperSQL.GetSingle("select F_TaskID from T_Call_OutTask where F_TaskName='" + TaskName + "'");
  641. if (objo != null)
  642. {
  643. TaskID = objo.ToString();
  644. }
  645. //List<Model.T_Ask_Question> qrlist = new List<Model.T_Ask_Question>();
  646. DataSet ds = DbHelperSQL.Query("SELECT * FROM T_Ask_Question WHERE F_QuestionId IN (select ta.F_QuestionId from T_Ask_PagerItems ta where ta.F_PagerId=(select F_PagerID from T_Call_OutTask where F_TaskID='" + TaskID + "') ) and F_Type!=1");
  647. if (ds != null && ds.Tables.Count > 0)
  648. {
  649. DataTable dt = ds.Tables[0];
  650. for (int i = 0; i < dt.Rows.Count; i++)
  651. {
  652. string content = dt.Rows[i]["F_Content"].ToString();
  653. string question = dt.Rows[i]["F_Title"].ToString();
  654. string[] item = content.Split(';');
  655. //根据问题ID获取当前问题各选项答案总数
  656. int totalnum = 0;
  657. object obj0 = DbHelperSQL.GetSingle("select COUNT(1) from T_Call_OutAnswers WHERE F_TaskID='" + TaskID + "' and F_QID='" + dt.Rows[i]["F_QuestionId"].ToString() + "' ");
  658. if (obj0 != null && obj0.ToString() != "")
  659. {
  660. totalnum = Convert.ToInt32(obj0);
  661. }
  662. //根据问题ID查询问题项
  663. DataSet dsi = DbHelperSQL.Query("SELECT* FROM T_Ask_QuestionItems where F_QuestionId = '" + dt.Rows[i]["F_QuestionId"].ToString() + "'");
  664. if (dsi != null && dsi.Tables.Count > 0)
  665. {
  666. for (int j = 0; j < dsi.Tables[0].Rows.Count; j++)
  667. {
  668. string itemname = dsi.Tables[0].Rows[j]["F_ItemName"].ToString();
  669. DataRow dr = dtnew.NewRow();
  670. dr["wenti"] = question;
  671. dr["xuanxiang"] = itemname;
  672. //DataSet dss = DbHelperSQL.Query("select COUNT(1) from T_Call_OutAnswers WHERE F_TaskID='"+ TaskID + "' and F_Answer='"+ item[j].ToString() + "' group by F_QID");
  673. object obj = DbHelperSQL.GetSingle("select COUNT(1) from T_Call_OutAnswers WHERE F_TaskID='" + TaskID + "' and F_Answer='" + itemname + "' and F_QID='" + dt.Rows[i]["F_QuestionId"].ToString() + "' ");
  674. if (obj != null && obj.ToString() != "")
  675. {
  676. int num = Convert.ToInt32(obj);
  677. dr["shuliang"] = num;
  678. if (totalnum != 0)
  679. {
  680. if (num > 0)
  681. {
  682. dr["bili"] = (num / totalnum * 100).ToString() + "%";
  683. }
  684. else
  685. {
  686. dr["bili"] = "0";
  687. }
  688. }
  689. else
  690. { dr["bili"] = "0"; }
  691. }
  692. else
  693. {
  694. dr["shuliang"] = "0";
  695. dr["bili"] = "0";
  696. }
  697. dtnew.Rows.Add(dr);
  698. }
  699. }
  700. //for (int j = 0; j < item.Length; j++)
  701. //{
  702. // if (item[j].Length > 0)
  703. // {
  704. // DataRow dr = dtnew.NewRow();
  705. // dr["wenti"] = question;
  706. // dr["xuanxiang"] = item[j].ToString();
  707. // //DataSet dss = DbHelperSQL.Query("select COUNT(1) from T_Call_OutAnswers WHERE F_TaskID='"+ TaskID + "' and F_Answer='"+ item[j].ToString() + "' group by F_QID");
  708. // object obj = DbHelperSQL.GetSingle("select COUNT(1) from T_Call_OutAnswers WHERE F_TaskID='" + TaskID + "' and F_Answer='" + item[j].ToString() + "' group by F_QID");
  709. // if (obj != null && obj.ToString() != "")
  710. // {
  711. // int num = Convert.ToInt32(obj);
  712. // dr["shuliang"] = num;
  713. // if (totalnum != 0)
  714. // {
  715. // dr["bili"] = (num / totalnum * 100).ToString() + "%";
  716. // }
  717. // }
  718. // dtnew.Rows.Add(dr);
  719. // }
  720. //}
  721. }
  722. }
  723. res = Success("获取调查报表数据成功", dtnew);
  724. return res;
  725. }
  726. #endregion
  727. #region 问卷调查报表数据查询
  728. List<string> arlist = new List<string>();//表头问题分项
  729. List<string> checklist = new List<string>();//查询条件问题分项
  730. DataTable dtNews = new DataTable();
  731. DataTable dtCol = new DataTable();
  732. int columnsnum = 1;//左边留一空列,用于显示查询条件答案
  733. int questioncount = 0;
  734. //获取表头
  735. public ActionResult GetColumnList()
  736. {
  737. ActionResult res = NoToken("未知错误,请重新登录");
  738. string TaskName = HttpUtility.UrlDecode(RequestString.GetQueryString("taskname"));
  739. string Question = HttpUtility.UrlDecode(RequestString.GetQueryString("question"));
  740. //TaskName = "白居易";
  741. string TaskID = "";
  742. var obj = DbHelperSQL.GetSingle("select F_TaskID from T_Call_OutTask where F_TaskName='" + TaskName + "'");
  743. if (obj != null)
  744. {
  745. TaskID = obj.ToString();
  746. }
  747. columnsnum = 1;
  748. arlist.Clear();
  749. checklist.Clear();
  750. //dtCol.Rows.Clear();
  751. //dtCol.Columns.Clear();
  752. dtCol.Columns.Add("wenti", Type.GetType("System.String"));
  753. //dtCol.Columns.Add(new DataColumn("wenti", Type.GetType("System.String")));
  754. dtCol.Columns.Add("fenxiangshu", Type.GetType("System.Int32"));
  755. dtCol.Columns.Add("wentiid", Type.GetType("System.String"));
  756. DataSet ds = DbHelperSQL.Query("SELECT * FROM T_Ask_Question WHERE F_QuestionId IN (select ta.F_QuestionId from T_Ask_PagerItems ta where ta.F_PagerId=(select F_PagerID from T_Call_OutTask where F_TaskID='" + TaskID + "') ) and F_Type!=1");
  757. if (ds != null && ds.Tables.Count > 0)
  758. {
  759. DataTable dt = ds.Tables[0];
  760. questioncount = dt.Rows.Count;
  761. for (int i = 0; i < dt.Rows.Count; i++)
  762. {
  763. string content = dt.Rows[i]["F_Content"].ToString();//问题选项
  764. string questions = dt.Rows[i]["F_Title"].ToString();//问题
  765. string questionid = dt.Rows[i]["F_QuestionId"].ToString();//问题
  766. string[] rowheader = content.Split(';');
  767. if (questions != Question)
  768. {
  769. DataRow dr = dtCol.NewRow();
  770. dr["wenti"] = questions;
  771. //根据问题ID查询问题项
  772. DataSet dsi = DbHelperSQL.Query("SELECT* FROM T_Ask_QuestionItems where F_QuestionId = (select F_QuestionId from T_Ask_Question where F_Title='" + questions + "')");
  773. if (dsi != null && dsi.Tables.Count > 0)
  774. {
  775. for (int j = 0; j < dsi.Tables[0].Rows.Count; j++)
  776. {
  777. arlist.Add(dsi.Tables[0].Rows[j]["F_ItemName"].ToString());
  778. columnsnum++;
  779. }
  780. dr["fenxiangshu"] = dsi.Tables[0].Rows.Count;
  781. }
  782. //dr["fenxiangshu"] = dt.Rows.Count;
  783. dr["wentiid"] = questionid;
  784. dtCol.Rows.Add(dr);
  785. // for (int j = 0; j < rowheader.Length; j++)
  786. //{
  787. // if (rowheader[j].Length > 0)
  788. // {
  789. // arlist.Add(rowheader[j]);
  790. // columnsnum++;
  791. // }
  792. //}
  793. }
  794. else
  795. {
  796. //根据问题ID查询问题项
  797. DataSet dsi = DbHelperSQL.Query("SELECT* FROM T_Ask_QuestionItems where F_QuestionId = (select F_QuestionId from T_Ask_Question where F_Title='" + questions + "')");
  798. if (dsi != null && dsi.Tables.Count > 0)
  799. {
  800. for (int j = 0; j < dsi.Tables[0].Rows.Count; j++)
  801. {
  802. checklist.Add(dsi.Tables[0].Rows[j]["F_ItemName"].ToString());
  803. }
  804. }
  805. //for (int j = 0; j < rowheader.Length; j++)
  806. //{
  807. // if (rowheader[j].Length > 0)
  808. // {
  809. // checklist.Add(rowheader[j]);
  810. // }
  811. //}
  812. }
  813. }
  814. }
  815. res = Success("获取调查问卷表头成功", dtCol);
  816. return res;
  817. }
  818. //获取数据
  819. public ActionResult GetDataList()
  820. {
  821. ActionResult res = NoToken("未知错误,请重新登录");
  822. string TaskName = HttpUtility.UrlDecode(RequestString.GetQueryString("taskname"));
  823. string Question = HttpUtility.UrlDecode(RequestString.GetQueryString("question"));
  824. int index1 = 0;
  825. int index2 = 0;
  826. GetColumnList();
  827. int rowcount = checklist.Count + 1;//行数
  828. string[,] newdata = new string[rowcount, columnsnum];
  829. string TaskID = "";
  830. var obj0 = DbHelperSQL.GetSingle("select F_TaskID from T_Call_OutTask where F_TaskName='" + TaskName + "'");
  831. if (obj0 != null)
  832. {
  833. TaskID = obj0.ToString();
  834. }
  835. string QID = "";
  836. var obj1 = DbHelperSQL.GetSingle("select F_QuestionId from T_Ask_Question where F_Title='" + Question + "' and F_Type!=1");
  837. if (obj1 != null)
  838. {
  839. QID = obj1.ToString();
  840. }
  841. //for (int i = 0; i < columnsnum; i++)
  842. //{
  843. // dtNews.Columns.Add("Column" + (i + 1).ToString(), Type.GetType("System.String"));
  844. //}
  845. //添加问题选项
  846. //DataRow dr = dtNews.NewRow();
  847. //dr["Column1"] = "";
  848. newdata[index1, index2] = "";
  849. index2++;
  850. for (int j = 0; j < arlist.Count; j++)
  851. {
  852. //dr["Column" + (j + 2).ToString()] = arlist[j];
  853. newdata[index1, index2] = arlist[j];
  854. index2++;
  855. }
  856. //dtNews.Rows.Add(dr);
  857. index1++;//第一行添加结束
  858. //获取百分比
  859. List<string> rowlist = new List<string>();
  860. foreach (string items in checklist)
  861. {
  862. //rowlist.Clear();
  863. //rowlist.Add(items);
  864. int colnum = 2;
  865. index2 = 0;
  866. DataRow drr = dtNews.NewRow();
  867. //drr["Column1"] = items;
  868. newdata[index1, index2] = items;
  869. int n = 0;
  870. int len = 0;
  871. for (int m = 0; m < dtCol.Rows.Count; m++)
  872. {
  873. //根据问题查询回答该问题的总次数
  874. int totalnum = 0;
  875. int num = 0;
  876. object obj = DbHelperSQL.GetSingle("SELECT COUNT(1) FROM T_Call_OutAnswers WHERE F_CusTelID IN (select F_CusTelID from T_Call_OutAnswers where F_TaskID='" + TaskID + "' AND F_QID='" + QID + "' AND F_Answer='" + items + "') AND F_QID='" + dtCol.Rows[m]["wentiid"].ToString() + "'");//
  877. if (obj != null && obj.ToString() != "")
  878. {
  879. totalnum = Convert.ToInt32(obj);
  880. }
  881. int fenxiang = Convert.ToInt32(dtCol.Rows[m]["fenxiangshu"].ToString());
  882. len = len + fenxiang;
  883. while (n < len)
  884. {
  885. index2++;
  886. //同一问题下的分项
  887. object obj2 = DbHelperSQL.GetSingle("SELECT COUNT(1) FROM T_Call_OutAnswers WHERE F_CusTelID IN (select F_CusTelID from T_Call_OutAnswers where F_TaskID='" + TaskID + "' AND F_QID='" + QID + "' AND F_Answer='" + items + "') AND F_QID='" + dtCol.Rows[m]["wentiid"].ToString() + "' and F_Answer='" + newdata[0, n + 1] + "'");//dtNews.Rows[0]["Column" + colnum.ToString()].ToString()
  888. if (obj2 != null && obj2.ToString() != "")
  889. {
  890. num = Convert.ToInt32(obj2);
  891. }
  892. if (totalnum > 0)
  893. {
  894. //drr["Column" + colnum.ToString()] = (num / totalnum * 100).ToString() + "%";
  895. if (num > 0)
  896. {
  897. newdata[index1, index2] = (num / totalnum * 100).ToString() + "%";
  898. }
  899. else
  900. { newdata[index1, index2] = "0"; }
  901. }
  902. else
  903. { newdata[index1, index2] = "0"; }
  904. n++;
  905. }
  906. colnum++;
  907. }
  908. index1++;
  909. //dtNews.Rows.Add(drr);
  910. }
  911. res = Success("获取调查问卷报表数据成功", newdata);
  912. return res;
  913. }
  914. #endregion
  915. #region 查询条件
  916. /// <summary>
  917. /// 获取任务名列表
  918. /// </summary>
  919. /// <returns></returns>
  920. public ActionResult GetTaskList()
  921. {
  922. if (Request.IsAuthenticated)
  923. {
  924. DataTable dt = new DataTable();
  925. dt = new BLL.T_Call_OutTask().GetList(" F_DeleteFlag=0 ").Tables[0];
  926. return Success("加载成功", dt);
  927. }
  928. return NoToken("未知错误,请重新登录");
  929. }
  930. /// <summary>
  931. /// 获取问题列表
  932. /// </summary>
  933. /// <returns></returns>
  934. public ActionResult GetQList()
  935. {
  936. if (Request.IsAuthenticated)
  937. {
  938. DataTable dt = new DataTable();
  939. dt = new BLL.T_Ask_Question().GetList(" F_Type!=1 and F_DeleteFlag=0").Tables[0];
  940. return Success("加载成功", dt);
  941. }
  942. return NoToken("未知错误,请重新登录");
  943. }
  944. #endregion
  945. //导出Excel
  946. #region 导出Excel
  947. #region 问卷调查报告数据简单查询导出Excel
  948. public ActionResult GetReportExpt()
  949. {
  950. ActionResult res = NoToken("未知错误,请重新登录");
  951. string TaskName = HttpUtility.UrlDecode(RequestString.GetQueryString("taskname"));
  952. DataTable dtnew = new DataTable();
  953. dtnew.Columns.Add("wenti");
  954. dtnew.Columns.Add("xuanxiang");
  955. dtnew.Columns.Add("shuliang");
  956. dtnew.Columns.Add("bili");
  957. //根据任务名获取任务ID
  958. string TaskID = "";
  959. var objo = DbHelperSQL.GetSingle("select F_TaskID from T_Call_OutTask where F_TaskName='" + TaskName + "'");
  960. if (objo != null)
  961. {
  962. TaskID = objo.ToString();
  963. }
  964. //List<Model.T_Ask_Question> qrlist = new List<Model.T_Ask_Question>();
  965. DataSet ds = DbHelperSQL.Query("SELECT * FROM T_Ask_Question WHERE F_QuestionId IN (select ta.F_QuestionId from T_Ask_PagerItems ta where ta.F_PagerId=(select F_PagerID from T_Call_OutTask where F_TaskID='" + TaskID + "') ) and F_Type!=1");
  966. if (ds != null && ds.Tables.Count > 0)
  967. {
  968. DataTable dt = ds.Tables[0];
  969. for (int i = 0; i < dt.Rows.Count; i++)
  970. {
  971. string content = dt.Rows[i]["F_Content"].ToString();
  972. string question = dt.Rows[i]["F_Title"].ToString();
  973. string[] item = content.Split(';');
  974. //根据问题ID获取当前问题各选项答案总数
  975. int totalnum = 0;
  976. object obj0 = DbHelperSQL.GetSingle("select COUNT(1) from T_Call_OutAnswers WHERE F_TaskID='" + TaskID + "' and F_QID='" + dt.Rows[i]["F_QuestionId"].ToString() + "' ");
  977. if (obj0 != null && obj0.ToString() != "")
  978. {
  979. totalnum = Convert.ToInt32(obj0);
  980. }
  981. //根据问题ID查询问题项
  982. DataSet dsi = DbHelperSQL.Query("SELECT* FROM T_Ask_QuestionItems where F_QuestionId = '" + dt.Rows[i]["F_QuestionId"].ToString() + "'");
  983. if (dsi != null && dsi.Tables.Count > 0)
  984. {
  985. for (int j = 0; j < dsi.Tables[0].Rows.Count; j++)
  986. {
  987. string itemname = dsi.Tables[0].Rows[j]["F_ItemName"].ToString();
  988. DataRow dr = dtnew.NewRow();
  989. dr["wenti"] = question;
  990. dr["xuanxiang"] = itemname;
  991. //DataSet dss = DbHelperSQL.Query("select COUNT(1) from T_Call_OutAnswers WHERE F_TaskID='"+ TaskID + "' and F_Answer='"+ item[j].ToString() + "' group by F_QID");
  992. object obj = DbHelperSQL.GetSingle("select COUNT(1) from T_Call_OutAnswers WHERE F_TaskID='" + TaskID + "' and F_Answer='" + itemname + "' and F_QID='" + dt.Rows[i]["F_QuestionId"].ToString() + "' ");
  993. if (obj != null && obj.ToString() != "")
  994. {
  995. int num = Convert.ToInt32(obj);
  996. dr["shuliang"] = num;
  997. if (totalnum != 0)
  998. {
  999. if (num > 0)
  1000. {
  1001. dr["bili"] = (num / totalnum * 100).ToString() + "%";
  1002. }
  1003. else
  1004. {
  1005. dr["bili"] = "0";
  1006. }
  1007. }
  1008. else
  1009. { dr["bili"] = "0"; }
  1010. }
  1011. else
  1012. {
  1013. dr["shuliang"] = "0";
  1014. dr["bili"] = "0";
  1015. }
  1016. dtnew.Rows.Add(dr);
  1017. }
  1018. }
  1019. }
  1020. }
  1021. //导出dtnew
  1022. NPOIHelper npoi = new NPOIHelper();
  1023. string[] col = { "问题", "选项", "数量", "比例" };
  1024. if (npoi.ExportToExcel("问卷调查报告统计数据", dtnew, col) == "")
  1025. {
  1026. return Success("导出成功");
  1027. }
  1028. else
  1029. {
  1030. return Error("导出失败");
  1031. }
  1032. }
  1033. #endregion
  1034. #region 导出按任务和问题查询出的数据
  1035. public ActionResult GetDataListExpt()
  1036. {
  1037. ActionResult res = NoToken("未知错误,请重新登录");
  1038. string TaskName = HttpUtility.UrlDecode(RequestString.GetQueryString("taskname"));
  1039. string Question = HttpUtility.UrlDecode(RequestString.GetQueryString("question"));
  1040. GetColumnList();
  1041. string TaskID = "";
  1042. var obj0 = DbHelperSQL.GetSingle("select F_TaskID from T_Call_OutTask where F_TaskName='" + TaskName + "'");
  1043. if (obj0 != null)
  1044. {
  1045. TaskID = obj0.ToString();
  1046. }
  1047. string QID = "";
  1048. var obj1 = DbHelperSQL.GetSingle("select F_QuestionId from T_Ask_Question where F_Title='" + Question + "' and F_Type!=1");
  1049. if (obj1 != null)
  1050. {
  1051. QID = obj1.ToString();
  1052. }
  1053. for (int i = 0; i < columnsnum; i++)
  1054. {
  1055. dtNews.Columns.Add("Column" + (i + 1).ToString(), Type.GetType("System.String"));
  1056. }
  1057. //添加第一行
  1058. DataRow dr0 = dtNews.NewRow();
  1059. dr0["Column1"] = Question;
  1060. int cindex = 2;
  1061. for (int i = 0; i < dtCol.Rows.Count; i++)
  1062. {
  1063. int itemcount = Convert.ToInt32(dtCol.Rows[i]["fenxiangshu"]);
  1064. for (int j = 0; j < itemcount; j++)
  1065. {
  1066. dr0["Column" + cindex] = dtCol.Rows[i]["wenti"];
  1067. cindex++;
  1068. }
  1069. }
  1070. dtNews.Rows.Add(dr0);
  1071. //添加问题选项
  1072. DataRow dr = dtNews.NewRow();
  1073. dr["Column1"] = "";
  1074. for (int j = 0; j < arlist.Count; j++)
  1075. {
  1076. dr["Column" + (j + 2).ToString()] = arlist[j];
  1077. }
  1078. dtNews.Rows.Add(dr);
  1079. //获取百分比
  1080. List<string> rowlist = new List<string>();
  1081. foreach (string items in checklist)
  1082. {
  1083. //rowlist.Clear();
  1084. //rowlist.Add(items);
  1085. int colnum = 2;
  1086. int n = 0;
  1087. int len = 0;
  1088. DataRow drr = dtNews.NewRow();
  1089. drr["Column1"] = items;
  1090. for (int m = 0; m < dtCol.Rows.Count; m++)
  1091. {
  1092. //根据问题查询回答该问题的总次数
  1093. int totalnum = 0;
  1094. int num = 0;
  1095. object obj = DbHelperSQL.GetSingle("SELECT COUNT(1) FROM T_Call_OutAnswers WHERE F_CusTelID IN (select F_CusTelID from T_Call_OutAnswers where F_TaskID='" + TaskID + "' AND F_QID='" + QID + "' AND F_Answer='" + items + "') AND F_QID='" + dtCol.Rows[m]["wentiid"].ToString() + "'");//
  1096. if (obj != null && obj.ToString() != "")
  1097. {
  1098. totalnum = Convert.ToInt32(obj);
  1099. }
  1100. #region
  1101. int fenxiang = Convert.ToInt32(dtCol.Rows[m]["fenxiangshu"].ToString());
  1102. len = len + fenxiang;
  1103. while (n < len)
  1104. {
  1105. //同一问题下的分项
  1106. object obj2 = DbHelperSQL.GetSingle("SELECT COUNT(1) FROM T_Call_OutAnswers WHERE F_CusTelID IN (select F_CusTelID from T_Call_OutAnswers where F_TaskID='" + TaskID + "' AND F_QID='" + QID + "' AND F_Answer='" + items + "') AND F_QID='" + dtCol.Rows[m]["wentiid"].ToString() + "' and F_Answer='" + dtNews.Rows[1]["Column" + colnum.ToString()].ToString() + "'");
  1107. if (obj2 != null && obj2.ToString() != "")
  1108. {
  1109. num = Convert.ToInt32(obj2);
  1110. }
  1111. if (totalnum > 0)
  1112. {
  1113. //drr["Column" + colnum.ToString()] = (num / totalnum * 100).ToString() + "%";
  1114. if (num > 0)
  1115. {
  1116. drr["Column" + colnum.ToString()] = (num / totalnum * 100).ToString() + "%";
  1117. }
  1118. else
  1119. { drr["Column" + colnum.ToString()] = "0"; }
  1120. }
  1121. else
  1122. { drr["Column" + colnum.ToString()] = "0"; }
  1123. n++;
  1124. colnum++;
  1125. }
  1126. #endregion
  1127. #region 无用
  1128. //同一问题下的分项
  1129. /*object obj2 = DbHelperSQL.GetSingle("SELECT COUNT(1) FROM T_Call_OutAnswers WHERE F_CusTelID IN (select F_CusTelID from T_Call_OutAnswers where F_TaskID='" + TaskID + "' AND F_QID='" + QID + "' AND F_Answer='" + items + "') AND F_QID='" + dtCol.Rows[m]["wentiid"].ToString() + "' and F_Answer='" + dtNews.Rows[1]["Column" + colnum.ToString()].ToString() + "'");//
  1130. if (obj2 != null && obj2.ToString() != "")
  1131. {
  1132. num = Convert.ToInt32(obj2);
  1133. }
  1134. if (totalnum > 0)
  1135. {
  1136. if (num > 0)
  1137. {
  1138. drr["Column" + colnum.ToString()] = (num / totalnum * 100).ToString() + "%";
  1139. }
  1140. else
  1141. { drr["Column" + colnum.ToString()] = "0"; }
  1142. }*/
  1143. #endregion
  1144. }
  1145. dtNews.Rows.Add(drr);
  1146. }
  1147. //res = Success("获取调查问卷报表数据成功", dtNews);
  1148. //return res;
  1149. //导出dtnew
  1150. NPOIHelper npoi = new NPOIHelper();
  1151. if (npoi.ExportToExcel2("问卷调查报告统计数据", dtNews) == "")
  1152. {
  1153. return Success("导出成功");
  1154. }
  1155. else
  1156. {
  1157. return Error("导出失败");
  1158. }
  1159. }
  1160. #endregion
  1161. #endregion
  1162. //2017-11-14
  1163. #region 数据查询--获取排名
  1164. public ActionResult GetRank()
  1165. {
  1166. ActionResult res = NoToken("未知错误,请重新登录");
  1167. string startdate = HttpUtility.UrlDecode(RequestString.GetQueryString("startdate")) + " 00:00:00";
  1168. string enddate = HttpUtility.UrlDecode(RequestString.GetQueryString("enddate")) + " 23:59:59";
  1169. //startdate = "2017-11-12 00:00:00";
  1170. //enddate = "2017-11-14 23:59:59";
  1171. if (HttpUtility.UrlDecode(RequestString.GetQueryString("startdate")) == null || HttpUtility.UrlDecode(RequestString.GetQueryString("startdate")) == "")
  1172. {
  1173. startdate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  1174. //enddate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1175. }
  1176. if (HttpUtility.UrlDecode(RequestString.GetQueryString("enddate")) == null || HttpUtility.UrlDecode(RequestString.GetQueryString("enddate")) == "")
  1177. {
  1178. //startdate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  1179. enddate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1180. }
  1181. DataTable dtnew = new DataTable();
  1182. dtnew.Columns.Add("xiangzhen", Type.GetType("System.String"));
  1183. dtnew.Columns.Add("zongshu", Type.GetType("System.Int32"));
  1184. dtnew.Columns.Add("buanquan", Type.GetType("System.Int32"));
  1185. dtnew.Columns.Add("zhishu", Type.GetType("System.Decimal"));
  1186. int leiji = 0;
  1187. int buanquanleiji = 0;
  1188. //List<Model.T_Ask_Question> qrlist = new List<Model.T_Ask_Question>();
  1189. //DataSet ds = DbHelperSQL.Query("SELECT * FROM T_Ask_QuestionItems WHERE F_ItemId IN (SELECT F_QIID FROM T_Call_OutAnswers WHERE F_CusTelID IN (select F_CusTelID from T_Call_OutAnswers where F_OptOn between '"+startdate+"' and '"+enddate +"' and F_QID=102 ) and F_QID=101 group by F_QIID)");//and (F_QIID=101 OR F_QIID=102)
  1190. DataSet ds = DbHelperSQL.Query("SELECT * FROM T_Ask_QuestionItems where F_QuestionId='101'");// WHERE F_ItemId IN (SELECT F_QIID FROM T_Call_OutAnswers WHERE F_CusTelID IN (select F_CusTelID from T_Call_OutAnswers where F_OptOn between '" + startdate + "' and '" + enddate + "' and F_QID=102 ) and F_QID=101 group by F_QIID)");
  1191. if (ds != null && ds.Tables.Count > 0)
  1192. {
  1193. DataTable dt = ds.Tables[0];
  1194. for (int i = 0; i < dt.Rows.Count; i++)
  1195. {
  1196. DataRow dr = dtnew.NewRow();
  1197. string content = dt.Rows[i]["F_ItemName"].ToString();
  1198. string ItemID = dt.Rows[i]["F_ItemID"].ToString();
  1199. dr["xiangzhen"] = content;
  1200. //根据乡镇获取不安全数
  1201. int unsafenum = 0;
  1202. object obj0 = DbHelperSQL.GetSingle("SELECT COUNT(1) as buanquanshu FROM T_Call_OutAnswers WHERE F_CusTelID IN (select F_CusTelID from T_Call_OutAnswers where F_OptOn between '" + startdate + "' and '" + enddate + "' and F_QID=102 and (F_QIID=101 OR F_QIID=102)) and F_QID=101 and F_QIID=" + ItemID);
  1203. if (obj0 != null && obj0.ToString() != "")
  1204. {
  1205. unsafenum = Convert.ToInt32(obj0);
  1206. }
  1207. buanquanleiji += unsafenum;
  1208. dr["buanquan"] = unsafenum;
  1209. //根据乡镇获取总数
  1210. int totalnum = 0;
  1211. object obj1 = DbHelperSQL.GetSingle("SELECT COUNT(*) from T_Call_OutAnswers where F_OptOn between '" + startdate + "' and '" + enddate + "' and F_QID=101 and F_QIID=" + ItemID + "");
  1212. if (obj1 != null && obj1.ToString() != "")
  1213. {
  1214. totalnum = Convert.ToInt32(obj1);
  1215. }
  1216. leiji += totalnum;
  1217. dr["zongshu"] = totalnum;
  1218. //计算比例
  1219. if (totalnum > 0)
  1220. {
  1221. decimal per = Math.Round(Convert.ToDecimal(Convert.ToDecimal(totalnum - unsafenum) / totalnum * 100), 1);
  1222. dr["zhishu"] = per;
  1223. }
  1224. else
  1225. { dr["zhishu"] = 0; }
  1226. dtnew.Rows.Add(dr);
  1227. }
  1228. }
  1229. dtnew.DefaultView.Sort = "zhishu DESC";
  1230. DataTable dtTemp = dtnew.DefaultView.ToTable();
  1231. //计算总计
  1232. DataRow dr0 = dtTemp.NewRow();
  1233. dr0["xiangzhen"] = "总计";
  1234. dr0["zongshu"] = leiji;
  1235. dr0["buanquan"] = buanquanleiji;
  1236. if (leiji > 0)
  1237. {
  1238. decimal per = Math.Round(Convert.ToDecimal(Convert.ToDecimal(leiji - buanquanleiji) / leiji * 100), 1);
  1239. dr0["zhishu"] = per;
  1240. }
  1241. else
  1242. { dr0["zhishu"] = 0; }
  1243. dtTemp.Rows.Add(dr0);
  1244. res = Success("获取乡镇报表数据成功", dtTemp);
  1245. return res;
  1246. }
  1247. #endregion
  1248. #region 数据查询--获取不安全详细信息
  1249. public ActionResult GetUnsafeInfo()
  1250. {
  1251. ActionResult res = NoToken("未知错误,请重新登录");
  1252. string startdate = HttpUtility.UrlDecode(RequestString.GetQueryString("startdate")) + " 00:00:00";
  1253. string enddate = HttpUtility.UrlDecode(RequestString.GetQueryString("enddate")) + " 23:59:59";
  1254. if (HttpUtility.UrlDecode(RequestString.GetQueryString("startdate")) == null || HttpUtility.UrlDecode(RequestString.GetQueryString("startdate")) == "")
  1255. {
  1256. startdate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  1257. //enddate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1258. }
  1259. if (HttpUtility.UrlDecode(RequestString.GetQueryString("enddate")) == null || HttpUtility.UrlDecode(RequestString.GetQueryString("enddate")) == "")
  1260. {
  1261. //startdate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  1262. enddate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1263. }
  1264. //startdate = "2017-11-12 00:00:00";
  1265. //enddate = "2017-11-14 23:59:59";
  1266. DataTable dtnew = new DataTable();
  1267. dtnew.Columns.Add("xiangzhen", Type.GetType("System.String"));
  1268. dtnew.Columns.Add("dianhua", Type.GetType("System.String"));
  1269. dtnew.Columns.Add("zhiye", Type.GetType("System.String"));
  1270. dtnew.Columns.Add("yuanyin", Type.GetType("System.String"));
  1271. //List<Model.T_Ask_Question> qrlist = new List<Model.T_Ask_Question>();
  1272. //DataSet ds = DbHelperSQL.Query("SELECT * FROM T_Ask_QuestionItems WHERE F_ItemId IN (SELECT F_QIID FROM T_Call_OutAnswers WHERE F_CusTelID IN (select F_CusTelID from T_Call_OutAnswers where F_OptOn between '" + startdate + "' and '" + enddate + "' and F_QID=102 and (F_QIID=101 OR F_QIID=102)) and F_QID=101 group by F_QIID)");
  1273. DataSet ds = DbHelperSQL.Query("select F_CusTelID,F_TaskID from T_Call_OutAnswers where F_OptOn between '" + startdate + "' and '" + enddate + "' and F_QID=102 and (F_QIID=101 OR F_QIID=102)");
  1274. if (ds != null && ds.Tables.Count > 0)
  1275. {
  1276. DataTable dt = ds.Tables[0];
  1277. for (int i = 0; i < dt.Rows.Count; i++)
  1278. {
  1279. DataRow dr = dtnew.NewRow();
  1280. string taskid = dt.Rows[i]["F_TaskID"].ToString();
  1281. string custelid = dt.Rows[i]["F_CusTelID"].ToString();
  1282. //获取乡镇
  1283. string xiangzhen = "";
  1284. object obj0 = DbHelperSQL.GetSingle("SELECT F_Answer FROM T_Call_OutAnswers WHERE F_CusTelID ='" + custelid + "' and F_TaskID='" + taskid + "' and F_QID=101");
  1285. if (obj0 != null)
  1286. {
  1287. xiangzhen = obj0.ToString();
  1288. }
  1289. dr["xiangzhen"] = xiangzhen;
  1290. //获取电话
  1291. string dianhua = "";
  1292. object obj2 = DbHelperSQL.GetSingle("SELECT F_Phone FROM T_Call_OutTaskTelNum WHERE F_Id ='" + custelid + "' and F_TaskID='" + taskid + "' ");
  1293. if (obj2 != null)
  1294. {
  1295. dianhua = obj2.ToString();
  1296. }
  1297. dr["dianhua"] = dianhua;
  1298. //获取职业
  1299. string zhiye = "";
  1300. object obj1 = DbHelperSQL.GetSingle("SELECT F_Answer FROM T_Call_OutAnswers WHERE F_CusTelID ='" + custelid + "' and F_TaskID='" + taskid + "' and F_QID=100");
  1301. if (obj1 != null)
  1302. {
  1303. zhiye = obj1.ToString();
  1304. }
  1305. dr["zhiye"] = zhiye;
  1306. //获取原因
  1307. string yuanyin = "";
  1308. object obj3 = DbHelperSQL.GetSingle("SELECT F_Answer FROM T_Call_OutAnswers WHERE F_CusTelID ='" + custelid + "' and F_TaskID='" + taskid + "' and F_QID=108");
  1309. if (obj3 != null)
  1310. {
  1311. yuanyin = obj3.ToString();
  1312. }
  1313. dr["yuanyin"] = yuanyin;
  1314. dtnew.Rows.Add(dr);
  1315. }
  1316. }
  1317. dtnew.DefaultView.Sort = "xiangzhen ASC";
  1318. DataTable dtTemp = dtnew.DefaultView.ToTable();
  1319. res = Success("获取不安全信息统计数据成功", dtTemp);
  1320. return res;
  1321. }
  1322. #endregion
  1323. #region 数据查询--获取不安全因素比例
  1324. public ActionResult GetUnsafeRate()
  1325. {
  1326. DataTable dtnew = GetData();
  1327. return Success("获取不安全原因比例报表数据成功", dtnew);
  1328. }
  1329. public ActionResult GetUnsafeRateExpt()
  1330. {
  1331. DataTable dtnew = GetData();
  1332. NPOIHelper npoi = new NPOIHelper();
  1333. string[] col = { "不安全原因", "数量", "比例" };
  1334. if (npoi.ExportToExcel("乡镇排名统计数据", dtnew, col) == "")
  1335. {
  1336. return Success("导出成功");
  1337. }
  1338. else
  1339. {
  1340. return Error("导出失败");
  1341. }
  1342. }
  1343. private DataTable GetData()
  1344. {
  1345. string startdate = HttpUtility.UrlDecode(RequestString.GetQueryString("startdate")) + " 00:00:00";
  1346. string enddate = HttpUtility.UrlDecode(RequestString.GetQueryString("enddate")) + " 23:59:59";
  1347. if (HttpUtility.UrlDecode(RequestString.GetQueryString("startdate")) == null || HttpUtility.UrlDecode(RequestString.GetQueryString("startdate")) == "")
  1348. {
  1349. startdate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  1350. }
  1351. if (HttpUtility.UrlDecode(RequestString.GetQueryString("enddate")) == null || HttpUtility.UrlDecode(RequestString.GetQueryString("enddate")) == "")
  1352. {
  1353. enddate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1354. }
  1355. DataTable dtnew = new DataTable();
  1356. dtnew.Columns.Add("Reasons", Type.GetType("System.String"));
  1357. dtnew.Columns.Add("Counts", Type.GetType("System.String"));
  1358. dtnew.Columns.Add("Rates", Type.GetType("System.String"));
  1359. int sumcount = 0;
  1360. DataSet ds = DbHelperSQL.Query("SELECT * FROM T_Ask_QuestionItems where F_QuestionId='103'");
  1361. DataSet dsc = DbHelperSQL.Query("select F_QIID,COUNT(*) c from T_Call_OutAnswers where F_OptOn between '" + startdate + "' and '" + enddate + "' and F_QID=103 group by F_QIID");
  1362. if (ds != null && ds.Tables.Count > 0)
  1363. {
  1364. DataTable dt = ds.Tables[0];
  1365. for (int i = 0; i < dt.Rows.Count; i++)
  1366. {
  1367. DataRow dr = dtnew.NewRow();
  1368. string content = dt.Rows[i]["F_ItemName"].ToString();
  1369. string ItemID = dt.Rows[i]["F_ItemID"].ToString();
  1370. dr["Reasons"] = content;
  1371. int count = 0;
  1372. if (dsc != null && dsc.Tables.Count > 0)
  1373. {
  1374. DataTable dtc = dsc.Tables[0];
  1375. for (int j = 0; j < dtc.Rows.Count; j++)
  1376. {
  1377. if (dtc.Rows[j]["F_QIID"].ToString().Equals(dt.Rows[i]["F_ItemID"].ToString()))
  1378. {
  1379. count = int.Parse(dtc.Rows[j]["c"].ToString());
  1380. sumcount += count;
  1381. break;
  1382. }
  1383. }
  1384. }
  1385. dr["Counts"] = count;
  1386. dr["Rates"] = 0;
  1387. dtnew.Rows.Add(dr);
  1388. }
  1389. for (int z = 0; z < dtnew.Rows.Count; z++)
  1390. {
  1391. int count = 0;
  1392. count = int.Parse(dtnew.Rows[z]["Counts"].ToString());
  1393. if (sumcount > 0)
  1394. {
  1395. decimal perww = Math.Round(Convert.ToDecimal(Convert.ToDecimal(count) / sumcount * 100), 1);
  1396. dtnew.Rows[z]["Rates"] = perww;
  1397. }
  1398. }
  1399. }
  1400. return dtnew;
  1401. }
  1402. #endregion
  1403. #region 导出
  1404. #region 数据查询--获取排名
  1405. public ActionResult GetRankExpt()
  1406. {
  1407. ActionResult res = NoToken("未知错误,请重新登录");
  1408. string startdate = HttpUtility.UrlDecode(RequestString.GetQueryString("startdate")) + " 00:00:00";
  1409. string enddate = HttpUtility.UrlDecode(RequestString.GetQueryString("enddate")) + " 23:59:59";
  1410. if (HttpUtility.UrlDecode(RequestString.GetQueryString("startdate")) == null || HttpUtility.UrlDecode(RequestString.GetQueryString("startdate")) == "")
  1411. {
  1412. startdate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  1413. //enddate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1414. }
  1415. if (HttpUtility.UrlDecode(RequestString.GetQueryString("enddate")) == null || HttpUtility.UrlDecode(RequestString.GetQueryString("enddate")) == "")
  1416. {
  1417. //startdate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  1418. enddate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1419. }
  1420. //startdate = "2017-11-12 00:00:00";
  1421. //enddate = "2017-11-14 23:59:59";
  1422. DataTable dtnew = new DataTable();
  1423. dtnew.Columns.Add("paiming", Type.GetType("System.String"));
  1424. dtnew.Columns.Add("xiangzhen", Type.GetType("System.String"));
  1425. dtnew.Columns.Add("zongshu", Type.GetType("System.Int32"));
  1426. dtnew.Columns.Add("buanquan", Type.GetType("System.Int32"));
  1427. dtnew.Columns.Add("zhishu", Type.GetType("System.Decimal"));
  1428. int leiji = 0;
  1429. int buanquanleiji = 0;
  1430. //List<Model.T_Ask_Question> qrlist = new List<Model.T_Ask_Question>();
  1431. //DataSet ds = DbHelperSQL.Query("SELECT * FROM T_Ask_QuestionItems WHERE F_ItemId IN (SELECT F_QIID FROM T_Call_OutAnswers WHERE F_CusTelID IN (select F_CusTelID from T_Call_OutAnswers where F_OptOn between '" + startdate + "' and '" + enddate + "' and F_QID=102 ) and F_QID=101 group by F_QIID)");//and (F_QIID=101 OR F_QIID=102)
  1432. DataSet ds = DbHelperSQL.Query("SELECT * FROM T_Ask_QuestionItems where F_QuestionId='101'");
  1433. if (ds != null && ds.Tables.Count > 0)
  1434. {
  1435. DataTable dt = ds.Tables[0];
  1436. for (int i = 0; i < dt.Rows.Count; i++)
  1437. {
  1438. DataRow dr = dtnew.NewRow();
  1439. string content = dt.Rows[i]["F_ItemName"].ToString();
  1440. string ItemID = dt.Rows[i]["F_ItemID"].ToString();
  1441. dr["xiangzhen"] = content;
  1442. //根据乡镇获取不安全数
  1443. int unsafenum = 0;
  1444. object obj0 = DbHelperSQL.GetSingle("SELECT COUNT(1) as buanquanshu FROM T_Call_OutAnswers WHERE F_CusTelID IN (select F_CusTelID from T_Call_OutAnswers where F_OptOn between '" + startdate + "' and '" + enddate + "' and F_QID=102 and (F_QIID=101 OR F_QIID=102)) and F_QID=101 and F_QIID=" + ItemID);
  1445. if (obj0 != null && obj0.ToString() != "")
  1446. {
  1447. unsafenum = Convert.ToInt32(obj0);
  1448. }
  1449. buanquanleiji += unsafenum;
  1450. dr["buanquan"] = unsafenum;
  1451. //根据乡镇获取总数
  1452. int totalnum = 0;
  1453. object obj1 = DbHelperSQL.GetSingle("SELECT COUNT(*) from T_Call_OutAnswers where F_OptOn between '" + startdate + "' and '" + enddate + "' and F_QID=101 and F_QIID=" + ItemID + "");
  1454. if (obj1 != null && obj1.ToString() != "")
  1455. {
  1456. totalnum = Convert.ToInt32(obj1);
  1457. }
  1458. dr["zongshu"] = totalnum;
  1459. leiji += totalnum;
  1460. //计算比例
  1461. if (totalnum > 0)
  1462. {
  1463. decimal per = Math.Round(Convert.ToDecimal(Convert.ToDecimal(totalnum - unsafenum) / totalnum * 100), 1);
  1464. dr["zhishu"] = per;
  1465. }
  1466. else
  1467. { dr["zhishu"] = 0; }
  1468. dtnew.Rows.Add(dr);
  1469. }
  1470. }
  1471. dtnew.DefaultView.Sort = "zhishu DESC";
  1472. DataTable dtTemp = dtnew.DefaultView.ToTable();
  1473. for (int h = 0; h < dtTemp.Rows.Count; h++)
  1474. {
  1475. dtTemp.Rows[h]["paiming"] = h + 1;
  1476. }
  1477. //计算总计
  1478. DataRow dr0 = dtTemp.NewRow();
  1479. dr0["paiming"] = "";
  1480. dr0["xiangzhen"] = "总计";
  1481. dr0["zongshu"] = leiji;
  1482. dr0["buanquan"] = buanquanleiji;
  1483. if (leiji > 0)
  1484. {
  1485. decimal per = Math.Round(Convert.ToDecimal(Convert.ToDecimal(leiji - buanquanleiji) / leiji * 100), 1);
  1486. dr0["zhishu"] = per;
  1487. }
  1488. else
  1489. { dr0["zhishu"] = 0; }
  1490. dtTemp.Rows.Add(dr0);
  1491. //res = Success("获取乡镇报表数据成功", dtTemp);
  1492. //return res;
  1493. //导出dtnew
  1494. NPOIHelper npoi = new NPOIHelper();
  1495. string[] col = { "排名", "乡镇", "总数", "不安全", "指数" };
  1496. if (npoi.ExportToExcel("乡镇排名统计数据", dtTemp, col) == "")
  1497. {
  1498. return Success("导出成功");
  1499. }
  1500. else
  1501. {
  1502. return Error("导出失败");
  1503. }
  1504. }
  1505. #endregion
  1506. #region 数据查询--获取不安全详细信息
  1507. public ActionResult GetUnsafeInfoExpt()
  1508. {
  1509. ActionResult res = NoToken("未知错误,请重新登录");
  1510. string startdate = HttpUtility.UrlDecode(RequestString.GetQueryString("startdate")) + " 00:00:00";
  1511. string enddate = HttpUtility.UrlDecode(RequestString.GetQueryString("enddate")) + " 23:59:59";
  1512. if (HttpUtility.UrlDecode(RequestString.GetQueryString("startdate")) == null || HttpUtility.UrlDecode(RequestString.GetQueryString("startdate")) == "")
  1513. {
  1514. startdate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  1515. //enddate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1516. }
  1517. if (HttpUtility.UrlDecode(RequestString.GetQueryString("enddate")) == null || HttpUtility.UrlDecode(RequestString.GetQueryString("enddate")) == "")
  1518. {
  1519. //startdate = DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00";
  1520. enddate = DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59";
  1521. }
  1522. //startdate = "2017-11-12 00:00:00";
  1523. //enddate = "2017-11-14 23:59:59";
  1524. DataTable dtnew = new DataTable();
  1525. dtnew.Columns.Add("xiangzhen", Type.GetType("System.String"));
  1526. dtnew.Columns.Add("dianhua", Type.GetType("System.String"));
  1527. dtnew.Columns.Add("zhiye", Type.GetType("System.String"));
  1528. dtnew.Columns.Add("yuanyin", Type.GetType("System.String"));
  1529. //List<Model.T_Ask_Question> qrlist = new List<Model.T_Ask_Question>();
  1530. //DataSet ds = DbHelperSQL.Query("SELECT * FROM T_Ask_QuestionItems WHERE F_ItemId IN (SELECT F_QIID FROM T_Call_OutAnswers WHERE F_CusTelID IN (select F_CusTelID from T_Call_OutAnswers where F_OptOn between '" + startdate + "' and '" + enddate + "' and F_QID=102 and (F_QIID=101 OR F_QIID=102)) and F_QID=101 group by F_QIID)");
  1531. DataSet ds = DbHelperSQL.Query("select F_CusTelID,F_TaskID from T_Call_OutAnswers where F_OptOn between '" + startdate + "' and '" + enddate + "' and F_QID=102 and (F_QIID=101 OR F_QIID=102)");
  1532. if (ds != null && ds.Tables.Count > 0)
  1533. {
  1534. DataTable dt = ds.Tables[0];
  1535. if (dt.Rows.Count > 0)
  1536. {
  1537. //return Success("当前日期没有可导出的数据");
  1538. for (int i = 0; i < dt.Rows.Count; i++)
  1539. {
  1540. DataRow dr = dtnew.NewRow();
  1541. string taskid = dt.Rows[i]["F_TaskID"].ToString();
  1542. string custelid = dt.Rows[i]["F_CusTelID"].ToString();
  1543. //获取乡镇
  1544. string xiangzhen = "";
  1545. object obj0 = DbHelperSQL.GetSingle("SELECT F_Answer FROM T_Call_OutAnswers WHERE F_CusTelID ='" + custelid + "' and F_TaskID='" + taskid + "' and F_QID=101");
  1546. if (obj0 != null)
  1547. {
  1548. xiangzhen = obj0.ToString();
  1549. }
  1550. dr["xiangzhen"] = xiangzhen;
  1551. //获取电话
  1552. string dianhua = "";
  1553. object obj2 = DbHelperSQL.GetSingle("SELECT F_Phone FROM T_Call_OutTaskTelNum WHERE F_Id ='" + custelid + "' and F_TaskID='" + taskid + "' ");
  1554. if (obj2 != null)
  1555. {
  1556. dianhua = obj2.ToString();
  1557. }
  1558. dr["dianhua"] = dianhua;
  1559. //获取职业
  1560. string zhiye = "";
  1561. object obj1 = DbHelperSQL.GetSingle("SELECT F_Answer FROM T_Call_OutAnswers WHERE F_CusTelID ='" + custelid + "' and F_TaskID='" + taskid + "' and F_QID=100");
  1562. if (obj1 != null)
  1563. {
  1564. zhiye = obj1.ToString();
  1565. }
  1566. dr["zhiye"] = zhiye;
  1567. //获取原因
  1568. string yuanyin = "";
  1569. object obj3 = DbHelperSQL.GetSingle("SELECT F_Answer FROM T_Call_OutAnswers WHERE F_CusTelID ='" + custelid + "' and F_TaskID='" + taskid + "' and F_QID=108");
  1570. if (obj3 != null)
  1571. {
  1572. yuanyin = obj3.ToString();
  1573. }
  1574. dr["yuanyin"] = yuanyin;
  1575. dtnew.Rows.Add(dr);
  1576. }
  1577. }
  1578. }
  1579. dtnew.DefaultView.Sort = "xiangzhen ASC";
  1580. DataTable dtTemp = dtnew.DefaultView.ToTable();
  1581. //res = Success("获取不安全信息统计数据成功", dtTemp);
  1582. //return res;
  1583. //导出dtnew
  1584. NPOIHelper npoi = new NPOIHelper();
  1585. string[] col = { "乡(镇、街道)", "机主电话", "职业", "原因" };
  1586. if (npoi.ExportToExcel("不安全信息统计数据", dtTemp, col) == "")
  1587. {
  1588. return Success("导出成功");
  1589. }
  1590. else
  1591. {
  1592. return Error("导出失败");
  1593. }
  1594. }
  1595. #endregion
  1596. #endregion
  1597. }
  1598. }