Browse Source

20220401修改查看任务接口

master
unknown 3 years ago
parent
commit
a5ce4105c2
  1. 2
      src/main/java/com/ccsens/ptos_zero/persist/dao/ProTaskDetailDao.java
  2. 11
      src/main/java/com/ccsens/ptos_zero/persist/dao/ProTaskPluginDao.java
  3. 225
      src/main/java/com/ccsens/ptos_zero/service/TallService.java
  4. 2
      src/main/java/com/ccsens/ptos_zero/util/Constant.java
  5. 19
      src/main/resources/mapper_dao/ProTaskDetailDao.xml
  6. 28
      src/main/resources/mapper_dao/ProTaskPluginDao.xml

2
src/main/java/com/ccsens/ptos_zero/persist/dao/ProTaskDetailDao.java

@ -99,7 +99,7 @@ public interface ProTaskDetailDao extends ProTaskDetailMapper {
* @param roleId 角色id
* @return 返回任务列表
*/
List<TallTaskVo.QueryTask> pageQueryRegularTask(@Param("roleId")Long roleId, @Param("timeNode")Long timeNode, @Param("timeUnit")int timeUnit, @Param("queryType")int queryType);
List<TallTaskVo.QueryTask> pageQueryRegularTask(@Param("isPm")int isPm, @Param("projectId")Long projectId,@Param("roleId")Long roleId, @Param("timeNode")Long timeNode, @Param("timeUnit")int timeUnit, @Param("queryType")int queryType, @Param("taskId")Long taskId, @Param("triggerType")int triggerType);
// /**
// * 根据任务详情id查找项目id

11
src/main/java/com/ccsens/ptos_zero/persist/dao/ProTaskPluginDao.java

@ -13,13 +13,18 @@ import java.util.List;
*/
@Repository
public interface ProTaskPluginDao extends ProTaskPluginMapper {
// /**
// * 根据任务id查询已配置的插件
// * @param detailTaskId 任务详情id
// * @return 插件列表
// */
// List<TallTaskVo.TaskPluginInfo> queryTaskOfPlugin(@Param("detailTaskId") Long detailTaskId);
/**
* 根据任务id查询已配置的插件
* @param detailTaskId 任务详情id
* @param subId 任务分解id
* @return 插件列表
*/
List<TallTaskVo.TaskPluginInfo> queryTaskOfPlugin(@Param("detailTaskId") Long detailTaskId);
List<TallTaskVo.TaskPluginInfo> queryTaskOfPlugin(@Param("subId") Long subId);
/**
* 查询广告页或引导页
* @param taskDetailId 任务详情id

225
src/main/java/com/ccsens/ptos_zero/service/TallService.java

@ -13,6 +13,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.ccsens.ptos_zero.bean.po.ProRole;
import com.ccsens.ptos_zero.bean.po.ProRoleExample;
import com.ccsens.ptos_zero.bean.po.ProTaskSub;
import com.ccsens.ptos_zero.bean.po.ProUser;
import com.ccsens.ptos_zero.bean.vo.DeliverVo;
import com.ccsens.ptos_zero.persist.dao.*;
@ -82,7 +83,7 @@ public class TallService implements ITallService {
@SneakyThrows
@Override
public TallProjectVo.ProjectInfo importWbs(String token, MultipartFile params) {
public TallProjectVo.ProjectInfo importWbs(String token, MultipartFile params, Long parentId) {
//TODO 根据token获取用户信息
TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
if(ObjectUtil.isNull(userByToken)){
@ -427,6 +428,7 @@ public class TallService implements ITallService {
return regularTask;
}
/**
* 判断当前用户的角色是否被设置不可见(是否有权限查看任务)
*
@ -563,78 +565,78 @@ public class TallService implements ITallService {
}
}
/**
* 查看定期任务和任务下的插件展示信息
* @param token token
* @param param 查询条件
* @return 返回任务列表和对应的插件展示信息
*/
@Override
public List<TallTaskVo.QueryTask> queryRegularTaskAndPlugin(String token, TallTaskDto.QueryRegularTask param) {
//TODO 根据token获取用户信息
TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
if(ObjectUtil.isNull(userByToken)){
throw new BaseException(CodeEnum.NOT_LOGIN);
}
//通过手机号获取用户在服务内的userId
ProUser user = null;
if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){
user = userDao.getUserIdByPhone(userByToken.getPhone());
}
// if(ObjectUtil.isNull(user)){
// throw new BaseException(ZeroCodeError.NOT_USER_SERVER);
//
// /**
// * 查看定期任务和任务下的插件展示信息
// * @param token token
// * @param param 查询条件
// * @return 返回任务列表和对应的插件展示信息
// */
// @Override
// public List<TallTaskVo.QueryTask> queryRegularTaskAndPlugin(String token, TallTaskDto.QueryRegularTask param) {
// //TODO 根据token获取用户信息
// TallTokenVo.UserIdByToken userByToken = TokenUtil.getUserByToken(new TallTokenDto.GetUserByToken(token, Constant.APP_ID, Constant.APP_SECRET));
// if(ObjectUtil.isNull(userByToken)){
// throw new BaseException(CodeEnum.NOT_LOGIN);
// }
//查找类型:0向上查找,1向下查找(默认),下查包含自己,上查不包含
//根据参数配置sql语句
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() - 1) + " " + unit;
}
List<Long> roleIds = new ArrayList<>();
roleIds.add(param.getRoleId());
//TODO 季度未实现
List<TallTaskVo.QueryTask> regularTask = taskDetailDao.queryRegularTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat);
//如果该时段没有任务向上或向下补充
if (CollectionUtil.isEmpty(regularTask)) {
List<TallTaskVo.QueryTask> replenishTask = taskDetailDao.continueQueryTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat);
Map<String, List<TallTaskVo.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 (CollectionUtil.isNotEmpty(mapOfKey)) {
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(replenishTask);
//查询任务下的检查人
queryCheckerOfTask(replenishTask);
//TODO 查询插件展示信息
queryPluginShow(regularTask,user == null ? null : user.getId());
return replenishTask;
}
queryPluginForTask(regularTask);
//查询任务下的检查人
queryCheckerOfTask(regularTask);
//TODO 查询插件展示信息
queryPluginShow(regularTask,user == null ? null : user.getId());
return regularTask;
}
// //通过手机号获取用户在服务内的userId
// ProUser user = null;
// if(ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())){
// user = userDao.getUserIdByPhone(userByToken.getPhone());
// }
//// if(ObjectUtil.isNull(user)){
//// throw new BaseException(ZeroCodeError.NOT_USER_SERVER);
//// }
//
// //查找类型:0向上查找,1向下查找(默认),下查包含自己,上查不包含
// //根据参数配置sql语句
// 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() - 1) + " " + unit;
// }
//
// List<Long> roleIds = new ArrayList<>();
// roleIds.add(param.getRoleId());
//
// //TODO 季度未实现
// List<TallTaskVo.QueryTask> regularTask = taskDetailDao.queryRegularTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat);
// //如果该时段没有任务向上或向下补充
// if (CollectionUtil.isEmpty(regularTask)) {
// List<TallTaskVo.QueryTask> replenishTask = taskDetailDao.continueQueryTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat);
// Map<String, List<TallTaskVo.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 (CollectionUtil.isNotEmpty(mapOfKey)) {
// 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(replenishTask);
// //查询任务下的检查人
// queryCheckerOfTask(replenishTask);
// //TODO 查询插件展示信息
// queryPluginShow(regularTask,user == null ? null : user.getId());
// return replenishTask;
// }
// queryPluginForTask(regularTask);
// //查询任务下的检查人
// queryCheckerOfTask(regularTask);
//
// //TODO 查询插件展示信息
// queryPluginShow(regularTask,user == null ? null : user.getId());
//
// return regularTask;
// }
private void queryPluginShow(List<TallTaskVo.QueryTask> regularTask,Long userId) {
if(CollectionUtil.isEmpty(regularTask)){
@ -690,7 +692,75 @@ public class TallService implements ITallService {
if(ObjectUtil.isNull(userByToken)){
throw new BaseException(CodeEnum.NOT_LOGIN);
}
log.info("token获取的用户信息:{}", userByToken);
//通过手机号获取用户在服务内的userId
ProUser user = null;
if (ObjectUtil.isNotNull(userByToken) && StrUtil.isNotBlank(userByToken.getPhone())) {
user = userDao.getUserIdByPhone(userByToken.getPhone());
}
PageInfo<TallTaskVo.QueryTask> queryTaskPageInfo;
//如果是管理员则查看LWBS,否则正常查找任务
ProRole proRole = proRoleDao.selectByPrimaryKey(param.getRoleId());
if(!proRole.getName().equals(Constant.ROLE_NAME_ADMIN)){
queryTaskPageInfo = queryPageTask(param, user);
}else {
//角色是"管理员"
queryTaskPageInfo = queryLwbs(param, regularTask, userByToken);
}
return queryTaskPageInfo;
}
private PageInfo<TallTaskVo.QueryTask> queryPageTask(TallTaskDto.PageQueryRegularTask param, ProUser user) {
//查询用的时间
Long queryTime = System.currentTimeMillis();
if (ObjectUtil.isNotNull(param.getTaskId())) {
//根据任务id查找任务,以任务的开始时间当做查询的时间点
ProTaskSub proTaskSub = proTaskSubDao.selectByPrimaryKey(param.getTaskId());
if (ObjectUtil.isNotNull(proTaskSub) && proTaskSub.getPlanStartTime() != 0L) {
queryTime = proTaskSub.getPlanStartTime();
}
} else {
if (ObjectUtil.isNotNull(param.getTimeNode())) {
//没有任务id则根据时间基准线查询当前正在进行的任务(如果多个则选择时间最早的一个)
Long startTime = proTaskSubDao.getTimeByProgressTask(param.getTimeNode(), param.getRoleId());
if (ObjectUtil.isNotNull(startTime)) {
queryTime = startTime;
}
} else {
//如果没有时间基准线则按当前时间查询查询任务
Long startTime = proTaskSubDao.getTimeByProgressTask(System.currentTimeMillis(), param.getRoleId());
if (ObjectUtil.isNotNull(startTime)) {
queryTime = startTime;
}
}
}
//获取任务列表
PageHelper.startPage(param.getPageNum(), param.getPageSize());
List<TallTaskVo.QueryTask> regularTask = taskDetailDao.pageQueryRegularTask(0, null, param.getRoleId(), queryTime, param.getTimeUnit(), param.getQueryType(), param.getTaskId(), param.getTriggerType());
PageInfo<TallTaskVo.QueryTask> queryTaskPageInfo = new PageInfo<>(regularTask);
if (CollectionUtil.isNotEmpty(queryTaskPageInfo.getList())) {
if (param.getQueryType() == 0) {
//向上查找任务顺序是倒的,需要改成正序
List<TallTaskVo.QueryTask> taskList = new ArrayList<>();
for (int i = queryTaskPageInfo.getList().size() - 1; i >= 0; i--) {
taskList.add(queryTaskPageInfo.getList().get(i));
}
queryTaskPageInfo.setList(taskList);
}
//查询任务下的插件
queryPluginForTask(queryTaskPageInfo.getList());
//查询任务下的检查人
queryCheckerOfTask(queryTaskPageInfo.getList());
//查询插件展示信息
queryPluginShow(queryTaskPageInfo.getList(), user == null ? null : user.getId());
}
return queryTaskPageInfo;
}
private PageInfo<TallTaskVo.QueryTask> queryLwbs(TallTaskDto.PageQueryRegularTask param, List<TallTaskVo.QueryTask> regularTask, TallTokenVo.UserIdByToken userByToken) {
//调用tall的接口查询所有的任务
String url = com.ccsensptos.tallsdk.util.Constant.GATEWAY_URL + com.ccsensptos.tallsdk.util.Constant.QUERY_ALL_TASK;
log.info("调用接口:{}--", url);
@ -777,7 +847,6 @@ public class TallService implements ITallService {
Collections.reverse(tasks);
}
}
return new PageInfo<>(tasks);
}
@ -800,4 +869,14 @@ public class TallService implements ITallService {
return queryTaskList;
}
@Override
public void deleteProject(String token, TallProjectDto.ProjectById params) {
}
@Override
public void dragProject(String token, TallProjectDto.MoveProject params) {
}
}

