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] =?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}")