From 78c4eaf286318f9441e6ad594982971763beadf3 Mon Sep 17 00:00:00 2001 From: caihaohan Date: Fri, 10 May 2024 14:48:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=88=86=E7=B1=BB=E6=A0=91=E6=A0=87?= =?UTF-8?q?=E5=87=86=E6=B3=95=E8=A7=84=E5=9B=9E=E5=86=99=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=AE=9A=E6=97=B6=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- laws-modules-docking/pom.xml | 5 ++ .../docking/srms/job/SyncPartStandardJob.java | 6 ++ .../docking/srms/service/SrmsApiService.java | 2 +- .../srms/service/impl/SrmsApiServiceImpl.java | 68 +++++++++++-------- .../src/main/resources/application-dev.yml | 2 +- .../src/main/resources/application-prod.yml | 2 +- .../src/main/resources/application-test.yml | 2 +- 7 files changed, 56 insertions(+), 31 deletions(-) diff --git a/laws-modules-docking/pom.xml b/laws-modules-docking/pom.xml index 1769f211..1ac66066 100644 --- a/laws-modules-docking/pom.xml +++ b/laws-modules-docking/pom.xml @@ -29,6 +29,11 @@ system ${project.basedir}/lib/bim-codec-1.0.0.jar + + + org.springframework + spring-webflux + \ No newline at end of file diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/job/SyncPartStandardJob.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/job/SyncPartStandardJob.java index 3236d002..f63fca37 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/job/SyncPartStandardJob.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/job/SyncPartStandardJob.java @@ -1,6 +1,7 @@ package com.jero.modules.docking.srms.job; import com.jero.modules.docking.srms.service.SrmsApiService; +import lombok.extern.slf4j.Slf4j; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; @@ -12,6 +13,7 @@ import javax.annotation.Resource; * @author LQT * @date 2024/2/21 16:01 */ +@Slf4j public class SyncPartStandardJob implements Job { @Resource @@ -19,6 +21,10 @@ public class SyncPartStandardJob implements Job { @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + log.info("每日分类树标准法规回写开始"); + // 同步数据 srmsApiService.syncPartStandard(); + // 发送请求 + srmsApiService.sendPartStandard(); } } diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/SrmsApiService.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/SrmsApiService.java index 36081466..64113c28 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/SrmsApiService.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/SrmsApiService.java @@ -92,7 +92,7 @@ public interface SrmsApiService { * @param * @return com.jero.common.api.vo.Result */ - void sendPartStandard(); + void sendPartStandard() throws InterruptedException; /** * E采通获取标准信息 diff --git a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java index dd3c4610..c0947f64 100644 --- a/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java +++ b/laws-modules-docking/src/main/java/com/jero/modules/docking/srms/service/impl/SrmsApiServiceImpl.java @@ -8,6 +8,7 @@ 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.core.toolkit.IdWorker; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.base.CaseFormat; import com.jero.common.api.vo.Result; @@ -131,7 +132,7 @@ public class SrmsApiServiceImpl implements SrmsApiService { @Value("${srms.etton_sys_user}") private String ettonSysUser; @Value("${srms.part_standard_url}") - private String partStandardUrl; + private String partStandardRewriteUrl; @Value("${bindPart.pdm_Ip}") private String pdmIp; @@ -700,24 +701,37 @@ public class SrmsApiServiceImpl implements SrmsApiService { } @Override - public void sendPartStandard() { - try { - List listLawsPartStandard = lawsPartStandardService.list(); + public void sendPartStandard() throws InterruptedException { + List listLawsPartStandard = lawsPartStandardService.list(); + int size = listLawsPartStandard.size(); + log.info("零部件分类回写总数居条数为:{}", size); + if (size == 0) { + return; + } + // 每10000条记录为一个子列表 + int chunkSize = 10000; + List> listOfChunks = new ArrayList<>(); + + // 使用for循环和subList方法分割列表 + for (int i = 0; i < size; i += chunkSize) { + int end = Math.min(size, i + chunkSize); // 确保不会超出列表的末尾 + List chunk = listLawsPartStandard.subList(i, end); + listOfChunks.add(chunk); + } + String batchId = IdWorker.getIdStr(); + for (int i = 0; i < listOfChunks.size(); i++) { + List list = listOfChunks.get(i); + // 判断数据量是否大于指定大小 JSONObject all = new JSONObject(); - JSONObject messageHeader = new JSONObject(); - String date = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); - // todo Interface_ID,UUID - messageHeader.put("Interface_ID", ""); - messageHeader.put("UUID", ""); - messageHeader.put("MessageId", ""); - messageHeader.put("Sender", "SRMS"); - messageHeader.put("Receiver", "PDM"); - messageHeader.put("SendDate", date.substring(0, 8)); - messageHeader.put("SendTime", date.substring(8)); - all.put("MessageHeader", messageHeader); + all.put(MESSAGE_HANDLER, getMessageHandler("CNHTC_PO1000400", null)); + JSONObject requests = new JSONObject(); + // 批次信息 + requests.put("BatchId", batchId); + requests.put("BatchNo", String.valueOf(i + 1)); + // rows List listObj = new ArrayList<>(); if (!CollectionUtils.isEmpty(listLawsPartStandard)) { - for (LawsPartStandard lawsPartStandard : listLawsPartStandard) { + for (LawsPartStandard lawsPartStandard : list) { JSONObject rows = new JSONObject(); rows.put(PART_CATEGORY_NUM, lawsPartStandard.getPartCategoryNum()); rows.put("StandardPdmType", lawsPartStandard.getStandardPdmType()); @@ -728,19 +742,19 @@ public class SrmsApiServiceImpl implements SrmsApiService { listObj.add(rows); } } - JSONObject requests = new JSONObject(); requests.put("Rows", listObj); all.put(REQUESTS, requests); - // todo url - JSONObject reData = restTemplate.postForObject(partStandardUrl, all, JSONObject.class); - log.info(JSON.toJSONString(reData)); - if (!Objects.isNull(reData) && reData.containsKey("Success") && Objects.equals("true", reData.getString("Success"))) { - log.info("分类树标准法规回写接口成功"); - } else { - log.error("分类树标准法规回写接口失败"); - } - } catch (Exception e) { - log.error("分类树标准法规回写接口失败", e); + // 创建 HttpEntity 包含请求体和头信息 + HttpHeaders headers = this.getBasicAuthHeaders(); + HttpEntity entity = new HttpEntity<>(all.toString(), headers); + // 打印完整的请求报文信息 + log.info("零部件分类回写相关信息"); + log.info("IP: " + pdmIp + partStandardRewriteUrl); + log.info("Headers: " + headers); + JSONObject reData = restTemplate.postForObject(pdmIp + partStandardRewriteUrl, entity, JSONObject.class); + Thread.sleep(3000); + log.info("零部件分类回写请求返回"); + log.info("返回报文: " + JSON.toJSONString(reData)); } } diff --git a/laws-single-startup/src/main/resources/application-dev.yml b/laws-single-startup/src/main/resources/application-dev.yml index b24d8561..46e95235 100644 --- a/laws-single-startup/src/main/resources/application-dev.yml +++ b/laws-single-startup/src/main/resources/application-dev.yml @@ -532,7 +532,7 @@ srms: # E彩通默认账户 etton_sys_user: etton # 分类树标准法规回写接口 url - part_standard_url: + part_standard_url: RESTAdapter/PSRMS/PO1000400/RegulatoryBackwriting # 标准性质 x替换为\d作为正则匹配 standardProperty: diff --git a/laws-single-startup/src/main/resources/application-prod.yml b/laws-single-startup/src/main/resources/application-prod.yml index 87c23fdc..5130c34b 100644 --- a/laws-single-startup/src/main/resources/application-prod.yml +++ b/laws-single-startup/src/main/resources/application-prod.yml @@ -496,7 +496,7 @@ srms: # E彩通默认账户 etton_sys_user: etton # 分类树标准法规回写接口 url - part_standard_url: + part_standard_url: RESTAdapter/PSRMS/PO1000400/RegulatoryBackwriting # 标准性质 x替换为\d作为正则匹配 standardProperty: diff --git a/laws-single-startup/src/main/resources/application-test.yml b/laws-single-startup/src/main/resources/application-test.yml index 62c76790..7849e405 100644 --- a/laws-single-startup/src/main/resources/application-test.yml +++ b/laws-single-startup/src/main/resources/application-test.yml @@ -496,7 +496,7 @@ srms: # E彩通默认账户 etton_sys_user: etton # 分类树标准法规回写接口 url - part_standard_url: + part_standard_url: RESTAdapter/PSRMS/PO1000400/RegulatoryBackwriting # 标准性质 x替换为\d作为正则匹配 standardProperty: