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
);
}

浙公网安备 33010602011771号