Ver Fonte

钉钉会议排序

cr há 3 semanas atrás
pai
commit
a9ea29f090

+ 1 - 0
blade-service-api/blade-dingding-api/src/main/java/org/springblade/dingding/vo/MeetingVo.java

@@ -11,6 +11,7 @@ import java.util.List;
 public class MeetingVo {
     private String roomId;
     private String fixedData; //固定数据
+    private String floor; //楼层
     private String meetingTheme; //会议主题
     private String meetingDept;  //召开部门
     private String meetingBooker;//会议预定者,主持人

+ 64 - 0
blade-service/blade-dingding/src/main/java/org/springblade/dingding/service/impl/MeetingServiceImpl.java

@@ -103,6 +103,29 @@ public class MeetingServiceImpl implements MeetingService {
                     .get(25, TimeUnit.SECONDS);
             // 25秒总超时
             if(!vos.isEmpty()){
+                vos.sort((vo1, vo2) -> {
+                    String fixedData1 = vo1.getFixedData();
+                    String fixedData2 = vo2.getFixedData();
+
+                    // 提取会议室编号(去除"会议室"字符,只保留前面的中文数字)
+                    String number1 = extractChineseNumber(fixedData1);
+                    String number2 = extractChineseNumber(fixedData2);
+
+                    return compareChineseNumbers(number1, number2);
+                });
+                for (MeetingVo vo : vos) {
+                    if("一会议室".equals(vo.getFixedData())){
+                        vo.setFloor("6楼");
+                    } else if ("二会议室".equals(vo.getFixedData())) {
+                        vo.setFloor("6楼");
+                    }else if ("三会议室".equals(vo.getFixedData())) {
+                        vo.setFloor("4楼");
+                    }else if ("四会议室".equals(vo.getFixedData())) {
+                        vo.setFloor("3楼");
+                    }else if ("五会议室".equals(vo.getFixedData())) {
+                        vo.setFloor("2楼");
+                    }
+                }
                 UserInfoVO vo = new UserInfoVO();
                 vo.setSystem("dingding");
                 vo.setContractId(1L);
@@ -121,6 +144,47 @@ public class MeetingServiceImpl implements MeetingService {
         }
     }
 
+    // 提取会议室名称中的中文数字部分
+    private String extractChineseNumber(String roomName) {
+        // 假设格式为 "一会议室"、"二会议室" 等,提取前面的中文数字
+        if (roomName != null && roomName.endsWith("会议室")) {
+            return roomName.substring(0, roomName.length() - 3); // 去掉"会议室"三个字
+        }
+        return roomName;
+    }
+
+    // 中文数字比较器
+    private int compareChineseNumbers(String chineseNum1, String chineseNum2) {
+        // 定义中文数字映射表
+        Map<String, Integer> chineseNumberMap = new HashMap<>();
+        chineseNumberMap.put("一", 1);
+        chineseNumberMap.put("二", 2);
+        chineseNumberMap.put("三", 3);
+        chineseNumberMap.put("四", 4);
+        chineseNumberMap.put("五", 5);
+        chineseNumberMap.put("六", 6);
+        chineseNumberMap.put("七", 7);
+        chineseNumberMap.put("八", 8);
+        chineseNumberMap.put("九", 9);
+        chineseNumberMap.put("十", 10);
+        chineseNumberMap.put("十一", 11);
+        chineseNumberMap.put("十二", 12);
+        chineseNumberMap.put("十三", 13);
+        chineseNumberMap.put("十四", 14);
+        chineseNumberMap.put("十五", 15);
+        chineseNumberMap.put("十六", 16);
+        chineseNumberMap.put("十七", 17);
+        chineseNumberMap.put("十八", 18);
+        chineseNumberMap.put("十九", 19);
+        chineseNumberMap.put("二十", 20);
+        // 可以根据需要继续添加更多数字
+
+        Integer num1 = chineseNumberMap.getOrDefault(chineseNum1, Integer.MAX_VALUE);
+        Integer num2 = chineseNumberMap.getOrDefault(chineseNum2, Integer.MAX_VALUE);
+
+        return num1.compareTo(num2);
+    }
+
     private String[] getTodayTimeRange() {
         LocalDateTime startOfDay = LocalDateTime.now().with(LocalTime.MIDNIGHT);
         ZonedDateTime startOfDayZoned = startOfDay.atZone(ZoneId.systemDefault());