fix(asms): 同步问题

This commit is contained in:
yjz
2024-03-01 22:57:55 +08:00
parent 5d578edb01
commit 7d607df92f
2 changed files with 84 additions and 61 deletions
@@ -45,6 +45,7 @@ import com.jero.modules.system.service.ISysDictService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jsoup.Jsoup; import org.jsoup.Jsoup;
import org.jsoup.nodes.Document; import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element; import org.jsoup.nodes.Element;
@@ -641,36 +642,11 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
lawsDocumentSplit.setItemTitle(eMap.get("termsName")); lawsDocumentSplit.setItemTitle(eMap.get("termsName"));
// 条文内容 // 条文内容
String articleContent = eMap.get("articleContent"); String articleContent = eMap.get("articleContent");
// 处理图片 try {
if (articleContent.contains("<img src=")){ // 处理图片
log.info("-------" + articleContent); articleContent = disposeImg(articleContent);
// base64 }catch (Exception e){
if (articleContent.contains("base64")){ log.error("图片处理失败!");
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<p>").append(articleContent).append("</p>");
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<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=")){ if (articleContent.contains("<table style=")){
@@ -863,6 +839,41 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
updateBatchById(lawsAsmsOpenApiList); updateBatchById(lawsAsmsOpenApiList);
} }
@NotNull
private String disposeImg(String articleContent) {
if (articleContent.contains("<img src=")){
log.info("-------" + articleContent);
// base64
if (articleContent.contains("base64")){
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<p>").append(articleContent).append("</p>");
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<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();
}
}
}
return articleContent;
}
@Transactional @Transactional
public void upload(String url, String fileName, String fileType, String id, String code) { public void upload(String url, String fileName, String fileType, String id, String code) {
InputStream inputStream = asmsPostUtil.getFileByteArray(url); InputStream inputStream = asmsPostUtil.getFileByteArray(url);
@@ -989,5 +1000,6 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
String substring = str.substring(str.indexOf("getImg"), str.indexOf("\" alt")); String substring = str.substring(str.indexOf("getImg"), str.indexOf("\" alt"));
System.out.println(substring); System.out.println(substring);
System.out.println(substring.substring(substring.lastIndexOf("/") + 1)); System.out.println(substring.substring(substring.lastIndexOf("/") + 1));
}
}
} }
@@ -36,6 +36,7 @@ import com.jero.modules.system.service.ISysDictItemService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.jetbrains.annotations.NotNull;
import org.jsoup.Jsoup; import org.jsoup.Jsoup;
import org.jsoup.nodes.Document; import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element; import org.jsoup.nodes.Element;
@@ -397,36 +398,11 @@ public class SynchronizationAsmsService {
lawsDocumentSplit.setItemTitle(eMap.get("termsName")); lawsDocumentSplit.setItemTitle(eMap.get("termsName"));
// 条文内容 // 条文内容
String articleContent = eMap.get("articleContent"); String articleContent = eMap.get("articleContent");
// 处理图片 try {
if (articleContent.contains("<img src=")){ // 处理图片
log.info("-------" + articleContent); articleContent = disposeImg(articleContent);
// base64 }catch (Exception e){
if (articleContent.contains("base64")){ log.error("图片处理失败!");
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<p>").append(articleContent).append("</p>");
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<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=")){ if (articleContent.contains("<table style=")){
@@ -609,6 +585,41 @@ public class SynchronizationAsmsService {
log.info("=====================定时任务同步结束====================="); log.info("=====================定时任务同步结束=====================");
} }
@NotNull
private String disposeImg(String articleContent) {
if (articleContent.contains("<img src=")){
log.info("-------" + articleContent);
// base64
if (articleContent.contains("base64")){
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append("<p>").append(articleContent).append("</p>");
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<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();
}
}
}
return articleContent;
}
public void syncSplitByStandardNumber(String standardNumber) { public void syncSplitByStandardNumber(String standardNumber) {
log.info("=====================定时同步文档拆分====================="); log.info("=====================定时同步文档拆分=====================");
long start = System.currentTimeMillis(); long start = System.currentTimeMillis();