Merge branch 'fourthStage' into fiveStage
This commit is contained in:
-5
@@ -43,7 +43,6 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = JeroBootException.class)
|
||||
public boolean saveAndScheduleJob(QuartzJob quartzJob) {
|
||||
// DB设置修改
|
||||
quartzJob.setDelFlag(CommonConstant.DEL_FLAG_0);
|
||||
@@ -59,7 +58,6 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
|
||||
* 恢复定时任务
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = JeroBootException.class)
|
||||
public boolean resumeJob(QuartzJob quartzJob) {
|
||||
schedulerDelete(quartzJob.getId());
|
||||
schedulerAdd(quartzJob.getId(), quartzJob.getJobClassName().trim(), quartzJob.getCronExpression().trim(), quartzJob.getParameter());
|
||||
@@ -73,7 +71,6 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
|
||||
* @throws SchedulerException
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = JeroBootException.class)
|
||||
public boolean editAndScheduleJob(QuartzJob quartzJob) throws SchedulerException {
|
||||
if (CommonConstant.STATUS_NORMAL.equals(quartzJob.getStatus())) {
|
||||
schedulerDelete(quartzJob.getId());
|
||||
@@ -88,7 +85,6 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
|
||||
* 删除&停止删除定时任务
|
||||
*/
|
||||
@Override
|
||||
@Transactional(rollbackFor = JeroBootException.class)
|
||||
public boolean deleteAndStopJob(QuartzJob job) {
|
||||
schedulerDelete(job.getId());
|
||||
return this.removeById(job.getId());
|
||||
@@ -118,7 +114,6 @@ public class QuartzJobServiceImpl extends ServiceImpl<QuartzJobMapper, QuartzJob
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = JeroBootException.class)
|
||||
public void pause(QuartzJob quartzJob) {
|
||||
schedulerDelete(quartzJob.getId());
|
||||
quartzJob.setStatus(CommonConstant.STATUS_DISABLE);
|
||||
|
||||
+15
-1
@@ -3,12 +3,14 @@ package com.jero.modules.docking.asms.controller;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.modules.docking.asms.entity.LawsAsmsDomestic;
|
||||
import com.jero.modules.docking.asms.service.ILawsAsmsDomesticService;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.jero.modules.docking.asms.service.impl.SynchronizationAsmsService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import com.jero.common.system.base.controller.JeroController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -35,7 +37,8 @@ import org.apache.poi.ss.formula.functions.T;
|
||||
public class LawsAsmsDomesticController extends JeroController<LawsAsmsDomestic, ILawsAsmsDomesticService> {
|
||||
@Autowired
|
||||
private ILawsAsmsDomesticService lawsAsmsDomesticService;
|
||||
|
||||
@Resource
|
||||
private SynchronizationAsmsService synchronizationAsmsService;
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
@@ -162,4 +165,15 @@ public class LawsAsmsDomesticController extends JeroController<LawsAsmsDomestic,
|
||||
lawsAsmsDomesticService.cleanData();
|
||||
return Result.OK("清理成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据标准号同步拆分
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@GetMapping(value = "/syncSplitByStandardNumber")
|
||||
public Result<LawsAsmsDomestic> syncSplitByStandardNumber(@RequestParam(name="standardNumber") String standardNumber) {
|
||||
synchronizationAsmsService.syncSplitByStandardNumber(standardNumber);
|
||||
return Result.OK("!");
|
||||
}
|
||||
}
|
||||
|
||||
+6
-1
@@ -4,6 +4,8 @@ import com.jero.modules.docking.asms.entity.LawsAsmsOpenApi;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -81,7 +83,10 @@ public interface ILawsAsmsOpenApiService extends IService<LawsAsmsOpenApi> {
|
||||
**/
|
||||
void syncBatch(List<String> idList);
|
||||
|
||||
/**
|
||||
@NotNull
|
||||
String disposeImg(String articleContent);
|
||||
|
||||
/**
|
||||
* @Author: liao
|
||||
* @Date: 2023/10/18 16:20
|
||||
* @Description: 批量删除原字典配置项
|
||||
|
||||
+117
-7
File diff suppressed because one or more lines are too long
+320
-10
@@ -2,12 +2,14 @@ package com.jero.modules.docking.asms.service.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.jero.common.exception.JeroBootException;
|
||||
import com.jero.common.util.MinioUtil;
|
||||
import com.jero.common.util.UUIDUtils;
|
||||
import com.jero.modules.docking.asms.entity.LawsAsmsDomestic;
|
||||
import com.jero.modules.docking.asms.mapper.LawsAsmsOpenApiMapper;
|
||||
import com.jero.modules.docking.asms.service.ILawsAsmsDomesticService;
|
||||
import com.jero.modules.docking.asms.service.ILawsAsmsOpenApiService;
|
||||
import com.jero.modules.docking.asms.util.AlphanumericComparator;
|
||||
import com.jero.modules.docking.asms.util.AsmsPostUtil;
|
||||
import com.jero.modules.laws.common.util.DateUtil;
|
||||
@@ -35,13 +37,18 @@ import com.jero.modules.system.service.ISysDictItemService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jsoup.Jsoup;
|
||||
import org.jsoup.nodes.Document;
|
||||
import org.jsoup.nodes.Element;
|
||||
import org.jsoup.select.Elements;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.*;
|
||||
import org.springframework.mock.web.MockMultipartFile;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.InputStream;
|
||||
@@ -92,6 +99,10 @@ public class SynchronizationAsmsService {
|
||||
private IOSSFileService ossFileService;
|
||||
@Autowired
|
||||
private IDocumentSplitService documentSplitService;
|
||||
@Autowired
|
||||
private RestTemplate restTemplate;
|
||||
@Resource
|
||||
private ILawsAsmsOpenApiService lawsAsmsOpenApiService;
|
||||
|
||||
private final static String filePath = "asms/";
|
||||
private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
||||
@@ -388,7 +399,35 @@ public class SynchronizationAsmsService {
|
||||
lawsDocumentSplit.setInfoId(sarFileSplitInfoEO.getId());
|
||||
lawsDocumentSplit.setItemNum(eMap.get("termsNum"));
|
||||
lawsDocumentSplit.setItemTitle(eMap.get("termsName"));
|
||||
lawsDocumentSplit.setItemContent(eMap.get("articleContent"));
|
||||
// 条文内容
|
||||
String articleContent = eMap.get("articleContent");
|
||||
try {
|
||||
// 处理图片
|
||||
articleContent = lawsAsmsOpenApiService.disposeImg(articleContent);
|
||||
}catch (Exception e){
|
||||
log.error(e.getMessage());
|
||||
log.error("图片处理失败!");
|
||||
}
|
||||
// 处理表格
|
||||
if (articleContent.contains("<table style=")){
|
||||
articleContent = "<p>" + articleContent + "</p>";
|
||||
}
|
||||
// 重复性校验
|
||||
LawsDocumentSplit lawsDocumentSplits = lawsDocumentSplitMapper.selectOne(
|
||||
new LambdaQueryWrapper<LawsDocumentSplit>()
|
||||
.eq(LawsDocumentSplit::getInfoId, lawsDocumentSplit.getInfoId())
|
||||
.eq(LawsDocumentSplit::getItemNum, lawsDocumentSplit.getItemNum())
|
||||
.eq(LawsDocumentSplit::getItemTitle, lawsDocumentSplit.getItemTitle()));
|
||||
if (!Objects.isNull(lawsDocumentSplits)){
|
||||
// 合并
|
||||
String itemContent = StringUtils.isNotBlank(lawsDocumentSplits.getItemContent()) ? lawsDocumentSplits.getItemContent() : "";
|
||||
lawsDocumentSplitMapper.update(null,
|
||||
new LambdaUpdateWrapper<LawsDocumentSplit>()
|
||||
.set(LawsDocumentSplit::getItemContent, itemContent + articleContent)
|
||||
.eq(LawsDocumentSplit::getId, lawsDocumentSplits.getId()));
|
||||
return;
|
||||
}
|
||||
lawsDocumentSplit.setItemContent(articleContent);
|
||||
lawsDocumentSplit.setCreateTime(getSimpleDate2(eMap.get("createTime")));
|
||||
lawsDocumentSplit.setUpdateTime(getSimpleDate2(eMap.get("updateTime")));
|
||||
|
||||
@@ -436,17 +475,20 @@ public class SynchronizationAsmsService {
|
||||
});
|
||||
long time2 = System.currentTimeMillis();
|
||||
log.info("=====================同步DocumentSplit条文数据:{}条,耗时:{}毫秒=====================", n[0], time2 - time1);
|
||||
|
||||
String regex = "[^a-zA-Z0-9.]";
|
||||
insertSplitList.forEach(sarFileSplitInfoEO -> {
|
||||
String infoId = sarFileSplitInfoEO.getId();
|
||||
List<LawsDocumentSplit> lawsDocumentSplitList = infoMap.get(infoId);
|
||||
List<String> itemNumList = lawsDocumentSplitList.stream().map(LawsDocumentSplit::getItemNum).collect(Collectors.toList());
|
||||
|
||||
List<String> itemNumList = new ArrayList<>();
|
||||
for (LawsDocumentSplit lawsDocumentSplit : lawsDocumentSplitList) {
|
||||
String itemNum = lawsDocumentSplit.getItemNum();
|
||||
itemNumList.add(itemNum.replaceAll(regex, ""));
|
||||
}
|
||||
// 对目录排序
|
||||
Collections.sort(itemNumList, new AlphanumericComparator());
|
||||
Map<String, Long> sortMap = new HashMap<>();
|
||||
for (int i = 0; i < itemNumList.size(); i++) {
|
||||
sortMap.put(itemNumList.get(i), i+2L);
|
||||
sortMap.put(itemNumList.get(i), i + 2L);
|
||||
}
|
||||
List<SarFileSplitMenuEO> sarFileSplitMenuEOList = new java.util.ArrayList<>();
|
||||
// 根目录
|
||||
@@ -467,12 +509,12 @@ public class SynchronizationAsmsService {
|
||||
sarFileSplitMenuEO.setId(id);
|
||||
sarFileSplitMenuEO.setInfoId(infoId);
|
||||
sarFileSplitMenuEO.setName(itemNum);
|
||||
sarFileSplitMenuEO.setDisplaySeq(sortMap.get(itemNum));
|
||||
sarFileSplitMenuEO.setDisplaySeq(sortMap.get(itemNum.replaceAll(regex, "")));
|
||||
sarFileSplitMenuEO.setValidFlag(0);
|
||||
String itemTitle = lawsDocumentSplit.getItemTitle();
|
||||
sarFileSplitMenuEO.setItemName(itemTitle.substring(0, Math.min(10, itemTitle.length())));
|
||||
sarFileSplitMenuEOList.add(sarFileSplitMenuEO);
|
||||
idMap.put(itemNum, id);
|
||||
idMap.put(itemNum.replaceAll(regex, ""), id);
|
||||
|
||||
lawsDocumentSplit.setMenuId(id);
|
||||
lawsDocumentSplitMapper.updateById(lawsDocumentSplit);
|
||||
@@ -480,7 +522,276 @@ public class SynchronizationAsmsService {
|
||||
|
||||
// 设置父id
|
||||
sarFileSplitMenuEOList.forEach(sarFileSplitMenuEO -> {
|
||||
String itemNum = sarFileSplitMenuEO.getName();
|
||||
String itemNum = sarFileSplitMenuEO.getName().replaceAll(regex, "");
|
||||
String[] split = itemNum.split("\\.");
|
||||
if (split.length == 1) {
|
||||
sarFileSplitMenuEO.setPId(rootId);
|
||||
} else {
|
||||
// 去除数组中的最后一个元素
|
||||
split = Arrays.copyOf(split, split.length - 1);
|
||||
String pid = idMap.get(StringUtils.join(split, "."));
|
||||
if (StringUtils.isBlank(pid)) {
|
||||
pid = rootId;
|
||||
}
|
||||
sarFileSplitMenuEO.setPId(pid);
|
||||
}
|
||||
});
|
||||
if (!sarFileSplitMenuEOList.isEmpty()) {
|
||||
sarFileSplitMenuEOMapper.insertForeach(sarFileSplitMenuEOList);
|
||||
}
|
||||
});
|
||||
long time3 = System.currentTimeMillis();
|
||||
log.info("=====================生成拆分详情左侧目录耗时:{}毫秒=====================", time3 - time2);
|
||||
|
||||
insertSplitList.forEach(sarFileSplitInfoEO -> {
|
||||
String infoId = sarFileSplitInfoEO.getId();
|
||||
List<LawsDocumentSplit> lawsDocumentSplitList = infoMap.get(infoId);
|
||||
lawsDocumentSplitList.forEach(lawsDocumentSplit -> {
|
||||
String itemContent = lawsDocumentSplit.getItemContent();
|
||||
// 使用 jsoup 解析 HTML
|
||||
Document doc = Jsoup.parse(itemContent);
|
||||
|
||||
// 选择所有的 <p> 元素
|
||||
Elements paragraphs = doc.select("p");
|
||||
|
||||
// 存储提取的文本内容
|
||||
List<String> textContents = new java.util.ArrayList<>();
|
||||
|
||||
for (Element paragraph : paragraphs) {
|
||||
// 获取每个 <p> 元素的文本内容并添加到集合中
|
||||
String textContent = paragraph.text();
|
||||
textContents.add(textContent);
|
||||
}
|
||||
|
||||
for (int i = 0; i < textContents.size(); i++) {
|
||||
SarFileSplitItemsValEO sarFileSplitItemsValEO = new SarFileSplitItemsValEO();
|
||||
sarFileSplitItemsValEO.setId(UUIDUtils.randomUUID20());
|
||||
sarFileSplitItemsValEO.setType("TEXT");
|
||||
sarFileSplitItemsValEO.setItemId(lawsDocumentSplit.getId());
|
||||
sarFileSplitItemsValEO.setItemContent(textContents.get(i));
|
||||
sarFileSplitItemsValEO.setDisplaySeq(i+1);
|
||||
sarFileSplitItemsValEO.setValidFlag(0);
|
||||
sarFileSplitItemsValEOService.insertSelective(sarFileSplitItemsValEO);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
for (SarFileSplitInfoEO sarFileSplitInfoEO : insertSplitList) {
|
||||
HashMap<String, Object> parameter = new HashMap<>();
|
||||
parameter.put("id", sarFileSplitInfoEO.getId());
|
||||
documentSplitService.publish(parameter);
|
||||
}
|
||||
long time4 = System.currentTimeMillis();
|
||||
log.info("=====================生成条文详情耗时:{}毫秒=====================", time4 - time3);
|
||||
|
||||
long end = System.currentTimeMillis();
|
||||
log.info("=====================全部同步完成,耗时:{} 毫秒=====================", end - start);
|
||||
log.info("=====================定时任务同步结束=====================");
|
||||
}
|
||||
|
||||
public void syncSplitByStandardNumber(String standardNumber) {
|
||||
log.info("=====================定时同步文档拆分=====================");
|
||||
long start = System.currentTimeMillis();
|
||||
|
||||
// 文档拆分
|
||||
String url = "xiaobodata/openApi/article/search";
|
||||
Map<String, String> paramMap = new HashMap<>();
|
||||
paramMap.put("pageNo", "1");
|
||||
paramMap.put("pageSize", "2");
|
||||
Map<String, Object> totalMap = asmsPostUtil.sendGetReq2(url, paramMap);
|
||||
Integer total = (Integer) totalMap.get("total");
|
||||
paramMap.put("pageSize", total.toString());
|
||||
|
||||
List<Map<String, String>> mapList = asmsPostUtil.sendGetReq(url, paramMap);
|
||||
if (Objects.isNull(mapList)) {
|
||||
log.info("=====================没有获取到ASMS系统数据,同步结束=====================");
|
||||
return;
|
||||
}
|
||||
|
||||
List<SarFileSplitInfoEO> insertSplitList = new ArrayList<>();
|
||||
mapList.forEach(eMap -> {
|
||||
String code = eMap.get("code").trim();
|
||||
String name = eMap.get("name");
|
||||
if (!code.contains(standardNumber)) {
|
||||
return;
|
||||
}
|
||||
LambdaQueryWrapper<LawsDomesticStandard> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(LawsDomesticStandard::getStandardNumber, code);
|
||||
LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getOne(queryWrapper);
|
||||
if (Objects.isNull(lawsDomesticStandard)) {
|
||||
return;
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<OSSFile> queryWrapper1 = new LambdaQueryWrapper<>();
|
||||
queryWrapper1.eq(OSSFile::getStandardId, lawsDomesticStandard.getId());
|
||||
queryWrapper1.eq(OSSFile::getStandardFileType, "publish_of_original");
|
||||
queryWrapper1.like(OSSFile::getFileName, ".docx");
|
||||
OSSFile ossFile = ossFileService.getOne(queryWrapper1);
|
||||
|
||||
SarFileSplitInfoEO sarFileSplitInfoEO = new SarFileSplitInfoEO();
|
||||
sarFileSplitInfoEO.setStandardId(lawsDomesticStandard.getId());
|
||||
sarFileSplitInfoEO.setSerialNumber(lawsDomesticStandard.getStandardNumber());
|
||||
sarFileSplitInfoEO.setTitle(lawsDomesticStandard.getStandardName());
|
||||
sarFileSplitInfoEO.setFileType("publish_of_original");
|
||||
sarFileSplitInfoEO.setFileId(ossFile.getId());
|
||||
sarFileSplitInfoEO.setFileName(ossFile.getFileName());
|
||||
sarFileSplitInfoEO.setSplitStatus("1");
|
||||
sarFileSplitInfoEO.setCreateTime(getSimpleDate2(eMap.get("createTime")));
|
||||
sarFileSplitInfoEO.setUpdateTime(getSimpleDate2(eMap.get("updateTime")));
|
||||
sarFileSplitInfoEO.setIsAsmsImport("1");
|
||||
sarFileSplitInfoEO.setAuthor("云平台");
|
||||
sarFileSplitInfoEO.setSplitResult("成功");
|
||||
|
||||
sarFileSplitInfoEO.setId(UUIDUtils.randomUUID20());
|
||||
|
||||
insertSplitList.add(sarFileSplitInfoEO);
|
||||
});
|
||||
if (CollectionUtils.isEmpty(insertSplitList)) {
|
||||
log.info("=====================昨天新增拆分0条,同步结束=====================");
|
||||
return;
|
||||
}
|
||||
|
||||
sarFileSplitInfoService.saveBatch(insertSplitList, insertSplitList.size());
|
||||
long time1 = System.currentTimeMillis();
|
||||
log.info("=====================同步标准拆分数据:{}条,耗时:{}毫秒=====================", insertSplitList.size(), time1 - start);
|
||||
|
||||
// 单条拆分的详情
|
||||
String splitUrl = "xiaobodata/openApi/article/details";
|
||||
List<SysDictItem> sysDictItemList = sysDictItemService.list();
|
||||
Map<String, String> paramMap1 = new HashMap<>();
|
||||
Map<String, String> paramMap2 = new HashMap<>();
|
||||
Map<String, String> paramMap3 = new HashMap<>();
|
||||
Map<String, List<LawsDocumentSplit>> infoMap = new HashMap<>();
|
||||
int[] n = {0};
|
||||
|
||||
for (SarFileSplitInfoEO sarFileSplitInfoEO : insertSplitList) {
|
||||
paramMap.put("standardCode", sarFileSplitInfoEO.getSerialNumber());
|
||||
paramMap1.put("standardCode", sarFileSplitInfoEO.getSerialNumber());
|
||||
List<Map<String, String>> mapListAll = asmsPostUtil.sendGetReq(splitUrl, paramMap1);
|
||||
List<LawsDocumentSplit> insertDocumentList = new ArrayList<>();
|
||||
for (Map<String, String> eMap : mapListAll) {
|
||||
// 单个法规的条文解读详情
|
||||
paramMap2.put("standardCode", sarFileSplitInfoEO.getSerialNumber());
|
||||
|
||||
paramMap2.put("termsCode", eMap.get("termsNum"));
|
||||
Map<String, Object> objectMap = asmsPostUtil.sendGetReq2("xiaobodata/openApi/article/interpretation/details", paramMap2);
|
||||
|
||||
// 单个法规的条文标签详情
|
||||
paramMap3.put("standardCode", sarFileSplitInfoEO.getSerialNumber());
|
||||
paramMap3.put("termsCode", eMap.get("termsNum"));
|
||||
Map<String, Object> objectMap2 = asmsPostUtil.sendGetReq2("xiaobodata/openApi/article/label/details", paramMap3);
|
||||
|
||||
LawsDocumentSplit lawsDocumentSplit = new LawsDocumentSplit();
|
||||
lawsDocumentSplit.setInfoId(sarFileSplitInfoEO.getId());
|
||||
lawsDocumentSplit.setItemNum(eMap.get("termsNum"));
|
||||
lawsDocumentSplit.setItemTitle(eMap.get("termsName"));
|
||||
String articleContent = eMap.get("articleContent");
|
||||
String disposeImg = articleContent;
|
||||
try {
|
||||
// 处理图片
|
||||
disposeImg = lawsAsmsOpenApiService.disposeImg(articleContent);
|
||||
}catch (Exception e){
|
||||
log.error(e.getMessage());
|
||||
log.error("图片处理失败!");
|
||||
}
|
||||
lawsDocumentSplit.setItemContent(disposeImg);
|
||||
lawsDocumentSplit.setCreateTime(getSimpleDate2(eMap.get("createTime")));
|
||||
lawsDocumentSplit.setUpdateTime(getSimpleDate2(eMap.get("updateTime")));
|
||||
|
||||
lawsDocumentSplit.setInterpretationArticles((String) objectMap.get("termsInterpretation"));
|
||||
|
||||
lawsDocumentSplit.setFunctionClassification((String) objectMap2.get("functionClassification"));
|
||||
lawsDocumentSplit.setFunctionProfessional((String) objectMap2.get("functionProfession"));
|
||||
lawsDocumentSplit.setFunctionGroupCode((String) objectMap2.get("groupingNum"));
|
||||
lawsDocumentSplit.setFunctionGroupName((String) objectMap2.get("groupingNum"));
|
||||
lawsDocumentSplit.setCerImplementDate((String) objectMap2.get("implementDateCertified"));
|
||||
lawsDocumentSplit.setNewCerImplementDate((String) objectMap2.get("implementDateNewCer"));
|
||||
lawsDocumentSplit.setNewRegisterImplementDate((String) objectMap2.get("implementDateNewRegister"));
|
||||
lawsDocumentSplit.setLawsRequireType((String) objectMap2.get("lawsRequireType"));
|
||||
lawsDocumentSplit.setApplications((String) objectMap2.get("modelsType"));
|
||||
lawsDocumentSplit.setDynamicType((String) objectMap2.get("powerType"));
|
||||
|
||||
lawsDocumentSplit.setId(UUIDUtils.randomUUID20());
|
||||
|
||||
if (StringUtils.isNotBlank(lawsDocumentSplit.getLawsRequireType())) {
|
||||
lawsDocumentSplit.setLawsRequireType(getItemValues(lawsDocumentSplit.getLawsRequireType().replace(",", ";"),
|
||||
"1702212236079886338", sysDictItemList)); // 法规要求类型
|
||||
}
|
||||
if (StringUtils.isNotBlank(lawsDocumentSplit.getFunctionClassification())) {
|
||||
lawsDocumentSplit.setFunctionClassification(getItemValues(lawsDocumentSplit.getFunctionClassification().replace(",", ";"),
|
||||
"1702212237296234497", sysDictItemList)); // 功能分类
|
||||
}
|
||||
if (StringUtils.isNotBlank(lawsDocumentSplit.getFunctionProfessional())) {
|
||||
lawsDocumentSplit.setFunctionProfessional(getItemValues(lawsDocumentSplit.getFunctionProfessional().replace(",", ";"),
|
||||
"1702202280677044226", sysDictItemList)); // 功能专业
|
||||
}
|
||||
if (StringUtils.isNotBlank(lawsDocumentSplit.getApplications())) {
|
||||
lawsDocumentSplit.setApplications(getItemValues(lawsDocumentSplit.getApplications().replace(",", ";"),
|
||||
"1702518672924110850", sysDictItemList)); // 适用车型
|
||||
}
|
||||
if (StringUtils.isNotBlank(lawsDocumentSplit.getDynamicType())) {
|
||||
lawsDocumentSplit.setDynamicType(getItemValues(lawsDocumentSplit.getDynamicType().replace(",", ";"),
|
||||
"1702518671166697474", sysDictItemList)); // 动力类型
|
||||
}
|
||||
|
||||
insertDocumentList.add(lawsDocumentSplit);
|
||||
lawsDocumentSplitMapper.insert(lawsDocumentSplit);
|
||||
n[0]++;
|
||||
}
|
||||
;
|
||||
infoMap.put(sarFileSplitInfoEO.getId(), insertDocumentList);
|
||||
}
|
||||
;
|
||||
long time2 = System.currentTimeMillis();
|
||||
log.info("=====================同步DocumentSplit条文数据:{}条,耗时:{}毫秒=====================", n[0], time2 - time1);
|
||||
String regex = "[^a-zA-Z0-9.]";
|
||||
insertSplitList.forEach(sarFileSplitInfoEO -> {
|
||||
String infoId = sarFileSplitInfoEO.getId();
|
||||
List<LawsDocumentSplit> lawsDocumentSplitList = infoMap.get(infoId);
|
||||
List<String> itemNumList = new ArrayList<>();
|
||||
for (LawsDocumentSplit lawsDocumentSplit : lawsDocumentSplitList) {
|
||||
String itemNum = lawsDocumentSplit.getItemNum();
|
||||
itemNumList.add(itemNum.replaceAll(regex, ""));
|
||||
}
|
||||
// 对目录排序
|
||||
Collections.sort(itemNumList, new AlphanumericComparator());
|
||||
Map<String, Long> sortMap = new HashMap<>();
|
||||
for (int i = 0; i < itemNumList.size(); i++) {
|
||||
sortMap.put(itemNumList.get(i), i + 2L);
|
||||
}
|
||||
List<SarFileSplitMenuEO> sarFileSplitMenuEOList = new java.util.ArrayList<>();
|
||||
// 根目录
|
||||
SarFileSplitMenuEO rootEO = new SarFileSplitMenuEO();
|
||||
String rootId = UUIDUtils.randomUUID20();
|
||||
rootEO.setId(rootId);
|
||||
rootEO.setInfoId(infoId);
|
||||
rootEO.setName("总目录");
|
||||
rootEO.setDisplaySeq(1L);
|
||||
rootEO.setValidFlag(0);
|
||||
sarFileSplitMenuEOMapper.insertSelective(rootEO);
|
||||
|
||||
Map<String, String> idMap = new HashMap<>();
|
||||
lawsDocumentSplitList.forEach(lawsDocumentSplit -> {
|
||||
SarFileSplitMenuEO sarFileSplitMenuEO = new SarFileSplitMenuEO();
|
||||
String itemNum = lawsDocumentSplit.getItemNum();
|
||||
String id = UUIDUtils.randomUUID20();
|
||||
sarFileSplitMenuEO.setId(id);
|
||||
sarFileSplitMenuEO.setInfoId(infoId);
|
||||
sarFileSplitMenuEO.setName(itemNum);
|
||||
sarFileSplitMenuEO.setDisplaySeq(sortMap.get(itemNum.replaceAll(regex, "")));
|
||||
sarFileSplitMenuEO.setValidFlag(0);
|
||||
String itemTitle = lawsDocumentSplit.getItemTitle();
|
||||
sarFileSplitMenuEO.setItemName(itemTitle.substring(0, Math.min(10, itemTitle.length())));
|
||||
sarFileSplitMenuEOList.add(sarFileSplitMenuEO);
|
||||
idMap.put(itemNum.replaceAll(regex, ""), id);
|
||||
|
||||
lawsDocumentSplit.setMenuId(id);
|
||||
lawsDocumentSplitMapper.updateById(lawsDocumentSplit);
|
||||
});
|
||||
|
||||
// 设置父id
|
||||
sarFileSplitMenuEOList.forEach(sarFileSplitMenuEO -> {
|
||||
String itemNum = sarFileSplitMenuEO.getName().replaceAll(regex, "");
|
||||
String[] split = itemNum.split("\\.");
|
||||
if (split.length == 1) {
|
||||
sarFileSplitMenuEO.setPId(rootId);
|
||||
@@ -525,7 +836,7 @@ public class SynchronizationAsmsService {
|
||||
sarFileSplitItemsValEO.setType("TEXT");
|
||||
sarFileSplitItemsValEO.setItemId(lawsDocumentSplit.getId());
|
||||
sarFileSplitItemsValEO.setItemContent(textContents.get(i));
|
||||
sarFileSplitItemsValEO.setDisplaySeq(i+1);
|
||||
sarFileSplitItemsValEO.setDisplaySeq(i + 1);
|
||||
sarFileSplitItemsValEO.setValidFlag(0);
|
||||
sarFileSplitItemsValEOService.insertSelective(sarFileSplitItemsValEO);
|
||||
}
|
||||
@@ -643,5 +954,4 @@ public class SynchronizationAsmsService {
|
||||
return StringUtils.join(itemValues, ",");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
+5
@@ -36,6 +36,11 @@ public class AsmsPostUtil {
|
||||
private String host;
|
||||
@Value("${asms.username}")
|
||||
private String username;
|
||||
|
||||
public String getHost() {
|
||||
return host;
|
||||
}
|
||||
|
||||
@Value("${asms.password}")
|
||||
private String password;
|
||||
@Value("${asms.expire}")
|
||||
|
||||
+7
-5
@@ -3,7 +3,9 @@
|
||||
<mapper namespace="com.jero.modules.laws.home.mapper.LawsHomeSearchMapper">
|
||||
|
||||
<select id="getPage" resultType="com.jero.modules.laws.home.vo.LawsHomeNormalSearchVO">
|
||||
select * from (
|
||||
select
|
||||
${ew.sqlSelect}
|
||||
from (
|
||||
select id,'1' as resource_type,CONCAT_WS(' ',standard_number,standard_name) AS standard_name,create_time,
|
||||
case when standard_class = 'GB' then 1
|
||||
when standard_class = 'GB/T' then 2
|
||||
@@ -15,7 +17,7 @@
|
||||
case when standard_state = 5 then 2
|
||||
when standard_state = 6 then 1
|
||||
when standard_state = 7 then 3
|
||||
else null
|
||||
else 4
|
||||
end as standard_state_order,
|
||||
standard_class,dynamic_type,applicable_vehicle,standard_property,standard_state,null as standard_code,null as grade_classification,
|
||||
implementation_date
|
||||
@@ -25,7 +27,7 @@
|
||||
case when standard_state = 5 then 2
|
||||
when standard_state = 6 then 1
|
||||
when standard_state = 7 then 3
|
||||
else null
|
||||
else 4
|
||||
end as standard_state_order,
|
||||
standard_class,null,applicable_vehicle,null,standard_state,null,null,implementation_date
|
||||
from laws_overseas_standard where del_flag = 0
|
||||
@@ -34,13 +36,13 @@
|
||||
case when standard_state = 5 then 2
|
||||
when standard_state = 6 then 1
|
||||
when standard_state = 7 then 3
|
||||
else null
|
||||
else 4
|
||||
end as standard_state_order,
|
||||
null,null,null,null,standard_state,standard_code,grade_classification,implementation_date
|
||||
from laws_enterprise_standard where del_flag = 0
|
||||
union all
|
||||
select l1.id,'4' as resource_type,dynamic_heading as standard_name,create_time,9 as standard_type_order,
|
||||
null AS standard_state_order,
|
||||
4 AS standard_state_order,
|
||||
null,null,null,null,null,null,null,null
|
||||
from laws_news_feed l1
|
||||
left join laws_push_range l2 on l1.id = l2.unique_relation_flag
|
||||
|
||||
+110
-69
@@ -128,6 +128,8 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
|
||||
public static final String MATCH = "match";
|
||||
|
||||
public static final String KEYWORD = ".keyword";
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -155,34 +157,38 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
|
||||
@NotNull
|
||||
private QueryWrapper<LawsHomeNormalSearchDTO> getQueryWrapperNormal(LawsHomeNormalSearchDTO lawsHomeNormalSearchDTO) {
|
||||
QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = new QueryWrapper<>();
|
||||
String[] searchContent = lawsHomeNormalSearchDTO.getSearchContent().split(BLANK_SPACE);
|
||||
queryWrapper.and(s->{
|
||||
for (int i = 0; i < searchContent.length; i++) {
|
||||
s.gt("instr(standard_name,'" + searchContent[i] + "')", 0);
|
||||
if(i != searchContent.length - 1){
|
||||
s.or();
|
||||
}
|
||||
StringBuilder regexp = new StringBuilder();
|
||||
StringBuilder select = new StringBuilder();
|
||||
select.append("( ");
|
||||
for (int i = 0; i < searchContent.length; i++) {
|
||||
regexp.append(searchContent[i]);
|
||||
select.append(" if(standard_name like '%").append(searchContent[i]).append("%',1,0) ");
|
||||
if(i != searchContent.length - 1){
|
||||
regexp.append("|");
|
||||
select.append("+");
|
||||
}
|
||||
});
|
||||
}
|
||||
select.append(") as sort_index");
|
||||
QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.select("id,standard_name,id,resource_type,standard_name," +
|
||||
"create_time,standard_type_order,standard_state_order,standard_class," +
|
||||
"dynamic_type,applicable_vehicle,standard_property," +
|
||||
"standard_state,standard_code,grade_classification,implementation_date, " + select);
|
||||
|
||||
queryWrapper.and(s->s.apply("standard_name REGEXP '" + regexp.toString() + "'"));
|
||||
queryWrapper.eq(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getResourceType()),RESOURCE_TYPE,lawsHomeNormalSearchDTO.getResourceType());
|
||||
String str = "',','))";
|
||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardClass()),"instr(concat(',',standard_class,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardClass() + str,0);
|
||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getDynamicType()),"instr(concat(',',dynamic_type,','),concat(',','" + lawsHomeNormalSearchDTO.getDynamicType() + str,0);
|
||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getApplicableVehicle()),"instr(concat(',',applicable_vehicle,','),concat(',','" + lawsHomeNormalSearchDTO.getApplicableVehicle() + str,0);
|
||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardProperty()),"instr(concat(',',standard_property,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardProperty() + str,0);
|
||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardState()),"instr(concat(',',standard_state,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardState() + str,0);
|
||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardState()),"instr(concat(',',standard_state,','), concat(',','" + lawsHomeNormalSearchDTO.getStandardState() + str,0);
|
||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardCode()),"instr(concat(',',standard_code,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardCode() + str,0);
|
||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getEnterpriseStandardState()),"instr(concat(',',standard_state,','), concat(',','" + lawsHomeNormalSearchDTO.getEnterpriseStandardState() + str,0);
|
||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getGradeClassification()),"instr(concat(',',grade_classification,','),concat(',','" + lawsHomeNormalSearchDTO.getGradeClassification() + str,0);
|
||||
StringBuilder order = new StringBuilder();
|
||||
for (int i = 0; i < searchContent.length; i++) {
|
||||
order.append("(length(standard_name) - length(REPLACE(standard_name,'").append(searchContent[i]).append("','')))");
|
||||
if(i != searchContent.length - 1){
|
||||
order.append(" + ");
|
||||
}
|
||||
}
|
||||
|
||||
queryWrapper.orderByDesc(order.toString());
|
||||
queryWrapper.orderByDesc("sort_index");
|
||||
queryWrapper.orderByAsc("standard_type_order");
|
||||
queryWrapper.orderByAsc("standard_state_order");
|
||||
queryWrapper.orderByDesc(IMPLEMENTATION_DATE);
|
||||
@@ -463,14 +469,16 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
}
|
||||
QueryWrapper<LawsHomeNormalSearchDTO> queryWrapper = new QueryWrapper<>();
|
||||
String[] text = searchContent.split(BLANK_SPACE);
|
||||
queryWrapper.and(s->{
|
||||
for (int i = 0; i < text.length; i++) {
|
||||
s.gt("instr(concat_ws(' ',standard_number,standard_name),'" + text[i] + "')", 0);
|
||||
if(i != text.length - 1){
|
||||
s.or();
|
||||
}
|
||||
|
||||
StringBuilder regexp = new StringBuilder();
|
||||
for (int i = 0; i < text.length; i++) {
|
||||
regexp.append(text[i]);
|
||||
if(i != text.length - 1){
|
||||
regexp.append("|");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
queryWrapper.and(s->s.apply("standard_name REGEXP '" + regexp + "'"));
|
||||
queryWrapper.eq("del_flag",0);
|
||||
String str = "',','))";
|
||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardClass()),"instr(concat(',',standard_class,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardClass() + str,0);
|
||||
@@ -479,19 +487,23 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardProperty()),"instr(concat(',',standard_property,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardProperty() + str,0);
|
||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardState()),"instr(concat(',',standard_state,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardState() + str,0);
|
||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getStandardCode()),"instr(concat(',',standard_code,','),concat(',','" + lawsHomeNormalSearchDTO.getStandardCode() + str,0);
|
||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getEnterpriseStandardState()),"instr(concat(',',standard_state,','),concat(',','" + lawsHomeNormalSearchDTO.getEnterpriseStandardState() + str,0);
|
||||
queryWrapper.gt(!StringUtils.isEmpty(lawsHomeNormalSearchDTO.getGradeClassification()),"instr(concat(',',grade_classification,','),concat(',','" + lawsHomeNormalSearchDTO.getGradeClassification() + str,0);
|
||||
|
||||
switch (lawsHomeNormalSearchDTO.getResourceType()){
|
||||
case LawsHomeSearchCommon.LAWS_DOMESTIC_STANDARD:
|
||||
List<LawsHomeNormalSearchCountVO> list1 = lawsHomeSearchMapper.getCount1(queryWrapper);
|
||||
setDict(list1);
|
||||
count1(list1,obj);
|
||||
break;
|
||||
case LawsHomeSearchCommon.LAWS_OVERSEAS_STANDARD:
|
||||
List<LawsHomeNormalSearchCountVO> list2 = lawsHomeSearchMapper.getCount2(queryWrapper);
|
||||
setDict(list2);
|
||||
count2(list2,obj);
|
||||
break;
|
||||
case LawsHomeSearchCommon.LAWS_ENTERPRISE_STANDARD:
|
||||
List<LawsHomeNormalSearchCountVO> list3 = lawsHomeSearchMapper.getCount3(queryWrapper);
|
||||
setDict(list3);
|
||||
count3(list3,obj);
|
||||
break;
|
||||
default:break;
|
||||
@@ -499,6 +511,12 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
return obj;
|
||||
}
|
||||
|
||||
private void setDict(List<LawsHomeNormalSearchCountVO> list1) {
|
||||
for (LawsHomeNormalSearchCountVO lawsHomeNormalSearchCountVO : list1) {
|
||||
lawsHomeNormalSearchCountVO.setDict("," + lawsHomeNormalSearchCountVO.getDict() + ",");
|
||||
}
|
||||
}
|
||||
|
||||
private void count3(List<LawsHomeNormalSearchCountVO> list,LawsHomeNormalSearchStatisticsVO obj) {
|
||||
// 企业标准代号
|
||||
List<LawsHomeNormalSearchStatisticsObjVO> list1 = addLawsHomeNormalSearchStatistics(list, "enterprise_standard_code", STANDARD_CODE);
|
||||
@@ -571,10 +589,11 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
objVO.setItemText(dict.getText());
|
||||
objVO.setItemValue(dict.getValue());
|
||||
if(!CollectionUtils.isEmpty(list)){
|
||||
List<LawsHomeNormalSearchCountVO> opList = list.stream().filter(o -> !StringUtils.isBlank(o.getDict()) && Arrays.asList(o.getDict().split(",")).contains(dict.getValue()) && Objects.equals(o.getFieldName(),data)).collect(Collectors.toList());
|
||||
List<LawsHomeNormalSearchCountVO> opList = list.stream().filter(o -> !StringUtils.isBlank(o.getDict()) && o.getDict().contains("," + dict.getValue() + ",") && Objects.equals(o.getFieldName(),data)).collect(Collectors.toList());
|
||||
if(!CollectionUtils.isEmpty(opList)){
|
||||
Integer str = opList.stream().map(o->Integer.parseInt(o.getCount())).reduce((x,y) ->x+y).get();
|
||||
objVO.setStatisticsCount(String.valueOf(str));
|
||||
Optional<Integer> str = opList.stream().map(o->Integer.parseInt(StringUtils.isBlank(o.getCount()) ? "0" : o.getCount())).reduce((x,y) ->x+y);
|
||||
str.ifPresent(integer -> objVO.setStatisticsCount(String.valueOf(integer)));
|
||||
|
||||
}else{
|
||||
objVO.setStatisticsCount("0");
|
||||
}
|
||||
@@ -641,14 +660,14 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
if(!StringUtils.isBlank(homeNormalSearchDTO.getResourceType())){
|
||||
Map<String, Object> map1 = new HashMap<>();
|
||||
Map<String, Object> map2 = new HashMap<>();
|
||||
map2.put(RESOURCE_TYPE,homeNormalSearchDTO.getResourceType());
|
||||
map1.put("match_phrase",map2);
|
||||
map2.put(RESOURCE_TYPE + KEYWORD,homeNormalSearchDTO.getResourceType());
|
||||
map1.put("term",map2);
|
||||
queryMapJsonDict.add(map1);
|
||||
}
|
||||
mapDict.forEach((k,v)->{
|
||||
Map<String, Object> map1 = new HashMap<>();
|
||||
Map<String, Object> map2 = new HashMap<>();
|
||||
map2.put(k,"," + v + ",");
|
||||
map2.put(k ,"," + v + ",");
|
||||
map1.put("match_phrase",map2);
|
||||
queryMapJsonDict.add(map1);
|
||||
});
|
||||
@@ -659,7 +678,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
// 封装首次的条件
|
||||
if (StringUtils.isNotBlank(searchContent)) {
|
||||
searchContent = searchContent.toLowerCase();
|
||||
getQueryMapJson(queryMapJson, searchContent, CONTENT);
|
||||
addSearchContent(searchContent, queryMapJson);
|
||||
//高亮
|
||||
highlight(mapHighlight, CONTENT);
|
||||
mapHighlight1.put("fields",mapHighlight);
|
||||
@@ -710,12 +729,22 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
mDesc5.put(order,"desc");
|
||||
m5.put("create_time_c",mDesc5);
|
||||
sort.add(m5);
|
||||
|
||||
// 查询字段
|
||||
List<String> arr = Arrays.asList(CONTENT,"title",RESOURCE_TYPE,"id","release_date");
|
||||
IPage page = getIPage(queryMapJsonAll, mapHighlight1,
|
||||
pageNo, pageSize, sort);
|
||||
pageNo, pageSize, sort,arr);
|
||||
getRecords(page);
|
||||
return page;
|
||||
}
|
||||
|
||||
private void addSearchContent(String searchContent, JSONArray queryMapJson) {
|
||||
String[] searchContentArr = searchContent.split(BLANK_SPACE);
|
||||
for (String s : searchContentArr) {
|
||||
getQueryMapJson(queryMapJson, s, CONTENT);
|
||||
}
|
||||
}
|
||||
|
||||
private void getRecords(IPage page) {
|
||||
if(!CollectionUtils.isEmpty(page.getRecords())){
|
||||
// 下划线转驼峰
|
||||
@@ -750,12 +779,12 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
|
||||
@NotNull
|
||||
private IPage getIPage(JSONArray queryMapJson,Map<String,Object> highlightMap, Integer pageNo, Integer pageSize,
|
||||
JSONArray jsonArraySort) {
|
||||
JSONArray jsonArraySort,List<String> source) {
|
||||
JSONObject jsonObject;
|
||||
//基础添加封装
|
||||
jsonObject = jeroElasticsearchTemplate.buildBoolQuery(queryMapJson, null, null);
|
||||
//1. 条件,分页
|
||||
JSONObject queryObject = jeroElasticsearchTemplate.buildQuery(null, jsonObject, highlightMap, jsonArraySort, pageNo - 1, pageSize);
|
||||
JSONObject queryObject = jeroElasticsearchTemplate.buildQuery(source, jsonObject, highlightMap, jsonArraySort, pageNo - 1, pageSize);
|
||||
//2. 数据查询
|
||||
JSONObject search = jeroElasticsearchTemplate.search(HomeSearchEnum.INDEX_NAME_DOCUMENT_ZQ.getValue(), HomeSearchEnum.TYPE_NAME_DOCUMENT_ZQ.getValue(), queryObject);
|
||||
|
||||
@@ -813,42 +842,54 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
// map31.put(boost,0.01);
|
||||
// }
|
||||
// map31.put("value", selectValue);
|
||||
// map21.put(field + ".keyword", map31);
|
||||
// map21.put(field + KEYWORD, map31);
|
||||
// map41.put("prefix", map21);
|
||||
// queryMapJson.add(map41);
|
||||
|
||||
// match_phrase_prefix 词组匹配查询,允许最后词组与文中的任意分词前缀匹配
|
||||
Map<String, Object> map22 = new HashMap<>();
|
||||
Map<String, Object> map32 = new HashMap<>();
|
||||
Map<String, Object> map42 = new HashMap<>();
|
||||
if(CONTENT.equals(field)){
|
||||
map32.put(boost,0.01);
|
||||
}
|
||||
map32.put(QUERY, selectValue);
|
||||
map22.put(field, map32);
|
||||
map42.put("match_phrase_prefix", map22);
|
||||
queryMapJson.add(map42);
|
||||
// Map<String, Object> map22 = new HashMap<>();
|
||||
// Map<String, Object> map32 = new HashMap<>();
|
||||
// Map<String, Object> map42 = new HashMap<>();
|
||||
// if(CONTENT.equals(field)){
|
||||
// map32.put(boost,0.01);
|
||||
// }
|
||||
// map32.put(QUERY, selectValue);
|
||||
// map22.put(field, map32);
|
||||
// map42.put("match_phrase_prefix", map22);
|
||||
// queryMapJson.add(map42);
|
||||
|
||||
// match分词匹配查询
|
||||
// 情况举例:用户可能他知道开头的前缀几个字,知道中间的几个字
|
||||
Map<String, Object> map23 = new HashMap<>();
|
||||
Map<String, Object> map33 = new HashMap<>();
|
||||
Map<String, Object> map43 = new HashMap<>();
|
||||
if(CONTENT.equals(field)){
|
||||
map33.put(boost,0.01);
|
||||
}
|
||||
map33.put(QUERY, selectValue);
|
||||
map23.put(field, map33);
|
||||
map43.put(MATCH, map23);
|
||||
queryMapJson.add(map43);
|
||||
// Map<String, Object> map23 = new HashMap<>();
|
||||
// Map<String, Object> map33 = new HashMap<>();
|
||||
// Map<String, Object> map43 = new HashMap<>();
|
||||
// if(CONTENT.equals(field)){
|
||||
// map33.put(boost,0.01);
|
||||
// }
|
||||
// map33.put(QUERY, selectValue);
|
||||
// map23.put(field, map33);
|
||||
// map43.put(MATCH, map23);
|
||||
// queryMapJson.add(map43);
|
||||
|
||||
// wildcard模糊查询
|
||||
//情况举例:用户只记得中间那段字
|
||||
Map<String, Object> map24 = new HashMap<>();
|
||||
Map<String, Object> map44 = new HashMap<>();
|
||||
map24.put(field, "*" + selectValue + "*");
|
||||
map44.put("wildcard",map24);
|
||||
queryMapJson.add(map44);
|
||||
// Map<String, Object> map24 = new HashMap<>();
|
||||
// Map<String, Object> map44 = new HashMap<>();
|
||||
// map24.put(field, "*" + selectValue + "*");
|
||||
// map44.put("wildcard",map24);
|
||||
// queryMapJson.add(map44);
|
||||
|
||||
// match_phrase 短语查询 文本视为一个短语,不进行文本拆分,只要结果中包含这个短语的文档,都能被筛选出来。
|
||||
Map<String, Object> map25 = new HashMap<>();
|
||||
Map<String, Object> map35 = new HashMap<>();
|
||||
Map<String, Object> map45 = new HashMap<>();
|
||||
if(CONTENT.equals(field)){
|
||||
map35.put(boost,0.01);
|
||||
}
|
||||
map35.put(QUERY, selectValue);
|
||||
map25.put(field, map35);
|
||||
map45.put("match_phrase", map25);
|
||||
queryMapJson.add(map45);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -883,7 +924,8 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
for (String s : listField) {
|
||||
Map<String, Object> map1 = new HashMap<>();
|
||||
Map<String, Object> map2 = new HashMap<>();
|
||||
map1.put("field",s + ".keyword");
|
||||
map1.put("field",s + KEYWORD);
|
||||
map1.put("size", 100);
|
||||
map2.put("terms",map1);
|
||||
map.put(s + "_aggs",map2);
|
||||
}
|
||||
@@ -894,14 +936,14 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
JSONArray queryMapJson = new JSONArray();
|
||||
// 封装首次的条件
|
||||
if (StringUtils.isNotBlank(searchContent)) {
|
||||
getQueryMapJson(queryMapJson, searchContent, CONTENT);
|
||||
addSearchContent(searchContent, queryMapJson);
|
||||
}
|
||||
if(!StringUtils.isBlank(homeNormalSearchDTO.getResourceType())){
|
||||
JSONArray queryResourceType = new JSONArray();
|
||||
Map<String, Object> map1 = new HashMap<>();
|
||||
Map<String, Object> map2 = new HashMap<>();
|
||||
map1.put(RESOURCE_TYPE,homeNormalSearchDTO.getResourceType());
|
||||
map2.put("match_phrase",map1);
|
||||
map1.put(RESOURCE_TYPE + KEYWORD,homeNormalSearchDTO.getResourceType());
|
||||
map2.put("term",map1);
|
||||
queryResourceType.add(map2);
|
||||
JSONObject object = jeroElasticsearchTemplate.buildBoolQuery(queryResourceType,null,null);
|
||||
queryAll.add(object);
|
||||
@@ -914,7 +956,7 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
JSONObject object = getJsonObject(loginUser);
|
||||
queryAll.add(object);
|
||||
JSONObject objectAll = jeroElasticsearchTemplate.buildBoolQuery(queryAll,null,null);
|
||||
jsonObject.put("query",objectAll);
|
||||
jsonObject.put(QUERY,objectAll);
|
||||
|
||||
//2. 数据查询
|
||||
JSONObject search = jeroElasticsearchTemplate.search(HomeSearchEnum.INDEX_NAME_DOCUMENT_ZQ.getValue(), HomeSearchEnum.TYPE_NAME_DOCUMENT_ZQ.getValue(), jsonObject);
|
||||
@@ -957,18 +999,18 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
status1Val.put(RELEASE_STATUS, "1");
|
||||
status1.put(MATCH, status1Val);
|
||||
queryMapMust1.add(status1);
|
||||
|
||||
String pushRangeFlag = "push_range_flag";
|
||||
JSONArray queryMapShould = new JSONArray();
|
||||
Map<String, Object> status2 = new HashMap<>();
|
||||
Map<String, Object> status2Val = new HashMap<>();
|
||||
status2Val.put("push_range_flag", 2);
|
||||
status2Val.put(pushRangeFlag, 2);
|
||||
status2.put(MATCH, status2Val);
|
||||
queryMapShould.add(status2);
|
||||
|
||||
JSONArray queryMapMust = new JSONArray();
|
||||
Map<String, Object> status4 = new HashMap<>();
|
||||
Map<String, Object> status4Val = new HashMap<>();
|
||||
status4Val.put("push_range_flag",1);
|
||||
status4Val.put(pushRangeFlag,1);
|
||||
status4.put(MATCH, status4Val);
|
||||
queryMapMust.add(status4);
|
||||
|
||||
@@ -1368,7 +1410,6 @@ public class LawsHomeSearchServiceImpl implements ILawsHomeSearchService {
|
||||
|
||||
public void updateElasticsearch(LawsHomeNormalSearchVO obj,List<OSSFile> listFile){
|
||||
String idTemp = obj.getId();
|
||||
System.out.println("--------------" + obj);
|
||||
StringBuilder fileTextAll = getStringBuilder(listFile);
|
||||
addES(obj, idTemp, fileTextAll);
|
||||
}
|
||||
|
||||
@@ -455,7 +455,7 @@ adminRoleCode: admin,BZGLY
|
||||
|
||||
# 文件下载加解密
|
||||
download:
|
||||
enable: true
|
||||
enable: false
|
||||
# 文件下载、预览拦截路径,多个以逗号分隔
|
||||
download_url: /sys/common/download/
|
||||
view_url: /sys/common/view/
|
||||
|
||||
Reference in New Issue
Block a user