|
@@ -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());
|
|
|
}
|
|
|
|
|
|
/**
|