WeeklyScheduleController.java 41 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012
  1. package com.xcgl.weeklyschedule.controller;
  2. import java.io.IOException;
  3. import java.math.BigDecimal;
  4. import java.net.URI;
  5. import java.text.ParseException;
  6. import java.text.SimpleDateFormat;
  7. import java.util.ArrayList;
  8. import java.util.Calendar;
  9. import java.util.Collections;
  10. import java.util.Date;
  11. import java.util.HashMap;
  12. import java.util.List;
  13. import java.util.Locale;
  14. import java.util.Map;
  15. import java.util.Set;
  16. import javax.servlet.http.HttpServletRequest;
  17. import javax.servlet.http.HttpServletResponse;
  18. import javax.validation.ConstraintViolation;
  19. import javax.validation.Validator;
  20. import org.apache.log4j.Logger;
  21. import org.jeecgframework.core.beanvalidator.BeanValidators;
  22. import org.jeecgframework.core.common.controller.BaseController;
  23. import org.jeecgframework.core.common.exception.BusinessException;
  24. import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
  25. import org.jeecgframework.core.common.model.json.AjaxJson;
  26. import org.jeecgframework.core.common.model.json.DataGrid;
  27. import org.jeecgframework.core.constant.Globals;
  28. import org.jeecgframework.core.util.DateUtils;
  29. import org.jeecgframework.core.util.ExceptionUtil;
  30. import org.jeecgframework.core.util.JeecgDataAutorUtils;
  31. import org.jeecgframework.core.util.MyBeanUtils;
  32. import org.jeecgframework.core.util.ResourceUtil;
  33. import org.jeecgframework.core.util.StringUtil;
  34. import org.jeecgframework.minidao.pojo.MiniDaoPage;
  35. import org.jeecgframework.p3.core.utils.common.StringUtils;
  36. import org.jeecgframework.poi.excel.ExcelImportUtil;
  37. import org.jeecgframework.poi.excel.entity.ExportParams;
  38. import org.jeecgframework.poi.excel.entity.ImportParams;
  39. import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
  40. import org.jeecgframework.tag.core.easyui.TagUtil;
  41. import org.jeecgframework.web.system.pojo.base.TSUser;
  42. import org.jeecgframework.web.system.service.SystemService;
  43. import org.springframework.beans.factory.annotation.Autowired;
  44. import org.springframework.http.HttpHeaders;
  45. import org.springframework.http.HttpStatus;
  46. import org.springframework.http.MediaType;
  47. import org.springframework.http.ResponseEntity;
  48. import org.springframework.stereotype.Controller;
  49. import org.springframework.ui.ModelMap;
  50. import org.springframework.web.bind.annotation.PathVariable;
  51. import org.springframework.web.bind.annotation.RequestBody;
  52. import org.springframework.web.bind.annotation.RequestMapping;
  53. import org.springframework.web.bind.annotation.RequestMethod;
  54. import org.springframework.web.bind.annotation.ResponseBody;
  55. import org.springframework.web.bind.annotation.ResponseStatus;
  56. import org.springframework.web.multipart.MultipartFile;
  57. import org.springframework.web.multipart.MultipartHttpServletRequest;
  58. import org.springframework.web.servlet.ModelAndView;
  59. import org.springframework.web.util.UriComponentsBuilder;
  60. import com.xcgl.projecttask.entity.ProjecttaskEntity;
  61. import com.xcgl.reports.dao.XcglRptDao;
  62. import com.xcgl.utils.XcglConstant;
  63. import com.xcgl.utils.XcglDateUtils;
  64. import com.xcgl.weeklyschedule.dao.WeeklyScheduleMiniDao;
  65. import com.xcgl.weeklyschedule.entity.WeeklyScheduleDayDto;
  66. import com.xcgl.weeklyschedule.entity.WeeklySchedulePartiEntity;
  67. import com.xcgl.weeklyschedule.entity.WeeklyScheduleUtils;
  68. import com.xcgl.weeklyschedule.entity.WeeklyscheduleEntity;
  69. import com.xcgl.weeklyschedule.service.WeeklyScheduleServiceI;
  70. import com.xcgl.weixin.dao.WXDao;
  71. import com.xcgl.weixin.entity.WXMultiRowViewer;
  72. import com.xcgl.weixin.entity.WXMultiRowViewerDto;
  73. import com.xcgl.weixin.service.WXServiceI;
  74. import com.xcgl.weixin.utils.WXViewerUtils;
  75. import cn.com.lzt.arrangedutyoperate.dto.UserAndUserPersonnelDto;
  76. @Controller
  77. @RequestMapping(value = "/weeklyscheduleController")
  78. public class WeeklyScheduleController extends BaseController {
  79. private static final Logger logger = Logger.getLogger(WeeklyScheduleController.class);
  80. @Autowired
  81. WeeklyScheduleServiceI weeklyscheduleService ;
  82. @Autowired
  83. private SystemService systemService;
  84. @Autowired
  85. private Validator validator;
  86. @Autowired
  87. WXDao wxdao;
  88. @Autowired
  89. private WeeklyScheduleMiniDao weeklyScheduleMiniDao;
  90. @Autowired
  91. WXServiceI wxservice;
  92. @Autowired
  93. private XcglRptDao rptDao;
  94. /**
  95. * 工作周报列表 页面跳转
  96. *
  97. * @return
  98. */
  99. @RequestMapping(params = "list")
  100. public ModelAndView list(HttpServletRequest request) {
  101. return new ModelAndView("com/xcgl/weeklyschedule/weeklyscheduleList");
  102. }
  103. @RequestMapping(params = "todayScheduledList")
  104. public ModelAndView dayScheduledList(HttpServletRequest request) {
  105. String date = request.getParameter("date");
  106. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  107. SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd EEEE",Locale.CHINA);
  108. Date today = null;
  109. try {
  110. today = sdf.parse(date);
  111. } catch (ParseException e) {
  112. org.jeecgframework.core.util.LogUtil.error(e.getMessage());
  113. }
  114. request.setAttribute("date", date);
  115. request.setAttribute("title", sdf2.format(today)+" 工作安排");
  116. request.setAttribute("htmlurl", "weeklyscheduleController.do?dayScheduledHtml&date="+date);
  117. return new ModelAndView("cn/com/lzt/wxviewer/wxMultirowViewer");
  118. }
  119. @RequestMapping(params = "dayScheduledHtml")
  120. @ResponseBody
  121. public AjaxJson dayScheduledHtml(HttpServletRequest request, HttpServletResponse response, String date) {
  122. date = request.getParameter("date");
  123. String message = null;
  124. AjaxJson j = new AjaxJson();
  125. String html= "";
  126. try {
  127. html = getDaySchelduledHtml(date);
  128. } catch (Exception e) {
  129. org.jeecgframework.core.util.LogUtil.error(e.getMessage());
  130. e.printStackTrace();
  131. }
  132. j.setObj(html);
  133. j.setMsg(message);
  134. return j;
  135. }
  136. /**
  137. * @param date
  138. * @return
  139. * @throws Exception
  140. * @throws ParseException
  141. */
  142. private String getDaySchelduledHtml(String date) throws Exception {
  143. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  144. List<WeeklyScheduleDayDto> dblist = weeklyscheduleService.getWeeklyScheduleDtosBySomeDate(sdf.parse(date));
  145. Collections.sort(dblist);
  146. List<WXMultiRowViewerDto> showlist = new ArrayList<WXMultiRowViewerDto>();
  147. for(WeeklyScheduleDayDto dbdto : dblist) {
  148. if(dbdto.getWhatAmZjl() != null && dbdto.getWhatAmZjl().length()>0) {
  149. WXMultiRowViewerDto damzjl = new WXMultiRowViewerDto();
  150. String userid = dbdto.getUserid();
  151. TSUser user = systemService.get(TSUser.class, userid);
  152. // damzjl.setDivTitle(user.getRealName()+" 上午");
  153. damzjl.setMainContent(""+user.getRealName()+": " + dbdto.getWhatAmZjl()+"【闵总安排】");
  154. damzjl.setSecondContent(dbdto.getWhereAm() == null ? "地点:无" : "地点:"+dbdto.getWhereAm());
  155. damzjl.setThirdContent(dbdto.getWhoNamesAm() == null ? "参与人:无" : "参与人:"+dbdto.getWhoNamesAm());
  156. damzjl.setRightTag("上午");
  157. showlist.add(damzjl);
  158. }
  159. if(dbdto.getWhatAm() != null && dbdto.getWhatAm().length()>0) {
  160. WXMultiRowViewerDto dam = new WXMultiRowViewerDto();
  161. String userid = dbdto.getUserid();
  162. TSUser user = systemService.get(TSUser.class, userid);
  163. // dam.setDivTitle(user.getRealName()+" 上午");
  164. dam.setMainContent(""+user.getRealName()+": " + dbdto.getWhatAm());
  165. dam.setSecondContent(dbdto.getWhereAm() == null ? "地点:无" : "地点:"+dbdto.getWhereAm());
  166. dam.setThirdContent(dbdto.getWhoNamesAm() == null ?"参与人:无" : "参与人:"+ dbdto.getWhoNamesAm());
  167. dam.setRightTag("上午");
  168. showlist.add(dam);
  169. }
  170. if(dbdto.getWhatPmZjl() != null && dbdto.getWhatPmZjl().length()>0) {
  171. WXMultiRowViewerDto dpmzjl = new WXMultiRowViewerDto();
  172. String userid = dbdto.getUserid();
  173. TSUser user = systemService.get(TSUser.class, userid);
  174. // dpmzjl.setDivTitle(user.getRealName()+" 下午");
  175. dpmzjl.setMainContent(""+user.getRealName()+": "+dbdto.getWhatPmZjl()+"【闵总安排】");
  176. dpmzjl.setSecondContent(dbdto.getWherePm()== null ? "地点:无" : "地点:"+dbdto.getWherePm());
  177. dpmzjl.setThirdContent(dbdto.getWhoNamesPm()== null ? "参与人:无" : "参与人:"+dbdto.getWhoNamesPm());
  178. dpmzjl.setRightTag("下午");
  179. showlist.add(dpmzjl);
  180. }
  181. if(dbdto.getWhatPm() != null && dbdto.getWhatPm().length()>0) {
  182. WXMultiRowViewerDto dpm = new WXMultiRowViewerDto();
  183. String userid = dbdto.getUserid();
  184. TSUser user = systemService.get(TSUser.class, userid);
  185. // dpm.setDivTitle(user.getRealName()+" 下午");
  186. dpm.setMainContent(""+user.getRealName()+": "+dbdto.getWhatPm());
  187. dpm.setSecondContent(dbdto.getWherePm()== null ? "地点:无" : "地点:"+dbdto.getWherePm());
  188. dpm.setThirdContent(dbdto.getWhoNamesPm()== null ? "参与人:无" : "参与人:"+dbdto.getWhoNamesPm());
  189. dpm.setRightTag("下午");
  190. showlist.add(dpm);
  191. }
  192. }
  193. WXMultiRowViewer viewer = new WXMultiRowViewer();
  194. viewer.setRows(showlist);
  195. viewer.setTitle(date);
  196. viewer.setWarning(getNoSchedulePersons(date));
  197. return WXViewerUtils.getWXMultiRowViewerHtml(viewer);
  198. }
  199. /**
  200. * @param date
  201. * @return
  202. * @throws Exception
  203. */
  204. private String getNoSchedulePersons(String date) throws Exception {
  205. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  206. List<Map<String,Object>> userList = new ArrayList<Map<String,Object>>();
  207. userList = wxdao.getUsersByRoleCode(XcglConstant.ROLE_ZHOUBAO);
  208. List<WeeklyscheduleEntity> entits = weeklyscheduleService.getWeeklyScheduleBySomeDate(sdf.parse(date));
  209. HashMap<String, WeeklyscheduleEntity> hm_user3schedule = new HashMap<>();
  210. if(entits != null && entits.size()>0) {
  211. StringBuffer sb = new StringBuffer();
  212. for(WeeklyscheduleEntity entity : entits) {
  213. String userid = entity.getUserid();
  214. hm_user3schedule.put(userid, entity);
  215. }
  216. for(Map<String,Object> user : userList) {
  217. if(!hm_user3schedule.containsKey(user.get("id"))){
  218. sb.append("【").append(user.get("realname")).append("】");
  219. }else {
  220. WeeklyscheduleEntity entity = hm_user3schedule.get(user.get("id"));
  221. if(entity == null) {
  222. sb.append("【").append(user.get("realname")).append("】");
  223. }else {
  224. String what = WeeklyScheduleUtils.getPersonalWhat(entity);
  225. if(what == null || what.length() == 0) {
  226. sb.append("【").append(user.get("realname")).append("】");
  227. }
  228. }
  229. }
  230. }
  231. if(sb.length()>0) {
  232. sb.append("未提交周报.");
  233. }
  234. return sb.toString();
  235. }
  236. return null;
  237. }
  238. @RequestMapping(params = "yesterdayWorkList")
  239. public ModelAndView yesterdayWorkList(HttpServletRequest request) {
  240. String date = request.getParameter("date");
  241. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  242. SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd EEEE",Locale.CHINA);
  243. Date today = null;
  244. try {
  245. today = sdf.parse(date);
  246. } catch (ParseException e) {
  247. org.jeecgframework.core.util.LogUtil.error(e.getMessage());
  248. }
  249. Calendar cal = Calendar.getInstance();
  250. cal.setTime(today);
  251. cal.add(Calendar.DAY_OF_MONTH, -1);
  252. request.setAttribute("date", sdf.format(cal.getTime()));
  253. request.setAttribute("title", sdf2.format(cal.getTime())+" 完成情况");
  254. request.setAttribute("htmlurl", "weeklyscheduleController.do?yesterdayWorkHtml&date="+date);
  255. return new ModelAndView("cn/com/lzt/wxviewer/wxMultirowViewer");
  256. }
  257. @RequestMapping(params = "yesterdayWorkHtml")
  258. @ResponseBody
  259. public AjaxJson yesterdayWorkHtml(HttpServletRequest request, HttpServletResponse response, String date) {
  260. date = request.getParameter("date");
  261. String message = null;
  262. AjaxJson j = new AjaxJson();
  263. String html= "";
  264. try {
  265. html = getYestdayWorkAchievementsHtml(date);
  266. } catch (Exception e) {
  267. org.jeecgframework.core.util.LogUtil.error(e.getMessage());
  268. e.printStackTrace();
  269. }
  270. j.setObj(html);
  271. j.setMsg(message);
  272. return j;
  273. }
  274. /**
  275. * @param date
  276. * @return
  277. * @throws Exception
  278. * @throws ParseException
  279. */
  280. private String getYestdayWorkAchievementsHtml(String date) throws Exception {
  281. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  282. Date today = sdf.parse(date);
  283. Calendar cal = Calendar.getInstance();
  284. cal.setTime(today);
  285. cal.add(Calendar.DAY_OF_MONTH, -1);
  286. List<WeeklyScheduleDayDto> dblist = weeklyscheduleService.getWeeklyScheduleDtosBySomeDate(cal.getTime());
  287. Collections.sort(dblist);
  288. List<WXMultiRowViewerDto> showlist = new ArrayList<WXMultiRowViewerDto>();
  289. String weeklyid = null;
  290. List<ProjecttaskEntity> tasks = new ArrayList<>();
  291. HashMap<String, ProjecttaskEntity> taskMap = new HashMap<>();
  292. SimpleDateFormat sdftime = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
  293. // 去掉boss
  294. for(int i=dblist.size()-1 ; i>-1 ; i--) {
  295. WeeklyScheduleDayDto dto = dblist.get(i);
  296. if(Globals.BOSS_ID.equals(dto.getUserid())) {
  297. dblist.remove(i);
  298. }
  299. }
  300. for(WeeklyScheduleDayDto dbdto : dblist) {
  301. if(weeklyid == null) {
  302. weeklyid = dbdto.getId();
  303. String hql = "from ProjecttaskEntity where 1=1 and sourceid=? ";
  304. tasks = systemService.findHql(hql, weeklyid);
  305. for(ProjecttaskEntity task : tasks) {
  306. taskMap.put(sdftime.format(task.getPlanstarttime())+";"+task.getOwner(), task);
  307. }
  308. }
  309. ProjecttaskEntity taskEntityAm = taskMap.get(sdf.format(cal.getTime())+" 08:30:00;"+dbdto.getUserid());
  310. ProjecttaskEntity taskEntityPm = taskMap.get(sdf.format(cal.getTime())+" 13:30:00;"+dbdto.getUserid());
  311. if(dbdto.getWhatAmZjl() != null && dbdto.getWhatAmZjl().length()>0) {
  312. WXMultiRowViewerDto damzjl = new WXMultiRowViewerDto();
  313. String userid = dbdto.getUserid();
  314. TSUser user = systemService.get(TSUser.class, userid);
  315. // damzjl.setDivTitle(user.getRealName()+" 上午");
  316. damzjl.setMainContent(""+user.getRealName()+": "+dbdto.getWhatAmZjl()+"【闵总安排】");
  317. damzjl.setSecondContent(dbdto.getWhereAm() == null ? "地点:无" : "地点:"+dbdto.getWhereAm());
  318. damzjl.setThirdContent(dbdto.getWhoNamesAm() == null ? "参与人:无" : "参与人:"+dbdto.getWhoNamesAm());
  319. damzjl.setDeleteView(taskEntityAm != null && taskEntityAm.getTaskstatus() != null && XcglConstant.TASKSTATUS_DONE.equals(taskEntityAm.getTaskstatus()));
  320. if(damzjl.isDeleteView()) {
  321. damzjl.setRightTag("已完成");
  322. }else {
  323. damzjl.setRightTag("未完成");
  324. }
  325. showlist.add(damzjl);
  326. }
  327. if(dbdto.getWhatAm() != null && dbdto.getWhatAm().length()>0) {
  328. WXMultiRowViewerDto dam = new WXMultiRowViewerDto();
  329. String userid = dbdto.getUserid();
  330. TSUser user = systemService.get(TSUser.class, userid);
  331. // dam.setDivTitle(user.getRealName()+" 上午");
  332. dam.setMainContent(""+user.getRealName()+": "+dbdto.getWhatAm());
  333. dam.setSecondContent(dbdto.getWhereAm() == null ? "地点:无" : "地点:"+dbdto.getWhereAm());
  334. dam.setThirdContent(dbdto.getWhoNamesAm() == null ?"参与人:无" : "参与人:"+ dbdto.getWhoNamesAm());
  335. dam.setDeleteView(taskEntityAm != null && taskEntityAm.getTaskstatus() != null && XcglConstant.TASKSTATUS_DONE.equals(taskEntityAm.getTaskstatus()));
  336. if(dam.isDeleteView()) {
  337. dam.setRightTag("已完成");
  338. }else {
  339. dam.setRightTag("未完成");
  340. }
  341. showlist.add(dam);
  342. }
  343. if(dbdto.getWhatPmZjl() != null && dbdto.getWhatPmZjl().length()>0) {
  344. WXMultiRowViewerDto dpmzjl = new WXMultiRowViewerDto();
  345. String userid = dbdto.getUserid();
  346. TSUser user = systemService.get(TSUser.class, userid);
  347. // dpmzjl.setDivTitle(user.getRealName()+" 下午");
  348. dpmzjl.setMainContent(""+user.getRealName()+": "+dbdto.getWhatPmZjl()+"【闵总安排】");
  349. dpmzjl.setSecondContent(dbdto.getWherePm()== null ? "地点:无" : "地点:"+dbdto.getWherePm());
  350. dpmzjl.setThirdContent(dbdto.getWhoNamesPm()== null ? "参与人:无" : "参与人:"+dbdto.getWhoNamesPm());
  351. dpmzjl.setDeleteView(taskEntityPm != null && taskEntityPm.getTaskstatus() != null && XcglConstant.TASKSTATUS_DONE.equals(taskEntityPm.getTaskstatus()));
  352. if(dpmzjl.isDeleteView()) {
  353. dpmzjl.setRightTag("已完成");
  354. }else {
  355. dpmzjl.setRightTag("未完成");
  356. }
  357. showlist.add(dpmzjl);
  358. }
  359. if(dbdto.getWhatPm() != null && dbdto.getWhatPm().length()>0) {
  360. WXMultiRowViewerDto dpm = new WXMultiRowViewerDto();
  361. String userid = dbdto.getUserid();
  362. TSUser user = systemService.get(TSUser.class, userid);
  363. // dpm.setDivTitle(user.getRealName()+" 下午");
  364. dpm.setMainContent(""+user.getRealName()+": "+dbdto.getWhatPm());
  365. dpm.setSecondContent(dbdto.getWherePm()== null ? "地点:无" : "地点:"+dbdto.getWherePm());
  366. dpm.setThirdContent(dbdto.getWhoNamesPm()== null ? "参与人:无" : "参与人:"+dbdto.getWhoNamesPm());
  367. dpm.setDeleteView(taskEntityPm != null && taskEntityPm.getTaskstatus() != null && XcglConstant.TASKSTATUS_DONE.equals(taskEntityPm.getTaskstatus()));
  368. if(dpm.isDeleteView()) {
  369. dpm.setRightTag("已完成");
  370. }else {
  371. dpm.setRightTag("未完成");
  372. }
  373. showlist.add(dpm);
  374. }
  375. }
  376. WXMultiRowViewer viewer = new WXMultiRowViewer();
  377. viewer.setRows(showlist);
  378. viewer.setTitle(date);
  379. viewer.setWarning(getNoSchedulePersons(date));
  380. return WXViewerUtils.getWXMultiRowViewerHtml(viewer);
  381. }
  382. @RequestMapping(params = "activitiOvertimeRpt")
  383. public ModelAndView activitiOvertimeRpt(HttpServletRequest request) {
  384. String date = request.getParameter("date");
  385. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  386. SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd EEEE",Locale.CHINA);
  387. Date today = null;
  388. try {
  389. if(StringUtils.isEmpty(date))
  390. date = "2020-03-21";
  391. today = sdf.parse(date);
  392. } catch (ParseException e) {
  393. org.jeecgframework.core.util.LogUtil.error(e.getMessage());
  394. }
  395. Calendar cal = Calendar.getInstance();
  396. cal.setTime(today);
  397. cal.add(Calendar.DAY_OF_MONTH, -1);
  398. request.setAttribute("date", sdf.format(cal.getTime()));
  399. request.setAttribute("title", "签报逾期情况");
  400. request.setAttribute("htmlurl", "weeklyscheduleController.do?activitiOvertimeRptData&date="+date);
  401. request.setAttribute("defindedJS", "webpage/cn/com/lzt/contractreports/projectCostWarnRpt4ZJLDemo.js");
  402. return new ModelAndView("cn/com/lzt/wxviewer/wxMultirowViewer");
  403. }
  404. @RequestMapping(params = "activitiOvertimeRptData")
  405. @ResponseBody
  406. public AjaxJson activitiOvertimeRptData(HttpServletRequest request, HttpServletResponse response, String date) {
  407. date = request.getParameter("date");
  408. String message = null;
  409. AjaxJson j = new AjaxJson();
  410. String html= "";
  411. try {
  412. html = activitiOvertimeRptDataHtml();
  413. } catch (Exception e) {
  414. org.jeecgframework.core.util.LogUtil.error(e.getMessage());
  415. e.printStackTrace();
  416. }
  417. j.setObj(html);
  418. j.setMsg(message);
  419. return j;
  420. }
  421. private String activitiOvertimeRptDataHtml() throws Exception {
  422. List<WXMultiRowViewerDto> showlist = new ArrayList<WXMultiRowViewerDto>();
  423. String tookTime = ResourceUtil.getConfigByName("activiti.task.tooktime");
  424. List<Map<String,Object>> rptData = rptDao.activitiOvertimeStats(Integer.valueOf(tookTime));
  425. WXMultiRowViewerDto damzjl ;
  426. for (Map<String, Object> map : rptData) {
  427. damzjl = new WXMultiRowViewerDto();
  428. damzjl.setMainContent(map.get("realname").toString());
  429. String html = "<table style='width:80%;'> <tr> <td class='detailTableName' style='width:60%;color: #3e4145;'>逾期总数:</td> <td class='detailTableValue' style='width:60%;text-align: right;color: red;'>"+map.get("overcount").toString()+"条 </td> </tr> "
  430. +"<tr> <td class='detailTableName' style='width:60%;color: #3e4145;'>最长逾期天数:</td> <td class='detailTableValue'style='width:60%;text-align: right;color: red;' >"+map.get("maxdaycount").toString()+"天</td></tr>"
  431. +""
  432. +"</table>";
  433. damzjl.setSecondContent(html);
  434. showlist.add(damzjl);
  435. }
  436. WXMultiRowViewer viewer = new WXMultiRowViewer();
  437. viewer.setRows(showlist);
  438. return WXViewerUtils.getWXMultiRowViewerHtml(viewer);
  439. }
  440. /**
  441. * easyui AJAX请求数据
  442. *
  443. * @param request
  444. * @param response
  445. * @param dataGrid
  446. * @param user
  447. */
  448. @RequestMapping(params = "datagrid")
  449. public void datagrid(WeeklyscheduleEntity weeklyschedule,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  450. CriteriaQuery cq = new CriteriaQuery(WeeklyscheduleEntity.class, dataGrid);
  451. //查询条件组装器
  452. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, weeklyschedule, request.getParameterMap());
  453. try{
  454. //自定义追加查询条件
  455. }catch (Exception e) {
  456. throw new BusinessException(e.getMessage());
  457. }
  458. cq.add();
  459. this.weeklyscheduleService.getDataGridReturn(cq, true);
  460. TagUtil.datagrid(response, dataGrid);
  461. }
  462. /**
  463. * 删除工作周报
  464. *
  465. * @return
  466. */
  467. @RequestMapping(params = "doDel")
  468. @ResponseBody
  469. public AjaxJson doDel(WeeklyscheduleEntity weeklyschedule, HttpServletRequest request) {
  470. String message = null;
  471. AjaxJson j = new AjaxJson();
  472. weeklyschedule = systemService.getEntity(WeeklyscheduleEntity.class, weeklyschedule.getId());
  473. message = "工作周报删除成功";
  474. try{
  475. weeklyscheduleService.delete(weeklyschedule);
  476. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  477. }catch(Exception e){
  478. e.printStackTrace();
  479. message = "工作周报删除失败";
  480. throw new BusinessException(e.getMessage());
  481. }
  482. j.setMsg(message);
  483. return j;
  484. }
  485. /**
  486. * 批量删除工作周报
  487. *
  488. * @return
  489. */
  490. @RequestMapping(params = "doBatchDel")
  491. @ResponseBody
  492. public AjaxJson doBatchDel(String ids,HttpServletRequest request){
  493. String message = null;
  494. AjaxJson j = new AjaxJson();
  495. message = "工作周报删除成功";
  496. try{
  497. for(String id:ids.split(",")){
  498. WeeklyscheduleEntity weeklyschedule = systemService.getEntity(WeeklyscheduleEntity.class,
  499. id
  500. );
  501. weeklyscheduleService.delete(weeklyschedule);
  502. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  503. }
  504. }catch(Exception e){
  505. e.printStackTrace();
  506. message = "工作周报删除失败";
  507. throw new BusinessException(e.getMessage());
  508. }
  509. j.setMsg(message);
  510. return j;
  511. }
  512. /**
  513. * 添加工作周报
  514. *
  515. * @param ids
  516. * @return
  517. */
  518. @RequestMapping(params = "doAdd")
  519. @ResponseBody
  520. public AjaxJson doAdd(WeeklyscheduleEntity weeklyschedule, HttpServletRequest request) {
  521. String message = null;
  522. AjaxJson j = new AjaxJson();
  523. message = "周工作计划保存成功";
  524. if(weeklyschedule.getId() != null && weeklyschedule.getId().length()> 0) {
  525. doUpdate(weeklyschedule, request);
  526. }else {
  527. try{
  528. String hql1 = "from WeeklyscheduleEntity where userid=? and mondate = ?";
  529. List<WeeklyscheduleEntity> WeeklyscheduleEntityList = systemService.findHql(hql1, weeklyschedule.getUserid(),weeklyschedule.getMondate());
  530. if(WeeklyscheduleEntityList.size() > 0)
  531. throw new BusinessException("已存在此用户周报,请刷新后,重新填写并保存。");
  532. weeklyscheduleService.save(weeklyschedule);
  533. systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
  534. String zjlWhat = WeeklyScheduleUtils.getZjlWhat(weeklyschedule);
  535. if(StringUtils.isNotEmpty(zjlWhat))
  536. {
  537. sendWXMsg4ZJLWhat(weeklyschedule.getUserid(), zjlWhat, weeklyschedule.getMondate() +"~"+weeklyschedule.getSundate());
  538. }
  539. }catch(BusinessException be){
  540. be.printStackTrace();
  541. logger.error(be);
  542. message = "周工作计划保存失败,"+be.getMessage();
  543. }catch(Exception e){
  544. e.printStackTrace();
  545. message = "周工作计划保存失败";
  546. }
  547. }
  548. j.setMsg(message);
  549. return j;
  550. }
  551. /**
  552. * 更新工作周报
  553. *
  554. * @param ids
  555. * @return
  556. */
  557. @RequestMapping(params = "doUpdate")
  558. @ResponseBody
  559. public AjaxJson doUpdate(WeeklyscheduleEntity weeklyschedule, HttpServletRequest request) {
  560. String message = null;
  561. AjaxJson j = new AjaxJson();
  562. message = "工作周报更新成功";
  563. WeeklyscheduleEntity t = weeklyscheduleService.get(WeeklyscheduleEntity.class, weeklyschedule.getId());
  564. try {
  565. String zjlWhat = WeeklyScheduleUtils.getZjlWhatChanged(weeklyschedule,t);
  566. if(StringUtils.isNotEmpty(zjlWhat))
  567. {
  568. sendWXMsg4ZJLWhat(weeklyschedule.getUserid(), zjlWhat, weeklyschedule.getMondate() +"~"+weeklyschedule.getSundate());
  569. }
  570. //参与人员信息列表
  571. List<WeeklySchedulePartiEntity> partiList = weeklyschedule.getPartiList();
  572. MyBeanUtils.copyBeanNotNull2Bean(weeklyschedule, t);
  573. weeklyscheduleService.saveOrUpdate(t);
  574. //删除原参与人员明细,重新保存
  575. String delSql = "delete from p_weeklyschedule_parti where scheduleid = ?";
  576. systemService.executeSql(delSql, weeklyschedule.getId());
  577. weeklyscheduleService.batchSave(partiList);
  578. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  579. } catch (Exception e) {
  580. e.printStackTrace();
  581. message = "工作周报更新失败";
  582. throw new BusinessException(e.getMessage());
  583. }
  584. j.setMsg(message);
  585. return j;
  586. }
  587. /**
  588. * 工作周报新增页面跳转
  589. *
  590. * @return
  591. */
  592. @RequestMapping(params = "goAdd")
  593. public ModelAndView goAdd(WeeklyscheduleEntity weeklyschedule, HttpServletRequest req) {
  594. //传送过来界面中周一的日期
  595. String currentMonDate = req.getParameter("currentMonDate");
  596. String opt = req.getParameter("opt");
  597. String managerflag = req.getParameter("managerflag");
  598. String userid = req.getParameter("userid");
  599. String curweekflag = "2";
  600. List<Map<String,Object>> userList = new ArrayList<Map<String,Object>>();
  601. //取下周所有日期从周一到周日
  602. List<String> weekday = new ArrayList<String>();
  603. //新增操作,非界面按钮触发
  604. if(StringUtils.isEmpty(opt)){
  605. weekday = XcglDateUtils.getWeekdays(XcglDateUtils.addDateDay(
  606. DateUtils.formatDate(new Date(),"yyyy-MM-dd"),7, new SimpleDateFormat("yyyy-MM-dd")));
  607. }else {
  608. //界面按钮触发而来
  609. if(opt.equals("next")) {
  610. weekday = XcglDateUtils.getWeekdays(XcglDateUtils.addDateDay(
  611. currentMonDate,7, new SimpleDateFormat("yyyy-MM-dd")));
  612. }else if (opt.equals("before")) {
  613. weekday = XcglDateUtils.getWeekdays(XcglDateUtils.addDateDay(
  614. currentMonDate,-7, new SimpleDateFormat("yyyy-MM-dd")));
  615. }else if (opt.equals("changeUser") || opt.equals("reload")) {
  616. weekday = XcglDateUtils.getWeekdays(currentMonDate);
  617. }
  618. }
  619. if(weekday.size() == 0 ) {
  620. req.setAttribute("ex", new Exception("界面参数错误,获取不到周计划日期,请联系系统管理员。"));
  621. return new ModelAndView("common/error");
  622. }
  623. //如果是管理人员(例如总经办工作人员),则需要查询可做周计划的人员列表
  624. if(StringUtils.isNotEmpty(managerflag) && managerflag.equals("1")) {
  625. userList = wxdao.getUsersByRoleCode(XcglConstant.ROLE_ZHOUBAO);
  626. req.setAttribute("useridList", userList);
  627. }
  628. // 参数中无人员,并且不是总经理安排工作,则取当前登录用户ID
  629. if(StringUtils.isEmpty(userid) && (StringUtils.isEmpty(managerflag)
  630. || !managerflag.equals("1")))
  631. userid = ResourceUtil.getSessionUser().getId();
  632. else if(StringUtils.isEmpty(userid) && StringUtils.isNotEmpty(managerflag) && managerflag.equals("1")) {
  633. //总经理安排工作,无人员id参数,则取uers第一个人
  634. if(userList.size() > 0)
  635. userid = userList.get(0).get("id").toString();
  636. else {
  637. req.setAttribute("ex", new Exception("未设置工作执行人员,请联系管理员处理。"));
  638. return new ModelAndView("common/error");
  639. }
  640. }
  641. String hql1 = "from WeeklyscheduleEntity where userid=? and mondate = ?";
  642. List<WeeklyscheduleEntity> WeeklyscheduleEntityList = systemService.findHql(hql1, userid,weekday.get(0));
  643. List<String> lastWeekday = XcglDateUtils.getWeekdays(XcglDateUtils.addDateDay(
  644. weekday.get(0),-7, new SimpleDateFormat("yyyy-MM-dd")));
  645. List<WeeklyscheduleEntity> lastWeeklyscheduleEntityList = systemService.findHql(hql1, userid,lastWeekday.get(0));
  646. StringBuffer notDone = new StringBuffer();
  647. if (lastWeeklyscheduleEntityList != null && lastWeeklyscheduleEntityList.size() > 0) {
  648. //查询未完成任务
  649. String hqlTask = "from ProjecttaskEntity where sourceid=? and taskstatus in ('0','1')";
  650. List<ProjecttaskEntity> notDoneProjecttaskEntitylist = systemService.findHql(hqlTask, lastWeeklyscheduleEntityList.get(0).getId());
  651. if(notDoneProjecttaskEntitylist != null ) {
  652. for(ProjecttaskEntity task:notDoneProjecttaskEntitylist) {
  653. notDone.append(task.getDescription()).append(";\r\n");
  654. }
  655. }
  656. }
  657. if (WeeklyscheduleEntityList != null && WeeklyscheduleEntityList.size() > 0) {
  658. weeklyschedule = WeeklyscheduleEntityList.get(0);
  659. List<Map<String,Object>> nameTimeList = weeklyScheduleMiniDao.getParticipantName(weeklyschedule.getId());
  660. weeklyschedule = setRealNames(weeklyschedule, nameTimeList);
  661. weeklyschedule.setWeekFromTo(weeklyschedule.getMondate()+" 至 "+weeklyschedule.getSundate());
  662. weeklyschedule.setNotdone(notDone.toString());
  663. //如果下周周报已添加,则可以在本周继续编辑
  664. req.setAttribute("weeklyschedulePage", weeklyschedule);
  665. }else {
  666. weeklyschedule = new WeeklyscheduleEntity();
  667. weeklyschedule.setUserid(userid);
  668. weeklyschedule.setMondate(weekday.get(0));
  669. weeklyschedule.setTuesdate(weekday.get(1));
  670. weeklyschedule.setWeddate(weekday.get(2));
  671. weeklyschedule.setThurdate(weekday.get(3));
  672. weeklyschedule.setFridate(weekday.get(4));
  673. weeklyschedule.setSatdate(weekday.get(5));
  674. weeklyschedule.setSundate(weekday.get(6));
  675. weeklyschedule.setWeekFromTo(weekday.get(0)+" 至 "+weekday.get(6));
  676. weeklyschedule.setStatus(Globals.UNAPPROVED);
  677. weeklyschedule.setNotdone(notDone.toString());
  678. req.setAttribute("weeklyschedulePage", weeklyschedule);
  679. }
  680. List<String> curweekday = XcglDateUtils.getWeekdays(DateUtils.formatDate(new Date(),"yyyy-MM-dd"));
  681. if(curweekday.get(0).equals(weekday.get(0))) {
  682. curweekflag = "1";
  683. }else if(curweekday.get(0).compareTo(weekday.get(0)) > 0)
  684. curweekflag = "0";
  685. req.setAttribute("managerflag", managerflag);
  686. req.setAttribute("curweekflag", curweekflag);
  687. req.setAttribute("userid", userid);
  688. req.setAttribute("username", ResourceUtil.getSessionUser().getRealName());
  689. return new ModelAndView("com/xcgl/weeklyschedule/weeklyschedule-add");
  690. }
  691. private WeeklyscheduleEntity setRealNames(WeeklyscheduleEntity weeklyschedule, List<Map<String,Object>> nameTimeList) {
  692. for(Map<String,Object> nameTime : nameTimeList) {
  693. String date = nameTime.get("datetime").toString();
  694. String realNames = nameTime.get("realNames").toString();
  695. //周一
  696. if(weeklyschedule.getMondate().equals(date.substring(0,10)) && date.substring(10).equals("am")) {
  697. weeklyschedule.setWhomonamnames(realNames);
  698. }else if (weeklyschedule.getMondate().equals(date.substring(0,10)) && date.substring(10).equals("pm")) {
  699. weeklyschedule.setWhomonpmnames(realNames);
  700. }
  701. //周二
  702. else if(weeklyschedule.getTuesdate().equals(date.substring(0,10)) && date.substring(10).equals("am")) {
  703. weeklyschedule.setWhotuesamnames(realNames);
  704. }else if (weeklyschedule.getTuesdate().equals(date.substring(0,10)) && date.substring(10).equals("pm")) {
  705. weeklyschedule.setWhotuespmnames(realNames);
  706. }
  707. //周三
  708. else if(weeklyschedule.getWeddate().equals(date.substring(0,10)) && date.substring(10).equals("am")) {
  709. weeklyschedule.setWhowedamnames(realNames);
  710. }else if (weeklyschedule.getWeddate().equals(date.substring(0,10)) && date.substring(10).equals("pm")) {
  711. weeklyschedule.setWhowedpmnames(realNames);
  712. }
  713. //周四
  714. else if(weeklyschedule.getThurdate().equals(date.substring(0,10)) && date.substring(10).equals("am")) {
  715. weeklyschedule.setWhothuramnames(realNames);
  716. }else if (weeklyschedule.getThurdate().equals(date.substring(0,10)) && date.substring(10).equals("pm")) {
  717. weeklyschedule.setWhothurpmnames(realNames);
  718. }
  719. //周五
  720. else if(weeklyschedule.getFridate().equals(date.substring(0,10)) && date.substring(10).equals("am")) {
  721. weeklyschedule.setWhofriamnames(realNames);
  722. }else if (weeklyschedule.getFridate().equals(date.substring(0,10)) && date.substring(10).equals("pm")) {
  723. weeklyschedule.setWhofripmnames(realNames);
  724. }
  725. //周六
  726. else if(weeklyschedule.getSatdate().equals(date.substring(0,10)) && date.substring(10).equals("am")) {
  727. weeklyschedule.setWhosatamnames(realNames);
  728. }else if (weeklyschedule.getSatdate().equals(date.substring(0,10)) && date.substring(10).equals("pm")) {
  729. weeklyschedule.setWhosatpmnames(realNames);
  730. }
  731. //周日
  732. else if(weeklyschedule.getSundate().equals(date.substring(0,10)) && date.substring(10).equals("am")) {
  733. weeklyschedule.setWhosunamnames(realNames);
  734. }else if (weeklyschedule.getSundate().equals(date.substring(0,10)) && date.substring(10).equals("pm")) {
  735. weeklyschedule.setWhosunpmnames(realNames);
  736. }
  737. }
  738. return weeklyschedule;
  739. }
  740. /**
  741. * 工作周报编辑页面跳转
  742. *
  743. * @return
  744. */
  745. @RequestMapping(params = "goUpdate")
  746. public ModelAndView goUpdate(WeeklyscheduleEntity weeklyschedule, HttpServletRequest req) {
  747. if (StringUtil.isNotEmpty(weeklyschedule.getId())) {
  748. weeklyschedule = weeklyscheduleService.getEntity(WeeklyscheduleEntity.class, weeklyschedule.getId());
  749. List<Map<String,Object>> nameTimeList = weeklyScheduleMiniDao.getParticipantName(weeklyschedule.getId());
  750. weeklyschedule = setRealNames(weeklyschedule, nameTimeList);
  751. req.setAttribute("weeklyschedulePage", weeklyschedule);
  752. }
  753. return new ModelAndView("com/xcgl/weeklyschedule/weeklyschedule-update");
  754. }
  755. /**
  756. * 导入功能跳转
  757. *
  758. * @return
  759. */
  760. @RequestMapping(params = "upload")
  761. public ModelAndView upload(HttpServletRequest req) {
  762. req.setAttribute("controller_name","weeklyscheduleController");
  763. return new ModelAndView("common/upload/pub_excel_upload");
  764. }
  765. /**
  766. * 导出excel
  767. *
  768. * @param request
  769. * @param response
  770. */
  771. @RequestMapping(params = "exportXls")
  772. public String exportXls(WeeklyscheduleEntity weeklyschedule,HttpServletRequest request,HttpServletResponse response
  773. , DataGrid dataGrid,ModelMap modelMap) {
  774. CriteriaQuery cq = new CriteriaQuery(WeeklyscheduleEntity.class, dataGrid);
  775. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, weeklyschedule, request.getParameterMap());
  776. List<WeeklyscheduleEntity> weeklyschedules = this.weeklyscheduleService.getListByCriteriaQuery(cq,false);
  777. modelMap.put(NormalExcelConstants.FILE_NAME,"工作周报");
  778. modelMap.put(NormalExcelConstants.CLASS,WeeklyscheduleEntity.class);
  779. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("工作周报列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  780. "导出信息"));
  781. modelMap.put(NormalExcelConstants.DATA_LIST,weeklyschedules);
  782. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  783. }
  784. /**
  785. * 导出excel 使模板
  786. *
  787. * @param request
  788. * @param response
  789. */
  790. @RequestMapping(params = "exportXlsByT")
  791. public String exportXlsByT(WeeklyscheduleEntity weeklyschedule,HttpServletRequest request,HttpServletResponse response
  792. , DataGrid dataGrid,ModelMap modelMap) {
  793. modelMap.put(NormalExcelConstants.FILE_NAME,"工作周报");
  794. modelMap.put(NormalExcelConstants.CLASS,WeeklyscheduleEntity.class);
  795. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("工作周报列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  796. "导出信息"));
  797. modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList());
  798. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  799. }
  800. @SuppressWarnings("unchecked")
  801. @RequestMapping(params = "importExcel", method = RequestMethod.POST)
  802. @ResponseBody
  803. public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) {
  804. AjaxJson j = new AjaxJson();
  805. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  806. Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  807. for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
  808. MultipartFile file = entity.getValue();// 获取上传文件对象
  809. ImportParams params = new ImportParams();
  810. params.setTitleRows(2);
  811. params.setHeadRows(1);
  812. params.setNeedSave(true);
  813. try {
  814. List<WeeklyscheduleEntity> listWeeklyscheduleEntitys = ExcelImportUtil.importExcel(file.getInputStream(),WeeklyscheduleEntity.class,params);
  815. for (WeeklyscheduleEntity weeklyschedule : listWeeklyscheduleEntitys) {
  816. weeklyscheduleService.save(weeklyschedule);
  817. }
  818. j.setMsg("文件导入成功!");
  819. } catch (Exception e) {
  820. j.setMsg("文件导入失败!");
  821. logger.error(ExceptionUtil.getExceptionMessage(e));
  822. }finally{
  823. try {
  824. file.getInputStream().close();
  825. } catch (IOException e) {
  826. e.printStackTrace();
  827. }
  828. }
  829. }
  830. return j;
  831. }
  832. @RequestMapping(method = RequestMethod.GET)
  833. @ResponseBody
  834. public List<WeeklyscheduleEntity> list() {
  835. List<WeeklyscheduleEntity> listWeeklyschedules=weeklyscheduleService.getList(WeeklyscheduleEntity.class);
  836. return listWeeklyschedules;
  837. }
  838. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  839. @ResponseBody
  840. public ResponseEntity<?> get(@PathVariable("id") String id) {
  841. WeeklyscheduleEntity task = weeklyscheduleService.get(WeeklyscheduleEntity.class, id);
  842. if (task == null) {
  843. return new ResponseEntity(HttpStatus.NOT_FOUND);
  844. }
  845. return new ResponseEntity(task, HttpStatus.OK);
  846. }
  847. @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
  848. @ResponseBody
  849. public ResponseEntity<?> create(@RequestBody WeeklyscheduleEntity weeklyschedule, UriComponentsBuilder uriBuilder) {
  850. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  851. Set<ConstraintViolation<WeeklyscheduleEntity>> failures = validator.validate(weeklyschedule);
  852. if (!failures.isEmpty()) {
  853. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  854. }
  855. //保存
  856. try{
  857. weeklyscheduleService.save(weeklyschedule);
  858. } catch (Exception e) {
  859. e.printStackTrace();
  860. return new ResponseEntity(HttpStatus.NO_CONTENT);
  861. }
  862. //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象.
  863. String id = weeklyschedule.getId();
  864. URI uri = uriBuilder.path("/rest/weeklyscheduleController/" + id).build().toUri();
  865. HttpHeaders headers = new HttpHeaders();
  866. headers.setLocation(uri);
  867. return new ResponseEntity(headers, HttpStatus.CREATED);
  868. }
  869. @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
  870. public ResponseEntity<?> update(@RequestBody WeeklyscheduleEntity weeklyschedule) {
  871. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  872. Set<ConstraintViolation<WeeklyscheduleEntity>> failures = validator.validate(weeklyschedule);
  873. if (!failures.isEmpty()) {
  874. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  875. }
  876. //保存
  877. try{
  878. weeklyscheduleService.saveOrUpdate(weeklyschedule);
  879. } catch (Exception e) {
  880. e.printStackTrace();
  881. return new ResponseEntity(HttpStatus.NO_CONTENT);
  882. }
  883. //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码.
  884. return new ResponseEntity(HttpStatus.NO_CONTENT);
  885. }
  886. @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  887. @ResponseStatus(HttpStatus.NO_CONTENT)
  888. public void delete(@PathVariable("id") String id) {
  889. weeklyscheduleService.deleteEntityById(WeeklyscheduleEntity.class, id);
  890. }
  891. @RequestMapping(params = "sendmsg")
  892. public AjaxJson sendmsg(HttpServletRequest request) {
  893. AjaxJson j = new AjaxJson();
  894. weeklyscheduleService.sendWXMsgForWeeklySchedule();
  895. String message = "微信消息发送成功";
  896. j.setMsg(message);
  897. return j;
  898. }
  899. @RequestMapping(params = "genTask")
  900. public AjaxJson genTask(HttpServletRequest request) {
  901. AjaxJson j = new AjaxJson();
  902. weeklyscheduleService.genWorkFromWeeklySchedule();
  903. String message = "生成任务成功";
  904. j.setMsg(message);
  905. return j;
  906. }
  907. @RequestMapping(params = "getPersonInfo")
  908. public void getPersonInfo(UserAndUserPersonnelDto userAndUserPersonnelDto, HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  909. List<Map<String,Object>> users = wxdao.getUsersByRoleCode("T_ZBJS");
  910. List<String> useridListAll = new ArrayList<String>();
  911. if(users.size() > 0) {
  912. for(Map<String,Object> map :users) {
  913. useridListAll.add(map.get("id").toString());
  914. }
  915. userAndUserPersonnelDto.setUserIdList(useridListAll);
  916. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  917. List<UserAndUserPersonnelDto> listUserAndUserPersonnelDto = weeklyScheduleMiniDao.getUserAndUserPersonnelNoPage(userAndUserPersonnelDto,authSql);
  918. Collections.sort(listUserAndUserPersonnelDto);
  919. dataGrid.setResults(listUserAndUserPersonnelDto);
  920. TagUtil.datagrid(response, dataGrid);
  921. }
  922. }
  923. @RequestMapping(params = "openPersonView")
  924. public ModelAndView openPersonView(HttpServletRequest request) {
  925. return new ModelAndView("com/xcgl/weeklyschedule/personSelectList");
  926. }
  927. /*
  928. * 给员工发微信,提醒总经理安排变更,注意自己的工作计划
  929. * */
  930. private void sendWXMsg4ZJLWhat(String userid,String what,String date) {
  931. List<Map<String, Object>> user = systemService
  932. .findForJdbc("select openid from t_s_user where id =? and openid is not null", userid);
  933. if (user.size() == 0)
  934. return;
  935. List<Map<String, Object>> listParams = new ArrayList<Map<String, Object>>();
  936. Map<String, Object> oneMsg = new HashMap<String, Object>();
  937. Map<String, Object> userMsgParms = new HashMap<String, Object>();
  938. userMsgParms.put("first", "你有一个闵总新安排的事项,请及时关注");
  939. userMsgParms.put("keyword1", date);
  940. userMsgParms.put("keyword2", what);
  941. userMsgParms.put("remark", "请登录慧管理系统查看详细周工作计划。");
  942. oneMsg.put("openid", user.get(0).get("openid").toString());
  943. oneMsg.put("userid", userid);
  944. oneMsg.put("tplParams", userMsgParms);
  945. // oneMsg.put("url", "http://test.shenqin.work:8080/hgl/dsdemoController.do?showNoOrderWarehouse"+"&openid="+user.get("openid")+"&schedule="+weekday.get(0)+","+weekday.get(1));
  946. listParams.add(oneMsg);
  947. try {
  948. wxservice.sendMsgToWXForTodayWork(listParams);
  949. } catch (Exception e) {
  950. logger.error(e);
  951. }
  952. }
  953. }