diff --git a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java index fa7d9ba..2b010e8 100644 --- a/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java +++ b/bonus-modules/bonus-bracelet/src/main/java/com/bonus/bracelet/service/impl/ConsControlServiceImpl.java @@ -59,6 +59,7 @@ public class ConsControlServiceImpl implements IConsControlService { @Override public AjaxResult getBallDeviceLists(BraceletParamsDto dto) { JSONArray resultTree = new JSONArray(); + JSONArray dataTree = new JSONArray(); try { List list = new ArrayList<>(); list = mapper.getBallDeviceLists(dto); @@ -74,10 +75,19 @@ public class ConsControlServiceImpl implements IConsControlService { } //构建球机树 resultTree = BuildTreeUtil.listInfoToTree(JSONArray.parseArray(JSON.toJSONString(list)), "id", "parentId", "children"); + if (CollectionUtils.isNotEmpty(resultTree)) { + for (int i = 0; i < resultTree.size(); i++) { + JSONObject jsonObject = resultTree.getJSONObject(i); + JSONArray children = jsonObject.getJSONArray("children"); + if (CollectionUtils.isNotEmpty(children)) { + dataTree.add(jsonObject); + } + } + } } catch (Exception e) { log.error(e.toString(), e); } - return AjaxResult.success(resultTree); + return AjaxResult.success(dataTree); } @Override @@ -172,6 +182,7 @@ public class ConsControlServiceImpl implements IConsControlService { @Override public AjaxResult getPersonsTree(BraceletParamsDto dto) { JSONArray resultTree = new JSONArray(); + JSONArray dataTree = new JSONArray(); try { List list = new ArrayList<>(); list = mapper.getPersonsTree(dto); @@ -190,10 +201,49 @@ public class ConsControlServiceImpl implements IConsControlService { } //构建人员树 resultTree = BuildTreeUtil.listInfoToTree(JSONArray.parseArray(JSON.toJSONString(list)), "id", "parentId", "children"); + if (CollectionUtils.isNotEmpty(resultTree)) { + for (int i = 0; i < resultTree.size(); i++) { + JSONObject jsonObject = resultTree.getJSONObject(i); + PersonTreeVo personTreeVo = jsonObject.toJavaObject(PersonTreeVo.class); + // 检查第三层是否有子节点 + boolean hasChildren = hasChildrenAtLevel(personTreeVo, 2); + if(hasChildren){ + dataTree.add(jsonObject); + } +// System.out.println("第四层是否有子节点: " + hasChildren); // 应输出 true,因为第二层有节点 4 和 5 + } + } } catch (Exception e) { log.error(e.toString(), e); } - return AjaxResult.success(resultTree); + return AjaxResult.success(dataTree); + } + + // 递归方法判断在特定层级下是否包含子节点 + public static boolean hasChildrenAtLevel(PersonTreeVo node, int level) { + if (node == null) { + return false; + } + if (level == 0) { + return !node.getChildren().isEmpty(); + } + return hasChildrenAtLevelInChildren(node.getChildren(), level - 1); + } + + // 递归子节点集合,查看在特定层级下是否有子节点 + private static boolean hasChildrenAtLevelInChildren(List nodes, int level) { + for (PersonTreeVo child : nodes) { + if (level == 0) { + if (!child.getChildren().isEmpty()) { + return true; + } + } else { + if (hasChildrenAtLevelInChildren(child.getChildren(), level - 1)) { + return true; + } + } + } + return false; } @Override @@ -334,16 +384,19 @@ public class ConsControlServiceImpl implements IConsControlService { mapper.delConfig(); mapper.delConfigItems(); if (Objects.equals(vo.getConfigType(), BusinessConstants.CONFIG_TYPE)) { + if (StringUtils.isEmpty(vo.getTime())) { + return AjaxResult.error("固定时间不能为空"); + } // 固定时间验证 String[] timeArr = vo.getTime().split(","); + if (timeArr.length > 10) { + return AjaxResult.error("固定时间验证不能超过十个配置项"); + } for (String time : timeArr) { if (!TimeValidator.isValidTime(time)) { return AjaxResult.error("时间格式错误(HH:MM)"); } } - if (timeArr.length > 0) { - return AjaxResult.error("固定时间验证不能超过时间配置项"); - } } else if (Objects.equals(vo.getConfigType(), BusinessConstants.CONFIG_TYPE2)) { // 间隔时间验证 if (!TimeValidator.isValidTime2(vo.getTime())) { diff --git a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/ConsControlMapper.xml b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/ConsControlMapper.xml index 6a36c2d..7f4b421 100644 --- a/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/ConsControlMapper.xml +++ b/bonus-modules/bonus-bracelet/src/main/resources/mapper/bracelet/ConsControlMapper.xml @@ -58,23 +58,21 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" tp.create_time AS orderTime FROM tb_project tp WHERE tp.del_flag = 0 - UNION ALL + UNION ALL SELECT - tdu.id, + td.id, CONCAT(tpe.name,'-',tpe.phone) AS label, td.dev_code AS devCode, IFNULL(td.dev_index,0) AS devIndex, - tdu.pro_id AS parentId, + tdl.pro_id AS parentId, tp.depart_id AS departId, IFNULL(td.dev_status,0) AS devStatus, - tdub.ly_time AS orderTime - FROM tb_dev_use tdu - LEFT JOIN tb_dev_use_bid tdub ON tdu.id = tdub.id - LEFT JOIN tb_project tp ON tp.id = tdu.pro_id AND tp.del_flag = 0 - LEFT JOIN tb_device td ON tdub.dev_id = td.id AND td.del_flag = 0 - LEFT JOIN tb_dev_ly tdl ON tdub.dev_id = tdl.dev_id + tdl.ly_time AS orderTime + FROM tb_device td + LEFT JOIN tb_dev_ly tdl ON td.id = tdl.dev_id LEFT JOIN tb_people tpe ON tpe.id = tdl.ly_user AND tpe.del_flag = 0 - WHERE tdub.dev_type = 'ball' AND tdu.del_flag = 0 AND tdub.gh_time IS NULL + LEFT JOIN tb_project tp ON tdl.pro_id = tp.id AND tp.del_flag = 0 + WHERE td.dev_type = 'ball' AND td.del_flag = 0 AND tdl.ly_user IS NOT NULL ) a