mitao
2025-01-20 93fec20f3cf9d7801eeaa10acef4687ed110d435
land-system/src/main/java/com/zzg/system/service/state/impl/StateProcessTemplateServiceImpl.java
@@ -5,14 +5,23 @@
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.aizuda.bpm.engine.FlowLongEngine;
import com.aizuda.bpm.engine.core.FlowCreator;
import com.aizuda.bpm.engine.core.enums.TaskType;
import com.aizuda.bpm.engine.entity.*;
import com.aizuda.bpm.engine.entity.FlowEntity;
import com.aizuda.bpm.engine.entity.FlwHisInstance;
import com.aizuda.bpm.engine.entity.FlwHisTask;
import com.aizuda.bpm.engine.entity.FlwHisTaskActor;
import com.aizuda.bpm.engine.entity.FlwProcess;
import com.aizuda.bpm.engine.entity.FlwTask;
import com.aizuda.bpm.engine.entity.FlwTaskActor;
import com.aizuda.bpm.engine.model.NodeModel;
import com.aizuda.bpm.mybatisplus.mapper.*;
import com.aizuda.bpm.mybatisplus.mapper.FlwHisInstanceMapper;
import com.aizuda.bpm.mybatisplus.mapper.FlwHisTaskActorMapper;
import com.aizuda.bpm.mybatisplus.mapper.FlwHisTaskMapper;
import com.aizuda.bpm.mybatisplus.mapper.FlwTaskActorMapper;
import com.aizuda.bpm.mybatisplus.mapper.FlwTaskMapper;
import com.alibaba.fastjson2.JSONObject;
import com.alibaba.fastjson2.JSONWriter;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -23,7 +32,11 @@
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zzg.common.core.domain.BaseEntity;
import com.zzg.common.core.domain.entity.state.*;
import com.zzg.common.core.domain.entity.state.StateProcessExtInstance;
import com.zzg.common.core.domain.entity.state.StateProcessInstanceAction;
import com.zzg.common.core.domain.entity.state.StateProcessModule;
import com.zzg.common.core.domain.entity.state.StateProcessTemplate;
import com.zzg.common.core.domain.entity.state.StateTaskCenter;
import com.zzg.common.core.domain.entity.system.SysUser;
import com.zzg.common.core.domain.model.LoginUser;
import com.zzg.common.enums.StateProcessActionType;
@@ -31,23 +44,37 @@
import com.zzg.common.exception.state.StateErrorCode;
import com.zzg.common.utils.SecurityUtils;
import com.zzg.common.utils.uuid.IdUtils;
import com.zzg.system.domain.bo.*;
import com.zzg.system.domain.vo.City;
import com.zzg.system.domain.bo.DeployBO;
import com.zzg.system.domain.bo.ProcessAgreeBO;
import com.zzg.system.domain.bo.ProcessCreateBO;
import com.zzg.system.domain.bo.ProcessRefuseBO;
import com.zzg.system.domain.bo.ProcessStartBO;
import com.zzg.system.domain.bo.ProcessTaskListBO;
import com.zzg.system.domain.bo.ProcessTemplatePageBO;
import com.zzg.system.domain.bo.ProcessUpdateBO;
import com.zzg.system.domain.vo.ProcessTaskListVO;
import com.zzg.system.mapper.state.StateProcessTemplateMapper;
import com.zzg.system.service.state.*;
import com.zzg.system.service.state.StateProcessExtInstanceService;
import com.zzg.system.service.state.StateProcessInstanceActionService;
import com.zzg.system.service.state.StateProcessModuleService;
import com.zzg.system.service.state.StateProcessTemplateService;
import com.zzg.system.service.state.StateTaskCenterService;
import com.zzg.system.service.system.ISysRoleService;
import com.zzg.system.service.system.ISysUserService;
import lombok.AllArgsConstructor;
import org.apache.commons.io.IOUtils;
import org.springframework.security.core.parameters.P;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -68,13 +95,20 @@
    private final FlwHisTaskActorMapper flwHisTaskActorMapper;
    private final ISysUserService sysUserService;
    /**
     * 流程模版分页
     * @param request
     * @return
     */
    @Override
    public Page<StateProcessTemplate> page(ProcessTemplatePageBO request) {
        //查询流程模板列表
        Page<StateProcessTemplate> templatePage = this.baseMapper.page(new Page<>(request.getCurrentPage(), request.getPageSize()), request);
        //更新人id列表
        List<String> updateUserNameList = templatePage.getRecords().stream().map(BaseEntity::getUpdateBy).collect(Collectors.toList());
        if (!CollectionUtils.isEmpty(updateUserNameList)) {
            //根据用户id列表查询用户信息
            List<SysUser> sysUsers = sysUserService.selectUserByUserNameList(updateUserNameList);
            Map<String, SysUser> sysUserMap;
            if (!CollectionUtils.isEmpty(sysUsers)) {
@@ -82,6 +116,7 @@
            } else {
                sysUserMap = new HashMap<>();
            }
            //遍历列表,设置更新人名称
            templatePage.getRecords().forEach(e -> {
                SysUser sysUser = sysUserMap.get(e.getUpdateBy());
                if (Objects.nonNull(sysUser)) {
@@ -92,10 +127,17 @@
        return templatePage;
    }
    /**
     * 修改并部署模版
     * @param processUpdateBO
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public Boolean update(ProcessUpdateBO processUpdateBO) {
        //查询流程模板
        StateProcessTemplate temp = this.getById(processUpdateBO.getId());
        //根据template_key查询最新版本的模板
        StateProcessTemplate template = this.getOne(Wrappers.<StateProcessTemplate>lambdaQuery()
                .eq(StateProcessTemplate::getTemplateKey, temp.getTemplateKey())
                .apply("(template_key, template_version) in("
@@ -149,6 +191,11 @@
        return stateProcessModuleService.updateBatchById(stateProcessModules);
    }
    /**
     * 创建并部署模版
     * @param processCreateBO
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public Boolean create(ProcessCreateBO processCreateBO) {
@@ -186,6 +233,11 @@
        return this.save(processTemplate);
    }
    /**
     * 启动流程
     * @param processStartBO
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public Boolean start(ProcessStartBO processStartBO) {
@@ -255,6 +307,11 @@
        return true;
    }
    /**
     * 待办
     * @param processTaskListBO
     * @return
     */
    @Override
    public PageInfo<ProcessTaskListVO> waitTaskPage(ProcessTaskListBO processTaskListBO) {
        List<ProcessTaskListVO> page = new ArrayList<>();
@@ -327,6 +384,7 @@
        List<String> updateUserId = processTaskListVOS.stream().map(ProcessTaskListVO::getCreateBy).collect(Collectors.toList());
        Map<String, SysUser> sysUserMap;
        if (!CollectionUtils.isEmpty(updateUserId)) {
            //根据用户id查询更新人信息
            List<SysUser> sysUsers = sysUserService.selectUserByIdList(updateUserId);
            if (!CollectionUtils.isEmpty(sysUsers)) {