From c963f82c3c82dfc082a4b23431f17cd4289cf55e Mon Sep 17 00:00:00 2001 From: Flow <958079825@qq.com> Date: Sat, 26 Jul 2025 15:39:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=82=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/admin/pft/PftController.java | 24 ++++++++++++++ .../admin/pftdata/PftdataController.java | 17 ++++++++++ .../dal/dataobject/pftdata/PftdataDO.java | 3 +- .../system/dal/mysql/pft/PftMapper.java | 24 ++++++++++++++ .../module/system/service/pft/PftService.java | 24 ++++++++++++++ .../system/service/pft/PftServiceImpl.java | 33 +++++++++++++++++++ .../service/pftdata/PftdataService.java | 10 ++++++ .../service/pftdata/PftdataServiceImpl.java | 23 +++++++++++++ 8 files changed, 156 insertions(+), 2 deletions(-) diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/pft/PftController.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/pft/PftController.java index 721e426..cd9066e 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/pft/PftController.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/pft/PftController.java @@ -26,6 +26,7 @@ import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; import cn.iocoder.yudao.module.system.controller.admin.pft.vo.*; +import cn.iocoder.yudao.module.system.controller.admin.patientinfo.vo.patientinfoRespVO; import cn.iocoder.yudao.module.system.dal.dataobject.pft.PftDO; import cn.iocoder.yudao.module.system.service.pft.PftService; @@ -94,4 +95,27 @@ public class PftController { BeanUtils.toBean(list, PftRespVO.class)); } + @PostMapping("/insertPftPatientData") + @Operation(summary = "批量插入肺功能患者基础信息") + public CommonResult insertPftPatientData(@RequestBody List patientInfoList) { + pftService.insertPftPatientData(patientInfoList); + return success(true); + } + + @PutMapping("/updatePftAnalysis") + @Operation(summary = "根据examid更新肺功能分析结果") + @Parameter(name = "examid", description = "检查ID", required = true) + @Parameter(name = "analysisResult", description = "分析结果", required = true) + public CommonResult updatePftAnalysis(@RequestParam("examid") String examid, + @RequestParam("analysisResult") String analysisResult) { + return success(pftService.updatePftAnalysis(examid, analysisResult)); + } + + @GetMapping("/getPftAnalysis") + @Operation(summary = "根据examid查询肺功能分析结果") + @Parameter(name = "examid", description = "检查ID", required = true) + public CommonResult getPftAnalysis(@RequestParam("examid") String examid) { + return success(pftService.getPftAnalysis(examid)); + } + } \ No newline at end of file diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/pftdata/PftdataController.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/pftdata/PftdataController.java index a5bff8b..2349faa 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/pftdata/PftdataController.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/controller/admin/pftdata/PftdataController.java @@ -94,4 +94,21 @@ public class PftdataController { BeanUtils.toBean(list, PftdataRespVO.class)); } + @GetMapping("/getByExamidAndRegid") + @Operation(summary = "根据检查ID和患者ID获取肺功能数据") + public CommonResult getPftdataByExamidAndRegid(@RequestParam("examid") String examid, @RequestParam("regid") String regid) { + PftdataDO pftdata = pftdataService.getPftdataByExamidAndRegid(examid, regid); + return success(BeanUtils.toBean(pftdata, PftdataRespVO.class)); + } + + @PutMapping("/saveDiagnosisByExamidAndRegid") + @Operation(summary = "根据examid和regid保存诊断结论") + public CommonResult savePftdataDiagnosis(@RequestBody Map req) { + String examid = req.get("examid"); + String regid = req.get("regid"); + String diagnosis = req.get("diagnosis"); + pftdataService.savePftdataDiagnosis(examid, regid, diagnosis); + return success(true); + } + } \ No newline at end of file diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/pftdata/PftdataDO.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/pftdata/PftdataDO.java index 8e6b745..752fdc1 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/pftdata/PftdataDO.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/dataobject/pftdata/PftdataDO.java @@ -17,12 +17,11 @@ import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; @TableName("tb_pftdata") @KeySequence("tb_pftdata_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data -@EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @Builder @NoArgsConstructor @AllArgsConstructor -public class PftdataDO extends BaseDO { +public class PftdataDO{ /** * 主键ID diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/pft/PftMapper.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/pft/PftMapper.java index df3264f..7d3871f 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/pft/PftMapper.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/pft/PftMapper.java @@ -8,6 +8,8 @@ import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.module.system.dal.dataobject.pft.PftDO; import org.apache.ibatis.annotations.Mapper; import cn.iocoder.yudao.module.system.controller.admin.pft.vo.*; +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Update; /** * 肺功能患者 Mapper @@ -37,4 +39,26 @@ public interface PftMapper extends BaseMapperX { .orderByDesc(PftDO::getId)); } + /** + * 根据examid更新肺功能分析结果 + * + * @param examid 检查ID + * @param analysisResult 分析结果 + */ + @Update("UPDATE tb_pft SET analysisresult = #{analysisResult} WHERE examid = #{examid}") + void updateAnalysisByExamid(@Param("examid") String examid, @Param("analysisResult") String analysisResult); + + /** + * 根据examid查询肺功能分析结果 + * + * @param examid 检查ID + * @return 分析结果 + */ + default String selectAnalysisByExamid(String examid) { + PftDO pft = selectOne(new LambdaQueryWrapperX() + .eq(PftDO::getExamid, examid) + .select(PftDO::getAnalysisresult)); + return pft != null ? pft.getAnalysisresult() : null; + } + } \ No newline at end of file diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/pft/PftService.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/pft/PftService.java index 1149c6a..b9b8e82 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/pft/PftService.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/pft/PftService.java @@ -3,6 +3,7 @@ package cn.iocoder.yudao.module.system.service.pft; import java.util.*; import javax.validation.*; import cn.iocoder.yudao.module.system.controller.admin.pft.vo.*; +import cn.iocoder.yudao.module.system.controller.admin.patientinfo.vo.patientinfoRespVO; import cn.iocoder.yudao.module.system.dal.dataobject.pft.PftDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; @@ -43,6 +44,29 @@ public interface PftService { */ void deletePftListByIds(List ids); + /** + * 批量插入肺功能患者基础信息 + * + * @param patientInfoList 患者信息列表 + */ + void insertPftPatientData(List patientInfoList); + + /** + * 根据examid更新肺功能分析结果 + * + * @param examid 检查ID + * @param analysisResult 分析结果 + * @return 是否成功 + */ + Boolean updatePftAnalysis(String examid, String analysisResult); + + /** + * 根据examid查询肺功能分析结果 + * @param examid 检查ID + * @return 分析结果 + */ + String getPftAnalysis(String examid); + /** * 获得肺功能患者 * diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/pft/PftServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/pft/PftServiceImpl.java index c66310b..9151561 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/pft/PftServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/pft/PftServiceImpl.java @@ -8,6 +8,7 @@ import org.springframework.transaction.annotation.Transactional; import java.util.*; import cn.iocoder.yudao.module.system.controller.admin.pft.vo.*; +import cn.iocoder.yudao.module.system.controller.admin.patientinfo.vo.patientinfoRespVO; import cn.iocoder.yudao.module.system.dal.dataobject.pft.PftDO; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageParam; @@ -66,6 +67,38 @@ public class PftServiceImpl implements PftService { pftMapper.deleteByIds(ids); } + @Override + public void insertPftPatientData(List patientInfoList) { + if (CollUtil.isNotEmpty(patientInfoList)) { + List pftDataList = new ArrayList<>(); + for (patientinfoRespVO patientInfo : patientInfoList) { + PftDO pft = new PftDO(); + pft.setRegid(patientInfo.getRegid()); + String examId = UUID.randomUUID().toString().replaceAll("-", ""); // 去除横线保持简洁 + pft.setExamid(examId); + pft.setName(patientInfo.getName()); + pft.setGender(patientInfo.getGender()); + pft.setOrgid(patientInfo.getOrgid()); + pft.setOrgname(patientInfo.getOrgname()); + pft.setStatus(0); // 默认状态:0申请中 + pftDataList.add(pft); + } + // 批量插入肺功能数据 + pftMapper.insertBatch(pftDataList); + } + } + + @Override + public Boolean updatePftAnalysis(String examid, String analysisResult) { + pftMapper.updateAnalysisByExamid(examid, analysisResult); + return true; + } + + @Override + public String getPftAnalysis(String examid) { + return pftMapper.selectAnalysisByExamid(examid); + } + private void validatePftExists(List ids) { List list = pftMapper.selectByIds(ids); if (CollUtil.isEmpty(list) || list.size() != ids.size()) { diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/pftdata/PftdataService.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/pftdata/PftdataService.java index 3594e67..13ff50b 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/pftdata/PftdataService.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/pftdata/PftdataService.java @@ -59,4 +59,14 @@ public interface PftdataService { */ PageResult getPftdataPage(PftdataPageReqVO pageReqVO); + /** + * 根据检查ID和患者ID获取肺功能数据 + */ + PftdataDO getPftdataByExamidAndRegid(String examid, String regid); + + /** + * 根据examid和regid保存诊断结论 + */ + void savePftdataDiagnosis(String examid, String regid, String diagnosis); + } \ No newline at end of file diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/pftdata/PftdataServiceImpl.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/pftdata/PftdataServiceImpl.java index b90efb8..44e4b6d 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/pftdata/PftdataServiceImpl.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/service/pftdata/PftdataServiceImpl.java @@ -87,4 +87,27 @@ public class PftdataServiceImpl implements PftdataService { return pftdataMapper.selectPage(pageReqVO); } + @Override + public PftdataDO getPftdataByExamidAndRegid(String examid, String regid) { + return pftdataMapper.selectOne( + new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper() + .eq(PftdataDO::getExamid, examid) + .eq(PftdataDO::getRegid, regid) + ); + } + + @Override + public void savePftdataDiagnosis(String examid, String regid, String diagnosis) { + int updated = pftdataMapper.update( + null, + new com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper() + .eq(PftdataDO::getExamid, examid) + .eq(PftdataDO::getRegid, regid) + .set(PftdataDO::getDiagnosis, diagnosis) + ); + if (updated == 0) { + throw new RuntimeException("未找到对应的肺功能数据记录,无法保存诊断结论"); + } + } + } \ No newline at end of file