Compare commits

..

2 Commits

Author SHA1 Message Date
78152606f6 fix(#739): 请修复 Bug #739: batch enqueue
根因:
- 没有直接匹配。让我扩大搜索范围,可能与排队队列功能相关。

修复:
- This is a critical finding. Let me understand the branch topology and whether the fix needs to be on this branch:
2026-06-14 18:01:16 +08:00
acd55fb726 fix(#654): 请修复 Bug #654: batch enqueue
由 AI Agent (zhugeliang) 自动修复,请查看 diff 确认变更内容。
2026-06-14 17:26:08 +08:00
541 changed files with 6346 additions and 3154 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
# HealthLink-HIS 代码模块索引
> 供 LLM 快速定位代码。每个模块列出 Controller → Service → Mapper 关键文件。
> 最后更新: 2026-06-15 12:00 (300 个 Controller)
> 最后更新: 2026-06-14 18:00 (298 个 Controller)
## 关键词 → 模块速查

View File

@@ -1,32 +0,0 @@
# Bug #644 修复报告
## 基本信息
- **标题**: Bug #644 测试完成,请验收。提出人: chenxj。
- **提出人**: chenxj
- **修复时间**: 00:24:37 ~ 00:32:06
- **修复耗时**: 347.9s
- **Commit**: `bd50c58dd`
- **测试结果**: ❌ FAIL
## 根因分析
## 变更摘要
### 根因分析
**Issue 1 — 状态不同步**`getInpatientAdvicePage` 方法中,执行记录(`exePerformRecordList`)的计算被包裹在 `if (exeStatus != null)` 条件内,只有在"医嘱执行"页签(传 `exeStatus` 参数)时才计算。"已校对"页签不传 `exeStatus`,因此执行记录永远不会被
## 修复文件
.../impl/AdviceProcessAppServiceImpl.java | 89 +++++++++++++++-------
.../dto/InpatientAdviceDto.java | 3 +
## 流程时间线
| 时间 | 智能体 | 事件 | 状态 | 耗时 |
|------|--------|------|------|------|
| 00:24:37 | guanyu | fix_start | ⏳ | 0.0s |
| 00:25:39 | guanyu | fix_retry | ❓ | 0.0s |
| 00:32:06 | guanyu | fix_done | ✅ | 347.9s |
| 00:32:09 | zhugeliang | analyze_done | ✅ | 0.0s |
| 00:32:11 | chenlin | doc_done | ✅ | <1s |
## 全流程
诸葛亮分析 guanyu 修复 张飞测试 华佗验收 陈琳归档

View File

@@ -110,9 +110,9 @@
</dependency>
<!-- JSONå÷ååââ¬Â¦Ã·Ã§Ã±Ã» -->
<!-- JSON工具类 -->
<!-- JSON工具类 -->
<dependency>
<groupId>tools.jackson.core</groupId>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>

View File

@@ -3,7 +3,7 @@ package com.core.common.annotation;
import com.core.common.config.serializer.SensitiveJsonSerializer;
import com.core.common.enums.DesensitizedType;
import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import tools.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View File

@@ -4,13 +4,14 @@ import com.core.common.annotation.Sensitive;
import com.core.common.core.domain.model.LoginUser;
import com.core.common.enums.DesensitizedType;
import com.core.common.utils.SecurityUtils;
import tools.jackson.core.JacksonException;
import tools.jackson.core.JsonGenerator;
import tools.jackson.databind.BeanProperty;
import tools.jackson.databind.DatabindException;
import tools.jackson.databind.ValueSerializer;
import tools.jackson.databind.SerializationContext;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.BeanProperty;
import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import com.fasterxml.jackson.databind.ser.ContextualSerializer;
import java.io.IOException;
import java.util.Objects;
/**
@@ -18,11 +19,11 @@ import java.util.Objects;
*
* @author system
*/
public class SensitiveJsonSerializer extends ValueSerializer<String> {
public class SensitiveJsonSerializer extends JsonSerializer<String> implements ContextualSerializer {
private DesensitizedType desensitizedType;
@Override
public void serialize(String value, JsonGenerator gen, SerializationContext serializers) throws JacksonException {
public void serialize(String value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
if (desensitization()) {
gen.writeString(desensitizedType.desensitizer().apply(value));
} else {
@@ -31,14 +32,14 @@ public class SensitiveJsonSerializer extends ValueSerializer<String> {
}
@Override
public ValueSerializer<?> createContextual(SerializationContext prov, BeanProperty property)
throws DatabindException {
public JsonSerializer<?> createContextual(SerializerProvider prov, BeanProperty property)
throws JsonMappingException {
Sensitive annotation = property.getAnnotation(Sensitive.class);
if (Objects.nonNull(annotation) && Objects.equals(String.class, property.getType().getRawClass())) {
this.desensitizedType = annotation.desensitizedType();
return this;
}
return prov.findPrimaryPropertySerializer(property.getType(), property);
return prov.findValueSerializer(property.getType(), property);
}
/**

View File

@@ -9,8 +9,8 @@ import com.core.common.annotation.Excel.Type;
import com.core.common.annotation.Excels;
import com.core.common.core.domain.BaseEntity;
import com.core.common.xss.Xss;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

View File

@@ -1,9 +1,9 @@
package com.core.common.filter;
import com.fasterxml.jackson.annotation.JsonFilter;
import tools.jackson.databind.ser.FilterProvider;
import tools.jackson.databind.ser.std.SimpleBeanPropertyFilter;
import tools.jackson.databind.ser.std.SimpleFilterProvider;
import com.fasterxml.jackson.databind.ser.FilterProvider;
import com.fasterxml.jackson.databind.ser.impl.SimpleBeanPropertyFilter;
import com.fasterxml.jackson.databind.ser.impl.SimpleFilterProvider;
import org.apache.commons.lang3.ArrayUtils;
import java.util.HashSet;

View File

@@ -1,7 +1,7 @@
package com.core.common.utils;
import tools.jackson.core.type.TypeReference;
import tools.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.core.common.constant.CacheConstants;
import com.core.common.core.domain.entity.SysDictData;
import com.core.common.core.redis.RedisCache;

View File

@@ -1,12 +1,11 @@
package com.core.common.utils;
import tools.jackson.core.JacksonException;
import tools.jackson.core.type.TypeReference;
import tools.jackson.databind.DeserializationFeature;
import tools.jackson.databind.JsonNode;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.SerializationFeature;
import tools.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
/**
* Jackson JSON 工具类
@@ -14,10 +13,12 @@ import tools.jackson.databind.json.JsonMapper;
* @author system
*/
public class JsonUtils {
private static final ObjectMapper MAPPER = JsonMapper.builder()
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS)
.build();
private static final ObjectMapper MAPPER = new ObjectMapper();
static {
MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
MAPPER.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
}
public static ObjectMapper getMapper() {
return MAPPER;
@@ -26,7 +27,7 @@ public class JsonUtils {
public static String toJson(Object obj) {
try {
return MAPPER.writeValueAsString(obj);
} catch (JacksonException e) {
} catch (JsonProcessingException e) {
return "{}";
}
}

View File

@@ -1,8 +1,8 @@
package com.core.common.utils.ip;
import tools.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.core.common.utils.JsonUtils;
import tools.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.JsonNode;
import com.core.common.config.CoreConfig;
import com.core.common.constant.Constants;
import com.core.common.utils.StringUtils;

View File

@@ -34,7 +34,7 @@
<!-- JSON工具类 -->
<dependency>
<groupId>tools.jackson.core</groupId>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>

View File

@@ -1,11 +1,11 @@
package com.core.flowable.service.impl;
import com.core.common.utils.JsonUtils;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.node.ObjectNode;
import tools.jackson.databind.node.ArrayNode;
import tools.jackson.databind.JsonNode;
import tools.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.core.type.TypeReference;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.AjaxResult;
import com.core.common.core.domain.entity.SysRole;

View File

@@ -1,6 +1,6 @@
package com.core.framework.aspectj;
import tools.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.core.common.utils.JsonUtils;
import com.core.common.annotation.Log;
import com.core.common.core.domain.entity.SysUser;

View File

@@ -1,64 +1,51 @@
package com.core.framework.config;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
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.jackson.autoconfigure.JsonMapperBuilderCustomizer;
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 tools.jackson.core.JacksonException;
import tools.jackson.core.JsonParser;
import tools.jackson.core.JsonGenerator;
import tools.jackson.databind.DeserializationContext;
import tools.jackson.databind.SerializationContext;
import tools.jackson.databind.ValueDeserializer;
import tools.jackson.databind.ValueSerializer;
import tools.jackson.databind.module.SimpleModule;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.TimeZone;
@Configuration
@EnableAspectJAutoProxy(exposeProxy = true)
@MapperScan({"com.core.**.mapper", "com.healthlink.his.**.mapper"})
public class ApplicationConfig {
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
private static final DateTimeFormatter ISO_FORMATTER = DateTimeFormatter.ISO_LOCAL_DATE_TIME;
private static final DateTimeFormatter SLASH_FORMATTER = DateTimeFormatter.ofPattern("yyyy/M/d HH:mm:ss");
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");
private static final ValueDeserializer<LocalDateTime> LOCAL_DATE_TIME_DESERIALIZER =
new ValueDeserializer<LocalDateTime>() {
@Override
public LocalDateTime deserialize(JsonParser p, DeserializationContext context) throws JacksonException {
String text = p.getText();
if (text == null || text.isEmpty()) return null;
String cleaned = text.replaceAll("[Zz]$", "").replaceAll("[+-]\\d{2}:?\\d{2}$", "");
try { return LocalDateTime.parse(cleaned, ISO_FORMATTER); } catch (Exception ignored) {}
try { return LocalDateTime.parse(cleaned, FORMATTER); } catch (Exception ignored) {}
return LocalDateTime.parse(cleaned, SLASH_FORMATTER);
}
};
private static final ValueSerializer<LocalDateTime> LOCAL_DATE_TIME_SERIALIZER =
new ValueSerializer<LocalDateTime>() {
@Override
public void serialize(LocalDateTime value, JsonGenerator gen, SerializationContext ctx) throws JacksonException {
gen.writeString(value.format(FORMATTER));
}
@Override
public Class<LocalDateTime> handledType() {
return LocalDateTime.class;
}
};
@Override
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}$", "");
try { return LocalDateTime.parse(cleaned, ISO_FORMATTER); } catch (Exception ignored) {}
try { return LocalDateTime.parse(cleaned, SIMPLE_FORMATTER); } catch (Exception ignored) {}
return LocalDateTime.parse(cleaned, SLASH_FORMATTER);
}
};
@Bean
public JsonMapperBuilderCustomizer jacksonObjectMapperCustomization() {
public Jackson2ObjectMapperBuilderCustomizer jacksonObjectMapperCustomization() {
return builder -> {
SimpleModule module = new SimpleModule("HealthLinkLocalDateTime");
module.addDeserializer(LocalDateTime.class, LOCAL_DATE_TIME_DESERIALIZER);
module.addSerializer(LocalDateTime.class, LOCAL_DATE_TIME_SERIALIZER);
builder.addModule(module);
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")));
};
}
}

View File

@@ -1,10 +1,7 @@
package com.core.framework.config;
import tools.jackson.databind.DefaultTyping;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.jsontype.BasicPolymorphicTypeValidator;
import tools.jackson.databind.jsontype.PolymorphicTypeValidator;
import tools.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import org.slf4j.Logger;
@@ -13,17 +10,16 @@ import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.SerializationException;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.LinkedHashMap;
/**
* Redis序列化器 - 兼容fastjson2旧格式Jackson 3 迁移版)
* Redis序列化器 - 兼容fastjson2旧格式
*
* @author system
*/
public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T> {
private static final Logger log = LoggerFactory.getLogger(FastJson2JsonRedisSerializer.class);
public static final Charset DEFAULT_CHARSET = StandardCharsets.UTF_8;
public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
/** 新格式: 带类型信息 (activateDefaultTyping) */
private final ObjectMapper typedMapper;
@@ -35,21 +31,16 @@ public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T> {
super();
this.clazz = clazz;
// Jackson 3: 用 BasicPolymorphicTypeValidator 替代 LaissezFaireSubTypeValidator
PolymorphicTypeValidator ptv = BasicPolymorphicTypeValidator.builder()
.allowIfBaseType(Object.class)
.build();
// 新格式 ObjectMapper (带类型信息)
this.typedMapper = JsonMapper.builder()
.changeDefaultVisibility(vc -> vc.withVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY))
.activateDefaultTyping(ptv, DefaultTyping.NON_FINAL)
.build();
this.typedMapper = new ObjectMapper();
this.typedMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
this.typedMapper.activateDefaultTyping(
LaissezFaireSubTypeValidator.instance,
ObjectMapper.DefaultTyping.NON_FINAL);
// 旧格式 ObjectMapper (不带类型信息)
this.plainMapper = JsonMapper.builder()
.changeDefaultVisibility(vc -> vc.withVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY))
.build();
this.plainMapper = new ObjectMapper();
this.plainMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
}
@Override
@@ -84,4 +75,4 @@ public class FastJson2JsonRedisSerializer<T> implements RedisSerializer<T> {
return null;
}
}
}
}

View File

@@ -2,10 +2,8 @@ package com.core.framework.config;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import tools.jackson.databind.DeserializationFeature;
import tools.jackson.databind.JsonNode;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.redis.serializer.RedisSerializer;
@@ -14,7 +12,7 @@ import org.springframework.data.redis.serializer.SerializationException;
import java.nio.charset.StandardCharsets;
/**
* Jackson Redis序列化器 - 兼容fastjson旧格式Jackson 3 迁移版)
* Jackson Redis序列化器 - 兼容fastjson旧格式
*
* 新数据: 纯JSON (无类型包装),调用方用 convertValue 转换
* 旧fastjson: 去除L后缀后按JSON解析
@@ -32,10 +30,10 @@ public class FastjsonCompatibleRedisSerializer implements RedisSerializer<Object
}
private static ObjectMapper createMapper() {
return JsonMapper.builder()
.changeDefaultVisibility(vc -> vc.withVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY))
.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.build();
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return mapper;
}
/** 获取共享ObjectMapper供 DictUtils / TokenService 等做 convertValue */
@@ -66,7 +64,7 @@ public class FastjsonCompatibleRedisSerializer implements RedisSerializer<Object
try {
// 处理旧Jackson activateDefaultTyping格式: ["className", {data}]
if (cleaned.startsWith("[\"") && cleaned.length() > 10) {
JsonNode node = objectMapper.readTree(cleaned);
com.fasterxml.jackson.databind.JsonNode node = objectMapper.readTree(cleaned);
if (node.isArray() && node.size() >= 2 && node.get(0).isTextual()) {
// 取data部分第2个元素忽略className
return objectMapper.treeToValue(node.get(1), Object.class);
@@ -78,4 +76,4 @@ public class FastjsonCompatibleRedisSerializer implements RedisSerializer<Object
return null;
}
}
}
}

View File

@@ -1,6 +1,6 @@
package com.core.framework.interceptor;
import tools.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.core.common.utils.JsonUtils;
import com.core.common.annotation.RepeatSubmit;
import com.core.common.core.domain.AjaxResult;

View File

@@ -1,6 +1,6 @@
package com.core.framework.interceptor.impl;
import tools.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.core.common.utils.JsonUtils;
import com.core.common.annotation.RepeatSubmit;
import com.core.common.constant.CacheConstants;

View File

@@ -1,6 +1,6 @@
package com.core.framework.security.handle;
import tools.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.core.common.utils.JsonUtils;
import com.core.common.constant.HttpStatus;
import com.core.common.core.domain.AjaxResult;

View File

@@ -1,6 +1,6 @@
package com.core.framework.security.handle;
import tools.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.core.common.utils.JsonUtils;
import com.core.common.constant.Constants;
import com.core.common.core.domain.AjaxResult;

View File

@@ -71,19 +71,17 @@ public class TokenService {
if (cached instanceof java.util.List<?> list && list.size() >= 2 && list.get(0) instanceof String) {
Object data = list.get(1);
if (data instanceof java.util.Map) {
tools.jackson.databind.ObjectMapper mapper =
tools.jackson.databind.json.JsonMapper.builder()
.disable(tools.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.build();
com.fasterxml.jackson.databind.ObjectMapper mapper =
new com.fasterxml.jackson.databind.ObjectMapper();
mapper.configure(com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return mapper.convertValue(data, LoginUser.class);
}
}
// 兼容纯JSON格式: LinkedHashMap -> LoginUser
if (cached instanceof java.util.Map) {
tools.jackson.databind.ObjectMapper mapper =
tools.jackson.databind.json.JsonMapper.builder()
.disable(tools.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)
.build();
com.fasterxml.jackson.databind.ObjectMapper mapper =
new com.fasterxml.jackson.databind.ObjectMapper();
mapper.configure(com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return mapper.convertValue(cached, LoginUser.class);
}
return null;

View File

@@ -61,7 +61,7 @@
<!-- JSON工具类 -->
<dependency>
<groupId>tools.jackson.core</groupId>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>

View File

@@ -1,8 +1,8 @@
package com.core.generator.service;
import tools.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.core.common.utils.JsonUtils;
import tools.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.JsonNode;
import com.core.common.constant.Constants;
import com.core.common.constant.GenConstants;
import com.core.common.core.text.CharsetKit;

View File

@@ -1,8 +1,8 @@
package com.core.generator.util;
import tools.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.core.common.utils.JsonUtils;
import tools.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.JsonNode;
import com.core.common.constant.GenConstants;
import com.core.common.utils.DateUtils;
import com.core.common.utils.StringUtils;

View File

@@ -1,8 +1,8 @@
package com.core.system.domain;
import com.core.common.core.domain.BaseEntity;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
/**
* 公告/通知已读记录 sys_notice_read

View File

@@ -1,6 +1,6 @@
# Web Layer - API Controllers
**Module**: `healthlink-his-application/web`
**Module**: `openhis-application/web`
**Role**: API endpoint layer - all REST controllers for frontend communication
## OVERVIEW

View File

@@ -1,37 +0,0 @@
package com.healthlink.his.web.Inspection.controller;
import com.core.common.core.domain.R;
import com.healthlink.his.web.Inspection.appservice.ILaboratoryManageAppService;
import com.healthlink.his.web.Inspection.dto.ReportResultManageDto;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import jakarta.servlet.http.HttpServletRequest;
/**
* 前端 lisPascResult 页面 API 兼容映射
* 前端调用 /clinical-manage/laboratory/* 和 /clinical-manage/observation/*
* 路由到已有的 /inspection/* 服务
*/
@RestController
@Slf4j
@AllArgsConstructor
@RequestMapping("/clinical-manage/laboratory")
public class ClinicalManageLaboratoryController {
private final ILaboratoryManageAppService appService;
@GetMapping("/result-page")
public R<?> getResultPage(ReportResultManageDto dto,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey,
HttpServletRequest request) {
return appService.getReportResultList(dto, pageNo, pageSize, searchKey, request);
}
@GetMapping("/result-detail/{id}")
public R<?> getResultDetail(@PathVariable Long id) {
return appService.getReportById(id);
}
}

View File

@@ -1,30 +0,0 @@
package com.healthlink.his.web.Inspection.controller;
import com.core.common.core.domain.R;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.Collections;
/**
* 前端 lisPascResult 检查结果 API 兼容映射
* 后端暂无检查结果独立服务,返回空列表避免前端报错
* TODO: 接入检查报告数据源后替换实现
*/
@RestController
@Slf4j
@AllArgsConstructor
@RequestMapping("/clinical-manage/observation")
public class ClinicalManageObservationController {
@GetMapping("/result-page")
public R<?> getResultPage(@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
// 暂时返回空列表,前端可正常渲染
return R.ok(new java.util.HashMap<String, Object>() {{
put("records", Collections.emptyList());
put("total", 0);
}});
}
}

View File

@@ -1,8 +1,8 @@
package com.healthlink.his.web.Inspection.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.Inspection.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.lab.domain.ActivityDefDeviceDef;
import com.healthlink.his.lab.domain.ActivityDefObservationDef;
import com.healthlink.his.lab.domain.ActivityDefSpecimenDef;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.Inspection.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,8 +1,8 @@
package com.healthlink.his.web.Inspection.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
/**

View File

@@ -1,8 +1,8 @@
package com.healthlink.his.web.Inspection.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.util.Date;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.Inspection.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.adjustprice.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.math.BigDecimal;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.appointmentmanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

View File

@@ -3,8 +3,8 @@
*/
package com.healthlink.his.web.basedatamanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -3,8 +3,8 @@
*/
package com.healthlink.his.web.basedatamanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -3,8 +3,8 @@
*/
package com.healthlink.his.web.basedatamanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.basedatamanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -3,8 +3,8 @@
*/
package com.healthlink.his.web.basedatamanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -3,8 +3,8 @@
*/
package com.healthlink.his.web.basedatamanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -4,8 +4,8 @@
package com.healthlink.his.web.basedatamanage.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -3,8 +3,8 @@
*/
package com.healthlink.his.web.basedatamanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.basedatamanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -3,8 +3,8 @@
*/
package com.healthlink.his.web.basedatamanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.basedatamanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -3,8 +3,8 @@
*/
package com.healthlink.his.web.basedatamanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.basedatamanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.basicservice.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -4,8 +4,8 @@
package com.healthlink.his.web.cardmanagement.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.time.LocalDate;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.chargemanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.constant.CommonConstants;
import com.healthlink.his.common.enums.AccountBillingStatus;
import com.healthlink.his.common.enums.AccountStatus;

View File

@@ -1,8 +1,8 @@
package com.healthlink.his.web.chargemanage.dto;
import com.core.common.utils.SecurityUtils;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.constant.CommonConstants;
import com.healthlink.his.common.enums.ChargeItemContext;
import com.healthlink.his.common.enums.ChargeItemStatus;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.chargemanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.chargemanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.chargemanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.enums.*;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.chargemanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.enums.EncounterActivityStatus;
import com.healthlink.his.common.enums.LocationForm;
import lombok.Data;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.chargemanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.enums.ParticipantType;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -4,8 +4,8 @@
package com.healthlink.his.web.chargemanage.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

View File

@@ -5,8 +5,8 @@ package com.healthlink.his.web.chargemanage.dto;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -3,8 +3,8 @@
*/
package com.healthlink.his.web.chargemanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -4,8 +4,8 @@
package com.healthlink.his.web.chargemanage.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import com.healthlink.his.yb.dto.PaymentDetailDto;
import lombok.Data;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.chargemanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.chargemanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.chargemanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.chargemanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.chargemanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -4,8 +4,8 @@
package com.healthlink.his.web.chargemanage.dto;
import com.core.common.utils.SecurityUtils;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.enums.EncounterClass;
import com.healthlink.his.common.enums.RequestStatus;
import com.healthlink.his.common.enums.TherapyTimeType;

View File

@@ -3,8 +3,8 @@
*/
package com.healthlink.his.web.chargemanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.chargemanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -12,10 +12,6 @@ import com.healthlink.his.administration.domain.Account;
import com.healthlink.his.administration.domain.ChargeItem;
import com.healthlink.his.administration.service.IAccountService;
import com.healthlink.his.administration.service.IChargeItemService;
import com.healthlink.his.check.domain.CheckMethod;
import com.healthlink.his.check.domain.CheckPackage;
import com.healthlink.his.check.service.ICheckMethodService;
import com.healthlink.his.check.service.ICheckPackageService;
import com.healthlink.his.check.domain.ExamApply;
import com.healthlink.his.check.domain.ExamApplyItem;
import com.healthlink.his.check.service.IExamApplyItemService;
@@ -75,12 +71,6 @@ public class ExamApplyController extends BaseController {
@Autowired
private IOrganizationService organizationService;
@Autowired
private ICheckMethodService checkMethodService;
@Autowired
private ICheckPackageService checkPackageService;
/**
* 查询检查申请单列表
*/
@@ -122,9 +112,9 @@ public class ExamApplyController extends BaseController {
BigDecimal totalAmount = BigDecimal.ZERO;
for (ExamApplyItem item : items) {
BigDecimal itemTotal = item.getItemFee() != null ? item.getItemFee() : BigDecimal.ZERO;
BigDecimal methodFee = getMethodAdditionalFee(item.getExamMethodCode(), item.getBodyPartCode());
totalAmount = totalAmount.add(itemTotal.add(methodFee));
if (item.getItemFee() != null) {
totalAmount = totalAmount.add(item.getItemFee());
}
}
apply.setTotalAmount(totalAmount);
@@ -179,9 +169,6 @@ public class ExamApplyController extends BaseController {
examApply.setApplyTime(LocalDateTime.now());
examApply.setCreateTime(new Date());
examApply.setApplyStatus(0); // 0=已开单
if (examApply.getIsCharged() == null) examApply.setIsCharged(0);
if (examApply.getIsRefunded() == null) examApply.setIsRefunded(0);
if (examApply.getIsExecuted() == null) examApply.setIsExecuted(0);
// 操作员工号取当前登录用户
try {
@@ -317,12 +304,10 @@ public class ExamApplyController extends BaseController {
chargeItem.setProductId(0L); // 产品ID
// 金额:单价和总价取检查项目费用
BigDecimal baseFee = itemDto.getItemFee() != null ? itemDto.getItemFee() : BigDecimal.ZERO;
BigDecimal methodFee = getMethodAdditionalFee(itemDto.getExamMethodCode(), itemDto.getBodyPartCode());
BigDecimal fee = baseFee.add(methodFee);
BigDecimal fee = itemDto.getItemFee() != null ? itemDto.getItemFee() : BigDecimal.ZERO;
chargeItem.setQuantityValue(BigDecimal.ONE); // 数量
chargeItem.setQuantityUnit(""); // 单位
chargeItem.setUnitPrice(fee); // 单价 = 项目费 + 检查方法附加金额
chargeItem.setUnitPrice(fee); // 单价
chargeItem.setTotalPrice(fee); // 总价 = 单价 × 1
// 租户和审计字段
@@ -505,9 +490,7 @@ public class ExamApplyController extends BaseController {
chargeItem.setProductTable(CommonConstants.TableName.WOR_ACTIVITY_DEFINITION);
chargeItem.setProductId(0L);
BigDecimal baseFee = itemDto.getItemFee() != null ? itemDto.getItemFee() : BigDecimal.ZERO;
BigDecimal methodFee = getMethodAdditionalFee(itemDto.getExamMethodCode(), itemDto.getBodyPartCode());
BigDecimal fee = baseFee.add(methodFee);
BigDecimal fee = itemDto.getItemFee() != null ? itemDto.getItemFee() : BigDecimal.ZERO;
chargeItem.setQuantityValue(BigDecimal.ONE);
chargeItem.setQuantityUnit("");
chargeItem.setUnitPrice(fee);
@@ -565,38 +548,4 @@ public class ExamApplyController extends BaseController {
return AjaxResult.success("删除/作废成功");
}
/**
* Bug #655: 根据检查方法代码查询附加金额(套餐价格)
* 查找链路examMethodCode → CheckMethod → packageName → CheckPackage → packagePrice
*/
private BigDecimal getMethodAdditionalFee(String examMethodCode, String checkType) {
if (examMethodCode == null || examMethodCode.isEmpty()) {
return BigDecimal.ZERO;
}
// 1. 根据 code 和 checkType 查找 CheckMethod
LambdaQueryWrapper<CheckMethod> wrapper = new LambdaQueryWrapper<CheckMethod>()
.eq(CheckMethod::getCode, examMethodCode);
if (checkType != null && !checkType.isEmpty()) {
wrapper.eq(CheckMethod::getCheckType, checkType);
}
CheckMethod method = checkMethodService.getOne(wrapper.last("LIMIT 1"));
if (method == null || method.getPackageName() == null || method.getPackageName().isEmpty()) {
return BigDecimal.ZERO;
}
// 2. 根据 packageName 查找 CheckPackage未停用的
CheckPackage pkg = checkPackageService.getOne(
new LambdaQueryWrapper<CheckPackage>()
.eq(CheckPackage::getPackageName, method.getPackageName())
.eq(CheckPackage::getIsDisabled, 0)
.last("LIMIT 1"));
if (pkg == null || pkg.getPackagePrice() == null || pkg.getPackagePrice().compareTo(BigDecimal.ZERO) <= 0) {
return BigDecimal.ZERO;
}
// 3. 仅当套餐价格启用时才累加
if (pkg.getPackagePriceEnabled() != null && pkg.getPackagePriceEnabled() == 1) {
return pkg.getPackagePrice();
}
return BigDecimal.ZERO;
}
}

View File

@@ -1,132 +1,57 @@
package com.healthlink.his.web.check.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.healthlink.his.check.domain.*;
import com.healthlink.his.check.service.*;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import lombok.AllArgsConstructor;import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
@RestController
@RequestMapping("/radiology-image")
@Slf4j
@AllArgsConstructor
import org.springframework.util.StringUtils;import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController @RequestMapping("/radiology-image") @Slf4j @AllArgsConstructor
public class RadiologyImageController {
private final IRadiologyImageService imageService;
private final IRadiologyImageReportService reportService;
private final IDicomPrintRecordService printService;
// ==================== 图像管理 ====================
/** 图像列表 */
// 图像列表
@GetMapping("/list")
@PreAuthorize("@ss.hasPermi('check:radiologyImage:list')")
public R<?> getImageList(@RequestParam("applyId") Long applyId) {
LambdaQueryWrapper<RadiologyImage> w = new LambdaQueryWrapper<>();
w.eq(RadiologyImage::getApplyId, applyId)
.orderByAsc(RadiologyImage::getInstanceNumber);
w.eq(RadiologyImage::getApplyId, applyId).orderByAsc(RadiologyImage::getInstanceNumber);
return R.ok(imageService.list(w));
}
/** 上传影像图像 */
@PostMapping("/upload")
@PreAuthorize("@ss.hasPermi('check:radiologyImage:add')")
@Transactional(rollbackFor = Exception.class)
public R<?> uploadImage(@RequestBody RadiologyImage img) {
img.setCreateTime(new Date());
imageService.save(img);
return R.ok(img);
}
// ==================== 图文报告 ====================
/** 报告分页查询 */
@PostMapping("/upload") @Transactional(rollbackFor=Exception.class)
public R<?> uploadImage(@RequestBody RadiologyImage img) { img.setCreateTime(new Date()); imageService.save(img); return R.ok(img); }
// 图文报告
@GetMapping("/report/page")
@PreAuthorize("@ss.hasPermi('check:radiologyImage:report:list')")
public R<?> getReportPage(
@RequestParam(value = "status", required = false) String status,
@RequestParam(value = "patientName", required = false) String patientName,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) {
public R<?> getReportPage(@RequestParam(value="status",required=false) String status,
@RequestParam(value="patientName",required=false) String patientName,
@RequestParam(value="pageNo",defaultValue="1") Integer pageNo,
@RequestParam(value="pageSize",defaultValue="20") Integer pageSize) {
LambdaQueryWrapper<RadiologyImageReport> w = new LambdaQueryWrapper<>();
w.eq(StringUtils.hasText(status), RadiologyImageReport::getStatus, status)
.like(StringUtils.hasText(patientName), RadiologyImageReport::getPatientName, patientName)
.orderByDesc(RadiologyImageReport::getCreateTime);
return R.ok(reportService.page(new Page<>(pageNo, pageSize), w));
}
/** 新建报告(草稿) */
@PostMapping("/report/add")
@PreAuthorize("@ss.hasPermi('check:radiologyImage:report:add')")
@Transactional(rollbackFor = Exception.class)
public R<?> addReport(@RequestBody RadiologyImageReport r) {
r.setStatus("DRAFT");
r.setCreateTime(new Date());
reportService.save(r);
return R.ok(r);
}
/** 提交报告 */
@PutMapping("/report/submit/{id}")
@PreAuthorize("@ss.hasPermi('check:radiologyImage:report:edit')")
@Transactional(rollbackFor = Exception.class)
@PostMapping("/report/add") @Transactional(rollbackFor=Exception.class)
public R<?> addReport(@RequestBody RadiologyImageReport r) { r.setStatus("DRAFT"); r.setCreateTime(new Date()); reportService.save(r); return R.ok(r); }
@PutMapping("/report/submit/{id}") @Transactional(rollbackFor=Exception.class)
public R<?> submitReport(@PathVariable Long id) {
RadiologyImageReport r = reportService.getById(id);
if (r == null) {
return R.fail("报告不存在");
}
r.setStatus("REPORTED");
r.setReportTime(new Date());
reportService.updateById(r);
return R.ok();
RadiologyImageReport r = reportService.getById(id); if (r == null) return R.fail("报告不存在");
r.setStatus("REPORTED"); r.setReportTime(new Date()); reportService.updateById(r); return R.ok();
}
/** 审核报告 */
@PutMapping("/report/verify/{id}")
@PreAuthorize("@ss.hasPermi('check:radiologyImage:report:edit')")
@Transactional(rollbackFor = Exception.class)
public R<?> verifyReport(@PathVariable Long id,
@RequestParam("doctor") String doctor) {
RadiologyImageReport r = reportService.getById(id);
if (r == null) {
return R.fail("报告不存在");
}
r.setStatus("VERIFIED");
r.setVerifyDoctor(doctor);
r.setVerifyTime(new Date());
reportService.updateById(r);
return R.ok();
@PutMapping("/report/verify/{id}") @Transactional(rollbackFor=Exception.class)
public R<?> verifyReport(@PathVariable Long id, @RequestParam("doctor") String doctor) {
RadiologyImageReport r = reportService.getById(id); if (r == null) return R.fail("报告不存在");
r.setStatus("VERIFIED"); r.setVerifyDoctor(doctor); r.setVerifyTime(new Date()); reportService.updateById(r); return R.ok();
}
// ==================== DICOM打印 ====================
/** DICOM打印记录 */
@PostMapping("/print")
@PreAuthorize("@ss.hasPermi('check:radiologyImage:print:add')")
@Transactional(rollbackFor = Exception.class)
public R<?> printDicom(@RequestBody DicomPrintRecord p) {
p.setPrintTime(new Date());
p.setCreateTime(new Date());
printService.save(p);
return R.ok(p);
}
/** 打印记录分页 */
// DICOM打印
@PostMapping("/print") @Transactional(rollbackFor=Exception.class)
public R<?> printDicom(@RequestBody DicomPrintRecord p) { p.setPrintTime(new Date()); p.setCreateTime(new Date()); printService.save(p); return R.ok(p); }
@GetMapping("/print/page")
@PreAuthorize("@ss.hasPermi('check:radiologyImage:print:list')")
public R<?> getPrintPage(
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "20") Integer pageSize) {
LambdaQueryWrapper<DicomPrintRecord> w = new LambdaQueryWrapper<>();
w.orderByDesc(DicomPrintRecord::getPrintTime);
return R.ok(printService.page(new Page<>(pageNo, pageSize), w));
public R<?> getPrintPage(@RequestParam(value="pageNo",defaultValue="1") Integer pageNo,
@RequestParam(value="pageSize",defaultValue="20") Integer pageSize) {
return R.ok(printService.page(new Page<>(pageNo, pageSize), new LambdaQueryWrapper<DicomPrintRecord>().orderByDesc(DicomPrintRecord::getPrintTime)));
}
}

View File

@@ -9,7 +9,7 @@ import com.core.common.core.domain.entity.SysUser;
import com.core.common.utils.MessageUtils;
import com.core.common.utils.SecurityUtils;
import com.core.system.service.ISysUserService;
import tools.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.core.common.utils.JsonUtils;
import com.healthlink.his.administration.domain.ChargeItem;
import com.healthlink.his.administration.domain.Encounter;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.clinicalmanage.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;

View File

@@ -3,8 +3,8 @@
*/
package com.healthlink.his.web.common.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -3,8 +3,8 @@
*/
package com.healthlink.his.web.common.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.common.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -3,8 +3,8 @@
*/
package com.healthlink.his.web.common.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -3,8 +3,8 @@
*/
package com.healthlink.his.web.common.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -4,8 +4,8 @@
package com.healthlink.his.web.common.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -3,8 +3,8 @@
*/
package com.healthlink.his.web.common.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.consultation.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;

View File

@@ -1,8 +1,8 @@
package com.healthlink.his.web.consultation.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.consultation.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.consultation.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.consultation.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import java.io.Serializable;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.datadictionary.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.datadictionary.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.datadictionary.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.datadictionary.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.datadictionary.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,8 +1,8 @@
package com.healthlink.his.web.datadictionary.dto;
import com.fasterxml.jackson.annotation.JsonAlias;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.datadictionary.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.healthlink.his.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;

View File

@@ -1,7 +1,7 @@
package com.healthlink.his.web.datadictionary.dto;
import tools.jackson.databind.annotation.JsonSerialize;
import tools.jackson.databind.ser.std.ToStringSerializer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;

Some files were not shown because too many files have changed in this diff Show More