From 34981c30a78e8bbd7791131059a9210f9928b62c Mon Sep 17 00:00:00 2001
From: 刘光辉 <347230014@qq.com>
Date: 星期四, 17 九月 2026 09:24:09 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master' into master

---
 jnpf-flowable/jnpf-flowable-controller/src/main/java/jnpf/flowable/controller/WorkFlowApiController.java |  267 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 267 insertions(+), 0 deletions(-)

diff --git a/jnpf-flowable/jnpf-flowable-controller/src/main/java/jnpf/flowable/controller/WorkFlowApiController.java b/jnpf-flowable/jnpf-flowable-controller/src/main/java/jnpf/flowable/controller/WorkFlowApiController.java
new file mode 100644
index 0000000..bed3ea6
--- /dev/null
+++ b/jnpf-flowable/jnpf-flowable-controller/src/main/java/jnpf/flowable/controller/WorkFlowApiController.java
@@ -0,0 +1,267 @@
+package jnpf.flowable.controller;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.common.collect.ImmutableList;
+import jnpf.base.ActionResult;
+import jnpf.constant.PermissionConst;
+import jnpf.flowable.WorkFlowApi;
+import jnpf.flowable.entity.*;
+import jnpf.flowable.enums.NodeEnum;
+import jnpf.flowable.enums.OperatorStateEnum;
+import jnpf.flowable.mapper.*;
+import jnpf.flowable.model.task.FileModel;
+import jnpf.flowable.model.templatenode.nodejson.FileConfig;
+import jnpf.flowable.model.templatenode.nodejson.NodeModel;
+import jnpf.flowable.model.util.FlowNature;
+import jnpf.flowable.util.TaskUtil;
+import jnpf.util.DateUtil;
+import jnpf.util.JsonUtil;
+import jnpf.util.StringUtil;
+import lombok.RequiredArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@RestController
+@RequestMapping("/workFlow")
+@RequiredArgsConstructor
+public class WorkFlowApiController implements WorkFlowApi {
+
+
+
+    private final  TaskUtil taskUtil;
+
+
+    private final  TaskMapper taskMapper;
+
+    private final  TemplateNodeMapper templateNodeMapper;
+
+    private final  TemplateJsonMapper templateJsonMapper;
+
+    private final  TemplateMapper templateMapper;
+
+    private final  RecordMapper recordMapper;
+
+    private final  LaunchUserMapper launchUserMapper;
+
+    private final  OperatorMapper operatorMapper;
+
+    // 鑾峰彇褰掓。淇℃伅
+    @Override
+    @GetMapping("/getFileModel")
+    public FileModel getFileModel(@RequestParam("taskId") String taskId) {
+        TaskEntity taskEntity = taskMapper.selectById(taskId);
+        if (null == taskEntity) {
+            return new FileModel();
+        }
+        FileModel model = new FileModel();
+
+        List<TemplateNodeEntity> nodeEntityList = templateNodeMapper.getList(taskEntity.getFlowId());
+        TemplateNodeEntity globalEntity = nodeEntityList.stream().filter(e -> StringUtils.equals(NodeEnum.GLOBAL.getType(), e.getNodeType())).findFirst().orElse(new TemplateNodeEntity());
+        NodeModel global = JsonUtil.getJsonToBean(globalEntity.getNodeJson(), NodeModel.class);
+        if (null != global) {
+            FileConfig fileConfig = global.getFileConfig();
+            // 褰掓。璺緞
+            model.setParentId(fileConfig.getParentId());
+
+            String userId = taskEntity.getCreatorUserId();
+            if (fileConfig.getPermissionType().equals(FlowNature.FLOW_ALL)) {
+                // 鍒涘缓浜�
+                model.setUserId(userId);
+                // 鍒嗕韩浜�
+                List<String> list = taskUtil.getListOfFile(taskId);
+                List<String> userList = new ArrayList<>();
+                for (String id : list) {
+                    if (!id.equals(userId)) {
+                        userList.add(id + "--" + PermissionConst.USER);
+                    }
+                }
+                model.setUserList(userList);
+            } else if (fileConfig.getPermissionType().equals(FlowNature.FLOW_LAST)) {
+                // 鏈�鍚庤妭鐐瑰鎵逛汉
+                List<String> list = taskUtil.getListOfLast(taskId);
+                if (CollUtil.isNotEmpty(list)) {
+                    model.setUserId(list.get(0));
+                    list.remove(0);
+                    if (CollUtil.isNotEmpty(list)) {
+                        List<String> userList = new ArrayList<>();
+                        for (String id : list) {
+                            userList.add(id + "--" + PermissionConst.USER);
+                        }
+                        model.setUserList(userList);
+                    }
+                } else {
+                    model.setUserId(userId);
+                }
+            } else {
+                // 鍒涘缓浜�
+                model.setUserId(userId);
+            }
+        }
+
+        // 鏂囦欢鍚嶇О
+        String filename = taskEntity.getFullName();
+        String datetime;
+        if (null != taskEntity.getEndTime()) {
+            datetime = DateUtil.dateToString(taskEntity.getEndTime(), "yyyyMMddHHmmss");
+        } else {
+            datetime = DateUtil.dateToString(new Date(), "yyyyMMddHHmmss");
+        }
+        filename += "-" + datetime;
+        model.setFilename(filename + ".pdf");
+
+        return model;
+    }
+
+    @Override
+    @GetMapping("/getInfoSubmitById")
+    public TaskEntity getInfoSubmit(@RequestParam("id") String id) {
+        return taskMapper.getInfoSubmit(id,
+                TaskEntity::getId,
+                TaskEntity::getParentId,
+                TaskEntity::getTemplateId,
+                TaskEntity::getFullName,
+                TaskEntity::getStatus,
+                TaskEntity::getEndTime);
+    }
+
+    @Override
+    @PostMapping("/getInfoSubmitByIds")
+    public List<TaskEntity> getInfosSubmit(@RequestBody String[] ids) {
+        return taskMapper.getInfosSubmit(ids, TaskEntity::getStatus, TaskEntity::getId);
+    }
+
+    @Override
+    @PostMapping("/delete")
+    public ActionResult delete(@RequestBody TaskEntity taskEntity) {
+        try {
+            taskUtil.delete(ImmutableList.of(taskEntity.getId()), false);
+        } catch (Exception e) {
+            return ActionResult.fail(e.getMessage());
+        }
+        return ActionResult.success();
+    }
+
+    @Override
+    @PostMapping("/updateIsFile")
+    public void updateIsFile(@RequestParam("taskId") String taskId) {
+        TaskEntity taskEntity = taskMapper.selectById(taskId);
+        if (null != taskEntity) {
+            taskEntity.setIsFile(1);
+            taskMapper.updateById(taskEntity);
+        }
+    }
+
+    @Override
+    @GetMapping("/getRecordList")
+    public List<RecordEntity> getRecordList(@RequestParam("taskId") String taskId) {
+        return recordMapper.getList(taskId);
+    }
+
+
+    @Override
+    @GetMapping("/getFlowIdsByTemplateId")
+    public List<String> getFlowIdsByTemplateId(@RequestParam("templateId") String templateId) {
+        List<TemplateJsonEntity> list = templateJsonMapper.getList(templateId);
+        return list.stream().map(TemplateJsonEntity::getId).distinct().collect(Collectors.toList());
+    }
+
+    @Override
+    @GetMapping("/getTemplateByVersionId")
+    public String getTemplateByVersionId(@RequestParam("flowId") String flowId) {
+        String templateId = "";
+        TemplateJsonEntity byId = templateJsonMapper.selectById(flowId);
+        if (byId != null) {
+            templateId = byId.getTemplateId();
+        }
+        return templateId;
+    }
+
+
+    @Override
+    @GetMapping("/getFlowIdsByTemplate")
+    public List<TemplateJsonEntity> getFlowIdsByTemplate(@RequestParam("templateId")String templateId) {
+        return templateJsonMapper.getList(templateId);
+    }
+
+    @Override
+    @GetMapping("/getFormList")
+    public List<String> getFormList() {
+        List<String> resList = new ArrayList<>();
+        List<TemplateJsonEntity> list = templateJsonMapper.getListOfEnable();
+        if (CollUtil.isNotEmpty(list)) {
+            List<String> flowIds = list.stream().map(TemplateJsonEntity::getId).distinct().collect(Collectors.toList());
+            List<TemplateNodeEntity> startNodeList = templateNodeMapper.getList(flowIds, NodeEnum.START.getType());
+            resList = startNodeList.stream().map(TemplateNodeEntity::getFormId).distinct().collect(Collectors.toList());
+        }
+        return resList;
+    }
+
+    @Override
+    @GetMapping("/getStepList")
+    public List<String> getStepList() {
+        QueryWrapper<LaunchUserEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(LaunchUserEntity::getType, FlowNature.STEP_INITIATION);
+        List<LaunchUserEntity> list = launchUserMapper.selectList(queryWrapper);
+        List<String> stepList = new ArrayList<>();
+        for (LaunchUserEntity entity : list) {
+            String organizeId = entity.getOrganizeId();
+            if (StringUtil.isNotEmpty(organizeId)) {
+                stepList.addAll(Arrays.asList(organizeId.split(",")));
+            }
+            String positionId = entity.getPositionId();
+            if (StringUtil.isNotEmpty(positionId)) {
+                stepList.addAll(Arrays.asList(positionId.split(",")));
+            }
+        }
+        return stepList;
+    }
+
+    @Override
+    @GetMapping("/getFlowFormMap")
+    public Map<String, String> getFlowFormMap() {
+        Map<String, String> map = new HashMap<>();
+        List<TemplateJsonEntity> listOfEnable = templateJsonMapper.getListOfEnable();
+        List<TemplateNodeEntity> listStart = templateNodeMapper.getListStart(listOfEnable);
+        List<String> collect = listStart.stream().map(TemplateNodeEntity::getFlowId).collect(Collectors.toList());
+        if (ObjectUtil.isNotEmpty(collect)) {
+            QueryWrapper<TemplateEntity> queryWrapper = new QueryWrapper<>();
+            queryWrapper.lambda().select(TemplateEntity::getId, TemplateEntity::getFlowId);
+            queryWrapper.lambda().in(TemplateEntity::getFlowId, collect);
+            Map<String, String> flowTempMap = templateMapper.selectList(queryWrapper).stream().collect(Collectors.toMap(TemplateEntity::getFlowId, TemplateEntity::getId));
+            for (TemplateNodeEntity templateNodeEntity : listStart) {
+                if (ObjectUtil.isNotEmpty(flowTempMap.get(templateNodeEntity.getFlowId()))) {
+                    map.put(flowTempMap.get(templateNodeEntity.getFlowId()), templateNodeEntity.getFormId());
+                }
+            }
+        }
+        return map;
+    }
+
+
+    @Override
+    @GetMapping("/checkTodo")
+    public boolean checkSign() {
+        QueryWrapper<OperatorEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(OperatorEntity::getCompletion, FlowNature.NORMAL)
+                .ne(OperatorEntity::getStatus, OperatorStateEnum.FUTILITY.getCode())
+                .isNull(OperatorEntity::getSignTime);
+        long count = operatorMapper.selectCount(queryWrapper);
+        return count > 0;
+    }
+
+    @Override
+    @GetMapping("/checkSign")
+    public boolean checkTodo() {
+        QueryWrapper<OperatorEntity> queryWrapper = new QueryWrapper<>();
+        queryWrapper.lambda().eq(OperatorEntity::getCompletion, FlowNature.NORMAL)
+                .ne(OperatorEntity::getStatus, OperatorStateEnum.FUTILITY.getCode())
+                .isNotNull(OperatorEntity::getSignTime).isNull(OperatorEntity::getStartHandleTime);
+        long count = operatorMapper.selectCount(queryWrapper);
+        return count > 0;
+    }
+}

--
Gitblit v1.8.0