update ASMS同步文件

This commit is contained in:
liao
2023-10-24 11:23:14 +08:00
parent ab94f9795a
commit ce84d144fe
2 changed files with 81 additions and 24 deletions
@@ -16,9 +16,12 @@ import com.jero.modules.laws.standard.service.ILawsDomesticStandardService;
import com.jero.modules.laws.standard.service.ILawsReplacedStandardService; import com.jero.modules.laws.standard.service.ILawsReplacedStandardService;
import com.jero.modules.laws.standardization.entity.LawsStandardization; import com.jero.modules.laws.standardization.entity.LawsStandardization;
import com.jero.modules.laws.standardization.service.ILawsStandardizationService; import com.jero.modules.laws.standardization.service.ILawsStandardizationService;
import com.jero.modules.oss.entity.OSSFile;
import com.jero.modules.oss.service.IOSSFileService;
import com.jero.modules.system.entity.SysDictItem; import com.jero.modules.system.entity.SysDictItem;
import com.jero.modules.system.service.ISysDictItemService; import com.jero.modules.system.service.ISysDictItemService;
import com.spire.ms.System.Collections.ArrayList; import com.spire.ms.System.Collections.ArrayList;
import io.minio.errors.*;
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;
@@ -27,6 +30,10 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.jero.common.exception.JeroBootException; import com.jero.common.exception.JeroBootException;
import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.LocalDate; import java.time.LocalDate;
@@ -67,7 +74,10 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
private ILawsDomesticStandardService lawsDomesticStandardService; private ILawsDomesticStandardService lawsDomesticStandardService;
@Autowired @Autowired
private ILawsReplacedStandardService lawsReplacedStandardService; private ILawsReplacedStandardService lawsReplacedStandardService;
@Autowired
private IOSSFileService ossFileService;
private final static String filePath = "asms/";
private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static SimpleDateFormat oldDateFormat = new SimpleDateFormat("yyyy年MM月dd日"); private static SimpleDateFormat oldDateFormat = new SimpleDateFormat("yyyy年MM月dd日");
@@ -379,7 +389,6 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
List<LawsAsmsDomestic> lawsAsmsDomesticList = lawsAsmsDomesticService.list(queryWrapper); List<LawsAsmsDomestic> lawsAsmsDomesticList = lawsAsmsDomesticService.list(queryWrapper);
List<SysDictItem> sysDictItemList = sysDictItemService.list(); List<SysDictItem> sysDictItemList = sysDictItemService.list();
List<LawsStandardization> lawsStandardizationList = lawsStandardizationService.list(); List<LawsStandardization> lawsStandardizationList = lawsStandardizationService.list();
List<LawsDomesticStandard> lawsDomesticStandardList = new ArrayList();
lawsAsmsDomesticList.forEach(lawsAsmsDomestic -> { lawsAsmsDomesticList.forEach(lawsAsmsDomestic -> {
String[] parts = lawsAsmsDomestic.getCode().split("[-\\s]"); // 使用空格或破折号作为分隔符 String[] parts = lawsAsmsDomestic.getCode().split("[-\\s]"); // 使用空格或破折号作为分隔符
if (parts.length < 3) { if (parts.length < 3) {
@@ -455,29 +464,64 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl<LawsAsmsOpenApiMappe
// 更新时间 // 更新时间
lawsDomesticStandard.setUpdateTime(getSimpleDate2(lawsAsmsDomestic.getUpdateTimeString())); lawsDomesticStandard.setUpdateTime(getSimpleDate2(lawsAsmsDomestic.getUpdateTimeString()));
lawsDomesticStandardService.save(lawsDomesticStandard); lawsDomesticStandardService.save(lawsDomesticStandard);
lawsDomesticStandardList.add(lawsDomesticStandard);
}); });
// 状态设置为已同步 // 状态设置为已同步
lawsAsmsOpenApi.setStatus("1"); lawsAsmsOpenApi.setStatus("1");
log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), lawsDomesticStandardList.size()); log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), lawsAsmsDomesticList.size());
} else if ("3".equals(lawsAsmsOpenApi.getApiType()) && "xiaobodata/openApi/domesticLaws/getFile".equals(lawsAsmsOpenApi.getApiUrl())) { } else if ("3".equals(lawsAsmsOpenApi.getApiType()) && "xiaobodata/openApi/domesticLaws/getFile".equals(lawsAsmsOpenApi.getApiUrl())) {
// 国内法规相关文档 // 国内法规相关文档
LambdaQueryWrapper<LawsAsmsDomestic> queryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<LawsAsmsDomestic> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.orderByAsc(LawsAsmsDomestic::getId); queryWrapper.orderByAsc(LawsAsmsDomestic::getId);
List<LawsAsmsDomestic> lawsAsmsDomesticList = lawsAsmsDomesticService.list(queryWrapper); List<LawsAsmsDomestic> lawsAsmsDomesticList = lawsAsmsDomesticService.list(queryWrapper);
lawsAsmsDomesticList.forEach(lawsAsmsDomestic -> { lawsAsmsDomesticList.forEach(lawsAsmsDomestic -> {
String id = lawsAsmsDomestic.getId();
String code = lawsAsmsDomestic.getCode();
Map<String, String> paramMap = new HashMap<>(); Map<String, String> paramMap = new HashMap<>();
paramMap.put("lawCode", lawsAsmsDomestic.getCode()); paramMap.put("lawCode", code);
List<Map<String, String>> mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), paramMap); Map<String, Object> objectMap = asmsPostUtil.sendGetReq2(lawsAsmsOpenApi.getApiUrl(), paramMap);
Map<String, String> eMap = mapList.get(0); if (Objects.isNull(objectMap)) return;
//MinioUtil.upload(); Map<String, String> standardTextPdf = (Map<String, String>) objectMap.get("standardTextPdf");
String fileName = standardTextPdf.get("fileName");
String fileType = standardTextPdf.get("fileType");
String url = standardTextPdf.get("url");
if (StringUtils.isNotBlank(url)) {
upload(url, fileName, fileType, id, code);
}
Map<String, String> standardTextWord = (Map<String, String>) objectMap.get("standardTextWord");
fileName = standardTextWord.get("fileName");
fileType = standardTextWord.get("fileType");
url = standardTextWord.get("url");
if (StringUtils.isNotBlank(url)) {
upload(url, fileName, fileType, id, code);
}
}); });
// 状态设置为已同步
lawsAsmsOpenApi.setStatus("1");
log.info("{}同步成功{}条数据", lawsAsmsOpenApi.getApiName(), lawsAsmsDomesticList.size());
} }
}); });
// 同步接口的状态 // 同步接口的状态
updateBatchById(lawsAsmsOpenApiList); updateBatchById(lawsAsmsOpenApiList);
} }
private void upload(String url, String fileName, String fileType, String id, String code) {
InputStream inputStream = asmsPostUtil.getFileByteArray(url);
try {
MinioUtil.upload(inputStream, filePath + url);
} catch (Exception e) {
e.printStackTrace();
throw new JeroBootException("文件上传错误");
}
OSSFile ossFile = new OSSFile();
ossFile.setFileName(fileName + "." + fileType);
ossFile.setUrl(filePath + url);
ossFile.setStandardId(id);
ossFile.setStandardNo(code);
ossFile.setStandardFileType("publish_of_original");
ossFileService.save(ossFile);
log.info("存储文件:{},url{}", fileName, url);
}
private Date getSimpleDate(String dateStr) { private Date getSimpleDate(String dateStr) {
if (StringUtils.isBlank(dateStr)) return null; if (StringUtils.isBlank(dateStr)) return null;
try { try {
@@ -15,8 +15,10 @@ import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import java.io.ByteArrayInputStream;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files; import java.nio.file.Files;
import java.util.*; import java.util.*;
@@ -78,6 +80,30 @@ public class AsmsPostUtil {
* map:参数map * map:参数map
**/ **/
public List<Map<String, String>> sendGetReq(String uri, Map<String, String> map) { public List<Map<String, String>> sendGetReq(String uri, Map<String, String> map) {
ResponseEntity<Result> responseEntity = getSendGetReq(uri, map);
Map<String, Object> resultMap = (Map<String, Object>) responseEntity.getBody().getResult();
if (Objects.isNull(resultMap)) {
throw new JeroBootException("返回数据为空");
}
List<Map<String, String>> mapList = (List<Map<String, String>>) resultMap.get("records");
if (CollectionUtils.isEmpty(mapList)) {
mapList = new ArrayList<>();
Map<String, String> result = (Map<String, String>) responseEntity.getBody().getResult();
if (result.containsKey("records")) {
return new ArrayList<>();
}
mapList.add(result);
}
log.info("返回{}条数据", mapList.size());
return mapList;
}
public Map<String, Object> sendGetReq2(String uri, Map<String, String> map) {
ResponseEntity<Result> responseEntity = getSendGetReq(uri, map);
return (Map<String, Object>) responseEntity.getBody().getResult();
}
private ResponseEntity<Result> getSendGetReq(String uri, Map<String, String> map) {
// 准备请求头 // 准备请求头
String token = getToken(); String token = getToken();
HttpHeaders headers = new HttpHeaders(); HttpHeaders headers = new HttpHeaders();
@@ -111,27 +137,14 @@ public class AsmsPostUtil {
if (!responseEntity.getBody().isSuccess()) { if (!responseEntity.getBody().isSuccess()) {
throw new JeroBootException("汽车标准数字化平台:请求发送失败"); throw new JeroBootException("汽车标准数字化平台:请求发送失败");
} }
Map<String, Object> resultMap = (Map<String, Object>) responseEntity.getBody().getResult(); return responseEntity;
if (Objects.isNull(resultMap)) {
throw new JeroBootException("返回数据为空");
}
List<Map<String, String>> mapList = (List<Map<String, String>>) resultMap.get("records");
if (CollectionUtils.isEmpty(mapList)) {
mapList = new ArrayList<>();
Map<String, String> result = (Map<String, String>) responseEntity.getBody().getResult();
if (result.containsKey("records")) {
return new ArrayList<>();
}
mapList.add(result);
}
log.info("返回{}条数据", mapList.size());
return mapList;
} }
public byte[] getFileByteArray(String fileUrl) { public InputStream getFileByteArray(String fileUrl) {
// 执行GET请求 // 执行GET请求
ResponseEntity<byte[]> response = restTemplate.getForEntity(host + fileUrl, byte[].class); ResponseEntity<byte[]> response = restTemplate.getForEntity(host + fileUrl, byte[].class);
return response.getBody(); byte[] bytes = response.getBody();
return new ByteArrayInputStream(bytes);
} }
} }