update 优化 增加请求流程后端发起demo案例

dev
疯狂的狮子Li 5 months ago
parent d07b047dcc
commit 9599f41f7e

@ -82,6 +82,17 @@ public class TestLeaveController extends BaseController {
return R.ok(testLeaveService.insertByBo(bo)); return R.ok(testLeaveService.insertByBo(bo));
} }
/**
*
*/
@SaCheckPermission("workflow:leave:add")
@Log(title = "请假", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping("/submitAndFlowStart")
public R<TestLeaveVo> submitAndFlowStart(@Validated(AddGroup.class) @RequestBody TestLeaveBo bo) {
return R.ok(testLeaveService.submitAndFlowStart(bo));
}
/** /**
* *
*/ */

@ -31,6 +31,11 @@ public class TestLeaveBo extends BaseEntity {
@NotNull(message = "主键不能为空", groups = {EditGroup.class}) @NotNull(message = "主键不能为空", groups = {EditGroup.class})
private Long id; private Long id;
/**
* code
*/
private String flowCode;
/** /**
* *
*/ */

@ -35,6 +35,11 @@ public interface ITestLeaveService {
*/ */
TestLeaveVo insertByBo(TestLeaveBo bo); TestLeaveVo insertByBo(TestLeaveBo bo);
/**
*
*/
TestLeaveVo submitAndFlowStart(TestLeaveBo bo);
/** /**
* *
*/ */

@ -10,12 +10,16 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.dromara.common.core.enums.BusinessStatusEnum; import org.dromara.common.core.enums.BusinessStatusEnum;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils; import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.tenant.helper.TenantHelper; import org.dromara.common.tenant.helper.TenantHelper;
import org.dromara.workflow.api.domain.RemoteCompleteTask;
import org.dromara.workflow.api.domain.RemoteStartProcess;
import org.dromara.workflow.api.domain.RemoteStartProcessReturn;
import org.dromara.workflow.api.event.ProcessDeleteEvent; import org.dromara.workflow.api.event.ProcessDeleteEvent;
import org.dromara.workflow.api.event.ProcessEvent; import org.dromara.workflow.api.event.ProcessEvent;
import org.dromara.workflow.api.event.ProcessTaskEvent; import org.dromara.workflow.api.event.ProcessTaskEvent;
@ -116,6 +120,35 @@ public class TestLeaveServiceImpl implements ITestLeaveService {
return MapstructUtils.convert(add, TestLeaveVo.class); return MapstructUtils.convert(add, TestLeaveVo.class);
} }
@Transactional(rollbackFor = Exception.class)
@Override
public TestLeaveVo submitAndFlowStart(TestLeaveBo bo) {
long day = DateUtil.betweenDay(bo.getStartDate(), bo.getEndDate(), true);
// 截止日期也算一天
bo.setLeaveDays((int) day + 1);
TestLeave leave = MapstructUtils.convert(bo, TestLeave.class);
boolean flag = baseMapper.insertOrUpdate(leave);
if (flag) {
bo.setId(leave.getId());
// 后端发起需要忽略权限
bo.getParams().put("ignore", true);
RemoteStartProcessReturn result = workflowService.startWorkFlow(new RemoteStartProcess() {{
setBusinessId(leave.getId().toString());
setFlowCode(StringUtils.isEmpty(bo.getFlowCode()) ? "leave1" : bo.getFlowCode());
setVariables(bo.getParams());
}});
boolean flag1 = workflowService.completeTask(new RemoteCompleteTask() {{
setTaskId(result.getTaskId());
setMessageType(List.of("1"));
setVariables(bo.getParams());
}});
if (!flag1) {
throw new ServiceException("流程发起异常");
}
}
return MapstructUtils.convert(leave, TestLeaveVo.class);
}
/** /**
* *
*/ */

Loading…
Cancel
Save