Explorar o código

fit:政策文件(基础代码)

zzw hai 4 meses
pai
achega
392905a498

+ 55 - 109
pricing/src/main/java/com/hotent/pricing/controller/policy/FapFeeCatalogController.java

@@ -98,7 +98,7 @@ public class FapFeeCatalogController {
             List<FapFeeCatalogHistory> history = catalogHistoryManager.getHistoryByCatalogId(id);
             for (FapFeeCatalogHistory historyRecord : history) {
                 if (historyRecord.getDocumentBasis() != null && !historyRecord.getDocumentBasis().trim().isEmpty()
-                    && !"无关联文件".equals(historyRecord.getDocumentBasis())) {
+                        && !"无关联文件".equals(historyRecord.getDocumentBasis())) {
                     String[] docIds = historyRecord.getDocumentBasis().split(",");
                     List<String> docNumbers = new ArrayList<>();
                     for (String docId : docIds) {
@@ -192,25 +192,23 @@ public class FapFeeCatalogController {
             catalogManager.updateById(catalog);
 
             // 根据状态类型记录相应的历史
-            String adjustmentType = getAdjustmentTypeByStatus(request.getStatus());
-            if (adjustmentType != null) {
-                String documentBasis = "无关联文件";
-                if (request.getDocuments() != null && !request.getDocuments().isEmpty()) {
-                    // 添加新关联
-                    documentRelationManager.addDocumentRelations("OPERATION", catalogId, request.getDocuments());
-                    documentBasis = request.getDocuments().stream()
-                            .map(FapPolicyDocument::getId)
-                            .collect(Collectors.joining(","));
-                }
-                catalogHistoryManager.addHistoryRecord(
-                        catalogId,
-                        adjustmentType,
-                        request.getReason() != null ? request.getReason() : "",
-                        null,
-                        documentBasis,
-                        request.getReason()
-                );
+            String documentBasis = "无关联文件";
+            if (request.getDocuments() != null && !request.getDocuments().isEmpty()) {
+                // 添加新关联
+                documentRelationManager.addDocumentRelations("OPERATION", catalogId, request.getDocuments());
+                documentBasis = request.getDocuments().stream()
+                        .map(FapPolicyDocument::getId)
+                        .collect(Collectors.joining(","));
             }
+            catalogHistoryManager.addHistoryRecord(
+                    catalogId,
+                    request.getStatus(),
+                    request.getReason() != null ? request.getReason() : "",
+                    null,
+                    documentBasis,
+                    request.getReason()
+            );
+
         }
         return CommonResult.ok();
     }
@@ -244,91 +242,57 @@ public class FapFeeCatalogController {
     }
 
 
-    @ApiOperation("新增标准信息")
-    @PostMapping("/standard/add")
-    public CommonResult<Void> addStandard(
+    @ApiOperation("保存标准信息(新增或更新)")
+    @PostMapping("/standard/save")
+    public CommonResult<Void> saveStandard(
             @ApiParam(value = "标准信息及关联文件", required = true) @RequestBody FapFeeStandard standard) {
 
-        // 检查是否已存在相同的标准信息(同一目录+同一地区)
-        FapFeeStandard existingStandard = standardManager.lambdaQuery()
-                .eq(FapFeeStandard::getCatalogId, standard.getCatalogId())
-                .eq(FapFeeStandard::getRegion, standard.getRegion())
-                .eq(FapFeeStandard::getIsDeleted, "0")
-                .one();
-
-        if (existingStandard == null) {
-            // 保存标准信息
-            String operatorOrgId = AuthenticationUtil.getCurrentUserMainOrgId();
-            standard.setRegion(operatorOrgId);
-            standardManager.save(standard);
-
-            // 记录标准新增历史
-            String documentBasis = "无关联文件";
-            if (standard.getDocuments() != null && !standard.getDocuments().isEmpty()) {
-                documentBasis = standard.getDocuments().stream()
-                        .map(FapDocumentRelation::getPolicyDocId)
-                        .filter(docId -> docId != null && !docId.trim().isEmpty())
-                        .collect(Collectors.joining(","));
-            }
-
-            // 记录到标准历史表
-            historyManager.recordUpdateHistory(
-                    standard.getId(),
-                    "",
-                    standard.getFeeStandardContent(),
-                    "新增标准信息"
-            );
-
-            // 处理政策文件关联
-            List<FapDocumentRelation> documents = standard.getDocuments();
-            if (documents != null && !documents.isEmpty()) {
-                for (FapDocumentRelation document : documents) {
-                    documentRelationManager.addDocumentRelation("STANDARD", standard.getId(), document.getPolicyDocId(), document.getRemark());
-                }
-            }
-        }
+        String operationType = "";
+        String oldContent = "";
+        boolean isUpdate = false;
 
+        // 判断是新增还是更新:有ID就是更新,没ID就是新增
+        if (standard.getId() != null && !standard.getId().trim().isEmpty()) {
+            // 更新操作
+            isUpdate = true;
+            operationType = "更新标准信息";
 
-        return CommonResult.ok();
-    }
+            // 获取更新前的内容用于历史记录
+            FapFeeStandard existingStandard = standardManager.getById(standard.getId());
+            oldContent = existingStandard != null ? existingStandard.getFeeStandardContent() : "";
 
-    @ApiOperation("更新标准信息")
-    @PutMapping("/standard/update")
-    public CommonResult<Void> updateStandard(
-            @ApiParam(value = "标准信息及关联文件", required = true) @RequestBody FapFeeStandard standard) {
+            // 执行更新
+            standardManager.updateById(standard);
 
-        // 获取更新前的标准信息
-        FapFeeStandard oldStandard = standardManager.getById(standard.getId());
+            // 删除现有的政策文件关联
+            documentRelationManager.removeAllRelationsBySource("STANDARD", standard.getId());
+        } else {
+            // 新增操作
+            isUpdate = false;
+            operationType = "新增标准信息";
+            oldContent = "";
 
-        // 更新标准信息
-        standardManager.updateById(standard);
+            // 设置当前用户组织为地区
+            String operatorOrgId = AuthenticationUtil.getCurrentUserMainOrgId();
+            standard.setRegion(operatorOrgId);
 
-        // 记录标准更新历史
-        String documentBasis = "无关联文件";
-        if (standard.getDocuments() != null && !standard.getDocuments().isEmpty()) {
-            documentBasis = standard.getDocuments().stream()
-                    .map(FapDocumentRelation::getPolicyDocId)
-                    .filter(docId -> docId != null && !docId.trim().isEmpty())
-                    .collect(Collectors.joining(","));
+            // 执行新增
+            standardManager.save(standard);
         }
 
         // 记录到标准历史表
         historyManager.recordUpdateHistory(
                 standard.getId(),
-                oldStandard != null ? oldStandard.getFeeStandardContent() : "",
+                oldContent,
                 standard.getFeeStandardContent(),
-                "更新标准信息"
+                operationType
         );
 
-        // 处理政策文件关联更新
-        // 1. 删除现有关联
-        documentRelationManager.removeAllRelationsBySource("STANDARD", standard.getId());
-
-        // 2. 添加新关联
-        List<FapDocumentRelation> documents = standard.getDocuments();
+        // 处理政策文件关联
+        List<FapPolicyDocument> documents = standard.getDocuments();
         if (documents != null && !documents.isEmpty()) {
-            for (FapDocumentRelation document : documents) {
-                documentRelationManager.addDocumentRelation("STANDARD", standard.getId(), document.getPolicyDocId(), document.getRemark());
+            for (FapPolicyDocument document : documents) {
+                documentRelationManager.addDocumentRelation("STANDARD", standard.getId(), document.getId(), document.getRemark());
             }
         }
 
@@ -364,7 +328,9 @@ public class FapFeeCatalogController {
         FapFeeStandard feeStandard = standardManager.getOne(
                 new QueryWrapper<FapFeeStandard>().eq("catalog_id", id)
         );
-        feeStandard.setDocuments(documentRelationManager.getDocumentRelationsBySource("STANDARD", id));
+        if (feeStandard != null){
+            feeStandard.setDocuments(documentRelationManager.getPolicyDocumentsBySource("STANDARD", feeStandard.getId()));
+        }
         return CommonResult.<FapFeeStandard>ok().value(feeStandard);
     }
 
@@ -383,7 +349,7 @@ public class FapFeeCatalogController {
         // 转换文件依据为汉字
         for (FapFeeStandardHistory historyRecord : historyList) {
             if (historyRecord.getNewDocumentBasis() != null && !historyRecord.getNewDocumentBasis().trim().isEmpty()
-                && !"无关联文件".equals(historyRecord.getNewDocumentBasis())) {
+                    && !"无关联文件".equals(historyRecord.getNewDocumentBasis())) {
                 // 将文件ID转换为文件文号
                 String[] docIds = historyRecord.getNewDocumentBasis().split(",");
                 List<String> docNumbers = new ArrayList<>();
@@ -401,24 +367,4 @@ public class FapFeeCatalogController {
     }
 
 
-    /**
-     * 根据状态获取调整类型
-     *
-     * @param status 状态值
-     * @return 调整类型
-     */
-    private String getAdjustmentTypeByStatus(String status) {
-        switch (status) {
-            case "1": // 暂停状态
-                return "SUSPEND";
-            case "2": // 取消状态
-                return "CANCEL";
-            case "0": // 正常状态
-                return "RESTORE";
-            default:
-                return null;
-        }
-    }
-
-
 }

+ 7 - 0
pricing/src/main/java/com/hotent/pricing/dao/FapFeeStandardDao.java

@@ -41,4 +41,11 @@ public interface FapFeeStandardDao extends BaseMapper<FapFeeStandard> {
             @Param("allowedRegionIds") List<String> allowedRegionIds
     );
 
+    /**
+     * 查询标准关联的政策文件详细信息
+     * @param standardId 标准ID
+     * @return 关联的政策文件详细信息列表
+     */
+    List<Map<String, Object>> getStandardPolicyDocuments(@Param("standardId") String standardId);
+
 }

+ 3 - 0
pricing/src/main/java/com/hotent/pricing/dao/FapPolicyDocumentDao.java

@@ -3,8 +3,10 @@ package com.hotent.pricing.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.hotent.pricing.model.entity.policy.FapPolicyDocument;
 import com.hotent.pricing.model.vo.policy.PolicyDocumentListRequest;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 政策文件表 Mapper 接口
@@ -20,4 +22,5 @@ public interface FapPolicyDocumentDao extends BaseMapper<FapPolicyDocument> {
      * @return 政策文件列表
      */
     List<FapPolicyDocument> getPolicyDocumentList(PolicyDocumentListRequest request);
+
 }

+ 1 - 8
pricing/src/main/java/com/hotent/pricing/manager/FapDocumentRelationManager.java

@@ -24,13 +24,6 @@ public interface FapDocumentRelationManager extends BaseManager<FapDocumentRelat
     void addDocumentRelation(String sourceType, String sourceId, String policyDocId, String remark);
 
 
-    /**
-     * 获取关联的文件列表
-     * @param sourceType 来源类型
-     * @param sourceId 来源ID
-     * @return 关联文件列表
-     */
-    List<FapDocumentRelation> getDocumentRelationsBySource(String sourceType, String sourceId);
 
     /**
      * 批量删除关联关系
@@ -48,7 +41,7 @@ public interface FapDocumentRelationManager extends BaseManager<FapDocumentRelat
     void addDocumentRelations(String sourceType, String sourceId, List<FapPolicyDocument> documents);
 
     /**
-     * 获取关联的政策文件列表(直接返回FapPolicyDocument)
+     * 获取关联的政策文件列表
      * @param sourceType 来源类型
      * @param sourceId 来源ID
      * @return 关联的政策文件列表

+ 3 - 0
pricing/src/main/java/com/hotent/pricing/manager/FapPolicyDocumentManager.java

@@ -5,6 +5,9 @@ import com.hotent.pricing.model.entity.policy.FapPolicyDocument;
 import com.hotent.pricing.model.vo.policy.PolicyDocumentListRequest;
 import com.hotent.base.manager.BaseManager;
 
+import java.util.List;
+import java.util.Map;
+
 /**
  * 政策文件管理 服务类
  *

+ 6 - 28
pricing/src/main/java/com/hotent/pricing/manager/impl/FapDocumentRelationManagerImpl.java

@@ -8,6 +8,7 @@ import com.hotent.pricing.dao.FapPolicyDocumentDao;
 import com.hotent.pricing.manager.FapDocumentRelationManager;
 import com.hotent.pricing.model.entity.policy.FapPolicyDocument;
 import com.hotent.pricing.model.entity.policy.FapDocumentRelation;
+import com.hotent.uc.manager.OrgManager;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
@@ -26,6 +27,9 @@ import java.util.List;
 public class FapDocumentRelationManagerImpl extends BaseManagerImpl<FapDocumentRelationDao, FapDocumentRelation> implements FapDocumentRelationManager {
 
     @Autowired
+    private OrgManager orgManager;
+
+    @Autowired
     private FapPolicyDocumentDao policyDocumentDao;
 
     @Override
@@ -59,30 +63,6 @@ public class FapDocumentRelationManagerImpl extends BaseManagerImpl<FapDocumentR
 
 
     @Override
-    public List<FapDocumentRelation> getDocumentRelationsBySource(String sourceType, String sourceId) {
-        QueryWrapper<FapDocumentRelation> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("source_type", sourceType)
-            .eq("source_id", sourceId)
-            .eq("is_deleted", "0");
-
-        List<FapDocumentRelation> relations = this.list(queryWrapper);
-
-        // 填充政策文件详细信息
-        for (FapDocumentRelation relation : relations) {
-            FapPolicyDocument policyDoc = policyDocumentDao.selectById(relation.getPolicyDocId());
-            if (policyDoc != null) {
-                relation.setTitle(policyDoc.getTitle());
-                relation.setDocNumber(policyDoc.getDocNumber());
-                relation.setIssuingAuthority(policyDoc.getIssuingAuthority());
-                relation.setPublishDate(policyDoc.getPublishDate());
-                relation.setDocStatus(policyDoc.getDocStatus());
-            }
-        }
-
-        return relations;
-    }
-
-    @Override
     @Transactional
     public void removeAllRelationsBySource(String sourceType, String sourceId) {
         QueryWrapper<FapDocumentRelation> queryWrapper = new QueryWrapper<>();
@@ -123,11 +103,9 @@ public class FapDocumentRelationManagerImpl extends BaseManagerImpl<FapDocumentR
 
         for (FapDocumentRelation relation : relations) {
             FapPolicyDocument policyDoc = policyDocumentDao.selectById(relation.getPolicyDocId());
-            if (policyDoc != null) {
-                policyDocuments.add(policyDoc);
-            }
+            policyDoc.setIssuingAuthorityName(orgManager.getById(policyDoc.getIssuingAuthority()).getName());
+            policyDocuments.add(policyDoc);
         }
-
         return policyDocuments;
     }
 }

+ 4 - 0
pricing/src/main/java/com/hotent/pricing/manager/impl/FapFeeCatalogManagerImpl.java

@@ -99,6 +99,10 @@ public class FapFeeCatalogManagerImpl extends BaseManagerImpl<FapFeeCatalogDao,
                             .eq(FapFeeStandard::getCatalogId, catalog.getId())
                             .eq(FapFeeStandard::getIsDeleted, "0")
                     );
+            if (standards != null){
+                List<FapPolicyDocument> stdocuments = documentRelationManager.getPolicyDocumentsBySource("STANDARD", standards.getId());
+                standards.setDocuments(stdocuments);
+            }
             catalog.setStandards(standards);
         }
 

+ 59 - 2
pricing/src/main/java/com/hotent/pricing/manager/impl/FapPolicyDocumentManagerImpl.java

@@ -18,6 +18,14 @@ import org.springframework.util.StringUtils;
 import java.time.LocalDateTime;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
+import java.util.HashMap;
+import com.hotent.pricing.manager.FapDocumentRelationManager;
+import com.hotent.pricing.manager.FapFeeCatalogManager;
+import com.hotent.pricing.manager.FapFeeStandardManager;
+import com.hotent.pricing.model.entity.policy.FapDocumentRelation;
+import com.hotent.pricing.model.entity.policy.FapFeeCatalog;
+import com.hotent.pricing.model.entity.policy.FapFeeStandard;
 
 /**
  * 政策文件管理 服务实现类
@@ -32,11 +40,19 @@ public class FapPolicyDocumentManagerImpl extends BaseManagerImpl<FapPolicyDocum
     private OrgManager orgManager;
 
     @Autowired
+    private FapDocumentRelationManager documentRelationManager;
+
+    @Autowired
+    private FapFeeCatalogManager catalogManager;
+
+    @Autowired
+    private FapFeeStandardManager standardManager;
+
+    @Autowired
     private OrgHierarchyUtil orgHierarchyUtil;
 
     @Override
     public PageList<FapPolicyDocument> getPolicyDocumentList(PolicyDocumentListRequest request) {
-        // 添加权限过滤
         String currentUserOrgId = AuthenticationUtil.getCurrentUserMainOrgId();
         Org currentUserOrg = orgManager.getById(currentUserOrgId);
 
@@ -44,7 +60,6 @@ public class FapPolicyDocumentManagerImpl extends BaseManagerImpl<FapPolicyDocum
         List<String> allowedRegionIds = getAllowedRegionsByOrgLevel(currentUserOrg);
         request.setRegionOrgIds(allowedRegionIds);
 
-        // 使用自定义Mapper查询
         List<FapPolicyDocument> list = baseMapper.getPolicyDocumentList(request);
 
         // 手动分页
@@ -69,6 +84,48 @@ public class FapPolicyDocumentManagerImpl extends BaseManagerImpl<FapPolicyDocum
     public FapPolicyDocument getPolicyDocumentDetail(String id) {
         FapPolicyDocument fapPolicyDocument = this.get(id);
         fapPolicyDocument.setIssuingAuthorityName(orgManager.getById(fapPolicyDocument.getIssuingAuthority()).getName());
+
+        List<Map<String, Object>> relatedItems = new ArrayList<>();
+
+        List<FapDocumentRelation> relations = documentRelationManager.lambdaQuery()
+            .eq(FapDocumentRelation::getPolicyDocId, id)
+            .eq(FapDocumentRelation::getRelationStatus, "1")
+            .eq(FapDocumentRelation::getIsDeleted, "0")
+            .list();
+
+        for (FapDocumentRelation relation : relations) {
+            Map<String, Object> item = new HashMap<>();
+            item.put("sourceType", relation.getSourceType());
+            item.put("sourceId", relation.getSourceId());
+            item.put("relationRemark", relation.getRemark());
+
+            if ("CATALOG".equals(relation.getSourceType())) {
+                // 查询目录信息
+                FapFeeCatalog catalog = catalogManager.getById(relation.getSourceId());
+                if (catalog != null) {
+                    item.put("itemName", catalog.getProjectName());
+                    item.put("itemContent", catalog.getProjectName());
+                    item.put("itemStatus", catalog.getProjectStatus());
+                }
+            } else if ("STANDARD".equals(relation.getSourceType())) {
+                // 查询标准信息
+                FapFeeStandard standard = standardManager.getById(relation.getSourceId());
+                if (standard != null) {
+                    FapFeeCatalog catalog = catalogManager.getById(standard.getCatalogId());
+                    Org org = orgManager.getById(standard.getRegion());
+                    String itemName = catalog != null ? catalog.getProjectName() : "未知项目";
+                    if (org != null) {
+                        itemName += " - " + org.getName();
+                    }
+                    item.put("itemName", itemName);
+                    item.put("itemContent", standard.getFeeStandardContent());
+                    item.put("itemStatus", standard.getStandardStatus());
+                }
+            }
+            relatedItems.add(item);
+        }
+
+        fapPolicyDocument.setRelatedItems(relatedItems);
         return fapPolicyDocument;
     }
 

+ 1 - 1
pricing/src/main/java/com/hotent/pricing/model/entity/policy/FapFeeStandard.java

@@ -73,5 +73,5 @@ public class FapFeeStandard extends CommonModel<FapFeeStandard> {
     @ApiModelProperty(value = "关联的政府文件列表")
     @TableField(exist = false)
     @JsonProperty("documents")
-    private List<FapDocumentRelation> documents;
+    private List<FapPolicyDocument> documents;
 }

+ 7 - 0
pricing/src/main/java/com/hotent/pricing/model/entity/policy/FapPolicyDocument.java

@@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.hotent.pricing.model.CommonModel;
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -115,4 +117,9 @@ public class FapPolicyDocument extends CommonModel<FapPolicyDocument> {
     @JsonProperty("relatedItemCount")
     private Integer relatedItemCount;
 
+    @ApiModelProperty(value = "关联项目列表")
+    @TableField(exist = false)
+    @JsonProperty("relatedItems")
+    private List<Map<String, Object>> relatedItems;
+
 }

+ 1 - 1
pricing/src/main/java/com/hotent/pricing/model/params/BatchStatusRequest.java

@@ -20,7 +20,7 @@ public class BatchStatusRequest {
     @ApiModelProperty(value = "目录ID列表(逗号分隔)", required = true)
     private String ids;
 
-    @ApiModelProperty(value = "状态:0-正常,1-暂停,2-取消", required = true)
+    @ApiModelProperty(value = "状态:zc-正常,zt-暂停,qx-取消", required = true)
     private String status;
 
     @ApiModelProperty(value = "更新原因")

+ 38 - 4
pricing/src/main/resources/mapper/FapFeeStandardDao.xml

@@ -17,12 +17,16 @@
             fs.create_time as createTime,
             fs.create_by as createBy,
             catalog.project_name as projectName,
-            -- 关联的政策文件(简单合并显示
+            -- 关联的政策文件(通过新的关联表
             (
                 SELECT GROUP_CONCAT(pd.title SEPARATOR ', ')
-                FROM fap_fee_standard_document fsd
-                LEFT JOIN fap_policy_document pd ON fsd.policy_doc_id = pd.id
-                WHERE fsd.standard_id = fs.id AND pd.is_deleted = '0'
+                FROM fap_document_relation fdr
+                LEFT JOIN fap_policy_document pd ON fdr.policy_doc_id = pd.id
+                WHERE fdr.source_type = 'STANDARD' 
+                  AND fdr.source_id = fs.id 
+                  AND fdr.relation_status = '1'
+                  AND fdr.is_deleted = '0'
+                  AND pd.is_deleted = '0'
             ) as documentBasis
         FROM fap_fee_standard fs
         LEFT JOIN uc_org org ON fs.region = org.id_
@@ -60,4 +64,34 @@
         ORDER BY fs.update_time DESC, fs.create_time DESC
     </select>
 
+    <!-- 查询标准关联的政策文件详细信息 -->
+    <select id="getStandardPolicyDocuments" resultType="java.util.Map">
+        SELECT 
+            pd.id as policyDocId,
+            pd.title,
+            pd.doc_number as docNumber,
+            pd.subject_terms as subjectTerms,
+            pd.doc_type as docType,
+            pd.issuing_authority as issuingAuthority,
+            issuing_org.NAME_ as issuingAuthorityName,
+            pd.publish_date as publishDate,
+            pd.effective_date as effectiveDate,
+            pd.execution_date as executionDate,
+            pd.doc_status as docStatus,
+            pd.website_publish as websitePublish,
+            pd.sync_database as syncDatabase,
+            pd.attachment_url as attachmentUrl,
+            fdr.remark as relationRemark,
+            fdr.create_time as relationCreateTime
+        FROM fap_document_relation fdr
+        LEFT JOIN fap_policy_document pd ON fdr.policy_doc_id = pd.id
+        LEFT JOIN uc_org issuing_org ON pd.issuing_authority = issuing_org.id_
+        WHERE fdr.source_type = 'STANDARD' 
+          AND fdr.source_id = #{standardId}
+          AND fdr.relation_status = '1'
+          AND fdr.is_deleted = '0'
+          AND pd.is_deleted = '0'
+        ORDER BY fdr.create_time DESC
+    </select>
+
 </mapper>

+ 1 - 0
pricing/src/main/resources/mapper/FapPolicyDocumentMapper.xml

@@ -87,4 +87,5 @@
         ORDER BY doc.create_time DESC
     </select>
 
+
 </mapper>

+ 18 - 10
uc/src/main/java/com/hotent/uc/controller/OrgController.java

@@ -1661,10 +1661,13 @@ public class OrgController extends BaseController<OrgManager, Org> {
 		QueryFilter filter = QueryFilter.build();
 		List<Org> allOrgList = orgService.getByParentAndDem(filter);
 
+		// 获取当前用户组织的所有祖先组织ID集合
+		Set<String> ancestorIds = getAncestorIds(userOrgId, allOrgList);
+
 		List<Org> filteredOrgList = new ArrayList<>();
 		for (Org org : allOrgList) {
-			// 不是上级以上的组织就保留
-			if (!isAncestor(org.getId(), userOrgId, allOrgList)) {
+			// 过滤掉当前用户组织的所有上级组织
+			if (!ancestorIds.contains(org.getId())) {
 				filteredOrgList.add(org);
 			}
 		}
@@ -1674,13 +1677,18 @@ public class OrgController extends BaseController<OrgManager, Org> {
 	}
 
 	/**
-	 * 判断是否为上级组织
+	 * 获取指定组织的所有祖先组织ID集合
+	 * @param orgId 组织ID
+	 * @param allOrgList 所有组织列表
+	 * @return 祖先组织ID集合
 	 */
-	private boolean isAncestor(String orgId, String descendantId, List<Org> allOrgList) {
-		// 从后代往上找,看能否找到祖先
+	private Set<String> getAncestorIds(String orgId, List<Org> allOrgList) {
+		Set<String> ancestorIds = new HashSet<>();
+		
+		// 从当前组织往上找,找到所有祖先组织
 		String currentParentId = null;
 		for (Org org : allOrgList) {
-			if (descendantId.equals(org.getId())) {
+			if (orgId.equals(org.getId())) {
 				currentParentId = org.getParentId();
 				break;
 			}
@@ -1688,9 +1696,8 @@ public class OrgController extends BaseController<OrgManager, Org> {
 
 		int depth = 0;
 		while (StringUtil.isNotEmpty(currentParentId) && depth < 10) {
-			if (orgId.equals(currentParentId)) {
-				return true;
-			}
+			ancestorIds.add(currentParentId);
+			
 			// 继续往上找
 			String nextParentId = null;
 			for (Org org : allOrgList) {
@@ -1702,7 +1709,8 @@ public class OrgController extends BaseController<OrgManager, Org> {
 			currentParentId = nextParentId;
 			depth++;
 		}
-		return false;
+		
+		return ancestorIds;
 	}
 
 	/**