From 7db4b89faf1ceee4d954ccae14d19516ded47579 Mon Sep 17 00:00:00 2001 From: Pancaihua <75729660@qq.com> Date: Tue, 29 Oct 2024 16:08:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=B7=E5=81=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module/home/service/qjgl/QjglService.java | 54 +++++++++++ .../home/service/qjgl/QjglServiceImpl.java | 94 +++++++++++++++++++ .../qjgl/listener/QjglStatusListener.java | 32 +++++++ 3 files changed, 180 insertions(+) create mode 100644 yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/qjgl/QjglService.java create mode 100644 yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/qjgl/QjglServiceImpl.java create mode 100644 yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/qjgl/listener/QjglStatusListener.java diff --git a/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/qjgl/QjglService.java b/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/qjgl/QjglService.java new file mode 100644 index 0000000..e69d131 --- /dev/null +++ b/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/qjgl/QjglService.java @@ -0,0 +1,54 @@ +package cn.iocoder.yudao.module.home.service.qjgl; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.module.home.controller.admin.qjgl.vo.*; +import cn.iocoder.yudao.module.home.dal.dataobject.qjgl.QjglDO; + +import javax.validation.Valid; + +/** + * 请假管理 Service 接口 + * + * @author 君风 + */ +public interface QjglService { + + /** + * 创建请假管理 + * + * @param createReqVO 创建信息 + * @return 编号 + */ + Long createQjgl(Long userId, @Valid QjglSaveReqVO createReqVO); + + /** + * 更新请假管理 + * + * @param updateReqVO 更新信息 + */ + void updateQjgl(@Valid QjglSaveReqVO updateReqVO); + void updateQjglStatus(Long id, Integer status); + /** + * 删除请假管理 + * + * @param id 编号 + */ + void deleteQjgl(Long id); + + /** + * 获得请假管理 + * + * @param id 编号 + * @return 请假管理 + */ + QjglDO getQjgl(Long id); + + /** + * 获得请假管理分页 + * + * @param pageReqVO 分页查询 + * @return 请假管理分页 + */ + PageResult getQjglPage(QjglPageReqVO pageReqVO); + +} \ No newline at end of file diff --git a/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/qjgl/QjglServiceImpl.java b/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/qjgl/QjglServiceImpl.java new file mode 100644 index 0000000..53f33eb --- /dev/null +++ b/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/qjgl/QjglServiceImpl.java @@ -0,0 +1,94 @@ +package cn.iocoder.yudao.module.home.service.qjgl; + +import cn.iocoder.yudao.framework.common.pojo.PageResult; +import cn.iocoder.yudao.framework.common.util.object.BeanUtils; +import cn.iocoder.yudao.module.home.controller.admin.qjgl.vo.*; +import cn.iocoder.yudao.module.home.dal.dataobject.qjgl.QjglDO; +import cn.iocoder.yudao.module.home.dal.mysql.qjgl.QjglMapper; +import cn.iocoder.yudao.module.bpm.api.task.BpmProcessInstanceApi; +import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatusEnum; +import org.springframework.stereotype.Service; +import org.springframework.validation.annotation.Validated; + +import javax.annotation.Resource; +import java.util.HashMap; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; +import static cn.iocoder.yudao.module.home.enums.ErrorCodeConstants.*; + +/** + * 请假管理 Service 实现类 + * + * @author 君风 + */ +@Service +@Validated +public class QjglServiceImpl implements QjglService { + + public static final String PROCESS_KEY = "pch-qjgl-001"; + @Resource + private QjglMapper qjglMapper; + + @Resource + private BpmProcessInstanceApi processInstanceApi; + @Override + public Long createQjgl(Long userId,QjglSaveReqVO createReqVO) { + // 插入 + QjglDO qjgl = BeanUtils.toBean(createReqVO, QjglDO.class) + .setUserId(userId).setStatus(BpmTaskStatusEnum.RUNNING.getStatus()); + qjglMapper.insert(qjgl); + + // 发起 BPM 流程 + Map processInstanceVariables = new HashMap<>(); + String processInstanceId = processInstanceApi.createProcessInstance(userId, + new BpmProcessInstanceCreateReqDTO().setProcessDefinitionKey(PROCESS_KEY) + .setVariables(processInstanceVariables).setBusinessKey(String.valueOf(qjgl.getId())) + .setStartUserSelectAssignees(createReqVO.getStartUserSelectAssignees())); + + // 将工作流的编号,更新到 OA 请假单中 + qjglMapper.updateById(new QjglDO().setId(qjgl.getId()).setProcessInstanceId(processInstanceId)); + // 返回 + return qjgl.getId(); + } + + @Override + public void updateQjgl(QjglSaveReqVO updateReqVO) { + // 校验存在 + validateQjglExists(updateReqVO.getId()); + // 更新 + QjglDO updateObj = BeanUtils.toBean(updateReqVO, QjglDO.class); + qjglMapper.updateById(updateObj); + } + @Override + public void updateQjglStatus(Long id, Integer status) { + validateQjglExists(id); + qjglMapper.updateById(new QjglDO().setId(id).setStatus(status)); + } + + @Override + public void deleteQjgl(Long id) { + // 校验存在 + validateQjglExists(id); + // 删除 + qjglMapper.deleteById(id); + } + + private void validateQjglExists(Long id) { + if (qjglMapper.selectById(id) == null) { + throw exception(QJGL_NOT_EXISTS); + } + } + + @Override + public QjglDO getQjgl(Long id) { + return qjglMapper.selectById(id); + } + + @Override + public PageResult getQjglPage(QjglPageReqVO pageReqVO) { + return qjglMapper.selectPage(pageReqVO); + } + +} diff --git a/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/qjgl/listener/QjglStatusListener.java b/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/qjgl/listener/QjglStatusListener.java new file mode 100644 index 0000000..5b533a1 --- /dev/null +++ b/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/qjgl/listener/QjglStatusListener.java @@ -0,0 +1,32 @@ +package cn.iocoder.yudao.module.home.service.qjgl.listener; + +import cn.iocoder.yudao.module.home.service.qjgl.QjglService; +import cn.iocoder.yudao.module.home.service.qjgl.QjglServiceImpl; +import cn.iocoder.yudao.module.bpm.event.BpmProcessInstanceStatusEvent; +import cn.iocoder.yudao.module.bpm.event.BpmProcessInstanceStatusEventListener; +import org.springframework.stereotype.Component; + +import javax.annotation.Resource; + +/** + * OA 请假单的结果的监听器实现类 + * + * @author 芋道源码 + */ +@Component +public class QjglStatusListener extends BpmProcessInstanceStatusEventListener { + + @Resource + private QjglService qjglService; + + @Override + protected String getProcessDefinitionKey() { + return QjglServiceImpl.PROCESS_KEY; + } + + @Override + protected void onEvent(BpmProcessInstanceStatusEvent event) { + qjglService.updateQjglStatus(Long.parseLong(event.getBusinessKey()), event.getStatus()); + } + +}