update 升级flowable7.0,添加业务单据删除流程信息

This commit is contained in:
gssong 2023-09-30 18:08:32 +08:00
parent 139b5c20b8
commit 6347f11b52
5 changed files with 22 additions and 17 deletions

View File

@ -59,7 +59,7 @@
<flatten-maven-plugin.version>1.3.0</flatten-maven-plugin.version> <flatten-maven-plugin.version>1.3.0</flatten-maven-plugin.version>
<!--工作流配置--> <!--工作流配置-->
<flowable.version>7.0.0.M2</flowable.version> <flowable.version>7.0.0</flowable.version>
</properties> </properties>
<profiles> <profiles>

View File

@ -101,6 +101,6 @@ public class WfBusinessFormController extends BaseController {
@DeleteMapping("/{ids}") @DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空") public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) { @PathVariable Long[] ids) {
return toAjax(wfBusinessFormService.deleteWithValidByIds(List.of(ids), true)); return toAjax(wfBusinessFormService.deleteWithValidByIds(List.of(ids)));
} }
} }

View File

@ -45,5 +45,5 @@ public interface IWfBusinessFormService {
/** /**
* 校验并批量删除发起流程信息 * 校验并批量删除发起流程信息
*/ */
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); Boolean deleteWithValidByIds(Collection<Long> ids);
} }

View File

