已重命名1个文件
已添加24个文件
已修改18个文件
| | |
| | | import org.jeecg.modules.flow.request.AssignFileRequest; |
| | | import org.jeecg.modules.flow.request.AssignFileStreamQueryRequest; |
| | | import org.jeecg.modules.dnc.response.*; |
| | | import org.jeecg.modules.flow.vo.AssignFlowTaskVo; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.*; |
| | | |
| | |
| | | @AutoLog(value = "DNCææ´¾è®¾å¤æµç¨æä½-å¯å¨æµç¨ ä¿åç¸åºçæ°æ® ç»å®businessKey") |
| | | @ApiOperation(value = "DNCææ´¾è®¾å¤æµç¨æä½-å¯å¨æµç¨ ä¿åç¸åºçæ°æ® ç»å®businessKey", notes = "DNCææ´¾è®¾å¤æµç¨æä½-å¯å¨æµç¨ ä¿åç¸åºçæ°æ® ç»å®businessKey") |
| | | @PostMapping("/assign/file/apply") |
| | | public ResponseResult applyAssignFile(@RequestBody AssignFileStream stream) { |
| | | ResponseResult b = assignFileStreamService.applyAssignFile(stream); |
| | | if(b.isSuccess()) { |
| | | return new ResponseResult(CommonCode.SUCCESS); |
| | | } |
| | | return b; |
| | | public Result<?> applyAssignFile(@RequestBody AssignFileStream stream) { |
| | | return assignFileStreamService.applyAssignFile(stream); |
| | | } |
| | | |
| | | @AutoLog(value = "DNCææ´¾è®¾å¤æµç¨æä½-å®¡æ¹æå¡") |
| | | @ApiOperation(value = "DNCææ´¾è®¾å¤æµç¨æä½-å®¡æ¹æå¡", notes = "DNCææ´¾è®¾å¤æµç¨æä½-å®¡æ¹æå¡") |
| | | @PostMapping("/assign/file/approve/{taskId}/{streamId}") |
| | | public ResponseResult approveAssignFile(@PathVariable("taskId") String taskId, @PathVariable("streamId") String streamId, |
| | | @RequestBody AssignFileStream stream) { |
| | | boolean b = assignFileStreamService.approveAssignFile(taskId, streamId, stream); |
| | | @PostMapping("/assign/file/approve") |
| | | public ResponseResult approveAssignFile(@RequestBody AssignFlowTaskVo assignFlowTaskVo) { |
| | | boolean b = assignFileStreamService.approveAssignFile(assignFlowTaskVo); |
| | | if(b) |
| | | return new ResponseResult(CommonCode.SUCCESS); |
| | | return new ResponseResult(CommonCode.FAIL); |
| | |
| | | return new ResponseResult(CommonCode.SUCCESS); |
| | | return new ResponseResult(CommonCode.FAIL); |
| | | } |
| | | |
| | | @GetMapping(value = "/selectVoById") |
| | | public Result<AssignFileStream> selectVoById(@RequestParam(name="id") String id){ |
| | | return Result.OK(assignFileStreamService.getAssignFileStreamDetail(id)); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.controller; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import io.swagger.annotations.Api; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import io.swagger.annotations.ApiParam; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.flowable.bpmn.model.BpmnModel; |
| | | import org.flowable.engine.*; |
| | | import org.flowable.engine.history.HistoricActivityInstance; |
| | | import org.flowable.image.ProcessDiagramGenerator; |
| | | import org.flowable.task.api.Task; |
| | | import org.jeecg.common.api.vo.Result; |
| | | import org.jeecg.common.system.query.QueryGenerator; |
| | | import org.jeecg.common.system.vo.LoginUser; |
| | | import org.jeecg.modules.flow.entity.HisWorkTask; |
| | | import org.jeecg.modules.flow.entity.WorkTaskData; |
| | | import org.jeecg.modules.flow.entity.WorkTaskDataVo; |
| | | import org.jeecg.modules.flow.service.IAssignFileStreamService; |
| | | import org.jeecg.modules.flow.service.IHisWorkTaskService; |
| | | import org.jeecg.modules.flow.service.IWorkTaskService; |
| | | import org.jeecg.modules.flow.service.IWorkTaskServiceVo; |
| | | import org.jeecg.modules.flow.vo.FlowMy; |
| | | import org.jeecg.modules.flowable.apithird.business.dto.FlowMyBusinessDto; |
| | | import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; |
| | | import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; |
| | | import org.jeecg.modules.flowable.domain.dto.FlowTaskDto; |
| | | import org.jeecg.modules.flowable.service.IFlowTaskService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.web.bind.annotation.GetMapping; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.RequestParam; |
| | | import org.springframework.web.bind.annotation.RestController; |
| | | |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import java.io.OutputStream; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | |
| | | @RestController |
| | | @RequestMapping("/nc/assign/flow") |
| | | @Slf4j |
| | | public class AssignFileStreamFlowController { |
| | | @Autowired |
| | | IFlowMyBusinessService flowMyBusinessService; |
| | | @Autowired |
| | | IWorkTaskService workTaskService; |
| | | @Autowired |
| | | IFlowTaskService flowTaskService; |
| | | @Autowired |
| | | IWorkTaskServiceVo workTaskServicevo; |
| | | @Autowired |
| | | IHisWorkTaskService hisWorkTaskService; |
| | | @Autowired |
| | | private TaskService taskService; |
| | | @Autowired |
| | | private RepositoryService repositoryService; |
| | | @Autowired |
| | | private HistoryService historyService; |
| | | @Autowired |
| | | private ProcessEngine processEngine; |
| | | @Autowired |
| | | private IAssignFileStreamService assignFileStreamService; |
| | | |
| | | @GetMapping(value = "/list") |
| | | public Result<IPage<FlowMyBusinessDto>> queryPageList(FlowMyBusinessDto flowMyBusinessDto, |
| | | @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, |
| | | @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, |
| | | HttpServletRequest req) { |
| | | Page<FlowMyBusinessDto> page = new Page<FlowMyBusinessDto>(pageNo, pageSize); |
| | | IPage<FlowMyBusinessDto> pageList = flowMyBusinessService.findPageList(page, flowMyBusinessDto); |
| | | pageList.getRecords().forEach(item -> { |
| | | //å»é¤[] |
| | | item.setTodoUsers(item.getTodoUsers().replaceAll("\\[", "").replaceAll("\\]", "")); |
| | | item.setTodoUsers(item.getTodoUsers().replaceAll("\"", "")); |
| | | item.setDoneUsers(item.getDoneUsers().replaceAll("\\[", "").replaceAll("\\]", "")); |
| | | item.setDoneUsers(item.getDoneUsers().replaceAll("\"", "")); |
| | | }); |
| | | return Result.OK(pageList); |
| | | } |
| | | /* |
| | | * è·åææä»»å¡å表 |
| | | * */ |
| | | @GetMapping(value = "/workTasklist") |
| | | public Result<IPage<WorkTaskData>> queryTaskPageList(WorkTaskData workTaskData, |
| | | @RequestParam(name="pageNo", defaultValue="1") Integer pageNo, |
| | | @RequestParam(name="pageSize", defaultValue="10") Integer pageSize, |
| | | HttpServletRequest req) { |
| | | List<WorkTaskData> list = workTaskService.queryAllworkTask(); |
| | | IPage<WorkTaskData> pageList = new Page<>(pageNo, pageSize, list.size()); |
| | | pageList.setRecords(list); |
| | | return Result.OK(pageList); |
| | | } |
| | | @ApiOperation(value = "è·åå¾
åå表", response = FlowTaskDto.class) |
| | | @GetMapping(value = "/todoList") |
| | | public Result todoList(@ApiParam(value = "å½å页ç ", required = true) @RequestParam (name="pageNum", defaultValue="1") Integer pageNum, |
| | | @ApiParam(value = "æ¯é¡µæ¡æ°", required = true) @RequestParam (name="pageSize", defaultValue="10") Integer pageSize) { |
| | | return flowTaskService.todoList(pageNum, pageSize); |
| | | } |
| | | @ApiOperation(value = "è·åæ¬èº«å¾
å", response = FlowTaskDto.class) |
| | | @GetMapping(value = "/toTaskBySelf") |
| | | public Result<IPage<WorkTaskDataVo>> toTaskBySelf(FlowMy flowMy, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, |
| | | @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) { |
| | | Page page = new Page(pageNo, pageSize); |
| | | LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
| | | flowMy.setUsername(user.getUsername()); |
| | | return Result.OK(workTaskServicevo.toTaskBySelf(flowMy,page)); |
| | | } |
| | | |
| | | @ApiOperation(value = "è·åå·²åä»»å¡", response = FlowTaskDto.class) |
| | | @GetMapping(value = "/finishedList") |
| | | public Result finishedList(@ApiParam(value = "å½å页ç ", required = true) @RequestParam Integer pageNo, |
| | | @ApiParam(value = "æ¯é¡µæ¡æ°", required = true) @RequestParam Integer pageSize) { |
| | | return flowTaskService.finishedList(pageNo, pageSize); |
| | | } |
| | | |
| | | |
| | | @ApiOperation(value = "è·å工使µåå²ä»»å¡", response = FlowTaskDto.class) |
| | | @GetMapping(value = "/queryHisTaskList") |
| | | public Result<List<HisWorkTask>> queryHisTaskList(@RequestParam(name = "drapprovedataId") String drapprovedataId) { |
| | | return Result.OK(hisWorkTaskService.queryHisTaskList(drapprovedataId)); |
| | | } |
| | | |
| | | @ApiOperation(value = "审æ¹ä»»å¡-æ¥çæµç¨å¾") |
| | | @GetMapping("/diagramView") |
| | | public void showImages(@RequestParam(name = "taskId") String taskId, HttpServletResponse response) throws IOException { |
| | | Task task = taskService.createTaskQuery().taskId(taskId).singleResult(); |
| | | String processDefinitionId = task.getProcessDefinitionId(); |
| | | BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId); |
| | | String processInstanceId = task.getProcessInstanceId(); |
| | | List<HistoricActivityInstance> historyProcess = historyService.createHistoricActivityInstanceQuery() |
| | | .processInstanceId(processInstanceId) |
| | | .finished() |
| | | .list(); |
| | | |
| | | List<String> activityIds = new ArrayList<>(); |
| | | List<String> flows = new ArrayList<>(); |
| | | |
| | | for (HistoricActivityInstance hi : historyProcess) { |
| | | String activityType = hi.getActivityType(); |
| | | if (activityType.equals("sequenceFlow") || activityType.equals("exclusiveGateway")) { |
| | | flows.add(hi.getActivityId()); |
| | | } else if (activityType.equals("userTask") || activityType.equals("startEvent")) { |
| | | activityIds.add(hi.getActivityId()); |
| | | } |
| | | } |
| | | activityIds.add(task.getTaskDefinitionKey()); |
| | | ProcessEngineConfiguration engConf = processEngine.getProcessEngineConfiguration(); |
| | | ProcessDiagramGenerator processDiagramGenerator = engConf.getProcessDiagramGenerator(); |
| | | |
| | | InputStream in = processDiagramGenerator.generateDiagram(bpmnModel, "png", activityIds, flows, |
| | | engConf.getActivityFontName(), engConf.getLabelFontName(), engConf.getAnnotationFontName(), |
| | | engConf.getClassLoader(), 1.0, true); |
| | | |
| | | OutputStream out = response.getOutputStream(); |
| | | byte[] buf = new byte[1024]; |
| | | int length = 0; |
| | | while ((length = in.read(buf)) != -1) { |
| | | out.write(buf, 0, length); |
| | | } |
| | | in.close(); |
| | | out.close(); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | /** |
| | | * @Description:工使µåå² |
| | | */ |
| | | @Data |
| | | @TableName("act_hi_taskinst") |
| | | @ApiModel(value="act_hi_taskinst", description="工使µåå²ä»»å¡æ°æ®") |
| | | public class HisWorkTask implements Serializable { |
| | | /**主é®*/ |
| | | //flow_my_business |
| | | @TableField("id") |
| | | private String id; |
| | | @TableField("name") |
| | | private String name; |
| | | @TableField("cause") |
| | | private String cause; |
| | | /**æ§è¡å®ä¾IDï¼ä¸æ§è¡å®ä¾è¡¨ä¸çIDåæ®µå
³è*/ |
| | | @TableField("assignee") |
| | | private String assignee; |
| | | /**æµç¨å®ä¾IDï¼ä¸æµç¨å®ä¾è¡¨ä¸çIDåæ®µå
³è*/ |
| | | @TableField("startTime") |
| | | @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | private String startTime; |
| | | /**æµç¨å®ä¹IDï¼ä¸æµç¨å®ä¹è¡¨ä¸çIDåæ®µå
³è*/ |
| | | @TableField("endTime") |
| | | @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | private String endTime; |
| | | |
| | | private transient String status; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serializable; |
| | | |
| | | @Data |
| | | @TableName("sys_role") |
| | | public class UserRole implements Serializable { |
| | | @TableField("id") |
| | | private String id; |
| | | @TableField("role_name") |
| | | private String roleName; |
| | | @TableField("role_code") |
| | | private String roleCode; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.entity; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | |
| | | /** |
| | | * @Description:工使µä»»å¡æ°æ® |
| | | */ |
| | | @Data |
| | | @TableName("act_ru_task") |
| | | @ApiModel(value="act_ru_task", description="工使µä»»å¡æ°æ®") |
| | | public class WorkTaskData implements Serializable { |
| | | /**主é®*/ |
| | | @TableField("id_") |
| | | private String id; |
| | | /**çæ¬å·ï¼ç¨äºä¹è§éæ§å¶å¹¶åæ´æ°*/ |
| | | @TableField("rev_") |
| | | private int rev; |
| | | /**æ§è¡å®ä¾IDï¼ä¸æ§è¡å®ä¾è¡¨ä¸çIDåæ®µå
³è*/ |
| | | @TableField("execution_id_") |
| | | private String executionId; |
| | | /**æµç¨å®ä¾IDï¼ä¸æµç¨å®ä¾è¡¨ä¸çIDåæ®µå
³è*/ |
| | | @TableField("proc_inst_id_") |
| | | private String procInstId; |
| | | /**æµç¨å®ä¹IDï¼ä¸æµç¨å®ä¹è¡¨ä¸çIDåæ®µå
³è*/ |
| | | @TableField("proc_def_id_") |
| | | private String procDefId; |
| | | /**ä»»å¡åç§°*/ |
| | | @TableField("name_") |
| | | private String name; |
| | | /**ä»»å¡å®ä¹Keyï¼ä¸æµç¨å®ä¹è¡¨ä¸çKEYåæ®µå
³è*/ |
| | | @TableField("task_def_key_") |
| | | private String taskDefKey; |
| | | /**ä»»å¡çåç人ï¼å³å®é
æ§è¡ä»»å¡çç¨æ·*/ |
| | | @TableField("assignee_") |
| | | private String assignee; |
| | | /**ä»»å¡çä¼å
级*/ |
| | | @TableField("priority_") |
| | | private int priority; |
| | | /** ä»»å¡å建æ¶é´*/ |
| | | @TableField("create_time_") |
| | | @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | private Date createTime; |
| | | /** ä»»å¡çæåç¶æï¼ç¨äºæ§å¶ä»»å¡çæå忢å¤*/ |
| | | @TableField("suspension_state_") |
| | | private int suspensionState; |
| | | |
| | | |
| | | |
| | | /**ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("task_def_id_") |
| | | private String taskDefId; |
| | | /**ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("scope_id_") |
| | | private String scopeId; |
| | | /**ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("sub_scope_id_") |
| | | private String subScopeId; |
| | | /**ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("scope_type_") |
| | | private String scopeType; |
| | | /**ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("scope_definition_id_") |
| | | private String scopeDefinitionId; |
| | | /**ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("propagated_stage_inst_id_") |
| | | private String propagatedStageInstId; |
| | | /**ç¶ä»»å¡IDï¼ç¨äºè¡¨ç¤ºä»»å¡çå±çº§å
³ç³» ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("parent_task_id_") |
| | | private String parentTaskId; |
| | | /** ä»»å¡æè¿° ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("description_") |
| | | private String description; |
| | | /**ä»»å¡çææè
ï¼å³ä»»å¡åé
ç»çç¨æ· ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("owner_") |
| | | private String owner; |
| | | /**å§æ´¾äººï¼ç¨äºè®°å½ä»»å¡çå§æ´¾äººï¼å¦ææå§æ´¾æä½ï¼ ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("delegation_") |
| | | private String delegation; |
| | | /** 任塿ªæ¢æ¥æ ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("due_date_") |
| | | @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | private Date dueDate; |
| | | /** ä»»å¡çåç±» ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("category_") |
| | | private String category; |
| | | /** ä»»å¡è¡¨åKeyï¼ç¨äºä¸è¡¨åå¼æéæ ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("form_key_") |
| | | private String formKey; |
| | | /** ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("claim_time_") |
| | | @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | private Date claimTime; |
| | | /** ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("is_count_enabled_") |
| | | private int iscountEnabled; |
| | | /** ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("var_count_") |
| | | private int varCount; |
| | | /** ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("id_link_count_") |
| | | private int idLinkCount; |
| | | /** ææ¶ç¨ä¸ä¸*/ |
| | | @TableField("sub_task_count_") |
| | | private int subtaskCount; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.entity; |
| | | |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * @Description:工使µä»»å¡æ°æ® |
| | | */ |
| | | @Data |
| | | @ApiModel(value="act_ru_task", description="æçå¾
å") |
| | | public class WorkTaskDataVo implements Serializable { |
| | | /**主é®*/ |
| | | // @TableField("id_") |
| | | private String id; |
| | | /**çæ¬å·ï¼ç¨äºä¹è§éæ§å¶å¹¶åæ´æ°*/ |
| | | // @TableField("rev_") |
| | | private int rev; |
| | | /**æ§è¡å®ä¾IDï¼ä¸æ§è¡å®ä¾è¡¨ä¸çIDåæ®µå
³è*/ |
| | | // @TableField("execution_id_") |
| | | private String executionId; |
| | | /**æµç¨å®ä¾IDï¼ä¸æµç¨å®ä¾è¡¨ä¸çIDåæ®µå
³è*/ |
| | | // @TableField("proc_inst_id_") |
| | | private String procInstId; |
| | | /**æµç¨å®ä¹IDï¼ä¸æµç¨å®ä¹è¡¨ä¸çIDåæ®µå
³è*/ |
| | | // @TableField("proc_def_id_") |
| | | private String procDefId; |
| | | /**ä»»å¡åç§°*/ |
| | | // @TableField("name_") |
| | | private String name; |
| | | /**ä»»å¡å®ä¹Keyï¼ä¸æµç¨å®ä¹è¡¨ä¸çKEYåæ®µå
³è*/ |
| | | // @TableField("task_def_key_") |
| | | private String taskDefKey; |
| | | /**ä»»å¡çåç人ï¼å³å®é
æ§è¡ä»»å¡çç¨æ·*/ |
| | | // @TableField("assignee_") |
| | | private String assignee; |
| | | /**ä»»å¡çä¼å
级*/ |
| | | // @TableField("priority_") |
| | | private int priority; |
| | | /** ä»»å¡å建æ¶é´*/ |
| | | // @TableField("create_time_") |
| | | @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | private Date createTime; |
| | | /** ä»»å¡çæåç¶æï¼ç¨äºæ§å¶ä»»å¡çæå忢å¤*/ |
| | | // @TableField("suspension_state_") |
| | | private int suspensionState; |
| | | /** æµç¨åé*/ |
| | | private Map<String,Object> variables; |
| | | // @TableField("act_status") |
| | | @ApiModelProperty(value = "æµç¨ç¶æè¯´æï¼æï¼å¯å¨ æ¤å 驳å 审æ¹ä¸ 审æ¹éè¿ å®¡æ¹å¼å¸¸") |
| | | private String actStatus; |
| | | // @TableField("title") |
| | | @ApiModelProperty(value = "æµç¨ä¸å¡ç®è¦æè¿°") |
| | | private String title; |
| | | // @TableField("data_id") |
| | | @ApiModelProperty(value = "ä¸å¡è¡¨idï¼ç论å¯ä¸") |
| | | private String dataId; |
| | | |
| | | @ApiModelProperty(value = "æµç¨åç§°") |
| | | private transient String flowName; |
| | | |
| | | |
| | | // /**ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("task_def_id_") |
| | | // private String taskDefId; |
| | | // /**ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("scope_id_") |
| | | // private String scopeId; |
| | | // /**ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("sub_scope_id_") |
| | | // private String subScopeId; |
| | | // /**ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("scope_type_") |
| | | // private String scopeType; |
| | | // /**ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("scope_definition_id_") |
| | | // private String scopeDefinitionId; |
| | | // /**ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("propagated_stage_inst_id_") |
| | | // private String propagatedStageInstId; |
| | | // /**ç¶ä»»å¡IDï¼ç¨äºè¡¨ç¤ºä»»å¡çå±çº§å
³ç³» ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("parent_task_id_") |
| | | // private String parentTaskId; |
| | | // /** ä»»å¡æè¿° ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("description_") |
| | | // private String description; |
| | | // /**ä»»å¡çææè
ï¼å³ä»»å¡åé
ç»çç¨æ· ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("owner_") |
| | | // private String owner; |
| | | // /**å§æ´¾äººï¼ç¨äºè®°å½ä»»å¡çå§æ´¾äººï¼å¦ææå§æ´¾æä½ï¼ ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("delegation_") |
| | | // private String delegation; |
| | | // /** 任塿ªæ¢æ¥æ ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("due_date_") |
| | | // @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") |
| | | // @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | // private Date dueDate; |
| | | // /** ä»»å¡çåç±» ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("category_") |
| | | // private String category; |
| | | // /** ä»»å¡è¡¨åKeyï¼ç¨äºä¸è¡¨åå¼æéæ ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("form_key_") |
| | | // private String formKey; |
| | | // /** ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("claim_time_") |
| | | // @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") |
| | | // @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") |
| | | // private Date claimTime; |
| | | // /** ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("is_count_enabled_") |
| | | // private int iscountEnabled; |
| | | // /** ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("var_count_") |
| | | // private int varCount; |
| | | // /** ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("id_link_count_") |
| | | // private int idLinkCount; |
| | | // /** ææ¶ç¨ä¸ä¸*/ |
| | | // @TableField("sub_task_count_") |
| | | // private int subtaskCount; |
| | | } |
| | |
| | | private String productName; |
| | | private String componentName; |
| | | private String partsName; |
| | | private String processName; |
| | | private String stepName; |
| | | private String docName; |
| | | private String version; |
| | | private String applyUser; |
| | |
| | | * @return |
| | | */ |
| | | IPage<AssignFileStreamExt> findByPage(IPage<AssignFileStreamExt> page, @Param(Constants.WRAPPER) Wrapper<AssignFileStreamExt> wrapper); |
| | | |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.jeecg.modules.flow.entity.HisWorkTask; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface IHisWorkTaskMapper extends BaseMapper<HisWorkTask> { |
| | | |
| | | List<HisWorkTask> queryHisTaskList(@Param("drapprovedataId") String drapprovedataId); |
| | | |
| | | List<HisWorkTask> queryJjHisTaskByJjId(@Param("id") String id); |
| | | List<HisWorkTask> queryJjGgHisTaskByJjId(@Param("id") String id); |
| | | List<HisWorkTask> queryLsHisTaskByJjId(@Param("id") String id); |
| | | List<HisWorkTask> queryFxHisTaskByJjId(@Param("id") String id); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.jeecg.modules.flow.entity.WorkTaskData; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface IWorkTaskMapper extends BaseMapper<WorkTaskData> { |
| | | List<WorkTaskData> queryAllworkTask(); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.apache.ibatis.annotations.Param; |
| | | import org.jeecg.modules.flow.entity.WorkTaskDataVo; |
| | | import org.jeecg.modules.flow.vo.FlowMy; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface IWorkTaskVoMapper extends BaseMapper<WorkTaskDataVo> { |
| | | IPage<WorkTaskDataVo> taskBySelf(@Param("flowMy") FlowMy flowMy, @Param("page") Page page); |
| | | List<WorkTaskDataVo> allList(@Param("userId") String userId); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import org.jeecg.modules.flow.entity.UserRole; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | @Service |
| | | public interface PlmCommonUtilsMapper extends BaseMapper<UserRole> { |
| | | List<UserRole> queryAllRoleList(); |
| | | } |
| | |
| | | , p.product_name as productName |
| | | , c.component_name as componentName |
| | | , pt.parts_name as partsName |
| | | , ps.process_name as processName |
| | | , wt.step_name as stepName |
| | | , dc.doc_name as docName |
| | | , dc.publish_version as version |
| | | , dc.doc_suffix as docSuffix |
| | | , de.device_name as deviceName |
| | | , de.equipment_name as deviceName |
| | | from (select * from nc_assign_file_stream where stream_id=#{streamId}) a |
| | | left join sys_user u1 |
| | | on a.apply_user_id=u1.id |
| | |
| | | on a.component_id=c.component_id |
| | | left join nc_parts_info pt |
| | | on a.parts_id=pt.parts_id |
| | | left join NC_PROCESS_STREAM ps |
| | | on a.process_id=ps.PROCESS_ID |
| | | left join nc_work_step wt |
| | | on a.step_id=wt.id |
| | | left join nc_doc_info dc |
| | | on a.doc_id=dc.doc_id |
| | | left join nc_device_info de |
| | | on a.device_id=de.device_id |
| | | left join mdc_equipment de |
| | | on a.device_id=de.id |
| | | |
| | | </select> |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="org.jeecg.modules.flow.mapper.IHisWorkTaskMapper"> |
| | | <select id="queryHisTaskList" resultType="org.jeecg.modules.flow.entity.HisWorkTask"> |
| | | SELECT |
| | | fb.id AS id, |
| | | aht.NAME_ AS name, |
| | | aht.DESCRIPTION_ AS cause, |
| | | su.realname AS assignee, |
| | | aht.START_TIME_ AS startTime, |
| | | aht.END_TIME_ AS endTime, |
| | | assign.status as status |
| | | FROM |
| | | flow_my_business fb, |
| | | act_hi_taskinst aht, |
| | | NC_ASSIGN_FILE_STREAM assign, |
| | | sys_user su |
| | | WHERE |
| | | fb.data_id= #{drapprovedataId} |
| | | AND fb.process_instance_id= aht.PROC_INST_ID_ |
| | | AND su.username= aht.ASSIGNEE_ |
| | | AND fb.data_id= assign.STREAM_ID |
| | | ORDER BY |
| | | aht.START_TIME_ ASC |
| | | </select> |
| | | <select id="queryJjHisTaskByJjId" resultType="org.jeecg.modules.flow.entity.HisWorkTask"> |
| | | select fb.id as id, |
| | | aht.NAME_ as name, |
| | | su.realname as assignee, |
| | | aht.START_TIME_ as startTime, |
| | | aht.END_TIME_ as endTime, |
| | | aht.DESCRIPTION_ as cause |
| | | from flow_my_business fb |
| | | left join plm_mbom_jijiagy_approval pmjja on pmjja.id = fb.data_id |
| | | left join plm_mbom_procedurespecification pmjj on pmjj.id = pmjja.details |
| | | left join act_hi_taskinst aht on fb.process_instance_id = aht.PROC_INST_ID_ |
| | | left join sys_user su on su.username = aht.ASSIGNEE_ |
| | | where pmjj.id = #{id} |
| | | ORDER BY aht.START_TIME_ ASC |
| | | </select> |
| | | |
| | | <select id="queryJjGgHisTaskByJjId" resultType="org.jeecg.modules.flow.entity.HisWorkTask"> |
| | | select fb.id as id, |
| | | aht.NAME_ as name, |
| | | su.realname as assignee, |
| | | aht.START_TIME_ as startTime, |
| | | aht.END_TIME_ as endTime, |
| | | aht.DESCRIPTION_ as cause |
| | | from flow_my_business fb |
| | | left join plm_mbom_jjgg_approval pmjja on pmjja.id = fb.data_id |
| | | left join plm_mbom_jjgg pmjj on pmjj.id = pmjja.details |
| | | left join act_hi_taskinst aht on fb.process_instance_id = aht.PROC_INST_ID_ |
| | | left join sys_user su on su.username = aht.ASSIGNEE_ |
| | | where pmjj.id = #{id} |
| | | ORDER BY aht.START_TIME_ ASC |
| | | </select> |
| | | |
| | | <select id="queryLsHisTaskByJjId" resultType="org.jeecg.modules.flow.entity.HisWorkTask"> |
| | | select fb.id as id, |
| | | aht.NAME_ as name, |
| | | su.realname as assignee, |
| | | aht.START_TIME_ as startTime, |
| | | aht.END_TIME_ as endTime, |
| | | aht.DESCRIPTION_ as cause |
| | | from flow_my_business fb |
| | | left join plm_mbom_approval_lsgy pmjja on pmjja.id = fb.data_id |
| | | left join plm_mbom_lsgy pmjj on pmjj.id = pmjja.details |
| | | left join act_hi_taskinst aht on fb.process_instance_id = aht.PROC_INST_ID_ |
| | | left join sys_user su on su.username = aht.ASSIGNEE_ |
| | | where pmjj.id = #{id} |
| | | ORDER BY aht.START_TIME_ ASC |
| | | </select> |
| | | |
| | | <select id="queryFxHisTaskByJjId" resultType="org.jeecg.modules.flow.entity.HisWorkTask"> |
| | | select fb.id as id, |
| | | aht.NAME_ as name, |
| | | su.realname as assignee, |
| | | aht.START_TIME_ as startTime, |
| | | aht.END_TIME_ as endTime, |
| | | aht.DESCRIPTION_ as cause |
| | | from flow_my_business fb |
| | | left join plm_mbom_approval_fxgy pmjja on pmjja.id = fb.data_id |
| | | left join plm_mbom_fxgy pmjj on pmjj.id = pmjja.details |
| | | left join act_hi_taskinst aht on fb.process_instance_id = aht.PROC_INST_ID_ |
| | | left join sys_user su on su.username = aht.ASSIGNEE_ |
| | | where pmjj.id = #{id} |
| | | ORDER BY aht.START_TIME_ ASC |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="org.jeecg.modules.flow.mapper.PlmCommonUtilsMapper"> |
| | | <!-- ãvue3ä¸ç¨ã --> |
| | | <select id="queryAllRoleList" resultType="org.jeecg.modules.flow.entity.UserRole"> |
| | | select |
| | | id,role_name,role_code |
| | | from sys_role |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="org.jeecg.modules.flow.mapper.IWorkTaskMapper"> |
| | | <select id="queryAllworkTask" resultType="org.jeecg.modules.flow.entity.WorkTaskData"> |
| | | select id_,rev_,execution_id_,proc_inst_id_,proc_def_id_,name_,task_def_key_,assignee_,priority_,create_time_,suspension_state_,task_def_id_,scope_id_,sub_scope_id_,scope_type_,scope_definition_id_,propagated_stage_inst_id_,parent_task_id_,description_,owner_,delegation_,due_date_,category_,form_key_,claim_time_,is_count_enabled_,var_count_,id_link_count_,sub_task_count_ |
| | | from act_ru_task ORDER BY create_time_ DESC |
| | | </select> |
| | | </mapper> |
¶Ô±ÈÐÂÎļþ |
| | |
| | | <?xml version="1.0" encoding="UTF-8"?> |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="org.jeecg.modules.flow.mapper.IWorkTaskVoMapper"> |
| | | <select id="taskBySelf" resultType="org.jeecg.modules.flow.entity.WorkTaskDataVo"> |
| | | SELECT |
| | | atask.id_ AS id, |
| | | atask.rev_ AS rev, |
| | | atask.execution_id_ AS executionId, |
| | | atask.proc_inst_id_ AS procInstId, |
| | | atask.proc_def_id_ AS procDefId, |
| | | atask.name_ AS name, |
| | | atask.task_def_key_ AS taskDefKey, |
| | | su.realname AS assignee, |
| | | atask.priority_ AS priority, |
| | | atask.create_time_ AS createTime, |
| | | atask.suspension_state_ AS suspensionState, |
| | | fmb.act_status AS actStatus, |
| | | fmb.title AS title, |
| | | fmb.data_id AS dataId, |
| | | pro.name_ as flowName |
| | | FROM |
| | | act_ru_task AS atask, |
| | | flow_my_business AS fmb, |
| | | ACT_RE_PROCDEF AS pro, |
| | | sys_user AS su |
| | | WHERE |
| | | atask.assignee_ = #{flowMy.username} |
| | | AND atask.id_ = fmb.task_id |
| | | AND atask.PROC_DEF_ID_ = pro.id_ |
| | | AND atask.assignee_ = su.username |
| | | <if test="flowMy.flowName!= null and flowMy.flowName!= ''"> |
| | | AND pro.name_ LIKE CONCAT('%',#{flowMy.flowName},'%') |
| | | </if> |
| | | <if test="flowMy.title != null and flowMy.title != ''"> |
| | | AND fmb.title LIKE CONCAT('%',#{flowMy.title},'%') |
| | | </if> |
| | | <if test="flowMy.startTime!= null and flowMy.startTime!= ''"> |
| | | AND atask.create_time_ >= #{flowMy.startTime} |
| | | </if> |
| | | <if test="flowMy.endTime!= null and flowMy.endTime!= ''"> |
| | | AND atask.create_time_ <= #{flowMy.endTime} |
| | | </if> |
| | | ORDER BY |
| | | create_time_ DESC |
| | | </select> |
| | | <select id="allList" parameterType="String" resultType="org.jeecg.modules.flow.entity.WorkTaskDataVo"> |
| | | select * from act_ru_task |
| | | </select> |
| | | </mapper> |
| | |
| | | @NoArgsConstructor |
| | | public class AssignFileRequest implements Serializable { |
| | | private String processId; |
| | | private String stepId; |
| | | private String fileId; |
| | | private String docId; |
| | | private String applyReason; |
| | |
| | | import org.jeecg.modules.flow.request.AssignFileStreamQueryRequest; |
| | | import org.jeecg.modules.dnc.response.QueryPageResponseResult; |
| | | import org.jeecg.modules.dnc.response.ResponseResult; |
| | | import org.jeecg.modules.flow.vo.AssignFlowTaskVo; |
| | | |
| | | public interface IAssignFileStreamService extends IService<AssignFileStream> { |
| | | /** |
| | |
| | | * @param stream |
| | | * @return |
| | | */ |
| | | ResponseResult applyAssignFile(AssignFileStream stream); |
| | | Result applyAssignFile(AssignFileStream stream); |
| | | |
| | | /**securedoc |
| | | * å¯å¨æµç¨ ä¿åç¸åºçæ°æ® ç»å®businessKey |
| | | * @param stream |
| | | * @return |
| | | */ |
| | | boolean applyAssignFileActive(AssignFileStream stream); |
| | | Result<?> applyAssignFileActive(AssignFileStream stream); |
| | | /** |
| | | * å¯å¨æµç¨ ä¿åç¸åºçæ°æ® ç»å®businessKey |
| | | * @param stream |
| | | * @return |
| | | */ |
| | | ResponseResult applyAssignFileNonActive(AssignFileStream stream); |
| | | Result<?> applyAssignFileNonActive(AssignFileStream stream); |
| | | |
| | | |
| | | /** |
| | |
| | | * @param stream |
| | | * @return |
| | | */ |
| | | boolean approveAssignFile(String taskId, String streamId, AssignFileStream stream); |
| | | boolean approveAssignFile(AssignFlowTaskVo assignFlowTaskVo); |
| | | |
| | | /** |
| | | * æ¹éææ´¾å°è®¾å¤ |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.service; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import org.jeecg.modules.flow.entity.HisWorkTask; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface IHisWorkTaskService extends IService<HisWorkTask> { |
| | | |
| | | List<HisWorkTask> queryHisTaskList(String drapprovedataId); |
| | | List<HisWorkTask> queryJjHisTaskByJjId(String id); |
| | | |
| | | List<HisWorkTask> queryJjGgHisTaskByJjId(String id); |
| | | List<HisWorkTask> queryLsHisTaskByJjId(String id); |
| | | List<HisWorkTask> queryFxHisTaskByJjId(String id); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.service; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import org.jeecg.modules.flow.entity.UserRole; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface IPlmCommonUtilsService extends IService<UserRole> { |
| | | List<UserRole> queryAllRoleList(); |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.service; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import org.jeecg.modules.flow.entity.WorkTaskData; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface IWorkTaskService extends IService<WorkTaskData> { |
| | | List<WorkTaskData> queryAllworkTask(); |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import org.jeecg.modules.flow.entity.WorkTaskDataVo; |
| | | import org.jeecg.modules.flow.vo.FlowMy; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface IWorkTaskServiceVo extends IService<WorkTaskDataVo> { |
| | | |
| | | IPage<WorkTaskDataVo> toTaskBySelf(FlowMy flowMy, Page page); |
| | | } |
| | |
| | | import com.baomidou.mybatisplus.core.toolkit.Wrappers; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.google.common.collect.Lists; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.shiro.SecurityUtils; |
| | | import org.flowable.engine.TaskService; |
| | |
| | | import org.jeecg.modules.dnc.utils.ValidateUtil; |
| | | import org.jeecg.modules.dnc.utils.date.DateUtil; |
| | | import org.jeecg.modules.dnc.utils.file.FileUtilS; |
| | | import org.jeecg.modules.flow.vo.AssignFlowTaskVo; |
| | | import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; |
| | | import org.jeecg.modules.flowable.apithird.service.FlowCallBackServiceI; |
| | | import org.jeecg.modules.flowable.apithird.service.FlowCommonService; |
| | | import org.jeecg.modules.flowable.domain.vo.FlowTaskVo; |
| | | import org.jeecg.modules.flowable.service.IFlowDefinitionService; |
| | | import org.jeecg.modules.flowable.service.IFlowTaskService; |
| | | import org.jeecg.modules.mdc.entity.MdcEquipment; |
| | | import org.jeecg.modules.mdc.service.IMdcEquipmentService; |
| | | import org.jeecg.modules.system.entity.MdcProduction; |
| | | import org.jeecg.modules.system.service.IMdcProductionService; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.data.redis.core.StringRedisTemplate; |
| | |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | | public class AssignFileStreamServiceImpl extends ServiceImpl<AssignFileStreamMapper, AssignFileStream> implements IAssignFileStreamService { |
| | | @Service("IAssignFileStreamService") |
| | | public class AssignFileStreamServiceImpl extends ServiceImpl<AssignFileStreamMapper, AssignFileStream> implements IAssignFileStreamService , FlowCallBackServiceI { |
| | | private static final String PROCESS_KEY = "assign_nc_to_device"; |
| | | private static final String APPLY_VARIABLE = "apply_user"; |
| | | private static final String APPROVE_VARIABLE = "approve_users"; |
| | |
| | | private FlowCommonService flowCommonService; |
| | | @Resource |
| | | private IFlowDefinitionService flowDefinitionService; |
| | | @Autowired |
| | | private IFlowTaskService flowTaskService; |
| | | |
| | | @Value("${securedoc.serverIp}") |
| | | private String serverIp; |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class}) |
| | | public ResponseResult applyAssignFile(AssignFileStream stream) { |
| | | public Result applyAssignFile(AssignFileStream stream) { |
| | | synchronized (this){ |
| | | //å¤æè®¾å¤ç¹æ®å符 |
| | | String specialChar = getDeviceSpecialChar(stream.getDeviceId(),stream.getFileId()); |
| | | if (StrUtil.isNotEmpty(specialChar)){ |
| | | //æåºç¹æ®å符å¼å¸¸ |
| | | return createSpecialCharErrorResponse(specialChar); |
| | | return Result.error("æä»¶åç§°åå¨è®¾å¤ç¹æ®å符"); |
| | | } |
| | | if(flowableEnable) { |
| | | boolean b = applyAssignFileActive(stream); |
| | | if (b) { |
| | | return ResponseResult.SUCCESS(); |
| | | } else { |
| | | return ResponseResult.SUCCESS(); |
| | | } |
| | | |
| | | return applyAssignFileActive(stream); |
| | | }else { |
| | | return applyAssignFileNonActive(stream); |
| | | } |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class}) |
| | | public boolean applyAssignFileActive(AssignFileStream stream) { |
| | | public Result<?> applyAssignFileActive(AssignFileStream stream) { |
| | | validateParams(stream); |
| | | DocInfo docInfo = getDocInfo(stream); |
| | | MdcEquipment mdcEquipment = getMdcEquipment(stream); |
| | |
| | | List<PermissionStream> permissionStreams = getPermissionStreams(stream); |
| | | LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
| | | String userId = user.getId(); |
| | | // List<String> departIds = getDepartIds(permissionStreams, userId); |
| | | // List<String> userIdList = getUserIdList(departIds); |
| | | // saveBusinessObject(stream, userId); |
| | | // ProcessInstance processInstance = startProcessInstance(stream, userIdList); |
| | | // completeTask(processInstance, userId); |
| | | saveBusinessObject(stream, userId); |
| | | System.out.println("ææ´¾NCææ¡£å°è®¾å¤æµç¨ï¼" + stream.getDocId()); |
| | | flowCommonService.initActBusiness("ææ´¾NCææ¡£å°è®¾å¤æµç¨ï¼" + stream.getStreamId(), stream.getStreamId(), "IAssignFileStreamService", "assign_nc_to_device", null); |
| | | flowCommonService.initActBusiness("ææ´¾NCææ¡£å°è®¾å¤æµç¨ï¼" +docInfo.getDocName()+"."+docInfo.getDocSuffix()+"å°è®¾å¤->"+mdcEquipment.getEquipmentName() , |
| | | stream.getStreamId(), "IAssignFileStreamService", "assign_nc_to_device", null); |
| | | Map<String, Object> variables = new HashMap<>(); |
| | | variables.put("id", stream.getStreamId()); |
| | | variables.put("approveContent", stream.getApproveContent()); |
| | | flowDefinitionService.startProcessInstanceByKey("assign_nc_to_device", variables); |
| | | return true; |
| | | variables.put("dataId", stream.getStreamId()); |
| | | variables.put("organization", stream.getApplyReason()); |
| | | return flowDefinitionService.startProcessInstanceByKey("assign_nc_to_device", variables); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class}) |
| | | public ResponseResult applyAssignFileNonActive(AssignFileStream stream) { |
| | | public Result<?> applyAssignFileNonActive(AssignFileStream stream) { |
| | | //æéæ ¡éª |
| | | validateParams(stream); |
| | | DocInfo docInfo = getDocInfo(stream); |
| | |
| | | handleFileTransfer(mdcEquipment, docFile); |
| | | handleFileProcessing(docFile, mdcEquipment, whether, localFilePath); |
| | | synchronizedFlagService.updateFlag(2); |
| | | return new ResponseResult(CommonCode.SUCCESS); |
| | | return Result.OK("æä½æå"); |
| | | } |
| | | |
| | | @Override |
| | |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = {Exception.class}) |
| | | public boolean approveAssignFile(String taskId, String streamId, AssignFileStream stream) { |
| | | if(!ValidateUtil.validateString(taskId) || !ValidateUtil.validateString(streamId) || stream == null) |
| | | public boolean approveAssignFile(AssignFlowTaskVo assignFlowTaskVo) { |
| | | if(!ValidateUtil.validateString(assignFlowTaskVo.getTaskId()) || !ValidateUtil.validateString(assignFlowTaskVo.getDataId()) || assignFlowTaskVo == null) |
| | | ExceptionCast.cast(CommonCode.INVALID_PARAM); |
| | | LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal(); |
| | | String userId = user.getId(); |
| | | if(!ValidateUtil.validateString(userId)) |
| | | ExceptionCast.cast(UcenterCode.UCENTER_ACCOUNT_NOT_EXIST); |
| | | if(!ValidateUtil.validateInteger(stream.getStatus())) |
| | | if(!ValidateUtil.validateInteger(assignFlowTaskVo.getStatus())) |
| | | ExceptionCast.cast(ActivitiCode.ACT_STATUS_ERROR); |
| | | AssignFileStream en = super.getById(streamId); |
| | | AssignFileStream en = super.getById(assignFlowTaskVo.getDataId()); |
| | | if(en == null) |
| | | ExceptionCast.cast(ActivitiCode.ACT_BUSINESS_DETAIL_ERROR); |
| | | Task task = taskService.createTaskQuery().taskId(taskId).taskCandidateOrAssigned(userId).singleResult(); |
| | | if(task == null) |
| | | ExceptionCast.cast(ActivitiCode.ACT_TASK_ERROR); |
| | | if(!ValidateUtil.validateString(task.getAssignee())) { |
| | | //æ¾åä»»å¡ |
| | | taskService.claim(task.getId(), userId); |
| | | //å®æä»»å¡ |
| | | taskService.complete(task.getId()); |
| | | }else { |
| | | //å®æä»»å¡ |
| | | taskService.complete(task.getId()); |
| | | } |
| | | //flowableå¤ç |
| | | FlowTaskVo flowTaskVo = new FlowTaskVo(); |
| | | BeanUtils.copyProperties(assignFlowTaskVo, flowTaskVo); |
| | | flowTaskService.complete(flowTaskVo); |
| | | //æ´æ°å¯¹è±¡å°è£
|
| | | AssignFileStream up = new AssignFileStream(); |
| | | up.setApproveContent(stream.getApproveContent()); |
| | | up.setStatus(stream.getStatus()); |
| | | up.setApproveContent(assignFlowTaskVo.getApproveContent()); |
| | | up.setStatus(assignFlowTaskVo.getStatus()); |
| | | up.setApproveUserId(userId); |
| | | up.setApproveTime(DateUtil.getNow()); |
| | | up.setStreamId(streamId); |
| | | up.setStreamId(assignFlowTaskVo.getDataId()); |
| | | boolean b = super.updateById(up); |
| | | if(!b) |
| | | ExceptionCast.cast(ActivitiCode.ACT_APPROVE_ERROR); |
| | | if(up.getStatus() == 2) { |
| | | DocInfo docInfo; |
| | | //åææä½ |
| | | DocInfo docInfo = docInfoService.getByDocAttrAndDocId(en.getDocId(), 5, en.getProcessId()); |
| | | if (StrUtil.isNotEmpty(en.getStepId())){ |
| | | //å·¥æ¥ææ´¾ |
| | | docInfo = docInfoService.getByDocAttrAndDocId(en.getDocId(), 6, en.getStepId()); |
| | | }else { |
| | | docInfo = docInfoService.getByDocAttrAndDocId(en.getDocId(), 5, en.getProcessId()); |
| | | } |
| | | if(docInfo == null || docInfo.getDocStatus() == 3) |
| | | ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR); |
| | | DeviceInfo deviceInfo = deviceInfoService.getById(en.getDeviceId()); |
| | | if(deviceInfo == null) |
| | | MdcEquipment mdcEquipment = iMdcEquipmentService.getById(en.getDeviceId()); |
| | | if(mdcEquipment == null) |
| | | ExceptionCast.cast(ActivitiCode.ACT_ASSIGN_DEVICE_NONE); |
| | | DocFile docFile = docFileService.getById(en.getFileId()); |
| | | if(docFile == null) |
| | |
| | | DocInfo deviceDoc = docInfoService.getByDocAttrAndDocId(en.getDocId(),4, en.getDeviceId()); |
| | | if(deviceDoc != null) { |
| | | // å é¤ å¤ä»½ è¦ç åæç |
| | | List<String> strings = deviceGroupService.findListParentTreeAll(deviceInfo.getGroupId()); |
| | | List<String> strings = iMdcProductionService.findListParentTreeAll(mdcEquipment.getId()); |
| | | if (strings != null && !strings.isEmpty()) { |
| | | String path = StringUtils.join(strings.toArray(), "/"); |
| | | boolean copyFileNc = FileUtilS.copyFileNcToBak(path + "/"+ deviceInfo.getDeviceNo(), |
| | | boolean copyFileNc = FileUtilS.copyFileNcToBak(path + "/"+ mdcEquipment.getEquipmentId(), |
| | | docFile.getFileName(), docFile.getFileSuffix()); |
| | | /* //docInfoService.getBaseMapper().deleteById(deviceDoc.getDocId()); |
| | | boolean doc = docRelativeService.deleteCopyDocByAttrNext(deviceDoc.getDocId(),4,stream.getDeviceId()); |
| | | if (!doc) { |
| | | ExceptionCast.cast(ActivitiCode.ACT_DOC_ERROR_DELEVE); |
| | | }*/ |
| | | |
| | | } |
| | | } else { |
| | | //æå
¥ææ¡£å°è®¾å¤åéææ¡£ |
| | |
| | | } |
| | | if(!b) |
| | | ExceptionCast.cast(ActivitiCode.ACT_APPROVE_ERROR); |
| | | if (deviceInfo != null) { |
| | | List<String> strings = deviceGroupService.findListParentTreeAll(deviceInfo.getGroupId()); |
| | | if (mdcEquipment != null) { |
| | | List<String> strings = iMdcProductionService.findListParentTreeAll(mdcEquipment.getId()); |
| | | if (strings != null && !strings.isEmpty()) { |
| | | String path = StringUtils.join(strings.toArray(), "/"); |
| | | boolean copyFileNc = FileUtilS.copyFileNc(docFile.getFilePath(),path + "/"+ deviceInfo.getDeviceNo(), |
| | | boolean copyFileNc = FileUtilS.copyFileNc(docFile.getFilePath(),path + "/"+ mdcEquipment.getEquipmentId(), |
| | | docFile.getFileEncodeName(), |
| | | docFile.getFileName(),docFile.getFileSuffix()); |
| | | if (!copyFileNc) { |
| | | ExceptionCast.cast(ActivitiCode.ACT_FILE_ERROR); |
| | | } else { |
| | | FileUtilS.deleteZipFromToSend(path + "/"+ deviceInfo.getDeviceNo(), |
| | | FileUtilS.deleteZipFromToSend(path + "/"+ mdcEquipment.getEquipmentId(), |
| | | docFile.getFileName(),docFile.getFileSuffix()); |
| | | |
| | | } |
| | | } |
| | | |
| | | } |
| | | return synchronizedFlagService.updateFlag(1); |
| | | }else if(up.getStatus() == 3) { |
| | |
| | | for(String id : deviceIds) { |
| | | stream = new AssignFileStream(); |
| | | stream.setProcessId(assignFileRequest.getProcessId()); |
| | | stream.setStepId(assignFileRequest.getStepId()); |
| | | stream.setDocId(assignFileRequest.getDocId()); |
| | | stream.setFileId(assignFileRequest.getFileId()); |
| | | stream.setApplyReason(assignFileRequest.getApplyReason()); |
| | | stream.setDeviceId(id); |
| | | ResponseResult b = applyAssignFile(stream); |
| | | Result b = applyAssignFile(stream); |
| | | if(!b.isSuccess()) |
| | | ExceptionCast.cast(ActivitiCode.ACT_APPLY_ERROR); |
| | | } |
| | |
| | | List<TaskRequest> list = approveBatchRequest.getTaskArr(); |
| | | if(list == null || list.isEmpty()) |
| | | ExceptionCast.cast(CommonCode.INVALID_PARAM); |
| | | list.forEach(item -> { |
| | | AssignFileStream stream = new AssignFileStream(); |
| | | stream.setApproveContent(approveBatchRequest.getApproveContent()); |
| | | stream.setStatus(approveBatchRequest.getStatus()); |
| | | boolean b = approveAssignFile(item.getId(), item.getBusinessKey(), stream); |
| | | if(!b) |
| | | ExceptionCast.cast(ActivitiCode.ACT_APPROVE_ERROR); |
| | | }); |
| | | // list.forEach(item -> { |
| | | // AssignFileStream stream = new AssignFileStream(); |
| | | // stream.setApproveContent(approveBatchRequest.getApproveContent()); |
| | | // stream.setStatus(approveBatchRequest.getStatus()); |
| | | // boolean b = approveAssignFile(item.getId(), item.getBusinessKey(), stream); |
| | | // if(!b) |
| | | // ExceptionCast.cast(ActivitiCode.ACT_APPROVE_ERROR); |
| | | // }); |
| | | return synchronizedFlagService.updateFlag(1); |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void afterFlowHandle(FlowMyBusiness business) { |
| | | business.getTaskNameId();//æ¥ä¸æ¥å®¡æ¹çèç¹ |
| | | business.getValues();//åç«¯ä¼ è¿æ¥çåæ° |
| | | business.getActStatus(); |
| | | } |
| | | |
| | | @Override |
| | | public Object getBusinessDataById(String dataId) { |
| | | return this.getById(dataId); |
| | | } |
| | | |
| | | @Override |
| | | public Map<String, Object> flowValuesOfTask(String taskNameId, Map<String, Object> values) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public List<String> flowCandidateUsernamesOfTask(String taskNameId, Map<String, Object> values) { |
| | | return Lists.newArrayList("jeecg"); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.jeecg.modules.flow.entity.HisWorkTask; |
| | | import org.jeecg.modules.flow.mapper.IHisWorkTaskMapper; |
| | | import org.jeecg.modules.flow.service.IHisWorkTaskService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | @Service |
| | | public class HisWorkTaskServiceImpl extends ServiceImpl<IHisWorkTaskMapper,HisWorkTask> implements IHisWorkTaskService { |
| | | @Override |
| | | public List<HisWorkTask> queryHisTaskList(String drapprovedataId) { |
| | | return baseMapper.queryHisTaskList(drapprovedataId); |
| | | } |
| | | |
| | | @Override |
| | | public List<HisWorkTask> queryJjHisTaskByJjId(String id) { |
| | | return baseMapper.queryJjHisTaskByJjId(id); |
| | | } |
| | | |
| | | @Override |
| | | public List<HisWorkTask> queryJjGgHisTaskByJjId(String id) { |
| | | return baseMapper.queryJjGgHisTaskByJjId(id); |
| | | } |
| | | |
| | | @Override |
| | | public List<HisWorkTask> queryLsHisTaskByJjId(String id) { |
| | | return baseMapper.queryLsHisTaskByJjId(id); |
| | | } |
| | | |
| | | @Override |
| | | public List<HisWorkTask> queryFxHisTaskByJjId(String id) { |
| | | return baseMapper.queryFxHisTaskByJjId(id); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.jeecg.modules.flow.entity.UserRole; |
| | | import org.jeecg.modules.flow.mapper.PlmCommonUtilsMapper; |
| | | import org.jeecg.modules.flow.service.IPlmCommonUtilsService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | @Service |
| | | public class PlmCommonUtilsServiceImpl extends ServiceImpl<PlmCommonUtilsMapper, UserRole> implements IPlmCommonUtilsService { |
| | | @Autowired |
| | | private PlmCommonUtilsMapper plmCommonUtilsMapper; |
| | | |
| | | @Override |
| | | public List<UserRole> queryAllRoleList() { |
| | | List<UserRole> userRoles = baseMapper.queryAllRoleList(); |
| | | return userRoles; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.jeecg.modules.flow.entity.WorkTaskData; |
| | | import org.jeecg.modules.flow.mapper.IWorkTaskMapper; |
| | | import org.jeecg.modules.flow.service.IWorkTaskService; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | |
| | | @Service |
| | | public class WorkTaskServiceImpl extends ServiceImpl<IWorkTaskMapper, WorkTaskData> implements IWorkTaskService { |
| | | |
| | | |
| | | @Override |
| | | public List<WorkTaskData> queryAllworkTask() { |
| | | return baseMapper.queryAllworkTask(); |
| | | } |
| | | |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.flowable.engine.ProcessEngine; |
| | | import org.flowable.engine.TaskService; |
| | | import org.jeecg.modules.flow.entity.WorkTaskDataVo; |
| | | import org.jeecg.modules.flow.mapper.IWorkTaskVoMapper; |
| | | import org.jeecg.modules.flow.service.IWorkTaskServiceVo; |
| | | import org.jeecg.modules.flow.vo.FlowMy; |
| | | import org.jeecg.modules.system.service.ISysUserService; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | @Service |
| | | public class WorkTaskServiceImplVo extends ServiceImpl<IWorkTaskVoMapper, WorkTaskDataVo> implements IWorkTaskServiceVo { |
| | | @Autowired |
| | | ProcessEngine processEngine; |
| | | @Autowired |
| | | private ISysUserService sysUserService; |
| | | @Override |
| | | public IPage<WorkTaskDataVo> toTaskBySelf(FlowMy flowMy, Page page) { |
| | | IPage<WorkTaskDataVo> workTaskDataVoList = baseMapper.taskBySelf(flowMy,page); |
| | | workTaskDataVoList.getRecords().forEach(workTaskDataVo -> { |
| | | TaskService taskService = processEngine.getTaskService(); |
| | | String taskId=workTaskDataVo.getId(); |
| | | Map<String, Object> variables = taskService.getVariables(taskId); |
| | | String realname=sysUserService.getUserByName((String) variables.get("INITIATOR")).getRealname(); |
| | | variables.put("INITIATOR",realname); |
| | | workTaskDataVo.setVariables(variables); |
| | | }); |
| | | return workTaskDataVoList; |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.vo; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * <p>æµç¨ä»»å¡<p> |
| | | * |
| | | */ |
| | | @Data |
| | | @ApiModel("工使µä»»å¡ç¸å
³--请æ±åæ°") |
| | | public class AssignFlowTaskVo { |
| | | |
| | | @ApiModelProperty("æ°æ®Id") |
| | | private String dataId; |
| | | @ApiModelProperty("ä»»å¡Id") |
| | | private String taskId; |
| | | |
| | | @ApiModelProperty("ç¨æ·Id") |
| | | private String userId; |
| | | |
| | | @ApiModelProperty("任塿è§") |
| | | private String comment; |
| | | |
| | | @ApiModelProperty("æµç¨å®ä¾Id") |
| | | private String instanceId; |
| | | |
| | | @ApiModelProperty("èç¹") |
| | | private String targetKey; |
| | | |
| | | @ApiModelProperty("æµç¨åéä¿¡æ¯") |
| | | private Map<String, Object> values; |
| | | |
| | | @ApiModelProperty("审æ¹äºº") |
| | | private String assignee; |
| | | |
| | | @ApiModelProperty("åé人") |
| | | private List<String> candidateUsers; |
| | | |
| | | @ApiModelProperty("审æ¹ç»") |
| | | private List<String> candidateGroups; |
| | | |
| | | private String xiugaiId; |
| | | |
| | | private Integer status; |
| | | |
| | | private String secretLevel; |
| | | |
| | | private String approveContent; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg.modules.flow.vo; |
| | | |
| | | import io.swagger.annotations.ApiModel; |
| | | import lombok.Data; |
| | | |
| | | /** |
| | | * <p>æµç¨ä»»å¡<p> |
| | | * |
| | | */ |
| | | @Data |
| | | @ApiModel("工使µ--å¾
åå·²åå°è´¦") |
| | | public class FlowMy { |
| | | /** |
| | | * æµç¨åç§° |
| | | */ |
| | | private String flowName; |
| | | /** |
| | | * æµç¨ä¸å¡ç®è¦æè¿° |
| | | */ |
| | | private String title; |
| | | /** |
| | | * ç¨æ·username |
| | | */ |
| | | private String username; |
| | | /** |
| | | * å¼å§æ¶é´ |
| | | */ |
| | | private String startTime; |
| | | /** |
| | | * ç»ææ¶é´ |
| | | */ |
| | | private String endTime; |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | package org.jeecg; |
| | | import org.flowable.engine.ProcessEngine; |
| | | import org.flowable.engine.ProcessEngineConfiguration; |
| | | import org.flowable.engine.impl.cfg.StandaloneProcessEngineConfiguration; |
| | | |
| | | public class FlowableDatabaseConfig { |
| | | public static void main(String[] args) { |
| | | // å建æµç¨å¼æé
ç½® |
| | | ProcessEngineConfiguration cfg = new StandaloneProcessEngineConfiguration() |
| | | .setJdbcUrl("jdbc:sqlserver://192.168.1.118:1433;databasename=LXZN_TEXT_HANGYU_FLOWABLE;nullCatalogMeansCurrent=true") |
| | | .setJdbcUsername("sa") |
| | | .setJdbcPassword("123") |
| | | .setJdbcDriver("com.microsoft.sqlserver.jdbc.SQLServerDriver") |
| | | .setDatabaseSchemaUpdate(ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE) |
| | | .setDatabaseType("mssql"); // æå®æ°æ®åºç±»å |
| | | // æå»ºæµç¨å¼æ |
| | | ProcessEngine processEngine = cfg.buildProcessEngine(); |
| | | } |
| | | } |
ÎļþÃû´Ó lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/entity/FlowMyBusinessDto.java ÐÞ¸Ä |
| | |
| | | package org.jeecg.modules.flowable.apithird.business.entity; |
| | | package org.jeecg.modules.flowable.apithird.business.dto; |
| | | |
| | | import com.baomidou.mybatisplus.annotation.IdType; |
| | | import com.baomidou.mybatisplus.annotation.TableField; |
| | | import com.baomidou.mybatisplus.annotation.TableId; |
| | | import com.baomidou.mybatisplus.annotation.TableName; |
| | | import com.fasterxml.jackson.annotation.JsonFormat; |
| | | import io.swagger.annotations.ApiModel; |
| | | import io.swagger.annotations.ApiModelProperty; |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.experimental.Accessors; |
| | | import org.jeecg.common.aspect.annotation.Dict; |
| | | import org.jeecgframework.poi.excel.annotation.Excel; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | | import java.io.Serializable; |
| | | import java.util.Date; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | |
| | | * @Version: V1.0 |
| | | */ |
| | | @Data |
| | | @TableName("flow_my_business") |
| | | @Accessors(chain = true) |
| | | @EqualsAndHashCode(callSuper = false) |
| | | @ApiModel(value="flow_my_business对象", description="æµç¨ä¸å¡æ©å±è¡¨") |
| | | public class FlowMyBusinessDto implements Serializable { |
| | | private static final long serialVersionUID = 1L; |
| | | |
| | | /**主é®ID*/ |
| | | @TableId(type = IdType.ASSIGN_ID) |
| | | @ApiModelProperty(value = "主é®ID") |
| | | private String id; |
| | | /**å建人*/ |
| | | @ApiModelProperty(value = "å建人") |
| | | private String createBy; |
| | | /**å建æ¶é´*/ |
| | | @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd") |
| | | @ApiModelProperty(value = "å建æ¶é´") |
| | | private Date createTime; |
| | | /**ä¿®æ¹äºº*/ |
| | | @ApiModelProperty(value = "ä¿®æ¹äºº") |
| | | private String updateBy; |
| | | /**ä¿®æ¹æ¶é´*/ |
| | | @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd") |
| | | @DateTimeFormat(pattern="yyyy-MM-dd") |
| | | @ApiModelProperty(value = "ä¿®æ¹æ¶é´") |
| | | private Date updateTime; |
| | | /**æµç¨å®ä¹key ä¸ä¸ªkey伿å¤ä¸ªçæ¬çid*/ |
| | | @TableField(exist = false) |
| | | @Excel(name = "æµç¨å®ä¹key ä¸ä¸ªkey伿å¤ä¸ªçæ¬çid", width = 15) |
| | | @ApiModelProperty(value = "æµç¨å®ä¹key ä¸ä¸ªkey伿å¤ä¸ªçæ¬çid") |
| | | private String processDefinitionKey; |
| | | /**æµç¨å®ä¹id ä¸ä¸ªæµç¨å®ä¹å¯ä¸*/ |
| | | @TableField(exist = false) |
| | | @Excel(name = "æµç¨å®ä¹id ä¸ä¸ªæµç¨å®ä¹å¯ä¸", width = 15) |
| | | @ApiModelProperty(value = "æµç¨å®ä¹id ä¸ä¸ªæµç¨å®ä¹å¯ä¸") |
| | | private String processDefinitionId; |
| | | /**æµç¨ä¸å¡å®ä¾id ä¸ä¸ªæµç¨ä¸å¡å¯ä¸ï¼æ¬è¡¨ä¸ä¹å¯ä¸*/ |
| | | @TableField(exist = false) |
| | | @Excel(name = "æµç¨ä¸å¡å®ä¾id ä¸ä¸ªæµç¨ä¸å¡å¯ä¸ï¼æ¬è¡¨ä¸ä¹å¯ä¸", width = 15) |
| | | @ApiModelProperty(value = "æµç¨ä¸å¡å®ä¾id ä¸ä¸ªæµç¨ä¸å¡å¯ä¸ï¼æ¬è¡¨ä¸ä¹å¯ä¸") |
| | | private String processInstanceId; |
| | | /**æµç¨ä¸å¡ç®è¦æè¿°*/ |
| | | @TableField(exist = false) |
| | | @Excel(name = "æµç¨ä¸å¡ç®è¦æè¿°", width = 15) |
| | | @ApiModelProperty(value = "æµç¨ä¸å¡ç®è¦æè¿°") |
| | | private String title; |
| | | /**ä¸å¡è¡¨idï¼ç论å¯ä¸*/ |
| | | @TableField(exist = false) |
| | | @Excel(name = "ä¸å¡è¡¨idï¼ç论å¯ä¸", width = 15) |
| | | @ApiModelProperty(value = "ä¸å¡è¡¨idï¼ç论å¯ä¸") |
| | | private String dataId; |
| | | /**ä¸å¡ç±»åï¼ç¨æ¥è·åspring容å¨éçæå¡å¯¹è±¡*/ |
| | | @TableField(exist = false) |
| | | @Excel(name = "ä¸å¡ç±»åï¼ç¨æ¥è·åspring容å¨éçæå¡å¯¹è±¡", width = 15) |
| | | @ApiModelProperty(value = "ä¸å¡ç±»åï¼ç¨æ¥è·åspring容å¨éçæå¡å¯¹è±¡") |
| | | private String serviceImplName; |
| | | /**ç³è¯·äºº*/ |
| | | @TableField(exist = false) |
| | | @Excel(name = "ç³è¯·äºº", width = 15) |
| | | @ApiModelProperty(value = "ç³è¯·äºº") |
| | | @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") |
| | | private String proposer; |
| | | /**æµç¨ç¶æè¯´æï¼æï¼å¯å¨ æ¤å 驳å 审æ¹ä¸ 审æ¹éè¿ å®¡æ¹å¼å¸¸*/ |
| | | @TableField(exist = false) |
| | | @Excel(name = "æµç¨ç¶æè¯´æï¼æï¼å¯å¨ æ¤å 驳å 审æ¹ä¸ 审æ¹éè¿ å®¡æ¹å¼å¸¸", width = 15) |
| | | @ApiModelProperty(value = "æµç¨ç¶æè¯´æï¼æï¼å¯å¨ æ¤å 驳å 审æ¹ä¸ 审æ¹éè¿ å®¡æ¹å¼å¸¸") |
| | | private String actStatus; |
| | | /**å½åçèç¹å®ä¾ä¸çId*/ |
| | | @TableField(exist = false) |
| | | @Excel(name = "å½åçèç¹Id", width = 15) |
| | | @ApiModelProperty(value = "å½åçèç¹Id") |
| | | private String taskId; |
| | | /**å½åçèç¹*/ |
| | | @TableField(exist = false) |
| | | @Excel(name = "å½åçèç¹", width = 15) |
| | | @ApiModelProperty(value = "å½åçèç¹") |
| | | private String taskName; |
| | | /**å½åçèç¹å®ä¹ä¸çId*/ |
| | | @TableField(exist = false) |
| | | @Excel(name = "å½åçèç¹", width = 15) |
| | | @ApiModelProperty(value = "å½åçèç¹") |
| | | private String taskNameId; |
| | | /**å½åçèç¹å¯ä»¥å¤ççç¨æ·åï¼ä¸ºusernameçéåjsonå符串*/ |
| | | @TableField(exist = false) |
| | | @Excel(name = "å½åçèç¹å¯ä»¥å¤ççç¨æ·å", width = 15) |
| | | @ApiModelProperty(value = "å½åçèç¹å¯ä»¥å¤ççç¨æ·å") |
| | | @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") |
| | | private String todoUsers; |
| | | /**å¤çè¿ç人,为usernameçéåjsonå符串*/ |
| | | @TableField(exist = false) |
| | | @Excel(name = "å¤çè¿ç人", width = 15) |
| | | @ApiModelProperty(value = "å¤çè¿ç人") |
| | | @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") |
| | | private String doneUsers; |
| | | /**å½åä»»å¡èç¹çä¼å
级 æµç¨å®ä¹çæ¶åæå¡«*/ |
| | | @TableField(exist = false) |
| | | @Excel(name = "å½åä»»å¡èç¹çä¼å
级 æµç¨å®ä¹çæ¶åæå¡«", width = 15) |
| | | @ApiModelProperty(value = "å½åä»»å¡èç¹çä¼å
级 æµç¨å®ä¹çæ¶åæå¡«") |
| | | private String priority; |
| | | /**æµç¨åé*/ |
| | | @TableField(exist = false) |
| | | private Map<String,Object> values; |
| | | |
| | | /**å½åèç¹çç¶æ*/ |
| | | @TableField(exist = false) |
| | | private String taskStatus; |
| | | |
| | | private transient String flowName; |
| | | |
| | | /**æµç¨å¼å§æ¶é´*/ |
| | | private transient Date startTime; |
| | | |
| | | /**æµç¨ç»ææ¶é´*/ |
| | | private transient Date endTime; |
| | | } |
| | |
| | | import lombok.Data; |
| | | import lombok.EqualsAndHashCode; |
| | | import lombok.experimental.Accessors; |
| | | import org.jeecg.common.aspect.annotation.Dict; |
| | | import org.jeecgframework.poi.excel.annotation.Excel; |
| | | import org.springframework.format.annotation.DateTimeFormat; |
| | | |
| | |
| | | /**ç³è¯·äºº*/ |
| | | @Excel(name = "ç³è¯·äºº", width = 15) |
| | | @ApiModelProperty(value = "ç³è¯·äºº") |
| | | @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") |
| | | private String proposer; |
| | | /**æµç¨ç¶æè¯´æï¼æï¼å¯å¨ æ¤å 驳å 审æ¹ä¸ 审æ¹éè¿ å®¡æ¹å¼å¸¸*/ |
| | | @Excel(name = "æµç¨ç¶æè¯´æï¼æï¼å¯å¨ æ¤å 驳å 审æ¹ä¸ 审æ¹éè¿ å®¡æ¹å¼å¸¸", width = 15) |
| | |
| | | /**å½åçèç¹å¯ä»¥å¤ççç¨æ·åï¼ä¸ºusernameçéåjsonå符串*/ |
| | | @Excel(name = "å½åçèç¹å¯ä»¥å¤ççç¨æ·å", width = 15) |
| | | @ApiModelProperty(value = "å½åçèç¹å¯ä»¥å¤ççç¨æ·å") |
| | | @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") |
| | | private String todoUsers; |
| | | /**å¤çè¿ç人,为usernameçéåjsonå符串*/ |
| | | @Excel(name = "å¤çè¿ç人", width = 15) |
| | | @ApiModelProperty(value = "å¤çè¿ç人") |
| | | @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") |
| | | private String doneUsers; |
| | | /**å½åä»»å¡èç¹çä¼å
级 æµç¨å®ä¹çæ¶åæå¡«*/ |
| | | @Excel(name = "å½åä»»å¡èç¹çä¼å
级 æµç¨å®ä¹çæ¶åæå¡«", width = 15) |
| | |
| | | /**æµç¨åé*/ |
| | | @TableField(exist = false) |
| | | private Map<String,Object> values; |
| | | |
| | | /**å½åèç¹çç¶æ*/ |
| | | @TableField(exist = false) |
| | | private String taskStatus; |
| | | } |
| | |
| | | package org.jeecg.modules.flowable.apithird.business.mapper; |
| | | |
| | | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import org.jeecg.modules.flowable.apithird.business.dto.FlowMyBusinessDto; |
| | | import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; |
| | | |
| | | /** |
| | |
| | | */ |
| | | public interface FlowMyBusinessMapper extends BaseMapper<FlowMyBusiness> { |
| | | |
| | | /** |
| | | * æµç¨æ»å°è´¦ |
| | | * @param flowMyBusinessDto |
| | | * @return |
| | | */ |
| | | IPage<FlowMyBusinessDto> findPageList(Page<FlowMyBusiness> page, FlowMyBusinessDto flowMyBusinessDto); |
| | | |
| | | } |
| | |
| | | <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> |
| | | <mapper namespace="org.jeecg.modules.flowable.apithird.business.mapper.FlowMyBusinessMapper"> |
| | | |
| | | <select id="findPageList" resultType="org.jeecg.modules.flowable.apithird.business.dto.FlowMyBusinessDto"> |
| | | SELECT |
| | | flow_my_business.*, |
| | | ACT_HI_PROCINST.START_TIME_ as start_time, |
| | | ACT_HI_PROCINST.END_TIME_ as end_time, |
| | | NC_ASSIGN_FILE_STREAM.STATUS as status, |
| | | ACT_RE_PROCDEF.NAME_ as flowName |
| | | FROM |
| | | flow_my_business |
| | | LEFT JOIN ACT_HI_PROCINST ON flow_my_business.process_instance_id = ACT_HI_PROCINST.ID_ |
| | | LEFT JOIN ACT_RE_PROCDEF ON flow_my_business.process_definition_id = ACT_RE_PROCDEF.ID_ |
| | | LEFT JOIN NC_ASSIGN_FILE_STREAM ON flow_my_business.data_id = NC_ASSIGN_FILE_STREAM.STREAM_ID |
| | | where |
| | | 1 = 1 |
| | | ORDER BY |
| | | flow_my_business.create_time desc |
| | | </select> |
| | | </mapper> |
| | |
| | | package org.jeecg.modules.flowable.apithird.business.service; |
| | | |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.IService; |
| | | import org.jeecg.modules.flowable.apithird.business.dto.FlowMyBusinessDto; |
| | | import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; |
| | | |
| | | /** |
| | |
| | | */ |
| | | public interface IFlowMyBusinessService extends IService<FlowMyBusiness> { |
| | | |
| | | IPage<FlowMyBusinessDto> findPageList(Page page, FlowMyBusinessDto flowMyBusinessDto); |
| | | } |
| | |
| | | package org.jeecg.modules.flowable.apithird.business.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import org.jeecg.modules.flowable.apithird.business.dto.FlowMyBusinessDto; |
| | | import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; |
| | | import org.jeecg.modules.flowable.apithird.business.mapper.FlowMyBusinessMapper; |
| | | import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService; |
| | |
| | | FlowMyBusiness business = this.getOne(flowMyBusinessLambdaQueryWrapper); |
| | | return business; |
| | | } |
| | | |
| | | |
| | | public FlowMyBusiness getByProcessInstanceId(String processInstanceId) { |
| | | LambdaQueryWrapper<FlowMyBusiness> flowMyBusinessLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
| | | flowMyBusinessLambdaQueryWrapper.eq(FlowMyBusiness::getProcessInstanceId,processInstanceId) |
| | | ; |
| | | //妿ä¿åæ°æ®åæªè°ç¨å¿
è°çFlowCommonService.initActBusinessæ¹æ³ï¼å°±ä¼æé®é¢ |
| | | FlowMyBusiness business = this.getOne(flowMyBusinessLambdaQueryWrapper); |
| | | return business; |
| | | } |
| | | |
| | | /** |
| | | * æµç¨æ»å°è´¦ |
| | | * @param flowMyBusinessDto |
| | | * @return |
| | | */ |
| | | @Override |
| | | public IPage<FlowMyBusinessDto> findPageList(Page page, FlowMyBusinessDto flowMyBusinessDto){ |
| | | return this.baseMapper.findPageList(page,flowMyBusinessDto); |
| | | } |
| | | } |
| | |
| | | public interface ActStatus { |
| | | //å¯å¨ æ¤å 驳å 审æ¹ä¸ 审æ¹éè¿ å®¡æ¹å¼å¸¸ |
| | | //æ¬æµç¨ä¸åºæå¯å¨ç¶æï¼å¯å¨å³è¿å
¥å®¡æ¹ï¼ç¬¬ä¸ä¸ªèç¹å°±æ¯å起人èç¹ï¼æªæ¹ä¾¿ä¸å¡åºåï¼è®¾å®ä¸ºâå¯å¨âç¶æ |
| | | String start = "å¯å¨"; |
| | | String start = "æäº¤ç³è¯·"; |
| | | String recall = "æ¤å"; |
| | | String reject = "驳å"; |
| | | String doing = "审æ¹ä¸"; |
| | | String pass = "审æ¹éè¿"; |
| | | String err = "审æ¹å¼å¸¸"; |
| | | String pass = "审æ¹"; |
| | | } |
| | |
| | | import cn.hutool.core.util.IdUtil; |
| | | import cn.hutool.core.util.StrUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import org.jeecg.common.system.vo.LoginUser; |
| | | import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness; |
| | | import org.jeecg.modules.flowable.apithird.business.service.impl.FlowMyBusinessServiceImpl; |
| | | import org.jeecg.modules.flowable.apithird.common.exception.CustomException; |
| | |
| | | @ApiModelProperty("任塿§è¡äººId") |
| | | private String assigneeId; |
| | | |
| | | @ApiModelProperty("ä»»å¡æè¿°") |
| | | private String description; |
| | | |
| | | @ApiModelProperty("é¨é¨åç§°") |
| | | private String deptName; |
| | | |
| | |
| | | private List<String> candidateGroups; |
| | | |
| | | private String xiugaiId; |
| | | |
| | | private Integer status; |
| | | } |
| | |
| | | import org.apache.commons.io.IOUtils; |
| | | import org.flowable.bpmn.model.BpmnModel; |
| | | import org.flowable.bpmn.model.UserTask; |
| | | import org.flowable.common.engine.impl.identity.Authentication; |
| | | import org.flowable.engine.ProcessEngineConfiguration; |
| | | import org.flowable.engine.history.HistoricActivityInstance; |
| | | import org.flowable.engine.history.HistoricProcessInstance; |
| | | import org.flowable.engine.repository.Deployment; |
| | | import org.flowable.engine.repository.ProcessDefinition; |
| | | import org.flowable.engine.repository.ProcessDefinitionQuery; |
| | |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Result startProcessInstanceByKey(String procDefKey, Map<String, Object> variables) { |
| | | public Result<?> startProcessInstanceByKey(String procDefKey, Map<String, Object> variables) { |
| | | ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() |
| | | .processDefinitionKey(procDefKey) |
| | | .latestVersion().singleResult(); |
| | | return startProcessInstanceById(processDefinition.getId(),variables); |
| | | Result result = startProcessInstanceById(processDefinition.getId(),variables); |
| | | return result; |
| | | } |
| | | /** |
| | | * æ ¹æ®æµç¨å®ä¹IDå¯å¨æµç¨å®ä¾ |
| | |
| | | */ |
| | | @Override |
| | | @Transactional |
| | | public Result startProcessInstanceById(String procDefId, Map<String, Object> variables) { |
| | | public Result<?> startProcessInstanceById(String procDefId, Map<String, Object> variables) { |
| | | ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery() |
| | | .processDefinitionId(procDefId) |
| | | .singleResult(); |
| | |
| | | ProcessInstance processInstance = runtimeService.startProcessInstanceById(procDefId, variables); |
| | | // ç»ç¬¬ä¸æ¥ç³è¯·äººèç¹è®¾ç½®ä»»å¡æ§è¡äººåæè§ |
| | | Task task = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).active().singleResult(); |
| | | if (!sysUser.getUsername().equals(task.getAssignee())){ |
| | | return Result.error("å½åç¨æ·ä¸æ¯æµç¨å起人"); |
| | | } |
| | | if (Objects.nonNull(task)) { |
| | | taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.NORMAL.getType(), sysUser.getRealname() + "åèµ·æµç¨ç³è¯·"); |
| | | taskService.setAssignee(task.getId(), sysUser.getUsername()); |
| | | task.setDescription(variables.get("organization").toString()); |
| | | // æ´æ°ä»»å¡ |
| | | taskService.saveTask(task); |
| | | //taskService.complete(task.getId(), variables); |
| | | } |
| | | //设置ææç³è¯·äºº |
| | |
| | | taskService.setAssignee(taskVo.getTaskId(), loginUser.getUsername()); |
| | | //taskService.complete(taskVo.getTaskId(), taskVo.getValues()); |
| | | } |
| | | /*======================审æ¹éè¿ åè°ä»¥åå
³é®æ°æ®ä¿å======================*/ |
| | | /*======================审æ¹ç»æ åè°ä»¥åå
³é®æ°æ®ä¿å======================*/ |
| | | //ä¸å¡æ°æ®id |
| | | String dataId = taskVo.getDataId(); |
| | | //妿ä¿åæ°æ®åæªè°ç¨å¿
è°çFlowCommonService.initActBusinessæ¹æ³ï¼å°±ä¼æé®é¢ |
| | |
| | | flowTask.setProcDefId(histTask.getProcessDefinitionId()); |
| | | flowTask.setTaskDefKey(histTask.getTaskDefinitionKey()); |
| | | flowTask.setTaskName(histTask.getName()); |
| | | |
| | | flowTask.setDescription(flowMyBusinessService.getByProcessInstanceId(histTask.getProcessInstanceId()).getTitle()); |
| | | // æµç¨å®ä¹ä¿¡æ¯ |
| | | ProcessDefinition pd = repositoryService.createProcessDefinitionQuery() |
| | | .processDefinitionId(histTask.getProcessDefinitionId()) |