package cn.com.lzt.projectpostdetail.controller; import java.io.IOException; import java.net.URI; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.ConstraintViolation; import javax.validation.Validator; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.jeecgframework.core.beanvalidator.BeanValidators; import org.jeecgframework.core.common.controller.BaseController; import org.jeecgframework.core.common.exception.BusinessException; import org.jeecgframework.core.common.hibernate.qbc.CriteriaQuery; import org.jeecgframework.core.common.model.json.AjaxJson; import org.jeecgframework.core.common.model.json.DataGrid; import org.jeecgframework.core.constant.Globals; import org.jeecgframework.core.util.ExceptionUtil; import org.jeecgframework.core.util.MyBeanUtils; import org.jeecgframework.core.util.ResourceUtil; import org.jeecgframework.core.util.StringUtil; import org.jeecgframework.poi.excel.ExcelImportUtil; import org.jeecgframework.poi.excel.entity.ExportParams; import org.jeecgframework.poi.excel.entity.ImportParams; import org.jeecgframework.poi.excel.entity.vo.NormalExcelConstants; import org.jeecgframework.tag.core.easyui.TagUtil; import org.jeecgframework.web.system.pojo.base.DictEntity; import org.jeecgframework.web.system.service.SystemService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.util.UriComponentsBuilder; import cn.com.lzt.post.service.PostServiceI; import cn.com.lzt.projectpostdetail.dto.ProjectPostDetailDto; import cn.com.lzt.projectpostdetail.entity.ProjectPostDetailEntity; import cn.com.lzt.projectpostdetail.entity.ZTreePostEntity; import cn.com.lzt.projectpostdetail.service.ProjectPostDetailServiceI; /** * @Title: Controller * @Description: 项目岗位明细表 * @author onlineGenerator * @date 2017-10-16 13:49:41 * @version V1.0 * */ @Controller @RequestMapping("/projectPostDetailController") public class ProjectPostDetailController extends BaseController { /** * Logger for this class */ private static final Logger logger = Logger.getLogger(ProjectPostDetailController.class); @Autowired private ProjectPostDetailServiceI projectPostDetailService; @Autowired private SystemService systemService; @Autowired private Validator validator; @Autowired private PostServiceI postService; /** * 项目岗位明细表列表 页面跳转 * * @return */ @RequestMapping(params = "list") public ModelAndView list(HttpServletRequest request) { /*TSUser user = ResourceUtil.getSessionUser(); String userId = user.getId(); request.setAttribute("userId", userId);*/ request.setAttribute("ptjPostGeneralid", request.getParameter("ptjPostGeneralid")); // request.setAttribute("pid", request.getParameter("pid")); //获取用户名称 List departList=systemService.queryDict("t_s_depart", "id", "departname"); String pid=request.getParameter("pid").split(",")[0]; String departname=""; for (int i = 0; i < departList.size(); i++) { if(departList.get(i).getTypecode().equals(pid)){ departname=departList.get(i).getTypename(); } } request.setAttribute("pid", request.getParameter("pid")); request.setAttribute("departname", departname); return new ModelAndView("cn/com/lzt/projectpostdetail/projectPostDetailList"); } /** * easyui AJAX请求数据 * * @param request * @param response * @param dataGrid * @param user */ @RequestMapping(params = "datagrid") public void datagrid(ProjectPostDetailDto projectPostDetailDto,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { // CriteriaQuery cq = new CriteriaQuery(ProjectPostDetailEntity.class, dataGrid); // //查询条件组装器 // org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, projectPostDetail, request.getParameterMap()); // try{ // //自定义追加查询条件 // if(projectPostDetail.getPtjPostGeneralid().length()==0||projectPostDetail.getPtjPostGeneralid()=="undefined"||projectPostDetail.getPtjPostGeneralid()==null){ // cq.eq("id", null); // }else{ // cq.eq("ptjPostGeneralid",projectPostDetail.getPtjPostGeneralid()); // } // }catch (Exception e) { // throw new BusinessException(e.getMessage()); // } // cq.add(); // this.projectPostDetailService.getDataGridReturn(cq, true); List listUserAndUserPersonnelDto=projectPostDetailService.getProjectPostDetailDtoList(projectPostDetailDto); dataGrid.setResults(listUserAndUserPersonnelDto); TagUtil.datagrid(response, dataGrid); } /** * 删除项目岗位明细表 * * @return */ @RequestMapping(params = "doDel") @ResponseBody public AjaxJson doDel(ProjectPostDetailEntity projectPostDetail, HttpServletRequest request) { String message = null; AjaxJson j = new AjaxJson(); projectPostDetail = systemService.getEntity(ProjectPostDetailEntity.class, projectPostDetail.getId()); message = "项目岗位明细删除成功"; try{ projectPostDetailService.delete(projectPostDetail); systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO); }catch(Exception e){ e.printStackTrace(); message = "项目岗位明细删除失败"; throw new BusinessException(e.getMessage()); } j.setMsg(message); return j; } /** * 批量删除项目岗位明细表 * * @return */ @RequestMapping(params = "doBatchDel") @ResponseBody public AjaxJson doBatchDel(String ids,HttpServletRequest request){ String message = null; AjaxJson j = new AjaxJson(); message = "项目岗位明细删除成功"; try{ for(String id:ids.split(",")){ ProjectPostDetailEntity projectPostDetail = systemService.getEntity(ProjectPostDetailEntity.class, id ); projectPostDetailService.delete(projectPostDetail); systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO); } }catch(Exception e){ e.printStackTrace(); message = "项目岗位明细删除失败"; throw new BusinessException(e.getMessage()); } j.setMsg(message); return j; } /** * 添加项目岗位明细表 * * @param ids * @return */ @RequestMapping(params = "doAdd") @ResponseBody public AjaxJson doAdd(ProjectPostDetailEntity projectPostDetail, HttpServletRequest request) { String message = null; AjaxJson j = new AjaxJson(); message = "项目岗位明细添加成功"; try{ projectPostDetailService.save(projectPostDetail); systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO); }catch(Exception e){ e.printStackTrace(); message = "项目岗位明细添加失败"; throw new BusinessException(e.getMessage()); } j.setMsg(message); return j; } /** * 更新项目岗位明细表 * * @param ids * @return */ @RequestMapping(params = "doUpdate") @ResponseBody public AjaxJson doUpdate(ProjectPostDetailEntity projectPostDetail, HttpServletRequest request) { String message = null; AjaxJson j = new AjaxJson(); message = "项目岗位明细更新成功"; ProjectPostDetailEntity t = projectPostDetailService.get(ProjectPostDetailEntity.class, projectPostDetail.getId()); try { MyBeanUtils.copyBeanNotNull2Bean(projectPostDetail, t); projectPostDetailService.saveOrUpdate(t); systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO); } catch (Exception e) { e.printStackTrace(); message = "项目岗位明细更新失败"; throw new BusinessException(e.getMessage()); } j.setMsg(message); return j; } /** * 项目岗位明细表新增页面跳转 * * @return */ @RequestMapping(params = "goAdd") public ModelAndView goAdd(ProjectPostDetailEntity projectPostDetail, HttpServletRequest req) { if (StringUtil.isNotEmpty(projectPostDetail.getId())) { projectPostDetail = projectPostDetailService.getEntity(ProjectPostDetailEntity.class, projectPostDetail.getId()); req.setAttribute("projectPostDetailPage", projectPostDetail); } return new ModelAndView("cn/com/lzt/projectpostdetail/projectPostDetail-add"); } /** * 项目岗位明细表编辑页面跳转 * * @return */ @RequestMapping(params = "goUpdate") public ModelAndView goUpdate(ProjectPostDetailEntity projectPostDetail, HttpServletRequest req) { if (StringUtil.isNotEmpty(projectPostDetail.getId())) { projectPostDetail = projectPostDetailService.getEntity(ProjectPostDetailEntity.class, projectPostDetail.getId()); req.setAttribute("projectPostDetailPage", projectPostDetail); } return new ModelAndView("cn/com/lzt/projectpostdetail/projectPostDetail-update"); } /** * 导入功能跳转 * * @return */ @RequestMapping(params = "upload") public ModelAndView upload(HttpServletRequest req) { req.setAttribute("controller_name","projectPostDetailController"); return new ModelAndView("common/upload/pub_excel_upload"); } /** * 导出excel * * @param request * @param response */ @RequestMapping(params = "exportXls") public String exportXls(ProjectPostDetailEntity projectPostDetail,HttpServletRequest request,HttpServletResponse response , DataGrid dataGrid,ModelMap modelMap) { CriteriaQuery cq = new CriteriaQuery(ProjectPostDetailEntity.class, dataGrid); org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, projectPostDetail, request.getParameterMap()); List projectPostDetails = this.projectPostDetailService.getListByCriteriaQuery(cq,false); modelMap.put(NormalExcelConstants.FILE_NAME,"项目岗位明细"); modelMap.put(NormalExcelConstants.CLASS,ProjectPostDetailEntity.class); modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("项目岗位明细列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(), "导出信息")); modelMap.put(NormalExcelConstants.DATA_LIST,projectPostDetails); return NormalExcelConstants.JEECG_EXCEL_VIEW; } /** * 导出excel 使模板 * * @param request * @param response */ @RequestMapping(params = "exportXlsByT") public String exportXlsByT(ProjectPostDetailEntity projectPostDetail,HttpServletRequest request,HttpServletResponse response , DataGrid dataGrid,ModelMap modelMap) { modelMap.put(NormalExcelConstants.FILE_NAME,"项目岗位明细"); modelMap.put(NormalExcelConstants.CLASS,ProjectPostDetailEntity.class); modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("项目岗位明细列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(), "导出信息")); modelMap.put(NormalExcelConstants.DATA_LIST,new ArrayList()); return NormalExcelConstants.JEECG_EXCEL_VIEW; } @SuppressWarnings("unchecked") @RequestMapping(params = "importExcel", method = RequestMethod.POST) @ResponseBody public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) { AjaxJson j = new AjaxJson(); MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Map fileMap = multipartRequest.getFileMap(); for (Map.Entry entity : fileMap.entrySet()) { MultipartFile file = entity.getValue();// 获取上传文件对象 ImportParams params = new ImportParams(); params.setTitleRows(2); params.setHeadRows(1); params.setNeedSave(true); try { List listProjectPostDetailEntitys = ExcelImportUtil.importExcel(file.getInputStream(),ProjectPostDetailEntity.class,params); for (ProjectPostDetailEntity projectPostDetail : listProjectPostDetailEntitys) { projectPostDetailService.save(projectPostDetail); } j.setMsg("文件导入成功!"); } catch (Exception e) { j.setMsg("文件导入失败!"); logger.error(ExceptionUtil.getExceptionMessage(e)); }finally{ try { file.getInputStream().close(); } catch (IOException e) { e.printStackTrace(); } } } return j; } @RequestMapping(method = RequestMethod.GET) @ResponseBody public List list() { List listProjectPostDetails=projectPostDetailService.getList(ProjectPostDetailEntity.class); return listProjectPostDetails; } @RequestMapping(value = "/{id}", method = RequestMethod.GET) @ResponseBody public ResponseEntity get(@PathVariable("id") String id) { ProjectPostDetailEntity task = projectPostDetailService.get(ProjectPostDetailEntity.class, id); if (task == null) { return new ResponseEntity(HttpStatus.NOT_FOUND); } return new ResponseEntity(task, HttpStatus.OK); } @RequestMapping(method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) @ResponseBody public ResponseEntity create(@RequestBody ProjectPostDetailEntity projectPostDetail, UriComponentsBuilder uriBuilder) { //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息. Set> failures = validator.validate(projectPostDetail); if (!failures.isEmpty()) { return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST); } //保存 try{ projectPostDetailService.save(projectPostDetail); } catch (Exception e) { e.printStackTrace(); return new ResponseEntity(HttpStatus.NO_CONTENT); } //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象. String id = projectPostDetail.getId(); URI uri = uriBuilder.path("/rest/projectPostDetailController/" + id).build().toUri(); HttpHeaders headers = new HttpHeaders(); headers.setLocation(uri); return new ResponseEntity(headers, HttpStatus.CREATED); } @RequestMapping(value = "/{id}", method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity update(@RequestBody ProjectPostDetailEntity projectPostDetail) { //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息. Set> failures = validator.validate(projectPostDetail); if (!failures.isEmpty()) { return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST); } //保存 try{ projectPostDetailService.saveOrUpdate(projectPostDetail); } catch (Exception e) { e.printStackTrace(); return new ResponseEntity(HttpStatus.NO_CONTENT); } //按Restful约定,返回204状态码, 无内容. 也可以返回200状态码. return new ResponseEntity(HttpStatus.NO_CONTENT); } @RequestMapping(value = "/{id}", method = RequestMethod.DELETE) @ResponseStatus(HttpStatus.NO_CONTENT) public void delete(@PathVariable("id") String id) { projectPostDetailService.deleteEntityById(ProjectPostDetailEntity.class, id); } /** * 保存新增/更新的行数据 * @author zbw * 2017-10-13 * @param projectPostDetail * @param request * @return */ @RequestMapping(params = "saveRows") @ResponseBody public AjaxJson saveRows(ProjectPostDetailEntity projectPostDetail, HttpServletRequest request){ String myPostId=projectPostDetail.getPostid(); String[] myPostIdList=myPostId.split(","); projectPostDetail.setPostid(myPostIdList[0]); String message = null; AjaxJson j = new AjaxJson(); message = ""; if (StringUtil.isNotEmpty(projectPostDetail.getId())) { ProjectPostDetailEntity t = projectPostDetailService.get(ProjectPostDetailEntity.class, projectPostDetail.getId()); try { MyBeanUtils.copyBeanNotNull2Bean(projectPostDetail, t); projectPostDetailService.saveOrUpdate(t); systemService.addLog(message, Globals.Log_Type_UPDATE, Globals.Log_Leavel_INFO); message = "项目岗位明细更新成功"; } catch (Exception e) { e.printStackTrace(); message = "项目岗位明细更新失败"; throw new BusinessException(e.getMessage()); } } else { try{ projectPostDetail.setDeleteFlag(Globals.Delete_Normal.toString()); projectPostDetailService.save(projectPostDetail); systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO); message = "项目岗位明细添加成功"; }catch(Exception e){ e.printStackTrace(); message = "项目岗位明细添加失败"; throw new BusinessException(e.getMessage()); } } j.setMsg(message); return j; } /** * 用户选择岗位tree跳转页面 * * @return */ @RequestMapping(params = "postZTree") public String departSelect(HttpServletRequest req) { req.setAttribute("orgIds", req.getParameter("orgIds")); return "cn/com/lzt/projectpostdetail/postZTree"; } /** * 用户选择岗位tree跳转页面 * * @return */ @RequestMapping(params = "postSelectNoCheckBox") public String postSelectNoCheckBox(HttpServletRequest req) { req.setAttribute("orgIds", req.getParameter("orgIds")); return "cn/com/lzt/projectpostdetail/postZTreeNoCheckBox"; } /** * 获取tree数据 * @author zbw * 2017-10-12 * @param request * @param response * @return */ //update--start--by:jg_renjie--at:20160318 for:#942 【组件封装】组织机构弹出模式,目前是列表,得改造成树方式 //update-start--Author: os_renjie Date:20160529 for:TASK #1056 【bug】用户编辑,弹出组织机构,默认没选中 @RequestMapping(params = "getPostInfo") @ResponseBody public AjaxJson getPostInfo(HttpServletRequest request, HttpServletResponse response){ AjaxJson j = new AjaxJson(); String orgIds = request.getParameter("orgIds"); String[] ids = new String[]{}; if(StringUtils.isNotBlank(orgIds)){ orgIds = orgIds.substring(0, orgIds.length()-1); ids = orgIds.split("\\,"); } String parentid = request.getParameter("parentid"); List listDuties = new ArrayList(); // StringBuffer hql = new StringBuffer(" from TSDepart t where 1=1 "); StringBuffer hql = new StringBuffer(" from ZTreePostEntity t where t.status = 0 and t.deleteFlag = 0 "); if(StringUtils.isNotBlank(parentid)){ // TSDepart dePart = this.systemService.getEntity(TSDepart.class, parentorgIds); ZTreePostEntity postEntity = postService.get(ZTreePostEntity.class, parentid); // hql.append(" and TSPDepart = ?"); // tSDeparts = this.systemService.findHql(hql.toString(), dePart); hql.append(" and parentPost = ?"); listDuties = this.postService.findHql(hql.toString(), postEntity); } else { // hql.append(" and t.orgType = ?"); // tSDeparts = this.systemService.findHql(hql.toString(), "1"); hql.append(" and t.parentPostid IS NULL"); listDuties = this.postService.findHql(hql.toString()); /*hql.append(" and t.parentDutiesid = ?"); String str="4028e4a55f05cf9d015f05d3c55c0005"; listDuties = this.postService.findHql(hql.toString(),str);*/ } List> dateList = new ArrayList>(); if(listDuties.size()>0){ Map map = null; String sql = null; Object[] params = null; for(ZTreePostEntity postEntity:listDuties){ map = new HashMap(); map.put("id", postEntity.getId()); map.put("name", postEntity.getPostName()); if(ids.length>0){ for(String id:ids){ if(id.equals(postEntity.getId())){ map.put("checked", true); } } } if(StringUtils.isNotBlank(parentid)){ map.put("pId", parentid); } else{ map.put("pId", "1"); } //根据id判断是否有子节点 sql = "select count(1) from t_bus_post t where t.status = '0' and t.delete_flag = '0' and t.parent_postid= ?"; params = new Object[]{postEntity.getId()}; long count = this.postService.getCountForJdbcParam(sql, params); if(count>0){ map.put("isParent",true); } dateList.add(map); } } net.sf.json.JSONArray jsonArray = net.sf.json.JSONArray.fromObject(dateList); j.setMsg(jsonArray.toString()); return j; } @RequestMapping(params = "getPostInfoNoCheckBox") @ResponseBody public AjaxJson getPostInfoNoCheckBox(HttpServletRequest request, HttpServletResponse response){ AjaxJson j = new AjaxJson(); String orgIds = request.getParameter("orgIds"); /*String[] ids = new String[]{}; if(StringUtils.isNotBlank(orgIds)){ orgIds = orgIds.substring(0, orgIds.length()-1); ids = orgIds.split("\\,"); }*/ String parentid = request.getParameter("parentid"); List listDuties = new ArrayList(); // StringBuffer hql = new StringBuffer(" from TSDepart t where 1=1 "); StringBuffer hql = new StringBuffer(" from ZTreePostEntity t where t.status = 0 and t.deleteFlag = 0 "); if(StringUtils.isNotBlank(parentid)){ // TSDepart dePart = this.systemService.getEntity(TSDepart.class, parentorgIds); ZTreePostEntity postEntity = postService.get(ZTreePostEntity.class, parentid); // hql.append(" and TSPDepart = ?"); // tSDeparts = this.systemService.findHql(hql.toString(), dePart); hql.append(" and parentPost = ?"); listDuties = this.postService.findHql(hql.toString(), postEntity); } else { // hql.append(" and t.orgType = ?"); // tSDeparts = this.systemService.findHql(hql.toString(), "1"); hql.append(" and t.parentPostid IS NULL"); listDuties = this.postService.findHql(hql.toString()); /*hql.append(" and t.parentDutiesid = ?"); String str="4028e4a55f05cf9d015f05d3c55c0005"; listDuties = this.postService.findHql(hql.toString(),str);*/ } List> dateList = new ArrayList>(); if(listDuties.size()>0){ Map map = null; String sql = null; Object[] params = null; for(ZTreePostEntity postEntity:listDuties){ map = new HashMap(); map.put("id", postEntity.getId()); map.put("name", postEntity.getPostName()); if(StringUtils.isNotBlank(orgIds)){ if(orgIds.equals(postEntity.getId())){ map.put("checked", true); } } if(StringUtils.isNotBlank(parentid)){ map.put("pId", parentid); } else{ map.put("pId", "1"); } //根据id判断是否有子节点 sql = "select count(1) from t_bus_post t where t.status = '0' and t.delete_flag = '0' and t.parent_postid= ?"; // sql = "select count(1) from t_bus_post t where t.parent_postid= ?"; params = new Object[]{postEntity.getId()}; long count = this.postService.getCountForJdbcParam(sql, params); if(count>0){ map.put("isParent",true); } dateList.add(map); } } net.sf.json.JSONArray jsonArray = net.sf.json.JSONArray.fromObject(dateList); j.setMsg(jsonArray.toString()); return j; } /** * 异步获取岗位名称 * @author zbw * 2017-10-17 * @param request * @param response * @return */ @RequestMapping(params = "getPName") @ResponseBody public AjaxJson getPName(HttpServletRequest request, HttpServletResponse response) { AjaxJson j = new AjaxJson(); String id = request.getParameter("id"); String[] idList=id.split(","); ZTreePostEntity postEntity = systemService.getEntity(ZTreePostEntity.class, idList[0]); try { j.setMsg(postEntity.getPostName()); //systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO); } catch (Exception e) { e.printStackTrace(); throw new BusinessException(e.getMessage()); } return j; } /** * 逻辑删除项目岗位明细表 * @author zbw * 2017-10-17 * @param postEntity * @param request * @return */ @RequestMapping(params = "logicDel") @ResponseBody public AjaxJson logicDel(ProjectPostDetailEntity projectPostDetail, HttpServletRequest request) { String message = null; AjaxJson j = new AjaxJson(); projectPostDetail = systemService.getEntity(ProjectPostDetailEntity.class, projectPostDetail.getId()); message = "项目岗位明细删除成功"; try{ projectPostDetail.setDeleteFlag(Globals.Delete_Forbidden.toString()); projectPostDetailService.logicDel(projectPostDetail); systemService.addLog(message, Globals.Log_Type_DEL, Globals.Log_Leavel_INFO); }catch(Exception e){ e.printStackTrace(); message = "项目岗位明细删除失败"; throw new BusinessException(e.getMessage()); } j.setMsg(message); return j; } }