From 3c2c87364b89de46d12e95abd5bdf8cbd2c6dbf6 Mon Sep 17 00:00:00 2001 From: baoshiwei <baoshiwei@shlanbao.cn> Date: 星期三, 12 三月 2025 08:43:23 +0800 Subject: [PATCH] dev-init --- ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java | 86 ++++++++++++++++++++++++++++-------------- 1 files changed, 57 insertions(+), 29 deletions(-) diff --git a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java index 7b55ee5..a62ce5f 100644 --- a/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java +++ b/ruoyi-modules/ruoyi-workflow/src/main/java/org/dromara/workflow/service/impl/TestLeaveServiceImpl.java @@ -1,10 +1,14 @@ package org.dromara.workflow.service.impl; -import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.dromara.common.core.domain.event.ProcessEvent; +import org.dromara.common.core.domain.event.ProcessTaskEvent; +import org.dromara.common.core.enums.BusinessStatusEnum; +import org.dromara.common.core.service.WorkflowService; import org.dromara.common.core.utils.MapstructUtils; import org.dromara.common.core.utils.StreamUtils; import org.dromara.common.core.utils.StringUtils; @@ -15,15 +19,13 @@ import org.dromara.workflow.domain.bo.TestLeaveBo; import org.dromara.workflow.domain.vo.TestLeaveVo; import org.dromara.workflow.mapper.TestLeaveMapper; -import org.dromara.workflow.service.IActProcessInstanceService; import org.dromara.workflow.service.ITestLeaveService; -import org.dromara.workflow.utils.WorkflowUtils; +import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Collection; import java.util.List; -import java.util.Map; /** * 璇峰亣Service涓氬姟灞傚鐞� @@ -33,10 +35,11 @@ */ @RequiredArgsConstructor @Service +@Slf4j public class TestLeaveServiceImpl implements ITestLeaveService { private final TestLeaveMapper baseMapper; - private final IActProcessInstanceService iActProcessInstanceService; + private final WorkflowService workflowService; /** * 鏌ヨ璇峰亣 @@ -53,13 +56,7 @@ public TableDataInfo<TestLeaveVo> queryPageList(TestLeaveBo bo, PageQuery pageQuery) { LambdaQueryWrapper<TestLeave> lqw = buildQueryWrapper(bo); Page<TestLeaveVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); - TableDataInfo<TestLeaveVo> build = TableDataInfo.build(result); - List<TestLeaveVo> rows = build.getRows(); - if (CollUtil.isNotEmpty(rows)) { - List<String> ids = StreamUtils.toList(rows, e -> String.valueOf(e.getId())); - WorkflowUtils.setProcessInstanceListVo(rows, ids, "id"); - } - return build; + return TableDataInfo.build(result); } /** @@ -74,8 +71,8 @@ private LambdaQueryWrapper<TestLeave> buildQueryWrapper(TestLeaveBo bo) { LambdaQueryWrapper<TestLeave> lqw = Wrappers.lambdaQuery(); lqw.eq(StringUtils.isNotBlank(bo.getLeaveType()), TestLeave::getLeaveType, bo.getLeaveType()); - lqw.ge(bo.getStartLeaveDays() != null,TestLeave::getLeaveDays, bo.getStartLeaveDays()); - lqw.le(bo.getEndLeaveDays() != null,TestLeave::getLeaveDays, bo.getEndLeaveDays()); + lqw.ge(bo.getStartLeaveDays() != null, TestLeave::getLeaveDays, bo.getStartLeaveDays()); + lqw.le(bo.getEndLeaveDays() != null, TestLeave::getLeaveDays, bo.getEndLeaveDays()); lqw.orderByDesc(BaseEntity::getCreateTime); return lqw; } @@ -84,31 +81,26 @@ * 鏂板璇峰亣 */ @Override - public TestLeave insertByBo(TestLeaveBo bo) { + public TestLeaveVo insertByBo(TestLeaveBo bo) { TestLeave add = MapstructUtils.convert(bo, TestLeave.class); - validEntityBeforeSave(add); + if (StringUtils.isBlank(add.getStatus())) { + add.setStatus(BusinessStatusEnum.DRAFT.getStatus()); + } boolean flag = baseMapper.insert(add) > 0; if (flag) { bo.setId(add.getId()); } - return add; + return MapstructUtils.convert(add, TestLeaveVo.class); } /** * 淇敼璇峰亣 */ @Override - public TestLeave updateByBo(TestLeaveBo bo) { + public TestLeaveVo updateByBo(TestLeaveBo bo) { TestLeave update = MapstructUtils.convert(bo, TestLeave.class); - validEntityBeforeSave(update); - return baseMapper.updateById(update) > 0 ? update : null; - } - - /** - * 淇濆瓨鍓嶇殑鏁版嵁鏍¢獙 - */ - private void validEntityBeforeSave(TestLeave entity) { - //TODO 鍋氫竴浜涙暟鎹牎楠�,濡傚敮涓�绾︽潫 + baseMapper.updateById(update); + return MapstructUtils.convert(update, TestLeaveVo.class); } /** @@ -118,7 +110,43 @@ @Transactional(rollbackFor = Exception.class) public Boolean deleteWithValidByIds(Collection<Long> ids) { List<String> idList = StreamUtils.toList(ids, String::valueOf); - iActProcessInstanceService.deleteRuntimeProcessAndHisInstByBusinessKeys(idList); - return baseMapper.deleteBatchIds(ids) > 0; + workflowService.deleteRunAndHisInstance(idList); + return baseMapper.deleteByIds(ids) > 0; + } + + /** + * 鎬讳綋娴佺▼鐩戝惉(渚嬪: 鎻愪氦 閫�鍥� 鎾ら攢 缁堟 浣滃簾绛�) + * 姝e父浣跨敤鍙渶#processEvent.key=='leave1' + * 绀轰緥涓轰簡鏂逛究鍒欎娇鐢╯tartsWith鍖归厤浜嗗叏閮ㄧず渚媖ey + * + * @param processEvent 鍙傛暟 + */ + @EventListener(condition = "#processEvent.key.startsWith('leave')") + public void processHandler(ProcessEvent processEvent) { + log.info("褰撳墠浠诲姟鎵ц浜唟}", processEvent.toString()); + TestLeave testLeave = baseMapper.selectById(Long.valueOf(processEvent.getBusinessKey())); + testLeave.setStatus(processEvent.getStatus()); + if (processEvent.isSubmit()) { + testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); + } + baseMapper.updateById(testLeave); + } + + /** + * 鎵ц鍔炵悊浠诲姟鐩戝惉 + * 绀轰緥锛氫篃鍙�氳繃 @EventListener(condition = "#processTaskEvent.key=='leave1'")杩涜鍒ゆ柇 + * 鍦ㄦ柟娉曚腑鍒ゆ柇娴佺▼鑺傜偣key + * if ("xxx".equals(processTaskEvent.getTaskDefinitionKey())) { + * //鎵ц涓氬姟閫昏緫 + * } + * + * @param processTaskEvent 鍙傛暟 + */ + @EventListener(condition = "#processTaskEvent.key=='leave1' && #processTaskEvent.taskDefinitionKey=='Activity_14633hx'") + public void processTaskHandler(ProcessTaskEvent processTaskEvent) { + log.info("褰撳墠浠诲姟鎵ц浜唟}", processTaskEvent.toString()); + TestLeave testLeave = baseMapper.selectById(Long.valueOf(processTaskEvent.getBusinessKey())); + testLeave.setStatus(BusinessStatusEnum.WAITING.getStatus()); + baseMapper.updateById(testLeave); } } -- Gitblit v1.9.3