5.20

package com.example.demos7.service;

import com.example.demos7.model.Policy;
import com.example.demos7.repository.PolicyRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Service;

@Service
public class PolicyService {

@Autowired
private PolicyRepository policyRepository;

public Page<Policy> getPoliciesByCategory(String categoryId, int page) {
    return policyRepository.findByCategoryId(categoryId, PageRequest.of(page, 10));
}

public Page<Policy> advancedSearch(String name, String content, String organ,
                                   String categoryId, String policyNumber, int page) {
    return policyRepository.advancedSearch(
            name, content, organ, categoryId, policyNumber, PageRequest.of(page, 10)
    );
}

}
package com.example.demos7.service;

import com.example.demos7.dto.TreeNode;
import com.example.demos7.model.PolicyCategory;
import com.example.demos7.repository.PolicyCategoryRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class PolicyCategoryService {
@Autowired
private PolicyCategoryRepository categoryRepository;

public List<TreeNode> buildCategoryTree() {
    List<PolicyCategory> allCategories = categoryRepository.findAll();
    Map<String, TreeNode> nodeMap = new HashMap<>();

    // 创建所有节点
    allCategories.forEach(category -> {
        TreeNode node = new TreeNode();
        node.setId(category.getTypeId());
        node.setLabel(category.getTypeName());
        node.setChildren(new ArrayList<>());
        nodeMap.put(category.getTypeId(), node);
    });

    // 构建树结构
    List<TreeNode> rootNodes = new ArrayList<>();
    nodeMap.values().forEach(node -> {
        String parentId = node.getId().substring(0, 2) + "00"; // 推断父节点ID
        if (nodeMap.containsKey(parentId) && !parentId.equals(node.getId())) {
            nodeMap.get(parentId).getChildren().add(node);
        } else {
            rootNodes.add(node);
        }
    });

    return rootNodes;
}

}
package com.example.demos7.repository;

import com.example.demos7.model.PolicyCategory;
import org.springframework.data.jpa.repository.JpaRepository;

public interface PolicyCategoryRepository extends JpaRepository<PolicyCategory, String> {
}
package com.example.demos7.repository;

import com.example.demos7.model.Policy;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

@Repository
public interface PolicyRepository extends JpaRepository<Policy, Long> {

// 新增方法:根据分类ID分页查询
Page<Policy> findByCategoryId(String categoryId, Pageable pageable);

// 原有高级检索方法
@Query("SELECT p FROM Policy p WHERE " +
        "(:name IS NULL OR p.name LIKE %:name%) AND " +
        "(:content IS NULL OR p.content LIKE %:content%) AND " +
        "(:organ IS NULL OR p.issuingAuthority LIKE %:organ%) AND " +
        "(:categoryId IS NULL OR p.categoryId = :categoryId) AND " +
        "(:policyNumber IS NULL OR p.policyNumber LIKE %:policyNumber%)")
Page<Policy> advancedSearch(
        @Param("name") String name,
        @Param("content") String content,
        @Param("organ") String organ,
        @Param("categoryId") String categoryId,
        @Param("policyNumber") String policyNumber,
        Pageable pageable
);

}

高级检索
政策名称:
政策内容:
发文机构:
政策分类:
文号:
posted @ 2025-05-20 21:59  李蕊lr  阅读(13)  评论(0)    收藏  举报