| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- package jnpf.flowable.controller;
- import cn.hutool.core.collection.CollectionUtil;
- import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
- import jnpf.base.ActionResult;
- import jnpf.constant.MsgCode;
- import jnpf.constant.PermissionConst;
- import jnpf.exception.WorkFlowException;
- import jnpf.flowable.entity.*;
- import jnpf.flowable.enums.NodeEnum;
- import jnpf.flowable.enums.OperatorStateEnum;
- import jnpf.flowable.model.task.FileModel;
- import jnpf.flowable.model.task.FlowModel;
- import jnpf.flowable.model.task.TaskTo;
- import jnpf.flowable.model.templatenode.nodejson.FileConfig;
- import jnpf.flowable.model.templatenode.nodejson.NodeModel;
- import jnpf.flowable.model.util.FlowNature;
- import jnpf.flowable.service.*;
- import jnpf.flowable.util.OperatorUtil;
- import jnpf.flowable.util.RecordUtil;
- import jnpf.flowable.util.TaskUtil;
- import jnpf.util.DateUtil;
- import jnpf.util.JsonUtil;
- import jnpf.util.StringUtil;
- import jnpf.workflow.service.TaskApi;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Date;
- import java.util.List;
- /**
- * 类的描述
- *
- * @author JNPF@YinMai Info. Co., Ltd
- * @version 5.0.x
- * @since 2024/5/28 14:32
- */
- @Component
- public class TaskForFileController implements TaskApi {
- @Autowired
- private TaskService taskService;
- @Autowired
- private OperatorService operatorService;
- @Autowired
- private TemplateNodeService templateNodeService;
- @Autowired
- private RecordUtil recordUtil;
- @Autowired
- private OperatorUtil operatorUtil;
- @Autowired
- private LaunchUserService launchUserService;
- @Autowired
- private TaskUtil taskUtil;
- // 获取归档信息
- @Override
- public FileModel getFileModel(String taskId) throws WorkFlowException {
- TaskEntity taskEntity = taskService.getInfo(taskId);
- if (null == taskEntity) {
- throw new WorkFlowException(MsgCode.FA001.get());
- }
- FileModel model = new FileModel();
- List<TemplateNodeEntity> nodeEntityList = templateNodeService.getList(taskEntity.getFlowId());
- TemplateNodeEntity globalEntity = nodeEntityList.stream().filter(e -> StringUtil.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.FlowAll)) {
- // 创建人
- model.setUserId(userId);
- // 分享人
- List<String> list = operatorUtil.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.FlowLast)) {
- // 最后节点审批人
- List<String> list = operatorUtil.getListOfLast(taskId);
- if (CollectionUtil.isNotEmpty(list)) {
- model.setUserId(list.get(0));
- list.remove(0);
- if (CollectionUtil.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
- public TaskEntity getInfoSubmit(String id, SFunction<TaskEntity, ?>... columns) {
- return taskService.getInfoSubmit(id, columns);
- }
- @Override
- public List<TaskEntity> getInfosSubmit(String[] ids, SFunction<TaskEntity, ?>... columns) {
- return taskService.getInfosSubmit(ids, columns);
- }
- @Override
- public void delete(TaskEntity taskEntity) throws Exception {
- taskService.delete(taskEntity.getId());
- }
- @Override
- public void saveOrSubmit(FlowModel flowModel) throws Exception {
- taskService.batchSaveOrSubmit(flowModel);
- }
- @Override
- public List<RecordEntity> getRecordList(String taskId) {
- return recordUtil.getList(taskId);
- }
- @Override
- public void updateIsFile(String taskId) {
- try {
- taskService.updateIsFile(taskId);
- } catch (WorkFlowException e) {
- System.out.println(e.getMessage());
- }
- }
- @Override
- 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 = operatorService.count(queryWrapper);
- return count > 0;
- }
- @Override
- 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 = operatorService.count(queryWrapper);
- return count > 0;
- }
- @Override
- public ActionResult launchFlow(FlowModel flowModel) {
- try {
- return taskUtil.launchFlow(flowModel);
- } catch (Exception e) {
- e.printStackTrace();
- return ActionResult.fail(e.getMessage());
- }
- }
- @Override
- public TaskTo getFlowTodoCount(TaskTo taskTo) {
- return taskService.getFlowTodoCount(taskTo);
- }
- @Override
- public List<String> getStepList() {
- QueryWrapper<LaunchUserEntity> queryWrapper = new QueryWrapper<>();
- queryWrapper.lambda().eq(LaunchUserEntity::getType,FlowNature.StepInitiation);
- List<LaunchUserEntity> list = launchUserService.list(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;
- }
- }
|