From c8aee7b9bfd79cfd741d7e5692520f4f51a31a86 Mon Sep 17 00:00:00 2001 From: kimi <kimi42345@gmail.com> Date: 星期一, 18 五月 2020 18:30:01 +0800 Subject: [PATCH] bak 修改 获取版本数据前 --- src/main/java/com/highdatas/mdm/controller/ActivitiController.java | 365 +++++++++++++++++++++++++++++++++++---------------- 1 files changed, 249 insertions(+), 116 deletions(-) diff --git a/src/main/java/com/highdatas/mdm/controller/ActivitiController.java b/src/main/java/com/highdatas/mdm/controller/ActivitiController.java index 3ab3cc5..eb66c9e 100644 --- a/src/main/java/com/highdatas/mdm/controller/ActivitiController.java +++ b/src/main/java/com/highdatas/mdm/controller/ActivitiController.java @@ -3,30 +3,29 @@ import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; -import com.highdatas.mdm.entity.Flows; -import com.highdatas.mdm.entity.Maintain; -import com.highdatas.mdm.entity.TUser; +import com.highdatas.mdm.entity.*; import com.highdatas.mdm.mapper.FlowsMapper; import com.highdatas.mdm.pojo.*; -import com.highdatas.mdm.service.ActivitiService; -import com.highdatas.mdm.service.IFlowsService; -import com.highdatas.mdm.service.IMaintainService; -import com.highdatas.mdm.service.ITUserService; +import com.highdatas.mdm.service.*; import com.highdatas.mdm.service.act.*; import com.highdatas.mdm.util.Constant; +import com.highdatas.mdm.util.DbUtils; +import com.highdatas.mdm.util.TodoClient; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.history.HistoricActivityInstance; import org.activiti.engine.history.HistoricProcessInstance; import org.activiti.engine.task.Task; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; +import org.springframework.transaction.annotation.Transactional; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; -import java.io.*; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.util.*; import java.util.stream.Collectors; @@ -66,48 +65,63 @@ @Autowired IMaintainService maintainService; + @Autowired - ITUserService userService; + IMasterModifiedService masterModifiedService; - @Value("${img.url}") - String basePath; + @Autowired + IMaintainFieldService maintainFieldService; + @Autowired + ISysFieldService fieldService; + @Autowired + TodoClient client; + @Autowired + IMenuMappingService menuMappingService; - @RequestMapping(value = "/list", method = RequestMethod.GET) - public Result<List<Map<String, Object>>> list(HttpServletRequest request) throws FileNotFoundException { + + + @RequestMapping(value = "/list/{pageNo}", method = RequestMethod.GET) + public Result<List<Map<String, Object>>> list(@PathVariable Integer pageNo, HttpServletRequest request) { String filterSegment = request.getParameter("filterSegment"); + String pageSize = request.getParameter("pageSize"); if (StringUtils.isEmpty(filterSegment)) { filterSegment = Constant.WHERE_DEFAULT; } List<Map<String, Object>> list = flowsMapper.selectVersion(filterSegment); for (Map<String, Object> one : list) { String newModelId = (String) one.get(Constant.ID); - String url = "act/img/" + newModelId; - one.put("imgurl",url); + String url = "act/img/" + newModelId; + one.put("imgurl", url); } - return Result.success(list); + Integer size; + if (StringUtils.isEmpty(pageSize)) { + size = 15; + } else { + size = Integer.valueOf(pageSize); + } + return fieldService.getPagedDataByList(list, pageNo, size); } + @RequestMapping(value = "/img/{modelId}", method = RequestMethod.GET) - public void image(@PathVariable String modelId, HttpServletResponse response) { - String filePath = basePath + modelId +"/"+ modelId + ".png"; - File file = new File(filePath); - FileInputStream fileInputStream = null; + public void image(@PathVariable String modelId, HttpServletResponse response) { + InputStream is = repositoryService.getModelImg(modelId); + if (is == null) { + return; + } response.setHeader("Content-Type", "image/png"); - try{ - fileInputStream = new FileInputStream(file); + try { OutputStream outputStream = response.getOutputStream(); byte[] b = new byte[1024]; int len; - while ((len = fileInputStream.read(b, 0, 1024)) != -1) { + while ((len = is.read(b, 0, 1024)) != -1) { outputStream.write(b, 0, len); } - } - catch (Exception e) { + } catch (Exception e) { e.printStackTrace(); - } - finally { - if (fileInputStream != null) { + } finally { + if (is != null) { try { - fileInputStream.close(); + is.close(); } catch (IOException e) { e.printStackTrace(); } @@ -116,8 +130,9 @@ } } + @RequestMapping(value = "/deleteModel/{modelId}", method = RequestMethod.GET) - public Result deleteModel(@PathVariable String modelId) { + public Result deleteModel(@PathVariable String modelId) { boolean b = repositoryService.deleteModel(modelId); if (b) { return Result.success(null); @@ -125,64 +140,125 @@ return Result.error(CodeMsg.DELETE_ERROR); } } + @RequestMapping(value = "/processlist", method = RequestMethod.GET) - public Result<Result<JSONArray>> processlist(HttpServletRequest request) { - Result<JSONArray> processList = repositoryService.getProcessList(); + public Result<Result<JSONArray>> processlist(HttpServletRequest request) { + Result<JSONArray> processList = repositoryService.getProcessList(); return Result.success(processList); } @RequestMapping(value = "/modellist", method = RequestMethod.GET) - public Result<Result<JSONArray>> modellist(HttpServletRequest request) { - Result<JSONArray> processList = repositoryService.getProcessList(); + public Result<Result<JSONArray>> modellist(HttpServletRequest request) { + Result<JSONArray> processList = repositoryService.getProcessList(); return Result.success(processList); } + @RequestMapping(value = "/started", method = RequestMethod.POST) + public Result<Object> startRun(@RequestBody JSONArray result) { + for (int i = 0; i < result.size(); i++) { + String flowId = result.getString(i); + log.info(flowId); + } + return Result.success(null); + } - @RequestMapping(value = "/start/{key}", method = RequestMethod.GET) - public Result<Object> start(@PathVariable String key,@RequestParam String businessId, HttpServletRequest request) { + @RequestMapping(value = "/startRun/{key}", method = RequestMethod.GET) + public Result<Object> startRun(@PathVariable String key, @RequestParam String businessId, HttpServletRequest request) { + TUser user = DbUtils.getUser(request); + String businessType = request.getParameter("businessType"); + ActivitiBusinessType type; + if (StringUtils.isEmpty(businessType)) { + type = ActivitiBusinessType.maintain; + } else { + type = ActivitiBusinessType.valueOf(businessType); + } + String content; + if (type.equals(ActivitiBusinessType.maintain)) { + Maintain maintain = maintainService.selectById(businessId); + SysMenu menuByTableName = menuMappingService.getMenuByTableName(maintain.getTableName()); + content = menuByTableName.getName() + "涓婚鏂板鐗堟湰闇�瑕佸鎵�"; + } else { + MaintainField maintainField = maintainFieldService.selectById(businessId); + SysMenu menuByTableName = menuMappingService.getMenuByTableName(maintainField.getTableName()); + content = menuByTableName.getName() + "涓婚淇敼瀛楁闇�瑕佸鎵�"; + } + boolean open = client.open(key, businessId, content, user.getUserId(), type); + if (open) { + return Result.success(CodeMsg.SUCCESS); + } else { + return Result.error(CodeMsg.Client_fail); + } + } + + @RequestMapping(value = "/start/{key}", method = RequestMethod.POST) + public Result<Object> start(@PathVariable String key, @RequestBody JSONObject reqObj, HttpServletRequest request) { + log.info("process start.."); if (StringUtils.isEmpty(key)) { - return Result.error(new CodeMsg(1000, "key is not found")); - } - String desp = request.getParameter("desp"); - String businessType = request.getParameter("businessType"); - ActivitiBusinessType type; - if (StringUtils.isEmpty(businessType)) { - type = ActivitiBusinessType.maintain; - } else { - type = ActivitiBusinessType.valueOf(businessType); - } - HttpSession session = request.getSession(); - Flows flows = activitiService.start(key, session, businessId, type); - if (flows == null) { - return Result.error(CodeMsg.INSERT_ERROR); - } else { + return Result.error(new CodeMsg(1000, "key is not found")); + } - if (type.equals(ActivitiBusinessType.maintain)) { + String businessId = reqObj.getString("businessId"); + if (StringUtils.isEmpty(businessId)) { + return Result.error(new CodeMsg(1000, "businessId is not found")); + } + String businessType = reqObj.getString("businessType"); + JSONObject variableObj = reqObj.getJSONObject("variableMap"); + Map<String, Object> variableMap = new HashMap<>(); + if (variableObj != null) { + variableMap = DbUtils.JsonObjectToHashMap(variableObj); + } + ActivitiBusinessType type; + if (StringUtils.isEmpty(businessType)) { + type = ActivitiBusinessType.maintain; + } else { + type = ActivitiBusinessType.valueOf(businessType); + } + Object descObj = variableMap.get("desc"); + String desc; + if (descObj == null) { + desc = "鍒涘缓鏂扮増鏈�"; + } else { + desc = descObj.toString(); + } + HttpSession session = request.getSession(); + Date startDate = new Date(); + Flows flows = activitiService.start(key, session, businessId, type, variableMap); + Date endDate = new Date(); + log.info("process start:" + (endDate.getTime() - startDate.getTime()) + "ms"); + if (flows == null) { + return Result.error(CodeMsg.INSERT_ERROR); + } else { + if (type.equals(ActivitiBusinessType.field)) { + MaintainField maintainField = maintainFieldService.selectById(businessId); + maintainField.setFlowId(flows.getId()); + maintainField.setDesp(desc); + maintainField.updateById(); + } else if (type.equals(ActivitiBusinessType.maintain)) { Maintain maintain = maintainService.selectById(businessId); maintain.setFlowId(flows.getId()); - maintain.setDesp(desp); + maintain.setDesp(desc); maintain.updateById(); - return Result.success(flows.getId()); - }else if (type.equals(ActivitiBusinessType.exists)) { - HashMap<String, String> body=new HashMap(); - NextTaskUserInfo nestTaskAssignee = taskService.getNestTaskAssignee(flows.getWorkflowId()); - - body.put("activitiId", flows.getId()); - if (nestTaskAssignee == null) { - body.put("roleId", null); - body.put("userId", null); - } else { - body.put("roleId", nestTaskAssignee.getRoleId()); - body.put("userId", nestTaskAssignee.getUserId()); - } - return Result.success(body); } + startDate = new Date(); + log.info("process save status:" + (startDate.getTime() - endDate.getTime()) + "ms"); + HashMap<String, Object> body = new HashMap(); + NextTaskUserInfo nestTaskAssignee = taskService.getNestTaskAssignee(flows.getWorkflowId()); + endDate = new Date(); + log.info("process find user info:" + (endDate.getTime() - startDate.getTime()) + "ms"); + body.put("activitiId", flows.getId()); + if (nestTaskAssignee == null) { + body.put("roleIdList", null); + body.put("userIdList", null); + } else { + body.put("roleIdList", nestTaskAssignee.getRoleIdList()); + body.put("userIdList", nestTaskAssignee.getUserIdList()); + } + return Result.success(body); } - return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); } @RequestMapping(value = "/status/{flowid}", method = RequestMethod.GET) - public ArrayList<HistoricActivityInstance> status(@PathVariable String flowid, HttpServletRequest request) { + public ArrayList<HistoricActivityInstance> status(@PathVariable String flowid, HttpServletRequest request) { if (StringUtils.isEmpty(flowid)) { return null; } @@ -197,7 +273,7 @@ } @RequestMapping(value = "{tableName}/history/{pageNo}", method = RequestMethod.GET) - public Result history(@PathVariable String tableName, @PathVariable Integer pageNo, HttpServletRequest request) { + public Result history(@PathVariable String tableName, @PathVariable Integer pageNo, HttpServletRequest request) { historyService.setSession(request.getSession()); String pageSizeStr = request.getParameter("pageSize"); @@ -227,13 +303,14 @@ if (!StringUtils.isEmpty(pageSizeStr)) { page.setPageSize(Integer.valueOf(pageSizeStr)); } + subList = subList.stream().skip(page.getBeginRecordNo_1()).limit(page.getPageSize()).collect(Collectors.toList()); ArrayList<Map<String, Object>> result = new ArrayList<>(); for (HistoricProcessInstance historicProcessInstance : subList) { HashMap<String, Object> one = new HashMap<>(); String workflowId = historicProcessInstance.getId(); String startUserId = historicProcessInstance.getStartUserId(); - TUser user = userService.selectById(startUserId); + TUser user = DbUtils.getUserById(startUserId); Flows flows = flowsService.selectOne(new EntityWrapper<Flows>().eq("workflow_id", workflowId)); Maintain maintain = maintainService.selectById(flows.getBusinessId()); one.put("userName", user.getUserName()); @@ -242,6 +319,16 @@ one.put("createTime", flows.getCreateTime()); result.add(one); } + + Collections.sort(result, new Comparator<Map<String, Object>>() { + @Override + public int compare(Map<String, Object> o1, Map<String, Object> o2) { + Date o1Date = (Date) o1.get("createTime"); + Date o2Date = (Date) o2.get("createTime"); + return o2Date.compareTo(o1Date); + } + }); + JSONObject object = new JSONObject(); object.fluentPut("total", page.getRecordCount()); object.fluentPut("size", page.getPageSize()); @@ -254,7 +341,7 @@ @RequestMapping(value = "/diagram/{flowid}", method = RequestMethod.GET) - public void getDiagram(@PathVariable String flowid, HttpServletResponse response) { + public void getDiagram(@PathVariable String flowid, HttpServletResponse response) { if (StringUtils.isEmpty(flowid)) { return; } @@ -265,15 +352,16 @@ String workflowid = flows.getWorkflowId(); runtimeService.getDiagram(workflowid, response); } + @RequestMapping(value = "/run", method = RequestMethod.GET) - public List<Map<String, String>> runTask(HttpServletRequest request){ + public List<Map<String, String>> runTask(HttpServletRequest request) { historyService.setSession(request.getSession()); List<Map<String, String>> myRunTask = historyService.getMyRunTask(); return myRunTask; } @RequestMapping(value = "/todo", method = RequestMethod.GET) - public Result todoTask(HttpServletRequest request){ + public Result todoTask(HttpServletRequest request) { String pageNo = request.getParameter("pageNo"); String pageSize = request.getParameter("pageSize"); if (StringUtils.isEmpty(pageNo)) { @@ -285,8 +373,9 @@ return activitiService.todoTask(request.getSession(), request.getParameter(Constant.tableName), Integer.valueOf(pageNo), Integer.valueOf(pageSize)); } - @RequestMapping(value = "/deal/{flowid}", method = RequestMethod.GET) - public Result doTask(@PathVariable String flowid, @RequestParam boolean pass, HttpServletRequest request) { + @RequestMapping(value = "/deal/{flowid}", method = RequestMethod.POST) + @Transactional(rollbackFor = {RuntimeException.class, Error.class}) + public Result doTask(@PathVariable String flowid, @RequestBody JSONObject reqObj, HttpServletRequest request) { if (StringUtils.isEmpty(flowid)) { return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); } @@ -294,11 +383,22 @@ if (flows == null) { return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); } - HttpSession session = request.getSession(); + Boolean pass; + try { + pass = (boolean) reqObj.get("pass"); + if (pass == null) { + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + } catch (Exception e) { + e.printStackTrace(); + return Result.error(CodeMsg.ERROR_PARAMS_NOT_MATHED); + } + HashMap<String, Object> vailableMap = DbUtils.JsonObjectToHashMap(reqObj); + + HttpSession session = request.getSession(); taskService.setSession(session); ActivitiStatus status = flows.getStatus(); - String workflowId = flows.getWorkflowId(); // Task task = TimeTaskService.geTask(workflowId); // String id = task.getId(); @@ -308,61 +408,94 @@ } String reason; - reason = request.getParameter("reason"); - if (StringUtils.isEmpty(reason)) { + Object reasonObj = vailableMap.get("reason"); + if (reasonObj == null) { reason = "纭澶勭悊"; + }else { + reason = reasonObj.toString(); } if (taskId == null) { Task task = taskService.geTask(workflowId); + if (task == null) { + return Result.error(CodeMsg.ERROR_ACTIVITI_NEXTTASK); + } taskId = task.getId(); } - boolean completed = taskService.completeTask(taskId, pass, reason); + + boolean completed = taskService.completeTask(taskId, pass, reason, vailableMap); if (completed) { - NextTaskUserInfo nextTaskDefinition = null; - boolean taskFinished = historyService.isTaskFinished(workflowId); - if (taskFinished) { - if (ActivitiStatus.refuse.equals(status)) { - flows.setStatus(ActivitiStatus.close); - } else { - flows.setStatus(ActivitiStatus.open); - } - - if (!pass) { - flows.setStatus(ActivitiStatus.close); - } - - if (flows.getBusinessType().equals(ActivitiBusinessType.maintain)){ - String maintainId = flows.getBusinessId(); - maintainService.dealFlow(maintainId, flows.getStatus()); - } - + NextTaskUserInfo nextTaskDefinition = null; + boolean taskFinished = historyService.isTaskFinished(workflowId); + if (taskFinished) { + if (ActivitiStatus.refuse.equals(status)) { + flows.setStatus(ActivitiStatus.close); } else { - if (pass && flows.getStatus().equals(ActivitiStatus.refuse)) { - flows.setStatus(ActivitiStatus.working); - } else if(!pass && flows.getStatus().equals(ActivitiStatus.working)){ - flows.setStatus(ActivitiStatus.refuse); - } - nextTaskDefinition = taskService.getNestTaskAssignee(workflowId); + flows.setStatus(ActivitiStatus.open); + } + if (!pass) { + flows.setStatus(ActivitiStatus.close); } - HashMap<String, String> body=new HashMap(); - if (flows.getBusinessType().equals(ActivitiBusinessType.exists)){ - body.put("status", flows.getStatus().name()); - if (nextTaskDefinition == null) { - body.put("roleId", null); - body.put("userId", null); - } else { - body.put("roleId", nextTaskDefinition.getRoleId()); - body.put("userId", nextTaskDefinition.getUserId()); + + flowsService.aduitFinish(flows); + + } else { + if (pass && flows.getStatus().equals(ActivitiStatus.refuse)) { + flows.setStatus(ActivitiStatus.working); + } else if (!pass && flows.getStatus().equals(ActivitiStatus.working)) { + flows.setStatus(ActivitiStatus.refuse); } + nextTaskDefinition = taskService.getNestTaskAssignee(workflowId); + + } + HashMap<String, Object> body = new HashMap(); + + body.put("status", flows.getStatus().name()); + if (nextTaskDefinition == null) { + body.put("roleIdList", null); + body.put("userIdList", null); + } else { + body.put("roleIdList", nextTaskDefinition.getRoleIdList()); + body.put("userIdList", nextTaskDefinition.getUserIdList()); } flows.setUpdateTime(new Date()); flowsService.updateById(flows); return Result.success(body); - }else { + } else { return Result.success(CodeMsg.INSERT_ERROR); } } + + @RequestMapping(value = "/addActUser") + public Result addActUser(@RequestParam String userId) { + return identityService.addUser(userId); + } + + @RequestMapping(value = "/addActRole") + public Result addActRole(@RequestParam String roleId) { + return identityService.addRole(roleId); + } + + @RequestMapping(value = "/addActUserRole") + public Result addActUserRole(@RequestParam String roleId, @RequestParam String userId) { + return identityService.addUserRole(roleId, userId); + } + + @RequestMapping(value = "/deleteActUserRole") + public Result deleteActUserRole(@RequestParam String roleId, @RequestParam String userId) { + return identityService.deleteUserRole(roleId, userId); + } + + @RequestMapping(value = "/deleteActRole") + public Result deleteActRole(@RequestParam String roleId) { + return identityService.deleteRole(roleId); + } + + @RequestMapping(value = "/deleteActUser") + public Result deleteActUser(@RequestParam String userId) { + return identityService.deleteUser(userId); + } + } -- Gitblit v1.8.0