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 339b5366..4b4c8280 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 @@ -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.standardization.entity.LawsStandardization; 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.service.ISysDictItemService; import com.spire.ms.System.Collections.ArrayList; +import io.minio.errors.*; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; @@ -27,6 +30,10 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; 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.SimpleDateFormat; import java.time.LocalDate; @@ -67,7 +74,10 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl lawsAsmsDomesticList = lawsAsmsDomesticService.list(queryWrapper); List sysDictItemList = sysDictItemService.list(); List lawsStandardizationList = lawsStandardizationService.list(); - List lawsDomesticStandardList = new ArrayList(); lawsAsmsDomesticList.forEach(lawsAsmsDomestic -> { String[] parts = lawsAsmsDomestic.getCode().split("[-\\s]"); // 使用空格或破折号作为分隔符 if (parts.length < 3) { @@ -455,29 +464,64 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.orderByAsc(LawsAsmsDomestic::getId); List lawsAsmsDomesticList = lawsAsmsDomesticService.list(queryWrapper); lawsAsmsDomesticList.forEach(lawsAsmsDomestic -> { + String id = lawsAsmsDomestic.getId(); + String code = lawsAsmsDomestic.getCode(); Map paramMap = new HashMap<>(); - paramMap.put("lawCode", lawsAsmsDomestic.getCode()); - List> mapList = asmsPostUtil.sendGetReq(lawsAsmsOpenApi.getApiUrl(), paramMap); - Map eMap = mapList.get(0); - //MinioUtil.upload(); + paramMap.put("lawCode", code); + Map objectMap = asmsPostUtil.sendGetReq2(lawsAsmsOpenApi.getApiUrl(), paramMap); + if (Objects.isNull(objectMap)) return; + Map standardTextPdf = (Map) 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 standardTextWord = (Map) 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); } + 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) { if (StringUtils.isBlank(dateStr)) return null; try { 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 31669c24..e2d7662f 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 @@ -15,8 +15,10 @@ import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; import org.springframework.web.client.RestTemplate; +import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; +import java.io.InputStream; import java.nio.file.Files; import java.util.*; @@ -78,6 +80,30 @@ public class AsmsPostUtil { * map:参数map **/ public List> sendGetReq(String uri, Map map) { + ResponseEntity responseEntity = getSendGetReq(uri, map); + Map resultMap = (Map) responseEntity.getBody().getResult(); + if (Objects.isNull(resultMap)) { + throw new JeroBootException("返回数据为空"); + } + List> mapList = (List>) resultMap.get("records"); + if (CollectionUtils.isEmpty(mapList)) { + mapList = new ArrayList<>(); + Map result = (Map) responseEntity.getBody().getResult(); + if (result.containsKey("records")) { + return new ArrayList<>(); + } + mapList.add(result); + } + log.info("返回{}条数据", mapList.size()); + return mapList; + } + + public Map sendGetReq2(String uri, Map map) { + ResponseEntity responseEntity = getSendGetReq(uri, map); + return (Map) responseEntity.getBody().getResult(); + } + + private ResponseEntity getSendGetReq(String uri, Map map) { // 准备请求头 String token = getToken(); HttpHeaders headers = new HttpHeaders(); @@ -111,27 +137,14 @@ public class AsmsPostUtil { if (!responseEntity.getBody().isSuccess()) { throw new JeroBootException("汽车标准数字化平台:请求发送失败"); } - Map resultMap = (Map) responseEntity.getBody().getResult(); - if (Objects.isNull(resultMap)) { - throw new JeroBootException("返回数据为空"); - } - List> mapList = (List>) resultMap.get("records"); - if (CollectionUtils.isEmpty(mapList)) { - mapList = new ArrayList<>(); - Map result = (Map) responseEntity.getBody().getResult(); - if (result.containsKey("records")) { - return new ArrayList<>(); - } - mapList.add(result); - } - log.info("返回{}条数据", mapList.size()); - return mapList; + return responseEntity; } - public byte[] getFileByteArray(String fileUrl) { + public InputStream getFileByteArray(String fileUrl) { // 执行GET请求 ResponseEntity response = restTemplate.getForEntity(host + fileUrl, byte[].class); - return response.getBody(); + byte[] bytes = response.getBody(); + return new ByteArrayInputStream(bytes); } }