From c18d038143ebc5231bddada8687479c7486a0d31 Mon Sep 17 00:00:00 2001 From: fengchenchen Date: Wed, 20 Mar 2024 15:19:47 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90update=E3=80=91ASMS=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E5=9B=BD=E6=A0=87=E6=95=B0=E6=8D=AE=E7=9A=84=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/prod/2024-3-12 UAT文档的调研.sql | 59 +++++++++++++++++++ .../impl/LawsAsmsOpenApiServiceImpl.java | 37 +++++++++++- 2 files changed, 93 insertions(+), 3 deletions(-) diff --git a/db/prod/2024-3-12 UAT文档的调研.sql b/db/prod/2024-3-12 UAT文档的调研.sql index 99cdaaf1..56da6ed4 100644 --- a/db/prod/2024-3-12 UAT文档的调研.sql +++ b/db/prod/2024-3-12 UAT文档的调研.sql @@ -6,3 +6,62 @@ ALTER TABLE `laws_overseas_standard` MODIFY COLUMN `country_or_region` varchar(5 -- 20240319 夏工开发的标签管理 需要增加新的生成逻辑。 INSERT INTO `sys_fill_rule` (`id`, `rule_name`, `rule_code`, `rule_class`, `rule_params`, `update_by`, `update_time`, `create_by`, `create_time`) VALUES ('1202787665403065860', '标签编码生成', 'label_tree_node', 'com.jero.modules.laws.labeldatabase.rule.LabelTreeRule', NULL, 'admin', '2019-12-09 10:36:54', 'admin', '2019-12-06 11:11:31'); +-- ASMS 对接 国标数据的处理 +-- 1、删除系统中同步的带 长横杠 且没有体系数据的标准 20240320 + +SELECT laws.standard_name, laws.id, laws.standard_number , node.node_code +FROM laws_domestic_standard AS laws + LEFT JOIN laws_node_relation AS node + ON laws.id = node.unique_relation_flag +WHERE laws.standard_number LIKE '%—%' AND laws.del_flag != 1 AND node.node_code IS NULL + + +DELETE laws +FROM laws_domestic_standard AS laws +LEFT JOIN laws_node_relation AS node +ON laws.id = node.unique_relation_flag +WHERE laws.standard_number LIKE '%—%' AND laws.del_flag != 1 AND node.node_code IS NULL; + + +-- 2、删除 ASMS系统中同步的带 长横杠 有体系数据 且 系统中有 短横杠的 标准数据 20240320 +DELETE +FROM + laws_domestic_standard +WHERE + standard_number IN ( + SELECT + standard_number + FROM + ( + SELECT REPLACE + ( laws.standard_number, '—', '-' ) AS standard_number + FROM + laws_domestic_standard AS laws + LEFT JOIN laws_node_relation AS node ON laws.id = node.unique_relation_flag + WHERE + laws.standard_number LIKE '%—%' + AND laws.del_flag != 1 + ) AS tmp + ); + + +-- 3、代替、被代替 引用被引用 数据的处理. 可以在3执行之前对 代替、被代替 引用、被应用的数据做处理 20240320 + +UPDATE laws_replaced_standard +SET replaced = REPLACE ( replaced, '-', '—' ) +WHERE + replaced IN ( SELECT * FROM ( SELECT standard_number FROM laws_domestic_standard WHERE standard_number LIKE '%-%' ) AS tmp ); + +UPDATE laws_replaced_standard +SET replaced_by = REPLACE ( replaced_by, '-', '—' ) +WHERE + replaced_by IN ( SELECT * FROM ( SELECT standard_number FROM laws_domestic_standard WHERE standard_number LIKE '%-%' ) AS tmp ); + +-- 4、将所有国标数据中的 标准号修改成 长横杆 20240320 +UPDATE laws_domestic_standard +SET standard_number = REPLACE ( standard_number, '-', '—' ) +WHERE +standard_number IN ( SELECT * FROM ( SELECT standard_number FROM laws_domestic_standard WHERE standard_number LIKE '%-%' ) AS tmp ); + + + 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 4071c1f6..d2c3ff8e 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 @@ -67,6 +67,7 @@ import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; +import java.util.concurrent.atomic.AtomicInteger; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; @@ -464,7 +465,15 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl lawsAsmsDomesticList = lawsAsmsDomesticService.list(queryWrapper); List sysDictItemList = sysDictItemService.list(); List lawsStandardizationList = lawsStandardizationService.list(); + AtomicInteger addNum = new AtomicInteger(); lawsAsmsDomesticList.forEach(lawsAsmsDomestic -> { + // 获取标准号,如果国标文件中存在则不进行后粗操作 + String standardCode = lawsAsmsDomestic.getCode(); + LawsDomesticStandard testStandard = lawsDomesticStandardService.queryByStandardNumber(standardCode); + if(!Objects.isNull(testStandard)){ + return; + } + String[] parts = lawsAsmsDomestic.getCode().split("[-\\s]"); // 使用空格或破折号作为分隔符 if (parts.length < 3) { parts = lawsAsmsDomestic.getCode().split("[—\\s]"); // 使用空格或破折号作为分隔符 @@ -546,20 +555,30 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.orderByAsc(LawsAsmsDomestic::getId); List lawsAsmsDomesticList = lawsAsmsDomesticService.list(queryWrapper); lawsAsmsDomesticList.forEach(lawsAsmsDomestic -> { - String id = lawsAsmsDomestic.getId(); + // 初始化是通过ASMS同步过来的数据 进行标准表的匹配。 + // 但是20240320日 需要二次刷新标准的数据,所以就不能用ASMS表中标准的id了,需要用国标表中标准的信息去匹配。 + String code = lawsAsmsDomestic.getCode(); + String id = lawsAsmsDomestic.getId(); + LawsDomesticStandard testStandard = lawsDomesticStandardService.queryByStandardNumber(code); + + if(!Objects.isNull(testStandard)){ + id = testStandard.getId(); + } + Map paramMap = new HashMap<>(); paramMap.put("lawCode", code); Map objectMap = asmsPostUtil.sendGetReq2(lawsAsmsOpenApi.getApiUrl(), paramMap); @@ -988,7 +1007,19 @@ public class LawsAsmsOpenApiServiceImpl extends ServiceImpl wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(OSSFile::getUrl, filePath + url); + List list = ossFileService.list(wrapper); + if (list.isEmpty()){ + ossFileService.save(ossFile); + }else if (list.size() > 1){ + // 很多个的话 删除后重新上传。 + for (OSSFile file : list) { + ossFileService.removeById(file.getId()); + } + ossFileService.save(ossFile); + } log.info("存储文件:{},url:{}", fileName, url); }