From 58a271b680785cce8665690653bbb6e765ef20b7 Mon Sep 17 00:00:00 2001 From: ma <1062634917@qq.com> Date: Thu, 22 Jul 2021 09:16:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E6=89=BE=E5=AE=9A=E6=9C=9F=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1,=E6=9C=89=E6=97=B6=E9=97=B4=E7=9A=84=E6=97=A5?= =?UTF-8?q?=E5=B8=B8=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/pom.xml | 30 +-- .../com/ccsens/common/CommonApplication.java | 14 +- .../com/ccsens/common/api/TaskController.java | 6 +- .../com/ccsens/common/bean/dto/TaskDto.java | 4 +- .../common/persist/dao/ProTaskDetailDao.java | 26 ++ .../ccsens/common/service/ITaskService.java | 8 + .../ccsens/common/service/TaskService.java | 48 +++- .../java/com/ccsens/common/util/Constant.java | 32 +++ .../resources/mapper_dao/ProTaskDetailDao.xml | 248 ++++++++++++++---- 9 files changed, 334 insertions(+), 82 deletions(-) create mode 100644 common/src/main/java/com/ccsens/common/util/Constant.java diff --git a/common/pom.xml b/common/pom.xml index 2a849448..90b9a1ac 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -48,21 +48,21 @@ - + + + + + + + + + + + + + + + diff --git a/common/src/main/java/com/ccsens/common/CommonApplication.java b/common/src/main/java/com/ccsens/common/CommonApplication.java index 5c614671..df396f80 100644 --- a/common/src/main/java/com/ccsens/common/CommonApplication.java +++ b/common/src/main/java/com/ccsens/common/CommonApplication.java @@ -11,13 +11,13 @@ ///** // * @author ma // */ -////@MapperScan(basePackages = {"com.ccsens.common.persist.*"}) -////@ServletComponentScan -////@EnableAsync -//////开启断路器功能 -////@EnableCircuitBreaker -////@EnableFeignClients(basePackages = "com.ccsens.cloudutil.feign") -////@SpringBootApplication(scanBasePackages = "com.ccsens") +//@MapperScan(basePackages = {"com.ccsens.common.persist.*"}) +//@ServletComponentScan +//@EnableAsync +////开启断路器功能 +//@EnableCircuitBreaker +//@EnableFeignClients(basePackages = "com.ccsens.cloudutil.feign") +//@SpringBootApplication(scanBasePackages = "com.ccsens") //public class CommonApplication { // public static void main(String[] args) { // SpringApplication.run(CommonApplication.class,args); diff --git a/common/src/main/java/com/ccsens/common/api/TaskController.java b/common/src/main/java/com/ccsens/common/api/TaskController.java index 5dbfab1e..327ab6dc 100644 --- a/common/src/main/java/com/ccsens/common/api/TaskController.java +++ b/common/src/main/java/com/ccsens/common/api/TaskController.java @@ -56,9 +56,9 @@ // @RequestMapping(value = "/regular", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) // public JsonResponse> queryRegularTask(@ApiParam @Validated @RequestBody QueryDto params) { // log.info("查找带时间的定期任务开始{}",params); -// -// log.info("查找带时间的定期任务结束{}"); -// return JsonResponse.newInstance().ok(); +// List regularTask = taskService.queryRegularTask(params.getParam(), params.getUserId()); +// log.info("查找带时间的定期任务结束{}",regularTask); +// return JsonResponse.newInstance().ok(regularTask); // } // //} diff --git a/common/src/main/java/com/ccsens/common/bean/dto/TaskDto.java b/common/src/main/java/com/ccsens/common/bean/dto/TaskDto.java index 4b457457..a1262df1 100644 --- a/common/src/main/java/com/ccsens/common/bean/dto/TaskDto.java +++ b/common/src/main/java/com/ccsens/common/bean/dto/TaskDto.java @@ -28,7 +28,7 @@ public class TaskDto { private Long roleId; @ApiModelProperty("时间基准点 默认当前") private Long timeNode = System.currentTimeMillis(); - @ApiModelProperty("时间基准点 默认天") + @ApiModelProperty("时间颗粒度单位 默认天") private int timeUnit = 4; } @@ -40,7 +40,7 @@ public class TaskDto { private Long roleId; @ApiModelProperty("时间基准点 默认当前") private Long timeNode = System.currentTimeMillis(); - @ApiModelProperty("时间基准点 默认天") + @ApiModelProperty("时间颗粒度 默认天") private int timeUnit = 4; @ApiModelProperty("0向上查找 1向下查找(默认) 下查包含自己,上查不包含") private int queryType = 1; diff --git a/common/src/main/java/com/ccsens/common/persist/dao/ProTaskDetailDao.java b/common/src/main/java/com/ccsens/common/persist/dao/ProTaskDetailDao.java index 5049a8d2..481672d0 100644 --- a/common/src/main/java/com/ccsens/common/persist/dao/ProTaskDetailDao.java +++ b/common/src/main/java/com/ccsens/common/persist/dao/ProTaskDetailDao.java @@ -27,4 +27,30 @@ public interface ProTaskDetailDao extends ProTaskDetailMapper { * @return 日常任务列表 */ List queryGlobalTask(@Param("roleId") Long roleId,@Param("timeNode") Long timeNode,@Param("timeUnit") int timeUnit); + + /** + * 根据时间和角色查找定期任务 + * @param roleId 角色id + * @param timeUnit 时间单位 + * @param timeNode 时间节点 + * @param queryType 查询类型 + * @param query 查询颗粒度数量 + * @param timeFormat 时间格式 + * @return 定期任务列表 + */ + List queryRegularTask(@Param("roleId") Long roleId,@Param("timeUnit") int timeUnit,@Param("timeNode") Long timeNode + ,@Param("queryType") int queryType,@Param("query") String query,@Param("timeFormat") String timeFormat); + + /** + * 继续向上/向下查找 + * @param roleId 角色id + * @param timeUnit 时间单位 + * @param timeNode 时间节点 + * @param queryType 查询类型 + * @param query 查询颗粒度数量 + * @param timeFormat 时间格式 + * @return 定期任务列表 + */ + List continueQueryTask(@Param("roleId") Long roleId,@Param("timeUnit") int timeUnit,@Param("timeNode") Long timeNode + ,@Param("queryType") int queryType,@Param("query") String query,@Param("timeFormat") String timeFormat); } diff --git a/common/src/main/java/com/ccsens/common/service/ITaskService.java b/common/src/main/java/com/ccsens/common/service/ITaskService.java index e8a11a1d..18693c09 100644 --- a/common/src/main/java/com/ccsens/common/service/ITaskService.java +++ b/common/src/main/java/com/ccsens/common/service/ITaskService.java @@ -24,4 +24,12 @@ public interface ITaskService { * @return 日常任务列表 */ List queryGlobalTask(TaskDto.QueryGlobalTask param, Long userId); + + /** + * 根据时间和角色查找定期任务 + * @param param 角色id,时间基准点,时间颗粒度,查找类型,查找数量 + * @param userId 用户id + * @return 定期任务列表 + */ + List queryRegularTask(TaskDto.QueryRegularTask param, Long userId); } diff --git a/common/src/main/java/com/ccsens/common/service/TaskService.java b/common/src/main/java/com/ccsens/common/service/TaskService.java index 93a023bf..85e3827a 100644 --- a/common/src/main/java/com/ccsens/common/service/TaskService.java +++ b/common/src/main/java/com/ccsens/common/service/TaskService.java @@ -6,15 +6,18 @@ import cn.hutool.core.util.ObjectUtil; import com.ccsens.common.bean.dto.TaskDto; import com.ccsens.common.bean.vo.TaskVo; import com.ccsens.common.persist.dao.*; +import com.ccsens.common.util.Constant; import com.ccsens.util.exception.BaseException; import lombok.extern.slf4j.Slf4j; +import lombok.val; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.List; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.stream.Collectors; /** * @author ma @@ -135,4 +138,45 @@ public class TaskService implements ITaskService{ return globalTask; } + @Override + public List queryRegularTask(TaskDto.QueryRegularTask param, Long userId) { + //查找类型:0向上查找,1向下查找(默认),下查包含自己,上查不包含 + String query = ""; + String timeFormat = Constant.timeFormat.get(param.getTimeUnit()); + String unit = Constant.timeUnit.get(param.getTimeUnit()); + if (0 == param.getQueryType()){ + query = "interval -"+param.getQueryNum()+" "+unit; + }else{ + query +="interval "+param.getQueryNum()+" "+unit; + } + //查找角色权限 + Boolean isLook = queryRoleIsLook(param.getRoleId(),userId); + if (BooleanUtil.isFalse(isLook)){ + throw new BaseException("没有查看权限!"); + } + //TODO 季度未实现 + List regularTask = taskDetailDao.queryRegularTask(param.getRoleId(),param.getTimeUnit(),param.getTimeNode(),param.getQueryType(),query,timeFormat); + //如果该时段没有任务向上或向下补充 + if (CollectionUtil.isEmpty(regularTask)) { + List replenishTask = taskDetailDao.continueQueryTask(param.getRoleId(), param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat); + Map> taskMap = replenishTask.stream().collect(Collectors.groupingBy(task -> new SimpleDateFormat("yyyy-MM-dd").format(new Date(task.getPlanStart())))); + List mapOfKey = new ArrayList<>(); + taskMap.forEach((key,val)->{ + mapOfKey.add(key); + }); + if (0 == param.getQueryType()){ + String max = Collections.max(mapOfKey); + queryPluginForTask(taskMap.get(max)); + return taskMap.get(max); + }else{ + String min = Collections.min(mapOfKey); + queryPluginForTask(taskMap.get(min)); + return taskMap.get(min); + } + + } + queryPluginForTask(regularTask); + return regularTask; + } + } diff --git a/common/src/main/java/com/ccsens/common/util/Constant.java b/common/src/main/java/com/ccsens/common/util/Constant.java new file mode 100644 index 00000000..4d11bb11 --- /dev/null +++ b/common/src/main/java/com/ccsens/common/util/Constant.java @@ -0,0 +1,32 @@ +package com.ccsens.common.util; + +import java.util.HashMap; +import java.util.Map; + +/** + * 常量相关 + * @author AUSU + */ +public class Constant { + public static Map timeUnit = new HashMap<>(); + public static Map timeFormat = new HashMap<>(); + static { + timeUnit.put(1,"SECOND"); + timeUnit.put(2,"MINUTE"); + timeUnit.put(3,"HOUR"); + timeUnit.put(4,"DAY"); + timeUnit.put(5,"WEEK"); + timeUnit.put(6,"MONTH"); + timeUnit.put(7,"QUARTER"); + timeUnit.put(8,"YEAR"); + timeFormat.put(1,"%Y-%m-%d %h:%m:%s"); + timeFormat.put(2,"%Y-%m-%d %h:%m"); + timeFormat.put(3,"%Y-%m-%d %h"); + timeFormat.put(4,"%Y-%m-%d"); + timeFormat.put(5,"%Y-%u"); + timeFormat.put(6,"%Y-%m"); + timeFormat.put(7,"7"); + timeFormat.put(8,"%Y"); + } + +} diff --git a/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml b/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml index a8d02051..02826fee 100644 --- a/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml +++ b/common/src/main/resources/mapper_dao/ProTaskDetailDao.xml @@ -68,66 +68,208 @@ + + + + \ No newline at end of file