XcglRptController.java 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888
  1. package com.xcgl.reports.contoller;
  2. import java.util.ArrayList;
  3. import java.util.Calendar;
  4. import java.util.Date;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10. import org.apache.commons.lang.StringUtil;
  11. import org.apache.log4j.Logger;
  12. import org.jeecgframework.core.common.model.json.DataGrid;
  13. import org.jeecgframework.core.util.DataUtils;
  14. import org.jeecgframework.core.util.DateUtils;
  15. import org.jeecgframework.core.util.JeecgDataAutorUtils;
  16. import org.jeecgframework.core.util.ResourceUtil;
  17. import org.jeecgframework.minidao.pojo.MiniDaoPage;
  18. import org.jeecgframework.poi.excel.entity.ExportParams;
  19. import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
  20. import org.jeecgframework.tag.core.easyui.TagUtil;
  21. import org.jeecgframework.web.system.service.SystemService;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.stereotype.Controller;
  24. import org.springframework.ui.ModelMap;
  25. import org.springframework.web.bind.annotation.RequestMapping;
  26. import org.springframework.web.bind.annotation.ResponseBody;
  27. import org.springframework.web.servlet.ModelAndView;
  28. import com.xcgl.reports.dao.XcglRptDao;
  29. import com.xcgl.reports.dto.ActivitiOvertimeDto;
  30. import com.xcgl.reports.dto.ActivitiOvertimeSumDto;
  31. import com.xcgl.reports.dto.ActivitiStats;
  32. import com.xcgl.reports.dto.TaskStats;
  33. import cn.com.lzt.common.entity.ChartMultLineDto;
  34. import cn.com.lzt.common.entity.ChartSeriesDto;
  35. import cn.com.lzt.common.entity.DataDto;
  36. import cn.com.lzt.common.util.DataUtil;
  37. import cn.com.lzt.common.util.ExportExcel;
  38. import cn.com.lzt.tools.DecimalUtils;
  39. import cn.com.lzt.userstats.dto.UserEntity;
  40. @Controller
  41. @RequestMapping("/xcglRptController")
  42. public class XcglRptController {
  43. @Autowired
  44. private XcglRptDao rptDao;
  45. @Autowired
  46. private SystemService systemService;
  47. private static final Logger logger = Logger.getLogger(XcglRptController.class);
  48. @RequestMapping(params = "task4managerRptDemo")
  49. public ModelAndView task4managerRptDemo(HttpServletRequest request) {
  50. return new ModelAndView("com/xcgl/reports/task4managerRptDemo");
  51. }
  52. @RequestMapping(params = "task4ProjectRptDemo")
  53. public ModelAndView task4ProjectRptDemo(HttpServletRequest request) {
  54. return new ModelAndView("com/xcgl/reports/task4ProjectRptDemo");
  55. }
  56. @RequestMapping(params = "task4EvaluateRptDemo")
  57. public ModelAndView task4EvaluateRptDemo(HttpServletRequest request) {
  58. return new ModelAndView("com/xcgl/reports/task4EvaluateRptDemo");
  59. }
  60. // @RequestMapping(params = "shuiyishinenghaoDemo")
  61. // public ModelAndView shuiyishinenghaoDemo(HttpServletRequest request) {
  62. // return new ModelAndView("cn/com/lzt/report/shuiyishinenghaoDemo");
  63. // }
  64. //
  65. // @RequestMapping(params = "diantiguzhangDemo")
  66. // public ModelAndView diantiguzhangDemo(HttpServletRequest request) {
  67. // return new ModelAndView("cn/com/lzt/report/diantiguzhangDemo");
  68. // }
  69. //
  70. // @RequestMapping(params = "menjincesuoDemo")
  71. // public ModelAndView menjincesuoDemo(HttpServletRequest request) {
  72. // return new ModelAndView("cn/com/lzt/report/menjincesuoDemo");
  73. // }
  74. //
  75. // @RequestMapping(params = "diantiguzhangYueDemo")
  76. // public ModelAndView diantiguzhangYueDemo(HttpServletRequest request) {
  77. // return new ModelAndView("cn/com/lzt/report/diantiguzhangYueDemo");
  78. // }
  79. //
  80. // @RequestMapping(params = "kaoqintiaozhengDemo")
  81. // public ModelAndView kaoqintiaozhengdemo(HttpServletRequest request) {
  82. // ModelAndView mav = new ModelAndView();
  83. // Calendar c = Calendar.getInstance();
  84. // mav.addObject("curYear",c.get(Calendar.YEAR)+"");
  85. // int month = c.get(Calendar.MONTH);
  86. // if(month > 9){
  87. // mav.addObject("curMonth", c.get(Calendar.MONTH)+"");
  88. // }else if(month == 0){
  89. // mav.addObject("curYear",(c.get(Calendar.YEAR)-1)+"");
  90. // mav.addObject("curMonth", "12");
  91. // }else{
  92. // mav.addObject("curMonth", "0"+c.get(Calendar.MONTH));
  93. // }
  94. // TSUser user = (TSUser) request.getSession().getAttribute(ResourceUtil.LOCAL_CLINET_USER);
  95. //
  96. // //默认HR权限
  97. // String rolefalg ="1";
  98. // //查询用户角色
  99. // String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  100. // List<UserRoleDto> userRolelist = statsMinidaoDao.getUserRoleList(user.getId(),authSql);
  101. // for(UserRoleDto urdto : userRolelist){
  102. // if(Constants.USER_ROLE_HR.contains(urdto.getRolecode())){
  103. // rolefalg = "1";
  104. // break;
  105. // }
  106. // if(Constants.USER_ROLE_DEPT.contains(urdto.getRolecode())){
  107. // rolefalg = "2";
  108. // break;
  109. // }
  110. // }
  111. // if(rolefalg.equals("2")){
  112. // List<ProjectDepartDto> projectDepartDtoList=dialogDealServiceI.getProjectDepartByUserId();
  113. // mav.addObject("departList", projectDepartDtoList);
  114. // }
  115. // mav.addObject("roleFlag", rolefalg);
  116. // mav.setViewName("cn/com/lzt/report/kaoqintiaozhengdemo");
  117. // return mav;
  118. // }
  119. //
  120. //
  121. // @RequestMapping(params = "getKaoQinTiaoZhengTime")
  122. // @ResponseBody
  123. // public Map<String,Object> getKaoQinTiaoZhengTime(HttpServletRequest request,WageDto wageEntity) {
  124. // Map<String,Object> result = new HashMap<String,Object>();
  125. // List<String> xAxisData = new ArrayList<String>();
  126. // String month = wageEntity.getAttYear()+"-"+wageEntity.getAttMonth();
  127. //
  128. // List<KaoQinModifyEntity> kaoqinDtoList = rptDao.getKaoQinPaihangTime(month);
  129. //
  130. // ArrayList<ChartSeriesDto> series = new ArrayList<ChartSeriesDto>();//series值
  131. // ChartSeriesDto csdto = new ChartSeriesDto();
  132. // csdto.setName("考勤修改时长(分钟)");
  133. // csdto.setType("bar");
  134. // csdto.setBarMaxWidth(30);
  135. // List<DataDto> datalist = new ArrayList<DataDto>();
  136. // for(int i= 0 ; i < kaoqinDtoList.size() ; i++){
  137. // DataDto dd = new DataDto();
  138. // dd.setValue(String.valueOf(kaoqinDtoList.get(i).getTotal()));
  139. // datalist.add(dd);
  140. // xAxisData.add(kaoqinDtoList.get(i).getName());
  141. // }
  142. // csdto.setData(datalist.toArray());
  143. // series.add(csdto);
  144. // ChartMultLineDto cmlDto = new ChartMultLineDto();
  145. // cmlDto.setxAxisData(xAxisData.toArray());
  146. // cmlDto.setSeries(series);
  147. // if( kaoqinDtoList== null || kaoqinDtoList.size() == 0){
  148. // cmlDto.setNoData(true);
  149. // }
  150. // result.put("cdata", cmlDto);
  151. // result.put("tdata", kaoqinDtoList);
  152. // request.getSession().setAttribute("kaoqinModify", kaoqinDtoList);
  153. // return result;
  154. // }
  155. //
  156. // @RequestMapping(params = "kaoqintiaozhengCountDemo")
  157. // public ModelAndView kaoqintiaozhengCountdemo(HttpServletRequest request) {
  158. // ModelAndView mav = new ModelAndView();
  159. // Calendar c = Calendar.getInstance();
  160. // mav.addObject("curYear",c.get(Calendar.YEAR)+"");
  161. // int month = c.get(Calendar.MONTH);
  162. // if(month > 9){
  163. // mav.addObject("curMonth", c.get(Calendar.MONTH)+"");
  164. // }else if(month == 0){
  165. // mav.addObject("curYear",(c.get(Calendar.YEAR)-1)+"");
  166. // mav.addObject("curMonth", "12");
  167. // }else{
  168. // mav.addObject("curMonth", "0"+c.get(Calendar.MONTH));
  169. // }
  170. // TSUser user = (TSUser) request.getSession().getAttribute(ResourceUtil.LOCAL_CLINET_USER);
  171. //
  172. // //默认HR权限
  173. // String rolefalg ="1";
  174. // //查询用户角色
  175. // String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  176. // List<UserRoleDto> userRolelist = statsMinidaoDao.getUserRoleList(user.getId(),authSql);
  177. // for(UserRoleDto urdto : userRolelist){
  178. // if(Constants.USER_ROLE_HR.contains(urdto.getRolecode())){
  179. // rolefalg = "1";
  180. // break;
  181. // }
  182. // if(Constants.USER_ROLE_DEPT.contains(urdto.getRolecode())){
  183. // rolefalg = "2";
  184. // break;
  185. // }
  186. // }
  187. // if(rolefalg.equals("2")){
  188. // List<ProjectDepartDto> projectDepartDtoList=dialogDealServiceI.getProjectDepartByUserId();
  189. // mav.addObject("departList", projectDepartDtoList);
  190. // }
  191. // mav.addObject("roleFlag", rolefalg);
  192. // mav.setViewName("cn/com/lzt/report/kaoqintiaozhengCountdemo");
  193. // return mav;
  194. // }
  195. //
  196. //
  197. // @RequestMapping(params = "getKaoQinTiaoZhengCount")
  198. // @ResponseBody
  199. // public Map<String,Object> getKaoQinTiaoZhengCount(HttpServletRequest request,WageDto wageEntity) {
  200. // Map<String,Object> result = new HashMap<String,Object>();
  201. // List<String> xAxisData = new ArrayList<String>();
  202. // String month = wageEntity.getAttYear()+"-"+wageEntity.getAttMonth();
  203. // List<KaoQinModifyEntity> kaoqinDtoList = new ArrayList<KaoQinModifyEntity>();
  204. // if(!StringUtil.isEmpty(wageEntity.getPid())){
  205. // kaoqinDtoList = rptDao.getKaoQinPaihangCountProject(month, wageEntity.getPid());
  206. // }
  207. // else if (!StringUtil.isEmpty(wageEntity.getDeptId())) {
  208. // kaoqinDtoList = rptDao.getKaoQinPaihangCountPerson(month, wageEntity.getDeptId());
  209. // }
  210. // else
  211. // kaoqinDtoList = rptDao.getKaoQinPaihangCount(month);
  212. //
  213. // ArrayList<ChartSeriesDto> series = new ArrayList<ChartSeriesDto>();//series值
  214. // ChartSeriesDto csdto = new ChartSeriesDto();
  215. // csdto.setName("考勤修改次数(次)");
  216. // csdto.setType("bar");
  217. // csdto.setBarMaxWidth(30);
  218. // List<DataDto> datalist = new ArrayList<DataDto>();
  219. // for(int i= 0 ; i < kaoqinDtoList.size() ; i++){
  220. // DataDto dd = new DataDto();
  221. // dd.setId(kaoqinDtoList.get(i).getId());
  222. // dd.setValue(String.valueOf(kaoqinDtoList.get(i).getCount()));
  223. // datalist.add(dd);
  224. // xAxisData.add(kaoqinDtoList.get(i).getName());
  225. // }
  226. // csdto.setData(datalist.toArray());
  227. // series.add(csdto);
  228. // ChartMultLineDto cmlDto = new ChartMultLineDto();
  229. // cmlDto.setxAxisData(xAxisData.toArray());
  230. // cmlDto.setSeries(series);
  231. // if( kaoqinDtoList== null || kaoqinDtoList.size() == 0){
  232. // cmlDto.setNoData(true);
  233. // }
  234. // result.put("cdata", cmlDto);
  235. // result.put("tdata", kaoqinDtoList);
  236. // request.getSession().setAttribute("kaoqinModify", kaoqinDtoList);
  237. // return result;
  238. // }
  239. @RequestMapping(params = "taskstats-org")
  240. public ModelAndView taskstatsorg(HttpServletRequest request) {
  241. ModelAndView mav = new ModelAndView();
  242. Calendar c = Calendar.getInstance();
  243. mav.addObject("curYear",c.get(Calendar.YEAR)+"");
  244. int month = c.get(Calendar.MONTH);
  245. if(month > 9){
  246. mav.addObject("curMonth", c.get(Calendar.MONTH)+"");
  247. }else if(month == 0){
  248. mav.addObject("curYear",(c.get(Calendar.YEAR)-1)+"");
  249. mav.addObject("curMonth", "12");
  250. }else{
  251. mav.addObject("curMonth", "0"+c.get(Calendar.MONTH));
  252. }
  253. // TSUser user = (TSUser) request.getSession().getAttribute(ResourceUtil.LOCAL_CLINET_USER);
  254. //
  255. // //默认HR权限
  256. // String rolefalg ="1";
  257. // //查询用户角色
  258. // String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  259. // List<UserRoleDto> userRolelist = statsMinidaoDao.getUserRoleList(user.getId(),authSql);
  260. // for(UserRoleDto urdto : userRolelist){
  261. // if(Constants.USER_ROLE_HR.contains(urdto.getRolecode())){
  262. // rolefalg = "1";
  263. // break;
  264. // }
  265. // if(Constants.USER_ROLE_DEPT.contains(urdto.getRolecode())){
  266. // rolefalg = "2";
  267. // break;
  268. // }
  269. // }
  270. // if(rolefalg.equals("2")){
  271. // List<ProjectDepartDto> projectDepartDtoList=dialogDealServiceI.getProjectDepartByUserId();
  272. // mav.addObject("departList", projectDepartDtoList);
  273. // }
  274. // mav.addObject("roleFlag", rolefalg);
  275. mav.setViewName("com/xcgl/reports/taskstats-org");
  276. return mav;
  277. }
  278. @RequestMapping(params="taskStatsOrgData")
  279. @ResponseBody
  280. public Map<String,Object> taskStatsOrgData(HttpServletRequest request,UserEntity userEntity) {
  281. Map<String,Object> result = new HashMap<String,Object>();
  282. List<String> xAxisData = new ArrayList<String>();
  283. List<String> yearMonths = new ArrayList<String>();
  284. List<TaskStats> statsList = new ArrayList<TaskStats>();
  285. List<TaskStats> tData = new ArrayList<TaskStats>();
  286. //如果是月频,需要查询某年某月
  287. if(userEntity.getAttType() == 0){
  288. yearMonths.add(userEntity.getAttYear()+"-"+userEntity.getAttMonth());
  289. }else if(userEntity.getAttType() == 1){
  290. yearMonths = DataUtil.getYearMonthList(userEntity.getAttYear(), userEntity.getAttQuarters());
  291. }
  292. userEntity.setYearMonthList(yearMonths);
  293. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  294. MiniDaoPage<TaskStats> list = new MiniDaoPage<TaskStats>();
  295. list = rptDao.taskStatsOrgData(userEntity, authSql);
  296. statsList = list.getResults();
  297. for(TaskStats stats : statsList){
  298. xAxisData.add(stats.getName());
  299. }
  300. ArrayList<ChartSeriesDto> series = new ArrayList<ChartSeriesDto>();//series值
  301. ChartSeriesDto csdto = new ChartSeriesDto();
  302. csdto.setName("工作数量");
  303. csdto.setType("bar");
  304. csdto.setBarWidth(12);
  305. List<DataDto> datalist = new ArrayList<DataDto>();
  306. for(int i= 0 ; i < statsList.size() ; i++){
  307. DataDto dd = new DataDto();
  308. dd.setId(statsList.get(i).getId());
  309. dd.setValue(String.valueOf(statsList.get(i).getTaskTotal()));
  310. datalist.add(dd);
  311. }
  312. csdto.setData(datalist.toArray());
  313. series.add(csdto);
  314. ChartSeriesDto csdto_nofinishnum = new ChartSeriesDto();
  315. csdto_nofinishnum.setName("未完成工作数量");
  316. csdto_nofinishnum.setType("bar");
  317. csdto_nofinishnum.setBarWidth(12);
  318. List<DataDto> datalist_nofinishnum = new ArrayList<DataDto>();
  319. for(int i= 0 ; i < statsList.size() ; i++){
  320. DataDto dd = new DataDto();
  321. dd.setId(statsList.get(i).getId());
  322. dd.setValue(String.valueOf(statsList.get(i).getNoFinishTaskTotal()));
  323. datalist_nofinishnum.add(dd);
  324. }
  325. csdto_nofinishnum.setData(datalist_nofinishnum.toArray());
  326. series.add(csdto_nofinishnum);
  327. ChartSeriesDto csdto_nofinish = new ChartSeriesDto();
  328. csdto_nofinish.setName("未完成率");
  329. csdto_nofinish.setType("bar");
  330. csdto_nofinish.setBarWidth(12);
  331. List<DataDto> datalist_nofinish = new ArrayList<DataDto>();
  332. for(int i= 0 ; i < statsList.size() ; i++){
  333. DataDto dd = new DataDto();
  334. dd.setId(statsList.get(i).getId());
  335. dd.setValue(DecimalUtils.formatToStr( statsList.get(i).getNoFinishProportion().doubleValue()));
  336. datalist_nofinish.add(dd);
  337. }
  338. csdto_nofinish.setData(datalist_nofinish.toArray());
  339. series.add(csdto_nofinish);
  340. ChartMultLineDto cmlDto = new ChartMultLineDto();
  341. cmlDto.setxAxisData(xAxisData.toArray());
  342. cmlDto.setSeries(series);
  343. if( statsList== null || statsList.size() == 0){
  344. cmlDto.setNoData(true);
  345. }
  346. result.put("cdata", cmlDto);
  347. //statsList排序重置
  348. for(int i = statsList.size()-1;i > -1;i--) {
  349. tData.add(statsList.get(i));
  350. }
  351. result.put("tdata", tData);
  352. request.getSession().setAttribute("taskStats", statsList);
  353. return result;
  354. }
  355. @RequestMapping(params="taskStats-orguserdata")
  356. @ResponseBody
  357. public Map<String,Object> taskStatsorguserdata(HttpServletRequest request,UserEntity userEntity) {
  358. Map<String,Object> result = new HashMap<String,Object>();
  359. List<String> xAxisData = new ArrayList<String>();
  360. List<String> yearMonths = new ArrayList<String>();
  361. List<TaskStats> statsList = new ArrayList<TaskStats>();
  362. //如果是月频,需要查询某年某月
  363. if(userEntity.getAttType() == 0){
  364. yearMonths.add(userEntity.getAttYear()+"-"+userEntity.getAttMonth());
  365. }else if(userEntity.getAttType() == 1){
  366. yearMonths = DataUtil.getYearMonthList(userEntity.getAttYear(), userEntity.getAttQuarters());
  367. }
  368. userEntity.setYearMonthList(yearMonths);
  369. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  370. MiniDaoPage<TaskStats> list = new MiniDaoPage<TaskStats>();
  371. list = rptDao.taskStatsOrgUserData(userEntity, authSql);
  372. statsList = list.getResults();
  373. for(TaskStats stats : statsList){
  374. xAxisData.add(stats.getName());
  375. }
  376. ArrayList<ChartSeriesDto> series = new ArrayList<ChartSeriesDto>();//series值
  377. ChartSeriesDto csdto = new ChartSeriesDto();
  378. csdto.setName("工作数量");
  379. csdto.setType("bar");
  380. csdto.setBarMaxWidth(12);
  381. List<DataDto> datalist = new ArrayList<DataDto>();
  382. for(int i= 0 ; i < statsList.size() ; i++){
  383. DataDto dd = new DataDto();
  384. dd.setId(statsList.get(i).getId());
  385. dd.setValue(String.valueOf(statsList.get(i).getTaskTotal()));
  386. datalist.add(dd);
  387. }
  388. csdto.setData(datalist.toArray());
  389. series.add(csdto);
  390. ChartSeriesDto csdto_nofinishnum = new ChartSeriesDto();
  391. csdto_nofinishnum.setName("未完成工作数量");
  392. csdto_nofinishnum.setType("bar");
  393. csdto_nofinishnum.setBarWidth(12);
  394. List<DataDto> datalist_nofinishnum = new ArrayList<DataDto>();
  395. for(int i= 0 ; i < statsList.size() ; i++){
  396. DataDto dd = new DataDto();
  397. dd.setId(statsList.get(i).getId());
  398. dd.setValue(String.valueOf(statsList.get(i).getNoFinishTaskTotal()));
  399. datalist_nofinishnum.add(dd);
  400. }
  401. csdto_nofinishnum.setData(datalist_nofinishnum.toArray());
  402. series.add(csdto_nofinishnum);
  403. ChartSeriesDto csdto_nofinish = new ChartSeriesDto();
  404. csdto_nofinish.setName("未完成率");
  405. csdto_nofinish.setType("bar");
  406. csdto_nofinish.setBarWidth(12);
  407. List<DataDto> datalist_nofinish = new ArrayList<DataDto>();
  408. for(int i= 0 ; i < statsList.size() ; i++){
  409. DataDto dd = new DataDto();
  410. dd.setId(statsList.get(i).getId());
  411. dd.setValue(DecimalUtils.formatToStr( statsList.get(i).getNoFinishProportion().doubleValue()));
  412. datalist_nofinish.add(dd);
  413. }
  414. csdto_nofinish.setData(datalist_nofinish.toArray());
  415. series.add(csdto_nofinish);
  416. ChartMultLineDto cmlDto = new ChartMultLineDto();
  417. cmlDto.setxAxisData(xAxisData.toArray());
  418. cmlDto.setSeries(series);
  419. if( statsList== null || statsList.size() == 0){
  420. cmlDto.setNoData(true);
  421. }
  422. result.put("cdata", cmlDto);
  423. result.put("tdata", statsList);
  424. request.getSession().setAttribute("taskStats", statsList);
  425. return result;
  426. }
  427. @RequestMapping(params = "taskStatsType")
  428. public ModelAndView taskStatsType(HttpServletRequest request) {
  429. ModelAndView mav = new ModelAndView();
  430. Calendar c = Calendar.getInstance();
  431. mav.addObject("curYear",c.get(Calendar.YEAR)+"");
  432. int month = c.get(Calendar.MONTH);
  433. if(month > 9){
  434. mav.addObject("curMonth", c.get(Calendar.MONTH)+"");
  435. }else if(month == 0){
  436. mav.addObject("curYear",(c.get(Calendar.YEAR)-1)+"");
  437. mav.addObject("curMonth", "12");
  438. }else{
  439. mav.addObject("curMonth", "0"+c.get(Calendar.MONTH));
  440. }
  441. // TSUser user = (TSUser) request.getSession().getAttribute(ResourceUtil.LOCAL_CLINET_USER);
  442. //
  443. // //默认HR权限
  444. // String rolefalg ="1";
  445. // //查询用户角色
  446. // String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  447. // List<UserRoleDto> userRolelist = statsMinidaoDao.getUserRoleList(user.getId(),authSql);
  448. // for(UserRoleDto urdto : userRolelist){
  449. // if(Constants.USER_ROLE_HR.contains(urdto.getRolecode())){
  450. // rolefalg = "1";
  451. // break;
  452. // }
  453. // if(Constants.USER_ROLE_DEPT.contains(urdto.getRolecode())){
  454. // rolefalg = "2";
  455. // break;
  456. // }
  457. // }
  458. // if(rolefalg.equals("2")){
  459. // List<ProjectDepartDto> projectDepartDtoList=dialogDealServiceI.getProjectDepartByUserId();
  460. // mav.addObject("departList", projectDepartDtoList);
  461. // }
  462. // mav.addObject("roleFlag", rolefalg);
  463. mav.setViewName("com/xcgl/reports/taskstats-type");
  464. return mav;
  465. }
  466. @RequestMapping(params="taskStatsTypedata")
  467. @ResponseBody
  468. public Map<String,Object> taskStatsTypedata(HttpServletRequest request,UserEntity userEntity) {
  469. Map<String,Object> result = new HashMap<String,Object>();
  470. List<String> xAxisData = new ArrayList<String>();
  471. List<String> yearMonths = new ArrayList<String>();
  472. List<TaskStats> statsList = new ArrayList<TaskStats>();
  473. //如果是月频,需要查询某年某月
  474. if(userEntity.getAttType() == 0){
  475. yearMonths.add(userEntity.getAttYear()+"-"+userEntity.getAttMonth());
  476. }else if(userEntity.getAttType() == 1){
  477. yearMonths = DataUtil.getYearMonthList(userEntity.getAttYear(), userEntity.getAttQuarters());
  478. }
  479. userEntity.setYearMonthList(yearMonths);
  480. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  481. MiniDaoPage<TaskStats> list = new MiniDaoPage<TaskStats>();
  482. list = rptDao.taskStatsTypeData(userEntity, authSql);
  483. statsList = list.getResults();
  484. for(TaskStats stats : statsList){
  485. xAxisData.add(stats.getName());
  486. }
  487. ArrayList<ChartSeriesDto> series = new ArrayList<ChartSeriesDto>();//series值
  488. ChartSeriesDto csdto = new ChartSeriesDto();
  489. csdto.setName("工作数量");
  490. csdto.setType("bar");
  491. csdto.setBarMaxWidth(15);
  492. List<DataDto> datalist = new ArrayList<DataDto>();
  493. for(int i= 0 ; i < statsList.size() ; i++){
  494. DataDto dd = new DataDto();
  495. dd.setId(statsList.get(i).getId());
  496. dd.setValue(String.valueOf(statsList.get(i).getTaskTotal()));
  497. datalist.add(dd);
  498. }
  499. csdto.setData(datalist.toArray());
  500. series.add(csdto);
  501. ChartSeriesDto csdto_nofinishnum = new ChartSeriesDto();
  502. csdto_nofinishnum.setName("未完成工作数量");
  503. csdto_nofinishnum.setType("bar");
  504. csdto_nofinishnum.setBarWidth(15);
  505. List<DataDto> datalist_nofinishnum = new ArrayList<DataDto>();
  506. for(int i= 0 ; i < statsList.size() ; i++){
  507. DataDto dd = new DataDto();
  508. dd.setId(statsList.get(i).getId());
  509. dd.setValue(String.valueOf(statsList.get(i).getNoFinishTaskTotal()));
  510. datalist_nofinishnum.add(dd);
  511. }
  512. csdto_nofinishnum.setData(datalist_nofinishnum.toArray());
  513. series.add(csdto_nofinishnum);
  514. ChartSeriesDto csdto_nofinish = new ChartSeriesDto();
  515. csdto_nofinish.setName("未完成率");
  516. csdto_nofinish.setType("bar");
  517. csdto_nofinish.setBarWidth(15);
  518. List<DataDto> datalist_nofinish = new ArrayList<DataDto>();
  519. for(int i= 0 ; i < statsList.size() ; i++){
  520. DataDto dd = new DataDto();
  521. dd.setId(statsList.get(i).getId());
  522. dd.setValue(DecimalUtils.formatToStr( statsList.get(i).getNoFinishProportion().doubleValue()));
  523. datalist_nofinish.add(dd);
  524. }
  525. csdto_nofinish.setData(datalist_nofinish.toArray());
  526. series.add(csdto_nofinish);
  527. ChartMultLineDto cmlDto = new ChartMultLineDto();
  528. cmlDto.setxAxisData(xAxisData.toArray());
  529. cmlDto.setSeries(series);
  530. if( statsList== null || statsList.size() == 0){
  531. cmlDto.setNoData(true);
  532. }
  533. result.put("cdata", cmlDto);
  534. result.put("tdata", statsList);
  535. request.getSession().setAttribute("taskStats", statsList);
  536. return result;
  537. }
  538. @RequestMapping(params = "activitiStatsOrg")
  539. public String activitiStatsOrg(HttpServletRequest request) {
  540. activitiStatsInitSearchCondition(request);
  541. return "com/xcgl/reports/activiti_stats_org";
  542. }
  543. @RequestMapping(params = "activitiStatsType")
  544. public String activitiStatsType(HttpServletRequest request) {
  545. activitiStatsInitSearchCondition(request);
  546. return "com/xcgl/reports/activiti_stats_type";
  547. }
  548. private void activitiStatsInitSearchCondition(HttpServletRequest request){
  549. Calendar c = Calendar.getInstance();
  550. request.setAttribute("curYear",c.get(Calendar.YEAR));
  551. int month = c.get(Calendar.MONTH);
  552. if(month > 9){
  553. request.setAttribute("curMonth",c.get(Calendar.MONTH));
  554. }else if(month == 0){
  555. request.setAttribute("curYear",(c.get(Calendar.YEAR)-1)+"");
  556. request.setAttribute("curMonth", "12");
  557. }else{
  558. request.setAttribute("curMonth", "0"+c.get(Calendar.MONTH));
  559. }
  560. }
  561. @RequestMapping(params="activitiStatsOrgData")
  562. @ResponseBody
  563. public Map<String,Object> activitiStatsOrgData(HttpServletRequest request,UserEntity userEntity) {
  564. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  565. String tookTime = ResourceUtil.getConfigByName("activiti.task.tooktime");
  566. MiniDaoPage<ActivitiStats> list= rptDao.activitiStatsOrgData(userEntity,Integer.valueOf(tookTime),authSql);
  567. Map<String,Object> result = activitiStatsDataParse(request,list,0);
  568. return result;
  569. }
  570. @RequestMapping(params="activitiStatsUserData")
  571. @ResponseBody
  572. public Map<String,Object> activitiStatsUserData(HttpServletRequest request,UserEntity userEntity) {
  573. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  574. String tookTime = ResourceUtil.getConfigByName("activiti.task.tooktime");
  575. MiniDaoPage<ActivitiStats> list= rptDao.activitiStatsUserData(userEntity,Integer.valueOf(tookTime),authSql);
  576. Map<String,Object> result = activitiStatsDataParse(request,list,1);
  577. return result;
  578. }
  579. @RequestMapping(params="activitiStatsTypeData")
  580. @ResponseBody
  581. public Map<String,Object> activitiStatsTypeData(HttpServletRequest request,UserEntity userEntity) {
  582. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  583. String tookTime = ResourceUtil.getConfigByName("activiti.task.tooktime");
  584. MiniDaoPage<ActivitiStats> list= rptDao.activitiStatsTypeData(userEntity,Integer.valueOf(tookTime),authSql);
  585. Map<String,Object> result = activitiStatsDataParse(request,list,2);
  586. return result;
  587. }
  588. private Map<String,Object> activitiStatsDataParse(HttpServletRequest request,MiniDaoPage<ActivitiStats> list,int type){
  589. Map<String,Object> result = new HashMap<String,Object>();
  590. List<String> xAxisData = new ArrayList<String>();
  591. List<ActivitiStats> statsList = new ArrayList<>();
  592. List<TaskStats> tData = new ArrayList<TaskStats>();
  593. statsList = list.getResults();
  594. for(TaskStats stats : statsList){
  595. xAxisData.add(stats.getName());
  596. }
  597. ArrayList<ChartSeriesDto> series = new ArrayList<ChartSeriesDto>();//series值
  598. ChartSeriesDto csdto = new ChartSeriesDto();
  599. csdto.setName("审批数量");
  600. csdto.setType("bar");
  601. csdto.setBarWidth(12);
  602. List<DataDto> datalist = new ArrayList<DataDto>();
  603. for(int i= 0 ; i < statsList.size() ; i++){
  604. DataDto dd = new DataDto();
  605. dd.setId(statsList.get(i).getId());
  606. dd.setValue(String.valueOf(statsList.get(i).getTaskTotal()));
  607. datalist.add(dd);
  608. }
  609. csdto.setData(datalist.toArray());
  610. series.add(csdto);
  611. ChartSeriesDto csdto_nofinishnum = new ChartSeriesDto();
  612. csdto_nofinishnum.setName("未完成审批数量");
  613. csdto_nofinishnum.setType("bar");
  614. csdto_nofinishnum.setBarWidth(12);
  615. List<DataDto> datalist_nofinishnum = new ArrayList<DataDto>();
  616. for(int i= 0 ; i < statsList.size() ; i++){
  617. DataDto dd = new DataDto();
  618. dd.setId(statsList.get(i).getId());
  619. dd.setValue(String.valueOf(statsList.get(i).getNoFinishTaskTotal()));
  620. datalist_nofinishnum.add(dd);
  621. }
  622. csdto_nofinishnum.setData(datalist_nofinishnum.toArray());
  623. series.add(csdto_nofinishnum);
  624. /*ChartSeriesDto csdto_nofinish = new ChartSeriesDto();
  625. csdto_nofinish.setName("未完成率");
  626. csdto_nofinish.setType("bar");
  627. csdto_nofinish.setBarWidth(12);
  628. List<DataDto> datalist_nofinish = new ArrayList<DataDto>();
  629. for(int i= 0 ; i < statsList.size() ; i++){
  630. DataDto dd = new DataDto();
  631. dd.setId(statsList.get(i).getId());
  632. dd.setValue(DecimalUtils.formatToStr( statsList.get(i).getNoFinishProportion().doubleValue()));
  633. datalist_nofinish.add(dd);
  634. }
  635. csdto_nofinish.setData(datalist_nofinish.toArray());
  636. series.add(csdto_nofinish);*/
  637. if(type!=2) {//按类型统计 不显示逾期
  638. ChartSeriesDto overdue = new ChartSeriesDto();
  639. overdue.setName("逾期数量");
  640. overdue.setType("bar");
  641. overdue.setBarWidth(12);
  642. List<DataDto> datalist_overdue = new ArrayList<DataDto>();
  643. for (int i = 0; i < statsList.size(); i++) {
  644. DataDto dd = new DataDto();
  645. dd.setId(statsList.get(i).getId());
  646. dd.setValue(String.valueOf(statsList.get(i).getOverdueCount()));
  647. datalist_overdue.add(dd);
  648. }
  649. overdue.setData(datalist_overdue.toArray());
  650. series.add(overdue);
  651. }
  652. ChartMultLineDto cmlDto = new ChartMultLineDto();
  653. cmlDto.setxAxisData(xAxisData.toArray());
  654. cmlDto.setSeries(series);
  655. if( statsList== null || statsList.size() == 0){
  656. cmlDto.setNoData(true);
  657. }
  658. result.put("cdata", cmlDto);
  659. //statsList排序重置
  660. for(int i = statsList.size()-1;i > -1;i--) {
  661. tData.add(statsList.get(i));
  662. }
  663. result.put("tdata", tData);
  664. request.getSession().setAttribute("taskStats", statsList);
  665. return result;
  666. }
  667. @RequestMapping(params = "activitiOvertime")
  668. public ModelAndView activitiOvertime(HttpServletRequest request) {
  669. return new ModelAndView("com/xcgl/reports/activiti_overtime");
  670. }
  671. @RequestMapping(params = "activitiOvertimeData")
  672. public void activitiOvertimeData(HttpServletRequest request, HttpServletResponse response,DataGrid dataGrid) {
  673. String tookTime = ResourceUtil.getConfigByName("activiti.task.tooktime");
  674. MiniDaoPage<?> page = rptDao.activitiOvertimeList(Integer.valueOf(tookTime),dataGrid.getPage(), dataGrid.getRows());
  675. dataGrid.setResults(page.getResults());
  676. dataGrid.setTotal(page.getTotal());
  677. TagUtil.datagrid(response, dataGrid);
  678. }
  679. @RequestMapping(params = "exportActivitiOvertime")
  680. public String exportActivitiOvertime( HttpServletRequest request, HttpServletResponse response,ModelMap map)
  681. throws Exception {
  682. // @SuppressWarnings("unchecked")
  683. // String exceltitles = "员工姓名,未完成签报名称,应完成时间";
  684. // String exceltitleIds = "realName,title,shouldDoneTime";
  685. String tookTime = ResourceUtil.getConfigByName("activiti.task.tooktime");
  686. MiniDaoPage<ActivitiOvertimeDto> page = rptDao.activitiOvertimeList(Integer.valueOf(tookTime), 1, 10000);
  687. List<Object> dataList = new ArrayList<Object>();
  688. for (ActivitiOvertimeDto object : page.getResults()) {
  689. dataList.add(object);
  690. }
  691. // ExportExcel ex = new ExportExcel("签报逾期明细", exceltitles.split(","), "签报逾期明细", dataList,
  692. // exceltitleIds.split(","));
  693. // ex.export(response);
  694. map.put(NormalExcelConstants.FILE_NAME, "签报系统逾期签报明细");
  695. map.put(NormalExcelConstants.CLASS, ActivitiOvertimeDto.class);
  696. ExportParams param = new ExportParams("签报系统逾期签报明细", "统计周期:(01.01 00:00 - " + DateUtils.formatDate(new Date(), "MM.dd HH:mm") + ")","逾期签报明细");
  697. param.setAddIndex(true);
  698. map.put(NormalExcelConstants.PARAMS,param );
  699. map.put(NormalExcelConstants.DATA_LIST, dataList);
  700. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  701. }
  702. @RequestMapping(params = "exportExcelStats")
  703. @ResponseBody
  704. public void exportExcelStats(String exceltitles,String exceltitleIds ,Integer flag,String excelname,
  705. String dataKey, String filename, HttpServletRequest request, HttpServletResponse response)
  706. throws Exception {
  707. @SuppressWarnings("unchecked")
  708. List<Object> dataList = (List<Object>) request.getSession().getAttribute(dataKey);
  709. ExportExcel ex = new ExportExcel(excelname, exceltitles.split(","), filename, dataList,
  710. exceltitleIds.split(","));
  711. ex.export(response);
  712. }
  713. @RequestMapping(params = "activitimyactiviti")
  714. public ModelAndView activitimyactiviti(HttpServletRequest request) {
  715. return new ModelAndView("com/xcgl/reports/activiti_myactiviti");
  716. }
  717. /**
  718. * 此为demo,查询某个项目发起的所有签报、签报状态、工作流状态等信息。
  719. * */
  720. @RequestMapping(params = "myactivitiData")
  721. public void myactivitiData(HttpServletRequest request, HttpServletResponse response,DataGrid dataGrid) {
  722. String sql = "select bu.realname as '发起人' \n" +
  723. " ,hivar.text_ as title \n" +
  724. " ,act.ACT_NAME_ as stepname \n" +
  725. " ,proc.END_TIME_ as endTime,case when proc.end_time_ is null then '0' else '1' end as activitistatus \n" +
  726. " ,tbu.realname as realName , '1' as taskstatus \n" +
  727. " from ACT_HI_PROCINST proc\n" +
  728. " left join act_hi_varinst hivar on hivar.PROC_INST_ID_=proc.PROC_INST_ID_ and hivar.NAME_='bpm_biz_title'\n" +
  729. " left join act_hi_actinst act on act.PROC_INST_ID_ = proc.PROC_INST_ID_ and act.DURATION_ is null\n" +
  730. " left join t_s_base_user bu on proc.START_USER_ID_ = bu.username and bu.delete_flag = 0\n" +
  731. " left join t_s_user_org org on org.user_id=bu.id and ifpluralism='0' and org.status='0'\n" +
  732. " left join ACT_HI_TASKINST task on task.PROC_INST_ID_ = proc.id_ and task.end_time_ is null\n" +
  733. " left join t_s_base_user tbu on tbu.username = task.ASSIGNEE_\n" +
  734. " where left(proc.start_time_ ,4) > '2019'\n" +
  735. " order by proc.START_TIME_ desc;";
  736. List<Map<String,Object>> ret = systemService.findForJdbc(sql);
  737. //设置第一个为未完成
  738. if(ret.size() > 0) {
  739. ret.get(0).put("taskstatus", "0");
  740. }
  741. dataGrid.setResults(ret);
  742. TagUtil.datagrid(response, dataGrid);
  743. }
  744. @RequestMapping(params = "activititask")
  745. public ModelAndView activititask(HttpServletRequest request) {
  746. return new ModelAndView("com/xcgl/reports/activiti_task");
  747. }
  748. /**
  749. * 此为demo,查询某个签报,对应的工作流状态信息。
  750. * */
  751. @RequestMapping(params = "myactivititaskData")
  752. public void activititaskData(HttpServletRequest request, HttpServletResponse response,DataGrid dataGrid) {
  753. List<Map<String, Object>> res = new ArrayList<Map<String,Object>>();
  754. Map<String, Object> task = new HashMap<String, Object>();
  755. task.put("title", "江秋芳平级调动,完成档案调动工作");
  756. task.put("endTime", null);
  757. task.put("realname", "方志刚");
  758. task.put("taskstatus", "0");
  759. res.add(task);
  760. task = new HashMap<String, Object>();
  761. task.put("title", "江秋芳平级调动,完成排班工作");
  762. task.put("endTime", "2020-01-03 12:33:04");
  763. task.put("realname", "王宇宸");
  764. task.put("taskstatus", "1");
  765. res.add(task);
  766. task = new HashMap<String, Object>();
  767. task.put("title", "江秋芳平级调动,完成配置工资工作");
  768. task.put("endTime", "2020-01-07 10:03:09");
  769. task.put("realname", "朱红霞");
  770. task.put("taskstatus", "1");
  771. res.add(task);
  772. dataGrid.setResults(res);
  773. TagUtil.datagrid(response, dataGrid);
  774. }
  775. @RequestMapping(params = "activitiOvertimeSub")
  776. public ModelAndView activitiOvertimeSub(HttpServletRequest request) {
  777. return new ModelAndView("com/xcgl/reports/activiti_overtime_sub");
  778. }
  779. @RequestMapping(params = "activitiOvertimeSubData")
  780. public void activitiOvertimeSubData(HttpServletRequest request, HttpServletResponse response,DataGrid dataGrid) {
  781. String tookTime = ResourceUtil.getConfigByName("activiti.task.tooktime");
  782. String month = request.getParameter("month");
  783. if(StringUtil.isEmpty(month)) {
  784. month = DataUtils.formatDate(new Date()).substring(0,7);
  785. }
  786. MiniDaoPage<?> page = rptDao.activitiOvertimeSum(Integer.valueOf(tookTime), month,dataGrid.getPage(), dataGrid.getRows());
  787. dataGrid.setResults(page.getResults());
  788. dataGrid.setTotal(page.getTotal());
  789. TagUtil.datagrid(response, dataGrid);
  790. }
  791. @RequestMapping(params = "activitiOvertimeSubDetail")
  792. public ModelAndView activitiOvertimeSubDetail(HttpServletRequest request) {
  793. String username = request.getParameter("username");
  794. request.setAttribute("username", username);
  795. String month = request.getParameter("month");
  796. request.setAttribute("month", month);
  797. return new ModelAndView("com/xcgl/reports/activiti_overtime_sub_detail");
  798. }
  799. @RequestMapping(params = "activitiOvertimeSubDetailData")
  800. public void activitiOvertimeSubDetailData(HttpServletRequest request, HttpServletResponse response,DataGrid dataGrid) {
  801. String tookTime = ResourceUtil.getConfigByName("activiti.task.tooktime");
  802. String month = request.getParameter("month");
  803. String username = request.getParameter("username");
  804. if(StringUtil.isEmpty(month)) {
  805. month = DataUtils.formatDate(new Date()).substring(0,7);
  806. }
  807. MiniDaoPage<?> page = rptDao.activitiOvertimeSumDetail(Integer.valueOf(tookTime), month,username,dataGrid.getPage(), dataGrid.getRows());
  808. dataGrid.setResults(page.getResults());
  809. dataGrid.setTotal(page.getTotal());
  810. TagUtil.datagrid(response, dataGrid);
  811. }
  812. @RequestMapping(params = "exportActivitiOvertimeSub")
  813. public String exportActivitiOvertimeSub( HttpServletRequest request, HttpServletResponse response,ModelMap map)
  814. throws Exception {
  815. String tookTime = ResourceUtil.getConfigByName("activiti.task.tooktime");
  816. String month = request.getParameter("month");
  817. if(StringUtil.isEmpty(month)) {
  818. month = DataUtils.formatDate(new Date()).substring(0,7);
  819. }
  820. MiniDaoPage<ActivitiOvertimeSumDto> page = rptDao.activitiOvertimeSum(Integer.valueOf(tookTime),month, 1, 10000);
  821. List<Object> dataList = new ArrayList<Object>();
  822. for (ActivitiOvertimeSumDto object : page.getResults()) {
  823. dataList.add(object);
  824. }
  825. map.put(NormalExcelConstants.FILE_NAME, "逾期签报统计");
  826. map.put(NormalExcelConstants.CLASS, ActivitiOvertimeSumDto.class);
  827. ExportParams param = new ExportParams("逾期签报统计", "统计周期:" + month + ")","逾期签报统计");
  828. param.setAddIndex(true);
  829. map.put(NormalExcelConstants.PARAMS,param );
  830. map.put(NormalExcelConstants.DATA_LIST, dataList);
  831. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  832. }
  833. }