@ -1,5 +1,6 @@
package org.dromara.workflow.service.impl; package org.dromara.workflow.service.impl;
import cn.hutool.core.collection.CollUtil;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import org.dromara.common.core.utils.DateUtils; import org.dromara.common.core.utils.DateUtils;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
@ -12,9 +13,12 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.dromara.workflow.domain.ActHiProcinst;
import org.dromara.workflow.domain.WfFormDefinition; import org.dromara.workflow.domain.WfFormDefinition;
import org.dromara.workflow.domain.vo.WfFormDefinitionVo; import org.dromara.workflow.domain.vo.WfFormDefinitionVo;
import org.dromara.workflow.mapper.WfFormDefinitionMapper; import org.dromara.workflow.mapper.WfFormDefinitionMapper;
import org.dromara.workflow.service.IActHiProcinstService;
import org.dromara.workflow.service.IActProcessInstanceService;
import org.dromara.workflow.utils.WorkflowUtils; import org.dromara.workflow.utils.WorkflowUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.workflow.domain.bo.WfBusinessFormBo; import org.dromara.workflow.domain.bo.WfBusinessFormBo;
@ -22,10 +26,12 @@ import org.dromara.workflow.domain.vo.WfBusinessFormVo;
import org.dromara.workflow.domain.WfBusinessForm; import org.dromara.workflow.domain.WfBusinessForm;
import org.dromara.workflow.mapper.WfBusinessFormMapper; import org.dromara.workflow.mapper.WfBusinessFormMapper;
import org.dromara.workflow.service.IWfBusinessFormService; import org.dromara.workflow.service.IWfBusinessFormService;
import org.springframework.transaction.annotation.Transactional;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Collection; import java.util.Collection;
import java.util.stream.Collectors;
/** /**
* 发起流程Service业务层处理 * 发起流程Service业务层处理
@ -38,8 +44,9 @@ import java.util.Collection;
public class WfBusinessFormServiceImpl implements IWfBusinessFormService { public class WfBusinessFormServiceImpl implements IWfBusinessFormService {
private final WfBusinessFormMapper baseMapper; private final WfBusinessFormMapper baseMapper;
private final WfFormDefinitionMapper wfFormDefinitionMapper; private final WfFormDefinitionMapper wfFormDefinitionMapper;
private final IActProcessInstanceService iActProcessInstanceService;
private final IActHiProcinstService iActHiProcinstService;
/** /**
* 查询发起流程 * 查询发起流程
@ -64,7 +71,7 @@ public class WfBusinessFormServiceImpl implements IWfBusinessFormService {
LambdaQueryWrapper<WfBusinessForm> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<WfBusinessForm> lqw = buildQueryWrapper(bo);
Page<WfBusinessFormVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<WfBusinessFormVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
List<WfBusinessFormVo> records = result.getRecords(); List<WfBusinessFormVo> records = result.getRecords();
WorkflowUtils.setProcessInstanceListVo(records,StreamUtils.toList(records, e -> String.valueOf(e.getId())),"id"); WorkflowUtils.setProcessInstanceListVo(records, StreamUtils.toList(records, e -> String.valueOf(e.getId())), "id");
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@ -90,7 +97,7 @@ public class WfBusinessFormServiceImpl implements IWfBusinessFormService {
@Override @Override
public WfBusinessForm insertByBo(WfBusinessFormBo bo) { public WfBusinessForm insertByBo(WfBusinessFormBo bo) {
WfBusinessForm add = MapstructUtils.convert(bo, WfBusinessForm.class); WfBusinessForm add = MapstructUtils.convert(bo, WfBusinessForm.class);
validEntityBeforeSave(add); //规则自行修改
add.setApplyCode(DateUtils.dateTimeNow()); add.setApplyCode(DateUtils.dateTimeNow());
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
if (flag) { if (flag) {
@ -110,7 +117,6 @@ public class WfBusinessFormServiceImpl implements IWfBusinessFormService {
@Override @Override
public WfBusinessForm updateByBo(WfBusinessFormBo bo) { public WfBusinessForm updateByBo(WfBusinessFormBo bo) {
WfBusinessForm update = MapstructUtils.convert(bo, WfBusinessForm.class); WfBusinessForm update = MapstructUtils.convert(bo, WfBusinessForm.class);
validEntityBeforeSave(update);
baseMapper.updateById(update); baseMapper.updateById(update);
if (StringUtils.isNotBlank(update.getContentValue())) { if (StringUtils.isNotBlank(update.getContentValue())) {
Map<String, Object> variable = JsonUtils.parseObject(update.getContentValue(), new TypeReference<>() { Map<String, Object> variable = JsonUtils.parseObject(update.getContentValue(), new TypeReference<>() {
@ -120,20 +126,15 @@ public class WfBusinessFormServiceImpl implements IWfBusinessFormService {
return update; return update;
} }
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WfBusinessForm entity) {
//TODO 做一些数据校验,如唯一约束
}
/** /**
* 批量删除发起流程 * 批量删除发起流程
*/ */
@Override @Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { @Transactional(rollbackFor = Exception.class)
if (isValid) { public Boolean deleteWithValidByIds(Collection<Long> ids) {
//TODO 做一些业务上的校验,判断是否需要校验 List<ActHiProcinst> actHiProcinsts = iActHiProcinstService.selectByBusinessKeyIn(StreamUtils.toList(ids, String::valueOf));
if (CollUtil.isNotEmpty(actHiProcinsts)) {
iActProcessInstanceService.deleteRuntimeProcessAndHisInst(actHiProcinsts.stream().map(ActHiProcinst::getId).collect(Collectors.toList()));
} }
return baseMapper.deleteBatchIds(ids) > 0; return baseMapper.deleteBatchIds(ids) > 0;
} }

View File

@ -1,5 +1,6 @@
package org.dromara.workflow.service.impl; package org.dromara.workflow.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -182,6 +183,9 @@ public class WorkflowUserServiceImpl implements IWorkflowUserService {
*/ */
@Override @Override
public List<SysUserVo> getUserListByIds(List<Long> userIds) { public List<SysUserVo> getUserListByIds(List<Long> userIds) {
if (CollUtil.isEmpty(userIds)) {
return Collections.emptyList();
}
LambdaQueryWrapper<SysUser> queryWrapper = Wrappers.lambdaQuery(); LambdaQueryWrapper<SysUser> queryWrapper = Wrappers.lambdaQuery();
//检索条件 //检索条件
queryWrapper.eq(SysUser::getStatus, UserStatus.OK.getCode()); queryWrapper.eq(SysUser::getStatus, UserStatus.OK.getCode());