Browse Source

Changes 修改站点绑定业务

cyan 4 months ago
parent
commit
95a04b2915

+ 1 - 1
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/site/service/impl/FeiShuGroupServiceImpl.java

@@ -163,7 +163,7 @@ public class FeiShuGroupServiceImpl implements IFeiShuGroupService {
         String[] needJoinFeiShuIdsArray = needJoinFeiShuIds.toArray(new String[0]);
 
         // 群名称
-        String feiShuGroupName = "Cyan测试 - " + customerName + " - " + planName + " - OK项目组";
+        String feiShuGroupName = customerName + " - " + planName + " - OK项目组";
 //        log.info("feiShuGroupName:{}", feiShuGroupName);
 
         //创建群聊

+ 91 - 35
jeecg-boot/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/okki/site/service/impl/OkkiSiteServiceImpl.java

@@ -396,48 +396,104 @@ public class OkkiSiteServiceImpl extends ServiceImpl<OkkiSiteMapper, OkkiSite> i
                                 Map<String, List<JSONObject>> teamSheetMap) {
         // 查询站点信息
         List<OkkiSite> okkiSites = list(new QueryWrapper<OkkiSite>().eq("site_id", siteId));
-        if (!okkiSites.isEmpty()) {
-            OkkiSite okkiSite = okkiSites.get(0);
-//            log.info("okkiSiteUserMap: {}", FastJsonUtil.toJSONString(okkiSiteUserMap));
-//            log.info("teamSheetMap: {}", FastJsonUtil.toJSONString(teamSheetMap));
+        if (okkiSites.isEmpty()) {
+            log.warn("No site found for siteId: {}", siteId);
+            return;
+        }
+        OkkiSite okkiSite = okkiSites.get(0);
 
-            // 获取更新字段映射
-            Map<String, Object> updateGroupFieldMap = getStringObjectMap(siteId, okkiSiteUserMap, teamSheetMap);
-//            log.info("updateGroupFieldMap: {}", updateGroupFieldMap);
+        // 获取更新字段映射
+        Map<String, Object> updateGroupFieldMap = getStringObjectMap(siteId, okkiSiteUserMap, teamSheetMap);
 
-            // serviceManageUser、孙跃 || rdUser、陈云
-            List<OkkiSiteUser> serviceManageUsers = okkiSiteUserMap.get("serviceManageUser");
-            OkkiSiteUser feishuGroupOwner = serviceManageUsers.stream()
-                    .filter(okkiSiteUser -> "孙跃".equals(okkiSiteUser.getNickname()))
-                    .findFirst()
-                    .orElse(null);
-//            log.info("feishuGroupOwner:{}", feishuGroupOwner);
-
-            String ownerId = "";
-            if (feishuGroupOwner != null) {
-                List<JSONObject> teamSheetUserInfos = teamSheetMap.get(feishuGroupOwner.getId());
-//                log.info("teamSheetUserInfos:{}", FastJsonUtil.toJSONString(teamSheetUserInfos));
-                if (!teamSheetUserInfos.isEmpty()) {
-                    JSONObject jsonObject = teamSheetUserInfos.get(0);
-                    JSONArray personnelArray = jsonObject.getJSONArray("人员");
-                    if (personnelArray != null) {
-                        for (int i = 0; i < personnelArray.size(); i++) {
-                            JSONObject person = personnelArray.getJSONObject(i);
-                            ownerId = person.getString("id");
-                        }
-                    }
+        // 获取服务管理员并过滤特定昵称
+        List<OkkiSiteUser> serviceManageUsers = okkiSiteUserMap.getOrDefault("serviceManageUser", Collections.emptyList());
+        OkkiSiteUser feishuGroupOwner = serviceManageUsers.stream()
+                .filter(user -> "孙跃".equals(user.getNickname()))
+                .findFirst()
+                .orElse(null);
+
+        // 获取群主ID
+        String ownerId = getFirstPersonnelId(feishuGroupOwner, teamSheetMap);
+        log.info("ownerId:{}", ownerId);
+
+        // 获取网站用户的OpenIds和对应组名
+        List<String> websiteOpenIds = getPersonnelIds(okkiSiteUserMap.get("websiteUser"), teamSheetMap);
+        String groupName = getGroupName(websiteOpenIds, teamSheetMap);
+
+        // 获取资料用户的OpenIds
+        List<String> dataUserOpenIds = getPersonnelIds(okkiSiteUserMap.get("dataUser"), teamSheetMap);
+
+        // 构建更新字段
+        updateGroupFieldMap.put("组建站专员", buildIdMapList(websiteOpenIds));
+        updateGroupFieldMap.put("组资料员", buildIdMapList(dataUserOpenIds));
+        updateGroupFieldMap.put("建站小组", groupName);
+
+        log.info("updateGroupFieldMap: {}", FastJsonUtil.toJSONString(updateGroupFieldMap));
+
+        // 同步网站信息到飞书
+        String recordId = feiShuCommonService.syncWebsiteToFeiShuSheet(okkiSite, updateGroupFieldMap);
+
+        // 创建飞书群
+        feiShuGroupService.createFeiShuGroupOms(updateGroupFieldMap, okkiSite.getCompanyName(), siteId,
+                okkiSite.getTcName(), recordId, ownerId);
+    }
+
+    private String getGroupName(List<String> omsIds, Map<String, List<JSONObject>> teamSheetMap) {
+        if (omsIds.isEmpty()) {
+            return "";
+        }
+        String omsId = omsIds.get(0);
+        List<JSONObject> teamSheetUserInfos = teamSheetMap.get(omsId);
+        if (teamSheetUserInfos != null) {
+            for (JSONObject jsonObject : teamSheetUserInfos) {
+                String groupName = jsonObject.getString("组名");
+                if (StringUtils.isNotBlank(groupName)) {
+                    return groupName;
                 }
-//                log.info("ownerId:{}", ownerId);
             }
+        }
+        return "";
+    }
 
-            // 同步网站信息到飞书
-            String recordId = feiShuCommonService.syncWebsiteToFeiShuSheet(okkiSite, updateGroupFieldMap);
+    private List<Map<String, Object>> buildIdMapList(List<String> ids) {
+        return ids.stream()
+                .filter(StringUtils::isNotBlank)
+                .map(id -> {
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("id", id);
+                    return map;
+                })
+                .collect(Collectors.toList());
+    }
+
+    private String getFirstPersonnelId(OkkiSiteUser user, Map<String, List<JSONObject>> teamSheetMap) {
+        if (user == null) {
+            return "";
+        }
+        List<JSONObject> teamSheetUserInfos = teamSheetMap.get(user.getId());
+        if (teamSheetUserInfos == null || teamSheetUserInfos.isEmpty()) {
+            return "";
+        }
+        return teamSheetUserInfos.stream()
+                .map(jsonObject -> jsonObject.getJSONArray("人员"))
+                .filter(Objects::nonNull)
+                .flatMap(personnelArray -> personnelArray.stream().map(obj -> ((JSONObject) obj).getString("id")))
+                .findFirst()
+                .orElse("");
+    }
 
-            // 创建飞书群
-            String customerName = okkiSite.getCompanyName();
-            String planName = okkiSite.getTcName();
-            feiShuGroupService.createFeiShuGroupOms(updateGroupFieldMap, customerName, siteId, planName, recordId, ownerId);
+    private List<String> getPersonnelIds(List<OkkiSiteUser> users, Map<String, List<JSONObject>> teamSheetMap) {
+        if (users == null || users.isEmpty()) {
+            return Collections.emptyList();
         }
+        return users.stream()
+                .map(user -> teamSheetMap.getOrDefault(user.getId(), Collections.emptyList()))
+                .flatMap(Collection::stream)
+                .map(jsonObject -> jsonObject.getJSONArray("人员"))
+                .filter(Objects::nonNull)
+                .flatMap(personnelArray -> personnelArray.stream().map(obj -> ((JSONObject) obj).getString("id")))
+                .distinct()
+                .collect(Collectors.toList());
     }
 
     /**