package pwc.taxtech.atms.controller; import org.activiti.engine.RepositoryService; import org.activiti.engine.RuntimeService; import org.activiti.engine.TaskService; import org.activiti.engine.repository.ProcessDefinition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import pwc.taxtech.atms.common.util.MyAsserts; import pwc.taxtech.atms.dto.approval.ApprovalDto; import pwc.taxtech.atms.dto.approval.ApprovalTask; import pwc.taxtech.atms.exception.Exceptions; import pwc.taxtech.atms.vat.dpo.ApprovalTaskInfo; import pwc.taxtech.atms.vat.service.impl.ApprovalService; import javax.servlet.http.HttpServletResponse; import java.io.InputStream; import java.util.List; @RestController @RequestMapping(value = "/api/v1/approval") public class ApprovalController { private static Logger logger = LoggerFactory.getLogger(ApprovalController.class); @Autowired RuntimeService runtimeService; @Autowired TaskService taskService; @Autowired ApprovalService approvalService; @Autowired RepositoryService repositoryService; @ResponseBody @RequestMapping(value = "/deploy", method = RequestMethod.POST) public ResponseEntity deploy() { repositoryService.createDeployment().addClasspathResource("bpmn/approval.bpmn").deploy(); return ResponseEntity.ok().build(); } @ResponseBody @RequestMapping(value = "/commit", method = RequestMethod.POST) public ApprovalDto approval(@RequestBody ApprovalDto dto) { MyAsserts.assertNotEmpty(dto.getProjectId(), Exceptions.EMPTY_PROJECT_PARAM); MyAsserts.assertNotEmpty(dto.getPeriodDate(), Exceptions.EMPTY_PRIODDATE_PARAM); approvalService.startInstanceAndAssignee(dto); return dto; } @ResponseBody @RequestMapping(value = "/tasks/{assignee}") public List<ApprovalTaskInfo> data(@PathVariable String assignee) {//accountant manager return approvalService.getTask(); } @ResponseBody @RequestMapping(value = "/check/{taskId}") public void check(@PathVariable String taskId, @RequestParam String decide) {//only for manager role approvalService.checkTask(taskId, decide); } @RequestMapping(value = "/show/{procDefId}")//获取流程图 public void showImg(@PathVariable String procDefId, HttpServletResponse response) { try { ProcessDefinition pd = repositoryService.createProcessDefinitionQuery().processDefinitionId(procDefId).singleResult(); String diagramResourceName = pd.getDiagramResourceName(); InputStream pic = repositoryService.getResourceAsStream(pd.getDeploymentId(), diagramResourceName); byte[] b = new byte[1024]; int len = -1; while ((len = pic.read(b, 0, 1024)) != -1) { response.getOutputStream().write(b, 0, len); } } catch (Exception e) { e.printStackTrace(); } } @ResponseBody @RequestMapping(value = "/showImg/{procDefId}/{executionId}")//获取流程坐标 public Rect showImg(@PathVariable String procDefId, @PathVariable String executionId) { Rect rect = new Rect(); try { repositoryService.getProcessDefinition(procDefId); // ActivityImpl img = Workflow.getProcessMap(procDefId,executionId ); // rect.setX(img.getX()); // rect.setY(img.getY()); // rect.setWidth(img.getWidth()); // rect.setHeight(img.getHeight()); } catch (Exception e) { e.printStackTrace(); } return rect; } static class Rect { String X; String Y; String width; String height; public String getX() { return X; } public void setX(String x) { X = x; } public String getY() { return Y; } public void setY(String y) { Y = y; } public String getWidth() { return width; } public void setWidth(String width) { this.width = width; } public String getHeight() { return height; } public void setHeight(String height) { this.height = height; } } private void mocoDisAggreAndOver() { logger.debug("------------------------update db -----------------------------------"); logger.debug("dis aggre"); logger.debug("------------------------updage db-----------------------------------"); } private void mocoAggreAndOver() { logger.debug("------------------------update db-----------------------------------"); logger.debug("aggree"); logger.debug("------------------------update db-----------------------------------"); } private void mocoHasCommittedAndOver() { logger.debug("-------------------------update db----------------------------------"); logger.debug("has committed"); logger.debug("-------------------------update db----------------------------------"); } private void mocoInsert(ApprovalDto dto) { logger.debug("-------------------------insert db----------------------------------"); logger.debug("save approval {}", dto.toString()); logger.debug("-------------------------insert db----------------------------------"); } }