package com.xcgl.projecttask.controller; import cn.com.lzt.common.util.CustomerConstant; import com.aliyun.oss.OSSClient; import com.aliyun.oss.model.OSSObject; import com.xcgl.activititask.bean.ActivitiTaskResult; import com.xcgl.activititask.entity.PActivitiTaskEntity; import com.xcgl.activititask.util.ActivitiTaskHandler; import com.xcgl.activititask.util.ActivitiTaskHandlerUtil; import com.xcgl.projecttask.dao.ProjectTaskDao; import com.xcgl.projecttask.entity.ProjecttaskEntity; import com.xcgl.projecttask.service.ProjecttaskServiceI; import com.xcgl.projecttaskplan.entity.ProjectTaskPlanEntity; import com.xcgl.taskresult.entity.TaskResultEntity; import com.xcgl.utils.XcglConstant; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.hibernate.criterion.Restrictions; 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.*; 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.TSDepart; import org.jeecgframework.web.system.pojo.base.TSUser; 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.*; 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 javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.validation.ConstraintViolation; import javax.validation.Validator; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.URI; import java.text.SimpleDateFormat; import java.util.*; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; /** * @Title: Controller * @Description: 项目工作 * @author onlineGenerator * @date 2018-09-07 18:09:01 * @version V1.0 * */ @Controller @RequestMapping("/projecttaskController") public class ProjecttaskController extends BaseController { /** * Logger for this class */ private static final Logger logger = Logger.getLogger(ProjecttaskController.class); @Autowired private ProjecttaskServiceI projecttaskService; @Autowired private SystemService systemService; @Autowired private Validator validator; @Autowired private ProjectTaskDao projectTaskDao; /** * 项目工作列表 页面跳转 * * @return */ @RequestMapping(params = "list") public ModelAndView list(HttpServletRequest request) { ModelAndView mv = null; String plantype = request.getParameter("type"); if(StringUtils.isNotEmpty(plantype)){ switch (plantype) { case "xmpx":// 培训工作(项目培训) mv = new ModelAndView("com/xcgl/projecttask/projecttaskList-peixun"); break; case "lzsb":// 离职上报 mv = new ModelAndView("com/xcgl/projecttask/projecttaskList-lizhi"); break; case "wlsq":// 物料申请 mv = new ModelAndView("com/xcgl/projecttask/projecttaskList-wuliao"); break; case "bjxc":// 保洁工作 mv = new ModelAndView("com/xcgl/projecttask/projecttaskList-baojie"); break; case "pmdept": //项目管理部工作 mv = new ModelAndView("com/xcgl/projecttask/projecttaskList-pmdept"); break; case "tyrw":// 通用工作 mv = new ModelAndView("com/xcgl/projecttask/projecttaskList"); break; } } if(mv == null) mv = new ModelAndView("com/xcgl/projecttask/projecttaskList"); request.setAttribute("tasktype", plantype); request.setAttribute("planid", request.getParameter("planid")); return mv; } /** * easyui AJAX请求数据 * * @param request * @param response * @param dataGrid */ @RequestMapping(params = "datagrid") public void datagrid(ProjecttaskEntity projecttask,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { CriteriaQuery cq = new CriteriaQuery(ProjecttaskEntity.class, dataGrid); //查询条件组装器 // org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, projecttask, request.getParameterMap()); try{ //自定义追加查询条件 String tasktype = request.getParameter("tasktype"); if(StringUtils.isNotEmpty(tasktype)){ cq.eq("tasktype", tasktype ); } String query_planendtime_begin = request.getParameter("planendtime_begin1"); String query_planendtime_end = request.getParameter("planendtime_end2"); if(StringUtil.isNotEmpty(query_planendtime_begin)){ cq.ge("planendtime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(query_planendtime_begin)); } if(StringUtil.isNotEmpty(query_planendtime_end)){ cq.le("planendtime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(query_planendtime_end)); } String description = request.getParameter("description"); if(StringUtil.isNotEmpty(description)) { cq.like("description", "%"+description+"%"); } String name = request.getParameter("name"); if(StringUtil.isNotEmpty(name)) { cq.like("name", "%"+name+"%"); } String owner = request.getParameter("owner"); if(StringUtil.isNotEmpty(owner)) { cq.eq("owner", owner); } String taskstatus = request.getParameter("taskstatus"); if(StringUtil.isNotEmpty(taskstatus)) { cq.eq("taskstatus", taskstatus); } String projectid = request.getParameter("projectid"); if(StringUtil.isNotEmpty(projectid)) { cq.eq("projectid", projectid); } if(StringUtil.isNotEmpty(projecttask.getTaskplanid())) { cq.eq("taskplanid", projecttask.getTaskplanid()); } }catch (Exception e) { throw new BusinessException(e.getMessage()); } cq.add(); this.projecttaskService.getDataGridReturn(cq, true); List dataList = dataGrid.getResults(); String deptSql = "select id,departname from t_s_depart "; List> projectinfo = systemService.findForJdbc(deptSql); HashMap projectMap = new HashMap(); for (Map map : projectinfo) { projectMap.put(map.get("id").toString(), map.get("departname").toString()); } String userSql = "select id,realname from t_s_base_user"; List> userinfo = systemService.findForJdbc(userSql); HashMap userMap = new HashMap(); for (Map map : userinfo) { userMap.put(map.get("id").toString(), map.get("realname").toString()); } ArrayList ids = new ArrayList(); for(Object data :dataList) { ProjecttaskEntity task = (ProjecttaskEntity)data; setOutTimeMsg(task); task.setProjectname(projectMap.get( task.getProjectid())); task.setOwnername(userMap.get(task.getOwner())); ids.add(task.getId()); } String qryUploadAttr = request.getParameter("qryupload"); if(ids.size() > 0 && StringUtils.isNotEmpty(qryUploadAttr) && qryUploadAttr.equals("1")) { String idstr = "'"+StringUtils.join(ids,"','")+"'"; String attrSql = "select distinct taskid from t_sys_file file " + "left join p_taskresult result on file.busi_id = result.id and file.busi_table = 'p_taskresult' " + "where result.taskid in("+idstr+") "; List exsitID = systemService.findListbySql(attrSql); HashMap exsitIDMap = new HashMap(); for (String id : exsitID) { exsitIDMap.put(id, id); } for(Object data :dataList) { ProjecttaskEntity task = (ProjecttaskEntity)data; if(exsitIDMap.containsKey(task.getId())) { task.setUploadattr("有附件"); } } } dataGrid.setResults(dataList); TagUtil.datagrid(response, dataGrid); } /** * 删除项目工作 * * @return */ @RequestMapping(params = "doDel") @ResponseBody public AjaxJson doDel(ProjecttaskEntity projecttask, HttpServletRequest request) { String message = null; AjaxJson j = new AjaxJson(); projecttask = systemService.getEntity(ProjecttaskEntity.class, projecttask.getId()); message = "项目工作删除成功"; try{ projecttaskService.delete(projecttask); 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; } @RequestMapping(params = "goCloseTask") public String goCloseTask(HttpServletRequest request) { String id = request.getParameter("id"); if(StringUtils.isNotBlank(id)){ ProjecttaskEntity projecttask= projecttaskService.getEntity(ProjecttaskEntity.class, id); request.setAttribute("task", projecttask); } return "com/xcgl/projecttask/close_task"; } @RequestMapping(params = "doCloseTask") @ResponseBody public AjaxJson doCloseTask(String id,String msg, HttpServletRequest request) { AjaxJson retJson = new AjaxJson(); TSUser tuser = (TSUser) ContextHolderUtils.getSession().getAttribute("LOCAL_CLINET_USER"); String changeSql = "update p_projecttask set taskstatus =? ,executer = ? ,closemsg=? where id = ? "; systemService.executeSql(changeSql, XcglConstant.TASKSTATUS_CLOSED, tuser.getId(), msg, id); retJson.setMsg("工作关闭成功。"); return retJson; } /** * 批量删除项目工作 * * @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(",")){ ProjecttaskEntity projecttask = systemService.getEntity(ProjecttaskEntity.class, id ); projecttaskService.delete(projecttask); 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 = "doAdd") @ResponseBody public AjaxJson doAdd(ProjecttaskEntity projecttask, HttpServletRequest request) { String message = null; AjaxJson j = new AjaxJson(); message = "项目工作添加成功"; try{ projecttaskService.save(projecttask); 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; } /** * 更新项目工作 * * @return */ @RequestMapping(params = "doUpdate") @ResponseBody public AjaxJson doUpdate(ProjecttaskEntity projecttask, HttpServletRequest request) { String message = null; AjaxJson j = new AjaxJson(); message = "项目工作更新成功"; ProjecttaskEntity t = projecttaskService.get(ProjecttaskEntity.class, projecttask.getId()); try { MyBeanUtils.copyBeanNotNull2Bean(projecttask, t); projecttaskService.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(ProjecttaskEntity projecttask, HttpServletRequest req) { if (StringUtil.isNotEmpty(projecttask.getId())) { projecttask = projecttaskService.getEntity(ProjecttaskEntity.class, projecttask.getId()); req.setAttribute("projecttaskPage", projecttask); } return new ModelAndView("com/xcgl/projecttask/projecttask-add"); } /** * 项目工作编辑页面跳转 * * @return */ @RequestMapping(params = "goUpdate") public ModelAndView goUpdate(ProjecttaskEntity projecttask, HttpServletRequest req) { if (StringUtil.isNotEmpty(projecttask.getId())) { projecttask = projecttaskService.getEntity(ProjecttaskEntity.class, projecttask.getId()); //查询名称数据 if(StringUtils.isNotEmpty(projecttask.getOwner())) { TSUser owner = systemService.get(TSUser.class, projecttask.getOwner()); projecttask.setOwnername(owner.getRealName()); } if(StringUtils.isNotEmpty(projecttask.getExecuter())) { TSUser owner = systemService.get(TSUser.class, projecttask.getExecuter()); projecttask.setExecutername(owner.getRealName()); } if(StringUtils.isNotEmpty(projecttask.getProjectid())) { TSDepart dept = systemService.get(TSDepart.class, projecttask.getProjectid()); projecttask.setProjectname(dept.getDepartname()); } if(StringUtils.isNotEmpty(projecttask.getTaskplanid())) { ProjectTaskPlanEntity plan = systemService.get(ProjectTaskPlanEntity.class, projecttask.getTaskplanid()); projecttask.setPlanname(plan.getName()); } req.setAttribute("projecttaskPage", projecttask); } return new ModelAndView("com/xcgl/projecttask/projecttask-update"); } /** * 导入功能跳转 * * @return */ @RequestMapping(params = "upload") public ModelAndView upload(HttpServletRequest req) { req.setAttribute("controller_name","projecttaskController"); return new ModelAndView("common/upload/pub_excel_upload"); } /** * 导出excel * * @param request * @param response */ @RequestMapping(params = "exportXls") public String exportXls(ProjecttaskEntity projecttask,HttpServletRequest request,HttpServletResponse response , DataGrid dataGrid,ModelMap modelMap) { CriteriaQuery cq = new CriteriaQuery(ProjecttaskEntity.class, dataGrid); //查询条件组装器 try{ //自定义追加查询条件 String tasktype = request.getParameter("tasktype"); if(StringUtils.isNotEmpty(tasktype)){ cq.eq("tasktype", tasktype ); } String query_planendtime_begin = request.getParameter("planendtime_begin1"); String query_planendtime_end = request.getParameter("planendtime_end2"); if(StringUtil.isNotEmpty(query_planendtime_begin)){ cq.ge("planendtime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(query_planendtime_begin)); } if(StringUtil.isNotEmpty(query_planendtime_end)){ cq.le("planendtime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(query_planendtime_end)); } String description = request.getParameter("description"); if(StringUtil.isNotEmpty(description)) { cq.like("description", "%"+description+"%"); } String name = request.getParameter("name"); if(StringUtil.isNotEmpty(name)) { cq.like("name", "%"+name+"%"); } String owner = request.getParameter("owner"); if(StringUtil.isNotEmpty(owner)) { cq.eq("owner", owner); } String taskstatus = request.getParameter("taskstatus"); if(StringUtil.isNotEmpty(taskstatus)) { cq.eq("taskstatus", owner); } String projectid = request.getParameter("projectid"); if(StringUtil.isNotEmpty(projectid)) { cq.eq("projectid", owner); } }catch (Exception e) { throw new BusinessException(e.getMessage()); } cq.add(); List projecttasks = this.projecttaskService.getListByCriteriaQuery(cq,false); modelMap.put(NormalExcelConstants.FILE_NAME,"项目工作"); modelMap.put(NormalExcelConstants.CLASS,ProjecttaskEntity.class); modelMap.put(NormalExcelConstants.PARAMS,new ExportParams("项目工作列表", "导出人:"+ResourceUtil.getSessionUser().getRealName(), "导出信息")); modelMap.put(NormalExcelConstants.DATA_LIST,projecttasks); return NormalExcelConstants.JEECG_EXCEL_VIEW; } /** * 导出excel 使模板 * * @param request * @param response */ @RequestMapping(params = "exportXlsByT") public String exportXlsByT(ProjecttaskEntity projecttask,HttpServletRequest request,HttpServletResponse response , DataGrid dataGrid,ModelMap modelMap) { modelMap.put(NormalExcelConstants.FILE_NAME,"项目工作"); modelMap.put(NormalExcelConstants.CLASS,ProjecttaskEntity.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 listProjecttaskEntitys = ExcelImportUtil.importExcel(file.getInputStream(),ProjecttaskEntity.class,params); for (ProjecttaskEntity projecttask : listProjecttaskEntitys) { projecttaskService.save(projecttask); } 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 listProjecttasks=projecttaskService.getList(ProjecttaskEntity.class); return listProjecttasks; } @RequestMapping(value = "/{id}", method = RequestMethod.GET) @ResponseBody public ResponseEntity get(@PathVariable("id") String id) { ProjecttaskEntity task = projecttaskService.get(ProjecttaskEntity.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 ProjecttaskEntity projecttask, UriComponentsBuilder uriBuilder) { //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息. Set> failures = validator.validate(projecttask); if (!failures.isEmpty()) { return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST); } //保存 try{ projecttaskService.save(projecttask); } catch (Exception e) { e.printStackTrace(); return new ResponseEntity(HttpStatus.NO_CONTENT); } //按照Restful风格约定,创建指向新任务的url, 也可以直接返回id或对象. String id = projecttask.getId(); URI uri = uriBuilder.path("/api/projecttaskController/" + 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 ProjecttaskEntity projecttask) { //调用JSR303 Bean Validator进行校验,如果出错返回含400错误码及json格式的错误信息. Set> failures = validator.validate(projecttask); if (!failures.isEmpty()) { return new ResponseEntity(BeanValidators.extractPropertyAndMessage(failures), HttpStatus.BAD_REQUEST); } //保存 try{ projecttaskService.saveOrUpdate(projecttask); } 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) { projecttaskService.deleteEntityById(ProjecttaskEntity.class, id); } @RequestMapping(params = "taskUndoCountStatic") @ResponseBody public Object taskUndoCountStatic(HttpServletRequest request) { List list =projectTaskDao.taskUndoCountStatic(ResourceUtil.getSessionUser().getId()); return list; } @RequestMapping(params = "userTaskList") public String userTaskList(HttpServletRequest request) { return "com/xcgl/projecttask/user-task"; } @RequestMapping(params = "userTaskDatagrid") public void userTaskDatagrid(ProjecttaskEntity projecttask,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { CriteriaQuery cq = new CriteriaQuery(ProjecttaskEntity.class, dataGrid); //查询条件组装器 // org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, projecttask, request.getParameterMap()); try{ TSUser user = ResourceUtil.getSessionUser(); cq.add(Restrictions.eq("owner",user.getId())); cq.add(Restrictions.ne("taskstatus","20")); String filter = request.getParameter("filter"); if(StringUtils.isNotBlank(filter)){ if(filter.equals("1")){//紧急 Calendar c = Calendar.getInstance(); c.add(Calendar.DAY_OF_MONTH,1); cq.add(Restrictions.gt("planendtime",new Date())); cq.add(Restrictions.lt("planendtime",c.getTime())); } if(filter.equals("2")){//逾期 cq.add(Restrictions.lt("planendtime",new Date())); } } }catch (Exception e) { throw new BusinessException(e.getMessage()); } cq.add(); this.projecttaskService.getDataGridReturn(cq, true); List resultList = dataGrid.getResults(); for(ProjecttaskEntity ptask : resultList){ String sourceType = ptask.getSourcetype(); if(!StringUtils.equals(sourceType,"activititask")){ ptask.setSourceid(null); } } TagUtil.datagrid(response, dataGrid); } //完成任务 @RequestMapping(params = "finishTask") @ResponseBody public Object finishTask(ProjecttaskEntity projecttask,HttpServletRequest request) { projecttask = systemService.findUniqueByProperty(ProjecttaskEntity.class,"id" ,projecttask.getId() ); projecttask.setExeendtime(new Date()); projecttask.setTaskstatus(XcglConstant.TASKSTATUS_DONE); systemService.save(projecttask); return true; } //检查任务 @RequestMapping(params = "checkResult") @ResponseBody public Object checkResult(ProjecttaskEntity projecttask,HttpServletRequest request) { projecttask = systemService.getEntity(ProjecttaskEntity.class,projecttask.getId()); String activitiTaskId = projecttask.getActivitiTaskId(); if(StringUtils.isNotBlank(activitiTaskId)){ PActivitiTaskEntity pActivitiTaskEntity = systemService.getEntity(PActivitiTaskEntity.class,activitiTaskId); ActivitiTaskHandler handler = ActivitiTaskHandlerUtil.getHandler(pActivitiTaskEntity.getExecuteClass()); return handler.checkResult(projecttask); } return new ActivitiTaskResult(true); } @RequestMapping(params = "goExeTaskView") public ModelAndView goExeTaskView(HttpServletRequest request) { ModelAndView mv = null; String id = request.getParameter("id"); String entrance = request.getParameter("entrance"); if(entrance == null || "".equals(entrance)){ request.setAttribute("entrance", "other"); }else{ request.setAttribute("entrance", entrance); } ProjecttaskEntity task = systemService.get(ProjecttaskEntity.class, id); List taskresultList = systemService.findByProperty(TaskResultEntity.class, "taskid", id); try { if(taskresultList.size() > 0) { request.setAttribute("taskresult", taskresultList.get(0)); }else { TaskResultEntity taskresult = new TaskResultEntity(); taskresult.setTaskid(id); systemService.save(taskresult); request.setAttribute("taskresult", taskresult); } } catch (Exception e) { logger.error(e.getMessage()); } mv = new ModelAndView("com/xcgl/taskresult/taskResultByTask-add"); request.setAttribute("task", task); return mv; } @RequestMapping(params = "doExeTask") @ResponseBody public AjaxJson doExeTask(String id, HttpServletRequest request) { String msg = "工作开始执行。"; AjaxJson retJson = new AjaxJson(); TSUser tuser = (TSUser) ContextHolderUtils.getSession().getAttribute("LOCAL_CLINET_USER"); ProjecttaskEntity task = systemService.get(ProjecttaskEntity.class, id); task.setTaskstatus(XcglConstant.TASKSTATUS_EXEING); task.setExecuter(tuser.getId()); task.setExestarttime(new Date()); // String changeSql = "update p_projecttask set taskstatus = ? ,executer = ? where id = ?"; // systemService.executeSql(changeSql, XcglConstant.TASKSTATUS_EXEING, tuser.getId(), id); systemService.saveOrUpdate(task); retJson.setMsg(msg); retJson.setObj(task); systemService.addLog(msg+"taskid:"+id, Globals.Log_Leavel_INFO, Globals.Log_Type_OTHER); return retJson; } //查询业务实体的的审批流实例id(procInstId) @RequestMapping(params = "findProcInstId") @ResponseBody public AjaxJson findProcInstId(String sourceid,String tasktype, HttpServletRequest request) { String msg = "查询审批流实例成功"; AjaxJson retJson = new AjaxJson(); if(StringUtils.isEmpty(sourceid) || StringUtils.isEmpty(tasktype)) { retJson.setSuccess(false); retJson.setMsg("系统异常,数据错误,请联系管理员"); return retJson; } //这两个签报类型与任务类型值不同,需要转换,其他都相同 if(tasktype.equals("sameleveltransfer")) { tasktype = "samelevel_transfer_new"; }else if(tasktype.equals("user_leave")) { tasktype = "leave_new"; } String findtableSql = "select real_tablename from t_process_busconfig where process_type = '"+tasktype+"'"; List tables = systemService.findListbySql(findtableSql); if(tables == null || tables.size() == 0) { retJson.setSuccess(false); retJson.setMsg("查询不到审批流配置数据,请联系管理员"); return retJson; } String procInstIdSql = "select proc_inst_id from "+tables.get(0)+" where id = '"+sourceid+"'"; List instIds = systemService.findListbySql(procInstIdSql); if(instIds == null || instIds.size() == 0) { retJson.setSuccess(false); retJson.setMsg("查询不到签报数据,请联系管理员"); return retJson; } retJson.setObj(instIds.get(0)); retJson.setMsg(msg); return retJson; } @RequestMapping(params = "myTaskList") public String myTaskList(HttpServletRequest request) { return "com/xcgl/projecttask/mytaskList"; } @RequestMapping(params = "myTaskListDatagrid") public void myTaskListDatagrid(ProjecttaskEntity projecttask,HttpServletRequest request, HttpServletResponse response, DataGrid dataGrid) { CriteriaQuery cq = new CriteriaQuery(ProjecttaskEntity.class, dataGrid); // 查询条件组装器 if (StringUtils.isNotBlank(projecttask.getCreateName())) { // 模糊查询 cq.like("createName", "%" + projecttask.getCreateName() + "%"); projecttask.setCreateName(null); } // 查询条件组装器 if (StringUtils.isNotBlank(projecttask.getName())) { // 模糊查询 cq.like("name", "%" + projecttask.getName() + "%"); projecttask.setName(null); } //查询条件组装器 if(StringUtils.isNotBlank(projecttask.getTaskstatus())){ if("1".equals(projecttask.getTaskstatus())){ //未完成(预计完成时间大于等于当前时间,Taskstatus=0,1) cq.in("taskstatus", new Object[]{"0", "1"}); cq.ge("planendtime", new Date()); projecttask.setTaskstatus(null); }else if("20".equals(projecttask.getTaskstatus())){ //已完成(完成时间小于等于预计完成时间,Taskstatus=20) cq.eq("taskstatus", "20"); cq.add(Restrictions.leProperty("exeendtime","planendtime")); projecttask.setTaskstatus(null); }else if("30".equals(projecttask.getTaskstatus())){ //逾期未完成(预计完成时间小于当前时间,Taskstatus=0,1) cq.in("taskstatus", new Object[]{"0", "1"}); cq.lt("planendtime", new Date()); projecttask.setTaskstatus(null); }else if("40".equals(projecttask.getTaskstatus())){ //逾期已完成(完成时间大于预计完成时间,Taskstatus=20) cq.eq("taskstatus", "20"); cq.add(Restrictions.gtProperty("exeendtime","planendtime")); projecttask.setTaskstatus(null); } } //查询条件组装器 try{ TSUser user = ResourceUtil.getSessionUser(); cq.add(Restrictions.eq("owner",user.getId())); }catch (Exception e) { throw new BusinessException(e.getMessage()); } org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, projecttask, request.getParameterMap()); cq.add(); this.projecttaskService.getDataGridReturn(cq, true); List resultList = dataGrid.getResults(); for(ProjecttaskEntity ptask : resultList){ String sourceType = ptask.getSourcetype(); if(!StringUtils.equals(sourceType,"activititask")){ ptask.setSourceid(null); } if("0".equals(ptask.getTaskstatus()) || "1".equals(ptask.getTaskstatus())){ Date nowDate = new Date(); Date endDate = ptask.getPlanendtime(); if (nowDate.getTime() > endDate.getTime()) { ptask.setStateWrittenWords("逾期未完成"); }else{ ptask.setStateWrittenWords("未完成"); } }else if("20".equals(ptask.getTaskstatus())){ Date endTime = ptask.getExeendtime(); if(endTime == null){ ptask.setStateWrittenWords("已完成"); }else{ Date endDate = ptask.getPlanendtime(); if(endTime.getTime() > endDate.getTime()){ ptask.setStateWrittenWords("逾期已完成"); }else{ ptask.setStateWrittenWords("已完成"); } } }else if("10".equals(ptask.getTaskstatus())){ ptask.setStateWrittenWords("已关闭"); } } TagUtil.datagrid(response, dataGrid); } // 下载附件 @RequestMapping(params = "downloadAttr") public void downloadAttr(String taskid ,HttpServletRequest request, HttpServletResponse response) { String deptSql = "select dept.departname as projectname,result.id as id " + "from p_taskresult result \n" + "left join p_projecttask task on result.taskid = task.id\n" + "left join t_s_depart dept on task.projectid = dept.id\n" + "where task.id =? "; List> projectinfo = systemService.findForJdbc(deptSql, taskid); HashMap projectMap = new HashMap(); for (Map map : projectinfo) { projectMap.put(map.get("id").toString(), map.get("projectname").toString()); } List> fileInfo = new ArrayList>(); String fileInfoSql = "select file_url,file_name,busi_id " + "from t_sys_file file left join p_taskresult result on file.busi_id = result.id and file.busi_table = 'p_taskresult' where result.taskid = ?"; fileInfo = systemService.findForJdbc(fileInfoSql, taskid); if (fileInfo.size() == 0) { return; } zipfiles(fileInfo, projectMap, request, response); } // 下载所有附件附件 @RequestMapping(params = "downloadAllAttr") public void downloadAllAttr(String planid, HttpServletRequest request, HttpServletResponse response) { String planEndTimeBegin = request.getParameter("planendtime_begin1"); String planEndTImeEnd = request.getParameter("planendtime_end2"); String taskstatus = request.getParameter("taskstatus"); String whereStr= ""; whereStr += StringUtils.isNotEmpty(planEndTimeBegin)?" and task.planendtime > '"+planEndTimeBegin+"'" :""; whereStr += StringUtils.isNotEmpty(planEndTImeEnd)?" and task.planendtime < '"+planEndTImeEnd+"'" :""; whereStr += StringUtils.isNotEmpty(taskstatus)?" and task.taskstatus = '"+taskstatus+"'" :""; String deptSql = "select dept.departname as projectname,result.id as id from p_taskresult result \n" + "left join p_projecttask task on result.taskid = task.id \n" + "left join t_s_depart dept on task.projectid = dept.id \n" + "where task.taskplanid =? "+whereStr; List> projectinfo = systemService.findForJdbc(deptSql, planid); HashMap projectMap = new HashMap(); for (Map map : projectinfo) { projectMap.put(map.get("id").toString(), map.get("projectname").toString()); } String fileInfoSql = "select file_url,file_name,busi_id\n" + "from t_sys_file file \n" + "left join p_taskresult result on file.busi_id = result.id and file.busi_table = 'p_taskresult' \n" + "left join p_projecttask task on result.taskid = task.id\n" + "where task.taskplanid = ?"+whereStr; List> fileInfo = systemService.findForJdbc(fileInfoSql, planid); if (fileInfo.size() == 0) { return; } zipfiles(fileInfo, projectMap, request, response); } private void zipfiles(List> fileInfo,HashMap projectMap,HttpServletRequest request, HttpServletResponse response) { InputStream inputStream = null; OutputStream outputStream = null; ZipOutputStream zipOutputStream = null; String timenow = ""; SimpleDateFormat formater = new SimpleDateFormat("yyMMddHHmmss_sss"); try { timenow = formater.format(new Date()); } catch (Exception e) { } OSSClient ossClient = null; try { outputStream=response.getOutputStream(); String codedFileName = "任务附件下载_"+timenow+".zip"; if (isIE(request)) { codedFileName = java.net.URLEncoder.encode(codedFileName, "UTF8"); } else { codedFileName = new String(codedFileName.getBytes("UTF-8"), "ISO-8859-1"); } zipOutputStream = new ZipOutputStream(outputStream); response.setContentType("application/octet-stream "); response.setHeader("Connection", "close"); // 表示不能用浏览器直接打开 response.setHeader("Accept-Ranges", "bytes");// 告诉客户端允许断点续传多线程连接下载 response.setHeader("Content-Disposition", "attachment;filename=" + codedFileName); response.setCharacterEncoding("UTF-8"); ossClient = new OSSClient(CustomerConstant.ENDPOINT, CustomerConstant.ACCESSKEY_ID, CustomerConstant.ACCESSKEY_SECRET); for (Map map : fileInfo) { String fileUrl = map.get("file_url").toString(); String fileName = projectMap.get(map.get("busi_id").toString())+ "_"+map.get("file_name").toString(); OSSObject ossObject = ossClient.getObject(CustomerConstant.BUCKETNAME, fileUrl); inputStream = new BufferedInputStream(ossObject.getObjectContent()); ZipEntry entry = new ZipEntry(fileName); zipOutputStream.putNextEntry(entry); byte[] buf = new byte[1024]; int len; while ((len = inputStream.read(buf)) > 0) { zipOutputStream.write(buf, 0, len); } } // 关闭client ossClient.shutdown(); zipOutputStream.flush(); } catch (Exception e) { logger.info("--通过流的方式获取文件异常--" + e.getMessage()); }finally{ try { if(zipOutputStream != null) { zipOutputStream.close(); } if(inputStream != null){ inputStream.close(); } if(outputStream != null){ outputStream.close(); } } catch (IOException e) { org.jeecgframework.core.util.LogUtil.error(e.getMessage()); } } } boolean isIE(HttpServletRequest request) { return (request.getHeader("USER-AGENT").toLowerCase().indexOf("msie") > 0 || request.getHeader("USER-AGENT").toLowerCase().indexOf("rv:11.0") > 0) ? true : false; } private void setOutTimeMsg(ProjecttaskEntity task) { if(task.getExeendtime() == null && task.getPlanendtime().compareTo(new Date()) < 0) { task.setOuttimemsg("已逾期"); } if(task.getExeendtime() != null && task.getExeendtime().compareTo(task.getPlanendtime()) > 0) { task.setOuttimemsg("逾期完成"); } } @RequestMapping(params = "downloadAttrByTask") public void downloadAttrByTask(String taskid, HttpServletRequest request, HttpServletResponse response) { String deptSql = "select dept.departname as projectname ,task.taskplanid as id from p_projecttask task \n" + "left join t_s_depart dept on task.projectid = dept.id \n" + "where task.id =? " ; List> projectinfo = systemService.findForJdbc(deptSql, taskid); HashMap projectMap = new HashMap(); for (Map map : projectinfo) { projectMap.put(map.get("id").toString(), map.get("projectname").toString()); } String fileInfoSql = "select file_url,file_name,busi_id\n" + "from t_sys_file file where file.busi_id =? "; List> fileInfo = systemService.findForJdbc(fileInfoSql, projectinfo.get(0).get("id".toString())); if (fileInfo.size() == 0) { return; } zipfiles(fileInfo, projectMap, request, response); } }