feat(87795): 首页-高级检索-全部-最多展示十条数据
This commit is contained in:
+7
-1
@@ -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
|
||||
|
||||
+18
@@ -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
|
||||
|
||||
+16
-1
@@ -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);
|
||||
}
|
||||
|
||||
+11
@@ -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>
|
||||
|
||||
+23
-80
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user