From 94ebc04b7e21c745720bd3754de9823184740d81 Mon Sep 17 00:00:00 2001 From: ccsens_zhengzhichuan Date: Fri, 13 Mar 2026 10:17:46 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=A5=97=E9=A4=90=E6=8E=A5=E5=8F=A3=20=E5=A5=B3=E6=80=A7?= =?UTF-8?q?=E6=82=A3=E8=80=85=E4=B8=8D=E6=9F=A5=E8=AF=A2=E5=89=8D=E5=88=97?= =?UTF-8?q?=E8=85=BA=E5=A5=97=E9=A4=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/ccsens/system/domain/dto/ScaleDto.java | 2 ++ .../com/ccsens/client/persist/dao/ScaleDao.java | 3 ++- .../client/service/impl/ScaleServiceImpl.java | 13 ++++++++++++- .../src/main/resources/application-dev.yml | 4 ++-- .../src/main/resources/mapper/dao/ScaleDao.xml | 3 +++ 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/dto/ScaleDto.java b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/dto/ScaleDto.java index 69ad335..d495eb1 100644 --- a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/dto/ScaleDto.java +++ b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/domain/dto/ScaleDto.java @@ -193,6 +193,8 @@ public class ScaleDto { private Long version; private Long parentId; private String level; + @ApiModelProperty("患者ID") + private Long patientId; } diff --git a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/persist/dao/ScaleDao.java b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/persist/dao/ScaleDao.java index 5886cd8..4ef8173 100644 --- a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/persist/dao/ScaleDao.java +++ b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/persist/dao/ScaleDao.java @@ -20,7 +20,8 @@ public interface ScaleDao { @Param("version")Long version, @Param("level") String level); - List queryComboChildList(@Param("id")Long id); + List queryComboChildList(@Param("id")Long id, + @Param("isFemale") Boolean isFemale); ScaleVo.ComboInfo queryComboInfo(Long id); diff --git a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/ScaleServiceImpl.java b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/ScaleServiceImpl.java index aee1169..b651ba7 100644 --- a/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/ScaleServiceImpl.java +++ b/ruisi_java/ruisi-web-client/src/main/java/com/ccsens/client/service/impl/ScaleServiceImpl.java @@ -41,6 +41,8 @@ public class ScaleServiceImpl implements IScaleService { private HmsComboScaleRelevanceMapper qmsComboScaleRelevanceMapper; @Resource private QmsQuestionMapper qmsQuestionMapper; + @Resource + private PmsPatientMapper pmsPatientMapper; @Override public List queryScaleType() { @@ -135,12 +137,21 @@ public class ScaleServiceImpl implements IScaleService { @Override public List queryComboChildList(ScaleDto.QueryCombo dto) { + //根据患者ID查询性别 女性患者不需要评前列腺 + Boolean isFemale = false; + if (dto.getPatientId() != null) { + PmsPatient pmsPatient = pmsPatientMapper.selectByPrimaryKey(dto.getPatientId()); + if (pmsPatient.getSex() == 1) { + isFemale = true; + } + } + LoginUser loginUser = getLoginUser(); List comboInfos = scaleDao.queryComboList(loginUser.getUsername(),dto.getName(),loginUser.getHospitalId(), dto.getVersion(), dto.getLevel()); if (CollUtil.isNotEmpty(comboInfos)) { for (ScaleVo.ComboInfo comboInfo : comboInfos) { int i = 0; - comboInfo.setChildrenList(scaleDao.queryComboChildList(comboInfo.getId())); + comboInfo.setChildrenList(scaleDao.queryComboChildList(comboInfo.getId(), isFemale)); // if (CollUtil.isNotEmpty(comboInfo.getChildrenList())) { // for (ScaleVo.ComboInfo info : comboInfo.getChildrenList()) { // if (CollUtil.isNotEmpty(info.getScaleList())) { diff --git a/ruisi_java/ruisi-web-client/src/main/resources/application-dev.yml b/ruisi_java/ruisi-web-client/src/main/resources/application-dev.yml index 8c47058..db54aa0 100644 --- a/ruisi_java/ruisi-web-client/src/main/resources/application-dev.yml +++ b/ruisi_java/ruisi-web-client/src/main/resources/application-dev.yml @@ -15,7 +15,7 @@ spring: # 从库数据源 slave: # 从数据源开关/默认关闭 - enabled: true + enabled: false url: jdbc:mysql://127.0.0.1:3306/ruisi_cga_yf?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 username: root password: 123456 @@ -25,7 +25,7 @@ spring: # password: interface_lnpg oracle: # 从数据源开关/默认关闭 - enabled: true + enabled: false driverClassName: oracle.jdbc.driver.OracleDriver url: jdbc:oracle:thin:@//192.168.1.5:1521/ORCL username: USER_LNPGXT diff --git a/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/ScaleDao.xml b/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/ScaleDao.xml index 3d7500f..2b53386 100644 --- a/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/ScaleDao.xml +++ b/ruisi_java/ruisi-web-client/src/main/resources/mapper/dao/ScaleDao.xml @@ -141,6 +141,9 @@ left join hms_version v on v.id = c.version where c.del_flag = 0 and c.parent_id != 0 and s.is_show = 1 and c.status = 1 + + and c.id != 1982752141751750656 + and c.parent_id = #{id} order by c.sort, csr.sort, c.level desc, c.create_time DESC, s.sort From 017ffd4d8873405c619b2658c548bc8b9cc69e99 Mon Sep 17 00:00:00 2001 From: ccsens_zhengzhichuan Date: Fri, 13 Mar 2026 13:51:01 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E6=8A=A5=E5=91=8A=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/AmsReportServiceImpl.java | 127 +++++++++++++----- 1 file changed, 92 insertions(+), 35 deletions(-) diff --git a/ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/service/impl/AmsReportServiceImpl.java b/ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/service/impl/AmsReportServiceImpl.java index e79c7e0..89ccc9c 100644 --- a/ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/service/impl/AmsReportServiceImpl.java +++ b/ruisi_java/ruisi-web-admin/src/main/java/com/ccsens/admin/service/impl/AmsReportServiceImpl.java @@ -870,6 +870,7 @@ public class AmsReportServiceImpl implements AmsReportService { Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$"); return pattern.matcher(str).matches(); } + public Map generateParams(Map params, List scores, PmsPatientVo.PatientInfo patientInfoById, RmsVo.ReportDetail detail, RmsDto.Export dto, EmsEvaluation emsEvaluation) { RmsVo.ReportPatient patientInfo = detail.getPatient(); params.put("h_name", patientInfo.getHospitalName()); @@ -877,6 +878,32 @@ public class AmsReportServiceImpl implements AmsReportService { params.put("p_name", patientInfo.getPatientName()); params.put("p_sex", patientInfo.getSex() == 0 ? "男" : "女"); params.put("p_age", patientInfo.getPatientAge()); + params.put("phone", patientInfo.getMobile()); + if (dto.getVersion() != null) { + if(dto.getVersion() == 0) { + params.put("versionName", "完整版"); + } + if(dto.getVersion() == 1) { + params.put("versionName", "医生版"); + } + if(dto.getVersion() == 2) { + params.put("versionName", "个人版"); + } + if(dto.getVersion() == 3) { + params.put("versionName", "阳性版"); + } + } + if (patientInfo.getCareer() != null) { + JobEnum jobEnum = BaseEnum.codeOf(JobEnum.class, patientInfo.getCareer().intValue()); + if (jobEnum != null) { + params.put("job", jobEnum.getDesc()); + } + } + params.put("marital", patientInfo.getMarial()); + params.put("dwelling", patientInfo.getDwelling()); + params.put("nation", patientInfo.getNation()); + params.put("belief", patientInfo.getBelief()); + params.put("testerName", patientInfo.getTesterName()); CultureEnum cultureEnum = null; if (dto.getSignId() != null) { HmsDoctorSign emsEvaluationInformedConsent = hmsDoctorSignMapper.selectByPrimaryKey(dto.getSignId()); @@ -926,32 +953,32 @@ public class AmsReportServiceImpl implements AmsReportService { params.put("place", patientInfoById.getNativePlace()); params.put("address", patientInfoById.getAddress()); params.put("hobby", patientInfoById.getHobby()); - params.put("aboBlood", patientInfoById.getAboBloodType()); - params.put("rhBlood", patientInfoById.getRhBloodType()); - params.put("visit_type", pmsPatientBodyMap.get("visit_type")); - params.put("visitNo", pmsPatientBodyMap.get("outpatient_no")); + params.put("aboBlood", ObjectUtil.isEmpty(patientInfoById.getAboBloodType()) ? "" : ObjectUtil.equals(patientInfoById.getAboBloodType(), "1") ? "A" : ObjectUtil.equals(patientInfoById.getAboBloodType(), "2") ? "B" : ObjectUtil.equals(patientInfoById.getAboBloodType(), "3") ? "O" : ObjectUtil.equals(patientInfoById.getAboBloodType(), "4") ? "AB" : ObjectUtil.equals(patientInfoById.getAboBloodType(), "5") ? "不详" : "未查"); + params.put("rhBlood", ObjectUtil.isEmpty(patientInfoById.getRhBloodType()) ? "" : ObjectUtil.equals(patientInfoById.getRhBloodType(), "1") ? "阳性" : ObjectUtil.equals(patientInfoById.getRhBloodType(), "2") ? "阴性" :ObjectUtil.equals(patientInfoById.getRhBloodType(), "3") ? "不详" : "未查"); + params.put("visit_type", ObjectUtil.isEmpty(pmsPatientBodyMap.get("visitType")) ? "" : ObjectUtil.equals(pmsPatientBodyMap.get("visitType"), "1") ? "门诊" : "住院"); + params.put("visitNo", pmsPatientBodyMap.get("outpatientNo")); params.put("age", pmsPatientBodyMap.get("age")); params.put("dept", pmsPatientBodyMap.get("department")); params.put("doctor", pmsPatientBodyMap.get("doctor")); - params.put("admissionDate", pmsPatientBodyMap.get("admission_date")); - params.put("num", pmsPatientBodyMap.get("admission_count")); - params.put("admissionMethod", pmsPatientBodyMap.get("admission_method")); - params.put("bedNumber", pmsPatientBodyMap.get("bed_number")); - params.put("dischargeDate", pmsPatientBodyMap.get("")); - params.put("dischargeMethod", pmsPatientBodyMap.get("discharge_date")); - params.put("height", pmsPatientBodyMap.get("height")); - params.put("weight", pmsPatientBodyMap.get("weight")); + params.put("admissionDate", ObjectUtil.isEmpty(pmsPatientBodyMap.get("admissionDate")) ? "": DateUtil.format(DateUtil.parse(pmsPatientBodyMap.get("admissionDate").toString()), "yyyy-MM-dd")); + params.put("num", pmsPatientBodyMap.get("admissionCount")); + params.put("admissionMethod", ObjectUtil.isNull(pmsPatientBodyMap.get("admissionMethod")) ? "" : ObjectUtil.equals(pmsPatientBodyMap.get("admissionMethod"), "1") ? "急诊": ObjectUtil.equals(pmsPatientBodyMap.get("admissionMethod"), "2") ? "门诊": ObjectUtil.equals(pmsPatientBodyMap.get("admissionMethod"), "3") ? "其他医疗机构转入": "其他"); + params.put("bedNumber", pmsPatientBodyMap.get("bedNumber")); + params.put("dischargeDate", ObjectUtil.isEmpty(pmsPatientBodyMap.get("dischargeDate")) ? "": DateUtil.format(DateUtil.parse(pmsPatientBodyMap.get("dischargeDate").toString()), "yyyy-MM-dd")); + params.put("dischargeMethod", ObjectUtil.isNull(pmsPatientBodyMap.get("dischargeMethod")) ? "": ObjectUtil.equals(pmsPatientBodyMap.get("dischargeMethod"), "1") ? "医嘱离院" : ObjectUtil.equals(pmsPatientBodyMap.get("dischargeMethod"), "2") ? "医嘱转院" :ObjectUtil.equals(pmsPatientBodyMap.get("dischargeMethod"), "3") ? "医嘱转社区卫生服务机构/乡镇卫生院":ObjectUtil.equals(pmsPatientBodyMap.get("dischargeMethod"), "4") ? "非医嘱离院":ObjectUtil.equals(pmsPatientBodyMap.get("dischargeMethod"), "5") ? "死亡": "其他"); + params.put("height", ObjectUtil.isEmpty(pmsPatientBodyMap.get("height")) ? "" : pmsPatientBodyMap.get("height") + "cm"); + params.put("weight", ObjectUtil.isEmpty(pmsPatientBodyMap.get("weight")) ? "" : pmsPatientBodyMap.get("weight") + "kg"); params.put("bmi", pmsPatientBodyMap.get("bmi")); params.put("tz", pmsPatientBodyMap.get("tz")); params.put("temperature", pmsPatientBodyMap.get("temperature")); - params.put("systolic_pressure", pmsPatientBodyMap.get("systolic_pressure")); - params.put("diastolic_pressure", pmsPatientBodyMap.get("diastolic_pressure")); + params.put("systolic_pressure", pmsPatientBodyMap.get("systolicPressure")); + params.put("diastolic_pressure", pmsPatientBodyMap.get("diastolicPressure")); params.put("pulse", pmsPatientBodyMap.get("pulse")); params.put("creatinine", pmsPatientBodyMap.get("creatinine")); - params.put("oxygen_saturation", pmsPatientBodyMap.get("oxygen_saturation")); + params.put("oxygen_saturation", pmsPatientBodyMap.get("oxygenSaturation")); params.put("albumin", pmsPatientBodyMap.get("albumin")); - params.put("total_protein", pmsPatientBodyMap.get("total_protein")); - params.put("vitamin_d3", pmsPatientBodyMap.get("vitamin_d3")); + params.put("total_protein", pmsPatientBodyMap.get("totalProtein")); + params.put("vitamin_d3", pmsPatientBodyMap.get("vitaminD3")); params.put("hematocrit", pmsPatientBodyMap.get("hematocrit")); params.put("dimer", pmsPatientBodyMap.get("dimer")); } @@ -983,24 +1010,18 @@ public class AmsReportServiceImpl implements AmsReportService { // params.put("cpy_img_url", patientInfo.getName()); params.put("report_date", DateUtil.date(patientInfo.getReportTime())); + params.put("reportDate", DateUtil.format(DateUtil.date(patientInfo.getReportTime()), "yyyy-MM-dd")); //生成表格 - // 创建带有样式的文本 - TextRenderData text1 = Texts.of("评估结论").bold().fontSize(12).create(); - TextRenderData text2 = Texts.of("评估结论").bold().fontSize(12).create(); - TextRenderData text3 = Texts.of("评估结论").bold().fontSize(12).create(); - TextRenderData text4 = Texts.of("评估结论").bold().fontSize(12).create(); -// TextRenderData text5 = Texts.of("评估结论").bold().fontSize(12).create(); - - RowRenderData headerRow = Rows.of(text1, text2, text3, text4).create(); - - //查询 + //查询报告数据 List exportInfos = rmsDao.queryReportExportInfo(dto.getEvaluationId()); if (CollUtil.isEmpty(exportInfos)) { return null; } - RowRenderData titleRow = Rows.of("一级指标/二级指标", "量表名称", "得分", "结论").create(); - Tables.TableBuilder of = Tables.of(headerRow, titleRow); + + RowRenderData titleRow = Rows.of("一级指标/二级指标", "量表名称", "得分", "结论").center() + .create(); + Tables.TableBuilder of = Tables.of(titleRow); for (int i = 0; i < exportInfos.size(); i++) { RmsVo.Pgjl pgjl = new RmsVo.Pgjl(); params.put("yjzb", exportInfos.get(i).getComboParentName()); @@ -1018,7 +1039,7 @@ public class AmsReportServiceImpl implements AmsReportService { textName, textScore, textImpression - ).create(); + ).center().create(); // if (StrUtil.isNotEmpty(exportInfos.get(i).getComboName() + "/" + exportInfos.get(i).getComboParentName())) { // of.mergeRule(MergeCellRule.builder().map(MergeCellRule.Grid.of(i + 1, i + 1), MergeCellRule.Grid.of(0, 1)).build()); // } @@ -1037,7 +1058,7 @@ public class AmsReportServiceImpl implements AmsReportService { textName, textScore, textImpression - ).create(); + ).center().create(); of.addRow(row1); } else { TextRenderData textStr = Texts.of(exportInfos.get(i).getImpression().contains("\n") ? "量表结论" + "\n" + "肌少总结论" : "肌少总结论").bold().create(); @@ -1052,12 +1073,12 @@ public class AmsReportServiceImpl implements AmsReportService { textName, textImpression, textScore - ).create(); + ).center().create(); if (StrUtil.isNotEmpty(exportInfos.get(i).getComboName() + "/" + exportInfos.get(i).getComboParentName())) { of.mergeRule( MergeCellRule.builder().map( - MergeCellRule.Grid.of(i + 2, 0), MergeCellRule.Grid.of(i + 2, 1)) - .map(MergeCellRule.Grid.of(i + 2, 2), MergeCellRule.Grid.of(i + 2, 3) + MergeCellRule.Grid.of(i + 1, 0), MergeCellRule.Grid.of(i + 1, 1)) + .map(MergeCellRule.Grid.of(i + 1, 2), MergeCellRule.Grid.of(i + 1, 3) ).build() ); @@ -1136,16 +1157,52 @@ public class AmsReportServiceImpl implements AmsReportService { listMap.add(map); } } + //阳性报告单 + generateYx(params, exportInfos); params.put("questionTables", listMap); - TableRenderData tableData = of + .center() .create(); params.put("table", tableData); return params; } + public void generateYx(Map params, List exportInfos) { + RowRenderData titleRow = Rows.of("一级指标/二级指标", "量表名称", "得分", "结论").center() + .create(); + Tables.TableBuilder of = Tables.of(titleRow); + for (int i = 0; i < exportInfos.size(); i++) { + RmsVo.Pgjl pgjl = new RmsVo.Pgjl(); + params.put("yjzb", exportInfos.get(i).getComboParentName()); + params.put("ejzb", exportInfos.get(i).getComboName()); + if (exportInfos.get(i).getNeedPlan() != null && exportInfos.get(i).getNeedPlan() == 1) { + TextRenderData textStr = Texts.of(StrUtil.isEmpty(exportInfos.get(i).getComboParentName()) ? "" : exportInfos.get(i).getComboParentName() + "/" + exportInfos.get(i).getComboName()).bold().color("FF0000").create(); + TextRenderData textName = Texts.of(exportInfos.get(i).getScaleName()).bold().color("FF0000").create(); + TextRenderData textScore = Texts.of(exportInfos.get(i).getScore() == null ? "" : exportInfos.get(i).getScore() + "").bold().color("FF0000").create(); + TextRenderData textImpression = Texts.of(StrUtil.isEmpty(exportInfos.get(i).getImpression()) ? exportInfos.get(i).getResult() : exportInfos.get(i).getImpression()).bold().color("FF0000").create(); + pgjl.setTitle(StrUtil.isEmpty(exportInfos.get(i).getComboParentName()) ? "" : exportInfos.get(i).getComboParentName() + "/" + exportInfos.get(i).getComboName()); + + //查询一二级套餐 + RowRenderData row1 = Rows.of( + textStr, + textName, + textScore, + textImpression + ).center().create(); +// if (StrUtil.isNotEmpty(exportInfos.get(i).getComboName() + "/" + exportInfos.get(i).getComboParentName())) { +// of.mergeRule(MergeCellRule.builder().map(MergeCellRule.Grid.of(i + 1, i + 1), MergeCellRule.Grid.of(0, 1)).build()); +// } + of.addRow(row1); + } + } + TableRenderData tableData = of + .center() + .create(); + params.put("yxTable", tableData); + } + @Override public AmsReportVo.Result export(RmsDto.Export dto) { //1. 查询是否已生成对应版本的报告单 From 8e760c84011b91e9069622659b057712e71f1de4 Mon Sep 17 00:00:00 2001 From: ccsens_zhengzhichuan Date: Fri, 13 Mar 2026 16:09:22 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/aspectj/DataScopeAspect.java | 2 +- .../resources/mapper/dao/PmsPatientDao.xml | 23 +++++++++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/aspectj/DataScopeAspect.java b/ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/aspectj/DataScopeAspect.java index 7075fdb..fb652cf 100644 --- a/ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/aspectj/DataScopeAspect.java +++ b/ruisi_java/ruisi-cc-framework/src/main/java/com/ccsens/framework/aspectj/DataScopeAspect.java @@ -109,7 +109,7 @@ public class DataScopeAspect { sqlString.append(StringUtils.format(" OR {}.dept_id = {} ", deptAlias, user.getDeptId())); } else if (DATA_SCOPE_DEPT_AND_CHILD.equals(dataScope)) { sqlString.append(StringUtils.format( - " OR {}.dept_id IN ( SELECT dept_id FROM sys_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", + " OR {}.dept_id IN ( SELECT dept_id FROM ums_dept WHERE dept_id = {} or find_in_set( {} , ancestors ) )", deptAlias, user.getDeptId(), user.getDeptId())); } else if (DATA_SCOPE_SELF.equals(dataScope)) { if (StringUtils.isNotBlank(userAlias)) { diff --git a/ruisi_java/ruisi-web-admin/src/main/resources/mapper/dao/PmsPatientDao.xml b/ruisi_java/ruisi-web-admin/src/main/resources/mapper/dao/PmsPatientDao.xml index 2944e34..c4f24b3 100644 --- a/ruisi_java/ruisi-web-admin/src/main/resources/mapper/dao/PmsPatientDao.xml +++ b/ruisi_java/ruisi-web-admin/src/main/resources/mapper/dao/PmsPatientDao.xml @@ -114,6 +114,8 @@ LEFT JOIN ems_evaluation ee ON pp.id = ee.patient_id and ee.del_flag = 0 LEFT JOIN ums_user uu ON ee.tester_id = uu.user_id LEFT JOIN ums_dept ud ON pp.hospital_id = ud.dept_id + left join pms_patient_body pb on pp.id = pb.patient_id + LEFT JOIN ums_user uu1 ON pp.create_by = uu1.user_name WHERE pp.del_flag = 0 @@ -171,10 +173,18 @@ - and uu.dept_id IN ( - SELECT d.dept_id FROM ums_user u LEFT JOIN ums_dept d on (d.dept_id = u.dept_id or - FIND_IN_SET(u.dept_id,ancestors)) - WHERE user_id = #{userId} + and ( + uu.dept_id IN ( + SELECT d.dept_id FROM ums_user u LEFT JOIN ums_dept d on (d.dept_id = u.dept_id or + FIND_IN_SET(u.dept_id,ancestors)) + WHERE user_id = #{userId} + ) + or + uu1.dept_id IN ( + SELECT d.dept_id FROM ums_user u LEFT JOIN ums_dept d on (d.dept_id = u.dept_id or + FIND_IN_SET(u.dept_id,ancestors)) + WHERE user_id = #{userId} + ) ) @@ -307,7 +317,7 @@ from pms_patient_body b left join pms_patient p on b.patient_id = p.id - left join ums_user uu on p.create_by = uu.user_name + left join ums_user uu on b.create_by = uu.user_name b.del_flag = 0 and p.del_flag = 0 @@ -335,5 +345,8 @@ order by b.id desc + + + \ No newline at end of file From afb7d9a8ddb49a83ed5e862f718de7b06342f92e Mon Sep 17 00:00:00 2001 From: ccsens_zhengzhichuan Date: Fri, 13 Mar 2026 17:52:43 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E6=8A=A5=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/persist/dao/StatisticsDao.java | 62 +++- .../system/service/StatisticsService.java | 30 +- .../service/impl/StatisticsServiceImpl.java | 70 ++-- .../resources/mapper/dao/StatisticsDao.xml | 141 +++++-- .../admin/controller/RmsController.java | 14 +- .../controller/StatisticsController.java | 349 ++++++++++++------ .../admin/controller/TjfxController.java | 308 ++++++++-------- .../com/ccsens/admin/persist/dao/RmsDao.java | 2 +- .../admin/service/impl/RmsServiceImpl.java | 23 +- .../src/main/resources/mapper/dao/RmsDao.xml | 94 +++-- 10 files changed, 674 insertions(+), 419 deletions(-) diff --git a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/dao/StatisticsDao.java b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/dao/StatisticsDao.java index dc92dcd..9033170 100644 --- a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/dao/StatisticsDao.java +++ b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/persist/dao/StatisticsDao.java @@ -16,78 +16,104 @@ public interface StatisticsDao { /** * 综合数据 + * * @param dto * @return */ - HomeDpVo.Zhsjgl nntotal(@Param("dto") StatisticsDto.Query dto); + HomeDpVo.Zhsjgl nntotal(@Param("dto") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); Integer getPatientNum(@Param("dto") StatisticsDto.Query dto, - @Param("sex") Byte sex); + @Param("sex") Byte sex, + @Param("deptIdLIst") List deptIdLIst); /** * BMI + * * @param dto * @return */ - HomeDpVo.Bmi nnbmihjxy(@Param("dto") StatisticsDto.Query dto); + HomeDpVo.Bmi nnbmihjxy(@Param("dto") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); /** * 最新评估情况 + * * @param dto * @return */ - List nnlast(@Param("dto") StatisticsDto.Query dto); + List nnlast(@Param("dto") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); /** * 年龄分布 + * * @param dto * @return */ - HomeDpVo.Nlfb nnage(@Param("dto") StatisticsDto.Query dto); + HomeDpVo.Nlfb nnage(@Param("dto") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); /** * T值分析 + * * @param dto * @return */ - HomeDpVo.Tz nntgb(@Param("dto") StatisticsDto.Query dto); + HomeDpVo.Tz nntgb(@Param("dto") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); - HomeDpVo.Ypzb nnYpzb(@Param("dto") StatisticsDto.Query dto); + HomeDpVo.Ypzb nnYpzb(@Param("dto") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); /** * 疾病排行 + * * @param dto * @return */ - List nnicd(@Param("dto") StatisticsDto.Query dto); + List nnicd(@Param("dto") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); /** * 地图 + * * @param dto * @return */ - List nnmap(@Param("dto") StatisticsDto.Query dto); + List nnmap(@Param("dto") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); /** * 评估结果 + * * @param dto * @return */ - List nnscale(@Param("dto") StatisticsDto.Query dto); + List nnscale(@Param("dto") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); - List qualificationStatistics(@Param("dto") StatisticsDto.Query dto); + List qualificationStatistics(@Param("dto") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); - HomeDpVo.JzStatistics JzStatistics(@Param("param") StatisticsDto.Query dto); + HomeDpVo.JzStatistics JzStatistics(@Param("param") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); - HomeDpVo.JzStatistics JzStatisticsNum(@Param("dto") StatisticsDto.Query dto); + HomeDpVo.JzStatistics JzStatisticsNum(@Param("dto") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); - List scaleStatistics(@Param("dto") StatisticsDto.Query dto); + List scaleStatistics(@Param("dto") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); - List versionStatistics(@Param("dto") StatisticsDto.Query dto); + List versionStatistics(@Param("dto") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); - List userStatistics(@Param("dto") StatisticsDto.Query dto); + List userStatistics(@Param("dto") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); - HomeDpVo.SexStatistics sexStatistics(@Param("dto") StatisticsDto.Query dto); + HomeDpVo.SexStatistics sexStatistics(@Param("dto") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); - HomeDpVo.XyYjStatistics xyYjStatistics(@Param("dto") StatisticsDto.Query dto); + HomeDpVo.XyYjStatistics xyYjStatistics(@Param("dto") StatisticsDto.Query dto, + @Param("deptIdLIst") List deptIdLIst); } diff --git a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/StatisticsService.java b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/StatisticsService.java index c16bc8f..b996007 100644 --- a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/StatisticsService.java +++ b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/StatisticsService.java @@ -14,32 +14,32 @@ import java.util.List; */ public interface StatisticsService { - HomeDpVo.Zhsjgl nntotal(StatisticsDto.Query dto); + HomeDpVo.Zhsjgl nntotal(StatisticsDto.Query dto, List deptIdLIst); - HomeDpVo.Bmi nnbmihjxy(StatisticsDto.Query dto); - List nnlast(StatisticsDto.Query dto); - HomeDpVo.Nlfb nnage(StatisticsDto.Query dto); - HomeDpVo.Tz nntgb(StatisticsDto.Query dto); - List nnicd(StatisticsDto.Query dto); - List nnmap(StatisticsDto.Query dto); - List nnscale(StatisticsDto.Query dto); + HomeDpVo.Bmi nnbmihjxy(StatisticsDto.Query dto, List deptIdLIst); + List nnlast(StatisticsDto.Query dto, List deptIdLIst); + HomeDpVo.Nlfb nnage(StatisticsDto.Query dto, List deptIdLIst); + HomeDpVo.Tz nntgb(StatisticsDto.Query dto, List deptIdLIst); + List nnicd(StatisticsDto.Query dto, List deptIdLIst); + List nnmap(StatisticsDto.Query dto, List deptIdLIst); + List nnscale(StatisticsDto.Query dto, List deptIdLIst); /** * 学历统计 * @param dto * @return */ - List qualificationStatistics(StatisticsDto.Query dto); + List qualificationStatistics(StatisticsDto.Query dto, List deptIdLIst); - HomeDpVo.JzStatistics jzStatistics(StatisticsDto.Query dto); + HomeDpVo.JzStatistics jzStatistics(StatisticsDto.Query dto, List deptIdLIst); - List scaleStatistics(StatisticsDto.Query dto); + List scaleStatistics(StatisticsDto.Query dto, List deptIdLIst); - List versionStatistics(StatisticsDto.Query dto); + List versionStatistics(StatisticsDto.Query dto, List deptIdLIst); - List userStatistics(StatisticsDto.Query dto); + List userStatistics(StatisticsDto.Query dto, List deptIdLIst); - HomeDpVo.SexStatistics sexStatistics(StatisticsDto.Query dto); + HomeDpVo.SexStatistics sexStatistics(StatisticsDto.Query dto, List deptIdLIst); - HomeDpVo.XyYjStatistics xyYjStatistics(StatisticsDto.Query dto); + HomeDpVo.XyYjStatistics xyYjStatistics(StatisticsDto.Query dto, List deptIdLIst); } diff --git a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/StatisticsServiceImpl.java b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/StatisticsServiceImpl.java index e84aed1..25e12ee 100644 --- a/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/StatisticsServiceImpl.java +++ b/ruisi_java/ruisi-system/src/main/java/com/ccsens/system/service/impl/StatisticsServiceImpl.java @@ -26,112 +26,112 @@ public class StatisticsServiceImpl implements StatisticsService { private StatisticsDao statisticsDao; @Override - public HomeDpVo.Zhsjgl nntotal(StatisticsDto.Query dto) { + public HomeDpVo.Zhsjgl nntotal(StatisticsDto.Query dto, List deptIdLIst) { if (dto.getTimeType() != null) { List dateByType = getDateByType(dto.getTimeType(), dto.getBeginTime()); dto.setBeginTime(dateByType.get(0)); dto.setEndTime(dateByType.get(1)); } - HomeDpVo.Zhsjgl nntotal = statisticsDao.nntotal(dto); + HomeDpVo.Zhsjgl nntotal = statisticsDao.nntotal(dto, deptIdLIst); if (nntotal == null) { nntotal = new HomeDpVo.Zhsjgl(); } - nntotal.setPtotal(statisticsDao.getPatientNum(dto, null)); - nntotal.setMtotal(statisticsDao.getPatientNum(dto, (byte) 0)); - nntotal.setFtotal(statisticsDao.getPatientNum(dto, (byte) 1)); + nntotal.setPtotal(statisticsDao.getPatientNum(dto, null, deptIdLIst)); + nntotal.setMtotal(statisticsDao.getPatientNum(dto, (byte) 0, deptIdLIst)); + nntotal.setFtotal(statisticsDao.getPatientNum(dto, (byte) 1, deptIdLIst)); return nntotal; } @Override - public HomeDpVo.Bmi nnbmihjxy(StatisticsDto.Query dto) { + public HomeDpVo.Bmi nnbmihjxy(StatisticsDto.Query dto, List deptIdLIst) { if (dto.getTimeType() != null) { List dateByType = getDateByType(dto.getTimeType(), dto.getBeginTime()); dto.setBeginTime(dateByType.get(0)); dto.setEndTime(dateByType.get(1)); } - return statisticsDao.nnbmihjxy(dto); + return statisticsDao.nnbmihjxy(dto, deptIdLIst); } @Override - public List nnlast(StatisticsDto.Query dto) { + public List nnlast(StatisticsDto.Query dto, List deptIdLIst) { if (dto.getTimeType() != null) { List dateByType = getDateByType(dto.getTimeType(), dto.getBeginTime()); dto.setBeginTime(dateByType.get(0)); dto.setEndTime(dateByType.get(1)); } - return statisticsDao.nnlast(dto); + return statisticsDao.nnlast(dto, deptIdLIst); } @Override - public HomeDpVo.Nlfb nnage(StatisticsDto.Query dto) { + public HomeDpVo.Nlfb nnage(StatisticsDto.Query dto, List deptIdLIst) { if (dto.getTimeType() != null) { List dateByType = getDateByType(dto.getTimeType(), dto.getBeginTime()); dto.setBeginTime(dateByType.get(0)); dto.setEndTime(dateByType.get(1)); } - return statisticsDao.nnage(dto); + return statisticsDao.nnage(dto, deptIdLIst); } @Override - public HomeDpVo.Tz nntgb(StatisticsDto.Query dto) { + public HomeDpVo.Tz nntgb(StatisticsDto.Query dto, List deptIdLIst) { if (dto.getTimeType() != null) { List dateByType = getDateByType(dto.getTimeType(), dto.getBeginTime()); dto.setBeginTime(dateByType.get(0)); dto.setEndTime(dateByType.get(1)); } - return statisticsDao.nntgb(dto); + return statisticsDao.nntgb(dto, deptIdLIst); } @Override - public List nnicd(StatisticsDto.Query dto) { + public List nnicd(StatisticsDto.Query dto, List deptIdLIst) { if (dto.getTimeType() != null) { List dateByType = getDateByType(dto.getTimeType(), dto.getBeginTime()); dto.setBeginTime(dateByType.get(0)); dto.setEndTime(dateByType.get(1)); } - return statisticsDao.nnicd(dto); + return statisticsDao.nnicd(dto, deptIdLIst); } @Override - public List nnmap(StatisticsDto.Query dto) { + public List nnmap(StatisticsDto.Query dto, List deptIdLIst) { if (dto.getTimeType() != null) { List dateByType = getDateByType(dto.getTimeType(), dto.getBeginTime()); dto.setBeginTime(dateByType.get(0)); dto.setEndTime(dateByType.get(1)); } - return statisticsDao.nnmap(dto); + return statisticsDao.nnmap(dto, deptIdLIst); } @Override - public List nnscale(StatisticsDto.Query dto) { + public List nnscale(StatisticsDto.Query dto, List deptIdLIst) { if (dto.getTimeType() != null) { List dateByType = getDateByType(dto.getTimeType(), dto.getBeginTime()); dto.setBeginTime(dateByType.get(0)); dto.setEndTime(dateByType.get(1)); } - return statisticsDao.nnscale(dto); + return statisticsDao.nnscale(dto, deptIdLIst); } @Override - public List qualificationStatistics(StatisticsDto.Query dto) { + public List qualificationStatistics(StatisticsDto.Query dto, List deptIdLIst) { if (dto.getTimeType() != null) { List dateByType = getDateByType(dto.getTimeType(), dto.getBeginTime()); dto.setBeginTime(dateByType.get(0)); dto.setEndTime(dateByType.get(1)); } - return statisticsDao.qualificationStatistics(dto); + return statisticsDao.qualificationStatistics(dto, deptIdLIst); } @Override - public HomeDpVo.JzStatistics jzStatistics(StatisticsDto.Query dto) { + public HomeDpVo.JzStatistics jzStatistics(StatisticsDto.Query dto, List deptIdLIst) { if (dto.getTimeType() != null) { List dateByType = getDateByType(dto.getTimeType(), dto.getBeginTime()); dto.setBeginTime(dateByType.get(0)); dto.setEndTime(dateByType.get(1)); } -// HomeDpVo.JzStatistics jzStatistics = statisticsDao.JzStatisticsNum(dto); +// HomeDpVo.JzStatistics jzStatistics = statisticsDao.JzStatisticsNum(dto, deptIdLIst); // if (jzStatistics!= null) { - HomeDpVo.JzStatistics jzStatistics = statisticsDao.JzStatistics(dto); + HomeDpVo.JzStatistics jzStatistics = statisticsDao.JzStatistics(dto, deptIdLIst); // jzStatistics.setZyNum(jzStatistics1.getZyNum()); // jzStatistics.setMzNum(jzStatistics1.getMzNum()); // } @@ -139,37 +139,37 @@ public class StatisticsServiceImpl implements StatisticsService { } @Override - public List scaleStatistics(StatisticsDto.Query dto) { + public List scaleStatistics(StatisticsDto.Query dto, List deptIdLIst) { if (dto.getTimeType() != null) { List dateByType = getDateByType(dto.getTimeType(), dto.getBeginTime()); dto.setBeginTime(dateByType.get(0)); dto.setEndTime(dateByType.get(1)); } - return statisticsDao.scaleStatistics(dto); + return statisticsDao.scaleStatistics(dto, deptIdLIst); } @Override - public List versionStatistics(StatisticsDto.Query dto) { + public List versionStatistics(StatisticsDto.Query dto, List deptIdLIst) { if (dto.getTimeType() != null) { List dateByType = getDateByType(dto.getTimeType(), dto.getBeginTime()); dto.setBeginTime(dateByType.get(0)); dto.setEndTime(dateByType.get(1)); } - return statisticsDao.versionStatistics(dto); + return statisticsDao.versionStatistics(dto, deptIdLIst); } @Override - public List userStatistics(StatisticsDto.Query dto) { + public List userStatistics(StatisticsDto.Query dto, List deptIdLIst) { if (dto.getTimeType() != null) { List dateByType = getDateByType(dto.getTimeType(), dto.getBeginTime()); dto.setBeginTime(dateByType.get(0)); dto.setEndTime(dateByType.get(1)); } - return statisticsDao.userStatistics(dto); + return statisticsDao.userStatistics(dto, deptIdLIst); } @Override - public HomeDpVo.SexStatistics sexStatistics(StatisticsDto.Query dto) { + public HomeDpVo.SexStatistics sexStatistics(StatisticsDto.Query dto, List deptIdLIst) { if (dto.getTimeType() != null) { List dateByType = getDateByType(dto.getTimeType(), dto.getBeginTime()); dto.setBeginTime(dateByType.get(0)); @@ -177,15 +177,15 @@ public class StatisticsServiceImpl implements StatisticsService { } HomeDpVo.SexStatistics sexStatistics = new HomeDpVo.SexStatistics(); - sexStatistics.setBoy(statisticsDao.getPatientNum(dto, (byte) 0)); - sexStatistics.setGirl(statisticsDao.getPatientNum(dto, (byte) 1)); + sexStatistics.setBoy(statisticsDao.getPatientNum(dto, (byte) 0, deptIdLIst)); + sexStatistics.setGirl(statisticsDao.getPatientNum(dto, (byte) 1, deptIdLIst)); return sexStatistics; } @Override - public HomeDpVo.XyYjStatistics xyYjStatistics(StatisticsDto.Query dto) { - return statisticsDao.xyYjStatistics(dto); + public HomeDpVo.XyYjStatistics xyYjStatistics(StatisticsDto.Query dto, List deptIdLIst) { + return statisticsDao.xyYjStatistics(dto, deptIdLIst); } /** diff --git a/ruisi_java/ruisi-system/src/main/resources/mapper/dao/StatisticsDao.xml b/ruisi_java/ruisi-system/src/main/resources/mapper/dao/StatisticsDao.xml index 382b074..2f83260 100644 --- a/ruisi_java/ruisi-system/src/main/resources/mapper/dao/StatisticsDao.xml +++ b/ruisi_java/ruisi-system/src/main/resources/mapper/dao/StatisticsDao.xml @@ -14,15 +14,18 @@ ems_evaluation e LEFT JOIN ums_user u ON e.create_by = u.user_name where e.del_flag = 0 and e.complete_status != 0 - - AND u.dept_id = #{dto.deptId} - AND e.create_time >= #{dto.beginTime} AND e.create_time <= #{dto.endTime} + + AND u.dept_id IN + + #{item} + + SELECT - rr.id as evaluationId, + rr.id as reportId, + ee.id as evaluationId, pp.name, pp.sex, pb.outpatient_no as outpatientNo, @@ -1024,8 +1025,8 @@ d.dept_name as hospitalName FROM rms_report rr Left Join pms_patient_body pb on rr.visit_no = pb.outpatient_no and pb.del_flag = 0 - LEFT JOIN pms_patient pp on pb.patient_id = pp.id left join ems_evaluation ee on rr.evaluation_id = ee.id + LEFT JOIN pms_patient pp on ee.patient_id = pp.id LEFT JOIN hms_version hv on ee.version = hv.id LEFT JOIN ums_user uu on ee.tester_id = uu.user_id LEFT JOIN ems_evaluation_scale_relevance e on e.evaluation_id = ee.id and e.del_flag = 0 @@ -1499,47 +1500,60 @@ d.dept_name as hospitalName - SELECT - DISTINCT - pp.id as patientId, - pp.`name` as patientName, + SELECT DISTINCT + a.patientId, + a.patientName, + a.sex, + a.idcard, + a.phone, -- 核心修复:将 a.mobile 改为 a.phone(与内层别名一致) + a.educationalStatus, + a.independentLivingSkills, + a.birthNumber, + a.dwellingState, + a.lastEvaluationTime, + a.lastTesterName, -- 修正之前的笔误(原 astTesterName) + a.evaluationCount, + a.createBy, + a.createTime, + a.hospitalName, + a.birthday, + a.career, + a.maritalStatus, + a.domicile, + a.nation, + a.nativePlace, + a.contactName, + a.contactRelation, + a.contactMobile, + a.address, + a.belief, + a.hobby, + a.aboBloodType, + a.rhBloodType + FROM + ( + SELECT DISTINCT + pp.id AS patientId, + pp.`name` AS patientName, pp.sex, --- pp.age, pp.idcard, - pp.mobile as phone, - pp.educational_status as educationalStatus, - pp.independent_living_skills as independentLivingSkills, - pp.birth_number as birthNumber, - pp.dwelling_state as dwellingState, - MAX(ee.create_time) as lastEvaluationTime, - uu.nick_name as lastTesterName, - COUNT(ee.id) as evaluationCount, - (select nick_name from ums_user where user_name = pp.create_by and del_flag = 0) as createBy, - pp.create_time as createTime, - ud.dept_name as hospitalName, + pp.mobile AS phone, -- 内层别名是 phone + pp.educational_status AS educationalStatus, + pp.independent_living_skills AS independentLivingSkills, + pp.birth_number AS birthNumber, + pp.dwelling_state AS dwellingState, + MAX(ee.create_time) AS lastEvaluationTime, + uu.nick_name AS lastTesterName, + COUNT(ee.id) AS evaluationCount, + (SELECT nick_name FROM ums_user WHERE user_name = pp.create_by AND del_flag = 0) AS createBy, + pp.create_time AS createTime, + ud.dept_name AS hospitalName, pp.birthday, pp.career, - pp.marital_status as maritalStatus, + pp.marital_status AS maritalStatus, pp.domicile, pp.nation, - pp.native_place as nativePlace, - pp.contact_name as contactName, - pp.contact_relation as contactRelation, - pp.contact_mobile as contactMobile, + pp.native_place AS nativePlace, + pp.contact_name AS contactName, + pp.contact_relation AS contactRelation, + pp.contact_mobile AS contactMobile, pp.address, pp.belief, pp.hobby, - pp.abo_blood_type as aboBloodType, - pp.rh_blood_type as rhBloodType + pp.abo_blood_type AS aboBloodType, + pp.rh_blood_type AS rhBloodType FROM pms_patient pp - LEFT JOIN ems_evaluation ee ON pp.id = ee.patient_id and ee.del_flag = 0 + LEFT JOIN ems_evaluation ee ON pp.id = ee.patient_id AND ee.del_flag = 0 LEFT JOIN ums_user uu ON ee.tester_id = uu.user_id LEFT JOIN ums_dept ud ON pp.hospital_id = ud.dept_id - left join pms_patient_body pb on pp.id = pb.patient_id - LEFT JOIN ums_user uu1 ON pp.create_by = uu1.user_name WHERE pp.del_flag = 0 + + + and pp.hospital_id IN + + #{item} + + + and ( pp.name like CONCAT('%',#{param.searchValue},'%') @@ -138,13 +174,13 @@ and pp.hospital_id = #{param.hospitalId} - + and pp.sex = #{param.sex} - and pp.hospital_id = #{param.deptId} + and pp.hospital_id = #{param.deptId} - + and pp.educational_status = #{param.educationalStatus} @@ -171,43 +207,112 @@ - - + GROUP BY + pp.id + UNION ALL + SELECT DISTINCT + pp.id AS patientId, + pp.`name` AS patientName, + pp.sex, + pp.idcard, + pp.mobile AS phone, -- 内层别名统一为 phone + pp.educational_status AS educationalStatus, + pp.independent_living_skills AS independentLivingSkills, + pp.birth_number AS birthNumber, + pp.dwelling_state AS dwellingState, + MAX(ee.create_time) AS lastEvaluationTime, + uu.nick_name AS lastTesterName, + COUNT(ee.id) AS evaluationCount, + (SELECT nick_name FROM ums_user WHERE user_name = pp.create_by AND del_flag = 0) AS createBy, + pp.create_time AS createTime, + ud.dept_name AS hospitalName, + pp.birthday, + pp.career, + pp.marital_status AS maritalStatus, + pp.domicile, + pp.nation, + pp.native_place AS nativePlace, + pp.contact_name AS contactName, + pp.contact_relation AS contactRelation, + pp.contact_mobile AS contactMobile, + pp.address, + pp.belief, + pp.hobby, + pp.abo_blood_type AS aboBloodType, + pp.rh_blood_type AS rhBloodType + FROM + pms_patient pp + LEFT JOIN pms_patient_body pb ON pb.patient_id = pp.id AND pb.del_flag = 0 + LEFT JOIN ems_evaluation ee ON pp.id = ee.patient_id AND ee.del_flag = 0 + LEFT JOIN ums_user uu ON ee.tester_id = uu.user_id + LEFT JOIN ums_dept ud ON pp.hospital_id = ud.dept_id + WHERE + pp.del_flag = 0 + and ( - uu.dept_id IN ( - SELECT d.dept_id FROM ums_user u LEFT JOIN ums_dept d on (d.dept_id = u.dept_id or - FIND_IN_SET(u.dept_id,ancestors)) - WHERE user_id = #{userId} - ) - or - uu1.dept_id IN ( - SELECT d.dept_id FROM ums_user u LEFT JOIN ums_dept d on (d.dept_id = u.dept_id or - FIND_IN_SET(u.dept_id,ancestors)) - WHERE user_id = #{userId} - ) + pp.name like CONCAT('%',#{param.searchValue},'%') + or + pp.name_initial like CONCAT('%',LOWER(#{param.searchValue}),'%') + or + pp.name_full like CONCAT('%',LOWER(#{param.searchValue}),'%') + or + pp.idcard like CONCAT('%',#{param.searchValue},'%') ) - - - - - - - - - - - - - - - - - - - - GROUP BY pp.id - order by pp.create_time desc + + and date_format(pp.create_time,'%y%m%d') >= date_format(#{param.beginTime},'%y%m%d') + + + and date_format(pp.create_time,'%y%m%d') <= date_format(#{param.endTime},'%y%m%d') + + + and pp.hospital_id = #{param.hospitalId} + + + and pp.sex = #{param.sex} + + + and pp.hospital_id = #{param.deptId} + + + and pp.educational_status = #{param.educationalStatus} + + + + + and (TIMESTAMPDIFF(YEAR, pp.birthday, CURDATE()) - + (DATE_FORMAT(CURDATE(), '%m%d') < DATE_FORMAT(pp.birthday, '%m%d'))) < 60 + + + and (TIMESTAMPDIFF(YEAR, pp.birthday, CURDATE()) - + (DATE_FORMAT(CURDATE(), '%m%d') < DATE_FORMAT(pp.birthday, '%m%d'))) BETWEEN 60 AND 69 + + + and (TIMESTAMPDIFF(YEAR, pp.birthday, CURDATE()) - + (DATE_FORMAT(CURDATE(), '%m%d') < DATE_FORMAT(pp.birthday, '%m%d'))) BETWEEN 70 AND 79 + + + and (TIMESTAMPDIFF(YEAR, pp.birthday, CURDATE()) - + (DATE_FORMAT(CURDATE(), '%m%d') < DATE_FORMAT(pp.birthday, '%m%d'))) BETWEEN 80 AND 89 + + + and (TIMESTAMPDIFF(YEAR, pp.birthday, CURDATE()) - + (DATE_FORMAT(CURDATE(), '%m%d') < DATE_FORMAT(pp.birthday, '%m%d'))) >= 90 + + + + + + and pp.hospital_id IN + + #{item} + + + + GROUP BY + pp.id + ) a + ORDER BY a.createTime DESC - SELECT - DISTINCT - pp.id as patientId, - pp.`name` as patientName, + SELECT DISTINCT + a.patientId, + a.patientName, + a.sex, + a.idcard, + a.phone, -- 核心修复:将 a.mobile 改为 a.phone(与内层别名一致) + a.educationalStatus, + a.independentLivingSkills, + a.birthNumber, + a.dwellingState, + a.lastEvaluationTime, + a.lastTesterName, -- 修正之前的笔误(原 astTesterName) + a.evaluationCount, + a.createBy, + a.createTime, + a.hospitalName, + a.birthday, + a.career, + a.maritalStatus, + a.domicile, + a.nation, + a.nativePlace, + a.contactName, + a.contactRelation, + a.contactMobile, + a.address, + a.belief, + a.hobby, + a.aboBloodType, + a.rhBloodType + FROM + ( + SELECT DISTINCT + pp.id AS patientId, + pp.`name` AS patientName, pp.sex, pp.idcard, - pp.mobile as phone, - pp.birth_year as birthYear, + pp.mobile AS phone, -- 内层别名是 phone + pp.educational_status AS educationalStatus, + pp.independent_living_skills AS independentLivingSkills, + pp.birth_number AS birthNumber, + pp.dwelling_state AS dwellingState, + MAX(ee.create_time) AS lastEvaluationTime, + uu.nick_name AS lastTesterName, + COUNT(ee.id) AS evaluationCount, + (SELECT nick_name FROM ums_user WHERE user_name = pp.create_by AND del_flag = 0) AS createBy, + pp.create_time AS createTime, + ud.dept_name AS hospitalName, pp.birthday, + pp.career, + pp.marital_status AS maritalStatus, + pp.domicile, + pp.nation, + pp.native_place AS nativePlace, + pp.contact_name AS contactName, + pp.contact_relation AS contactRelation, + pp.contact_mobile AS contactMobile, + pp.address, pp.belief, pp.hobby, - pp.contact_name as contactName, - pp.contact_relation as contactRelation, - pp.contact_mobile as contactMobile, - pp.contact_other as contactOther, - pp.id_card_type as idCardType, - pp.id_card_type_other as idCardTypeOther, - pp.abo_blood_type as aboBloodType, - pp.rh_blood_type as rhBloodType, - MAX(ae.create_time) as lastEvaluationTime, - uu.nick_name as lastTesterName, - COUNT(ae.id) as evaluationCount, - (select nick_name from ums_user where user_name = pp.create_by and del_flag = 0) as creatorName, - pp.create_time as createTime + pp.abo_blood_type AS aboBloodType, + pp.rh_blood_type AS rhBloodType FROM pms_patient pp - LEFT JOIN ems_evaluation ae on pp.id = ae.patient_id - LEFT JOIN ums_user uu on pp.create_by = uu.user_name - left join pms_patient_body pb on pp.id = pb.patient_id + LEFT JOIN ems_evaluation ee ON pp.id = ee.patient_id AND ee.del_flag = 0 + LEFT JOIN ums_user uu ON ee.tester_id = uu.user_id + LEFT JOIN ums_dept ud ON pp.hospital_id = ud.dept_id WHERE pp.del_flag = 0 + + + and pp.hospital_id IN + + #{item} + + + and ( pp.name like CONCAT('%',#{searchValue},'%') @@ -68,42 +115,81 @@ pb.outpatient_no like CONCAT('%',#{searchValue},'%') ) - - and (pp.idcard = #{idcard} or pp.idcard = #{idcardEncrypt}) - - - and uu.dept_id IN ( SELECT d.dept_id FROM ums_user u LEFT JOIN ums_dept d on (d.dept_id = u.dept_id or FIND_IN_SET(u.dept_id,ancestors)) - WHERE user_id = #{userId} - ) - - - - - - - - - - - - - - - - - - - - - - - - - - - GROUP BY pp.id - order by pp.create_time desc + + and (pp.idcard = #{idcard} or pp.idcard = #{idcardEncrypt}) + + GROUP BY + pp.id + UNION ALL + SELECT DISTINCT + pp.id AS patientId, + pp.`name` AS patientName, + pp.sex, + pp.idcard, + pp.mobile AS phone, -- 内层别名统一为 phone + pp.educational_status AS educationalStatus, + pp.independent_living_skills AS independentLivingSkills, + pp.birth_number AS birthNumber, + pp.dwelling_state AS dwellingState, + MAX(ee.create_time) AS lastEvaluationTime, + uu.nick_name AS lastTesterName, + COUNT(ee.id) AS evaluationCount, + (SELECT nick_name FROM ums_user WHERE user_name = pp.create_by AND del_flag = 0) AS createBy, + pp.create_time AS createTime, + ud.dept_name AS hospitalName, + pp.birthday, + pp.career, + pp.marital_status AS maritalStatus, + pp.domicile, + pp.nation, + pp.native_place AS nativePlace, + pp.contact_name AS contactName, + pp.contact_relation AS contactRelation, + pp.contact_mobile AS contactMobile, + pp.address, + pp.belief, + pp.hobby, + pp.abo_blood_type AS aboBloodType, + pp.rh_blood_type AS rhBloodType + FROM + pms_patient pp + LEFT JOIN pms_patient_body pb ON pb.patient_id = pp.id AND pb.del_flag = 0 + LEFT JOIN ems_evaluation ee ON pp.id = ee.patient_id AND ee.del_flag = 0 + LEFT JOIN ums_user uu ON ee.tester_id = uu.user_id + LEFT JOIN ums_dept ud ON pp.hospital_id = ud.dept_id + WHERE + pp.del_flag = 0 + + and ( + pp.name like CONCAT('%',#{searchValue},'%') + or + pp.name_initial like CONCAT('%',LOWER(#{searchValue}),'%') + or + pp.name_full like CONCAT('%',LOWER(#{searchValue}),'%') + or + pp.idcard like CONCAT('%',#{searchValue},'%') + or + pb.outpatient_no like CONCAT('%',#{searchValue},'%') + ) + + + and (pp.idcard = #{idcard} or pp.idcard = #{idcardEncrypt}) + + + + and pp.hospital_id IN + + #{item} + + + + GROUP BY + pp.id + ) a + ORDER BY a.createTime DESC + +