diff --git a/laws-module-system/src/main/java/com/jero/modules/quartz/service/impl/QuartzJobServiceImpl.java b/laws-module-system/src/main/java/com/jero/modules/quartz/service/impl/QuartzJobServiceImpl.java index 6f06a66e..ac9ab098 100644 --- a/laws-module-system/src/main/java/com/jero/modules/quartz/service/impl/QuartzJobServiceImpl.java +++ b/laws-module-system/src/main/java/com/jero/modules/quartz/service/impl/QuartzJobServiceImpl.java @@ -43,7 +43,6 @@ public class QuartzJobServiceImpl extends ServiceImpl { @Autowired private ILawsAsmsDomesticService lawsAsmsDomesticService; - + @Resource + private SynchronizationAsmsService synchronizationAsmsService; /** * 分页列表查询 * @@ -162,4 +165,15 @@ public class LawsAsmsDomesticController extends JeroController syncSplitByStandardNumber(@RequestParam(name="standardNumber") String standardNumber) { + synchronizationAsmsService.syncSplitByStandardNumber(standardNumber); + return Result.OK("!"); + } } diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/ILawsAsmsOpenApiService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/ILawsAsmsOpenApiService.java index d40898c8..96c330bf 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/ILawsAsmsOpenApiService.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/ILawsAsmsOpenApiService.java @@ -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 { **/ void syncBatch(List idList); - /** + @NotNull + String disposeImg(String articleContent); + + /** * @Author: liao * @Date: 2023/10/18 16:20 * @Description: 批量删除原字典配置项 diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/LawsAsmsOpenApiServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/LawsAsmsOpenApiServiceImpl.java index 9fdb8f79..60cd0880 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/LawsAsmsOpenApiServiceImpl.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/LawsAsmsOpenApiServiceImpl.java @@ -1,9 +1,11 @@ package com.jero.modules.docking.asms.service.impl; +import cn.hutool.http.HtmlUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -44,13 +46,18 @@ import com.jero.modules.system.service.ISysDictService; 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.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.multipart.MultipartFile; import javax.annotation.Resource; import javax.servlet.http.HttpServletRequest; @@ -105,6 +112,8 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl> mapList = new ArrayList<>(); try{ mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), paramMap); - } - catch (JeroBootException e){ + } catch (JeroBootException e){ log.error(e.getMessage()); } // List> mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), paramMap); @@ -633,7 +641,35 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl" + articleContent + "

"; + } + // 重复性校验 + LawsDocumentSplit lawsDocumentSplits = lawsDocumentSplitMapper.selectOne( + new LambdaQueryWrapper() + .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() + .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"))); @@ -683,12 +719,17 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(SarFileSplitInfoEO::getIsAsmsImport, "1"); List sarFileSplitInfoEOList = sarFileSplitInfoService.list(queryWrapper); + String regex = "[^a-zA-Z0-9.]"; sarFileSplitInfoEOList.forEach(sarFileSplitInfoEO -> { String infoId = sarFileSplitInfoEO.getId(); LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); queryWrapper1.eq(LawsDocumentSplit::getInfoId, infoId); List lawsDocumentSplitList = lawsDocumentSplitMapper.selectList(queryWrapper1); - List itemNumList = lawsDocumentSplitList.stream().map(LawsDocumentSplit::getItemNum).collect(Collectors.toList()); + List itemNumList = new ArrayList<>(); + for (LawsDocumentSplit lawsDocumentSplit : lawsDocumentSplitList) { + String itemNum = lawsDocumentSplit.getItemNum(); + itemNumList.add(itemNum.replaceAll(regex, "")); + } // 对目录排序 Collections.sort(itemNumList, new AlphanumericComparator()); Map sortMap = new HashMap<>(); @@ -714,12 +755,12 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl { - String itemNum = sarFileSplitMenuEO.getName(); + String itemNum = sarFileSplitMenuEO.getName().replaceAll(regex, ""); String[] split = itemNum.split("\\."); if (split.length == 1) { sarFileSplitMenuEO.setPId(rootId); @@ -799,6 +840,56 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl").append(articleContent).append("

"); + articleContent = stringBuilder.toString(); + }else { + // 定义正则表达式匹配 img 标签及其属性值 + String regex = "(<\\s*img[^>]*>)"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(articleContent); + String regex2 = "src\\s*=\\s*\"?(.*?)(\"|>|\\s+)"; + while (matcher.find()) { + String imageUrl = matcher.group(1); + Matcher m = Pattern.compile(regex2).matcher(imageUrl); + String urlSuffix = ""; + while (m.find()) { + String group = m.group(1); + urlSuffix = group.substring(group.indexOf("getImg")); + } + String url = asmsPostUtil.getHost() + urlSuffix; + String fileName = url.substring(url.lastIndexOf("/") + 1); + // 获取图片 + HttpHeaders headers = new HttpHeaders(); + headers.set(HttpHeaders.USER_AGENT, "Mozilla/5.0"); + headers.set(HttpHeaders.ACCEPT, MediaType.ALL_VALUE); + HttpEntity entity = new HttpEntity<>(headers); + ResponseEntity responseEntity = restTemplate.exchange(url, HttpMethod.GET, entity, byte[].class); + if (HttpStatus.OK == responseEntity.getStatusCode()) { + byte[] imageBytes = responseEntity.getBody(); + MultipartFile file = new MockMultipartFile(fileName, fileName,"application/octet-stream" ,imageBytes); + // 上传图片 + OSSFile oSSFile = ossFileService.uploadLocalForSplit(file, "", "", ""); + StringBuilder stringBuilder = new StringBuilder(); + stringBuilder.append(""); + // 在此处进行替换操作,将图片链接替换为新的地址或者删除该图片标签等 + articleContent = articleContent.replaceAll(imageUrl,stringBuilder.toString()); + } + } + + } + } + return articleContent; + } + @Transactional public void upload(String url, String fileName, String fileType, String id, String code) { InputStream inputStream = asmsPostUtil.getFileByteArray(url); @@ -918,4 +1009,23 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl\"\"222"; + //String str = "\"\"\n"; + // 定义正则表达式匹配 img 标签及其属性值 + Pattern pattern = Pattern.compile("(<\\s*img[^>]*>)"); + Matcher matcher = pattern.matcher(str); + String regex2 = "src\\s*=\\s*\"?(.*?)(\"|>|\\s+)"; + while (matcher.find()) { + String imageUrl = matcher.group(1); + Matcher m = Pattern.compile(regex2).matcher(imageUrl); + String urlSuffix = ""; + while (m.find()) { + String group = m.group(1); + urlSuffix = group.substring(group.indexOf("getImg")); + } + System.out.println(urlSuffix); + } + } } diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/SynchronizationAsmsService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/SynchronizationAsmsService.java index 85c31611..4d75c1d8 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/SynchronizationAsmsService.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/SynchronizationAsmsService.java @@ -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("" + articleContent + "

"; + } + // 重复性校验 + LawsDocumentSplit lawsDocumentSplits = lawsDocumentSplitMapper.selectOne( + new LambdaQueryWrapper() + .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() + .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 lawsDocumentSplitList = infoMap.get(infoId); - List itemNumList = lawsDocumentSplitList.stream().map(LawsDocumentSplit::getItemNum).collect(Collectors.toList()); - + List itemNumList = new ArrayList<>(); + for (LawsDocumentSplit lawsDocumentSplit : lawsDocumentSplitList) { + String itemNum = lawsDocumentSplit.getItemNum(); + itemNumList.add(itemNum.replaceAll(regex, "")); + } // 对目录排序 Collections.sort(itemNumList, new AlphanumericComparator()); Map 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 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 lawsDocumentSplitList = infoMap.get(infoId); + lawsDocumentSplitList.forEach(lawsDocumentSplit -> { + String itemContent = lawsDocumentSplit.getItemContent(); + // 使用 jsoup 解析 HTML + Document doc = Jsoup.parse(itemContent); + + // 选择所有的

元素 + Elements paragraphs = doc.select("p"); + + // 存储提取的文本内容 + List textContents = new java.util.ArrayList<>(); + + for (Element paragraph : paragraphs) { + // 获取每个

元素的文本内容并添加到集合中 + 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 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 paramMap = new HashMap<>(); + paramMap.put("pageNo", "1"); + paramMap.put("pageSize", "2"); + Map totalMap = asmsPostUtil.sendGetReq2(url, paramMap); + Integer total = (Integer) totalMap.get("total"); + paramMap.put("pageSize", total.toString()); + + List> mapList = asmsPostUtil.sendGetReq(url, paramMap); + if (Objects.isNull(mapList)) { + log.info("=====================没有获取到ASMS系统数据,同步结束====================="); + return; + } + + List insertSplitList = new ArrayList<>(); + mapList.forEach(eMap -> { + String code = eMap.get("code").trim(); + String name = eMap.get("name"); + if (!code.contains(standardNumber)) { + return; + } + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(LawsDomesticStandard::getStandardNumber, code); + LawsDomesticStandard lawsDomesticStandard = lawsDomesticStandardService.getOne(queryWrapper); + if (Objects.isNull(lawsDomesticStandard)) { + return; + } + + LambdaQueryWrapper 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 sysDictItemList = sysDictItemService.list(); + Map paramMap1 = new HashMap<>(); + Map paramMap2 = new HashMap<>(); + Map paramMap3 = new HashMap<>(); + Map> infoMap = new HashMap<>(); + int[] n = {0}; + + for (SarFileSplitInfoEO sarFileSplitInfoEO : insertSplitList) { + paramMap.put("standardCode", sarFileSplitInfoEO.getSerialNumber()); + paramMap1.put("standardCode", sarFileSplitInfoEO.getSerialNumber()); + List> mapListAll = asmsPostUtil.sendGetReq(splitUrl, paramMap1); + List insertDocumentList = new ArrayList<>(); + for (Map eMap : mapListAll) { + // 单个法规的条文解读详情 + paramMap2.put("standardCode", sarFileSplitInfoEO.getSerialNumber()); + + paramMap2.put("termsCode", eMap.get("termsNum")); + Map objectMap = asmsPostUtil.sendGetReq2("xiaobodata/openApi/article/interpretation/details", paramMap2); + + // 单个法规的条文标签详情 + paramMap3.put("standardCode", sarFileSplitInfoEO.getSerialNumber()); + paramMap3.put("termsCode", eMap.get("termsNum")); + Map 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 lawsDocumentSplitList = infoMap.get(infoId); + List itemNumList = new ArrayList<>(); + for (LawsDocumentSplit lawsDocumentSplit : lawsDocumentSplitList) { + String itemNum = lawsDocumentSplit.getItemNum(); + itemNumList.add(itemNum.replaceAll(regex, "")); + } + // 对目录排序 + Collections.sort(itemNumList, new AlphanumericComparator()); + Map sortMap = new HashMap<>(); + for (int i = 0; i < itemNumList.size(); i++) { + sortMap.put(itemNumList.get(i), i + 2L); + } + List 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 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, ","); } - } diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/util/AsmsPostUtil.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/util/AsmsPostUtil.java index c32a777b..33ba9ca7 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/util/AsmsPostUtil.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/util/AsmsPostUtil.java @@ -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}") 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 10b58932..fc0940e6 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 @@ -3,7 +3,9 @@