DutiesController.java 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699
  1. package cn.com.lzt.duties.controller;
  2. import cn.com.lzt.duties.entity.DutiesEntity;
  3. import cn.com.lzt.duties.service.DutiesServiceI;
  4. import cn.com.lzt.post.entity.PostEntity;
  5. import org.apache.commons.lang.StringUtils;
  6. import org.apache.log4j.Logger;
  7. import org.jeecgframework.core.beanvalidator.BeanValidators;
  8. import org.jeecgframework.core.common.controller.BaseController;
  9. import org.jeecgframework.core.common.dao.jdbc.JdbcDao;
  10. import org.jeecgframework.core.common.exception.BusinessException;
  11. import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery;
  12. import org.jeecgframework.core.common.model.json.AjaxJson;
  13. import org.jeecgframework.core.common.model.json.DataGrid;
  14. import org.jeecgframework.core.constant.Globals;
  15. import org.jeecgframework.core.util.*;
  16. import org.jeecgframework.poi.excel.ExcelImportUtil;
  17. import org.jeecgframework.poi.excel.entity.ExportParams;
  18. import org.jeecgframework.poi.excel.entity.ImportParams;
  19. import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants;
  20. import org.jeecgframework.tag.core.easyui.TagUtil;
  21. import org.jeecgframework.web.system.service.SystemService;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.http.HttpHeaders;
  24. import org.springframework.http.HttpStatus;
  25. import org.springframework.http.MediaType;
  26. import org.springframework.http.ResponseEntity;
  27. import org.springframework.stereotype.Controller;
  28. import org.springframework.ui.ModelMap;
  29. import org.springframework.web.bind.annotation.*;
  30. import org.springframework.web.multipart.MultipartFile;
  31. import org.springframework.web.multipart.MultipartHttpServletRequest;
  32. import org.springframework.web.servlet.ModelAndView;
  33. import org.springframework.web.util.UriComponentsBuilder;
  34. import javax.servlet.http.HttpServletRequest;
  35. import javax.servlet.http.HttpServletResponse;
  36. import javax.validation.ConstraintViolation;
  37. import javax.validation.Validator;
  38. import java.io.IOException;
  39. import java.net.URI;
  40. import java.util.*;
  41. /**
  42. * @Title: Controller
  43. * @Description: 职务
  44. * @author onlineGenerator
  45. * @date 2017-10-10 14:23:13
  46. * @version V1.0
  47. *
  48. */
  49. @Controller
  50. @RequestMapping("/dutiesController")
  51. public class DutiesController extends BaseController {
  52. /**
  53. * Logger for this class
  54. */
  55. private static final Logger logger = Logger.getLogger(DutiesController.class);
  56. @Autowired
  57. private DutiesServiceI dutiesService;
  58. @Autowired
  59. private SystemService systemService;
  60. @Autowired
  61. private Validator validator;
  62. /**
  63. * 职务列表 页面跳转
  64. *
  65. * @return
  66. */
  67. @RequestMapping(params = "list")
  68. public ModelAndView list(HttpServletRequest request) {
  69. return new ModelAndView("cn/com/lzt/duties/dutiesList");
  70. }
  71. /**
  72. * easyui AJAX请求数据
  73. *
  74. * @param request
  75. * @param response
  76. * @param dataGrid
  77. * @param user
  78. */
  79. @RequestMapping(params = "datagrid")
  80. public void datagrid(DutiesEntity duties,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) {
  81. CriteriaQuery cq = new CriteriaQuery(DutiesEntity.class, dataGrid);
  82. if(StringUtil.isEmpty(duties.getId())){
  83. cq.isNull("parentDutiesid");
  84. }else{
  85. cq.eq("parentDutiesid", duties.getId());
  86. duties.setId(null);
  87. }
  88. if(!StringUtil.isEmpty(duties.getDutiesName())){
  89. duties.setDutiesName("*" + duties.getDutiesName() + "*");
  90. }
  91. //查询条件组装器
  92. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, duties, request.getParameterMap());
  93. try{
  94. //自定义追加查询条件
  95. String[] status = new String[]{Globals.Enabled_Status.toString(), Globals.Disabled_Status.toString()};
  96. cq.in("status", status);
  97. cq.eq("deleteFlag", Globals.Delete_Normal.toString());
  98. Map map = new HashMap();
  99. map.put("createDate", "desc");
  100. cq.setOrder(map);
  101. }catch (Exception e) {
  102. throw new BusinessException(e.getMessage());
  103. }
  104. cq.add();
  105. this.dutiesService.getDataGridReturn(cq, true);
  106. TagUtil.treegrid(response, dataGrid);
  107. }
  108. /**
  109. * 删除职务
  110. *
  111. * @return
  112. */
  113. @RequestMapping(params = "doDel")
  114. @ResponseBody
  115. public AjaxJson doDel(DutiesEntity duties, HttpServletRequest request) {
  116. String message = null;
  117. AjaxJson j = new AjaxJson();
  118. duties = systemService.getEntity(DutiesEntity.class, duties.getId());
  119. message = "职务删除成功";
  120. try{
  121. dutiesService.delete(duties);
  122. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  123. }catch(Exception e){
  124. e.printStackTrace();
  125. message = "职务删除失败";
  126. throw new BusinessException(e.getMessage());
  127. }
  128. j.setMsg(message);
  129. return j;
  130. }
  131. /**
  132. * 逻辑删除职务
  133. *
  134. * @return
  135. */
  136. @RequestMapping(params = "logicDel")
  137. @ResponseBody
  138. public AjaxJson logicDel(String id, HttpServletRequest request) {
  139. String message = null;
  140. AjaxJson j = new AjaxJson();
  141. DutiesEntity duties = systemService.getEntity(DutiesEntity.class, id);
  142. message = "职务 删除成功";
  143. try{
  144. List<DutiesEntity> childList = getAllChildrenList(duties.getId(), null, null);
  145. childList.add(duties);// 加入父节点
  146. for(int i=0; i<childList.size(); i++){
  147. childList.get(i).setDeleteFlag(Globals.Delete_Forbidden.toString());// 设置为1已删除
  148. }
  149. dutiesService.batchUpdate(childList);// 执行批量更新
  150. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  151. }catch(Exception e){
  152. e.printStackTrace();
  153. message = "职务 删除失败";
  154. throw new BusinessException(e.getMessage());
  155. }
  156. j.setMsg(message);
  157. return j;
  158. }
  159. /**
  160. * 批量删除职务
  161. *
  162. * @return
  163. */
  164. @RequestMapping(params = "doBatchDel")
  165. @ResponseBody
  166. public AjaxJson doBatchDel(String ids,HttpServletRequest request){
  167. String message = null;
  168. AjaxJson j = new AjaxJson();
  169. message = "职务删除成功";
  170. try{
  171. for(String id:ids.split(",")){
  172. DutiesEntity duties = systemService.getEntity(DutiesEntity.class,
  173. id
  174. );
  175. dutiesService.delete(duties);
  176. systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO);
  177. }
  178. }catch(Exception e){
  179. e.printStackTrace();
  180. message = "职务删除失败";
  181. throw new BusinessException(e.getMessage());
  182. }
  183. j.setMsg(message);
  184. return j;
  185. }
  186. /**
  187. * 用户选择职务列表跳转页面
  188. *
  189. * @return
  190. */
  191. @RequestMapping(params = "departSelect")
  192. public String departSelect(HttpServletRequest req) {
  193. req.setAttribute("orgIds", req.getParameter("orgIds"));
  194. req.setAttribute("codeFilter", req.getParameter("codeFilter"));
  195. return "cn/com/lzt/duties/dutiesSelect";
  196. }
  197. /**
  198. * 职务名称重复校验
  199. *
  200. * @param ids
  201. * @return
  202. */
  203. @RequestMapping(params = "checkDutiesName")
  204. @ResponseBody
  205. public Map<String,Object> checkPostName(DutiesEntity duties, HttpServletRequest request) {
  206. Boolean flag = dutiesService.findDutyByDutiesName(duties);
  207. Map<String,Object> res = new HashMap<String, Object>();
  208. res.put("flag",flag);
  209. return res;
  210. }
  211. /**
  212. * 添加职务
  213. *
  214. * @param ids
  215. * @return
  216. */
  217. @RequestMapping(params = "doAdd")
  218. @ResponseBody
  219. public AjaxJson doAdd(DutiesEntity duties, HttpServletRequest request) {
  220. String message = null;
  221. AjaxJson j = new AjaxJson();
  222. message = "职务添加成功";
  223. try{
  224. if(StringUtil.isEmpty(duties.getParentDutiesid())){
  225. duties.setParentDutiesid(null);
  226. String localMaxCode = getMaxLocalCode(null);
  227. duties.setDutiesCode(YouBianCodeUtil.getNextYouBianCode(localMaxCode));
  228. }else{
  229. DutiesEntity d = dutiesService.findUniqueByProperty(DutiesEntity.class, "id", duties.getParentDutiesid());
  230. String localMaxCode = getMaxLocalCode(d.getDutiesCode());
  231. duties.setDutiesCode(YouBianCodeUtil.getSubYouBianCode(d.getDutiesCode(), localMaxCode));
  232. }
  233. duties.setStatus(Globals.Enabled_Status.toString());
  234. duties.setDeleteFlag(Globals.Delete_Normal.toString());
  235. dutiesService.save(duties);
  236. systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);
  237. }catch(Exception e){
  238. e.printStackTrace();
  239. message = "职务添加失败";
  240. throw new BusinessException(e.getMessage());
  241. }
  242. j.setMsg(message);
  243. return j;
  244. }
  245. /**
  246. * 更新职务
  247. *
  248. * @param ids
  249. * @return
  250. */
  251. @RequestMapping(params = "doUpdate")
  252. @ResponseBody
  253. public AjaxJson doUpdate(DutiesEntity duties, HttpServletRequest request) {
  254. String message = null;
  255. AjaxJson j = new AjaxJson();
  256. message = "职务更新成功";
  257. DutiesEntity t = dutiesService.get(DutiesEntity.class, duties.getId());
  258. try {
  259. MyBeanUtils.copyBeanNotNull2Bean(duties, t);
  260. if(StringUtil.isEmpty(t.getParentDutiesid())){
  261. t.setParentDutiesid(null);
  262. }
  263. dutiesService.saveOrUpdate(t);
  264. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  265. } catch (Exception e) {
  266. e.printStackTrace();
  267. message = "职务更新失败";
  268. throw new BusinessException(e.getMessage());
  269. }
  270. j.setMsg(message);
  271. return j;
  272. }
  273. /**
  274. * 职务新增页面跳转
  275. *
  276. * @return
  277. */
  278. @RequestMapping(params = "goAdd")
  279. public ModelAndView goAdd(DutiesEntity duties, HttpServletRequest req) {
  280. if (StringUtil.isNotEmpty(duties.getId())) {
  281. duties = dutiesService.getEntity(DutiesEntity.class, duties.getId());
  282. req.setAttribute("dutiesPage", duties);
  283. }
  284. return new ModelAndView("cn/com/lzt/duties/duties-add");
  285. }
  286. /**
  287. * 职务编辑页面跳转
  288. *
  289. * @return
  290. */
  291. @RequestMapping(params = "goUpdate")
  292. public ModelAndView goUpdate(DutiesEntity duties, HttpServletRequest req) {
  293. if (StringUtil.isNotEmpty(duties.getId())) {
  294. duties = dutiesService.getEntity(DutiesEntity.class, duties.getId());
  295. if(duties!=null && duties.getParentDutiesid()!=null){
  296. DutiesEntity parentDuties = dutiesService.getEntity(DutiesEntity.class, duties.getParentDutiesid());
  297. duties.setParentDuties(parentDuties);
  298. }
  299. req.setAttribute("dutiesPage", duties);
  300. // 岗位名
  301. String postName = "";
  302. if(duties.getPost() != null && duties.getPost().length()>0) {
  303. PostEntity postEntity = systemService.getEntity(PostEntity.class, duties.getPost());
  304. if(postEntity != null) {
  305. postName = postEntity.getPostName();
  306. }
  307. }
  308. req.setAttribute("postName", postName);
  309. }
  310. return new ModelAndView("cn/com/lzt/duties/duties-update");
  311. }
  312. /**
  313. * 导入功能跳转
  314. *
  315. * @return
  316. */
  317. @RequestMapping(params = "upload")
  318. public ModelAndView upload(HttpServletRequest req) {
  319. req.setAttribute("controller_name","dutiesController");
  320. return new ModelAndView("common/upload/pub_excel_upload");
  321. }
  322. /**
  323. * 导出excel
  324. *
  325. * @param request
  326. * @param response
  327. */
  328. @RequestMapping(params = "exportXls")
  329. public String exportXls(DutiesEntity duties,HttpServletRequest request,HttpServletResponse response
  330. , DataGrid dataGrid,ModelMap modelMap) {
  331. CriteriaQuery cq = new CriteriaQuery(DutiesEntity.class, dataGrid);
  332. org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, duties, request.getParameterMap());
  333. List<DutiesEntity> dutiess = this.dutiesService.getListByCriteriaQuery(cq,false);
  334. modelMap.put(NormalExcelConstants.FILE_NAME,"职务");
  335. modelMap.put(NormalExcelConstants.CLASS,DutiesEntity.class);
  336. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("职务列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  337. "导出信息"));
  338. modelMap.put(NormalExcelConstants.DATA_LIST,dutiess);
  339. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  340. }
  341. /**
  342. * 导出excel 使模板
  343. *
  344. * @param request
  345. * @param response
  346. */
  347. @RequestMapping(params = "exportXlsByT")
  348. public String exportXlsByT(DutiesEntity duties,HttpServletRequest request,HttpServletResponse response
  349. , DataGrid dataGrid,ModelMap modelMap) {
  350. modelMap.put(NormalExcelConstants.FILE_NAME,"职务");
  351. modelMap.put(NormalExcelConstants.CLASS,DutiesEntity.class);
  352. modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("职务列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(),
  353. "导出信息"));
  354. modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList());
  355. return NormalExcelConstants.JEECG_EXCEL_VIEW;
  356. }
  357. @SuppressWarnings("unchecked")
  358. @RequestMapping(params = "importExcel", method = RequestMethod.POST)
  359. @ResponseBody
  360. public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) {
  361. AjaxJson j = new AjaxJson();
  362. MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
  363. Map<String, MultipartFile> fileMap = multipartRequest.getFileMap();
  364. for (Map.Entry<String, MultipartFile> entity : fileMap.entrySet()) {
  365. MultipartFile file = entity.getValue();// 获取上传文件对象
  366. ImportParams params = new ImportParams();
  367. params.setTitleRows(2);
  368. params.setHeadRows(1);
  369. params.setNeedSave(true);
  370. try {
  371. List<DutiesEntity> listDutiesEntitys = ExcelImportUtil.importExcel(file.getInputStream(),DutiesEntity.class,params);
  372. for (DutiesEntity duties : listDutiesEntitys) {
  373. dutiesService.save(duties);
  374. }
  375. j.setMsg("文件导入成功!");
  376. } catch (Exception e) {
  377. j.setMsg("文件导入失败!");
  378. logger.error(ExceptionUtil.getExceptionMessage(e));
  379. }finally{
  380. try {
  381. file.getInputStream().close();
  382. } catch (IOException e) {
  383. e.printStackTrace();
  384. }
  385. }
  386. }
  387. return j;
  388. }
  389. @RequestMapping(method = RequestMethod.GET)
  390. @ResponseBody
  391. public List<DutiesEntity> list() {
  392. List<DutiesEntity> listDutiess=dutiesService.getList(DutiesEntity.class);
  393. return listDutiess;
  394. }
  395. @RequestMapping(value = "/{id}", method = RequestMethod.GET)
  396. @ResponseBody
  397. public ResponseEntity<?> get(@PathVariable("id") String id) {
  398. DutiesEntity task = dutiesService.get(DutiesEntity.class, id);
  399. if (task == null) {
  400. return new ResponseEntity(HttpStatus.NOT_FOUND);
  401. }
  402. return new ResponseEntity(task, HttpStatus.OK);
  403. }
  404. @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
  405. @ResponseBody
  406. public ResponseEntity<?> create(@RequestBody DutiesEntity duties, UriComponentsBuilder uriBuilder) {
  407. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  408. Set<ConstraintViolation<DutiesEntity>> failures = validator.validate(duties);
  409. if (!failures.isEmpty()) {
  410. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  411. }
  412. //保存
  413. try{
  414. dutiesService.save(duties);
  415. } catch (Exception e) {
  416. e.printStackTrace();
  417. return new ResponseEntity(HttpStatus.NO_CONTENT);
  418. }
  419. //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象.
  420. String id = duties.getId();
  421. URI uri = uriBuilder.path("/rest/dutiesController/" + id).build().toUri();
  422. HttpHeaders headers = new HttpHeaders();
  423. headers.setLocation(uri);
  424. return new ResponseEntity(headers, HttpStatus.CREATED);
  425. }
  426. @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE)
  427. public ResponseEntity<?> update(@RequestBody DutiesEntity duties) {
  428. //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息.
  429. Set<ConstraintViolation<DutiesEntity>> failures = validator.validate(duties);
  430. if (!failures.isEmpty()) {
  431. return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST);
  432. }
  433. //保存
  434. try{
  435. dutiesService.saveOrUpdate(duties);
  436. } catch (Exception e) {
  437. e.printStackTrace();
  438. return new ResponseEntity(HttpStatus.NO_CONTENT);
  439. }
  440. //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码.
  441. return new ResponseEntity(HttpStatus.NO_CONTENT);
  442. }
  443. @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  444. @ResponseStatus(HttpStatus.NO_CONTENT)
  445. public void delete(@PathVariable("id") String id) {
  446. dutiesService.deleteEntityById(DutiesEntity.class, id);
  447. }
  448. @RequestMapping(params = "getDepartInfo")
  449. @ResponseBody
  450. public AjaxJson getDepartInfo(HttpServletRequest request, HttpServletResponse response){
  451. AjaxJson j = new AjaxJson();
  452. String orgIds = request.getParameter("orgIds");
  453. /*String[] ids = new String[]{};
  454. if(StringUtils.isNotBlank(orgIds)){
  455. orgIds = orgIds.substring(0, orgIds.length()-1);
  456. ids = orgIds.split("\\,");
  457. }*/
  458. String codeFilter = request.getParameter("codeFilter");
  459. String parentid = request.getParameter("parentid");
  460. List<DutiesEntity> tSDeparts = new ArrayList<DutiesEntity>();
  461. StringBuffer hql = new StringBuffer(" from DutiesEntity t where 1=1 and deleteFlag <> '1' and status <> '1'");
  462. if(codeFilter != null && codeFilter.length()>0) {
  463. String[] splits = codeFilter.split(";");
  464. if(splits != null && splits.length>0) {
  465. hql.append("and ( duties_code like '" + splits[0] +"'");
  466. for(int i=1 ; splits.length>1 && i<splits.length ; i++) {
  467. hql.append(" or duties_code like '" + splits[i] +"'");
  468. }
  469. hql.append(" )");
  470. }
  471. }
  472. if(StringUtils.isNotBlank(parentid)){
  473. DutiesEntity dePart = this.systemService.getEntity(DutiesEntity.class, parentid);
  474. hql.append(" and parentDutiesid = ?");
  475. tSDeparts = this.systemService.findHql(hql.toString(), dePart.getId());
  476. } else {
  477. hql.append(" and t.parentDutiesid is null");
  478. tSDeparts = this.systemService.findHql(hql.toString());
  479. }
  480. List<Map<String,Object>> dateList = new ArrayList<Map<String,Object>>();
  481. if(tSDeparts.size()>0){
  482. Map<String,Object> map = null;
  483. String sql = null;
  484. Object[] params = null;
  485. for(DutiesEntity depart:tSDeparts){
  486. map = new HashMap<String,Object>();
  487. map.put("id", depart.getId());
  488. map.put("name", depart.getDutiesName());
  489. if(StringUtils.isNotBlank(orgIds)){
  490. if(orgIds.equals(depart.getId())){
  491. map.put("checked", true);
  492. }
  493. }
  494. if(StringUtils.isNotBlank(parentid)){
  495. map.put("pId", parentid);
  496. } else{
  497. map.put("pId", "");
  498. }
  499. //根据id判断是否有子节点
  500. sql = "select count(1) from t_bus_duties t where t.parent_dutiesid =? and delete_flag <> '1' and status <> '1'";
  501. params = new Object[]{depart.getId()};
  502. long count = this.systemService.getCountForJdbcParam(sql, params);
  503. if(count>0){
  504. map.put("isParent",true);
  505. }
  506. dateList.add(map);
  507. }
  508. }
  509. net.sf.json.JSONArray jsonArray = net.sf.json.JSONArray.fromObject(dateList);
  510. j.setMsg(jsonArray.toString());
  511. return j;
  512. }
  513. //--------------------------------------------------------------------------------------
  514. /**
  515. * 生成code
  516. * @param parentCode
  517. * @return
  518. */
  519. private synchronized String getMaxLocalCode(String parentCode){
  520. if(oConvertUtils.isEmpty(parentCode)){
  521. parentCode = "";
  522. }
  523. int localCodeLength = parentCode.length() + YouBianCodeUtil.zhanweiLength;
  524. StringBuilder sb = new StringBuilder();
  525. sb.append("SELECT duties_code FROM t_bus_duties");
  526. if(ResourceUtil.getJdbcUrl().indexOf(JdbcDao.DATABSE_TYPE_SQLSERVER)!=-1){
  527. sb.append(" where LEN(duties_code) = ").append(localCodeLength);
  528. }else{
  529. sb.append(" where LENGTH(duties_code) = ").append(localCodeLength);
  530. }
  531. if(oConvertUtils.isNotEmpty(parentCode)){
  532. sb.append(" and duties_code like '").append(parentCode).append("%'");
  533. }
  534. sb.append(" ORDER BY duties_code DESC");
  535. List<Map<String, Object>> objMapList = dutiesService.findForJdbc(sb.toString(), 1, 1);
  536. String returnCode = null;
  537. if(objMapList!=null && objMapList.size()>0){
  538. returnCode = (String)objMapList.get(0).get("duties_code");
  539. }
  540. return returnCode;
  541. }
  542. /**
  543. * 启用
  544. *
  545. * @author zhijia.wang
  546. */
  547. @RequestMapping(params = "enable")
  548. @ResponseBody
  549. public AjaxJson enable(String id, HttpServletRequest req) {
  550. AjaxJson j = new AjaxJson();
  551. String message = null;
  552. DutiesEntity duties = dutiesService.getEntity(DutiesEntity.class, id);
  553. try{
  554. List<DutiesEntity> childList = getAllParentList(duties.getParentDutiesid(), null, null);
  555. childList.add(duties);// 加入父节点
  556. for(int i=0; i<childList.size(); i++){
  557. childList.get(i).setStatus(Globals.Enabled_Status.toString());// 设置为0启用状态
  558. }
  559. dutiesService.batchUpdate(childList);// 执行批量更新
  560. message = "职务:" + "" + "启用成功!";
  561. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  562. }catch(Exception e){
  563. message = "操作失败!";
  564. }
  565. j.setMsg(message);
  566. return j;
  567. }
  568. /**
  569. * 停用
  570. *
  571. * @author zhijia.wang
  572. */
  573. @RequestMapping(params = "disable")
  574. @ResponseBody
  575. public AjaxJson disable(String id, HttpServletRequest req) {
  576. AjaxJson j = new AjaxJson();
  577. String message = null;
  578. DutiesEntity duties = dutiesService.getEntity(DutiesEntity.class, id);
  579. try{
  580. List<DutiesEntity> childList = getAllChildrenList(id, null, null);
  581. childList.add(duties);// 加入父节点
  582. for(int i=0; i<childList.size(); i++){
  583. childList.get(i).setStatus(Globals.Disabled_Status.toString());// 设置为1停用状态
  584. }
  585. dutiesService.batchUpdate(childList);// 执行批量更新
  586. message = "职务:" + "" + "停用成功!";
  587. systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO);
  588. }catch(Exception e){
  589. message = "操作失败!";
  590. }
  591. j.setMsg(message);
  592. return j;
  593. }
  594. /**
  595. * 获取某个父节点下面的所有子节点
  596. *
  597. * @param pid 父ID
  598. * @param entryList 当前节点的所有子节点列表(for循环用)
  599. * @param childList 所有子节点列表
  600. * @return
  601. */
  602. private List<DutiesEntity> getAllChildrenList(String pid, List<DutiesEntity> entryList, List<DutiesEntity> childList) {
  603. if(childList == null){
  604. childList = new ArrayList<DutiesEntity>();
  605. }
  606. final String hql = "from DutiesEntity where parentDutiesid=? ";
  607. entryList = dutiesService.findHql(hql, pid);
  608. for (DutiesEntity entry : entryList) {
  609. // 遍历出父id等于参数的id,add进子节点集合
  610. if (entry.getParentDutiesid().equals(pid)) {
  611. // 递归遍历下一级
  612. getAllChildrenList(entry.getId(), entryList, childList);
  613. childList.add(entry);
  614. }
  615. }
  616. return childList;
  617. }
  618. /**
  619. * 获取某个子节点上面的所有父节点
  620. *
  621. * @param childId 父ID
  622. * @param entryList 当前节点的所有父节点列表(for循环用)
  623. * @param childList 所有父节点列表
  624. * @return
  625. */
  626. private List<DutiesEntity> getAllParentList(String pid, List<DutiesEntity> entryList, List<DutiesEntity> parentList) {
  627. if(parentList == null){
  628. parentList = new ArrayList<DutiesEntity>();
  629. }
  630. final String hql = "from DutiesEntity where id=? ";
  631. entryList = dutiesService.findHql(hql, pid);
  632. for (DutiesEntity entry : entryList) {
  633. // 遍历出父id等于参数的id,add进父节点集合
  634. if (entry.getId().equals(pid)) {
  635. // 递归遍历下一级
  636. getAllParentList(entry.getParentDutiesid(), entryList, parentList);
  637. parentList.add(entry);
  638. }
  639. }
  640. return parentList;
  641. }
  642. }