From 747a1c116e1e64a8752cabf5ee7cd5ec3605b36f Mon Sep 17 00:00:00 2001 From: XaoLi717 <144221124+XaoLi717@users.noreply.github.com> Date: Wed, 18 Dec 2024 14:14:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../home/service/xjgl/XjglServiceImpl.java | 18 ++++++++++++++++-- .../xjgl/listenter/XjglEndListener.java | 8 ++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/xjgl/XjglServiceImpl.java b/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/xjgl/XjglServiceImpl.java index 08bfc1a..1f741a1 100644 --- a/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/xjgl/XjglServiceImpl.java +++ b/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/xjgl/XjglServiceImpl.java @@ -118,22 +118,30 @@ public class XjglServiceImpl implements XjglService { @Override public Boolean backDay(Long id) { + //通过id 获取销假数据 XjglDO xjglDO = xjglMapper.selectById(id); + // 通过销假数据 设置年假 pagevo 来找到想要修改的年假数据 NjglPageReqVO njglPageReqVO = buildXjglReqVo(xjglDO); + // 使用njglMapper获取年假do并返回 do NjglDO njglDO = getNjglPage(njglPageReqVO); + // 判断do不为空 if (njglDO == null) { return false; } + // 把年假do转换为 njglRespVo类型 NjglRespVO njglRespVO = BeanUtils.toBean(njglDO, NjglRespVO.class); - //这里后面判断一下是不是年假 是年假在更改数据 + //这里后面判断一下是不是年假类型,是年假类型才更改数据 + // 这里是和请假逻辑最不一样的地方 主要是对数据的处理 , + // 这里是销假所以 减少使用天数 增加 剩余天数 + // 请假相反 并且还要处理数据状态 upDataRespVo2(njglRespVO,xjglDO); // if ((njglRespVO.getUsedDays().compareTo(BigDecimal.ZERO) < 0)&&(njglRespVO.getRemainingDays().compareTo(BigDecimal.valueOf(10)) > 0)) { // return false; // } - // 更新 + // 更新数据 返回true NjglDO updateObj = BeanUtils.toBean(njglRespVO, NjglDO.class); njglMapper.updateById(updateObj); return true; @@ -142,6 +150,7 @@ public class XjglServiceImpl implements XjglService { private NjglPageReqVO buildXjglReqVo(XjglDO xjglDO) { NjglPageReqVO njglPageReqVO = new NjglPageReqVO(); + // 根据传递的XjglDo 设置 njglPagevo的值 来获取想要的年假数据 njglPageReqVO.setUserId(xjglDO.getUserId()); njglPageReqVO.setUserName(xjglDO.getUserName()); njglPageReqVO.setDeptId(xjglDO.getDeptId()); @@ -151,6 +160,7 @@ public class XjglServiceImpl implements XjglService { } private NjglDO getNjglPage(NjglPageReqVO njglPageReqVO) { + // 通过的设置好的 njglvo 获取到对应的值 做下判断不为空 传递回去 PageResult pageResult = njglMapper.selectPage(njglPageReqVO); if (pageResult.getList().isEmpty()) { return null; @@ -158,6 +168,7 @@ public class XjglServiceImpl implements XjglService { return pageResult.getList().get(0); } + // 和请假管理主要是这里不同 不同的处理数据的逻辑 private void upDataRespVo2(NjglRespVO njglRespVO, XjglDO xjglDO) { njglRespVO.setRemainingDays(njglRespVO.getRemainingDays().add(xjglDO.getDay())); njglRespVO.setUsedDays(njglRespVO.getUsedDays().subtract(xjglDO.getDay())); @@ -165,6 +176,9 @@ public class XjglServiceImpl implements XjglService { @Override public Boolean XjglHistoryService(Long id, String processId) { + // 流程监听器是一起运行的所以需要判断, + // 判断id是否找得到数据,然后再判断这个节点的实例id和获取到的数据内出储存的实例id是否为同一个 + // 这样就可以判断想要处理,是不是对应的流程处理 XjglDO xjglDO = xjglMapper.selectById(id); if (xjglDO == null) { return false; diff --git a/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/xjgl/listenter/XjglEndListener.java b/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/xjgl/listenter/XjglEndListener.java index 426da0a..69367bd 100644 --- a/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/xjgl/listenter/XjglEndListener.java +++ b/yudao-module-home/yudao-module-home-biz/src/main/java/cn/iocoder/yudao/module/home/service/xjgl/listenter/XjglEndListener.java @@ -11,21 +11,25 @@ import static cn.iocoder.yudao.module.home.enums.ErrorCodeConstants.NJGL_BACK_DA @Component public class XjglEndListener implements ExecutionListener { + //继承 ExecutionListener 类 可接受FlowAble 流程数据 @Override public void notify(DelegateExecution delegateExecution) { - + // 流程监听 判断是不是流程 结束节点 if (delegateExecution.getEventName().equals("end")) { +// 通过 delegateExecution 类 获取想要的数据 String key = delegateExecution.getProcessInstanceBusinessKey(); Long XjId = Long.parseLong(key); String processId = delegateExecution.getProcessInstanceId(); + // 通过 ApplicationContextHandler 注入XjglServiceBean对象 XjglService xjglService = ApplicationContextHandler.getBean(XjglService.class); - + // 判断流程是否是销假流程 if (!xjglService.XjglHistoryService(XjId,processId)) { return; } + // 执行销假方法, 并判断是否正确执行 Boolean err = xjglService.backDay(XjId); if (!err) { throw exception(NJGL_BACK_DAY);