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: