From a5ce4105c217a651ac8b64861e8e665cd8bc4dd0 Mon Sep 17 00:00:00 2001 From: unknown <654600784@qq.com> Date: Fri, 1 Apr 2022 18:15:07 +0800 Subject: [PATCH] =?UTF-8?q?20220401=E4=BF=AE=E6=94=B9=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../persist/dao/ProTaskDetailDao.java | 2 +- .../persist/dao/ProTaskPluginDao.java | 11 +- .../ccsens/ptos_zero/service/TallService.java | 225 ++++++++++++------ .../com/ccsens/ptos_zero/util/Constant.java | 2 + .../resources/mapper_dao/ProTaskDetailDao.xml | 19 +- .../resources/mapper_dao/ProTaskPluginDao.xml | 28 ++- 6 files changed, 194 insertions(+), 93 deletions(-) diff --git a/src/main/java/com/ccsens/ptos_zero/persist/dao/ProTaskDetailDao.java b/src/main/java/com/ccsens/ptos_zero/persist/dao/ProTaskDetailDao.java index c07af5d..153c2e9 100644 --- a/src/main/java/com/ccsens/ptos_zero/persist/dao/ProTaskDetailDao.java +++ b/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 pageQueryRegularTask(@Param("roleId")Long roleId, @Param("timeNode")Long timeNode, @Param("timeUnit")int timeUnit, @Param("queryType")int queryType); + List 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 diff --git a/src/main/java/com/ccsens/ptos_zero/persist/dao/ProTaskPluginDao.java b/src/main/java/com/ccsens/ptos_zero/persist/dao/ProTaskPluginDao.java index 96bbdee..9da50d1 100644 --- a/src/main/java/com/ccsens/ptos_zero/persist/dao/ProTaskPluginDao.java +++ b/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 queryTaskOfPlugin(@Param("detailTaskId") Long detailTaskId); /** * 根据任务id查询已配置的插件 - * @param detailTaskId 任务详情id + * @param subId 任务分解id * @return 插件列表 */ - List queryTaskOfPlugin(@Param("detailTaskId") Long detailTaskId); - + List queryTaskOfPlugin(@Param("subId") Long subId); /** * 查询广告页或引导页 * @param taskDetailId 任务详情id diff --git a/src/main/java/com/ccsens/ptos_zero/service/TallService.java b/src/main/java/com/ccsens/ptos_zero/service/TallService.java index 9a902b7..cb0d96b 100644 --- a/src/main/java/com/ccsens/ptos_zero/service/TallService.java +++ b/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 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 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 roleIds = new ArrayList<>(); - roleIds.add(param.getRoleId()); - - //TODO 季度未实现 - List regularTask = taskDetailDao.queryRegularTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat); - //如果该时段没有任务向上或向下补充 - if (CollectionUtil.isEmpty(regularTask)) { - List replenishTask = taskDetailDao.continueQueryTask(roleIds, 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 (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 roleIds = new ArrayList<>(); +// roleIds.add(param.getRoleId()); +// +// //TODO 季度未实现 +// List regularTask = taskDetailDao.queryRegularTask(roleIds, param.getTimeUnit(), param.getTimeNode(), param.getQueryType(), query, timeFormat); +// //如果该时段没有任务向上或向下补充 +// if (CollectionUtil.isEmpty(regularTask)) { +// List replenishTask = taskDetailDao.continueQueryTask(roleIds, 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 (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 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 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 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 regularTask = taskDetailDao.pageQueryRegularTask(0, null, param.getRoleId(), queryTime, param.getTimeUnit(), param.getQueryType(), param.getTaskId(), param.getTriggerType()); + PageInfo queryTaskPageInfo = new PageInfo<>(regularTask); + if (CollectionUtil.isNotEmpty(queryTaskPageInfo.getList())) { + if (param.getQueryType() == 0) { + //向上查找任务顺序是倒的,需要改成正序 + List 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 queryLwbs(TallTaskDto.PageQueryRegularTask param, List 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) { + + } } diff --git a/src/main/java/com/ccsens/ptos_zero/util/Constant.java b/src/main/java/com/ccsens/ptos_zero/util/Constant.java index b1aebf9..ea8dcea 100644 --- a/src/main/java/com/ccsens/ptos_zero/util/Constant.java +++ b/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 timeUnit = new HashMap<>(); public static Map timeFormat = new HashMap<>(); diff --git a/src/main/resources/mapper_dao/ProTaskDetailDao.xml b/src/main/resources/mapper_dao/ProTaskDetailDao.xml index 1e316ea..9a69714 100644 --- a/src/main/resources/mapper_dao/ProTaskDetailDao.xml +++ b/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 + + AND rt.role_id = #{roleId} + + + AND rt.role_id in (SELECT id FROM t_pro_role WHERE project_id = #{projectId} and rec_status = 0) + AND plan_start_time < #{timeNode} AND plan_start_time >= #{timeNode} + + and ts.id != #{taskId} + + 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} - ORDER BY alltask.planStart DESC,id DESC + ORDER BY sort,alltask.planStart DESC,id DESC - ORDER BY alltask.planStart,id + ORDER BY sort,alltask.planStart,id diff --git a/src/main/resources/mapper_dao/ProTaskPluginDao.xml b/src/main/resources/mapper_dao/ProTaskPluginDao.xml index 09600b7..9081375 100644 --- a/src/main/resources/mapper_dao/ProTaskPluginDao.xml +++ b/src/main/resources/mapper_dao/ProTaskPluginDao.xml @@ -96,19 +96,23 @@