LeaveController.java 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851
  1. package cn.com.lzt.leave.controller;
  2. import java.io.IOException;
  3. import java.net.URI;
  4. import java.text.ParseException;
  5. import java.text.ParsePosition;
  6. import java.text.SimpleDateFormat;
  7. import java.util.ArrayList;
  8. import java.util.Date;
  9. import java.util.HashMap;
  10. import java.util.List;
  11. import java.util.Map;
  12. import java.util.Set;
  13. import javax.servlet.http.HttpServletRequest;
  14. import javax.servlet.http.HttpServletResponse;
  15. import javax.servlet.http.HttpSession;
  16. import javax.validation.ConstraintViolation;
  17. import javax.validation.Validator;
  18. import org.apache.commons.lang.StringUtils;
  19. import org.apache.log4j.Logger;
  20. import org.jeecgframework.core.beanvalidator.BeanValidators;
  21. import org.jeecgframework.core.common.controller.BaseController;
  22. import org.jeecgframework.core.common.exception.BusinessException;
  23. import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
  24. import org.jeecgframework.core.common.model.json.AjaxJson;
  25. import org.jeecgframework.core.common.model.json.DataGrid;
  26. import org.jeecgframework.core.constant.Globals;
  27. import org.jeecgframework.core.util.ContextHolderUtils;
  28. import org.jeecgframework.core.util.ExceptionUtil;
  29. import org.jeecgframework.core.util.JeecgDataAutorUtils;
  30. import org.jeecgframework.core.util.MyBeanUtils;
  31. import org.jeecgframework.core.util.ResourceUtil;
  32. import org.jeecgframework.core.util.StringUtil;
  33. import org.jeecgframework.core.util.oConvertUtils;
  34. import org.jeecgframework.minidao.pojo.MiniDaoPage;
  35. import org.jeecgframework.poi.excel.ExcelImportUtil;
  36. import org.jeecgframework.poi.excel.entity.ExportParams;
  37. import org.jeecgframework.poi.excel.entity.ImportParams;
  38. import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
  39. import org.jeecgframework.tag.core.easyui.TagUtil;
  40. import org.jeecgframework.web.cgform.entity.upload.CgUploadEntity;
  41. import org.jeecgframework.web.cgform.service.config.CgFormFieldServiceI;
  42. import org.jeecgframework.web.system.pojo.base.TSDepart;
  43. import org.jeecgframework.web.system.pojo.base.TSRole;
  44. import org.jeecgframework.web.system.pojo.base.TSRoleUser;
  45. import org.jeecgframework.web.system.pojo.base.TSUser;
  46. import org.jeecgframework.web.system.pojo.base.TSUserOrg;
  47. import org.jeecgframework.web.system.pojo.base.TaskDto;
  48. import org.jeecgframework.web.system.service.SystemService;
  49. import org.jeecgframework.web.system.service.UserService;
  50. import org.springframework.beans.factory.annotation.Autowired;
  51. import org.springframework.http.HttpHeaders;
  52. import org.springframework.http.HttpStatus;
  53. import org.springframework.http.MediaType;
  54. import org.springframework.http.ResponseEntity;
  55. import org.springframework.stereotype.Controller;
  56. import org.springframework.ui.ModelMap;
  57. import org.springframework.util.CollectionUtils;
  58. import org.springframework.web.bind.annotation.PathVariable;
  59. import org.springframework.web.bind.annotation.RequestBody;
  60. import org.springframework.web.bind.annotation.RequestMapping;
  61. import org.springframework.web.bind.annotation.RequestMethod;
  62. import org.springframework.web.bind.annotation.ResponseBody;
  63. import org.springframework.web.bind.annotation.ResponseStatus;
  64. import org.springframework.web.multipart.MultipartFile;
  65. import org.springframework.web.multipart.MultipartHttpServletRequest;
  66. import org.springframework.web.servlet.ModelAndView;
  67. import org.springframework.web.util.UriComponentsBuilder;
  68. import cn.com.lzt.common.service.TSysFileServiceI;
  69. import cn.com.lzt.dialogDeal.service.UserDepartOrgDealServiceI;
  70. import cn.com.lzt.leave.dto.LeaveDto;
  71. import cn.com.lzt.leave.entity.LeaveEntity;
  72. import cn.com.lzt.leave.service.LeaveServiceI;
  73. import cn.com.lzt.leave.service.ModifyServiceI;
  74. import cn.com.lzt.personnelbasearchivesmanage.entity.PersonnelBaseArchivesManageEntity;
  75. import com.jeecg.qianbao.util.FormProcUtil;
  76. /**
  77. * @Title: Controller
  78. * @Description: 离职申请表
  79. * @author onlineGenerator
  80. * @date 2017-10-12 13:40:50
  81. * @version V1.0
  82. *
  83. */
  84. @Controller
  85. @RequestMapping("/leaveController")
  86. public class LeaveController extends BaseController {
  87. /**
  88. * Logger for this class
  89. */
  90. private static final Logger logger = Logger.getLogger(LeaveController.class);
  91. // 下载路径
  92. private static final String showAndDownUrl = ResourceUtil.getConfigByName("showAndDownUrl");
  93. @Autowired
  94. private LeaveServiceI leaveService;
  95. @Autowired
  96. private SystemService systemService;
  97. @Autowired
  98. private Validator validator;
  99. @Autowired
  100. private CgFormFieldServiceI cgFormFieldService;
  101. @Autowired
  102. private TSysFileServiceI tSysFileService;
  103. @Autowired
  104. private ModifyServiceI modifyService;
  105. @Autowired
  106. private UserService userService;
  107. @Autowired
  108. private UserDepartOrgDealServiceI userDepartOrgDealService;
  109. /**
  110. * 离职申请表列表 页面跳转
  111. *
  112. * @return
  113. */
  114. @RequestMapping(params = "list")
  115. public ModelAndView list(HttpServletRequest request) {
  116. HttpSession session = ContextHolderUtils.getSession();
  117. TSUser tuser = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
  118. request.setAttribute("user", tuser);
  119. request.setAttribute("showAndDownUrl", showAndDownUrl);
  120. return new ModelAndView("cn/com/lzt/leave/leaveList");
  121. }
  122. /**
  123. * easyui AJAX请求数据
  124. *
  125. * @param request
  126. * @param response
  127. * @param dataGrid
  128. * @param user
  129. * @throws Exception
  130. */
  131. @RequestMapping(params = "datagrid")
  132. public void datagrid(LeaveDto leave,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) throws Exception {
  133. /*CriteriaQuery cq = new CriteriaQuery(LeaveEntity.class, dataGrid);
  134. //查询条件组装器
  135. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, leave, request.getParameterMap());
  136. try{
  137. //自定义追加查询条件
  138. String query_applyDate_begin = request.getParameter("applyDate_begin");
  139. String query_applyDate_end = request.getParameter("applyDate_end");
  140. if(StringUtil.isNotEmpty(query_applyDate_begin)){
  141. cq.ge("applyDate", new SimpleDateFormat("yyyy-MM-dd").parse(query_applyDate_begin));
  142. }
  143. if(StringUtil.isNotEmpty(query_applyDate_end)){
  144. cq.le("applyDate", new SimpleDateFormat("yyyy-MM-dd").parse(query_applyDate_end));
  145. }
  146. String query_leaveDate_begin = request.getParameter("leaveDate_begin");
  147. String query_leaveDate_end = request.getParameter("leaveDate_end");
  148. if(StringUtil.isNotEmpty(query_leaveDate_begin)){
  149. cq.ge("leaveDate", new SimpleDateFormat("yyyy-MM-dd").parse(query_leaveDate_begin));
  150. }
  151. if(StringUtil.isNotEmpty(query_leaveDate_end)){
  152. cq.le("leaveDate", new SimpleDateFormat("yyyy-MM-dd").parse(query_leaveDate_end));
  153. }
  154. String orgIds = request.getParameter("orgIds");
  155. List<String> orgIdList = extractIdListByComma(orgIds);
  156. // 获取 当前组织机构的用户信息
  157. if (!CollectionUtils.isEmpty(orgIdList)) {
  158. cq.in("belongUnitid", orgIdList.toArray());
  159. }
  160. }catch (Exception e) {
  161. throw new BusinessException(e.getMessage());
  162. }
  163. //显示没有被逻辑删除的数据
  164. cq.eq("deleteFlag", Globals.Delete_Normal.toString());
  165. //排序
  166. Map map = new HashMap();
  167. map.put("createDate", "desc");
  168. cq.setOrder(map);
  169. cq.add();
  170. this.leaveService.getDataGridReturn(cq, true);
  171. List<LeaveEntity> entity = dataGrid.getResults();
  172. if(!entity.isEmpty()){
  173. for (LeaveEntity leaveEntity : entity) {
  174. List<TSysFileEntity> tSysFileEntity = tSysFileService.getSysFileEntitiesByBusiId(leaveEntity.getId(), "departurefile");
  175. if(!tSysFileEntity.isEmpty()){
  176. leaveEntity.setFileUrl(tSysFileEntity.get(0).getFileUrl());
  177. }
  178. }
  179. }
  180. TagUtil.datagrid(response, dataGrid);*/
  181. String orgIds = request.getParameter("orgIds");
  182. List<String> orgIdList = extractIdListByComma(orgIds);
  183. // 获取 当前组织机构的用户信息
  184. if (!CollectionUtils.isEmpty(orgIdList)) {
  185. String or = orgIdList.get(0);
  186. List<String> ChildIdList = userDepartOrgDealService.getChildIdByProjectDepartId(or);
  187. leave.setOrgIdList(ChildIdList);
  188. //leave.setOrgIdList(orgIdList);
  189. }
  190. HttpSession session = ContextHolderUtils.getSession();
  191. TSUser user = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
  192. List<String> useridList = new ArrayList<String>();
  193. List<String> useridList1 = new ArrayList<String>();
  194. List<String> orgidList = new ArrayList<String>();
  195. //查询该用户的所有角色
  196. StringBuffer hql1 = new StringBuffer("from TSRoleUser where TSUser.id = :userid");
  197. List<TSRoleUser> listru = systemService.getSession().createQuery(hql1.toString()).setParameter("userid", user.getId()).list();
  198. /*boolean temp = false;
  199. for (TSRoleUser tsRoleUser : listru) {
  200. TSRole tsRole = tsRoleUser.getTSRole();
  201. if("M_ZJL".equals(tsRole.getRoleCode())){
  202. temp = true;
  203. break;
  204. }
  205. }*/
  206. /*if(){
  207. temp = true;
  208. }*/
  209. useridList1.add(user.getId());
  210. if("admin".equals(user.getUserName())){
  211. useridList = null;
  212. }/*else if(temp){
  213. }*/else{
  214. //useridList = userService.getUserList("leave", user);
  215. StringBuffer hql = new StringBuffer("from TSUserOrg where tsUser.id = :userid and status=0");
  216. List<TSUserOrg> tsList = systemService.getSession().createQuery(hql.toString()).setParameter("userid", user.getId()).list();
  217. for (TSUserOrg tsUserOrg : tsList) {
  218. TSDepart tsDepart = tsUserOrg.getTsDepart();
  219. if(Globals.org_type_3.equals(tsDepart.getOrgType()) || Globals.org_type_5.equals(tsDepart.getOrgType())){
  220. /*List<TSDepart> tsDList = systemService.findListbySql("select id from t_s_depart where parentdepartid = '"+tsDepart.getId()+"'");
  221. StringBuffer sql = new StringBuffer();
  222. sql.append("select uo.user_id as id FROM t_s_user_org uo " +
  223. "LEFT JOIN t_bus_user_personnel up on uo.user_id = up.userid " +
  224. "where up.manager_type = 2 and uo.org_id in(");
  225. for (int i = 0; i < tsDList.size(); i++) {
  226. if(i==0){
  227. sql.append("'"+tsDList.get(i)+"'");
  228. }else{
  229. sql.append(",'"+tsDList.get(i)+"'");
  230. }
  231. }
  232. sql.append(")");
  233. List<Map<String, Object>> tsDLists = systemService.findForJdbc(sql.toString(),null);
  234. if(!tsDLists.isEmpty()){
  235. for (Map t2 : tsDLists) {
  236. useridList.add(t2.get("id").toString());
  237. }
  238. }*/
  239. StringBuffer sql = new StringBuffer();
  240. sql.append("select uo.user_id as id FROM t_s_user_org uo " +
  241. "LEFT JOIN t_bus_user_personnel up on uo.user_id = up.userid " +
  242. "where uo.org_id = '"+tsDepart.getId()+"' and status=0");
  243. List<Map<String, Object>> tsDLists = systemService.findForJdbc(sql.toString(),null);
  244. if(!tsDLists.isEmpty()){
  245. for (Map t2 : tsDLists) {
  246. useridList.add(t2.get("id").toString());
  247. }
  248. }
  249. List<String> tsDList = systemService.findListbySql("select id from t_s_depart where parentdepartid = '"+tsDepart.getId()+"'");
  250. if(!tsDList.isEmpty()){
  251. for (int i = 0; i < tsDList.size(); i++) {
  252. orgidList.add(tsDList.get(i).toString());
  253. }
  254. }
  255. }
  256. }
  257. useridList.add(user.getId());
  258. }
  259. String authSql = JeecgDataAutorUtils.loadDataSearchConditonSQLString();
  260. MiniDaoPage<LeaveDto> list = leaveService.getAllEntities(leave,useridList,useridList1,orgidList,dataGrid.getPage(), dataGrid.getRows(),authSql);
  261. //update-begin--Author:zhangliang Date:20170706 for:TASK #1945 【demo错误】minidao例子,通过条件查询,后台报错
  262. List<LeaveDto> corrList = list.getResults();
  263. if(!corrList.isEmpty()){
  264. for (LeaveDto cor : corrList) {
  265. if(StringUtils.isNotEmpty(cor.getProcInstId())){
  266. TaskDto dto = systemService.getTaskDto(cor.getId(), cor.getProcInstId());
  267. if(dto != null){
  268. if(dto.isReject()){
  269. cor.setReject("2");
  270. }else{
  271. cor.setReject("1");
  272. }
  273. if(dto.isIamApplyUser()){
  274. cor.setIamApplyUser("2");
  275. }else{
  276. cor.setIamApplyUser("1");
  277. }
  278. }else{
  279. cor.setReject("1");
  280. cor.setIamApplyUser("1");
  281. }
  282. }else{
  283. cor.setReject("1");
  284. cor.setIamApplyUser("1");
  285. }
  286. if(StringUtils.isNotEmpty(cor.getBelongUnitid())){
  287. cor.setBelongUnitid(modifyService.getByorgId(cor.getBelongUnitid()));
  288. }
  289. }
  290. }
  291. dataGrid.setTotal(list.getTotal());
  292. dataGrid.setResults(list.getResults());
  293. TagUtil.datagrid(response, dataGrid);
  294. }
  295. /**
  296. * 删除离职申请表
  297. *
  298. * @return
  299. */
  300. @RequestMapping(params = "doDel")
  301. @ResponseBody
  302. public AjaxJson doDel(LeaveEntity leave, HttpServletRequest request) {
  303. String message = null;
  304. AjaxJson j = new AjaxJson();
  305. leave = systemService.getEntity(LeaveEntity.class, leave.getId());
  306. message = "离职申请表删除成功";
  307. try{
  308. leaveService.delete(leave);
  309. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  310. }catch(Exception e){
  311. e.printStackTrace();
  312. message = "离职申请表删除失败";
  313. throw new BusinessException(e.getMessage());
  314. }
  315. j.setMsg(message);
  316. return j;
  317. }
  318. /**
  319. * 修改员工人事申请状态(定时)
  320. *
  321. * @return
  322. * @throws ParseException
  323. */
  324. /*@RequestMapping(params = "modify")
  325. @ResponseBody
  326. public AjaxJson modify(HttpServletRequest request) throws ParseException {
  327. String message = null;
  328. AjaxJson j = new AjaxJson();
  329. message = "定时操作成功";
  330. modifyService.modifyUpdate();
  331. j.setMsg(message);
  332. return j;
  333. }*/
  334. /**
  335. * 批量删除离职申请表
  336. *
  337. * @return
  338. */
  339. @RequestMapping(params = "doBatchDel")
  340. @ResponseBody
  341. public AjaxJson doBatchDel(String ids,HttpServletRequest request){
  342. String message = null;
  343. AjaxJson j = new AjaxJson();
  344. message = "离职申请表删除成功";
  345. try{
  346. for(String id:ids.split(",")){
  347. LeaveEntity leave = systemService.getEntity(LeaveEntity.class, id);
  348. leaveService.delete(leave);
  349. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  350. }
  351. }catch(Exception e){
  352. e.printStackTrace();
  353. message = "离职申请表删除失败";
  354. throw new BusinessException(e.getMessage());
  355. }
  356. j.setMsg(message);
  357. return j;
  358. }
  359. /**
  360. * 添加离职申请表
  361. *
  362. * @param ids
  363. * @return
  364. */
  365. @SuppressWarnings("unchecked")
  366. @RequestMapping(params = "doAdd")
  367. @ResponseBody
  368. public AjaxJson doAdd(LeaveEntity leave, HttpServletRequest request) {
  369. String message = null;
  370. AjaxJson j = new AjaxJson();
  371. message = "离职申请表添加成功";
  372. try{
  373. HttpSession session = ContextHolderUtils.getSession();
  374. TSUser tuser = (TSUser)session.getAttribute("LOCAL_CLINET_USER");
  375. if(tuser != null){
  376. leave.setApplicantId(tuser.getId());
  377. }
  378. SimpleDateFormat sim = new SimpleDateFormat("yyyy-MM-dd");
  379. ParsePosition pos = new ParsePosition(0);
  380. leave.setApplyDate(sim.parse(sim.format(new Date()), pos));
  381. leave.setDeleteFlag(Globals.Delete_Normal.toString());
  382. String userids = request.getParameter("userid");
  383. List<TSUserOrg> roleUser = systemService.getSession().createSQLQuery("select * from t_s_user_org where user_id = '"+userids+"' and ifpluralism = 0 and status = 0 ").addEntity(TSUserOrg.class).list();
  384. leave.setBelongUnitid(roleUser.get(0).getTsDepart().getId());
  385. leaveService.save(leave);
  386. tSysFileService.updateBusiId(leave.getDeparturefile(), leave.getId());
  387. systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
  388. }catch(Exception e){
  389. e.printStackTrace();
  390. message = "离职申请表添加失败";
  391. throw new BusinessException(e.getMessage());
  392. }
  393. j.setMsg(message);
  394. j.setObj(leave);
  395. return j;
  396. }
  397. /**
  398. * 更新离职申请表
  399. *
  400. * @param ids
  401. * @return
  402. */
  403. @RequestMapping(params = "doUpdate")
  404. @ResponseBody
  405. public AjaxJson doUpdate(LeaveEntity leave, HttpServletRequest request) {
  406. String message = null;
  407. AjaxJson j = new AjaxJson();
  408. message = "离职申请表更新成功";
  409. LeaveEntity t = leaveService.get(LeaveEntity.class, leave.getId());
  410. try {
  411. MyBeanUtils.copyBeanNotNull2Bean(leave, t);
  412. String userids = request.getParameter("userid");
  413. List<TSUserOrg> roleUser = systemService.getSession().createSQLQuery("select * from t_s_user_org where user_id = '"+userids+"' and ifpluralism = 0 and status = 0 ").addEntity(TSUserOrg.class).list();
  414. t.setBelongUnitid(roleUser.get(0).getTsDepart().getId());
  415. leaveService.saveOrUpdate(t);
  416. tSysFileService.updateBusiId(t.getDeparturefile(), t.getId());
  417. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  418. } catch (Exception e) {
  419. e.printStackTrace();
  420. message = "离职申请表更新失败";
  421. throw new BusinessException(e.getMessage());
  422. }
  423. j.setMsg(message);
  424. return j;
  425. }
  426. /**
  427. * 离职申请表新增页面跳转
  428. *
  429. * @return
  430. */
  431. @RequestMapping(params = "goAdd")
  432. public ModelAndView goAdd(LeaveEntity leave, HttpServletRequest req) {
  433. if (StringUtil.isNotEmpty(leave.getId())) {
  434. leave = leaveService.getEntity(LeaveEntity.class, leave.getId());
  435. req.setAttribute("leavePage", leave);
  436. }
  437. return new ModelAndView("cn/com/lzt/leave/leave-add");
  438. }
  439. /**
  440. * 离职申请表编辑页面跳转
  441. *
  442. * @return
  443. */
  444. @RequestMapping(params = "goUpdate")
  445. public ModelAndView goUpdate(LeaveEntity leave, HttpServletRequest request) {
  446. if (StringUtil.isNotEmpty(leave.getId())) {
  447. leave = leaveService.getEntity(LeaveEntity.class, leave.getId());
  448. request.setAttribute("leavePage", leave);
  449. TSUser user = systemService.getEntity(TSUser.class, leave.getUserid());
  450. request.setAttribute("user",user);
  451. }
  452. return new ModelAndView("cn/com/lzt/leave/leave-update");
  453. }
  454. /**
  455. * 离职申请表编辑页面跳转
  456. *
  457. * @return
  458. */
  459. @RequestMapping(params = "goView")
  460. public ModelAndView goView(LeaveEntity leave, HttpServletRequest request) {
  461. if (StringUtil.isNotEmpty(leave.getId())) {
  462. leave = leaveService.getEntity(LeaveEntity.class, leave.getId());
  463. request.setAttribute("leavePage", leave);
  464. TSUser user = systemService.getEntity(TSUser.class, leave.getUserid());
  465. request.setAttribute("user",user);
  466. }
  467. String flage = oConvertUtils.getString(request.getParameter("flage"));
  468. if(oConvertUtils.isNotEmpty(flage)){
  469. request.setAttribute("flage",flage);
  470. }
  471. String taskId = oConvertUtils.getString(request.getParameter("taskId"));
  472. if(oConvertUtils.isNotEmpty(taskId)){
  473. FormProcUtil.initWorkflowParam(request);
  474. request.setAttribute("taskId",taskId);
  475. }
  476. return new ModelAndView("cn/com/lzt/leave/leave-view");
  477. }
  478. /**
  479. * 离职申请表编辑页面跳转
  480. *
  481. * @return
  482. */
  483. @RequestMapping(params = "goview")
  484. public ModelAndView goview(LeaveEntity leave, HttpServletRequest request) {
  485. if (StringUtil.isNotEmpty(leave.getId())) {
  486. leave = leaveService.getEntity(LeaveEntity.class, leave.getId());
  487. request.setAttribute("leavePage", leave);
  488. TSUser user = systemService.getEntity(TSUser.class, leave.getUserid());
  489. request.setAttribute("user",user);
  490. }
  491. return new ModelAndView("cn/com/lzt/leave/leaveView");
  492. }
  493. /**
  494. * 导入功能跳转
  495. *
  496. * @return
  497. */
  498. @RequestMapping(params = "upload")
  499. public ModelAndView upload(HttpServletRequest req) {
  500. req.setAttribute("controller_name","leaveController");
  501. return new ModelAndView("common/upload/pub_excel_upload");
  502. }
  503. /**
  504. * 导出excel
  505. *
  506. * @param request
  507. * @param response
  508. */
  509. @RequestMapping(params = "exportXls")
  510. public String exportXls(LeaveEntity leave,HttpServletRequest request,HttpServletResponse response
  511. , DataGrid dataGrid,ModelMap modelMap) {
  512. CriteriaQuery cq = new CriteriaQuery(LeaveEntity.class, dataGrid);
  513. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, leave, request.getParameterMap());
  514. List<LeaveEntity> leaves = this.leaveService.getListByCriteriaQuery(cq,false);
  515. modelMap.put(NormalExcelConstants.FILE_NAME,"离职申请表");
  516. modelMap.put(NormalExcelConstants.CLASS,LeaveEntity.class);
  517. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("离职申请表列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  518. "导出信息"));
  519. modelMap.put(NormalExcelConstants.DATA_LIST,leaves);
  520. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  521. }
  522. /**
  523. * 导出excel 使模板
  524. *
  525. * @param request
  526. * @param response
  527. */
  528. @RequestMapping(params = "exportXlsByT")
  529. public String exportXlsByT(LeaveEntity leave,HttpServletRequest request,HttpServletResponse response
  530. , DataGrid dataGrid,ModelMap modelMap) {
  531. modelMap.put(NormalExcelConstants.FILE_NAME,"离职申请表");
  532. modelMap.put(NormalExcelConstants.CLASS,LeaveEntity.class);
  533. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("离职申请表列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  534. "导出信息"));
  535. modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList());
  536. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  537. }
  538. @SuppressWarnings("unchecked")
  539. @RequestMapping(params = "importExcel", method = RequestMethod.POST)
  540. @ResponseBody
  541. public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) {
  542. AjaxJson j = new AjaxJson();
  543. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  544. Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  545. for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
  546. MultipartFile file = entity.getValue();// 获取上传文件对象
  547. ImportParams params = new ImportParams();
  548. params.setTitleRows(2);
  549. params.setHeadRows(1);
  550. params.setNeedSave(true);
  551. try {
  552. List<LeaveEntity> listLeaveEntitys = ExcelImportUtil.importExcel(file.getInputStream(),LeaveEntity.class,params);
  553. for (LeaveEntity leave : listLeaveEntitys) {
  554. leaveService.save(leave);
  555. }
  556. j.setMsg("文件导入成功!");
  557. } catch (Exception e) {
  558. j.setMsg("文件导入失败!");
  559. logger.error(ExceptionUtil.getExceptionMessage(e));
  560. }finally{
  561. try {
  562. file.getInputStream().close();
  563. } catch (IOException e) {
  564. e.printStackTrace();
  565. }
  566. }
  567. }
  568. return j;
  569. }
  570. /**
  571. * 获取文件附件信息
  572. *
  573. * @param id leave主键id
  574. */
  575. @RequestMapping(params = "getFiles")
  576. @ResponseBody
  577. public AjaxJson getFiles(String id){
  578. List<CgUploadEntity> uploadBeans = cgFormFieldService.findByProperty(CgUploadEntity.class, "cgformId", id);
  579. List<Map<String,Object>> files = new ArrayList<Map<String,Object>>(0);
  580. for(CgUploadEntity b:uploadBeans){
  581. String title = b.getAttachmenttitle();//附件名
  582. String fileKey = b.getId();//附件主键
  583. String path = b.getRealpath();//附件路径
  584. String field = b.getCgformField();//表单中作为附件控件的字段
  585. Map<String, Object> file = new HashMap<String, Object>();
  586. file.put("title", title);
  587. file.put("fileKey", fileKey);
  588. file.put("path", path);
  589. file.put("field", field==null?"":field);
  590. files.add(file);
  591. }
  592. AjaxJson j = new AjaxJson();
  593. j.setObj(files);
  594. return j;
  595. }
  596. @RequestMapping(method = RequestMethod.GET)
  597. @ResponseBody
  598. public List<LeaveEntity> list() {
  599. List<LeaveEntity> listLeaves=leaveService.getList(LeaveEntity.class);
  600. return listLeaves;
  601. }
  602. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  603. @ResponseBody
  604. public ResponseEntity<?> get(@PathVariable("id") String id) {
  605. LeaveEntity task = leaveService.get(LeaveEntity.class, id);
  606. if (task == null) {
  607. return new ResponseEntity(HttpStatus.NOT_FOUND);
  608. }
  609. return new ResponseEntity(task, HttpStatus.OK);
  610. }
  611. @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
  612. @ResponseBody
  613. public ResponseEntity<?> create(@RequestBody LeaveEntity leave, UriComponentsBuilder uriBuilder) {
  614. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  615. Set<ConstraintViolation<LeaveEntity>> failures = validator.validate(leave);
  616. if (!failures.isEmpty()) {
  617. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  618. }
  619. //保存
  620. try{
  621. leaveService.save(leave);
  622. } catch (Exception e) {
  623. e.printStackTrace();
  624. return new ResponseEntity(HttpStatus.NO_CONTENT);
  625. }
  626. //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象.
  627. String id = leave.getId();
  628. URI uri = uriBuilder.path("/rest/leaveController/" + id).build().toUri();
  629. HttpHeaders headers = new HttpHeaders();
  630. headers.setLocation(uri);
  631. return new ResponseEntity(headers, HttpStatus.CREATED);
  632. }
  633. @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
  634. public ResponseEntity<?> update(@RequestBody LeaveEntity leave) {
  635. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  636. Set<ConstraintViolation<LeaveEntity>> failures = validator.validate(leave);
  637. if (!failures.isEmpty()) {
  638. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  639. }
  640. //保存
  641. try{
  642. leaveService.saveOrUpdate(leave);
  643. } catch (Exception e) {
  644. e.printStackTrace();
  645. return new ResponseEntity(HttpStatus.NO_CONTENT);
  646. }
  647. //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码.
  648. return new ResponseEntity(HttpStatus.NO_CONTENT);
  649. }
  650. @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  651. @ResponseStatus(HttpStatus.NO_CONTENT)
  652. public void delete(@PathVariable("id") String id) {
  653. leaveService.deleteEntityById(LeaveEntity.class, id);
  654. }
  655. /**
  656. * 启用
  657. *
  658. * @author liujie
  659. */
  660. @RequestMapping(params = "enable")
  661. @ResponseBody
  662. public AjaxJson enable(String id, HttpServletRequest req) {
  663. AjaxJson j = new AjaxJson();
  664. String message = null;
  665. LeaveEntity entity = leaveService.getEntity(LeaveEntity.class, id);
  666. try{
  667. entity.setBpmStatus(Globals.BPM_STATUS_PROCESSING.toString());
  668. leaveService.updateEntitie(entity);
  669. message = "离职申请:" + "" + "启用成功!";
  670. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  671. }catch(Exception e){
  672. message = "操作失败!";
  673. }
  674. j.setMsg(message);
  675. return j;
  676. }
  677. /**
  678. * 撤销
  679. *
  680. * @author liujie
  681. */
  682. @RequestMapping(params = "disable")
  683. @ResponseBody
  684. public AjaxJson disable(String id, HttpServletRequest req) {
  685. AjaxJson j = new AjaxJson();
  686. String message = null;
  687. LeaveEntity entity = leaveService.getEntity(LeaveEntity.class, id);
  688. try{
  689. entity.setBpmStatus(Globals.BPM_STATUS_Normal.toString());
  690. leaveService.updateEntitie(entity);
  691. message = "离职申请:" + "" + "撤销成功!";
  692. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  693. }catch(Exception e){
  694. message = "操作失败!";
  695. }
  696. j.setMsg(message);
  697. return j;
  698. }
  699. /**
  700. * 逻辑删除转正申请
  701. *
  702. * @return
  703. */
  704. @RequestMapping(params = "logicDel")
  705. @ResponseBody
  706. public AjaxJson logicDel(LeaveEntity leaveEntity, HttpServletRequest request) {
  707. String message = null;
  708. AjaxJson j = new AjaxJson();
  709. leaveEntity = systemService.getEntity(LeaveEntity.class, leaveEntity.getId());
  710. message = "离职申请 删除成功";
  711. try{
  712. leaveEntity.setDeleteFlag(Globals.Delete_Forbidden.toString());
  713. leaveService.logicDel(leaveEntity);
  714. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  715. }catch(Exception e){
  716. e.printStackTrace();
  717. message = "离职申请 删除失败";
  718. throw new BusinessException(e.getMessage());
  719. }
  720. j.setMsg(message);
  721. return j;
  722. }
  723. /**
  724. * 判断离职被申请人是否已离职
  725. *
  726. * @return
  727. * @throws ParseException
  728. */
  729. @SuppressWarnings("unchecked")
  730. @RequestMapping(params = "isLeave")
  731. @ResponseBody
  732. public AjaxJson isLeave(HttpServletRequest request) throws ParseException {
  733. AjaxJson j = new AjaxJson();
  734. String id = request.getParameter("id");
  735. String userid = request.getParameter("userid");
  736. j.setSuccess(true);
  737. j.setMsg("所选人员可以离职");
  738. if(StringUtils.isNotEmpty(userid)){
  739. PersonnelBaseArchivesManageEntity per = leaveService.findUniqueByProperty(PersonnelBaseArchivesManageEntity.class, "userid", userid);
  740. if(StringUtils.isNotEmpty(per.getPositionStatus())){
  741. if(Globals.JOBSTATUS_3.equals(per.getPositionStatus()) || Globals.JOBSTATUS_4.equals(per.getPositionStatus())){
  742. j.setSuccess(false);
  743. j.setMsg("所选离职人员已经离职,不可申请离职");
  744. return j;
  745. }
  746. }
  747. }
  748. List<LeaveEntity> holidayList = leaveService.getSession().createQuery(" FROM LeaveEntity where userid = :userid and deleteFlag = 0").
  749. setParameter("userid",userid).list();
  750. if(!holidayList.isEmpty()){
  751. for (LeaveEntity le : holidayList) {
  752. if("3".equals(le.getBpmStatus())){
  753. j.setSuccess(false);
  754. j.setMsg("所选离职人员已经申请过离职,并且已经审批通过,不可再次申请离职");
  755. return j;
  756. }
  757. }
  758. if(StringUtils.isNotEmpty(id)){
  759. if(holidayList.size() > 1){
  760. j.setSuccess(false);
  761. j.setMsg("所选离职人员已经申请过离职,不可再次申请离职");
  762. return j;
  763. }
  764. }else{
  765. if(holidayList.size() > 0){
  766. j.setSuccess(false);
  767. j.setMsg("所选离职人员已经申请过离职,不可再次申请离职");
  768. return j;
  769. }
  770. }
  771. }
  772. return j;
  773. }
  774. }