package com.nis.web.controller.configuration; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.mvc.support.RedirectAttributes; import com.nis.domain.Page; import com.nis.domain.configuration.RequestInfo; import com.nis.domain.configuration.TaskInfo; import com.nis.domain.log.BaseLogEntity; import com.nis.util.Constants; import com.nis.util.DateUtils; import com.nis.util.StringUtil; import com.nis.util.excel.ExcelField; import com.nis.web.controller.BaseController; import com.nis.web.service.configuration.RequestInfoService; import jersey.repackaged.com.google.common.collect.Lists; @Controller @RequestMapping("${adminPath}/cfg/request") public class RequestInfoController extends BaseController{ @Autowired private RequestInfoService requestInfoService; /** *来函列表 */ @RequestMapping(value = {"list",""}) public String list(RequestInfo requestInfo, HttpServletRequest request, HttpServletResponse response, Model model) { Page page = requestInfoService.findRequestInfo(new Page(request, response,"r"), requestInfo); model.addAttribute("page", page); return "/cfg/requestList"; } /** * 进入用户添加或修改页面 */ @RequestMapping(value={"form"}) public String form(RequestInfo requestInfo, Model model) { TaskInfo taskInfo = new TaskInfo(); taskInfo.setId(requestInfo.getTaskId()); showTask(taskInfo,model); if(requestInfo.getId()!=null){ Integer functionId=requestInfo.getFunctionId(); requestInfo = requestInfoService.getRequestInfoById(requestInfo.getId()); requestInfo.setFunctionId(functionId); model.addAttribute("requestInfo", requestInfo); }else{ model.addAttribute("requestInfo", requestInfo); } return "/cfg/requestForm"; } /** * 新增/修改 */ @RequestMapping(value = "saveOrUpdate") public String saveOrUpdate(RequestInfo requestInfo, HttpServletRequest request, Model model, RedirectAttributes redirectAttributes) { try { if(requestInfo.getId()!=null){ // 保存用户信息 logger.info(requestInfo.getId()+"修改成功"); requestInfoService.saveOrUpdate(requestInfo); addMessage(redirectAttributes,"success","save_success"); }else{ if (!"true".equals(checkRequestNumber(requestInfo.getRequestNumber()))){ logger.info(requestInfo.getRequestNumber()+"重复数据"); Properties props=this.getMsgProp(); addMessage("error",model,props.getProperty("duplicate", "Duplicate")+" "+props.getProperty("title", "Title")); return form(requestInfo, model); } // 保存用户信息 requestInfoService.saveOrUpdate(requestInfo); addMessage(redirectAttributes,"success","save_success"); logger.info(requestInfo.getId()+"保存成功"); } } catch (Exception e) { logger.error(e.getMessage()); e.printStackTrace(); addMessage(model,"error","save_failed"); } return "redirect:" + adminPath + "/cfg/request/list?functionId="+requestInfo.getFunctionId()+"&repage"; } /** * 验证是否有效 */ @ResponseBody @RequestMapping(value = "checkRequestNumber") public String checkRequestNumber(String requestNumber) { if (requestNumber !=null && requestInfoService.getRequestInfoByRequestNumber(requestNumber) == null) { return "true"; } return "false"; } /** * 审核通过 * @param requestInfo * @param model * @return */ @RequestMapping(value = "requestExamine") public String requestExamine(Integer functionId,String ids, Model model,RedirectAttributes redirectAttributes){ String[] exId = ids.split(","); requestInfoService.requestExamine(exId); addMessage(redirectAttributes,"success","audit_success"); return "redirect:" + adminPath + "/cfg/request/list?functionId="+functionId+"&repage"; } /** * 审核未通过 * @param requestInfo * @param model * @return */ @RequestMapping(value = "requestExamineNo") public String requestExamineNo(Integer functionId,String ids, Model model,RedirectAttributes redirectAttributes){ String[] noId = ids.split(","); requestInfoService.requestExamineNo(noId); addMessage(redirectAttributes,"success","audit_success"); return "redirect:" + adminPath + "/cfg/request/list?functionId="+functionId+"&repage"; } /** * 取消审核 * @param requestInfo * @param model * @return */ @RequestMapping(value = "requestCancelExamine") public String requestCancelExamine(Integer functionId,String ids, Model model,RedirectAttributes redirectAttributes){ String[] canclelId = ids.split(","); requestInfoService.requestCancelExamine(canclelId); addMessage(redirectAttributes,"success","audit_success"); return "redirect:" + adminPath + "/cfg/request/list?functionId="+functionId+"&repage"; } /** * 删除 * @param requestInfo * @param model * @return */ @RequestMapping(value = "delete") public String delete(Integer functionId,String ids, Model model,RedirectAttributes redirectAttributes){ String[] delId = ids.split(","); requestInfoService.delete(delId); addMessage(redirectAttributes,"success","delete_success"); return "redirect:" + adminPath + "/cfg/request/list?functionId="+functionId+"&repage"; } /** * 查询专项任务 * @param taskInfo * @param model */ public void showTask(TaskInfo taskInfo ,Model model){ List taskInfos = requestInfoService.showTask(taskInfo); model.addAttribute("taskInfos", taskInfos); } /** * 配置取消审核操作时选择来函 * @param model * @return */ @RequestMapping(value="requestSelectInfo") public String requestSelectInfo(Model model){ List requestInfos=requestInfoService.getValidRequestInfo(); model.addAttribute("requestInfos", requestInfos); return "/basics/requestSelectInfo"; } //配置导出 @RequestMapping(value = "exportRequestInfo") public void exportTaskInfo(Model model,HttpServletRequest request,HttpServletResponse response, String exType,String hcolumn, @ModelAttribute("requestInfo")RequestInfo entity,String ids,RedirectAttributes redirectAttributes){ try { //export data info List titleList=new ArrayList(); Map> classMap=new HashMap>(); Map dataMap=new HashMap(); Map noExportMap=new HashMap(); //导出选中记录 List list=Lists.newArrayList(); titleList.add(entity.getMenuNameCode()); classMap.put(entity.getMenuNameCode(), RequestInfo.class); Field[] fields=RequestInfo.class.getDeclaredFields(); StringBuffer column=new StringBuffer(); Properties props= this.getMsgProp(); for(Field f: fields) { ExcelField ex=f.getAnnotation(ExcelField.class); if(ex!=null) { String title=ex.title(); if(entity.getColumns().indexOf(props.getProperty(title, title))==-1) { column.append(","+title); } } } if(column.toString().length()>0) { column.append(","); } if(entity.getBeginDate()==null){ hcolumn+=",request_time,"; } if(entity.getDobeginDate()==null){ hcolumn+=",edit_time,"; } if(!StringUtils.isEmpty(hcolumn)){ column.append(","+hcolumn+","); } noExportMap.put(entity.getMenuNameCode(),column.toString()); if(!StringUtil.isEmpty(ids)){ for(String id:ids.split(",")){ Long.parseLong(id); } list=requestInfoService.getRequestInfoByIds(ids); }else{ //条件导出数据大于最大导出数,只导出最大导出条数 Page pageInfo=new Page(request, response,"a"); pageInfo.setPageNo(1); pageInfo.setPageSize(Constants.MAX_EXPORT_SIZE); Page page = requestInfoService.findRequestInfo(pageInfo, entity); list=page.getList(); } dataMap.put(entity.getMenuNameCode(),list); // 获取国际化配置 String timeRange = initRequestMap(entity); noExportMap.put("timeRange", timeRange); if ("csv".equals(exType)) { this._exportCsv(model, request, response, redirectAttributes, entity.getMenuNameCode(), titleList, classMap, dataMap, noExportMap); } else { this._export(model, request, response, redirectAttributes, entity.getMenuNameCode(), titleList, classMap, dataMap, noExportMap); } } catch (Exception e) { logger.error("ip addr export failed",e); addMessage(redirectAttributes,"error", "export_failed"); } //return "redirect:" + adminPath +"/ntc/iplist/list?functionId="+entity.getFunctionId(); } public String initRequestMap(RequestInfo info){ Properties msgProp = getMsgProp(); String logTime=msgProp.getProperty(info.getMenuNameCode(),info.getMenuNameCode()); if(info.getBeginDate()!=null){ logTime+=" "+msgProp.getProperty("request_time","request_time")+":"+DateUtils.formatDateTime(info.getBeginDate()); if(info.getEndDate()!=null){ logTime+="—"+DateUtils.formatDateTime(info.getEndDate()); }else{ logTime+="—"+DateUtils.getDateTime(); } } if(info.getDobeginDate()!=null){ logTime+=" "+msgProp.getProperty("edit_time","edit_time")+":"+DateUtils.formatDateTime(info.getDobeginDate()); if(info.getDoendDate()!=null){ logTime+="—"+DateUtils.formatDateTime(info.getDoendDate()); }else{ logTime+="—"+DateUtils.getDateTime(); } } return logTime; } }