ActivitiLeaveController.java 31 KB

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