From a61c259d8afede591b36bb4de17b6a5578a67ff6 Mon Sep 17 00:00:00 2001 From: lijiarao Date: Fri, 1 Mar 2024 20:50:14 +0800 Subject: [PATCH 01/13] =?UTF-8?q?update=20=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=9B=B4=E6=96=B0=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modules/quartz/service/impl/QuartzJobServiceImpl.java | 5 ----- 1 file changed, 5 deletions(-) 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 Date: Fri, 1 Mar 2024 20:52:42 +0800 Subject: [PATCH 02/13] =?UTF-8?q?add=20=E6=A0=B9=E6=8D=AE=E6=A0=87?= =?UTF-8?q?=E5=87=86=E5=8F=B7=E5=90=8C=E6=AD=A5=E6=8B=86=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../LawsAsmsDomesticController.java | 16 +- .../impl/SynchronizationAsmsService.java | 276 +++++++++++++++++- 2 files changed, 283 insertions(+), 9 deletions(-) diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/controller/LawsAsmsDomesticController.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/controller/LawsAsmsDomesticController.java index e8f2c796..b36f106c 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/controller/LawsAsmsDomesticController.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/controller/LawsAsmsDomesticController.java @@ -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 { @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/impl/SynchronizationAsmsService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/asms/service/impl/SynchronizationAsmsService.java index 85c31611..01c85bdb 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 @@ -436,17 +436,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 +470,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 +483,7 @@ 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); @@ -545,6 +548,264 @@ public class SynchronizationAsmsService { 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")); + lawsDocumentSplit.setItemContent(eMap.get("articleContent")); + 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); + } else { + // 去除数组中的最后一个元素 + split = Arrays.copyOf(split, split.length - 1); + String pid = idMap.get(StringUtils.join(split, ".")); + if (StringUtils.isBlank(pid)) { + pid = rootId; + } + sarFileSplitMenuEO.setPId(pid); + } + }); + 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("=====================定时任务同步结束====================="); + } + @Transactional public void upload(String url, String fileName, String fileType, String id, String code) { InputStream inputStream = asmsPostUtil.getFileByteArray(url); @@ -643,5 +904,4 @@ public class SynchronizationAsmsService { return StringUtils.join(itemValues, ","); } - } From e976ab9bb170802f98eccf33dfcb5818b328e6b7 Mon Sep 17 00:00:00 2001 From: yjz <3131811435@qq.com> Date: Fri, 1 Mar 2024 21:59:52 +0800 Subject: [PATCH 03/13] =?UTF-8?q?fix(asms):=20=E5=90=8C=E6=AD=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/LawsAsmsOpenApiServiceImpl.java | 75 +++++++++++++++++-- .../impl/SynchronizationAsmsService.java | 57 +++++++++++++- .../docking/asms/util/AsmsPostUtil.java | 5 ++ 3 files changed, 129 insertions(+), 8 deletions(-) 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..e5a02554 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 @@ -4,6 +4,7 @@ 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; @@ -49,8 +50,12 @@ 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 +110,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 +639,51 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl 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("

").append("").append("

"); + articleContent = stringBuilder.toString(); + } + } + // 处理表格 + 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"))); @@ -683,12 +733,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 +769,13 @@ 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); @@ -918,4 +974,11 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl222"; + String substring = str.substring(str.indexOf("getImg"), str.indexOf("\" alt")); + System.out.println(substring); + System.out.println(substring.substring(substring.lastIndexOf("/") + 1)); + } } 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 01c85bdb..11cf6707 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,6 +2,7 @@ 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; @@ -40,8 +41,12 @@ 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 +97,8 @@ public class SynchronizationAsmsService { private IOSSFileService ossFileService; @Autowired private IDocumentSplitService documentSplitService; + @Autowired + private RestTemplate restTemplate; private final static String filePath = "asms/"; private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); @@ -388,7 +395,51 @@ 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"); + // 处理图片 + if (articleContent.contains(" entity = new HttpEntity<>(headers); + ResponseEntity responseEntity = restTemplate.exchange(imageUrl, 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("

").append("").append("

"); + articleContent = stringBuilder.toString(); + } + } + // 处理表格 + 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"))); @@ -497,7 +548,9 @@ public class SynchronizationAsmsService { sarFileSplitMenuEO.setPId(pid); } }); - sarFileSplitMenuEOMapper.insertForeach(sarFileSplitMenuEOList); + if (!sarFileSplitMenuEOList.isEmpty()) { + sarFileSplitMenuEOMapper.insertForeach(sarFileSplitMenuEOList); + } }); long time3 = System.currentTimeMillis(); log.info("=====================生成拆分详情左侧目录耗时:{}毫秒=====================", time3 - time2); 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}") From f05f22a9ec046e42d175e50fa21dbf57d925ae6e Mon Sep 17 00:00:00 2001 From: fengchenchen Date: Fri, 1 Mar 2024 22:23:14 +0800 Subject: [PATCH 04/13] =?UTF-8?q?=E3=80=90update=E3=80=91=20=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E9=A1=B9=EF=BC=8C=E6=96=87=E4=BB=B6=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E5=8A=A0=E8=A7=A3=E5=AF=86=20=E5=BC=80=E5=8F=91=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E5=85=B3=E9=97=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- laws-single-startup/src/main/resources/application-dev.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/laws-single-startup/src/main/resources/application-dev.yml b/laws-single-startup/src/main/resources/application-dev.yml index ea16f516..5418a58e 100644 --- a/laws-single-startup/src/main/resources/application-dev.yml +++ b/laws-single-startup/src/main/resources/application-dev.yml @@ -452,7 +452,7 @@ adminRoleCode: admin,BZGLY # 文件下载加解密 download: - enable: true + enable: false # 文件下载、预览拦截路径,多个以逗号分隔 download_url: /sys/common/download/ view_url: /sys/common/view/ From 5d578edb01b5776e8d5bae61658acb692b76cfa4 Mon Sep 17 00:00:00 2001 From: yjz <3131811435@qq.com> Date: Fri, 1 Mar 2024 22:36:31 +0800 Subject: [PATCH 05/13] =?UTF-8?q?fix(asms):=20=E5=90=8C=E6=AD=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/LawsAsmsOpenApiServiceImpl.java | 45 +++++++++++-------- .../impl/SynchronizationAsmsService.java | 42 ++++++++++------- 2 files changed, 52 insertions(+), 35 deletions(-) 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 e5a02554..45aa6473 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 @@ -643,25 +643,33 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl 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, "", "", ""); + log.info("-------" + articleContent); + // base64 + if (articleContent.contains("base64")){ StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("

