feat(doctorstation): 优化医生工作站处方列表功能

- 调整诊疗定义表结构,添加序号和服务范围字段
- 修改费用项目查询逻辑,使用INNER JOIN替代LEFT JOIN并优化排序
- 增加批处理批次大小从500到1000,提升查询性能
- 修复处方类型筛选中的诊疗和耗材顺序错误
- 优化处方行数据重置逻辑,避免残留数据问题
- 移除不必要的README标题元素
This commit is contained in:
2026-01-19 11:39:29 +08:00
parent f3eeee7405
commit 7e76083c37
5 changed files with 26 additions and 33 deletions

View File

@@ -1,2 +0,0 @@
<h1 align="center" style="margin: 30px 0 30px; font-weight: bold;">OpenHis v0.0.1</h1>

View File

@@ -1,12 +0,0 @@
-- 为诊疗定义表添加序号和服务范围字段
-- 执行前请先备份数据库
ALTER TABLE wor_activity_definition ADD COLUMN IF NOT EXISTS sort_order INTEGER DEFAULT NULL;
ALTER TABLE wor_activity_definition ADD COLUMN IF NOT EXISTS service_range VARCHAR(50) DEFAULT '全部';
-- 添加注释
COMMENT ON COLUMN wor_activity_definition.sort_order IS '序号';
COMMENT ON COLUMN wor_activity_definition.service_range IS '服务范围';
-- 为现有数据设置默认值
UPDATE wor_activity_definition SET service_range = '全部' WHERE service_range IS NULL;

View File

@@ -191,8 +191,8 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
// 费用定价子表信息 - 使用分批处理避免大量参数问题
List<AdvicePriceDto> childCharge = new ArrayList<>();
if (chargeItemDefinitionIdList != null && !chargeItemDefinitionIdList.isEmpty()) {
// 分批处理,每批最多500个ID
int batchSize = 500;
// 分批处理,每批最多1000个ID,增加批次大小以减少查询次数
int batchSize = 1000;
for (int i = 0; i < chargeItemDefinitionIdList.size(); i += batchSize) {
int endIndex = Math.min(i + batchSize, chargeItemDefinitionIdList.size());
List<Long> batch = chargeItemDefinitionIdList.subList(i, endIndex);

View File

@@ -395,20 +395,18 @@
T1.condition_value,
T1.condition_code,
T1.amount AS price
FROM
adm_charge_item_def_detail AS T1
LEFT JOIN adm_charge_item_definition AS T2 ON T2.ID = T1.definition_id
AND T2.delete_flag = '0'
WHERE
T1.delete_flag = '0'
AND T1.condition_code = #{conditionCode}
FROM adm_charge_item_def_detail AS T1
INNER JOIN adm_charge_item_definition AS T2 ON T2.ID = T1.definition_id
WHERE T1.delete_flag = '0'
AND T2.delete_flag = '0'
AND T1.condition_code = #{conditionCode}
<if test="chargeItemDefinitionIdList != null and !chargeItemDefinitionIdList.isEmpty()">
AND T1.definition_id IN
<foreach collection="chargeItemDefinitionIdList" item="itemId" open="(" separator="," close=")">
#{itemId}
</foreach>
</if>
ORDER BY T1.priority DESC
ORDER BY T1.priority DESC, T1.definition_id
</select>
<select id="getMainCharge" resultType="com.openhis.web.doctorstation.dto.AdvicePriceDto">