add 添加我发起的单据接口

This commit is contained in:
gssong 2024-09-14 20:55:52 +08:00
parent a084520280
commit 187db3656f
6 changed files with 79 additions and 4 deletions

View File

@ -7,7 +7,7 @@ import org.springframework.context.annotation.Configuration;
import org.dromara.common.satoken.utils.LoginHelper;
/**
* 任务状态枚举
* warmFlow配置
*
* @author may
*/

View File

@ -7,6 +7,7 @@ import org.dromara.common.core.domain.R;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.web.core.BaseController;
import org.dromara.workflow.domain.bo.InstanceBo;
import org.dromara.workflow.domain.vo.FlowInstanceVo;
import org.dromara.workflow.service.IFlwInstanceService;
import org.springframework.validation.annotation.Validated;
@ -94,4 +95,16 @@ public class FlwInstanceController extends BaseController {
return R.ok(insService.active(id));
}
}
/**
* 获取当前登陆人发起的流程实例
*
* @param instanceBo 参数
* @param pageQuery 分页
*/
@GetMapping("/getPageByCurrent")
public TableDataInfo<FlowInstanceVo> getPageByCurrent(InstanceBo instanceBo, PageQuery pageQuery) {
return flwInstanceService.getPageByCurrent(instanceBo, pageQuery);
}
}

View File

@ -19,12 +19,12 @@ public class InstanceBo implements Serializable {
/**
* 流程名称
*/
private String name;
private String flowName;
/**
* 流程key
* 流程编码
*/
private String key;
private String flowCode;
/**
* 任务发起人

View File

@ -79,6 +79,11 @@ public class FlowInstanceVo {
*/
private Integer flowStatus;
/**
* 流程状态
*/
private String flowStatusName;
/**
* 流程激活状态0挂起 1激活
*/

View File

@ -4,6 +4,7 @@ import com.warm.flow.core.entity.Instance;
import com.warm.flow.orm.entity.FlowInstance;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.workflow.domain.bo.InstanceBo;
import org.dromara.workflow.domain.vo.FlowInstanceVo;
import java.util.List;
@ -64,4 +65,13 @@ public interface IFlwInstanceService {
* @return 结果
*/
boolean cancelProcessApply(String businessId);
/**
* 获取当前登陆人发起的流程实例
*
* @param instanceBo 参数
* @param pageQuery 分页
* @return 结果
*/
TableDataInfo<FlowInstanceVo> getPageByCurrent(InstanceBo instanceBo, PageQuery pageQuery);
}

View File

@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.warm.flow.core.FlowFactory;
import com.warm.flow.core.constant.ExceptionCons;
@ -18,14 +19,19 @@ import com.warm.flow.core.service.InsService;
import com.warm.flow.core.service.NodeService;
import com.warm.flow.core.service.TaskService;
import com.warm.flow.core.utils.AssertUtil;
import com.warm.flow.orm.entity.FlowDefinition;
import com.warm.flow.orm.entity.FlowInstance;
import com.warm.flow.orm.mapper.FlowDefinitionMapper;
import com.warm.flow.orm.mapper.FlowInstanceMapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.workflow.domain.bo.FlowInstanceBo;
import org.dromara.workflow.domain.bo.InstanceBo;
import org.dromara.workflow.domain.vo.FlowInstanceVo;
import org.dromara.workflow.mapper.FlwInstanceMapper;
import org.dromara.workflow.service.IFlwInstanceService;
@ -51,6 +57,7 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
private final TaskService taskService;
private final FlowInstanceMapper flowInstanceMapper;
private final FlwInstanceMapper flwInstanceMapper;
private final FlowDefinitionMapper flowDefinitionMapper;
/**
* 分页查询正在运行的流程实例
@ -155,4 +162,44 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService {
Skip skip = skips.get(0);
return FlowFactory.nodeService().getOne(FlowFactory.newNode().setDefinitionId(startNode.getDefinitionId()).setNodeCode(skip.getNextNodeCode()));
}
/**
* 获取当前登陆人发起的流程实例
*
* @param instanceBo 参数
* @param pageQuery 分页
*/
@Override
public TableDataInfo<FlowInstanceVo> getPageByCurrent(InstanceBo instanceBo, PageQuery pageQuery) {
LambdaQueryWrapper<FlowInstance> wrapper = Wrappers.lambdaQuery();
if (StringUtils.isNotBlank(instanceBo.getFlowCode())) {
List<FlowDefinition> flowDefinitions = flowDefinitionMapper.selectList(
new LambdaQueryWrapper<FlowDefinition>().eq(FlowDefinition::getFlowCode, instanceBo.getFlowCode()));
if (CollUtil.isNotEmpty(flowDefinitions)) {
List<Long> defIdList = StreamUtils.toList(flowDefinitions, FlowDefinition::getId);
wrapper.in(FlowInstance::getDefinitionId, defIdList);
}
}
wrapper.eq(FlowInstance::getCreateBy, LoginHelper.getUserId());
Page<FlowInstance> page = flowInstanceMapper.selectPage(pageQuery.build(), wrapper);
TableDataInfo<FlowInstanceVo> build = TableDataInfo.build();
List<FlowInstanceVo> flowInstanceVos = BeanUtil.copyToList(page.getRecords(), FlowInstanceVo.class);
if (CollUtil.isNotEmpty(flowInstanceVos)) {
List<Long> definitionIds = StreamUtils.toList(flowInstanceVos, FlowInstanceVo::getDefinitionId);
List<FlowDefinition> flowDefinitions = flowDefinitionMapper.selectBatchIds(definitionIds);
for (FlowInstanceVo vo : flowInstanceVos) {
flowDefinitions.stream().filter(e -> e.getId().toString().equals(vo.getDefinitionId().toString())).findFirst().ifPresent(e -> {
vo.setFlowName(e.getFlowName());
vo.setFlowCode(e.getFlowCode());
vo.setVersion(e.getVersion());
vo.setFlowStatusName(FlowStatus.getValueByKey(vo.getFlowStatus()));
});
}
}
build.setRows(flowInstanceVos);
build.setTotal(page.getTotal());
return build;
}
}