From 1fe1ac0e09132e0147e48007986be235e4130aa1 Mon Sep 17 00:00:00 2001
From: zhangmei <645025773@qq.com>
Date: 星期五, 28 二月 2025 12:54:12 +0800
Subject: [PATCH] 分页查询更改

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java |  174 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 159 insertions(+), 15 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java
index b144e21..3597645 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java
@@ -31,6 +31,7 @@
 import com.ruoyi.system.mapper.StateProcessTemplateMapper;
 import com.ruoyi.system.model.*;
 import com.ruoyi.system.service.*;
+import com.ruoyi.system.vo.ProcessDetailVO;
 import com.ruoyi.system.vo.ProcessTaskListVO;
 import lombok.AllArgsConstructor;
 import org.apache.commons.io.IOUtils;
@@ -71,6 +72,8 @@
     private FlwHisTaskActorMapper flwHisTaskActorMapper;
     @Autowired
     private ISysUserService sysUserService;
+    @Autowired
+    private TContractService contractService;
 
     /**
      * 流程模版分页
@@ -141,7 +144,7 @@
 
         // 更新模板, version+1
         StateProcessTemplate processTemplate = new StateProcessTemplate();
-        processTemplate.setId(IdUtils.simpleUUID());
+        processTemplate.setId(processUpdateBO.getId());
         processTemplate.setWorkFlowId(deployId);
         processTemplate.setWorkflowVersion(flwProcess.getProcessVersion());
         processTemplate.setTemplateName(processUpdateBO.getTemplateName());
@@ -152,20 +155,20 @@
         processTemplate.setUpdateBy(SecurityUtils.getLoginUser().getUsername());
         processTemplate.setUpdateTime(LocalDateTime.now());
         processTemplate.setTemplateVersion(temp.getTemplateVersion() + 1);
-        this.save(processTemplate);
+        return this.updateById(processTemplate);
 
         //查询版本是否绑定流程,更新
-        LambdaQueryWrapper<StateProcessModule> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper.eq(StateProcessModule::getTemplateId, processUpdateBO.getId());
-        List<StateProcessModule> stateProcessModules = stateProcessModuleService.list(queryWrapper);
-        if (Objects.isNull(stateProcessModules) || stateProcessModules.isEmpty()) {
-            return true;
-        }
-        for (StateProcessModule stateProcessModule : stateProcessModules) {
-            stateProcessModule.setTemplateId(processTemplate.getId());
-            stateProcessModule.setTemplateName(processTemplate.getTemplateName());
-        }
-        return stateProcessModuleService.updateBatchById(stateProcessModules);
+//        LambdaQueryWrapper<StateProcessModule> queryWrapper = new LambdaQueryWrapper<>();
+//        queryWrapper.eq(StateProcessModule::getTemplateId, processUpdateBO.getId());
+//        List<StateProcessModule> stateProcessModules = stateProcessModuleService.list(queryWrapper);
+//        if (Objects.isNull(stateProcessModules) || stateProcessModules.isEmpty()) {
+//            return true;
+//        }
+//        for (StateProcessModule stateProcessModule : stateProcessModules) {
+//            stateProcessModule.setTemplateId(processTemplate.getId());
+//            stateProcessModule.setTemplateName(processTemplate.getTemplateName());
+//        }
+//        return stateProcessModuleService.updateBatchById(stateProcessModules);
     }
 
     /**
@@ -249,7 +252,9 @@
         //监听器参数补全
         processStartBO.getVariable().put("category", processStartBO.getCategory());
         // 开启流程
-        flowLongEngine.startInstanceById(flwProcess.getId(), creator, processStartBO.getVariable()).ifPresent(instance -> {
+        Optional<FlwInstance> flwInstanceOptional = flowLongEngine.startInstanceById(flwProcess.getId(), creator, processStartBO.getVariable());
+        if(flwInstanceOptional.isPresent()){
+            FlwInstance instance = flwInstanceOptional.get();
             //存储任务中心信息
             StateTaskCenter stateTaskCenter = new StateTaskCenter();
             stateTaskCenter.setId(IdUtils.simpleUUID());
@@ -260,6 +265,7 @@
             stateTaskCenter.setRemark(processStartBO.getRemark());
             stateTaskCenter.setCreateBy(loginUser.getUser().getNickName());
             stateTaskCenter.setVariable(JSONUtil.toJsonStr(processStartBO.getVariable()));
+            stateTaskCenter.setProjectId(JSONObject.parseObject(JSONUtil.toJsonStr(processStartBO.getVariable())).getString("projectId"));
             stateTaskCenterService.save(stateTaskCenter);
 
             // action记录
@@ -279,7 +285,7 @@
             //保存version
             stateProcessExtInstance.setProcessVersion(flwProcess.getProcessVersion());
             stateProcessExtInstanceService.save(stateProcessExtInstance);
-        });
+        }
         return true;
     }
 
@@ -350,6 +356,14 @@
 
         //转换类
         List<ProcessTaskListVO> processTaskListVOS = BeanUtil.copyToList(taskCenters.getRecords(), ProcessTaskListVO.class);
+
+        // 查询合同信息
+        for (ProcessTaskListVO processTaskListVO : processTaskListVOS) {
+            // 查询合同信息
+            TContract contract = contractService.getById(JSONObject.parseObject(processTaskListVO.getVariable()).getString("projectId"));
+            processTaskListVO.setContract(contract);
+        }
+
         pageInfo.setRecords(processTaskListVOS);
 
         List<String> updateUserId = processTaskListVOS.stream().map(ProcessTaskListVO::getCreateBy).collect(Collectors.toList());
@@ -437,6 +451,14 @@
         PageInfo<StateTaskCenter> taskCenters = stateTaskCenterService.page(pageInfo,stateTaskQuery);
         //转换类
         List<ProcessTaskListVO> processTaskListVOS = BeanUtil.copyToList(taskCenters.getRecords(), ProcessTaskListVO.class);
+
+        // 查询合同信息
+        for (ProcessTaskListVO processTaskListVO : processTaskListVOS) {
+            // 查询合同信息
+            TContract contract = contractService.getById(JSONObject.parseObject(processTaskListVO.getVariable()).getString("projectId"));
+            processTaskListVO.setContract(contract);
+        }
+
         pageInfo.setRecords(processTaskListVOS);
 
         if (ObjectUtil.isEmpty(processTaskListVOS)) {
@@ -630,6 +652,128 @@
         stateProcessInstanceActionService.save(record);
     }
 
+    @Override
+    public PageInfo<ProcessTaskListVO> dealAndWaitTaskPage(ProcessTaskListBO processTaskListBO) {
+        //获取当前登录用户信息
+        Long userId = SecurityUtils.getLoginUser().getUserId();
+
+        //或签时查询其他审批人是否通过(不能省略),比如 同一任务需要A,B审核,A通过了,B不用在审核了,在历史表查询A的审核记录
+        LambdaQueryWrapper<FlwHisInstance> lambdaQueryWrapper = new LambdaQueryWrapper<>();
+        lambdaQueryWrapper.orderByDesc(FlowEntity::getCreateTime);
+        //待审核,通过,拒绝
+        lambdaQueryWrapper.in(FlwHisInstance::getInstanceState, 0,1,2);
+
+        List<Long> flwHisInstances = flwHisInstanceMapper.selectList(lambdaQueryWrapper).stream()
+                .map(FlwHisInstance::getId).collect(Collectors.toList());
+        if (ObjectUtil.isEmpty(flwHisInstances)) {
+            return new PageInfo<>();
+        }
+
+        //查询任务参与者
+        LambdaQueryWrapper<FlwTaskActor> query = new LambdaQueryWrapper<>();
+        query.and(qy -> qy.eq(FlwTaskActor::getActorId, userId)
+                //0指定用户
+                .eq(FlwTaskActor::getActorType, 0)
+                .or().in(FlwTaskActor::getActorId, userId)
+                //1指定角色
+                .eq(FlwTaskActor::getActorType, 1));
+        if (ObjectUtil.isNotNull(processTaskListBO) && ObjectUtil.isNotNull(flwHisInstances)) {
+            // 添加条件
+            query = query.in(FlwTaskActor::getInstanceId, flwHisInstances);
+        }
+        List<FlwTaskActor> flwTaskActorPage = flwTaskActorMapper.selectList(query);
+        if (ObjectUtil.isEmpty(flwTaskActorPage)) {
+            return new PageInfo<>();
+        }
+        //查询任务信息
+        List<FlwTask> flwTasks = flwTaskMapper.selectList(Wrappers.<FlwTask>lambdaQuery()
+                .orderByDesc(FlwTask::getCreateTime)
+                .in(FlwTask::getId, flwTaskActorPage.stream()
+                        .map(FlwTaskActor::getTaskId).collect(Collectors.toList())));
+
+        if (ObjectUtil.isNull(flwTasks)) {
+            return new PageInfo<>();
+        }
+        List<String> instanceIds = flwTasks.stream().map(FlwTask::getInstanceId)
+                .map(String::valueOf).collect(Collectors.toList());
+        //分页查询任务中心任务
+//        LambdaQueryWrapper<StateTaskCenter> stateTaskQuery = new LambdaQueryWrapper<>();
+//        if (ObjectUtil.isNotEmpty(processTaskListBO.getName())) {
+//            stateTaskQuery.like(StateTaskCenter::getName, processTaskListBO.getName());
+//        }
+//        if (ObjectUtil.isNotEmpty(processTaskListBO.getModuleName())) {
+//            stateTaskQuery.like(StateTaskCenter::getModuleName, processTaskListBO.getModuleName());
+//        }
+//        if (ObjectUtil.isNotEmpty(processTaskListBO.getCreateBy())) {
+//            stateTaskQuery.like(StateTaskCenter::getCreateBy, processTaskListBO.getCreateBy());
+//        }
+//        stateTaskQuery.in(StateTaskCenter::getFlowId, instanceIds);
+//        stateTaskQuery.orderByDesc(BaseModel::getCreateTime);
+        processTaskListBO.setInstanceIds(instanceIds);
+//        PageInfo pageInfo = new PageInfo(processTaskListBO.getPageNum(), processTaskListBO.getPageSize());
+//        PageInfo<StateTaskCenter> taskCenters = stateTaskCenterService.page(pageInfo,stateTaskQuery);
+//        //转换类
+//        List<ProcessTaskListVO> processTaskListVOS = BeanUtil.copyToList(taskCenters.getRecords(), ProcessTaskListVO.class);
+//        // 查询合同信息
+//        for (ProcessTaskListVO processTaskListVO : processTaskListVOS) {
+//            // 查询合同信息
+//            TContract contract = contractService.getById(JSONObject.parseObject(processTaskListVO.getVariable()).getString("projectId"));
+//            processTaskListVO.setContract(contract);
+//        }
+//        pageInfo.setRecords(processTaskListVOS);
+
+        PageInfo<ProcessTaskListVO> processTaskListVOS = stateTaskCenterService.pageList(processTaskListBO);
+
+        List<String> updateUserId = processTaskListVOS.getRecords().stream().map(ProcessTaskListVO::getCreateBy).collect(Collectors.toList());
+        Map<Long, SysUser> sysUserMap;
+        if (!CollectionUtils.isEmpty(updateUserId)) {
+            //根据用户id查询更新人信息
+            List<SysUser> sysUsers = sysUserService.selectUserByUserNameList(updateUserId);
+
+            if (!CollectionUtils.isEmpty(sysUsers)) {
+                sysUserMap = sysUsers.stream().collect(Collectors.toMap(SysUser::getUserId, Function.identity()));
+            } else {
+                sysUserMap = new HashMap<>();
+            }
+        } else {
+            sysUserMap = new HashMap<>();
+        }
+
+
+        Map<Long, List<FlwTask>> flwHisTaskMap = flwTasks.stream().collect(Collectors.groupingBy(FlwTask::getInstanceId));
+
+        for (ProcessTaskListVO processTaskListVO : processTaskListVOS.getRecords()) {
+            List<FlwTask> flwTask = flwHisTaskMap.get(NumberUtil.parseLong(processTaskListVO.getFlowId()));
+            if (!CollectionUtils.isEmpty(flwTask) && ObjectUtil.isNotEmpty(flwTask.get(0))) {
+                //待审核
+                processTaskListVO.setStatus("0");
+                processTaskListVO.setNodeName(flwTask.get(0).getTaskName());
+                processTaskListVO.setTaskId(flwTask.get(0).getId().toString());
+                processTaskListVO.setVariable(flwTask.get(0).getVariable());
+            }
+            SysUser sysUser = sysUserMap.get(processTaskListVO.getCreateBy());
+            if (Objects.nonNull(sysUser)) {
+                processTaskListVO.setCreateBy(sysUser.getNickName());
+            }
+        }
+        return processTaskListVOS;
+    }
+
+    @Override
+    public ProcessDetailVO detail(String taskId) {
+        ProcessDetailVO processDetailVO = new ProcessDetailVO();
+        FlwTask flwTask = flwTaskMapper.selectById(Long.valueOf(taskId));
+        // 查询合同信息
+        TContract contract = contractService.getById(JSONObject.parseObject(flwTask.getVariable()).getString("projectId"));
+        BeanUtil.copyProperties(contract, processDetailVO);
+
+        List<StateProcessInstanceAction> list = stateProcessInstanceActionService.list(Wrappers.<StateProcessInstanceAction>lambdaQuery().eq(StateProcessInstanceAction::getInstanceId, flwTask.getInstanceId())
+                .orderByDesc(StateProcessInstanceAction::getCreateTime));
+        processDetailVO.setInstanceActions(list);
+
+        return processDetailVO;
+    }
+
     private FlowCreator currentFlowCreator() {
         LoginUser loginUser = SecurityUtils.getLoginUser();
         if (null == loginUser || null == loginUser.getUser().getUserId()) {

--
Gitblit v1.7.1