From 4b6eb764fe68fa4b9f994773848e45bb44aed2c4 Mon Sep 17 00:00:00 2001 From: qinyulong Date: Tue, 17 Mar 2026 14:37:20 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A3=9E=E9=9D=B6=E5=90=8C=E6=AD=A5=EF=BC=9A?= =?UTF-8?q?=E6=9C=AA=E6=9B=B4=E6=96=B0=E7=8A=B6=E6=80=81=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/FeiBaSetServiceImpl.java | 85 +++++++++++-------- 1 file changed, 50 insertions(+), 35 deletions(-) diff --git a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/FeiBaSetServiceImpl.java b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/FeiBaSetServiceImpl.java index 9ce402d3..506c1067 100644 --- a/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/FeiBaSetServiceImpl.java +++ b/blade-service/blade-desk/src/main/java/org/springblade/desk/device/service/impl/FeiBaSetServiceImpl.java @@ -26,6 +26,7 @@ import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.time.Duration; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -105,42 +106,56 @@ public class FeiBaSetServiceImpl extends BaseServiceImpl jsonList = JSONArray.parseArray(result.getJSONArray("data").toJSONString(), JSONObject.class); - if (jsonList != null && jsonList.size() > 0) { - //接口返回飞靶code即为本系统code - Map equCodeObjectMap = jsonList.stream().collect(Collectors.toMap( - e -> e.getString("code"), - e -> e)); - Set equCodes = equCodeObjectMap.keySet(); - if (equCodes == null || equCodes.size() < 1) { - log.error("同步飞靶数据接口返回数据为空"); - return; - } - LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(CollectionUtils.isNotEmpty(equCodes), FeiBaSetEntity::getFsCode, equCodes); - List feiBaSetEntityList = this.list(lambdaQueryWrapper); - Map FeiBaSetEntityMap = new HashMap<>(); - if (null != feiBaSetEntityList && feiBaSetEntityList.size() > 0) { - feiBaSetEntityList.stream().collect(Collectors.toMap( - e -> e.getFsCode(), - e -> e)); - } - List saves = new ArrayList<>(); - for (JSONObject jsonObject : jsonList) { - FeiBaSetEntity feiBaSet = FeiBaSetEntityMap.get(jsonObject.getString("code")); - feiBaSet = Optional.ofNullable(feiBaSet).orElse(new FeiBaSetEntity()); - feiBaSet.setFsCode(jsonObject.getString("code")); - feiBaSet.setFsType(jsonObject.getString("name")); - if (null == feiBaSet.getId()) { - feiBaSet.setStatus(FeiBaSetEntity.FS_STATUS_FREE); - } - saves.add(feiBaSet); - } - boolean saved = this.saveOrUpdateBatch(saves); - if (saved) { - log.debug("同步飞靶数据成功"); - } else { - log.error("同步飞靶数据失败"); + if (CollectionUtils.isEmpty(jsonList)) { + log.error("同步飞靶数据接口返回数据为空"); + return; + } + + // 接口返回飞靶code即为本系统code + Map equCodeObjectMap = jsonList.stream() + .collect(Collectors.toMap( + e -> e.getString("code"), + Function.identity() + )); + + Set equCodes = equCodeObjectMap.keySet(); + if (CollectionUtils.isEmpty(equCodes)) { + log.error("同步飞靶数据接口返回数据code字段为空"); + return; + } + + // 查询数据库中已存在的记录 + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.in(FeiBaSetEntity::getFsCode, equCodes); + List feiBaSetEntityList = this.list(lambdaQueryWrapper); + + Map feiBaSetEntityMap = feiBaSetEntityList.stream() + .collect(Collectors.toMap( + FeiBaSetEntity::getFsCode, + Function.identity() + )); + + // 批量更新/保存 + List saves = jsonList.stream().map(jsonObject -> { + String code = jsonObject.getString("code"); + FeiBaSetEntity entity = feiBaSetEntityMap.getOrDefault(code, new FeiBaSetEntity()); + + entity.setFsCode(code); + entity.setFsType(jsonObject.getString("name")); + + // 新增记录时设置默认状态 + if (entity.getId() == null) { + entity.setStatus(FeiBaSetEntity.FS_STATUS_FREE); } + + return entity; + }).collect(Collectors.toList()); + + boolean success = this.saveOrUpdateBatch(saves); + if (!success) { + log.error("同步飞靶数据保存失败"); + } else { + log.debug("同步飞靶数据保存成功"); } } } catch (Exception e) {