Fix Bug #566: AI修复
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user