fix(asms): 同步问题
This commit is contained in:
+69
-6
@@ -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<LawsAsmsOpenApiMappe
|
||||
private ISysDictService sysDictService;
|
||||
@Resource
|
||||
private ILawsHomeSearchService lawsHomeSearchService;
|
||||
@Autowired
|
||||
private RestTemplate restTemplate;
|
||||
|
||||
private final static String filePath = "asms/";
|
||||
private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
||||
@@ -613,8 +620,7 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
|
||||
List<Map<String, String>> mapList = new ArrayList<>();
|
||||
try{
|
||||
mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), paramMap);
|
||||
}
|
||||
catch (JeroBootException e){
|
||||
} catch (JeroBootException e){
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
// List<Map<String, String>> mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), paramMap);
|
||||
@@ -633,7 +639,51 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
|
||||
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("<img src=")){
|
||||
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<String> entity = new HttpEntity<>(headers);
|
||||
ResponseEntity<byte[]> 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("<p>").append("<img class=\"wordImg\" style=\"width:100%;height:100%\" src=\"")
|
||||
.append(oSSFile.getUrl()).append("\">").append("</p>");
|
||||
articleContent = stringBuilder.toString();
|
||||
}
|
||||
}
|
||||
// 处理表格
|
||||
if (articleContent.contains("<table style=")){
|
||||
articleContent = "<p>" + articleContent + "</p>";
|
||||
}
|
||||
// 重复性校验
|
||||
LawsDocumentSplit lawsDocumentSplits = lawsDocumentSplitMapper.selectOne(
|
||||
new LambdaQueryWrapper<LawsDocumentSplit>()
|
||||
.eq(LawsDocumentSplit::getInfoId, lawsDocumentSplit.getInfoId())
|
||||
.eq(LawsDocumentSplit::getItemNum, lawsDocumentSplit.getItemNum())
|
||||
.eq(LawsDocumentSplit::getItemTitle, lawsDocumentSplit.getItemTitle()));
|
||||
if (!Objects.isNull(lawsDocumentSplits)){
|
||||
// 合并
|
||||
String itemContent = StringUtils.isNotBlank(lawsDocumentSplits.getItemContent()) ? lawsDocumentSplits.getItemContent() : "";
|
||||
lawsDocumentSplitMapper.update(null,
|
||||
new LambdaUpdateWrapper<LawsDocumentSplit>()
|
||||
.set(LawsDocumentSplit::getItemContent, itemContent + articleContent)
|
||||
.eq(LawsDocumentSplit::getId, lawsDocumentSplits.getId()));
|
||||
return;
|
||||
}
|
||||
lawsDocumentSplit.setItemContent(articleContent);
|
||||
lawsDocumentSplit.setCreateTime(getSimpleDate2(eMap.get("createTime")));
|
||||
lawsDocumentSplit.setUpdateTime(getSimpleDate2(eMap.get("updateTime")));
|
||||
|
||||
@@ -683,12 +733,17 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
|
||||
LambdaQueryWrapper<SarFileSplitInfoEO> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(SarFileSplitInfoEO::getIsAsmsImport, "1");
|
||||
List<SarFileSplitInfoEO> sarFileSplitInfoEOList = sarFileSplitInfoService.list(queryWrapper);
|
||||
String regex = "[^a-zA-Z0-9.]";
|
||||
sarFileSplitInfoEOList.forEach(sarFileSplitInfoEO -> {
|
||||
String infoId = sarFileSplitInfoEO.getId();
|
||||
LambdaQueryWrapper<LawsDocumentSplit> queryWrapper1 = new LambdaQueryWrapper<>();
|
||||
queryWrapper1.eq(LawsDocumentSplit::getInfoId, infoId);
|
||||
List<LawsDocumentSplit> lawsDocumentSplitList = lawsDocumentSplitMapper.selectList(queryWrapper1);
|
||||
List<String> itemNumList = lawsDocumentSplitList.stream().map(LawsDocumentSplit::getItemNum).collect(Collectors.toList());
|
||||
List<String> itemNumList = new ArrayList<>();
|
||||
for (LawsDocumentSplit lawsDocumentSplit : lawsDocumentSplitList) {
|
||||
String itemNum = lawsDocumentSplit.getItemNum();
|
||||
itemNumList.add(itemNum.replaceAll(regex, ""));
|
||||
}
|
||||
// 对目录排序
|
||||
Collections.sort(itemNumList, new AlphanumericComparator());
|
||||
Map<String, Long> sortMap = new HashMap<>();
|
||||
@@ -714,12 +769,13 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
|
||||
sarFileSplitMenuEO.setId(id);
|
||||
sarFileSplitMenuEO.setInfoId(infoId);
|
||||
sarFileSplitMenuEO.setName(itemNum);
|
||||
sarFileSplitMenuEO.setDisplaySeq(sortMap.get(itemNum.replaceAll(regex, "")));
|
||||
sarFileSplitMenuEO.setDisplaySeq(sortMap.get(itemNum));
|
||||
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);
|
||||
@@ -727,7 +783,7 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
|
||||
|
||||
// 设置父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);
|
||||
@@ -918,4 +974,11 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
|
||||
lawsAsmsOpenApiMapper.removeDictItemBatch(dictIdList);
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
String str = "111<img src=\"/getImg/1689745730599/31f7baf57aimg1.png\" alt=\"\" />222";
|
||||
String substring = str.substring(str.indexOf("getImg"), str.indexOf("\" alt"));
|
||||
System.out.println(substring);
|
||||
System.out.println(substring.substring(substring.lastIndexOf("/") + 1));
|
||||
}
|
||||
}
|
||||
|
||||
+55
-2
@@ -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("<img src=")){
|
||||
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<String> entity = new HttpEntity<>(headers);
|
||||
ResponseEntity<byte[]> 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("<p>").append("<img class=\"wordImg\" style=\"width:100%;height:100%\" src=\"")
|
||||
.append(oSSFile.getUrl()).append("\">").append("</p>");
|
||||
articleContent = stringBuilder.toString();
|
||||
}
|
||||
}
|
||||
// 处理表格
|
||||
if (articleContent.contains("<table style=")){
|
||||
articleContent = "<p>" + articleContent + "</p>";
|
||||
}
|
||||
// 重复性校验
|
||||
LawsDocumentSplit lawsDocumentSplits = lawsDocumentSplitMapper.selectOne(
|
||||
new LambdaQueryWrapper<LawsDocumentSplit>()
|
||||
.eq(LawsDocumentSplit::getInfoId, lawsDocumentSplit.getInfoId())
|
||||
.eq(LawsDocumentSplit::getItemNum, lawsDocumentSplit.getItemNum())
|
||||
.eq(LawsDocumentSplit::getItemTitle, lawsDocumentSplit.getItemTitle()));
|
||||
if (!Objects.isNull(lawsDocumentSplits)){
|
||||
// 合并
|
||||
String itemContent = StringUtils.isNotBlank(lawsDocumentSplits.getItemContent()) ? lawsDocumentSplits.getItemContent() : "";
|
||||
lawsDocumentSplitMapper.update(null,
|
||||
new LambdaUpdateWrapper<LawsDocumentSplit>()
|
||||
.set(LawsDocumentSplit::getItemContent, itemContent + articleContent)
|
||||
.eq(LawsDocumentSplit::getId, lawsDocumentSplits.getId()));
|
||||
return;
|
||||
}
|
||||
lawsDocumentSplit.setItemContent(articleContent);
|
||||
lawsDocumentSplit.setCreateTime(getSimpleDate2(eMap.get("createTime")));
|
||||
lawsDocumentSplit.setUpdateTime(getSimpleDate2(eMap.get("updateTime")));
|
||||
|
||||
@@ -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);
|
||||
|
||||
+5
@@ -36,6 +36,11 @@ public class AsmsPostUtil {
|
||||
private String host;
|
||||
@Value("${asms.username}")
|
||||
private String username;
|
||||
|
||||
public String getHost() {
|
||||
return host;
|
||||
}
|
||||
|
||||
@Value("${asms.password}")
|
||||
private String password;
|
||||
@Value("${asms.expire}")
|
||||
|
||||
Reference in New Issue
Block a user