Browse Source

Merge branch 'tall3' of dd.tall.wiki:ccsens_wiki/ccsenscloud into tall3

tall3
zy_Java 4 years ago
parent
commit
f9a0b7104a
  1. 30
      common/pom.xml
  2. 14
      common/src/main/java/com/ccsens/common/CommonApplication.java
  3. 6
      common/src/main/java/com/ccsens/common/api/TaskController.java
  4. 4
      common/src/main/java/com/ccsens/common/bean/dto/TaskDto.java
  5. 26
      common/src/main/java/com/ccsens/common/persist/dao/ProTaskDetailDao.java
  6. 8
      common/src/main/java/com/ccsens/common/service/ITaskService.java
  7. 49
      common/src/main/java/com/ccsens/common/service/TaskService.java
  8. 32
      common/src/main/java/com/ccsens/common/util/Constant.java
  9. 248
      common/src/main/resources/mapper_dao/ProTaskDetailDao.xml

30
common/pom.xml

@ -48,21 +48,21 @@
</dependency>
</dependencies>
</plugin>
<!--<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.ccsens.signin.SigninApplication</mainClass>
&lt;!&ndash;<skip>true</skip>&ndash;&gt;
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>-->
<!-- &lt;!&ndash;<plugin>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-maven-plugin</artifactId>-->
<!-- <configuration>-->
<!-- <mainClass>com.ccsens.signin.SigninApplication</mainClass>-->
<!-- &lt;!&ndash;<skip>true</skip>&ndash;&gt;-->
<!-- </configuration>-->
<!-- <executions>-->
<!-- <execution>-->
<!-- <goals>-->
<!-- <goal>repackage</goal>-->
<!-- </goals>-->
<!-- </execution>-->
<!-- </executions>-->
<!-- </plugin>&ndash;&gt;-->
</plugins>
</build>

14
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);

6
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<List<TaskVo.QueryTask>> queryRegularTask(@ApiParam @Validated @RequestBody QueryDto<TaskDto.QueryRegularTask> params) {
// log.info("查找带时间的定期任务开始{}",params);
//
// log.info("查找带时间的定期任务结束{}");
// return JsonResponse.newInstance().ok();
// List<TaskVo.QueryTask> regularTask = taskService.queryRegularTask(params.getParam(), params.getUserId());
// log.info("查找带时间的定期任务结束{}",regularTask);
// return JsonResponse.newInstance().ok(regularTask);
// }
//
//}

4
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;

26
common/src/main/java/com/ccsens/common/persist/dao/ProTaskDetailDao.java

@ -27,4 +27,30 @@ public interface ProTaskDetailDao extends ProTaskDetailMapper {
* @return 日常任务列表
*/
List<TaskVo.QueryTask> 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<TaskVo.QueryTask> 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<TaskVo.QueryTask> 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);
}

8
common/src/main/java/com/ccsens/common/service/ITaskService.java

@ -24,4 +24,12 @@ public interface ITaskService {
* @return 日常任务列表
*/
List<TaskVo.QueryTask> queryGlobalTask(TaskDto.QueryGlobalTask param, Long userId);
/**
* 根据时间和角色查找定期任务
* @param param 角色id,时间基准点,时间颗粒度,查找类型,查找数量
* @param userId 用户id
* @return 定期任务列表
*/
List<TaskVo.QueryTask> queryRegularTask(TaskDto.QueryRegularTask param, Long userId);
}

