From 23855599412c4d61b38d78f0f3abd3430a48b5b1 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期三, 25 六月 2025 11:51:38 +0800
Subject: [PATCH] Merge branch 'mdc_hyjs_master'

---
 lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/controller/AssignStreamFlowController.java |  175 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 175 insertions(+), 0 deletions(-)

diff --git a/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/controller/AssignStreamFlowController.java b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/controller/AssignStreamFlowController.java
new file mode 100644
index 0000000..d41ab56
--- /dev/null
+++ b/lxzn-module-flowable/src/main/java/org/jeecg/modules/flowable/controller/AssignStreamFlowController.java
@@ -0,0 +1,175 @@
+package org.jeecg.modules.flowable.controller;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.fastjson.parser.Feature;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.databind.ObjectMapper;
+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.HistoryService;
+import org.flowable.engine.ProcessEngine;
+import org.flowable.engine.ProcessEngineConfiguration;
+import org.flowable.engine.RepositoryService;
+import org.flowable.engine.history.HistoricActivityInstance;
+import org.flowable.image.ProcessDiagramGenerator;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.TranslateDictTextUtils;
+import org.jeecg.modules.flowable.apithird.business.dto.FlowMyBusinessDto;
+import org.jeecg.modules.flowable.apithird.business.service.impl.FlowMyBusinessServiceImpl;
+import org.jeecg.modules.flowable.domain.dto.FlowTaskDto;
+import org.jeecg.modules.flowable.domain.vo.FlowHistoricalVo;
+import org.jeecg.modules.flowable.domain.vo.FlowMy;
+import org.jeecg.modules.flowable.domain.vo.WorkTaskDataVo;
+import org.jeecg.modules.flowable.service.IFlowTaskService;
+import org.jeecg.modules.flowable.service.IHisWorkTaskService;
+import org.jeecg.modules.flowable.service.IWorkTaskServiceVo;
+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.Collections;
+import java.util.List;
+
+@Api(tags = "宸ヤ綔娴侀�氱敤涓氬姟鎺ュ彛")
+@RestController
+@RequestMapping("assign/flow")
+@Slf4j
+public class AssignStreamFlowController {
+    @Autowired
+    FlowMyBusinessServiceImpl flowMyBusinessService;
+    @Autowired
+    IFlowTaskService flowTaskService;
+    @Autowired
+    IWorkTaskServiceVo workTaskServicevo;
+    @Autowired
+    IHisWorkTaskService hisWorkTaskService;
+    @Autowired
+    private RepositoryService repositoryService;
+    @Autowired
+    private HistoryService historyService;
+    @Autowired
+    private ProcessEngine processEngine;
+    @Autowired
+    private ObjectMapper objectMapper;
+    @Autowired
+    private TranslateDictTextUtils translateDictTextUtils;
+
+    @ApiOperation(value = "鑾峰彇鎬诲彴璐�", response = FlowTaskDto.class)
+    @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 page = new Page(pageNo, pageSize);
+        IPage<FlowMyBusinessDto> pageList = flowMyBusinessService.getPageList(page, flowMyBusinessDto);
+        return Result.OK(pageList);
+    }
+
+    @ApiOperation(value = "閫氳繃浼犲叆TaskIds鍒ゆ柇鏄惁鍦ㄥ悓涓�鑺傜偣")
+    @GetMapping(value = "/isSameNode")
+    public Result isSameNode(@RequestParam(name = "taskIds") String taskIds) {
+        return flowTaskService.isSameNode(taskIds);
+    }
+
+    @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,
+                                  FlowMyBusinessDto flowMyBusinessDto) {
+        return flowTaskService.finishedList(pageNo, pageSize,flowMyBusinessDto);
+    }
+
+
+    @ApiOperation(value = "鑾峰彇宸ヤ綔娴佸巻鍙蹭换鍔�", response = FlowTaskDto.class)
+    @GetMapping(value = "/queryHisTaskList")
+    public Result<?> queryHisTaskList(@RequestParam(name = "procInstId") String procInstId) {
+        List<FlowHistoricalVo> flowHistoricalVos = hisWorkTaskService.queryHisTaskByProcInstId(procInstId);
+        if(CollectionUtil.isEmpty(flowHistoricalVos)) {
+            return Result.OK(Collections.emptyList());
+        }
+        List<JSONObject> items = new ArrayList<>();
+        try {
+            for(FlowHistoricalVo vo : flowHistoricalVos) {
+                String json = objectMapper.writeValueAsString(vo);
+                JSONObject item = JSONObject.parseObject(json, Feature.OrderedField);
+                translateDictTextUtils.translateField("assignee", vo.getAssignee(), item, "sys_user,realname,username");
+                items.add(item);
+            }
+            return Result.OK(items);
+        }catch (Exception e) {
+            return Result.error("鏁版嵁杞瘧澶辫触锛�");
+        }
+    }
+
+    @ApiOperation(value = "瀹℃壒浠诲姟-鏌ョ湅娴佺▼鍥�")
+    @GetMapping("/diagramView")
+    public void showImages(@RequestParam(name = "processDefinitionId") String processDefinitionId,
+                           @RequestParam(name = "processInstanceId") String processInstanceId,
+                           @RequestParam(name = "TaskDefinitionKey") String TaskDefinitionKey,
+                           HttpServletResponse response) throws IOException {
+        BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
+        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(TaskDefinitionKey);
+        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();
+    }
+}

--
Gitblit v1.9.3