diff --git a/openhis-server-new/core-framework/src/main/java/com/core/framework/config/ApplicationConfig.java b/openhis-server-new/core-framework/src/main/java/com/core/framework/config/ApplicationConfig.java index 2a699eed..4084f9d9 100644 --- a/openhis-server-new/core-framework/src/main/java/com/core/framework/config/ApplicationConfig.java +++ b/openhis-server-new/core-framework/src/main/java/com/core/framework/config/ApplicationConfig.java @@ -1,11 +1,15 @@ package com.core.framework.config; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.EnableAspectJAutoProxy; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.TimeZone; /** @@ -24,6 +28,14 @@ public class ApplicationConfig { */ @Bean public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() { - return jacksonObjectMapperBuilder -> jacksonObjectMapperBuilder.timeZone(TimeZone.getDefault()); + return builder -> { + // 设置默认时区 + builder.timeZone(TimeZone.getDefault()); + // 设置日期格式为 yyyy/M/d HH:mm:ss,支持多种格式反序列化 + builder.simpleDateFormat("yyyy/M/d HH:mm:ss"); + // 添加JavaTimeModule支持,用于LocalDateTime + builder.modules(new JavaTimeModule()); + builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy/M/d HH:mm:ss"))); + }; } } diff --git a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationDiagnosisAppServiceImpl.java b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationDiagnosisAppServiceImpl.java index cd9f8ce2..eee60abe 100644 --- a/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationDiagnosisAppServiceImpl.java +++ b/openhis-server-new/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationDiagnosisAppServiceImpl.java @@ -273,12 +273,28 @@ public class DoctorStationDiagnosisAppServiceImpl implements IDoctorStationDiagn */ @Override public R saveDoctorDiagnosisNew(SaveDiagnosisParam saveDiagnosisParam) { + // 参数校验:确保诊断列表不为空 + if (saveDiagnosisParam == null) { + return R.fail(MessageUtils.message(PromptMsgConstant.Common.M00009, new Object[] { "保存诊断参数" })); + } + // 患者id Long patientId = saveDiagnosisParam.getPatientId(); // 就诊ID Long encounterId = saveDiagnosisParam.getEncounterId(); // 诊断定义集合 List diagnosisChildList = saveDiagnosisParam.getDiagnosisChildList(); + + // 校验患者ID和就诊ID + if (patientId == null || encounterId == null) { + return R.fail(MessageUtils.message(PromptMsgConstant.Common.M00009, new Object[] { "患者ID或就诊ID" })); + } + + // 校验诊断列表不为空 + if (diagnosisChildList == null || diagnosisChildList.isEmpty()) { + return R.fail(MessageUtils.message(PromptMsgConstant.Common.M00009, new Object[] { "诊断列表" })); + } + // 先删除再保存 // iEncounterDiagnosisService.deleteEncounterDiagnosisInfos(encounterId); diff --git a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosis.vue b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosis.vue index e45c8343..06a885da 100644 --- a/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosis.vue +++ b/openhis-ui-vue3/src/views/doctorstation/components/diagnosis/diagnosis.vue @@ -280,6 +280,7 @@ import { saveDiagnosis, } from '../api'; import { DIAG_TYPE } from '@/utils/medicalConstants'; +import { formatDateStr } from '@/utils'; import diagnosisdialog from '../diagnosis/diagnosisdialog.vue'; import AddDiagnosisDialog from './addDiagnosisDialog.vue'; import diagnosislist from '../diagnosis/diagnosislist.vue'; @@ -628,11 +629,11 @@ async function handleSaveDiagnosis() { // 开始加载状态,防止重复提交 saveLoading.value = true; - // 保存前按排序号排序,并转换日期格式为ISO字符串 + // 保存前按排序号排序,并转换日期格式为后端期望的格式 yyyy/M/d HH:mm:ss const diagnosisChildList = form.value.diagnosisList.map(item => ({ ...item, - onsetDate: item.onsetDate ? new Date(item.onsetDate).toISOString() : null, - diagnosisTime: item.diagnosisTime ? new Date(item.diagnosisTime).toISOString() : null + onsetDate: item.onsetDate ? formatDateStr(item.onsetDate, 'YYYY/M/D HH:mm:ss') : null, + diagnosisTime: item.diagnosisTime ? formatDateStr(item.diagnosisTime, 'YYYY/M/D HH:mm:ss') : null })); // 调用保存诊断接口 @@ -657,7 +658,9 @@ async function handleSaveDiagnosis() { } } catch (error) { console.error('保存诊断失败:', error); - proxy.$modal.msgError('保存诊断失败,请稍后重试'); + // 显示后端返回的具体错误信息 + const errorMsg = error?.response?.data?.msg || error?.message || '保存诊断失败,请稍后重试'; + proxy.$modal.msgError(errorMsg); } finally { // 结束加载状态 saveLoading.value = false;