diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java index dd924c0..6847651 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java @@ -640,14 +640,15 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist switch (dateType) { case 0: - LocalDate today = LocalDate.now(); - LocalDate startDate = today.minusMonths(6) - .with(TemporalAdjusters.firstDayOfMonth()); + // 获取当前日期 + LocalDate localDate = LocalDate.now(); - LocalDate endDate = today.with(TemporalAdjusters.lastDayOfMonth()); + // 计算当前日期的六个月前的日期 + LocalDate sixMonthsAgo = localDate.minusMonths(6); + + result.put("startTime", sixMonthsAgo.format(formatter)); + result.put("endTime", localDate.format(formatter)); - result.put("startTime",startDate.format(formatter)); - result.put("endTime",endDate.format(formatter)); break; case 1: // 年 LocalDate currentDate = LocalDate.now(); diff --git a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml index 2a106aa..d044dc9 100644 --- a/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml +++ b/dk-modules/business/src/main/resources/mapper/business/BusinessAlertMapper.xml @@ -532,6 +532,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" warning_summary ws LEFT JOIN business_alert ba ON ws.label_en = ba.label_en and ba.handle_type != 'verify' + and ba.del_flag = '0' and = #{startTime} ]]> and and ws.label_en in diff --git a/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysMenuController.java b/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysMenuController.java index c69e134..d03d784 100644 --- a/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysMenuController.java +++ b/dk-modules/system/src/main/java/org/dromara/system/controller/system/SysMenuController.java @@ -43,7 +43,7 @@ public class SysMenuController extends BaseController { * * @return 路由信息 */ - @ApiEncrypt(response=true) +// @ApiEncrypt(response=true) @GetMapping("/{platformType}/getRouters") public R> getRouters(@PathVariable String platformType) { List menus = menuService.selectMenuTreeByUserId(LoginHelper.getUserId(),platformType); diff --git a/dk-modules/workflow/pom.xml b/dk-modules/workflow/pom.xml index c0160e2..85fc4d6 100644 --- a/dk-modules/workflow/pom.xml +++ b/dk-modules/workflow/pom.xml @@ -118,6 +118,11 @@ api-system + + org.dromara + common-encrypt + + diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceMapper.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceMapper.java index 92809c8..e71fd57 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceMapper.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/mapper/FlwInstanceMapper.java @@ -7,6 +7,8 @@ import org.apache.ibatis.annotations.Param; import org.dromara.workflow.domain.bo.FlowInstanceBo; import org.dromara.workflow.domain.vo.FlowInstanceVo; +import java.util.List; + /** * 实例信息Mapper接口 * @@ -24,4 +26,6 @@ public interface FlwInstanceMapper { */ Page selectInstanceList(@Param("page") Page page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + + List listInsByDefinition(@Param("definitionId") Long definitionId); } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java index 99729c2..89eaafc 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/IFlwInstanceService.java @@ -156,4 +156,6 @@ public interface IFlwInstanceService { * @return 结果 */ boolean processInvalid(FlowInvalidBo bo); + + Boolean batchAddSign(Long definitionId); } diff --git a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java index 137ec97..f32008c 100644 --- a/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java +++ b/dk-modules/workflow/src/main/java/org/dromara/workflow/service/impl/FlwInstanceServiceImpl.java @@ -46,15 +46,19 @@ import org.dromara.workflow.common.enums.TaskStatusEnum; import org.dromara.workflow.domain.bo.FlowCancelBo; import org.dromara.workflow.domain.bo.FlowInstanceBo; import org.dromara.workflow.domain.bo.FlowInvalidBo; +import org.dromara.workflow.domain.bo.TaskOperationBo; import org.dromara.workflow.domain.vo.FlowHisTaskVo; import org.dromara.workflow.domain.vo.FlowInstanceVo; import org.dromara.workflow.domain.vo.FlowVariableVo; import org.dromara.workflow.handler.FlowProcessEventHandler; import org.dromara.workflow.mapper.FlwCategoryMapper; import org.dromara.workflow.mapper.FlwInstanceMapper; +import org.dromara.workflow.mapper.FlwTaskMapper; import org.dromara.workflow.service.IFlwCommonService; import org.dromara.workflow.service.IFlwInstanceService; +import org.dromara.workflow.service.IFlwTaskAssigneeService; import org.dromara.workflow.service.IFlwTaskService; +import org.dromara.workflow.utils.BatchProcessorUtil; import org.dromara.workflow.utils.MinioUntil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -78,12 +82,14 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { private final ChartService chartService; private final TaskService taskService; private final FlowHisTaskMapper flowHisTaskMapper; + private final FlwTaskMapper flwTaskMapper; private final FlowInstanceMapper flowInstanceMapper; private final FlowProcessEventHandler flowProcessEventHandler; private final IFlwTaskService flwTaskService; private final FlwInstanceMapper flwInstanceMapper; private final FlwCategoryMapper flwCategoryMapper; private final IFlwCommonService flwCommonService; + private final IFlwTaskAssigneeService flwTaskAssigneeService; @DubboReference private RemoteFileService remoteFileService; @@ -460,4 +466,77 @@ public class FlwInstanceServiceImpl implements IFlwInstanceService { throw new ServiceException(e.getMessage()); } } + + @Override + public Boolean batchAddSign(Long definitionId) { + try { + List instanceList = flwInstanceMapper.listInsByDefinition(definitionId); + + if (ObjectUtil.isEmpty(instanceList)) { + return true; + } + + //根据实例id查询所有的可执行的任务 + List insIdList = instanceList.stream().map(FlowInstanceVo::getId).distinct().toList(); + List flowTasks = flwTaskService.selectByInstIdList(insIdList); + + //拿到任务之后进行批量加签 + int startIndex = 0; + int batchSize = 1000; + boolean flag = BatchProcessorUtil.processBatches(flowTasks, batchSize, startIndex, batch -> { + batch.forEach(flowTask1 -> { + + //判断是否有人员,进行加签 + //获取当前任务的办理人 + List currentTaskUser = flwTaskService.currentTaskAllUser(flowTask1.getId()); + + Instance ins = insService.getById(flowTask1.getInstanceId()); + + //根据配置的人员查询系统中的用户 + String nodeCode = ins.getNodeCode(); + Integer nodeType = ins.getNodeType(); + List permissionUser = flwTaskMapper.getPermissionFlag(definitionId,nodeCode,nodeType); + String first = permissionUser.getFirst(); + + List totalUser = new ArrayList<>(); + + if (ObjectUtil.isNotEmpty(first)){ + String[] split = first.split("@@"); + for (String handleFlag : split) { + if (!handleFlag.equals("${handler}")){ + List remoteUserVos = flwTaskAssigneeService.fetchUsersByStorageId(handleFlag); + totalUser.addAll(remoteUserVos); + } + } + } + + //比较差值 + List different = totalUser.stream() + .filter(user -> currentTaskUser.stream().noneMatch(u -> u.getUserId().equals(user.getUserId()))) + .toList(); + + List userIds = different.stream() + .map(RemoteUserVo::getUserId) + .distinct() + .map(String::valueOf) + .toList(); + + //加签 + if (ObjectUtil.isNotEmpty(userIds)){ + TaskOperationBo taskOperationBo = new TaskOperationBo(); + taskOperationBo.setUserIds(userIds); + taskOperationBo.setTaskId(flowTask1.getId()); + + flwTaskService.taskOperation(taskOperationBo,"addSignature"); + } + }); + }); + + return flag; + } catch (Exception e) { + e.printStackTrace(); + log.error(e.getMessage(), e); + return false; + } + } } diff --git a/dk-modules/workflow/src/main/resources/mapper/workflow/FlwInstanceMapper.xml b/dk-modules/workflow/src/main/resources/mapper/workflow/FlwInstanceMapper.xml index 30e2267..deb702b 100644 --- a/dk-modules/workflow/src/main/resources/mapper/workflow/FlwInstanceMapper.xml +++ b/dk-modules/workflow/src/main/resources/mapper/workflow/FlwInstanceMapper.xml @@ -33,4 +33,24 @@ ${ew.getCustomSqlSegment} + +