").append("").append("

"); + stringBuilder.append("

").append(articleContent).append("

"); articleContent = stringBuilder.toString(); + }else { + String urlSuffix = articleContent.substring(articleContent.indexOf("getImg"), + articleContent.indexOf("\" alt")); + 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("

").append("").append("

"); + articleContent = stringBuilder.toString(); + } } } // 处理表格 @@ -976,7 +984,8 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl222"; +// String str = "111\"\"222"; + String str = "\"\"\n"; String substring = str.substring(str.indexOf("getImg"), str.indexOf("\" alt")); System.out.println(substring); System.out.println(substring.substring(substring.lastIndexOf("/") + 1)); 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 11cf6707..0f772a45 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 @@ -399,25 +399,33 @@ public class SynchronizationAsmsService { String articleContent = eMap.get("articleContent"); // 处理图片 if (articleContent.contains(" entity = new HttpEntity<>(headers); - ResponseEntity responseEntity = restTemplate.exchange(imageUrl, 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, "", "", ""); + log.info("-------" + articleContent); + // base64 + if (articleContent.contains("base64")){ StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append("

").append("").append("

"); + stringBuilder.append("

").append(articleContent).append("

"); articleContent = stringBuilder.toString(); + }else { + String urlSuffix = articleContent.substring(articleContent.indexOf("getImg"), + articleContent.indexOf("\" alt")); + String imageUrl = asmsPostUtil.getHost() + urlSuffix; + String fileName = imageUrl.substring(imageUrl.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(imageUrl, 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("

").append("").append("

"); + articleContent = stringBuilder.toString(); + } } } // 处理表格 From 7d607df92f2072d3ce73e0dd628a136a4954a387 Mon Sep 17 00:00:00 2001 From: yjz <3131811435@qq.com> Date: Fri, 1 Mar 2024 22:57:55 +0800 Subject: [PATCH 06/13] =?UTF-8?q?fix(asms):=20=E5=90=8C=E6=AD=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/LawsAsmsOpenApiServiceImpl.java | 74 +++++++++++-------- .../impl/SynchronizationAsmsService.java | 71 ++++++++++-------- 2 files changed, 84 insertions(+), 61 deletions(-) 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 45aa6473..32231dff 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 @@ -45,6 +45,7 @@ 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; @@ -641,36 +642,11 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl").append(articleContent).append("

"); - articleContent = stringBuilder.toString(); - }else { - String urlSuffix = articleContent.substring(articleContent.indexOf("getImg"), - articleContent.indexOf("\" alt")); - 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("

").append("").append("

"); - articleContent = stringBuilder.toString(); - } - } + try { + // 处理图片 + articleContent = disposeImg(articleContent); + }catch (Exception e){ + log.error("图片处理失败!"); } // 处理表格 if (articleContent.contains("
").append(articleContent).append("

"); + articleContent = stringBuilder.toString(); + }else { + String urlSuffix = articleContent.substring(articleContent.indexOf("getImg"), + articleContent.indexOf("\" alt")); + 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("

").append("").append("

"); + articleContent = stringBuilder.toString(); + } + } + } + return articleContent; + } + @Transactional public void upload(String url, String fileName, String fileType, String id, String code) { InputStream inputStream = asmsPostUtil.getFileByteArray(url); @@ -989,5 +1000,6 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl").append(articleContent).append("

"); - articleContent = stringBuilder.toString(); - }else { - String urlSuffix = articleContent.substring(articleContent.indexOf("getImg"), - articleContent.indexOf("\" alt")); - String imageUrl = asmsPostUtil.getHost() + urlSuffix; - String fileName = imageUrl.substring(imageUrl.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(imageUrl, 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("

").append("").append("

"); - articleContent = stringBuilder.toString(); - } - } + try { + // 处理图片 + articleContent = disposeImg(articleContent); + }catch (Exception e){ + log.error("图片处理失败!"); } // 处理表格 if (articleContent.contains("
").append(articleContent).append("

"); + articleContent = stringBuilder.toString(); + }else { + String urlSuffix = articleContent.substring(articleContent.indexOf("getImg"), + articleContent.indexOf("\" alt")); + String imageUrl = asmsPostUtil.getHost() + urlSuffix; + String fileName = imageUrl.substring(imageUrl.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(imageUrl, 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("

").append("").append("

"); + articleContent = stringBuilder.toString(); + } + } + } + return articleContent; + } + public void syncSplitByStandardNumber(String standardNumber) { log.info("=====================定时同步文档拆分====================="); long start = System.currentTimeMillis(); From 64be058d8f95377c683f3d1689d5350bae956f8c Mon Sep 17 00:00:00 2001 From: yjz <3131811435@qq.com> Date: Sat, 2 Mar 2024 01:17:44 +0800 Subject: [PATCH 07/13] =?UTF-8?q?fix(asms):=20=E5=90=8C=E6=AD=A5=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../docking/asms/service/impl/LawsAsmsOpenApiServiceImpl.java | 1 - 1 file changed, 1 deletion(-) 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 32231dff..7f639f8b 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 @@ -754,7 +754,6 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl Date: Sat, 2 Mar 2024 11:28:26 +0800 Subject: [PATCH 08/13] =?UTF-8?q?update=20=E5=90=8C=E6=AD=A5=E6=9D=A1?= =?UTF-8?q?=E6=AC=BE=E6=97=B6=E5=A4=84=E7=90=86=E5=9B=BE=E7=89=87=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../asms/service/ILawsAsmsOpenApiService.java | 7 ++- .../impl/LawsAsmsOpenApiServiceImpl.java | 51 +++++++++++-------- .../impl/SynchronizationAsmsService.java | 8 ++- 3 files changed, 44 insertions(+), 22 deletions(-) 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 32231dff..7e5e122e 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,5 +1,6 @@ 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; @@ -840,7 +841,8 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl").append(articleContent).append("

"); articleContent = stringBuilder.toString(); }else { - String urlSuffix = articleContent.substring(articleContent.indexOf("getImg"), - articleContent.indexOf("\" alt")); - 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("

").append("").append("

"); - articleContent = stringBuilder.toString(); + // 定义正则表达式匹配 img 标签及其属性值 + Pattern pattern = Pattern.compile("(<\\s*img[^>]*>)"); + Matcher matcher = pattern.matcher(articleContent); + + while (matcher.find()) { + String imageUrl = matcher.group(1); + String urlSuffix = imageUrl.substring(imageUrl.indexOf("getImg"), + imageUrl.indexOf("\" alt")); + 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; 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 d8733acc..d9c6217f 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 @@ -9,6 +9,7 @@ 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; @@ -100,6 +101,8 @@ public class SynchronizationAsmsService { 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"); @@ -716,7 +719,10 @@ 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"); + String disposeImg = lawsAsmsOpenApiService.disposeImg(articleContent); + + lawsDocumentSplit.setItemContent(disposeImg); lawsDocumentSplit.setCreateTime(getSimpleDate2(eMap.get("createTime"))); lawsDocumentSplit.setUpdateTime(getSimpleDate2(eMap.get("updateTime"))); From 11b0fc7e7ad969dd31dfee7817d0baef8a475e33 Mon Sep 17 00:00:00 2001 From: yjz <3131811435@qq.com> Date: Sat, 2 Mar 2024 13:24:52 +0800 Subject: [PATCH 09/13] =?UTF-8?q?fix(asms):=20=E6=88=AA=E5=8F=96=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/LawsAsmsOpenApiServiceImpl.java | 10 ++++ .../impl/SynchronizationAsmsService.java | 57 ++++++++++++------- 2 files changed, 48 insertions(+), 19 deletions(-) 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 a17eb2fe..e3ae18eb 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 @@ -856,6 +856,16 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl"); + }catch (Exception e2){ + endIndex = imageUrl.indexOf("\" >"); + } + } String urlSuffix = imageUrl.substring(imageUrl.indexOf("getImg"), imageUrl.indexOf("\" alt")); String url = asmsPostUtil.getHost() + 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 d9c6217f..2fcc4852 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 @@ -598,26 +598,45 @@ public class SynchronizationAsmsService { stringBuilder.append("

").append(articleContent).append("

"); articleContent = stringBuilder.toString(); }else { - String urlSuffix = articleContent.substring(articleContent.indexOf("getImg"), - articleContent.indexOf("\" alt")); - String imageUrl = asmsPostUtil.getHost() + urlSuffix; - String fileName = imageUrl.substring(imageUrl.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(imageUrl, 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("

").append("").append("

"); - articleContent = stringBuilder.toString(); + // 定义正则表达式匹配 img 标签及其属性值 + Pattern pattern = Pattern.compile("(<\\s*img[^>]*>)"); + Matcher matcher = pattern.matcher(articleContent); + + while (matcher.find()) { + String imageUrl = matcher.group(1); + int endIndex = 0; + try { + endIndex = imageUrl.indexOf("\" alt"); + }catch (Exception e){ + try { + endIndex = imageUrl.indexOf("\" />"); + }catch (Exception e2){ + endIndex = imageUrl.indexOf("\" >"); + } + } + String urlSuffix = imageUrl.substring(imageUrl.indexOf("getImg"), + endIndex); + 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; From dca3b2dd7cb9a3798ac816b6033f3b51711f1b65 Mon Sep 17 00:00:00 2001 From: yjz <3131811435@qq.com> Date: Sat, 2 Mar 2024 13:34:44 +0800 Subject: [PATCH 10/13] =?UTF-8?q?fix(asms):=20=E6=8D=95=E8=8E=B7=E5=BC=82?= =?UTF-8?q?=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../asms/service/impl/LawsAsmsOpenApiServiceImpl.java | 1 + .../asms/service/impl/SynchronizationAsmsService.java | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) 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 e3ae18eb..6204871f 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 @@ -647,6 +647,7 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl Date: Sat, 2 Mar 2024 13:34:59 +0800 Subject: [PATCH 11/13] =?UTF-8?q?update=20=E5=90=8C=E6=AD=A5=E6=9D=A1?= =?UTF-8?q?=E6=AC=BE=E6=97=B6=E5=A4=84=E7=90=86=E5=9B=BE=E7=89=87=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/LawsAsmsOpenApiServiceImpl.java | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) 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 6204871f..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 @@ -852,23 +852,18 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl]*>)"); + 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); - int endIndex = 0; - try { - endIndex = imageUrl.indexOf("\" alt"); - }catch (Exception e){ - try { - endIndex = imageUrl.indexOf("\" />"); - }catch (Exception e2){ - endIndex = imageUrl.indexOf("\" >"); - } + Matcher m = Pattern.compile(regex2).matcher(imageUrl); + String urlSuffix = ""; + while (m.find()) { + String group = m.group(1); + urlSuffix = group.substring(group.indexOf("getImg")); } - String urlSuffix = imageUrl.substring(imageUrl.indexOf("getImg"), - imageUrl.indexOf("\" alt")); String url = asmsPostUtil.getHost() + urlSuffix; String fileName = url.substring(url.lastIndexOf("/") + 1); // 获取图片 @@ -1016,11 +1011,21 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl222"; - String str = "\"\"\n"; - String substring = str.substring(str.indexOf("getImg"), str.indexOf("\" alt")); - System.out.println(substring); - System.out.println(substring.substring(substring.lastIndexOf("/") + 1)); - + String str = "111\"\"\"\"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); } + } } From 58065ac5d64b7ea00a17f45fd387ccc1fdb411ff Mon Sep 17 00:00:00 2001 From: lijiarao Date: Sat, 2 Mar 2024 14:08:22 +0800 Subject: [PATCH 12/13] =?UTF-8?q?update=20=E5=90=8C=E6=AD=A5=E6=9D=A1?= =?UTF-8?q?=E6=AC=BE=E6=97=B6=E5=A4=84=E7=90=86=E5=9B=BE=E7=89=87=E6=96=B9?= =?UTF-8?q?=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/SynchronizationAsmsService.java | 57 +------------------ 1 file changed, 2 insertions(+), 55 deletions(-) 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 423b1b2a..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 @@ -403,8 +403,9 @@ public class SynchronizationAsmsService { String articleContent = eMap.get("articleContent"); try { // 处理图片 - articleContent = disposeImg(articleContent); + articleContent = lawsAsmsOpenApiService.disposeImg(articleContent); }catch (Exception e){ + log.error(e.getMessage()); log.error("图片处理失败!"); } // 处理表格 @@ -588,60 +589,6 @@ public class SynchronizationAsmsService { log.info("=====================定时任务同步结束====================="); } - @NotNull - private String disposeImg(String articleContent) { - if (articleContent.contains("").append(articleContent).append("

"); - articleContent = stringBuilder.toString(); - }else { - // 定义正则表达式匹配 img 标签及其属性值 - Pattern pattern = Pattern.compile("(<\\s*img[^>]*>)"); - Matcher matcher = pattern.matcher(articleContent); - - while (matcher.find()) { - String imageUrl = matcher.group(1); - int endIndex = 0; - try { - endIndex = imageUrl.indexOf("\" alt"); - }catch (Exception e){ - try { - endIndex = imageUrl.indexOf("\" />"); - }catch (Exception e2){ - endIndex = imageUrl.indexOf("\" >"); - } - } - String urlSuffix = imageUrl.substring(imageUrl.indexOf("getImg"), - endIndex); - 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; - } - public void syncSplitByStandardNumber(String standardNumber) { log.info("=====================定时同步文档拆分====================="); long start = System.currentTimeMillis(); From 27e7a7f5d0ae62d31376ad7b723a9eb62056f6fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E7=90=A6=E6=B6=9B?= Date: Sat, 2 Mar 2024 16:08:08 +0800 Subject: [PATCH 13/13] =?UTF-8?q?=E6=89=8B=E5=8A=A8=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E4=B8=89=E9=98=B6=E6=AE=B5=E6=A3=80=E7=B4=A2=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../home/mapper/xml/LawsHomeSearchMapper.xml | 12 +- .../impl/LawsHomeSearchServiceImpl.java | 179 +++++++++++------- 2 files changed, 117 insertions(+), 74 deletions(-) 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 @@