feat(87795): 首页-高级检索-全部-最多展示十条数据

This commit is contained in:
yjz
2024-08-01 19:15:22 +08:00
parent be09b5a95f
commit fa71c51bf5
5 changed files with 75 additions and 82 deletions
@@ -10,7 +10,6 @@ import com.jero.modules.tag.entity.LawsTag;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.Map;
@@ -30,6 +29,13 @@ public interface ILawsCommonService {
List<Map<String,Object>> getCommonList(Map<String, Object> parameterMap);
/**
* 构建查询条件(高级搜索用)
* @param parameterMap
* @return
*/
String buildQueryCondition(Map<String, Object> parameterMap);
/**
* 获取导出的数据
* @param parameterMap
@@ -313,6 +313,24 @@ public class LawsCommonServiceImpl implements ILawsCommonService {
return infoPage;
}
@Override
public String buildQueryCondition(Map<String, Object> parameterMap) {
// 获取操作模块
String module = (String) parameterMap.get(FieldCommon.MODULE);
// 获取要操作的表名
String tableName = TableNameEnum.getTableName(module);
// 查询全部字段列表
List<LawsTag> fieldList = lawsCommonMapper.getFieldList(tableName);
// 筛选出用于查询的字段
List<LawsTag> fieldListCondition = fieldList.stream().filter(lawsTag -> YesOrNoEnum.YES.getInteger()
.equals(lawsTag.getIsQuery())).collect(Collectors.toList());
// 封装查询条件
return getSelectCondition(parameterMap, fieldListCondition);
}
/**
* @Author: liao
* @Date: 2023/10/19 15:36
@@ -14,6 +14,7 @@ import com.jero.modules.system.entity.SysDict;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
/**
* @author lqt
@@ -93,5 +94,19 @@ public interface LawsHomeSearchMapper extends BaseMapper<LawsHomeNormalSearchHis
*/
List<Long> getHomeSearchData(@Param("userId") String userId);
/**
* 高级搜索(全部)
*
* @param page
* @param selectFieldByDomestic
* @param selectFieldByEnterprise
* @param queryConditionByDomestic
* @param queryConditionByEnterprise
* @return
*/
IPage<Map<String, Object>> getAdvancedSearchAll(IPage page,
@Param("selectFieldByDomestic") String selectFieldByDomestic,
@Param("selectFieldByEnterprise") String selectFieldByEnterprise,
@Param("queryConditionByDomestic") String queryConditionByDomestic,
@Param("queryConditionByEnterprise") String queryConditionByEnterprise);
}
@@ -109,4 +109,15 @@
left join laws_push_range l2 on l1.id = l2.unique_relation_flag
where l1.del_flag = 0 and l1.release_status = 1 and (l1.push_range_flag = 1 and l2.user_id = #{userId})
</select>
<select id="getAdvancedSearchAll" resultType="java.util.Map">
select * from (
select ${selectFieldByDomestic} from laws_domestic_standard
${queryConditionByDomestic}
union all
select ${selectFieldByEnterprise} from laws_enterprise_standard
${queryConditionByEnterprise}
) t
order by create_time desc
</select>
</mapper>
@@ -77,7 +77,6 @@ import javax.annotation.Resource;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Field;
import java.net.URLEncoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.concurrent.CompletableFuture;
@@ -1524,90 +1523,34 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
@Override
public Result<IPage<Map<String, Object>>> getAdvancedSearchAll(Map<String, Object> parameterMap) {
Map<String, Object> originalParameterMap = new HashMap<>(parameterMap);
Map<String, Object> parameterMapByDomestic = new HashMap<>(parameterMap);
Map<String, Object> parameterMapByEnterprise = new HashMap<>(parameterMap);
boolean isEnterprise = true;
// 外来标准法规
Result<IPage<Map<String, Object>>> commonPageNoPermissionsResult =
lawsDomesticController.getCommonPageNoPermissions(parameterMap);
if (!Objects.isNull(parameterMap.get("standard_class"))){
// 标准类别(只有外来标准法规有该字段)
return commonPageNoPermissionsResult;
}
Object standardState = parameterMap.get("standard_state");
if (!Objects.isNull(standardState)){
isEnterprise = false;
// 外来标准法规和企业标准的 标准状态 不同需要转换
// 外来标准法规 现行/发布/报批/审查/征求意见/草案/废止
// 企业标准 现行有效、废止
String standardStateText =
sysDictService.queryDictText("standard_state", String.valueOf(standardState));
List<String> standardStateList = new ArrayList<>();
List<DictModel> dictItems = sysDictService.getDictItems("enterprise_standard_state");
if (standardStateText.contains("现行")){
Optional<DictModel> optionalDictModel =
dictItems.stream().filter(v -> "现行".equals(v.getText())).findFirst();
optionalDictModel.ifPresent(v -> standardStateList.add(v.getValue()));
}
if (standardStateText.contains("废止")){
Optional<DictModel> optionalDictModel =
dictItems.stream().filter(v -> "废止".equals(v.getText())).findFirst();
optionalDictModel.ifPresent(v -> standardStateList.add(v.getValue()));
}
if (!standardStateList.isEmpty()){
isEnterprise = true;
parameterMapByEnterprise.put("standard_state", String.join(",", standardStateList));
}
}
// 显示字段
String selectFieldByDomestic = "standard_number, standard_name, null, " +
"implementation_date, new_product_impl_date, new_auth_impl_date, create_time, 1 resource_type";
String selectFieldByEnterprise = "standard_number, standard_name, " +
"release_date, implementation_date, null, null, create_time, 3 resource_type";
// 查询企业标准
if (isEnterprise){
// 外部标准 和 企标 的关联部门字段不一样
if (parameterMapByEnterprise.containsKey("associate_dept")){
parameterMapByEnterprise.put("related_department", parameterMapByEnterprise.get("associate_dept"));
}
Result<IPage<Map<String, Object>>> commonPageNoPermissionsResultByEnterpriseResult =
lawsEnterpriseController.getCommonPageNoPermissions(parameterMapByEnterprise);
// 汇总数据
List<Map> maps1 = JSON.parseArray(JSON.toJSONString(commonPageNoPermissionsResult.getResult().getRecords()),
Map.class);
for (Map map : maps1) {
map.put("resource_type", LawsHomeSearchCommon.LAWS_DOMESTIC_STANDARD);
}
List<Map> maps2 = JSON.parseArray(
JSON.toJSONString(commonPageNoPermissionsResultByEnterpriseResult.getResult().getRecords()),
Map.class);
for (Map map : maps2) {
map.put("resource_type", LawsHomeSearchCommon.LAWS_ENTERPRISE_STANDARD);
}
maps1.addAll(maps2);
// 排序
Comparator<Map> createTime = Comparator.comparing(map -> {
String createTimeStr = String.valueOf(map.get("create_time"));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
return sdf.parse(createTimeStr);
} catch (ParseException e) {
throw new RuntimeException(e);
}
});
Comparator<Map> reversed = createTime.reversed();
maps1.sort(reversed);
// 构建搜索条件
String orderBy = "order by create_time desc";
parameterMapByDomestic.put(FieldCommon.MODULE, TableNameEnum.DOMESTIC_REGULATIONS.getValue());
parameterMapByEnterprise.put(FieldCommon.MODULE, TableNameEnum.DOMESTIC_REGULATIONS.getValue());
String queryConditionByDomestic =
lawsCommonService.buildQueryCondition(parameterMapByDomestic).replace(orderBy, "");
String queryConditionByEnterprise =
lawsCommonService.buildQueryCondition(parameterMapByEnterprise).replace(orderBy, "");
// 手动分页
if (!"-1".equals(originalParameterMap.get("pageSize"))){
maps1 = maps1.stream()
.skip((Math.max(1, Long.parseLong((String) originalParameterMap.get("pageNo"))) - 1) * Long.parseLong((String) originalParameterMap.get("pageSize")))
.limit(Long.parseLong((String) originalParameterMap.get("pageSize")))
.collect(Collectors.toList());
// 分页参数
long pageNo = Long.parseLong(String.valueOf(parameterMap.get("pageNo")));
long pageSize = Long.parseLong(String.valueOf(parameterMap.get("pageSize")));
IPage page = new Page(pageNo, pageSize);
}
commonPageNoPermissionsResult.getResult().setRecords((List<Map<String, Object>>) (List<?>)maps1);
commonPageNoPermissionsResult.getResult().setTotal(maps1.size());
}
return commonPageNoPermissionsResult;
// 查询数据
IPage<Map<String, Object>> advancedSearchAll =
lawsHomeSearchMapper.getAdvancedSearchAll(page, selectFieldByDomestic, selectFieldByEnterprise,
queryConditionByDomestic, queryConditionByEnterprise);
return Result.OK(advancedSearchAll);
}
@Override