refactor(config): 重构应用配置中的Jackson序列化设置
- 将Jackson2ObjectMapperBuilderCustomizer替换为直接配置ObjectMapper实例 - 移除未使用的Logger导入和日志变量声明 - 统一日期时间序列化配置方式,禁用时间戳格式 - 更新反序列化上下文参数命名以保持一致性 - 简化泛型类型声明,使用钻石操作符 fix(patient): 修复患者管理中的数据库查询语法错误 - 移除PatientManageMapper.xml中多余的逗号导致的SQL语法问题 - 确保字段列表格式正确以避免数据库解析错误 fix(rationaldrug): 修正合理用药模块API端点路径 - 移除API路径中的healthlink-his前缀,统一使用/api/v1基础路径 - 保持所有处方审核相关接口的一致性 feat(patient): 在患者添加对话框中增加联系人信息字段 - 添加联系人姓名、关系和电话号码输入表单 - 为新字段提供相应的验证规则和占位符提示 - 保持与现有监护人信息字段的界面布局一致
This commit is contained in:
@@ -1,20 +1,19 @@
|
||||
package com.core.framework.config;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import com.fasterxml.jackson.databind.SerializationFeature;
|
||||
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.jackson2.autoconfigure.Jackson2ObjectMapperBuilderCustomizer;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.context.annotation.EnableAspectJAutoProxy;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.TimeZone;
|
||||
@@ -23,15 +22,14 @@ import java.util.TimeZone;
|
||||
@EnableAspectJAutoProxy(exposeProxy = true)
|
||||
@MapperScan({"com.core.**.mapper", "com.healthlink.his.**.mapper"})
|
||||
public class ApplicationConfig {
|
||||
private static final Logger log = LoggerFactory.getLogger(ApplicationConfig.class);
|
||||
|
||||
private static final JsonDeserializer<LocalDateTime> LOCAL_DATE_TIME_DESERIALIZER = new JsonDeserializer<LocalDateTime>() {
|
||||
private static final JsonDeserializer<LocalDateTime> LOCAL_DATE_TIME_DESERIALIZER = new JsonDeserializer<>() {
|
||||
private static final DateTimeFormatter ISO_FORMATTER = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
|
||||
private static final DateTimeFormatter SIMPLE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
private static final DateTimeFormatter SLASH_FORMATTER = DateTimeFormatter.ofPattern("yyyy/M/d HH:mm:ss");
|
||||
|
||||
@Override
|
||||
public LocalDateTime deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
|
||||
public LocalDateTime deserialize(JsonParser p, DeserializationContext context) throws IOException {
|
||||
String text = p.getText();
|
||||
if (text == null || text.isEmpty()) return null;
|
||||
String cleaned = text.replaceAll("[Zz]$", "").replaceAll("[+-]\\d{2}:?\\d{2}$", "");
|
||||
@@ -42,14 +40,17 @@ public class ApplicationConfig {
|
||||
};
|
||||
|
||||
@Bean
|
||||
public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() {
|
||||
return builder -> {
|
||||
builder.timeZone(TimeZone.getDefault());
|
||||
builder.simpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
JavaTimeModule javaTimeModule = new JavaTimeModule();
|
||||
javaTimeModule.addDeserializer(LocalDateTime.class, LOCAL_DATE_TIME_DESERIALIZER);
|
||||
builder.modules(javaTimeModule);
|
||||
builder.serializerByType(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
};
|
||||
public ObjectMapper objectMapper() {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
mapper.setTimeZone(TimeZone.getDefault());
|
||||
mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
|
||||
mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
|
||||
|
||||
JavaTimeModule javaTimeModule = new JavaTimeModule();
|
||||
javaTimeModule.addDeserializer(LocalDateTime.class, LOCAL_DATE_TIME_DESERIALIZER);
|
||||
javaTimeModule.addSerializer(LocalDateTime.class, new LocalDateTimeSerializer(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
mapper.registerModule(javaTimeModule);
|
||||
|
||||
return mapper;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -26,7 +26,7 @@ public class FlexibleDateDeserializer extends JsonDeserializer<Date> {
|
||||
};
|
||||
|
||||
@Override
|
||||
public Date deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
|
||||
public Date deserialize(JsonParser p, DeserializationContext context) throws IOException {
|
||||
String dateStr = p.getValueAsString();
|
||||
if (dateStr == null || dateStr.isEmpty()) {
|
||||
return null;
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
pt.guardian_address,
|
||||
pt.patient_derived,
|
||||
pt.education_level,
|
||||
pt.company_address,
|
||||
pt.company_address
|
||||
FROM (
|
||||
SELECT
|
||||
(
|
||||
@@ -103,7 +103,7 @@
|
||||
p.guardian_address,
|
||||
p.patient_derived,
|
||||
p.education_level,
|
||||
p.company_address,
|
||||
p.company_address
|
||||
FROM adm_patient p
|
||||
where p.delete_flag = '0'
|
||||
) AS pt
|
||||
|
||||
@@ -2,51 +2,51 @@ import request from '@/utils/request'
|
||||
|
||||
// ==================== 处方审核 ====================
|
||||
export function auditPrescription(data) {
|
||||
return request({ url: '/healthlink-his/api/v1/rational-drug/audit', method: 'post', data })
|
||||
return request({ url: '/api/v1/rational-drug/audit', method: 'post', data })
|
||||
}
|
||||
|
||||
export function batchAudit(prescriptionIds) {
|
||||
return request({ url: '/healthlink-his/api/v1/rational-drug/batch-audit', method: 'post', data: prescriptionIds })
|
||||
return request({ url: '/api/v1/rational-drug/batch-audit', method: 'post', data: prescriptionIds })
|
||||
}
|
||||
|
||||
export function getAuditStatistics() {
|
||||
return request({ url: '/healthlink-his/api/v1/rational-drug/statistics', method: 'get' })
|
||||
return request({ url: '/api/v1/rational-drug/statistics', method: 'get' })
|
||||
}
|
||||
|
||||
export function getAuditTrend(startDate) {
|
||||
return request({ url: '/healthlink-his/api/v1/rational-drug/trend', method: 'get', params: { startDate } })
|
||||
return request({ url: '/api/v1/rational-drug/trend', method: 'get', params: { startDate } })
|
||||
}
|
||||
|
||||
export function getAuditLog(encounterId) {
|
||||
return request({ url: `/healthlink-his/api/v1/rational-drug/audit-log/${encounterId}`, method: 'get' })
|
||||
return request({ url: `/api/v1/rational-drug/audit-log/${encounterId}`, method: 'get' })
|
||||
}
|
||||
|
||||
// ==================== 配伍禁忌 ====================
|
||||
export function checkInteraction(drugCodes) {
|
||||
return request({ url: '/healthlink-his/api/v1/rational-drug/check-interaction', method: 'post', data: drugCodes })
|
||||
return request({ url: '/api/v1/rational-drug/check-interaction', method: 'post', data: drugCodes })
|
||||
}
|
||||
|
||||
export function listInteractionRules(params) {
|
||||
return request({ url: '/healthlink-his/api/v1/rational-drug/interaction-rules', method: 'get', params })
|
||||
return request({ url: '/api/v1/rational-drug/interaction-rules', method: 'get', params })
|
||||
}
|
||||
|
||||
export function addInteractionRule(data) {
|
||||
return request({ url: '/healthlink-his/api/v1/rational-drug/interaction-rules', method: 'post', data })
|
||||
return request({ url: '/api/v1/rational-drug/interaction-rules', method: 'post', data })
|
||||
}
|
||||
|
||||
export function updateInteractionRule(data) {
|
||||
return request({ url: '/healthlink-his/api/v1/rational-drug/interaction-rules', method: 'put', data })
|
||||
return request({ url: '/api/v1/rational-drug/interaction-rules', method: 'put', data })
|
||||
}
|
||||
|
||||
export function delInteractionRule(id) {
|
||||
return request({ url: `/healthlink-his/api/v1/rational-drug/interaction-rules/${id}`, method: 'delete' })
|
||||
return request({ url: `/api/v1/rational-drug/interaction-rules/${id}`, method: 'delete' })
|
||||
}
|
||||
|
||||
// ==================== 剂量规则 ====================
|
||||
export function listDosageRules(params) {
|
||||
return request({ url: '/healthlink-his/api/v1/rational-drug/dosage-rules', method: 'get', params })
|
||||
return request({ url: '/api/v1/rational-drug/dosage-rules', method: 'get', params })
|
||||
}
|
||||
|
||||
export function checkDosage(drugCode, dosage, population) {
|
||||
return request({ url: '/healthlink-his/api/v1/rational-drug/check-dosage', method: 'get', params: { drugCode, dosage, population } })
|
||||
return request({ url: '/api/v1/rational-drug/check-dosage', method: 'get', params: { drugCode, dosage, population } })
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import request from '@/utils/request'
|
||||
// 处方审核
|
||||
export function auditPrescription(data) {
|
||||
return request({
|
||||
url: '/healthlink-his/api/v1/rational-drug/audit',
|
||||
url: '/api/v1/rational-drug/audit',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
@@ -12,7 +12,7 @@ export function auditPrescription(data) {
|
||||
// 批量审核
|
||||
export function batchAudit(data) {
|
||||
return request({
|
||||
url: '/healthlink-his/api/v1/rational-drug/batch-audit',
|
||||
url: '/api/v1/rational-drug/batch-audit',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
@@ -21,7 +21,7 @@ export function batchAudit(data) {
|
||||
// 审核统计
|
||||
export function getAuditStatistics() {
|
||||
return request({
|
||||
url: '/healthlink-his/api/v1/rational-drug/statistics',
|
||||
url: '/api/v1/rational-drug/statistics',
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
@@ -29,7 +29,7 @@ export function getAuditStatistics() {
|
||||
// 审核趋势
|
||||
export function getAuditTrend(params) {
|
||||
return request({
|
||||
url: '/healthlink-his/api/v1/rational-drug/trend',
|
||||
url: '/api/v1/rational-drug/trend',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
@@ -38,7 +38,7 @@ export function getAuditTrend(params) {
|
||||
// 审核记录
|
||||
export function getAuditLog(encounterId) {
|
||||
return request({
|
||||
url: '/healthlink-his/api/v1/rational-drug/audit-log/' + encounterId,
|
||||
url: '/api/v1/rational-drug/audit-log/' + encounterId,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
@@ -46,7 +46,7 @@ export function getAuditLog(encounterId) {
|
||||
// 配伍禁忌检查
|
||||
export function checkInteraction(data) {
|
||||
return request({
|
||||
url: '/healthlink-his/api/v1/rational-drug/check-interaction',
|
||||
url: '/api/v1/rational-drug/check-interaction',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
@@ -55,7 +55,7 @@ export function checkInteraction(data) {
|
||||
// 配伍禁忌规则列表
|
||||
export function listInteractionRules(params) {
|
||||
return request({
|
||||
url: '/healthlink-his/api/v1/rational-drug/interaction-rules',
|
||||
url: '/api/v1/rational-drug/interaction-rules',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
@@ -64,7 +64,7 @@ export function listInteractionRules(params) {
|
||||
// 新增配伍禁忌规则
|
||||
export function addInteractionRule(data) {
|
||||
return request({
|
||||
url: '/healthlink-his/api/v1/rational-drug/interaction-rules',
|
||||
url: '/api/v1/rational-drug/interaction-rules',
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
@@ -73,7 +73,7 @@ export function addInteractionRule(data) {
|
||||
// 修改配伍禁忌规则
|
||||
export function updateInteractionRule(data) {
|
||||
return request({
|
||||
url: '/healthlink-his/api/v1/rational-drug/interaction-rules',
|
||||
url: '/api/v1/rational-drug/interaction-rules',
|
||||
method: 'put',
|
||||
data: data
|
||||
})
|
||||
@@ -82,7 +82,7 @@ export function updateInteractionRule(data) {
|
||||
// 删除配伍禁忌规则
|
||||
export function delInteractionRule(id) {
|
||||
return request({
|
||||
url: '/healthlink-his/api/v1/rational-drug/interaction-rules/' + id,
|
||||
url: '/api/v1/rational-drug/interaction-rules/' + id,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
@@ -90,7 +90,7 @@ export function delInteractionRule(id) {
|
||||
// 剂量规则列表
|
||||
export function listDosageRules(params) {
|
||||
return request({
|
||||
url: '/healthlink-his/api/v1/rational-drug/dosage-rules',
|
||||
url: '/api/v1/rational-drug/dosage-rules',
|
||||
method: 'get',
|
||||
params: params
|
||||
})
|
||||
|
||||
@@ -454,8 +454,58 @@
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 第八行:监护人、监护人关系、监护人电话 -->
|
||||
|
||||
<!-- 第八行:联系人、联系人关系、联系人电话 -->
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="联系人"
|
||||
prop="linkName"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.linkName"
|
||||
clearable
|
||||
:disabled="isViewMode"
|
||||
placeholder="请输入联系人"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="联系人关系"
|
||||
prop="linkRelationCode"
|
||||
>
|
||||
<el-select
|
||||
v-model="form.linkRelationCode"
|
||||
placeholder="联系人关系"
|
||||
clearable
|
||||
:disabled="isViewMode"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in link_relation_code"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
label="联系人电话"
|
||||
prop="linkTelcom"
|
||||
>
|
||||
<el-input
|
||||
v-model="form.linkTelcom"
|
||||
clearable
|
||||
:disabled="isViewMode"
|
||||
placeholder="请输入联系人电话"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
|
||||
<!-- 第九行:监护人、监护人关系、监护人电话 -->
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-form-item
|
||||
|
||||
Reference in New Issue
Block a user