package com.yihu.hos.system.controller; import com.fasterxml.jackson.databind.ObjectMapper; import com.yihu.hos.common.constants.Constants; import com.yihu.hos.system.model.SystemServiceFlow; import com.yihu.hos.system.model.SystemServiceFlowClass; import com.yihu.hos.system.model.SystemServiceFlowTemp; import com.yihu.hos.system.service.FlowManager; import com.yihu.hos.system.service.intf.IFlowManage; import com.yihu.hos.web.framework.model.Result; import com.yihu.hos.web.framework.util.controller.BaseController; import org.apache.commons.fileupload.disk.DiskFileItem; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.commons.CommonsMultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 流程管理 * @author HZY * @vsrsion 1.0 * Created at 2016/8/18. */ @RequestMapping("/flow") @Controller public class FlowController extends BaseController { @Resource(name = FlowManager.BEAN_ID) private IFlowManage flowManage; /** * 流程管理管理界面 * * @param model * @return */ @RequestMapping("/initial") public String appInitial(Model model) { model.addAttribute("contentPage", "system/flow/flow"); return "partView"; } @RequestMapping("/getFlowList") @ResponseBody public Result getFlowList(HttpServletRequest request,String name,String valid) { try { Map params = new HashMap<>(); params.put("name", name); params.put("valid", valid); String page = StringUtils.isEmpty(request.getParameter("page")) ? "1" : request.getParameter("page"); String rows = StringUtils.isEmpty(request.getParameter("rows")) ? "10" : request.getParameter("rows"); params.put("page", page); params.put("rows", rows); Result result = flowManage.getFlowList(params); return result; } catch (Exception ex) { ex.printStackTrace(); return Result.error(ex.getMessage()); } } /** * 流程管理-新增/修改页面 * @param model * @param id * @return */ @RequestMapping("/editorFlow") public String editorFlow(Model model, String id) { try { ObjectMapper objectMapper = new ObjectMapper(); SystemServiceFlow flow = null; List flowClassList = null; List flowTempList = null; if (id != null && id.length() > 0) { flow = flowManage.getFlowById(Integer.parseInt(id)); flowClassList = flowManage.getFlowClassByFlowId(flow.getId()); flowTempList = flowManage.getFlowTempByFlowId(flow.getId()); if (Constants.CLASS.equals(flow.getFileType())){ model.addAttribute("flowClass", objectMapper.writeValueAsString(flowClassList)); }else if (Constants.JAVA.equals(flow.getFileType())){ model.addAttribute("flowClass", objectMapper.writeValueAsString(flowTempList)); } } else { flow = new SystemServiceFlow(); flowClassList = new ArrayList<>(); flowTempList = new ArrayList<>(); } flow.setFlowClassArray(flowClassList); flow.setFlowTempArray(flowTempList); model.addAttribute("model", flow); model.addAttribute("contentPage", "/system/flow/editorFlow"); } catch (Exception e) { e.printStackTrace(); } return "pageView"; } /** * 新增流程信息 * @param request * @return */ @RequestMapping("addFlow") @ResponseBody public Result addFlow(HttpServletRequest request,String flowClass) { try { ObjectMapper objectMapper = new ObjectMapper(); SystemServiceFlow flow = objectMapper.readValue(flowClass,SystemServiceFlow.class); // SystemServiceFlow obj = new SystemServiceFlow(); // BeanUtils.populate(obj, request.getParameterMap()); // // List flowClass = new ArrayList<>(); // BeanUtils.populate(flowClass, request.getParameterMap()); // obj.setFlowClassArray(flowClass); // // List flowTemps = new ArrayList<>(); // BeanUtils.populate(flowTemps, request.getParameterMap()); // obj.setFlowTempArray(flowTemps); return flowManage.addFlow(flow); } catch (Exception ex) { ex.printStackTrace(); return Result.error(ex.getMessage()); } } /** * 删除流程信息 * @param request * @return */ @RequestMapping("/deleteFlow") @ResponseBody public Result deleteFlow(HttpServletRequest request) { try { String id = request.getParameter("id"); if (id != null && id.length() > 0) { flowManage.deleteFlow(Integer.parseInt(id)); return Result.success("删除成功!"); }else { return Result.error("删除失败,该流程已不存在!"); } } catch (Exception e) { e.printStackTrace(); return Result.error("删除失败!"); } } /** * 修改流程信息 */ @RequestMapping("updateFlow") @ResponseBody public Result updateFlow(HttpServletRequest request,String flowClass) { try { ObjectMapper objectMapper = new ObjectMapper(); SystemServiceFlow flow = objectMapper.readValue(flowClass,SystemServiceFlow.class); return flowManage.updateFlow(flow); } catch (Exception ex) { ex.printStackTrace(); return Result.error(ex.getMessage()); } } /** * 文件上传 * @param file * @return */ @RequestMapping(value = "/upload", produces = "application/json;charset=UTF-8", method = RequestMethod.POST) @ResponseBody public Object upload(@RequestParam MultipartFile file) { //TODO 文件地址设置 try { CommonsMultipartFile transferFile = (CommonsMultipartFile)file; return flowManage.uploadFile(transferFile); } catch (Exception e) { return Result.error("上传失败"); } } /** * 图片查看 * @return */ @RequestMapping(value = "/read/{fileName}", produces = "application/json;charset=UTF-8", method = RequestMethod.GET) @ResponseBody public Object read(HttpServletResponse response, @PathVariable("fileName") String fileName) { try { OutputStream os = response.getOutputStream(); return flowManage.readFile(os, fileName); } catch (Exception e) { return Result.error("读取失败!"); } } @RequestMapping(value = "/flowTempList", produces = "application/json;charset=UTF-8", method = RequestMethod.POST) @ResponseBody public Result flowTempList(String type) { try { Result result = flowManage.getFlowList(type); return result; } catch (Exception ex) { ex.printStackTrace(); return Result.error(ex.getMessage()); } } }