From fa22c77e185ab4a3ff4112d51e41f07650134fd0 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Thu, 12 Sep 2024 21:38:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96=E5=A4=96?= =?UTF-8?q?=E5=87=BA=E7=94=B3=E8=AF=B7=E5=88=97=E8=A1=A8RPC=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=8F=8A=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加了一个新的RPC接口`BpmOAGoOutApi`,用于获取当日及昨日外出的用户编号列表。该接口通过调用`BpmOAGoOutService`服务获取数据,并返回结果。相关实现类`BpmOAGoOutApiImpl`中使用了`goOutService`服务来处理具体的业务逻辑,包括根据日期查询外出申请信息,并将结果转换为指定格式返回。 - 新增`BpmOAGoOutApi`接口,定义了`getLeaveListByTime`方法。 - 实现`BpmOAGoOutApiImpl`类,提供了`getLeaveListByTime`方法的具体实现。 - 扩展`BpmOAGoOutService`接口,增加`getGoOutByStartTime`方法用于按开始时间查询外出申请。 - 修改`BpmOAGoOutServiceImpl`,添加对`getGoOutByStartTime`的支持。- 优化外出申请创建逻辑,判断申请是否为当天外出,并相应设置外勤打卡权限。 --- .../module/bpm/api/oa/BpmOAGoOutApi.java | 22 +++++++++ .../module/bpm/api/oa/BpmOAGoOutApiImpl.java | 46 +++++++++++++++++++ .../bpm/service/oa/BpmOAGoOutService.java | 10 ++++ .../bpm/service/oa/BpmOAGoOutServiceImpl.java | 16 ++++++- 4 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/oa/BpmOAGoOutApi.java create mode 100644 yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/api/oa/BpmOAGoOutApiImpl.java diff --git a/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/oa/BpmOAGoOutApi.java b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/oa/BpmOAGoOutApi.java new file mode 100644 index 00000000..dfc9290e --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/api/oa/BpmOAGoOutApi.java @@ -0,0 +1,22 @@ +package cn.iocoder.yudao.module.bpm.api.oa; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.bpm.enums.ApiConstants; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.List; +import java.util.Map; + +@FeignClient(name = ApiConstants.NAME) // TODO 芋艿:fallbackFactory = +@Tag(name = "RPC 服务 - 流程实例") +public interface BpmOAGoOutApi { + + String PREFIX = ApiConstants.PREFIX + "/oa/goOut"; + + @GetMapping(PREFIX + "/getGoOutByTime") + @Operation(summary = "获取当日以及昨日外出的用户编号") + CommonResult>> getLeaveListByTime(); +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/api/oa/BpmOAGoOutApiImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/api/oa/BpmOAGoOutApiImpl.java new file mode 100644 index 00000000..034e0d56 --- /dev/null +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/api/oa/BpmOAGoOutApiImpl.java @@ -0,0 +1,46 @@ +package cn.iocoder.yudao.module.bpm.api.oa; + +import cn.iocoder.yudao.framework.common.pojo.CommonResult; +import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAGoOutDO; +import cn.iocoder.yudao.module.bpm.service.oa.BpmOAGoOutService; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.RestController; + +import javax.annotation.Resource; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; + +/** + * Flowable 流程实例 Api 实现类 + * + + * @author jason + */ +@RestController +@Validated +public class BpmOAGoOutApiImpl implements BpmOAGoOutApi{ + + @Resource + private BpmOAGoOutService goOutService; + + @Override + public CommonResult>> getLeaveListByTime() { + + // 定义格式化模式 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + + List goOutNow = goOutService.getGoOutByStartTime(LocalDate.now().format(formatter)); + List goOutYesterday = goOutService.getGoOutByStartTime(LocalDate.now().minusDays(1).format(formatter)); + + Map> result = new HashMap<>(); + result.put("now", convertList(goOutNow, BpmOAGoOutDO::getUserId)); + result.put("yesterday", convertList(goOutYesterday, BpmOAGoOutDO::getUserId)); + return success(result); + } +} diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAGoOutService.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAGoOutService.java index 1e88459c..15567850 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAGoOutService.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAGoOutService.java @@ -3,6 +3,9 @@ package cn.iocoder.yudao.module.bpm.service.oa; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.goOut.BpmOAGoOutCreateReqVO; import cn.iocoder.yudao.module.bpm.dal.dataobject.oa.BpmOAGoOutDO; +import java.time.LocalDate; +import java.util.List; + public interface BpmOAGoOutService { /** @@ -34,4 +37,11 @@ public interface BpmOAGoOutService { * @return 外出申请 */ BpmOAGoOutDO getGoOut(Long id); + + /** + * 获得指定开始时间的外出申请 + * @param time 时间 + * @return 外出申请 + */ + List getGoOutByStartTime(String time); } diff --git a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAGoOutServiceImpl.java b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAGoOutServiceImpl.java index 78187293..01c9ba60 100644 --- a/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAGoOutServiceImpl.java +++ b/yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/BpmOAGoOutServiceImpl.java @@ -1,5 +1,6 @@ package cn.iocoder.yudao.module.bpm.service.oa; +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; import cn.iocoder.yudao.module.bpm.controller.admin.oa.vo.goOut.BpmOAGoOutCreateReqVO; import cn.iocoder.yudao.module.bpm.controller.admin.upload.UploadUserFile; @@ -15,6 +16,7 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; +import java.time.LocalDate; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -79,8 +81,11 @@ public class BpmOAGoOutServiceImpl extends BpmOABaseService implements BpmOAGoOu uploadBpmFileProcessInstanceId(processInstanceId,fileItems) ; } - // 发起外出申请后,设置外勤打卡权限 - userApi.updateFieldwork(getLoginUserId(), 1); + // 发起外出申请后,判断是否是当天的外出 + if (goOut.getStartTime().toLocalDate().isEqual(LocalDate.now())) { + // 设置外勤打卡权限 + userApi.updateFieldwork(getLoginUserId(), 1); + } return goOut.getId(); } @@ -115,6 +120,13 @@ public class BpmOAGoOutServiceImpl extends BpmOABaseService implements BpmOAGoOu return goOutMapper.selectById(id); } + @Override + public List getGoOutByStartTime(String time) { + + return goOutMapper.selectList(new LambdaQueryWrapperX() + .likeIfPresent(BpmOAGoOutDO::getStartTime, time)); + } + private void validateLeaveExists(Long id) { if (goOutMapper.selectById(id) == null) { throw exception(OA_GOOut_NOT_EXISTS);