|
|
@@ -2162,6 +2162,11 @@ public class HealthReportService {
|
|
|
.orderByDesc(IndicatorValue::getRecordedAt)
|
|
|
.last("LIMIT 1");
|
|
|
IndicatorValue latest = indicatorValueMapper.selectOne(w);
|
|
|
+ // B方案 diff:member_indicator_current(member_id+definition_id 唯一)
|
|
|
+ com.etotem.cfc.entity.MemberIndicatorCurrent mic = null;
|
|
|
+ try {
|
|
|
+ mic = memberIndicatorCurrentService.getByMemberAndDefinition(memberId, def.getId());
|
|
|
+ } catch (Exception ignore) { }
|
|
|
Map<String, Object> item = new HashMap<>();
|
|
|
item.put("code", def.getCode());
|
|
|
item.put("name", def.getName());
|
|
|
@@ -2173,12 +2178,33 @@ public class HealthReportService {
|
|
|
item.put("numericValue", latest.getNumericValue() != null ? latest.getNumericValue().doubleValue() : null);
|
|
|
item.put("remark", latest.getRemark());
|
|
|
item.put("recordedAt", latest.getRecordedAt());
|
|
|
+ } else if (mic != null) {
|
|
|
+ // indicator_values 无观测行时回退到 member_indicator_current(B方案 diff 表)
|
|
|
+ item.put("value", mic.getValue());
|
|
|
+ item.put("numericValue", mic.getNumericValue() != null ? mic.getNumericValue().doubleValue() : null);
|
|
|
+ item.put("remark", null);
|
|
|
+ item.put("recordedAt", mic.getUpdatedAt());
|
|
|
} else {
|
|
|
item.put("value", null);
|
|
|
item.put("numericValue", null);
|
|
|
item.put("remark", null);
|
|
|
item.put("recordedAt", null);
|
|
|
}
|
|
|
+ if (mic != null) {
|
|
|
+ item.put("previousValue", mic.getPreviousValue());
|
|
|
+ java.math.BigDecimal delta = mic.getDelta();
|
|
|
+ item.put("delta", delta != null ? delta.doubleValue() : null);
|
|
|
+ item.put("trend", mic.getTrend());
|
|
|
+ // trendDesc: 前端展示"较上次 ±x"
|
|
|
+ if (delta != null && delta.compareTo(java.math.BigDecimal.ZERO) != 0) {
|
|
|
+ String arrow = delta.signum() > 0 ? "+" : "";
|
|
|
+ // stripTrailingZeros: 去掉 decimal(12,4) 带来的尾零 (如 -9.0000 -> -9)
|
|
|
+ String plain = delta.stripTrailingZeros().toPlainString();
|
|
|
+ item.put("trendDesc", "较上次 " + arrow + plain);
|
|
|
+ } else {
|
|
|
+ item.put("trendDesc", "");
|
|
|
+ }
|
|
|
+ }
|
|
|
result.add(item);
|
|
|
}
|
|
|
return result;
|