2
src/main/java/com/ccsens/ptos_zero/util/Constant.java

@ -23,6 +23,8 @@ public class Constant {
public static String APP_ID = "appId";
/**secret*/
public static String APP_SECRET = "secret";
/**管理员*/
public static String ROLE_NAME_ADMIN = "管理员";
public static Map<Integer,String> timeUnit = new HashMap<>();
public static Map<Integer,String> timeFormat = new HashMap<>();

19
src/main/resources/mapper_dao/ProTaskDetailDao.xml

@ -468,7 +468,8 @@
tpi.width AS width,
tpi.height AS height,
tpi.`row` AS `row`,
tpi.col AS col
tpi.col AS col,
if(ts.id = #{taskId},0,1) as sort
FROM
t_pro_task_detail AS td
LEFT JOIN t_pro_task_sub AS ts ON ts.task_detail_id = td.id
@ -490,13 +491,23 @@
AND lt.label_type = 1
AND ts.plan_start_time != 0
AND ts.plan_duration != 0
AND rt.role_id = #{roleId}
and rt.role_duty = 0
<if test="isPm == 0">
AND rt.role_id = #{roleId}
</if>
<if test="isPm == 1">
AND rt.role_id in (SELECT id FROM t_pro_role WHERE project_id = #{projectId} and rec_status = 0)
</if>
<if test="queryType == 0">
AND plan_start_time &lt; #{timeNode}
</if>
<if test="queryType == 1">
AND plan_start_time >= #{timeNode}
</if>
<if test="triggerType == 0 and taskId != null">
and ts.id != #{taskId}
</if>
GROUP BY ts.id
) 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
@ -509,10 +520,10 @@
AND llbb.business_type = 0
AND ll.`level` >= #{timeUnit}
<if test="queryType == 0">
ORDER BY alltask.planStart DESC,id DESC
ORDER BY sort,alltask.planStart DESC,id DESC
</if>
<if test="queryType == 1">
ORDER BY alltask.planStart,id
ORDER BY sort,alltask.planStart,id
</if>
</select>

28
src/main/resources/mapper_dao/ProTaskPluginDao.xml

@ -96,19 +96,23 @@
<select id="queryTaskOfPlugin" resultType="com.ccsensptos.tallsdk.bean.vo.TallTaskVo$TaskPluginInfo">
SELECT
tp.plugin_id AS pluginId,
tp.code AS pluginCode,
tp.param As param,
tp.plgin_row AS `row`,
tp.plgin_col AS col,
tp.colspan AS colspan,
tp.rowspan AS rowspan,
tp.id AS pluginTaskId
p.plugin_id AS pluginId,
p.business_plugin_id AS businessPluginId,
p.code AS pluginCode,
p.plugin_inner AS `inner`,
p.param As param,
p.plgin_row AS `row`,
p.plgin_col AS col,
p.colspan AS colspan,
p.rowspan AS rowspan,
p.id AS pluginTaskId
FROM
t_pro_task_plugin AS tp
LEFT JOIN t_pro_task_detail AS td ON td.id = tp.task_detail_id
WHERE td.rec_status = 0 AND tp.rec_status = 0
AND tp.task_detail_id = #{detailTaskId}
t_pro_task_plugin p
LEFT JOIN t_pro_task_detail d on d.id = p.task_detail_id and d.rec_status = 0
LEFT JOIN t_pro_task_sub s on s.task_detail_id = d.id and s.rec_status = 0
WHERE
p.rec_status = 0
and s.id = #{subId}
</select>
<select id="queryParamByTaskId" resultType="java.lang.String">
select

Loading…
Cancel
Save