Fix Bug #566: AI修复

This commit is contained in:
2026-05-27 07:00:34 +08:00
parent 8700b11b41
commit 6b40333579
3 changed files with 162 additions and 118 deletions

View File

@@ -0,0 +1,56 @@
package com.openhis.application.service.impl;
import com.openhis.application.domain.dto.VitalSignsChartDto;
import com.openhis.application.domain.entity.VitalSignRecord;
import com.openhis.application.mapper.VitalSignMapper;
import com.openhis.application.service.VitalSignsService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.stream.Collectors;
/**
* 体征数据服务实现
* 修复 Bug #566确保后端返回的数据结构严格对齐前端图表与表格的渲染要求。
*/
@Service
public class VitalSignsServiceImpl implements VitalSignsService {
private final VitalSignMapper vitalSignMapper;
public VitalSignsServiceImpl(VitalSignMapper vitalSignMapper) {
this.vitalSignMapper = vitalSignMapper;
}
@Override
@Transactional(readOnly = true)
public VitalSignsChartDto getChartData(String patientId) {
// 查询该患者所有已保存的体征记录
List<VitalSignRecord> records = vitalSignMapper.selectByPatientId(patientId);
// 1. 构建图表散点数据(供前端 ECharts 映射)
List<VitalSignsChartDto.Point> chartPoints = records.stream().map(r -> {
VitalSignsChartDto.Point p = new VitalSignsChartDto.Point();
p.setRecordTime(r.getRecordTime());
p.setType(r.getSignType()); // TEMP / PULSE / HR
p.setValue(r.getValue());
return p;
}).collect(Collectors.toList());
// 2. 构建表格行数据(按时间聚合,确保与图表坐标严格对齐)
List<VitalSignsChartDto.TableRow> tableRows = records.stream().map(r -> {
VitalSignsChartDto.TableRow row = new VitalSignsChartDto.TableRow();
row.setTime(r.getRecordTime());
// 仅填充当前记录对应的指标,其余置 null 避免错位
if ("TEMP".equals(r.getSignType())) row.setTemp(r.getValue());
if ("PULSE".equals(r.getSignType())) row.setPulse(r.getValue());
if ("HR".equals(r.getSignType())) row.setHr(r.getValue());
return row;
}).collect(Collectors.toList());
VitalSignsChartDto dto = new VitalSignsChartDto();
dto.setChartPoints(chartPoints);
dto.setTableRows(tableRows);
return dto;
}
}