説明なし

DataAssessmentController.cs 20KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
  1. using CallCenter.Utility;
  2. using CallCenterApi.Common;
  3. using CallCenterApi.DB;
  4. using CallCenterApi.Interface.Controllers.Base;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Data;
  8. using System.IO;
  9. using System.Linq;
  10. using System.Web;
  11. using System.Web.Mvc;
  12. namespace CallCenterApi.Interface.Controllers.Assessment
  13. {
  14. public class DataAssessmentController : BaseController
  15. {
  16. private BLL.T_Sys_UserAccount userBLL = new BLL.T_Sys_UserAccount();
  17. private BLL.T_Data_Assessment dataBLL = new BLL.T_Data_Assessment();
  18. /// <summary>
  19. /// 获取月绩效考核数据
  20. /// </summary>
  21. /// <param name="date"></param>
  22. /// <returns></returns>
  23. [Authority]
  24. public ActionResult GetDataList(string date,int deptid=0)
  25. {
  26. if (User == null)
  27. return Error("权限不足!");
  28. string sqlwhere = "";
  29. string strdate = date;
  30. if (string.IsNullOrEmpty(date))
  31. strdate = DateTime.Now.ToString("yyyyMM");
  32. if (deptid > 0)
  33. sqlwhere += " and F_DeptId=" + deptid;
  34. var datalist = dataBLL.GetModelList(" F_BatchNo='" + strdate + "'"+ sqlwhere + " order by F_DF_ZJ desc,F_JB_HandleCount desc ");
  35. var newlist = datalist.Select(x=>
  36. new{
  37. x.F_Id,
  38. x.F_DeptId,
  39. x.F_DeptName,
  40. x.F_BatchNo,
  41. x.F_JB_HandleCount,
  42. x.F_DF_BLCore,
  43. x.F_DF_CSCore,
  44. x.F_DF_GFCore,
  45. x.F_DF_HFCore,
  46. x.F_DF_TBCore,
  47. x.F_DF_THCore,
  48. x.F_DF_ZSKCore,
  49. x.F_DF_ZJ
  50. });
  51. var obj = new
  52. {
  53. state = "success",
  54. message = "成功",
  55. rows = newlist,
  56. total = datalist.Count
  57. };
  58. return Content(obj.ToJson());
  59. }
  60. /// <summary>
  61. /// 获取单位绩效考核详情
  62. /// </summary>
  63. /// <param name="id"></param>
  64. /// <returns></returns>
  65. [Authority]
  66. public ActionResult GetDataInfo(int dataid)
  67. {
  68. if (User == null)
  69. return Error("权限不足!");
  70. if (dataid <= 0)
  71. return Error("参数错误");
  72. var datamodel = dataBLL.GetModel(dataid);
  73. if (datamodel == null)
  74. return Error("获取信息失败");
  75. //获取分数及数量信息
  76. //获取扣分详情
  77. //查收不及时
  78. var sqlass = "select F_Id,F_WorkOrderId,F_CreateTime pdtime,F_SureTime cstime,dbo.GetRespTime(F_CreateTime) limittime,(select count(1) from T_Bus_AppealInfo where F_IsDelete=0 and F_Type=2 and F_TypeID=data.F_Id) F_ISAppeal,(select top 1 F_Id from T_Bus_AppealInfo where F_IsDelete=0 and F_Type=2 and F_TypeID=data.F_Id order by F_CreateTime desc) F_AppealID from [T_Data_AssignedRec_" + datamodel.F_BatchNo+ "] data where F_MainDeptId= " + datamodel.F_DeptId + " and F_SureTime>dbo.GetRespTime(F_CreateTime) order by F_WorkOrderId";// and DATEDIFF(hour,F_CreateTime,F_SureTime)>4
  79. var asslist = DbHelperSQL.Query(sqlass).Tables[0];
  80. //办理超时
  81. var sqlfeed = "select F_Id,F_WorkOrderId,F_FeedbackTime,F_LimitTime,(select count(1) from T_Bus_AppealInfo where F_IsDelete=0 and F_Type=1 and F_TypeID=data.F_Id) F_ISAppeal,(select top 1 F_Id from T_Bus_AppealInfo where F_IsDelete=0 and F_Type=1 and F_TypeID=data.F_Id order by F_CreateTime desc) F_AppealID from [T_Data_Assigned_" + datamodel.F_BatchNo + "] data where F_MainDeptId= " + datamodel.F_DeptId + " and ISNULL(F_FeedbackTime,'')<>'' and F_FeedbackTime>F_LimitTime order by F_WorkOrderId";
  82. var feedlist = DbHelperSQL.Query(sqlfeed).Tables[0];
  83. // 申诉信息分类(1为办理情况,2为查收情况,3为办理规范,4为回访情况,5为退回情况,6为知识库索要更新不及时,7为知识库纠错情况,8为通报)
  84. //退单不及时
  85. var sqlback = "select F_Id,F_WorkOrderId,jbtime,thtime,limittime,F_ISAppeal,F_AppealID from (select feedback.F_Id,assigned.F_WorkOrderId,F_MaindeptId,assigned.F_CreateTime jbtime,feedback.F_CreateTime thtime,dbo.GetRespTime(assigned.F_CreateTime) limittime,(select count(1) from T_Bus_AppealInfo where F_IsDelete=0 and F_Type=5 and F_TypeID=feedback.F_Id) F_ISAppeal,(select top 1 F_Id from T_Bus_AppealInfo where F_IsDelete=0 and F_Type=5 and F_TypeID=feedback.F_Id order by F_CreateTime desc) F_AppealID from T_Data_Feedback_" + datamodel.F_BatchNo + " feedback join T_Data_Assigned_" + datamodel.F_BatchNo + " assigned on assigned.F_Id=feedback.F_AssignedId) back where F_MaindeptId=" + datamodel.F_DeptId + " and thtime>limittime order by F_WorkOrderId";//and DATEDIFF(hour,jbtime,thtime)>4
  86. var backlist = DbHelperSQL.Query(sqlback).Tables[0];
  87. //回访不满意
  88. var sqlvisit = "select F_Id,F_WorkOrderId,F_IsSatisfie,F_Result,F_CreateTime,F_ISAppeal,F_AppealID from (select visit.F_Id,visit.F_WorkOrderId,F_MaindeptId,visit.F_IsSatisfie,visit.F_Result,visit.F_CreateTime,(select count(1) from T_Bus_AppealInfo where F_IsDelete=0 and F_Type=4 and F_TypeID=visit.F_Id) F_ISAppeal,(select top 1 F_Id from T_Bus_AppealInfo where F_IsDelete=0 and F_Type=4 and F_TypeID=visit.F_Id order by F_CreateTime desc) F_AppealID from T_Data_Visit_" + datamodel.F_BatchNo + " visit join T_Bus_AssignedInfo on T_Bus_AssignedInfo.F_Id=visit.F_AssignedId) vvisit where F_MainDeptId=" + datamodel.F_DeptId + " and F_IsSatisfie<>1 order by F_WorkOrderId";
  89. var visitlist = DbHelperSQL.Query(sqlvisit).Tables[0];
  90. //知识库
  91. //索要情况
  92. var sqlzsksy = "select F_DemandsId as F_Id,F_Descript,F_CreateTime,F_DemandsId,(select count(1) from T_Bus_AppealInfo where F_IsDelete=0 and F_Type=6 and F_TypeID=data.F_DemandsId) F_ISAppeal,(select top 1 F_Id from T_Bus_AppealInfo where F_IsDelete=0 and F_Type=6 and F_TypeID=data.F_DemandsId order by F_CreateTime desc) F_AppealID from T_Data_RepositoryDemands_" + datamodel.F_BatchNo + " data where ISNULL(F_RepositoryId,'')='' and F_Deptid='" + datamodel.F_DeptId + "' order by F_DemandsId";
  93. var zsksylist = DbHelperSQL.Query(sqlzsksy).Tables[0];
  94. //纠错情况
  95. var sqlzskjc = "select F_Id,F_RepositoryId,F_Title,F_Reason,F_OptOn,(select count(1) from T_Bus_AppealInfo where F_IsDelete=0 and F_Type=7 and F_TypeID=data.F_Id) F_ISAppeal,(select top 1 F_Id from T_Bus_AppealInfo where F_IsDelete=0 and F_Type=7 and F_TypeID=data.F_Id order by F_CreateTime desc) F_AppealID from T_Data_RepositoryOperation_" + datamodel.F_BatchNo + " data where F_DeptId='" + datamodel.F_DeptId + "' order by F_OptOn";
  96. var zskjclist = DbHelperSQL.Query(sqlzskjc).Tables[0];
  97. //工单规范
  98. var sqlgdgf = "select F_Id,F_WorkOrderId,names,F_StandardIDS,(select count(1) from T_Bus_AppealInfo where F_IsDelete=0 and F_Type=3 and F_TypeID=data.F_Id) F_ISAppeal,(select top 1 F_Id from T_Bus_AppealInfo where F_IsDelete=0 and F_Type=3 and F_TypeID=data.F_Id order by F_CreateTime desc) F_AppealID from T_Data_WorkOrderClose_" + datamodel.F_BatchNo + " data where ISNULL(F_IsStandard,0)>0 and F_MainDeptId='" + datamodel.F_DeptId + "' order by F_WorkOrderId";
  99. var gdgflist = DbHelperSQL.Query(sqlgdgf).Tables[0];
  100. //通报
  101. //匹配是否可申诉
  102. asslist = BindFileData(asslist, datamodel.F_SSLimittime, datamodel.F_DeptId, User.F_DeptId);
  103. feedlist = BindFileData(feedlist, datamodel.F_SSLimittime, datamodel.F_DeptId, User.F_DeptId);
  104. backlist = BindFileData(backlist, datamodel.F_SSLimittime, datamodel.F_DeptId, User.F_DeptId);
  105. visitlist = BindFileData(visitlist, datamodel.F_SSLimittime, datamodel.F_DeptId, User.F_DeptId);
  106. zsksylist = BindFileData(zsksylist, datamodel.F_SSLimittime, datamodel.F_DeptId, User.F_DeptId);
  107. zskjclist = BindFileData(zskjclist, datamodel.F_SSLimittime, datamodel.F_DeptId, User.F_DeptId);
  108. gdgflist = BindFileData(gdgflist, datamodel.F_SSLimittime, datamodel.F_DeptId, User.F_DeptId);
  109. var obj = new {
  110. data= datamodel,
  111. asslist,
  112. feedlist,
  113. backlist,
  114. visitlist,
  115. zsksylist,
  116. zskjclist,
  117. gdgflist,
  118. };
  119. return Success("获取成功", obj);
  120. }
  121. private DataTable BindFileData(DataTable dt, DateTime? limittime,int deptid,int nowdeptid)
  122. {
  123. dt.Columns.Add("ssbutton", typeof(object));
  124. foreach (DataRow dr in dt.Rows)
  125. {
  126. if (dr["F_ISAppeal"] != null && dr["F_ISAppeal"].ToString() != "")
  127. {
  128. //判断当前登录人是否=考核数据中的部门id
  129. if (deptid == nowdeptid)
  130. {
  131. //申诉时限不为空;当前时间在申诉时间内
  132. if (limittime != null && limittime > DateTime.Now)
  133. {
  134. //是否已申诉
  135. if (int.Parse(dr["F_ISAppeal"].ToString()) <= 0)
  136. {
  137. dr["ssbutton"] = true;
  138. }
  139. else
  140. dr["ssbutton"] = false;
  141. }
  142. else
  143. dr["ssbutton"] = false;
  144. }
  145. else
  146. dr["ssbutton"] = false;
  147. }
  148. else
  149. dr["ssbutton"] = false;
  150. }
  151. return dt;
  152. }
  153. /// <summary>
  154. /// 导出数据
  155. /// </summary>
  156. /// <param name="date"></param>
  157. /// <returns></returns>
  158. public ActionResult ExptList(string date, int deptid = 0)
  159. {
  160. NPOIHelper npoi = new NPOIHelper();
  161. string strdate = date;
  162. if (string.IsNullOrEmpty(date))
  163. strdate = DateTime.Now.ToString("yyyyMM");
  164. var sqlwhere = "";
  165. if (deptid > 0)
  166. sqlwhere += " and F_DeptId=" + deptid;
  167. var sql = "select ROW_NUMBER() OVER(ORDER BY F_DF_ZJ desc,F_JB_HandleCount desc) No,F_DeptName,F_DF_CSCore,F_DF_THCore,F_DF_BLCore,F_DF_HFCore,F_DF_ZSKCore,F_DF_GFCore,F_DF_ZJ,F_JB_HandleCount from T_Data_Assessment where F_BatchNo='" + strdate + "'" + sqlwhere + " order by F_DF_ZJ desc,F_JB_HandleCount desc ";
  168. DataTable dt = DbHelperSQL.Query(sql).Tables[0];
  169. if (npoi.ExportToExcel("绩效考核数据-"+ date, dt, getcols()) == "")
  170. {
  171. return Success("导出成功");
  172. }
  173. else
  174. {
  175. return Error("导出失败");
  176. }
  177. }
  178. private string[] getcols()
  179. {
  180. //序号 承办单位 查收要求(15) 工单退回要求(15) 及时办结情况(20) 回访评价(20) 知识库更新 (20) 工单办理结果填写规范及要求(10) 合计 办理数量
  181. String[] str = { "序号", "承办单位", "查收要求(15)", "工单退回要求(15)", "及时办结情况(20)", "回访评价(20)", "知识库更新 (20)", "工单办理结果填写规范及要求(10)", "合计","办理数量" };
  182. return str;
  183. }
  184. #region 督办统计数据(与绩效考核相似,所有放在此处)
  185. [Authority]
  186. public ActionResult GetDBDataList(string date, int deptid = 0)
  187. {
  188. if (User == null)
  189. return Error("权限不足!");
  190. string edate = "";
  191. if (User.F_RoleCode == "WLDW")
  192. deptid = User.F_DeptId;
  193. #region
  194. string strdate = date;
  195. string sqlwhere = "";
  196. if (string.IsNullOrEmpty(date))
  197. {
  198. //strdate = DateTime.Now.ToString("yyyyMM");
  199. string sql = "select top 1 F_BatchNo from T_Data_Supervision order by F_BatchNo desc";
  200. string dates = DbHelperSQL.GetSingle(sql).ToString();
  201. if (!string.IsNullOrEmpty(dates))
  202. {
  203. strdate += dates;
  204. }
  205. sqlwhere += " and F_BatchNo = '" + Convert.ToDateTime(strdate).ToString("yyyyMM") + "'";
  206. }
  207. //}
  208. if (!string.IsNullOrEmpty(date))
  209. {
  210. // strdate = DateTime.Now.ToString("yyyyMM");
  211. sqlwhere += " and F_BatchNo = '" +Convert.ToDateTime(strdate).ToString("yyyyMM") + "'";
  212. }
  213. if (deptid > 0)
  214. sqlwhere += " and F_DeptId=" + deptid;
  215. var sqlass = "select * from T_Data_Supervision where 1=1 " + sqlwhere + " order by F_ReciveCount desc ";//此处以查收量倒叙排序
  216. #endregion
  217. var list = DbHelperSQL.Query(sqlass).Tables[0];
  218. var obj = new
  219. {
  220. state = "success",
  221. message = "成功",
  222. rows = list,
  223. total = list.Rows.Count
  224. };
  225. return Content(obj.ToJson());
  226. }
  227. [Authority]
  228. public ActionResult GetDBDataList_1(DateTime ? starttime , DateTime? endtime, int deptid = 0,bool isdc=false,int source=0)
  229. {
  230. if (User == null)
  231. return Error("权限不足!");
  232. string strdate = ""; string edate = "";
  233. if (User.F_RoleCode == "WLDW")
  234. deptid = User.F_DeptId;
  235. #region
  236. string month = "";
  237. if (starttime==null )
  238. {
  239. strdate = DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "-21 00:00:00";
  240. }
  241. else
  242. {
  243. strdate = starttime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  244. }
  245. if (endtime == null)
  246. {
  247. edate = DateTime.Now.ToString("yyyy-MM") + "-20 23:59:59";
  248. month = DateTime.Now.Month.ToString();
  249. }
  250. else
  251. {
  252. edate = endtime.Value .ToString("yyyy-MM-dd")+" 23:59:59" ;
  253. month = endtime.Value.Month.ToString();
  254. }
  255. string sourcesql = "";
  256. if (source >0)
  257. {
  258. sourcesql = source.ToString();
  259. }
  260. #endregion
  261. Dictionary<string, string> paras = new Dictionary<string, string>();
  262. paras.Add("@deptid", deptid.ToString());
  263. paras.Add("@sdate", strdate);
  264. paras.Add("@edate", edate);
  265. paras.Add("@source", sourcesql);
  266. var list = DbHelperSQL.RunProcedure("P_DeptDBData", paras, "DeptData").Tables[0];
  267. //var list = DbHelperSQL.Query(sqlass).Tables[0];
  268. if (isdc)
  269. {
  270. NPOIHelper npoi = new NPOIHelper();
  271. if (npoi.DBExportToExcel(list,"督办数据统计",month, Convert.ToDateTime(strdate).ToString("yyyy-MM-dd"),
  272. Convert.ToDateTime(edate).ToString("yyyy-MM-dd")
  273. ) == "")
  274. {
  275. return Success("导出成功");
  276. }
  277. else
  278. {
  279. return Error("导出失败");
  280. }
  281. }
  282. var obj = new
  283. {
  284. state = "success",
  285. message = "成功",
  286. rows = list,
  287. month ,
  288. strdate= Convert.ToDateTime(strdate).ToString("yyyy-MM-dd"),
  289. edate = Convert.ToDateTime(edate).ToString("yyyy-MM-dd")
  290. };
  291. return Content(obj.ToJson());
  292. }
  293. [Authority]
  294. public ActionResult GetDBDataList_2(DateTime? starttime, DateTime? endtime, int deptid3 = 0, bool isdc = false, int source = 0)
  295. {
  296. if (User == null)
  297. return Error("权限不足!");
  298. int deptid = 0;
  299. string strdate = ""; string edate = "";
  300. if (User.F_RoleCode == "WLDW")
  301. deptid = User.F_DeptId;
  302. #region
  303. string month = "";
  304. if (starttime == null)
  305. {
  306. strdate = DateTime.Now.AddMonths(-1).ToString("yyyy-MM") + "-21 00:00:00";
  307. }
  308. else
  309. {
  310. strdate = starttime.Value.ToString("yyyy-MM-dd HH:mm:ss");
  311. }
  312. if (endtime == null)
  313. {
  314. edate = DateTime.Now.ToString("yyyy-MM") + "-20 23:59:59";
  315. month = DateTime.Now.Month.ToString();
  316. }
  317. else
  318. {
  319. edate = endtime.Value.ToString("yyyy-MM-dd") + " 23:59:59";
  320. month = endtime.Value.Month.ToString();
  321. }
  322. string sourcesql = "";
  323. if (source > 0)
  324. {
  325. sourcesql = source.ToString();
  326. }
  327. #endregion
  328. Dictionary<string, string> paras = new Dictionary<string, string>();
  329. paras.Add("@deptid", deptid.ToString());
  330. paras.Add("@sdate", strdate);
  331. paras.Add("@edate", edate);
  332. paras.Add("@source", sourcesql);
  333. paras.Add("@deptid3", deptid3.ToString ());
  334. var list = DbHelperSQL.RunProcedure("P_EJDeptDBData", paras, "EJDeptDBData").Tables[0];
  335. //var list = DbHelperSQL.Query(sqlass).Tables[0];
  336. if (isdc)
  337. {
  338. NPOIHelper npoi = new NPOIHelper();
  339. if (npoi.DBEJExportToExcel(list, "督办数据统计", month, Convert.ToDateTime(strdate).ToString("yyyy-MM-dd"),
  340. Convert.ToDateTime(edate).ToString("yyyy-MM-dd")
  341. ) == "")
  342. {
  343. return Success("导出成功");
  344. }
  345. else
  346. {
  347. return Error("导出失败");
  348. }
  349. }
  350. var obj = new
  351. {
  352. state = "success",
  353. message = "成功",
  354. rows = list,
  355. month,
  356. strdate = Convert.ToDateTime(strdate).ToString("yyyy-MM-dd"),
  357. edate = Convert.ToDateTime(edate).ToString("yyyy-MM-dd")
  358. };
  359. return Content(obj.ToJson());
  360. }
  361. [Authority]
  362. public ActionResult ExptDBDataList(string date, int deptid = 0)
  363. {
  364. if (User == null)
  365. return Error("权限不足!");
  366. string sqlwhere = "";
  367. string strdate = date;
  368. if (string.IsNullOrEmpty(date))
  369. {
  370. // strdate = DateTime.Now.ToString("yyyyMM");
  371. string sql = "select top 1 F_BatchNo from T_Data_Supervision order by F_BatchNo desc";
  372. string dates = DbHelperSQL.GetSingle(sql).ToString();
  373. if (!string.IsNullOrEmpty(dates))
  374. {
  375. strdate += dates;
  376. }
  377. }
  378. if (!string.IsNullOrEmpty(date))
  379. {
  380. // strdate = DateTime.Now.ToString("yyyyMM");
  381. strdate = Convert.ToDateTime(strdate).ToString("yyyyMM") ;
  382. }
  383. if (deptid > 0)
  384. sqlwhere += " and F_DeptId=" + deptid;
  385. var sqlass = "select ROW_NUMBER() OVER(ORDER BY F_ReciveCount desc) No,F_DeptName,F_ReciveCount,F_TimeOutCount,F_UnFinishCount,F_BackCount,F_VisitCount,F_DissatisfiedCount from T_Data_Supervision "
  386. + "where F_BatchNo = '" + strdate + "'" + sqlwhere + " order by F_ReciveCount desc ";//此处以查收量倒叙排序
  387. var list = DbHelperSQL.Query(sqlass).Tables[0];
  388. String[] str = { "序号", "承办单位", "承办件", "超期件", "未果件", "退单件", "群众评议总数", "不满意件" };
  389. NPOIHelper npoi = new NPOIHelper();
  390. if (npoi.ExportToExcel("督办数据统计-" + date, list, str) == "")
  391. {
  392. return Success("导出成功");
  393. }
  394. else
  395. {
  396. return Error("导出失败");
  397. }
  398. }
  399. #endregion
  400. }
  401. }