From 1becd6d46123723bd2b898fd565b4331fb2cb2d8 Mon Sep 17 00:00:00 2001 From: lyh <liuyuanheng@xalxzn.com> Date: 星期五, 28 二月 2025 15:51:50 +0800 Subject: [PATCH] 新增flow able 代办已办 --- lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/IWorkTaskMapper.java | 10 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/ext/AssignFileStreamExt.java | 2 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IAssignFileStreamService.java | 9 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/entity/FlowMyBusiness.java | 8 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/impl/FlowMyBusinessServiceImpl.java | 23 + lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/FlowMyBusinessMapper.java | 10 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/UserRole.java | 18 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/WorkTaskServiceImpl.java | 20 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/vo/FlowMy.java | 33 + lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/IFlowMyBusinessService.java | 4 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/dto/FlowMyBusinessDto.java | 59 ++ lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/AssignFileStreamMapper.xml | 12 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/HisWorkTask.java | 42 + lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/WorkTaskData.java | 116 +++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/HisWorkTaskServiceImpl.java | 36 + lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/WorkTaskServiceImplVo.java | 38 + lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/dto/FlowTaskDto.java | 3 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/vo/AssignFlowTaskVo.java | 53 ++ lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowDefinitionServiceImpl.java | 15 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/AssignFileRequest.java | 1 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IHisWorkTaskService.java | 16 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/service/FlowCommonService.java | 1 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/PlmCommonUtilsMapper.java | 11 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java | 4 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IPlmCommonUtilsService.java | 10 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowTaskVo.java | 2 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/IHisWorkTaskMapper.java | 17 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/PlmCommonUtilsServiceImpl.java | 21 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/AssignFileStreamMapper.java | 2 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IWorkTaskServiceVo.java | 14 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/AssignFileStreamServiceImpl.java | 144 +++-- lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/WorkTaskMapper.xml | 8 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/entity/ActStatus.java | 5 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/WorkTaskVoMapper.xml | 49 ++ lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/WorkTaskDataVo.java | 128 +++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/HisWorkTaskMapper.xml | 89 ++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IWorkTaskService.java | 11 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml | 17 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/controller/AssignFileStreamFlowController.java | 170 +++++++ lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/controller/AssignFileStreamController.java | 21 lxzn-module-flowable/src/main/java/org/jeecg/FlowableDatabaseConfig.java | 19 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/PlmCommonUtilsMapper.xml | 10 lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/IWorkTaskVoMapper.java | 15 43 files changed, 1,192 insertions(+), 104 deletions(-) diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/controller/AssignFileStreamController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/controller/AssignFileStreamController.java index c989068..7424f7a 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/controller/AssignFileStreamController.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/controller/AssignFileStreamController.java @@ -12,6 +12,7 @@ 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.*; @@ -28,20 +29,15 @@ @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); @@ -108,4 +104,9 @@ 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)); + } } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/controller/AssignFileStreamFlowController.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/controller/AssignFileStreamFlowController.java new file mode 100644 index 0000000..d6dedb0 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/controller/AssignFileStreamFlowController.java @@ -0,0 +1,170 @@ +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(); + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/HisWorkTask.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/HisWorkTask.java new file mode 100644 index 0000000..06188a8 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/HisWorkTask.java @@ -0,0 +1,42 @@ +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锛屼笌鎵ц瀹炰緥琛ㄤ腑鐨処D瀛楁鍏宠仈*/ + @TableField("assignee") + private String assignee; + /**娴佺▼瀹炰緥ID锛屼笌娴佺▼瀹炰緥琛ㄤ腑鐨処D瀛楁鍏宠仈*/ + @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锛屼笌娴佺▼瀹氫箟琛ㄤ腑鐨処D瀛楁鍏宠仈*/ + @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; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/UserRole.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/UserRole.java new file mode 100644 index 0000000..27481c9 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/UserRole.java @@ -0,0 +1,18 @@ +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; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/WorkTaskData.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/WorkTaskData.java new file mode 100644 index 0000000..27fb687 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/WorkTaskData.java @@ -0,0 +1,116 @@ +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锛屼笌鎵ц瀹炰緥琛ㄤ腑鐨処D瀛楁鍏宠仈*/ + @TableField("execution_id_") + private String executionId; + /**娴佺▼瀹炰緥ID锛屼笌娴佺▼瀹炰緥琛ㄤ腑鐨処D瀛楁鍏宠仈*/ + @TableField("proc_inst_id_") + private String procInstId; + /**娴佺▼瀹氫箟ID锛屼笌娴佺▼瀹氫箟琛ㄤ腑鐨処D瀛楁鍏宠仈*/ + @TableField("proc_def_id_") + private String procDefId; + /**浠诲姟鍚嶇О*/ + @TableField("name_") + private String name; + /**浠诲姟瀹氫箟Key锛屼笌娴佺▼瀹氫箟琛ㄤ腑鐨凨EY瀛楁鍏宠仈*/ + @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; + /**鐖朵换鍔D锛岀敤浜庤〃绀轰换鍔$殑灞傜骇鍏崇郴 鏆傛椂鐢ㄤ笉涓�*/ + @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; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/WorkTaskDataVo.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/WorkTaskDataVo.java new file mode 100644 index 0000000..6fffc9d --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/entity/WorkTaskDataVo.java @@ -0,0 +1,128 @@ +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锛屼笌鎵ц瀹炰緥琛ㄤ腑鐨処D瀛楁鍏宠仈*/ +// @TableField("execution_id_") + private String executionId; + /**娴佺▼瀹炰緥ID锛屼笌娴佺▼瀹炰緥琛ㄤ腑鐨処D瀛楁鍏宠仈*/ +// @TableField("proc_inst_id_") + private String procInstId; + /**娴佺▼瀹氫箟ID锛屼笌娴佺▼瀹氫箟琛ㄤ腑鐨処D瀛楁鍏宠仈*/ +// @TableField("proc_def_id_") + private String procDefId; + /**浠诲姟鍚嶇О*/ +// @TableField("name_") + private String name; + /**浠诲姟瀹氫箟Key锛屼笌娴佺▼瀹氫箟琛ㄤ腑鐨凨EY瀛楁鍏宠仈*/ +// @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 = "涓氬姟琛╥d锛岀悊璁哄敮涓�") + 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; +// /**鐖朵换鍔D锛岀敤浜庤〃绀轰换鍔$殑灞傜骇鍏崇郴 鏆傛椂鐢ㄤ笉涓�*/ +// @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; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/ext/AssignFileStreamExt.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/ext/AssignFileStreamExt.java index 642ae9d..31c5295 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/ext/AssignFileStreamExt.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/ext/AssignFileStreamExt.java @@ -10,6 +10,8 @@ private String productName; private String componentName; private String partsName; + private String processName; + private String stepName; private String docName; private String version; private String applyUser; diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/AssignFileStreamMapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/AssignFileStreamMapper.java index e6740ff..c4da9c8 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/AssignFileStreamMapper.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/AssignFileStreamMapper.java @@ -23,4 +23,6 @@ * @return */ IPage<AssignFileStreamExt> findByPage(IPage<AssignFileStreamExt> page, @Param(Constants.WRAPPER) Wrapper<AssignFileStreamExt> wrapper); + + } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/IHisWorkTaskMapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/IHisWorkTaskMapper.java new file mode 100644 index 0000000..c7ffcd7 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/IHisWorkTaskMapper.java @@ -0,0 +1,17 @@ +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); +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/IWorkTaskMapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/IWorkTaskMapper.java new file mode 100644 index 0000000..8a9fb1e --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/IWorkTaskMapper.java @@ -0,0 +1,10 @@ +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(); +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/IWorkTaskVoMapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/IWorkTaskVoMapper.java new file mode 100644 index 0000000..61bca2c --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/IWorkTaskVoMapper.java @@ -0,0 +1,15 @@ +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); +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/PlmCommonUtilsMapper.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/PlmCommonUtilsMapper.java new file mode 100644 index 0000000..85a4d2d --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/PlmCommonUtilsMapper.java @@ -0,0 +1,11 @@ +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(); +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/AssignFileStreamMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/AssignFileStreamMapper.xml index cdbc3cb..d30212b 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/AssignFileStreamMapper.xml +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/AssignFileStreamMapper.xml @@ -22,10 +22,12 @@ , 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 @@ -37,10 +39,14 @@ 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> diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/HisWorkTaskMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/HisWorkTaskMapper.xml new file mode 100644 index 0000000..2ca746e --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/HisWorkTaskMapper.xml @@ -0,0 +1,89 @@ +<?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> diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/PlmCommonUtilsMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/PlmCommonUtilsMapper.xml new file mode 100644 index 0000000..83e1810 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/PlmCommonUtilsMapper.xml @@ -0,0 +1,10 @@ +<?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"> + <!-- 銆恦ue3涓撶敤銆� --> + <select id="queryAllRoleList" resultType="org.jeecg.modules.flow.entity.UserRole"> + select + id,role_name,role_code + from sys_role + </select> +</mapper> diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/WorkTaskMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/WorkTaskMapper.xml new file mode 100644 index 0000000..6b63a89 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/WorkTaskMapper.xml @@ -0,0 +1,8 @@ +<?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> diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/WorkTaskVoMapper.xml b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/WorkTaskVoMapper.xml new file mode 100644 index 0000000..3bfe354 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/mapper/xml/WorkTaskVoMapper.xml @@ -0,0 +1,49 @@ +<?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> diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/AssignFileRequest.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/AssignFileRequest.java index 645da28..0681160 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/AssignFileRequest.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/request/AssignFileRequest.java @@ -9,6 +9,7 @@ @NoArgsConstructor public class AssignFileRequest implements Serializable { private String processId; + private String stepId; private String fileId; private String docId; private String applyReason; diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IAssignFileStreamService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IAssignFileStreamService.java index 6b6e86f..63f6fe3 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IAssignFileStreamService.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IAssignFileStreamService.java @@ -9,6 +9,7 @@ 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> { /** @@ -16,20 +17,20 @@ * @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); /** @@ -46,7 +47,7 @@ * @param stream * @return */ - boolean approveAssignFile(String taskId, String streamId, AssignFileStream stream); + boolean approveAssignFile(AssignFlowTaskVo assignFlowTaskVo); /** * 鎵归噺鎸囨淳鍒拌澶� diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IHisWorkTaskService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IHisWorkTaskService.java new file mode 100644 index 0000000..7cd08f2 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IHisWorkTaskService.java @@ -0,0 +1,16 @@ +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); +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IPlmCommonUtilsService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IPlmCommonUtilsService.java new file mode 100644 index 0000000..4877037 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IPlmCommonUtilsService.java @@ -0,0 +1,10 @@ +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(); +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IWorkTaskService.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IWorkTaskService.java new file mode 100644 index 0000000..b4d0a4a --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IWorkTaskService.java @@ -0,0 +1,11 @@ +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(); + +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IWorkTaskServiceVo.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IWorkTaskServiceVo.java new file mode 100644 index 0000000..2bb0213 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/IWorkTaskServiceVo.java @@ -0,0 +1,14 @@ +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); +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/AssignFileStreamServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/AssignFileStreamServiceImpl.java index 97159f1..b4b380b 100644 --- a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/AssignFileStreamServiceImpl.java +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/AssignFileStreamServiceImpl.java @@ -8,6 +8,7 @@ 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; @@ -34,12 +35,18 @@ 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; @@ -51,8 +58,8 @@ 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"; @@ -101,6 +108,8 @@ private FlowCommonService flowCommonService; @Resource private IFlowDefinitionService flowDefinitionService; + @Autowired + private IFlowTaskService flowTaskService; @Value("${securedoc.serverIp}") private String serverIp; @@ -113,22 +122,16 @@ @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); } @@ -190,7 +193,7 @@ @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); @@ -206,23 +209,19 @@ 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); @@ -268,7 +267,7 @@ handleFileTransfer(mdcEquipment, docFile); handleFileProcessing(docFile, mdcEquipment, whether, localFilePath); synchronizedFlagService.updateFlag(2); - return new ResponseResult(CommonCode.SUCCESS); + return Result.OK("鎿嶄綔鎴愬姛"); } @Override @@ -280,47 +279,45 @@ @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) @@ -328,17 +325,16 @@ 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 { //鎻掑叆鏂囨。鍒拌澶囧彂閫佹枃妗� @@ -355,22 +351,20 @@ } 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) { @@ -394,11 +388,12 @@ 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); } @@ -413,14 +408,14 @@ 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); } @@ -785,4 +780,25 @@ } } + @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"); + } } diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/HisWorkTaskServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/HisWorkTaskServiceImpl.java new file mode 100644 index 0000000..27548c2 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/HisWorkTaskServiceImpl.java @@ -0,0 +1,36 @@ +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); + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/PlmCommonUtilsServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/PlmCommonUtilsServiceImpl.java new file mode 100644 index 0000000..6fa60e7 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/PlmCommonUtilsServiceImpl.java @@ -0,0 +1,21 @@ +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; + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/WorkTaskServiceImpl.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/WorkTaskServiceImpl.java new file mode 100644 index 0000000..e8f2bc6 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/WorkTaskServiceImpl.java @@ -0,0 +1,20 @@ +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(); + } + +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/WorkTaskServiceImplVo.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/WorkTaskServiceImplVo.java new file mode 100644 index 0000000..a66124d --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/service/impl/WorkTaskServiceImplVo.java @@ -0,0 +1,38 @@ +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; + } +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/vo/AssignFlowTaskVo.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/vo/AssignFlowTaskVo.java new file mode 100644 index 0000000..a925647 --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/vo/AssignFlowTaskVo.java @@ -0,0 +1,53 @@ +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; +} diff --git a/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/vo/FlowMy.java b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/vo/FlowMy.java new file mode 100644 index 0000000..b459dfb --- /dev/null +++ b/lxzn-module-dnc/src/main/java/org/jeecg/modules/flow/vo/FlowMy.java @@ -0,0 +1,33 @@ +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; +} diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/FlowableDatabaseConfig.java b/lxzn-module-flowable/src/main/java/org/jeecg/FlowableDatabaseConfig.java new file mode 100644 index 0000000..f67d5a9 --- /dev/null +++ b/lxzn-module-flowable/src/main/java/org/jeecg/FlowableDatabaseConfig.java @@ -0,0 +1,19 @@ +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(); + } +} diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/entity/FlowMyBusinessDto.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/dto/FlowMyBusinessDto.java similarity index 71% rename from lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/entity/FlowMyBusinessDto.java rename to lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/dto/FlowMyBusinessDto.java index f0b48c5..a15c0b1 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/entity/FlowMyBusinessDto.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/dto/FlowMyBusinessDto.java @@ -1,14 +1,21 @@ -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; /** @@ -18,83 +25,105 @@ * @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 涓�涓猭ey浼氭湁澶氫釜鐗堟湰鐨刬d*/ - @TableField(exist = false) @Excel(name = "娴佺▼瀹氫箟key 涓�涓猭ey浼氭湁澶氫釜鐗堟湰鐨刬d", width = 15) @ApiModelProperty(value = "娴佺▼瀹氫箟key 涓�涓猭ey浼氭湁澶氫釜鐗堟湰鐨刬d") 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; /**涓氬姟琛╥d锛岀悊璁哄敮涓�*/ - @TableField(exist = false) @Excel(name = "涓氬姟琛╥d锛岀悊璁哄敮涓�", width = 15) @ApiModelProperty(value = "涓氬姟琛╥d锛岀悊璁哄敮涓�") private String dataId; /**涓氬姟绫诲悕锛岀敤鏉ヨ幏鍙杝pring瀹瑰櫒閲岀殑鏈嶅姟瀵硅薄*/ - @TableField(exist = false) @Excel(name = "涓氬姟绫诲悕锛岀敤鏉ヨ幏鍙杝pring瀹瑰櫒閲岀殑鏈嶅姟瀵硅薄", width = 15) @ApiModelProperty(value = "涓氬姟绫诲悕锛岀敤鏉ヨ幏鍙杝pring瀹瑰櫒閲岀殑鏈嶅姟瀵硅薄") 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; /**褰撳墠鐨勮妭鐐瑰疄渚嬩笂鐨処d*/ - @TableField(exist = false) @Excel(name = "褰撳墠鐨勮妭鐐笽d", width = 15) @ApiModelProperty(value = "褰撳墠鐨勮妭鐐笽d") private String taskId; /**褰撳墠鐨勮妭鐐�*/ - @TableField(exist = false) @Excel(name = "褰撳墠鐨勮妭鐐�", width = 15) @ApiModelProperty(value = "褰撳墠鐨勮妭鐐�") private String taskName; /**褰撳墠鐨勮妭鐐瑰畾涔変笂鐨処d*/ - @TableField(exist = false) @Excel(name = "褰撳墠鐨勮妭鐐�", width = 15) @ApiModelProperty(value = "褰撳墠鐨勮妭鐐�") private String taskNameId; /**褰撳墠鐨勮妭鐐瑰彲浠ュ鐞嗙殑鐢ㄦ埛鍚嶏紝涓簎sername鐨勯泦鍚坖son瀛楃涓�*/ - @TableField(exist = false) @Excel(name = "褰撳墠鐨勮妭鐐瑰彲浠ュ鐞嗙殑鐢ㄦ埛鍚�", width = 15) @ApiModelProperty(value = "褰撳墠鐨勮妭鐐瑰彲浠ュ鐞嗙殑鐢ㄦ埛鍚�") + @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") private String todoUsers; /**澶勭悊杩囩殑浜�,涓簎sername鐨勯泦鍚坖son瀛楃涓�*/ - @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; } diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/entity/FlowMyBusiness.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/entity/FlowMyBusiness.java index 1e8bb74..da88ca8 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/entity/FlowMyBusiness.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/entity/FlowMyBusiness.java @@ -10,6 +10,7 @@ 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; @@ -78,6 +79,7 @@ /**鐢宠浜�*/ @Excel(name = "鐢宠浜�", width = 15) @ApiModelProperty(value = "鐢宠浜�") + @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") private String proposer; /**娴佺▼鐘舵�佽鏄庯紝鏈夛細鍚姩 鎾ゅ洖 椹冲洖 瀹℃壒涓� 瀹℃壒閫氳繃 瀹℃壒寮傚父*/ @Excel(name = "娴佺▼鐘舵�佽鏄庯紝鏈夛細鍚姩 鎾ゅ洖 椹冲洖 瀹℃壒涓� 瀹℃壒閫氳繃 瀹℃壒寮傚父", width = 15) @@ -98,10 +100,12 @@ /**褰撳墠鐨勮妭鐐瑰彲浠ュ鐞嗙殑鐢ㄦ埛鍚嶏紝涓簎sername鐨勯泦鍚坖son瀛楃涓�*/ @Excel(name = "褰撳墠鐨勮妭鐐瑰彲浠ュ鐞嗙殑鐢ㄦ埛鍚�", width = 15) @ApiModelProperty(value = "褰撳墠鐨勮妭鐐瑰彲浠ュ鐞嗙殑鐢ㄦ埛鍚�") + @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") private String todoUsers; /**澶勭悊杩囩殑浜�,涓簎sername鐨勯泦鍚坖son瀛楃涓�*/ @Excel(name = "澶勭悊杩囩殑浜�", width = 15) @ApiModelProperty(value = "澶勭悊杩囩殑浜�") + @Dict(dictTable = "sys_user", dicCode = "username", dicText = "realname") private String doneUsers; /**褰撳墠浠诲姟鑺傜偣鐨勪紭鍏堢骇 娴佺▼瀹氫箟鐨勬椂鍊欐墍濉�*/ @Excel(name = "褰撳墠浠诲姟鑺傜偣鐨勪紭鍏堢骇 娴佺▼瀹氫箟鐨勬椂鍊欐墍濉�", width = 15) @@ -110,4 +114,8 @@ /**娴佺▼鍙橀噺*/ @TableField(exist = false) private Map<String,Object> values; + + /**褰撳墠鑺傜偣鐨勭姸鎬�*/ + @TableField(exist = false) + private String taskStatus; } diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/FlowMyBusinessMapper.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/FlowMyBusinessMapper.java index 8aa4b88..93b59ad 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/FlowMyBusinessMapper.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/FlowMyBusinessMapper.java @@ -1,6 +1,9 @@ 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; /** @@ -11,4 +14,11 @@ */ public interface FlowMyBusinessMapper extends BaseMapper<FlowMyBusiness> { + /** + * 娴佺▼鎬诲彴璐� + * @param flowMyBusinessDto + * @return + */ + IPage<FlowMyBusinessDto> findPageList(Page<FlowMyBusiness> page, FlowMyBusinessDto flowMyBusinessDto); + } diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml index 78b00c1..46ca3a5 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/mapper/xml/FlowMyBusinessMapper.xml @@ -2,4 +2,21 @@ <!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> diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/IFlowMyBusinessService.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/IFlowMyBusinessService.java index 298fdcc..0ee5d72 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/IFlowMyBusinessService.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/IFlowMyBusinessService.java @@ -1,6 +1,9 @@ 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; /** @@ -11,4 +14,5 @@ */ public interface IFlowMyBusinessService extends IService<FlowMyBusiness> { + IPage<FlowMyBusinessDto> findPageList(Page page, FlowMyBusinessDto flowMyBusinessDto); } diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/impl/FlowMyBusinessServiceImpl.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/impl/FlowMyBusinessServiceImpl.java index 54b3646..8dbf02e 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/impl/FlowMyBusinessServiceImpl.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/business/service/impl/FlowMyBusinessServiceImpl.java @@ -1,7 +1,10 @@ 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; @@ -24,4 +27,24 @@ FlowMyBusiness business = this.getOne(flowMyBusinessLambdaQueryWrapper); return business; } + + + public FlowMyBusiness getByProcessInstanceId(String processInstanceId) { + LambdaQueryWrapper<FlowMyBusiness> flowMyBusinessLambdaQueryWrapper = new LambdaQueryWrapper<>(); + flowMyBusinessLambdaQueryWrapper.eq(FlowMyBusiness::getProcessInstanceId,processInstanceId) + ; + //濡傛灉淇濆瓨鏁版嵁鍓嶆湭璋冪敤蹇呰皟鐨凢lowCommonService.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); + } } diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/entity/ActStatus.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/entity/ActStatus.java index 51f7426..ab7368c 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/entity/ActStatus.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/entity/ActStatus.java @@ -8,10 +8,9 @@ public interface ActStatus { //鍚姩 鎾ゅ洖 椹冲洖 瀹℃壒涓� 瀹℃壒閫氳繃 瀹℃壒寮傚父 //鏈祦绋嬩笉搴旀湁鍚姩鐘舵�侊紝鍚姩鍗宠繘鍏ュ鎵癸紝绗竴涓妭鐐瑰氨鏄彂璧蜂汉鑺傜偣锛屾湭鏂逛究涓氬姟鍖哄垎锛岃瀹氫负鈥滃惎鍔ㄢ�濈姸鎬� - String start = "鍚姩"; + String start = "鎻愪氦鐢宠"; String recall = "鎾ゅ洖"; String reject = "椹冲洖"; String doing = "瀹℃壒涓�"; - String pass = "瀹℃壒閫氳繃"; - String err = "瀹℃壒寮傚父"; + String pass = "瀹℃壒"; } diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/service/FlowCommonService.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/service/FlowCommonService.java index 90af8d8..d52277e 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/service/FlowCommonService.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/apithird/service/FlowCommonService.java @@ -3,6 +3,7 @@ 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; diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/dto/FlowTaskDto.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/dto/FlowTaskDto.java index 8202e42..4fdec9a 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/dto/FlowTaskDto.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/dto/FlowTaskDto.java @@ -30,6 +30,9 @@ @ApiModelProperty("浠诲姟鎵ц浜篒d") private String assigneeId; + @ApiModelProperty("浠诲姟鎻忚堪") + private String description; + @ApiModelProperty("閮ㄩ棬鍚嶇О") private String deptName; diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowTaskVo.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowTaskVo.java index fc68a63..b2e1b06 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowTaskVo.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/domain/vo/FlowTaskVo.java @@ -45,4 +45,6 @@ private List<String> candidateGroups; private String xiugaiId; + + private Integer status; } diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowDefinitionServiceImpl.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowDefinitionServiceImpl.java index 5add0ad..cdfca7e 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowDefinitionServiceImpl.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowDefinitionServiceImpl.java @@ -9,8 +9,10 @@ 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; @@ -237,11 +239,12 @@ * @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鍚姩娴佺▼瀹炰緥 @@ -252,7 +255,7 @@ */ @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(); @@ -268,9 +271,15 @@ 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); } //璁剧疆鎵�鏈夌敵璇蜂汉 diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java index 543bdc5..3fe1de0 100644 --- a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java +++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/service/impl/FlowTaskServiceImpl.java @@ -105,7 +105,7 @@ taskService.setAssignee(taskVo.getTaskId(), loginUser.getUsername()); //taskService.complete(taskVo.getTaskId(), taskVo.getValues()); } - /*======================瀹℃壒閫氳繃 鍥炶皟浠ュ強鍏抽敭鏁版嵁淇濆瓨======================*/ + /*======================瀹℃壒缁撴潫 鍥炶皟浠ュ強鍏抽敭鏁版嵁淇濆瓨======================*/ //涓氬姟鏁版嵁id String dataId = taskVo.getDataId(); //濡傛灉淇濆瓨鏁版嵁鍓嶆湭璋冪敤蹇呰皟鐨凢lowCommonService.initActBusiness鏂规硶锛屽氨浼氭湁闂 @@ -992,7 +992,7 @@ 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()) -- Gitblit v1.9.3