|
@@ -43,6 +43,7 @@ import java.util.Comparator;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
import java.util.Objects;
|
|
import java.util.Objects;
|
|
|
|
|
+import java.util.Set;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -559,6 +560,7 @@ public class ThirdPartyChargingServiceImpl implements ThirdPartyChargingService
|
|
|
List<ThirdPartyPolicyInfo> existingDetails = policyInfoMapper.selectList(
|
|
List<ThirdPartyPolicyInfo> existingDetails = policyInfoMapper.selectList(
|
|
|
Wrappers.<ThirdPartyPolicyInfo>lambdaQuery()
|
|
Wrappers.<ThirdPartyPolicyInfo>lambdaQuery()
|
|
|
.eq(ThirdPartyPolicyInfo::getPricePolicyId, latestPolicy.getId())
|
|
.eq(ThirdPartyPolicyInfo::getPricePolicyId, latestPolicy.getId())
|
|
|
|
|
+ .eq(ThirdPartyPolicyInfo::getIsDeleted, 0)
|
|
|
.orderBy(true, true, ThirdPartyPolicyInfo::getStartTime)
|
|
.orderBy(true, true, ThirdPartyPolicyInfo::getStartTime)
|
|
|
);
|
|
);
|
|
|
|
|
|
|
@@ -653,13 +655,19 @@ public class ThirdPartyChargingServiceImpl implements ThirdPartyChargingService
|
|
|
* 保存价格策略明细(对比后更新或新增)
|
|
* 保存价格策略明细(对比后更新或新增)
|
|
|
*/
|
|
*/
|
|
|
private void savePolicyInfoDetails(List<ChargingPricePolicyVO.PolicyInfo> policyInfos, Long policyId) {
|
|
private void savePolicyInfoDetails(List<ChargingPricePolicyVO.PolicyInfo> policyInfos, Long policyId) {
|
|
|
- // 查询已存在的明细记录,以 startTime 为 key
|
|
|
|
|
|
|
+ // 查询已存在的明细记录,以 startTime 为 key(只查询未删除的)
|
|
|
Map<String, ThirdPartyPolicyInfo> existingMap = policyInfoMapper.selectList(
|
|
Map<String, ThirdPartyPolicyInfo> existingMap = policyInfoMapper.selectList(
|
|
|
Wrappers.<ThirdPartyPolicyInfo>lambdaQuery()
|
|
Wrappers.<ThirdPartyPolicyInfo>lambdaQuery()
|
|
|
- .eq(ThirdPartyPolicyInfo::getPricePolicyId, policyId))
|
|
|
|
|
|
|
+ .eq(ThirdPartyPolicyInfo::getPricePolicyId, policyId)
|
|
|
|
|
+ .eq(ThirdPartyPolicyInfo::getIsDeleted, 0))
|
|
|
.stream()
|
|
.stream()
|
|
|
.collect(Collectors.toMap(ThirdPartyPolicyInfo::getStartTime, info -> info, (v1, v2) -> v1));
|
|
.collect(Collectors.toMap(ThirdPartyPolicyInfo::getStartTime, info -> info, (v1, v2) -> v1));
|
|
|
|
|
|
|
|
|
|
+ // 收集新数据中的所有 startTime,用于后续判断哪些需要删除
|
|
|
|
|
+ Set<String> newStartTimes = policyInfos.stream()
|
|
|
|
|
+ .map(ChargingPricePolicyVO.PolicyInfo::getStartTime)
|
|
|
|
|
+ .collect(Collectors.toSet());
|
|
|
|
|
+
|
|
|
for (ChargingPricePolicyVO.PolicyInfo policyInfo : policyInfos) {
|
|
for (ChargingPricePolicyVO.PolicyInfo policyInfo : policyInfos) {
|
|
|
ThirdPartyPolicyInfo existing = existingMap.get(policyInfo.getStartTime());
|
|
ThirdPartyPolicyInfo existing = existingMap.get(policyInfo.getStartTime());
|
|
|
|
|
|
|
@@ -668,17 +676,7 @@ public class ThirdPartyChargingServiceImpl implements ThirdPartyChargingService
|
|
|
savePolicyInfoDetail(policyInfo, policyId);
|
|
savePolicyInfoDetail(policyInfo, policyId);
|
|
|
log.debug("价格策略明细新增成功 - policyId: {}, startTime: {}", policyId, policyInfo.getStartTime());
|
|
log.debug("价格策略明细新增成功 - policyId: {}, startTime: {}", policyId, policyInfo.getStartTime());
|
|
|
} else if (!isPolicyInfoSame(existing, policyInfo)) {
|
|
} else if (!isPolicyInfoSame(existing, policyInfo)) {
|
|
|
- // 检查上次更新时间,如果低于1小时,跳过本次更新
|
|
|
|
|
- if (existing.getUpdateTime() != null) {
|
|
|
|
|
- LocalDateTime oneHourAgo = LocalDateTime.now().minusHours(1);
|
|
|
|
|
- if (existing.getUpdateTime().isAfter(oneHourAgo)) {
|
|
|
|
|
- log.info("价格策略明细上次更新时间不足1小时,跳过更新 - policyId: {}, startTime: {}, lastUpdateTime: {}",
|
|
|
|
|
- policyId, policyInfo.getStartTime(), existing.getUpdateTime());
|
|
|
|
|
- continue; // 跳过本次更新
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- // 存在且数据变化,且距离上次更新超过1小时,执行更新
|
|
|
|
|
|
|
+ // 存在且数据变化,执行更新
|
|
|
updatePolicyInfoDetail(existing, policyInfo);
|
|
updatePolicyInfoDetail(existing, policyInfo);
|
|
|
log.debug("价格策略明细更新成功 - policyId: {}, startTime: {}", policyId, policyInfo.getStartTime());
|
|
log.debug("价格策略明细更新成功 - policyId: {}, startTime: {}", policyId, policyInfo.getStartTime());
|
|
|
|
|
|
|
@@ -690,6 +688,16 @@ public class ThirdPartyChargingServiceImpl implements ThirdPartyChargingService
|
|
|
log.debug("价格策略明细未变化,更新同步时间 - policyId: {}, startTime: {}", policyId, policyInfo.getStartTime());
|
|
log.debug("价格策略明细未变化,更新同步时间 - policyId: {}, startTime: {}", policyId, policyInfo.getStartTime());
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ // 逻辑删除:数据库中存在但第三方返回数据中没有的明细
|
|
|
|
|
+ for (Map.Entry<String, ThirdPartyPolicyInfo> entry : existingMap.entrySet()) {
|
|
|
|
|
+ if (!newStartTimes.contains(entry.getKey())) {
|
|
|
|
|
+ ThirdPartyPolicyInfo toDelete = entry.getValue();
|
|
|
|
|
+ policyInfoMapper.deleteById(toDelete.getId());
|
|
|
|
|
+ log.info("价格策略明细逻辑删除 - policyId: {}, startTime: {}, id: {}",
|
|
|
|
|
+ policyId, entry.getKey(), toDelete.getId());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|