49
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
@ -86,6 +89,7 @@ public class TaskService implements ITaskService{
if (ObjectUtil.isNotNull(queryTask.getPanel())){
int panelRow = queryTask.getPanel().getRow();
int panelCol = queryTask.getPanel().getCol();
//创建任务面板的二维数组
for (int i = 0; i < panelRow; i++) {
List<TaskVo.TaskPluginInfo> pluginInfoList = new ArrayList<>();
for (int j = 0; j < panelCol; j++) {
@ -93,6 +97,7 @@ public class TaskService implements ITaskService{
}
plugins.add(pluginInfoList);
}
//将插件放入二维数组对应的位置中
List<TaskVo.TaskPluginInfo> taskPluginInfoList = taskPluginDao.queryTaskOfPlugin(queryTask.getDetailId());
for (TaskVo.TaskPluginInfo taskPlugin : taskPluginInfoList) {
int pluginCol = taskPlugin.getCol();
@ -135,4 +140,44 @@ public class TaskService implements ITaskService{
return globalTask;
}
@Override
public List<TaskVo.QueryTask> 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<TaskVo.QueryTask> regularTask = taskDetailDao.queryRegularTask(param.getRoleId(),param.getTimeUnit(),param.getTimeNode(),param.getQueryType(),query,timeFormat);
//如果该时段没有任务向上或向下补充
if (CollectionUtil.isEmpty(regularTask)) {
List<TaskVo.QueryTask> replenishTask = taskDetailDao.continueQueryTask(param.getRoleId(), param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat);
Map<String, List<TaskVo.QueryTask>> taskMap = replenishTask.stream().collect(Collectors.groupingBy(task -> new SimpleDateFormat("yyyy-MM-dd").format(new Date(task.getPlanStart()))));
List<String> 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;
}
}

32
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<Integer,String> timeUnit = new HashMap<>();
public static Map<Integer,String> 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");
}
}

248
common/src/main/resources/mapper_dao/ProTaskDetailDao.xml

@ -68,66 +68,208 @@
<select id="queryGlobalTask" resultType="com.ccsens.common.bean.vo.TaskVo$QueryTask">
SELECT
alltask.*
alltask.*
FROM
(
SELECT
ts.id,
td.id AS detailId,
td.`name`,
td.description,
ts.plan_start_time AS planStart,
ts.plan_duration,
ts.real_start_time AS realStart,
ts.real_duration,
ts.task_status AS process,
tf.flow_type AS skip,
tf.jump_task_detail_id AS skipTaskId,
tpi.back_color AS backgroundColor,
tpi.round_corner AS borderRadius,
tpi.border AS border,
tpi.shadow AS shadow,
tpi.width AS width,
tpi.height AS height,
tpi.`row` AS `row`,
tpi.col AS col
ts.id,
td.id AS detailId,
td.`name`,
td.description,
ts.plan_start_time AS planStart,
ts.plan_duration,
ts.real_start_time AS realStart,
ts.real_duration,
ts.task_status AS process,
tf.flow_type AS skip,
tf.jump_task_detail_id AS skipTaskId,
tpi.back_color AS backgroundColor,
tpi.round_corner AS borderRadius,
tpi.border AS border,
tpi.shadow AS shadow,
tpi.width AS width,
tpi.height AS height,
tpi.`row` AS `row`,
tpi.col AS col
FROM
t_pro_task_detail AS td
LEFT JOIN t_pro_task_sub AS ts ON ts.task_detail_id = td.id
LEFT JOIN t_pro_task_flow AS tf ON tf.task_detail_id = td.id
AND tf.rec_status = 0
LEFT JOIN t_pro_role_task AS rt ON rt.task_id = td.id
LEFT JOIN t_pro_task_panel_info AS tpi ON tpi.task_detail_id = td.id
AND tpi.rec_status = 0
LEFT JOIN t_label_business AS lb ON td.id = lb.business_id
LEFT JOIN t_label AS l ON l.id = lb.label_id
LEFT JOIN t_label_type AS lt ON lt.id = l.label_type_id
t_pro_task_detail AS td
LEFT JOIN t_pro_task_sub AS ts ON ts.task_detail_id = td.id
LEFT JOIN t_pro_task_flow AS tf ON tf.task_detail_id = td.id
AND tf.rec_status = 0
LEFT JOIN t_pro_role_task AS rt ON rt.task_id = td.id
LEFT JOIN t_pro_task_panel_info AS tpi ON tpi.task_detail_id = td.id
AND tpi.rec_status = 0
LEFT JOIN t_label_business AS lb ON td.id = lb.business_id
LEFT JOIN t_label AS l ON l.id = lb.label_id
LEFT JOIN t_label_type AS lt ON lt.id = l.label_type_id
WHERE
td.rec_status = 0
AND ts.rec_status = 0
AND lb.rec_status = 0
AND l.rec_status = 0
AND lt.rec_status = 0
AND rt.rec_status = 0
AND lb.business_type = 0
AND l.`level` = 2
AND lt.label_type = 1
AND ts.plan_start_time != 0
AND ts.plan_duration != 0
AND rt.role_id = #{roleId}
AND ts.plan_start_time &lt;= #{timeNode}
AND ts.plan_end_time &gt;= #{timeNode}
td.rec_status = 0
AND ts.rec_status = 0
AND lb.rec_status = 0
AND l.rec_status = 0
AND lt.rec_status = 0
AND rt.rec_status = 0
AND lb.business_type = 0
AND l.`level` = 2
AND lt.label_type = 1
AND ts.plan_start_time != 0
AND ts.plan_duration != 0
AND rt.role_id = #{roleId}
AND ts.plan_start_time &lt;= #{timeNode}
AND ts.plan_end_time &gt;= #{timeNode}
) AS alltask
LEFT JOIN t_label_business AS llbb ON alltask.detailId = llbb.business_id
LEFT JOIN t_label AS ll ON llbb.label_id = ll.id
LEFT JOIN t_label_type AS lltt ON ll.label_type_id = lltt.id
WHERE
llbb.rec_status = 0
AND ll.rec_status = 0
AND lltt.rec_status = 0
AND lltt.label_type = 0
AND llbb.business_type = 0
AND ll.`level` >= #{timeUnit}
</select>
<select id="queryRegularTask" resultType="com.ccsens.common.bean.vo.TaskVo$QueryTask">
SELECT
alltask.*
FROM
(
SELECT
ts.id,
td.id AS detailId,
td.`name`,
td.description,
ts.plan_start_time AS planStart,
ts.plan_duration,
ts.real_start_time AS realStart,
ts.real_duration,
ts.task_status AS process,
tf.flow_type AS skip,
tf.jump_task_detail_id AS skipTaskId,
tpi.back_color AS backgroundColor,
tpi.round_corner AS borderRadius,
tpi.border AS border,
tpi.shadow AS shadow,
tpi.width AS width,
tpi.height AS height,
tpi.`row` AS `row`,
tpi.col AS col
FROM
t_pro_task_detail AS td
LEFT JOIN t_pro_task_sub AS ts ON ts.task_detail_id = td.id
LEFT JOIN t_pro_task_flow AS tf ON tf.task_detail_id = td.id AND tf.rec_status = 0
LEFT JOIN t_pro_role_task AS rt ON rt.task_id = td.id
LEFT JOIN t_pro_task_panel_info AS tpi ON tpi.task_detail_id = td.id AND tpi.rec_status = 0
LEFT JOIN t_label_business AS lb ON td.id = lb.business_id
LEFT JOIN t_label AS l ON l.id = lb.label_id
LEFT JOIN t_label_type AS lt ON lt.id = l.label_type_id
WHERE
td.rec_status = 0
AND ts.rec_status = 0
AND lb.rec_status = 0
AND l.rec_status = 0
AND lt.rec_status = 0
AND rt.rec_status = 0
AND lb.business_type = 0
AND l.`level` = 3
AND lt.label_type = 1
AND ts.plan_start_time != 0
AND ts.plan_duration != 0
AND rt.role_id = #{roleId}
<if test="queryType==0 and timeUnit != 7">
AND FROM_UNIXTIME(plan_start_time/1000,#{timeFormat}) &lt;= FROM_UNIXTIME((#{timeNode}-86400000)/1000,#{timeFormat})
AND FROM_UNIXTIME(plan_start_time/1000,#{timeFormat}) &gt;= DATE_ADD(FROM_UNIXTIME(#{timeNode}/1000,#{timeFormat}),${query})
</if>
<if test="queryType==1 and timeUnit != 7">
AND FROM_UNIXTIME(plan_start_time/1000,#{timeFormat}) &gt;= FROM_UNIXTIME(#{timeNode}/1000,#{timeFormat})
AND FROM_UNIXTIME(plan_start_time/1000,#{timeFormat}) &lt;=DATE_ADD(FROM_UNIXTIME(#{timeNode}/1000,#{timeFormat}),${query})
</if>
<if test="queryType==0 and timeUnit == 7">
AND CONCAT(FROM_UNIXTIME(plan_start_time/1000,'%Y'),QUARTER(FROM_UNIXTIME(plan_start_time/1000))) &lt;= CONCAT(FROM_UNIXTIME(plan_start_time/1000,'%Y'),QUARTER(FROM_UNIXTIME(plan_start_time/1000)))
AND CONCAT(FROM_UNIXTIME(plan_start_time/1000,'%Y'),QUARTER(FROM_UNIXTIME(plan_start_time/1000))) &gt;= DATE_ADD(FROM_UNIXTIME(#{timeNode}/1000,#{timeFormat}),${query})
</if>
<if test="queryType==1 and timeUnit == 7">
AND FROM_UNIXTIME(plan_start_time/1000,#{timeFormat}) &gt;= FROM_UNIXTIME(#{timeNode}/1000,#{timeFormat})
AND FROM_UNIXTIME(plan_start_time/1000,#{timeFormat}) &lt;=DATE_ADD(FROM_UNIXTIME(#{timeNode}/1000,#{timeFormat}),${query})
</if>
) AS alltask
LEFT JOIN t_label_business AS llbb ON alltask.detailId = llbb.business_id
LEFT JOIN t_label AS ll ON llbb.label_id = ll.id
LEFT JOIN t_label_type AS lltt ON ll.label_type_id = lltt.id
WHERE
llbb.rec_status = 0
AND ll.rec_status = 0
AND lltt.rec_status = 0
AND lltt.label_type = 0
AND llbb.business_type = 0
AND ll.`level` >= #{timeUnit}
</select>
<select id="continueQueryTask" resultType="com.ccsens.common.bean.vo.TaskVo$QueryTask">
SELECT
alltask.*
FROM
(
SELECT
ts.id,
td.id AS detailId,
td.`name`,
td.description,
ts.plan_start_time AS planStart,
ts.plan_duration,
ts.real_start_time AS realStart,
ts.real_duration,
ts.task_status AS process,
tf.flow_type AS skip,
tf.jump_task_detail_id AS skipTaskId,
tpi.back_color AS backgroundColor,
tpi.round_corner AS borderRadius,
tpi.border AS border,
tpi.shadow AS shadow,
tpi.width AS width,
tpi.height AS height,
tpi.`row` AS `row`,
tpi.col AS col
FROM
t_pro_task_detail AS td
LEFT JOIN t_pro_task_sub AS ts ON ts.task_detail_id = td.id
LEFT JOIN t_pro_task_flow AS tf ON tf.task_detail_id = td.id AND tf.rec_status = 0
LEFT JOIN t_pro_role_task AS rt ON rt.task_id = td.id
LEFT JOIN t_pro_task_panel_info AS tpi ON tpi.task_detail_id = td.id AND tpi.rec_status = 0
LEFT JOIN t_label_business AS lb ON td.id = lb.business_id
LEFT JOIN t_label AS l ON l.id = lb.label_id
LEFT JOIN t_label_type AS lt ON lt.id = l.label_type_id
WHERE
td.rec_status = 0
AND ts.rec_status = 0
AND lb.rec_status = 0
AND l.rec_status = 0
AND lt.rec_status = 0
AND rt.rec_status = 0
AND lb.business_type = 0
AND l.`level` = 3
AND lt.label_type = 1
AND ts.plan_start_time != 0
AND ts.plan_duration != 0
AND rt.role_id = #{roleId}
<if test="queryType==0 and timeUnit != 7">
AND FROM_UNIXTIME(ts.plan_start_time / 1000 ,#{timeFormat}) &lt;= FROM_UNIXTIME((#{timeNode}-86400000)/ 1000 ,#{timeFormat})
</if>
<if test="queryType==1 and timeUnit != 7">
AND FROM_UNIXTIME(ts.plan_start_time / 1000 ,#{timeFormat}) &gt;= FROM_UNIXTIME((#{timeNode})/ 1000 ,#{timeFormat})
</if>
) AS alltask
LEFT JOIN t_label_business AS llbb ON alltask.detailId = llbb.business_id
LEFT JOIN t_label AS ll ON llbb.label_id = ll.id
LEFT JOIN t_label_type AS lltt ON ll.label_type_id = lltt.id
LEFT JOIN t_label_business AS llbb ON alltask.detailId = llbb.business_id
LEFT JOIN t_label AS ll ON llbb.label_id = ll.id
LEFT JOIN t_label_type AS lltt ON ll.label_type_id = lltt.id
WHERE
llbb.rec_status = 0
AND ll.rec_status = 0
AND lltt.rec_status = 0
AND lltt.label_type = 0
AND llbb.business_type = 0
AND ll.`level` >= #{timeUnit}
llbb.rec_status = 0
AND ll.rec_status = 0
AND lltt.rec_status = 0
AND lltt.label_type = 0
AND llbb.business_type = 0
AND ll.`level` >= #{timeUnit}
</select>
</mapper>
Loading…
Cancel
Save