diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/service/ILawsCommonService.java b/laws-modules/src/main/java/com/jero/modules/laws/common/service/ILawsCommonService.java index d99d3813..fbe7ce49 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/service/ILawsCommonService.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/service/ILawsCommonService.java @@ -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> getCommonList(Map parameterMap); + /** + * 构建查询条件(高级搜索用) + * @param parameterMap + * @return + */ + String buildQueryCondition(Map parameterMap); + /** * 获取导出的数据 * @param parameterMap diff --git a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java index 3ce6e310..e0e9fa64 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/common/service/impl/LawsCommonServiceImpl.java @@ -313,6 +313,24 @@ public class LawsCommonServiceImpl implements ILawsCommonService { return infoPage; } + @Override + public String buildQueryCondition(Map parameterMap) { + // 获取操作模块 + String module = (String) parameterMap.get(FieldCommon.MODULE); + // 获取要操作的表名 + String tableName = TableNameEnum.getTableName(module); + + // 查询全部字段列表 + List fieldList = lawsCommonMapper.getFieldList(tableName); + + // 筛选出用于查询的字段 + List 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 diff --git a/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/LawsHomeSearchMapper.java b/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/LawsHomeSearchMapper.java index b67808fb..17c52377 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/LawsHomeSearchMapper.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/LawsHomeSearchMapper.java @@ -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 getHomeSearchData(@Param("userId") String userId); - + /** + * 高级搜索(全部) + * + * @param page + * @param selectFieldByDomestic + * @param selectFieldByEnterprise + * @param queryConditionByDomestic + * @param queryConditionByEnterprise + * @return + */ + IPage> getAdvancedSearchAll(IPage page, + @Param("selectFieldByDomestic") String selectFieldByDomestic, + @Param("selectFieldByEnterprise") String selectFieldByEnterprise, + @Param("queryConditionByDomestic") String queryConditionByDomestic, + @Param("queryConditionByEnterprise") String queryConditionByEnterprise); } diff --git a/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/xml/LawsHomeSearchMapper.xml b/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/xml/LawsHomeSearchMapper.xml index 56e5cdd9..cc72b111 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/xml/LawsHomeSearchMapper.xml +++ b/laws-modules/src/main/java/com/jero/modules/laws/home/mapper/xml/LawsHomeSearchMapper.xml @@ -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}) + + diff --git a/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java index e8f19487..9402bd03 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/home/service/impl/LawsHomeSearchServiceImpl.java @@ -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>> getAdvancedSearchAll(Map parameterMap) { - Map originalParameterMap = new HashMap<>(parameterMap); + Map parameterMapByDomestic = new HashMap<>(parameterMap); Map parameterMapByEnterprise = new HashMap<>(parameterMap); - boolean isEnterprise = true; - // 外来标准法规 - Result>> 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 standardStateList = new ArrayList<>(); - List dictItems = sysDictService.getDictItems("enterprise_standard_state"); - if (standardStateText.contains("现行")){ - Optional optionalDictModel = - dictItems.stream().filter(v -> "现行".equals(v.getText())).findFirst(); - optionalDictModel.ifPresent(v -> standardStateList.add(v.getValue())); - } - if (standardStateText.contains("废止")){ - Optional 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>> commonPageNoPermissionsResultByEnterpriseResult = - lawsEnterpriseController.getCommonPageNoPermissions(parameterMapByEnterprise); - // 汇总数据 - List maps1 = JSON.parseArray(JSON.toJSONString(commonPageNoPermissionsResult.getResult().getRecords()), - Map.class); - for (Map map : maps1) { - map.put("resource_type", LawsHomeSearchCommon.LAWS_DOMESTIC_STANDARD); - } - List 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 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 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>) (List)maps1); - commonPageNoPermissionsResult.getResult().setTotal(maps1.size()); - } - - return commonPageNoPermissionsResult; + // 查询数据 + IPage> advancedSearchAll = + lawsHomeSearchMapper.getAdvancedSearchAll(page, selectFieldByDomestic, selectFieldByEnterprise, + queryConditionByDomestic, queryConditionByEnterprise); + return Result.OK(advancedSearchAll); } @Override