xuhy
2025-02-28 513442b07fdc6ecdd1deb0e476a0b58ad7a51679
bug修改
6个文件已修改
100 ■■■■■ 已修改文件
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDeptToUserMapper.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/StateProcessTemplateService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java 78 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TContractServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/resources/mapper/system/TDeptToUserMapper.xml 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-system/src/main/java/com/ruoyi/system/mapper/TDeptToUserMapper.java
@@ -3,6 +3,9 @@
import com.ruoyi.system.model.TDeptToUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
 * <p>
@@ -22,4 +25,6 @@
     * @return 删除结果
     **/
    int deleteUserDeptByUserId(Long userId);
    void insertBatchUserDept(@Param("deptToUserList") List<TDeptToUser> deptToUserList);
}
ruoyi-system/src/main/java/com/ruoyi/system/service/StateProcessTemplateService.java
@@ -26,6 +26,13 @@
     */
    Boolean start(ProcessStartBO processStartBO);
    /**
     * 启动流程
     * @param processStartBO
     * @return
     */
    Boolean startApplet(ProcessStartBO processStartBO);
    //待办
    PageInfo<ProcessTaskListVO> waitTaskPage(ProcessTaskListBO processTaskListBO);
    PageInfo<ProcessTaskListVO> waitTaskPageApplet(ProcessTaskListBO processTaskListBO);
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/StateProcessTemplateServiceImpl.java
@@ -27,6 +27,7 @@
import com.ruoyi.common.core.domain.BaseModel;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.core.domain.model.LoginUser;
import com.ruoyi.common.core.domain.model.LoginUserApplet;
import com.ruoyi.common.enums.StateProcessActionEnum;
import com.ruoyi.common.enums.TaskEventType;
import com.ruoyi.common.exception.GlobalException;
@@ -300,6 +301,83 @@
    }
    /**
     * 启动流程
     * @param processStartBO
     * @return
     */
    @Transactional(rollbackFor = Exception.class)
    @Override
    public Boolean startApplet(ProcessStartBO processStartBO) {
        String userId = "1";
        String nickName = "admin";
        FlowCreator creator = FlowCreator.of(userId, nickName);
        //查询流程绑定
        StateProcessModule stateProcessModule = stateProcessModuleService.getOne(Wrappers.<StateProcessModule>lambdaQuery()
                .eq(StateProcessModule::getCategory, processStartBO.getCategory()));
        if (ObjectUtil.isNull(stateProcessModule) || ObjectUtil.isEmpty(stateProcessModule.getTemplateId())) {
            throw new GlobalException("请先配置流程引擎模版!");
        }
        //查询模版,准备启动
        StateProcessTemplate template = this.getById(stateProcessModule.getTemplateId());
        StateProcessTemplate lastTemplate = this.getOne(Wrappers.<StateProcessTemplate>lambdaQuery()
                .eq(StateProcessTemplate::getTemplateKey, template.getTemplateKey())
                .apply("(template_key, template_version) in(" +
                        "SELECT template_key, MAX(template_version) " +
                        "FROM state_process_template " +
                        "GROUP BY template_key)")
        );
        if (ObjectUtil.isNull(lastTemplate)) {
            throw new GlobalException(StateErrorCode.PROCESS_TEMPLATE_NOT_EXISTS.getValue());
        }
        FlwProcess flwProcess = flowLongEngine.processService().getProcessById(lastTemplate.getWorkFlowId());
        if (ObjectUtil.isNull(flwProcess)) {
            throw new GlobalException(StateErrorCode.PROCESS_NOT_DEPLOY.getValue());
        }
        if (!Objects.equals(lastTemplate.getWorkflowVersion(), flwProcess.getProcessVersion())) {
            throw new GlobalException(StateErrorCode.PROCESS_VERSION_ERROR.getValue());
        }
        //监听器参数补全
        processStartBO.getVariable().put("category", processStartBO.getCategory());
        // 开启流程
        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());
            stateTaskCenter.setName(processStartBO.getName());
            stateTaskCenter.setModuleName(processStartBO.getModuleName());
            stateTaskCenter.setCategory(processStartBO.getCategory());
            stateTaskCenter.setFlowId(instance.getId().toString());
            stateTaskCenter.setRemark(processStartBO.getRemark());
            stateTaskCenter.setCreateBy(nickName);
            stateTaskCenter.setVariable(JSONUtil.toJsonStr(processStartBO.getVariable()));
            stateTaskCenter.setProjectId(JSONObject.parseObject(JSONUtil.toJsonStr(processStartBO.getVariable())).getString("projectId"));
            stateTaskCenterService.save(stateTaskCenter);
            // action记录
            StateProcessInstanceAction stateProcessInstanceAction = new StateProcessInstanceAction();
            stateProcessInstanceAction.setId(IdUtils.simpleUUID());
            stateProcessInstanceAction.setInstanceId(instance.getId().toString());
            stateProcessInstanceAction.setActionType(StateProcessActionEnum.START.getValue());
            stateProcessInstanceAction.setAuditorId(creator.getCreateId());
            stateProcessInstanceActionService.save(stateProcessInstanceAction);
            // 添加拓展信息
            StateProcessExtInstance stateProcessExtInstance = new StateProcessExtInstance();
            stateProcessExtInstance.setId(instance.getId().toString());
            stateProcessExtInstance.setTemplateId(lastTemplate.getId());
            stateProcessExtInstance.setProcessId(flwProcess.getId().toString());
            //保存version
            stateProcessExtInstance.setProcessVersion(flwProcess.getProcessVersion());
            stateProcessExtInstanceService.save(stateProcessExtInstance);
        }
        return true;
    }
    /**
     * 待办
     * @param processTaskListBO
     * @return
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
@@ -495,7 +495,7 @@
                deptToUser.setDeptId(deptId);
                deptToUserList.add(deptToUser);
            }
            userRoleMapper.insertBatchUserDept(deptToUserList);
            deptToUserMapper.insertBatchUserDept(deptToUserList);
        }
    }
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/TContractServiceImpl.java
@@ -196,7 +196,7 @@
        variable.put("projectId", dto.getId());
        processStartBO.setVariable(variable);
        //开启工作流程
        stateProcessTemplateService.start(processStartBO);
        stateProcessTemplateService.startApplet(processStartBO);
        List<TContractRentType> contractRentTypes = contractRentTypeService.list();
        // 生成第一笔账单
ruoyi-system/src/main/resources/mapper/system/TDeptToUserMapper.xml
@@ -13,6 +13,12 @@
    <sql id="Base_Column_List">
        id, dept_id, user_id
    </sql>
    <insert id="insertBatchUserDept">
        insert into t_dept_to_user (dept_id, user_id) values
        <foreach collection="list" item="item" separator=",">
            (#{item.deptId},#{item.userId})
        </foreach>
    </insert>
    <delete id="deleteUserDeptByUserId">
        delete from t_dept_to_user where user_id=#{userId}
    </delete>