From d601aa2ef77d09fb611ac68d96a70172bbdffb7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=8E=E4=BD=97?= Date: Sun, 14 Jun 2026 20:31:03 +0800 Subject: [PATCH] =?UTF-8?q?fix(#742):=20=E8=AF=B7=E4=BF=AE=E5=A4=8D=20Bug?= =?UTF-8?q?=20#742=EF=BC=9A=E6=94=B6=E8=B4=B9=E5=B7=A5=E4=BD=9C=E7=AB=99?= =?UTF-8?q?=E4=BD=8F=E9=99=A2=E7=99=BB=E8=AE=B0=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因: - · XML 与 Mapper - · Java 接口 - · 参数不匹配。 - · 具体来说,Mapper - · XML 中新增了 - · `#{startTime}` - · 、`#{endTime - · }`、`#{ - · organizationId}` 的 - · 条件 - · ,但 Mapper Java - · 接口未 - · 同步更新,导致 - · 参数不匹配。 - · 涉及文件 - · : - · `InHospitalRegister - · AppMapper.xml` - · ( - · 已经 - · 新增 - · 了参数 - · 引用 - · ) - · `InHospitalRegister - · AppMapper.java` - · (需要 - · 添加 - · 对应的 - · Param 注解) - · 3. ` - · InHospitalRegisterApp - · ServiceImpl.java`( - · 调用 Mapper - · 时参数顺序与 - · Mapper - · 签名不匹配 - · ) - · 但是,根据报告 - · 中的 - · 时间线,在 - · Jun - · 11 - · 17:3 - · 0 (commit ` - · babd8d - · 0c0`) - · Mapper XML与 - · Mapper Java - · 接口参数不匹配 - · 。具体 - · 是 - · Mapper XML中新增 - · 了#{ - · startTime} - · 、#{endTime} - · 、#{organizationId - · }的条件, - · 但Mapper Java接口 - · 未同步更新。 - · 检查 - · Mapper - · Java - · 接口: - · 我们 - · 看到在 - · `get - · InHospitalRegisterInfo - · `方法中, - · 已经包含了` - · @Param("startTime - · ")` - · 、`@Param - · ("endTime")` - · 、`@Param - · ("organizationId") - · `参数。 - · 参数 - · 顺序为 - · :page, encounter - · Class, encounterStatus - · , registeredFlag, - · formEnum, startTime - · , endTime, organization - · Id, queryWrapper - · 。 - 检查Mapper XML - · :在` - SELECT ihri.tenant_id, - ihri.encounter_id, - ihri.amb_encounter_id, - ihri.patient_id, - ihri.request_time, - ihri.registrar, - ihri.source_name, - ihri.patient_name, - ihri.gender_enum, - ihri.birth_date, - ihri.ward_name, - ihri.contract_no, - ihri.bus_no, - ihri.admit_source_code, - ihri.status_enum, - ihri.id_card, - ihri.organization_name - from (SELECT ae.tenant_id, - ae.ID AS encounter_id, - ae.amb_encounter_id AS amb_encounter_id, - ae.patient_id AS patient_id, - ae.create_time AS request_time, - aper.NAME AS registrar, - ao.NAME AS source_name, - ap.NAME AS patient_name, - ap.gender_enum AS gender_enum, - ap.birth_date AS birth_date, - al.NAME AS ward_name, - aa.contract_no, - ae.bus_no, - ae.admit_source_code, - ae.status_enum, - ap.id_card AS id_card, - ao_zy.NAME AS organization_name - FROM adm_encounter AS ae - LEFT JOIN adm_organization AS ao_zy ON ao_zy.ID = ae.organization_id - AND ao_zy.delete_flag = '0' - LEFT JOIN adm_encounter AS ambae ON ae.amb_encounter_id = ambae. - LEFT JOIN adm_organization AS ao ON ao.ID = ambae.organization_id - AND ao.delete_flag = '0' - LEFT JOIN adm_patient AS ap ON ap.ID = ae.patient_id - AND ap.delete_flag = '0' - LEFT JOIN adm_encounter_location AS ael ON ael.encounter_id = ae.ID - AND ael.delete_flag = '0' - AND ael.form_enum = #{formEnum} - LEFT JOIN adm_location AS al ON al.ID = ael.location_id - AND al.delete_flag = '0' - LEFT JOIN adm_practitioner AS aper ON aper.ID = ae.registrar_id - AND aper.delete_flag = '0' - LEFT JOIN adm_account AS aa ON aa.encounter_id = ae.ID - AND aa.delete_flag = '0' - AND aa.type_code = '04' - WHERE ae.delete_flag = '0' - AND ae.class_enum = #{encounterClass} - - AND ae.create_time >= #{startTime} - - AND ae.create_time <= #{endTime} - - AND ae.organization_id = #{organizationId} - - AND ae.status_enum = #{encounterStatus} - - · `,这里 - · 引用了`#{ - · encounterStatus}` - · 。 - · 在Mapper Java接口 - · 中,参数 - · 名为`encounter - · Status`,且 - · 在 - · App - · Service调 - · 用时传递了 - · `encounterStatus - · `参数 - · 。这也 - · 匹配。 - 所以, - · 参数 - · 匹配 - · 方面 - · 没有问题。 - · 那么,Bug # - · 742可能 - · 还有 - · 其他原因? - · 或者 - · 我们遗漏 - · 了什么? - · 根据 - · 分析报告,还 - · 提到了App - · Service调 - · 用Mapper - · 时参数顺序与 - · Mapper签名不匹配 - · 。但我们 - · 看到顺序 - · 是一 - · 致的。 - 也许 - · 在 - · 某个 - · 时刻 - · ,代码 - · 已经被 - · ? - · 但Bug - · #742 - · 仍然被 - · 报告, - · 可能意味着 - · 不完全 - · 或者有其他问题 - · 。 - 我们需要 - · 运行 - · 编译验证 - · , - · 看看是否有编 - · 译错误。按照 - · 铁律1, - · 修改后必须测试 - · 。我们可以 - · 运行 - · n compile来 - · 验证。 - · 首先,我们检查 - · 一下 - · 是否有其他相关文件 - · 可能存在问题 - · , - · 比如Controller - · ? - · Bug - · #742 - · 是“收费工作站 - · 住院登记数据库报 - · 错”,所以 - · 可能是 - · Controller - · 层 - · 调 - · 用Service - · 时参数传递 - · 错误 - · ? - · 或者 - · Service层调 - · 用Mapper时参数 - · 传递错误? - · 但我们 - · 已经检查 - · 了Service调 - · 用Mapper的部分 - · , - · 参数匹配。 - 让我们 - · 查看 - · Controller层 - · ,看看是否有相关的 - · Controller - · 。搜索In - · HospitalRegister相关的 - · Controller。 - ⏵ file_search {"pattern":"InHospitalRegister","path":"healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalcharge/controller"} - healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalcharge/controller/InHospitalRegisterController.java - · 读 - · 取Controller文件。 - ⏵ read_file {"path":"healthlink-his-server/healthlink-his-application/src/main/java/com/healthlink/his/web/inhospitalcharge/controller/InHospitalRegisterController.java"} - Copyright ©2023 CJB-CNIT Team. All rights reserved - package com.healthlink.his.web.inhospitalcharge.controller; - import com.core.common.core.domain.R; - import com.healthlink.his.web.inhospitalcharge.appservice.IInHospitalRegisterAppService; - import com.healthlink.his.web.inhospitalcharge.dto.*; - import lombok.AllArgsConstructor; - import lombok.extern.slf4j.Slf4j; - import org.springframework.web.bind.annotation.*; - import java.util.Date; - import jakarta.servlet.http.HttpServletRequest; - 住院登记 controller - @RestController - @RequestMapping("/inhospital-charge/register") - @Slf4j - @AllArgsConstructor - public class InHospitalRegisterController { - private final IInHospitalRegisterAppService iInHospitalRegisterAppService; - 门诊医生开住院申请 - @param inHospitalRegisterDto 住院登记参数 - @return 结果 - @PostMapping(value = "/by-doctor") - public R registerByDoctor(@RequestBody InHospitalRegisterDto inHospitalRegisterDto) { - return iInHospitalRegisterAppService.registerByDoctor(inHospitalRegisterDto); - 是否登记 - @param encounterId 病历ID - @return true/false - @GetMapping(value = "/isRegister") - public R isRegister(@RequestParam(value = "encounterId") Long encounterId) { - return iInHospitalRegisterAppService.isRegister(encounterId); - 查询住院登记信息 - @param inHospitalRegisterQueryDto 查询dto - @param searchKey 模糊查询关键字 - @param registeredFlag 已登记标识,已登记传 1 ,待登记传 0 - @param pageNo 当前页 - @param pageSize 每页多少条 - @param startTime 开始时间 - @param endTime 结束时间 - @param organizationId 入院科室ID - @param request 请求 - @return 住院登记信息 - @GetMapping(value = "/register-info") - public R getRegisterInfo(InHospitalRegisterQueryDto inHospitalRegisterQueryDto, - @RequestParam(value = "searchKey", defaultValue = "") String searchKey, - @RequestParam(value = "registeredFlag") String registeredFlag, - @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, - @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, - @RequestParam(value = "startTime", required = false) Date startTime, - @RequestParam(value = "endTime", required = false) Date endTime, - @RequestParam(value = "organizationId", required = false) Long organizationId, - HttpServletRequest request) { - return R.ok(iInHospitalRegisterAppService.getRegisterInfo(inHospitalRegisterQueryDto, searchKey, registeredFlag, - pageNo, pageSize, startTime, endTime, organizationId, request)); - 查询患者基本信息 - @param patientId 患者ID - @return 患者基本信息 - @GetMapping(value = "/patient-info") - public R getPatientInfo(@RequestParam Long patientId) { - return R.ok(iInHospitalRegisterAppService.getPatientInfo(patientId)); - 查询住院就诊信息 - @param encounterId 住院就诊id - @return 住院就诊信 - …[truncated] - · Controller层 - · 看起来正常 - · 。 - · 参数 - · 传递也没有 - · 问题。 - 那么, - · Bug #74 - · 2的 - · 数据库报错可能 - · 是什么原因呢 - · ?可能是SQL - · 语 - · 句执行 - · 错误 - · , - · 比如字段名不 - · 匹配、 - · 表名 - · 错误 - · 等。我们需要 - · 检查Mapper XML中的 - · SQL语句是否有 - · 语法 - · 错误。 - 仔细 - · 阅读 - · Mapper XML中的` - · getInHospitalRegister - · Info`查询, - · 发现 - · 有一个 - · 潜在 - · 问题 - · :在子 - · 查询中,` - · LEFT - · JOIN adm_encounter - · AS ambae - · ON ae.amb - · _encounter_id = - · ambae.ID - · `后面 - · 有一个换行和 - · 点 - · 号,然后 - · 继续 - · `LEFT - · JOIN` - · 。这可能是 - · 格式 - · 问题,但SQL - · 应该能 - · 正常执行。 - · 另外,注意 - · ``条件 - · 中 - · 使用 - · 了`> - · ;=` - · 和`& - · lt;=`, - · 这是XML转义 - · ,正确 - · 。 - 但是,我们 - · 注意到在`` - · 中,使用 - · 了`registered - · Flag` - · 参数 - · ,而 - · Mapper - · Java接口中参数 - · 名为`registeredFlag - · `,但 - · AppService传递 - · 的是 - · 字符串 - · 0"或" - · 1"。这 - · 应该没问题。 - 也许 - · 问题 - · 在于`form - · Enum`参数? - · 在Mapper Java - · 接口中,` - · formEnum`是 - · `Integer`类型 - · ,但在 - · Mapper - · XML中,` - · #{formEnum}` - · 被 - · 用 - · 作` - · ael - · .form_enum - · , - · 而`form_enum - · `字段 - · 可能是整数。 - · 这应该匹配 - · 。 - 让我们 - · 检查一下Mapper - · XML中是否有其他 - · 错误。比如 - · ,在 - · `getInHospital - · RegisterInfo`查询 - · 中,最后 - · 使用 - · 了`${ - · ew.customSqlSegment - · }`,这是My - · Batis-Plus - · 的条件 - · 构造 - · 器,用于 - · 拼 - · 接额外 - · 的查询条件。 - · 这应该没问题。 - · 但是 - · ,我们注意到在 - · Mapper XML中, - · `get - · InHospitalRegisterInfo - · `查询的返回 - · 类型是`In - · HospitalRegisterQueryDto - · `,而在 - · Mapper - · Java接口中, - · 返回类型是 - · `IPage`, - · 这匹配 - · 。 - 也许 - · Bug - · #7 - · 42的 - · 数据库报错是 - · 运行 - · 时错误,比如 - · 参数类型 - · 不匹配, - · 或者数据库 - · 中 - · 不存在 - · 某个 - · 字段。我们需要检查 - · 数据库表 - · 结构。但根据 - · 铁律2 - · 0,数据 - · 来源必须验证。 - · 我们无法 - · 直接连接 - · 数据库,但可以 - · 检查Mapper XML中 - · 引用的表 - · 和 - · 字段是否存在于 - · 代码中。 - 由于 - · 时间有限,我们 - · 可能 - · 需要运行 - · 编译验证, - · 看看是否有编译 - · 错误。如果没有 - · 编译错误, - · 那么可能是 - · 运行时错误, - · 需要 - · 更 - · 详细的日志。 - · 但作为 - · 后 - · 我们首先 - · 确保 - · 代码 - · 没有 - · 编译错误。 - · 让我们 - · 运行mvn compile - · 来 - · 验证。 - 由于 - · 我们不能 - · 使用 - · git, - · 我们直接 - · 在 - · 当前目录 - · 运行编 - · 译命令 - · 。但注意, - · 我们需要 - · 在正确的 - · 目录 - · 下运行 - · 。根据项目结构 - · ,后端代码 - · 在`healthlink - · -his-server/ - · `目录下。 - · 我们将 - · 运行 - · `mv - · n compile -D - · skipTests`来 - · 编 - · 译后 - · 端代码 - · 。 - ⏵ run_shell {"command":"cd healthlink-his-server && mvn compile -DskipTests","timeoutMs":300000} - ⚠️ MODERATE risk command - Exit code: 0 - [INFO] Scanning for projects... - [WARNING] - [WARNING] Some problems were encountered while building the effective model for com.healthlink.his:healthlink-his-application:jar:0.0.1-SNAPSHOT - [WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: org.springframework.boot:spring-boot-starter-test:jar -> duplicate declaration of version (?) @ line 102, column 21 - [WARNING] - [WARNING] Some problems were encountered while building the effective model for com.core:core-system:jar:0.0.1-SNAPSHOT - [WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: io.swagger.core.v3:swagger-annotations-jakarta:jar -> duplicate declaration of version 2.2.30 @ line 72, column 21 - [WARNING] - [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. - [WARNING] - [WARNING] For this reason, future Maven versions might no longer support building such malformed projects. - [WARNING] - [INFO] ------------------------------------------------------------------------ - [INFO] Reactor Build Order: - [INFO] - [INFO] healthlink-his-server [pom] - [INFO] core-common [jar] - [INFO] core-system [jar] - [INFO] core-framework [jar] - [INFO] core-quartz [jar] - [INFO] core-generator [jar] - [INFO] core-flowable [jar] - [INFO] core-admin [jar] - [INFO] healthlink-his-common [jar] - [INFO] healthlink-his-domain [jar] - [INFO] healthlink-his-application [jar] - [INFO] - [INFO] --------------< com.healthlink.his:healthlink-his-server >-------------- - [INFO] Building healthlink-his-server 0.0.1-SNAPSHOT [1/11] - [INFO] --------------------------------[ pom ]--------------------------------- - [INFO] - [INFO] ------------------------< com.core:core-common >------------------------ - [INFO] Building core-common 0.0.1-SNAPSHOT [2/11] - [INFO] --------------------------------[ jar ]--------------------------------- - [INFO] - [INFO] --- maven-resources-plugin - …[truncated] - · 编译成功, - · 没有错误。只有 - · 警告。 - · 所以代码 - · 本身 - · 没有编译错误 - · 。 - 那么, - · Bug #74 - · 2的数据库报 - · 错可能是在运行 - · 时发生的 - · , - · 比如 - · Batis执行 - · SQL时参数 - · 不匹配。我们 - · 已经检查了参数 - · 匹配,但可能 - · 还有 - · 其他问题。 - 我们需要 - · 更 - · 仔细地分析Mapper - · XML中的SQL语 - · 句。注意到 - · 在 - · `getInHospital - · RegisterInfo`查询 - · 中,有一个 - · 子查询, - · 其中 - · `LEFT - · JOIN adm_encounter - · AS ambae - · ON ae.amb - · _encounter_id = - · ambae.ID - · `后面有一个换 - · 行和点号 - · ,然后继续` - · LEFT JOIN`。 - · 这可能是格式问题 - · ,但SQL应该 - · 能正常执行 - · 。 - · 不过,为了 - · 安全起 - · 见,我们可以调整 - · 一下格式 - · ,使其 - · 更清晰。 - 另外 - · ,注意 - · 在 - · ``条件 - · 中,使用了 - · `#{ - · startTime}`, - · 但Mapper - · Java - · 接口中参数类型 - · 是`Date - · `。 - · 这 - · 应该没问题。 - 也许 - · 问题在于`#{ - · formEnum}`被 - · 用 - · 在`ael - · .form_enum = #{ - · formEnum}`中 - · ,而`form - · _enum`字段可能是 - · 字符串 - · 类型? - · 但Mapper - · Java接口 - · 中`formEnum - · `是`Integer - · `类型 - · ,所以 - · 应该 - · 匹配 - · 。 - 让我们 - · 检查一下 - · 数据库 - · 表 - · 结构, - · 看看 - · `form_enum - · `字段的 - · 类型。但 - · 根据铁 - · 律20, - · 我们需要 - · 验证数据来源。 - · 我们可以通过 - · 查看 - · 其他Mapper - · XML或 - · 实体 - · 类来推断 - · 。 - 由于 - · 时间有限,我们 - · 可能需要假设 - · 参数 - · 匹配是 - · 正确的。但既然 - · 编 - · 译通过,我们 - · 可能需要关注 - · 其他可能 - · 的原因 - · 。 - 根据 - · 诸葛亮 - · 分析报告, - · 根 - · 因是Mapper XML - · 与Mapper Java接口 - · 参数不匹配。 - · 但我们 - · 已经 - · 看到它们 - · 匹配 - · 了 - · 。也许 - · 分析 - · 报告是 - · 基于旧版本 - · 的代码,而 - · 代码 - · 已经部分 - · 但还有 - · 其他问题。 - · 我们再看一下 - · Mapper - · XML中 - · `getInHospital - · RegisterInfo`查询 - · 的完整 - · SQL - · 。 - · 注意到 - · 在子 - · 查询中 - · ,`SELECT - · 字段 - · 列表中有 - · `ae - · amb_enc - · ounter_id AS amb - · _encounter_id` - · ,但后面又 - · 使用 - · 了`ae. - · amb_encounter_id - · `, - · 这没问题 - · 。 - 但是 - · ,在 - · 子 - · 查询的 - · `WHERE - · `条件中, - · 有`ae.class - · _enum = #{enc - · ounterClass}`, - · 而`encounter - · Class`参数在 - · Mapper Java接口中 - · 存在 - · 。 - · 也许 - · 问题在于`#{ - · enc - · ounterStatus - · }`参数。 - · 在Mapper - · XML中,` - · #{encounterStatus - · }`被 - · 用在两个 - · 地方 - · :`ae - · .status_enum = #{ - · encounterStatus}` - · 和`ae.status - · _enum != #{enc - · ounterStatus}`。 - · 这应该 - · 没问题。 - 我们 - · 注意到在 - · Mapper XML中, - · `registeredFlag` - · 参数被 - · 用来控制 - · 条件 - · 。在Mapper - · Java接口中, - · `registeredFlag` - · 是`String` - · 类型,而在 - · XML - · 中, - · 我们 - · 比较 - · `registeredFlag == - · '0'.toString - · ()`和`registered - · Flag == '1 - · '.toString()`。 - · 这应该没问题。 - · 但是,有一个 - · 潜在问题:在 - · XML中,` - · ` - · 中 - · 使用 - · 了`'0 - · '.toString()`, - · 这是 - · Java - · 字符串 - · 字 - · 面量,在 - · NL表达 - · 式中, - · `'0'. - · toString()`会 - · 返回字符串" - · 0"。这 - · 应该没问题。 - 也许 - · 问题在于`form - · Enum`参数。 - · 在Mapper XML中 - · ,`#{ - · formEnum}`被 - · 用在`ael - · .form_enum = #{ - · formEnum}`中 - · ,但 - · `form_enum` - · 字段可能是 - · 整数, - · 而`formEnum - · `是` - · Integer`类型 - · ,应该匹配 - · 。 - 我们 - · 可能需要检查一下 - · 是否有 - · 其他Mapper - · XML文件 - · 有 - · 类似的 - · 模式 - · , - · 看看 - · 是否有 - · 问题。 - 由于我们 - · 无法重现 - · 数据库 - · 报错,我们 - · 可能需要根据 - · 经验 - · 判断 - · 。 - · 通常 - · ,数据库 - · 报错可能是 - · 由于参数类型 - · 不匹配,或者 - · SQL语法错误。 - · 让我们 - · 检查一下SQL语法 - · :在子 - · 查询中,有一个 - · `LEFT JOIN adm - · _encounter AS am - · bae ON ae - · .amb_encounter - · _id = amba - · e.ID`, - · 后面 - · 有一个换行和 - · 点号,然后 - · 继续`LEFT JOIN - · `。这个 - · 点号可能是 - · 打 - · 字错误,但 - · SQL应该 - · 能正常执行 - · ,因为点号 - · 会被 - · 忽略? - · 实际上 - · ,在 - · SQL中,点 - · 号是表 - · 别 - · 名分 - · 隔符,但 - · 这里` - · amb - · ae.` - · 后面没有字段 - · 名,所以可能 - · 是一个语法错误。 - · 但是 - · ,这个 - · 点号是在 - · amb - · ae.`后面换 - · 行了 - · ,然后继续` - · LEFT JOIN`, - · 所以 - · 可能 - · 只是 - · 格式 - · 问题,点 - · 号是 - · 多余的。 - · 我们 - · 修改 - · 一下SQL - · , - · 去掉多余的 - · 点号。同时 - · ,我们 - · 也可以调整格式 - · ,使其 - · 更清晰。 - 我们将 - · 对 - · Mapper XML文件 - · 进行修改,确保 - · SQL语法 - · 正确。同时, - · 我们也会 - · 检查其他 - · 可能的问题 - · 。 - 首先 - · ,我们 - · 修改 - · Mapper XML文件 - · ,去掉多余的点 - · 号,并格式 - · 化SQL - · 。 - Patched healthlink-his-server/healthlink-his-application/src/main/resources/mapper/inhospitalcharge/InHospitalRegisterAppMapper.xml (6 additions, 7 removals) - · 我们修改了Mapper - · XML文件 - · ,主要 - · 做了以下调整: - · 去掉了` - · ambae.` - · 后面 - · 多余的换 - · 行和点号 - · ,将其 - · 合并为一行 - · , - · 但 - · 保留 - · 了点号( - · 因为 - · ambae.ID - · `是合法 - · 的)。 - · 实际上,原来的 - · 写 - · 法是`amb - · ae.` - · 后面换行, - · 然后`ID` - · ,这可能导致 - · SQL - · 解析错误。我们 - · 将其合并为` - · ambae.ID` - · 。 - · 将` - · - · `改为 - · - · `,使用 - · 双引号, - · 保持一致性 - · 。 - · 将`` - · 改为` duplicate declaration of version (?) @ line 102, column 21 - [WARNING] - [WARNING] Some problems were encountered while building the effective model for com.core:core-system:jar:0.0.1-SNAPSHOT - [WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: io.swagger.core.v3:swagger-annotations-jakarta:jar -> duplicate declaration of version 2.2.30 @ line 72, column 21 - [WARNING] - [WARNING] It is highly recommended to fix these problems because they threaten the stability of your build. - [WARNING] - [WARNING] For this reason, future Maven versions might no longer support building such malformed projects. - [WARNING] - [INFO] ------------------------------------------------------------------------ - [INFO] Reactor Build Order: - [INFO] - [INFO] healthlink-his-server [pom] - [INFO] core-common [jar] - [INFO] core-system [jar] - [INFO] core-framework [jar] - [INFO] core-quartz [jar] - [INFO] core-generator [jar] - [INFO] core-flowable [jar] - [INFO] core-admin [jar] - [INFO] healthlink-his-common [jar] - [INFO] healthlink-his-domain [jar] - [INFO] healthlink-his-application [jar] - [INFO] - [INFO] --------------< com.healthlink.his:healthlink-his-server >-------------- - [INFO] Building healthlink-his-server 0.0.1-SNAPSHOT [1/11] - [INFO] --------------------------------[ pom ]--------------------------------- - [INFO] - [INFO] ------------------------< com.core:core-common >------------------------ - [INFO] Building core-common 0.0.1-SNAPSHOT [2/11] - [INFO] --------------------------------[ jar ]--------------------------------- - [INFO] - [INFO] --- maven-resources-plugin - …[truncated] - · 编译成功, - · 没有错误。现在 - · 我们 - · 了Mapper XML中的 - · 潜在 - · 语法 - · 问题( - · 多余的 - · 点号和换 - · 行)。但根据 - · 分析 - · 报告,根 - · 因是Mapper XML - · 与Mapper Java接口 - · 参数不匹配, - · 我们 - · 已经确认 - · 参数是 - · 匹配的。 - · 然而,我们还需要 - · 检查一下 - · Mapper Java接口中的 - · 参数顺序是否与 - · AppService调用 - · 顺序一致。我们 - · 已经确认一致 - · 。 - 但是 - · ,我们注意到Mapper - · XML中`get - · InHospitalRegisterInfo - · `查询的参数 - · 列表和 - · 顺序 - · 可能 - · 有问题 - · ? - · 让我们再 - · 仔细检查 - · 一下Mapper - · XML中的参数引用 - · 顺序 - · 。 - 在Mapper XML - · 中,`get - · InHospitalRegisterInfo - · `查询使用 - · 了以下参数: - · `form - · Enum`、` - · startTime`、` - · endTime`、` - · organizationId`、 - · `registered - · Flag`、` - · encounterStatus` - · 。 - · 这些参数在Mapper - · Java接口中都有 - · 对应的 - · `@Param` - · 注解。 - · 但是 - · , - · Mapper - · XML中并没有 - · 直接 - · 引用 - · `encounterClass - · `参数,而是 - · 使用了`#{ - · encounterClass}` - · 。这没问题 - · 。 - 也许 - · 问题在于 - · `#{ - · enc - · ounterClass}`参数 - · 在Mapper XML中 - · 被用 - · 在`ae - · .class_enum = #{ - · encounterClass}` - · ,但` - · encounterClass` - · 是`Integer` - · 类型,而` - · class_enum`字段 - · 可能是整数, - · 应该 - · 匹配。 - 我们 - · 可能还需要 - · 检查一下 - · Mapper - · XML中 - · 是否 - · 还有 - · 其他SQL错误 - · 。让我们 - · 重新 - · 读取修改 - · 后的Mapper XML文件 - · ,确保没有语法 - · 错误。 - ⏵ read_file {"path":"healthlink-his-server/healthlink-his-application/src/main/resources/mapper/inhospitalcharge/InHospitalRegisterAppMapper.xml"} - - - - - - 69| - 8| SELECT ihri.tenant_id, - 9| ihri.encounter_id, - 10| ihri.amb_encounter_id, - 11| ihri.patient_id, - 12| ihri.request_time, - 13| ihri.registrar, - 14| ihri.source_name, - 15| ihri.patient_name, - 16| ihri.gender_enum, - 17| ihri.birth_date, - 18| ihri.ward_name, - 19| ihri.contract_no, - 20| ihri.bus_no, - 21| ihri.admit_source_code, - 22| ihri.status_enum, - 23| ihri.id_card, - 24| ihri.organization_name - 25| from (SELECT ae.tenant_id, - 26| ae.ID AS encounter_id, - 27| ae.amb_encounter_id AS amb_encounter_id, - 28| ae.patient_id AS patient_id, - 29| ae.create_time AS request_time, - 30| aper.NAME AS registrar, - 31| ao.NAME AS source_name, - 32| ap.NAME AS patient_name, - 33| ap.gender_enum AS gender_enum, - 34| ap.birth_date AS birth_date, - 35| al.NAME AS ward_name, - 36| aa.contract_no, - 37| ae.bus_no, - 38| ae.admit_source_code, - 39| ae.status_enum, - 40| ap.id_card AS id_card, - 41| ao_zy.NAME AS organization_name - 42| FROM adm_encounter AS ae - 43| LEFT JOIN adm_organization AS ao_zy ON ao_zy.ID = ae.organization_id - 44| AND ao_zy.delete_flag = '0' - 45| LEFT JOIN adm_patient AS ap ON ap.ID = ae.patient_id - 46| AND ap.delete_flag = '0' - 47| LEFT JOIN adm_encounter_location AS ael ON ael.encounter_id = ae.ID - 48| AND ael.delete_flag = '0' - 49| AND ael.form_enum = #{formEnum} - 50| LEFT JOIN adm_location AS al ON al.ID = ael.location_id - 51| AND al.delete_flag = '0' - 52| LEFT JOIN adm_practitioner AS aper ON aper.ID = ae.registrar_id - 53| AND aper.delete_flag = '0' - 54| LEFT JOIN adm_account AS aa ON aa.encounter_id = ae.ID - 55| AND aa.delete_flag = '0' - 56| AND aa.type_code = '04' - 57| WHERE ae.delete_flag = '0' - 58| AND ae.class_enum = #{encounterClass} - 59| AND ae.create_time >= #{startTime} - 60| AND ae.create_time <= #{endTime} - 61| AND ae.organization_id = #{organizationId} - 62| AND ae.status_enum = #{encounterStatus} - 63| AND ae.status_enum != #{encounterStatus} - 64| ) AS ihri - 65| ${ew.customSqlSegment} - 66| ORDER BY ihri.request_time DESC - 67| - 69| - · AND ae.create_time - · >= - · #{startTime} - · - · - · AND ae.create - · _time < - · = #{endTime} - · - · - · ae.organization_id = - · #{organizationId} - · - · - · AND ae.status - · _enum = #{enc - · ounterStatus} - · - · - · AND ae.status_enum - · != #{encounter - · Status} - · if> - · AS ihri - · ${ew.custom - · SqlSegment} - · ORDER BY ihri - · .request_time DESC - · - · ``` - 现在我们将 - · 使用apply_patch来 - · 替换当前 - · 查询 - · 。我们需要 - · 找到查询 - · 的开始 - · 和结束位置。 - · 从第7行 - · 到第67 - · 行。让我们 - · 使用 - · apply_patch。 - Patched healthlink-his-server/healthlink-his-application/src/main/resources/mapper/inhospitalcharge/InHospitalRegisterAppMapper.xml (16 additions, 3 removals) - Token usage: input 40110, output 7817, cache hit 510720 · 47,927 credits - Review --- - Now let me check the git history to see what was recently changed: - Test --- - MiMo Code CLI - model=mimo-v2.5 format=anthropic baseUrl=https://token-plan-cn.xiaomimimo.com - workspace=/tmp/agentforge-worktrees/guanyu - API request failed (429): { - "error": { - "code": "429", - "message": "Too many requests", - "type": "limitation" - Verify --- - Now let me verify the test compilation errors are pre-existing and not caused by this fix: --- .../InHospitalRegisterAppMapper.xml | 137 +++++++----------- 1 file changed, 54 insertions(+), 83 deletions(-) diff --git a/healthlink-his-server/healthlink-his-application/src/main/resources/mapper/inhospitalcharge/InHospitalRegisterAppMapper.xml b/healthlink-his-server/healthlink-his-application/src/main/resources/mapper/inhospitalcharge/InHospitalRegisterAppMapper.xml index 6a0a5f061..ad707cc1b 100755 --- a/healthlink-his-server/healthlink-his-application/src/main/resources/mapper/inhospitalcharge/InHospitalRegisterAppMapper.xml +++ b/healthlink-his-server/healthlink-his-application/src/main/resources/mapper/inhospitalcharge/InHospitalRegisterAppMapper.xml @@ -5,59 +5,60 @@ - ID LEFT JOIN adm_organization AS ao ON ao.ID = ambae.organization_id - - - - - - LEFT JOIN adm_encounter AS ambae ON ae.amb_encounter_id = ambae.ID - LEFT JOIN adm_organization AS ao ON ao.ID = ambae.organization_id - AND ao.delete_flag = '0' - - - - - - FROM (SELECT ae.tenant_id, - LEFT JOIN adm_encounter AS ambae ON ae.amb_encounter_id = ambae.ID - LEFT JOIN adm_organization AS ao ON ao.ID = ambae.organization_id - AND ao.delete_flag = '0' - LEFT JOIN adm_patient AS ap ON ap.ID = ae.patient_id - AND ap.delete_flag = '0' - - - - - - - - - - \ No newline at end of file