Revert "```"

This reverts commit abc0674531.
This commit is contained in:
2025-12-26 22:21:21 +08:00
parent ae6c486114
commit 3115e38cc4
920 changed files with 14452 additions and 107025 deletions

View File

@@ -35,9 +35,9 @@ public enum ActivityDefCategory implements HisEnumInterface {
ANESTHESIA(25, "25", "麻醉"),
/**
* 护理级别
* 护理
*/
NURSING(26, "26", "护理级别"),
NURSING(26, "26", "护理"),
/**
* 膳食
@@ -77,7 +77,7 @@ public enum ActivityDefCategory implements HisEnumInterface {
/**
* 死亡
*/
DEATH(36, "36", "死亡"),
death(36, "36", "死亡"),
/**
* 产后
@@ -107,47 +107,7 @@ public enum ActivityDefCategory implements HisEnumInterface {
/**
* 隔离等级
*/
ISOLATION_LEVEL(42, "42", "隔离等级"),
/**
* 口腔检查
*/
ORAL_EXAMINATION(43, "43", "口腔检查"),
/**
* 内镜检查
*/
ENDOSCOPY(44, "44", "内镜检查"),
/**
* 内镜治疗
*/
ENDOSCOPIC_THERAPY(45, "45", "内镜治疗"),
/**
* 基础服务
*/
BASIC_SERVICE(46, "46", "基础服务"),
/**
* 诊断费
*/
DIAGNOSIS_FEE(47, "47", "诊断费"),
/**
* 预防接种手续费
*/
VACCINATION_HANDLING_FEE(48, "48", "预防接种手续费"),
/**
* 口腔治疗
*/
ORAL_TREATMENT(49, "49", "口腔治疗"),
/**
* 护理项目
*/
NURSING_PROJECT(50, "50", "护理项目");
ISOLATION_LEVEL(42, "42", "隔离等级");
@EnumValue
private final Integer value;

View File

@@ -18,39 +18,39 @@ import lombok.Getter;
public enum CatalogType {
/**
* 西药中成药目录
* MEMBER_FIRST
*/
CATALOG_TYPE_1301(1301, "西药中成药目录"),
/**
* 中药饮片目录
* MEMBER_FIRST
*/
CATALOG_TYPE_1302(1302, "中药饮片目录"),
/**
* 医疗机构制剂目录
* MEMBER_FIRST
*/
CATALOG_TYPE_1303(1303, "医疗机构制剂目录"),
/**
* 民族药品目录
* MEMBER_FIRST
*/
CATALOG_TYPE_1304(1304, "民族药品目录"),
/**
* 医疗服务项目目录
* MEMBER_FIRST
*/
CATALOG_TYPE_1305(1305, "医疗服务项目目录"),
/**
* 医用耗材目录
* MEMBER_FIRST
*/
CATALOG_TYPE_1306(1306, "医用耗材目录"),
/**
* 疾病与诊断目录
* MEMBER_FIRST
*/
CATALOG_TYPE_1307(1307, "疾病与诊断目录"),
/**
* 手术操作目录
* MEMBER_FIRST
*/
CATALOG_TYPE_1308(1308, "手术操作目录"),
/**
* 门诊慢特病种目录
* MEMBER_FIRST
*/
CATALOG_TYPE_1309(1309, "门诊慢特病种目录"),
/**

View File

@@ -14,12 +14,7 @@ import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ClinicalStatus implements HisEnumInterface {
ACTIVE(1, "active", "阳性"),
INACTIVE(2, "inactive", "阴性"),
RESOLVED(3, "resolved", "已解决"),
ACTIVE(1, "active", "阳性"), INACTIVE(2, "inactive", "阴性"), RESOLVED(3, "resolved", "已解决"),
UNKNOWN(4, "unknown", "未知");
@EnumValue

View File

@@ -17,9 +17,7 @@ import lombok.Getter;
public enum Criticality implements HisEnumInterface {
LOW(0, "low", ""),
HIGH(1, "high", ""),
UNASSESSABLE(2, "unassessable", "无法评估");
@EnumValue

View File

@@ -0,0 +1,51 @@
package com.openhis.common.enums;
/**
* 删除标识
*
* @author system
*/
public enum DelFlag {
/**
* 未删除
*/
NO(0, "0", "未删除"),
/**
* 已删除
*/
YES(1, "1", "已删除");
private final Integer value;
private final String code;
private final String info;
DelFlag(Integer value, String code, String info) {
this.value = value;
this.code = code;
this.info = info;
}
public String getCode() {
return code;
}
public String getInfo() {
return info;
}
public Integer getValue() {
return value;
}
public static DelFlag getByValue(Integer value) {
if (value == null) {
return null;
}
for (DelFlag val : values()) {
if (val.getValue().equals(value)) {
return val;
}
}
return null;
}
}

View File

@@ -0,0 +1,31 @@
package com.openhis.common.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum DeviceCategory implements HisEnumInterface {
ACTIVE(1, "1", "有源的"), COMMUNICATING(2, "2", "通讯类"), HOMEUSE(3, "3", "非院内使用"), IMPLANTABLE(4, "4", "植入类"),
IN_VITRO(5, "5", "试管类"), POINT_OF_CARE(6, "6", "床旁类"), SINGLE_USE(7, "7", "单次消耗类"), REUSABLE(8, "8", "可重用的"),
SOFTWARE(9, "9", "软件类"), DME(10, "10", "治疗设备");
@EnumValue
private final Integer value;
private final String code;
private final String info;
public static DeviceCategory getByValue(Integer value) {
if (value == null) {
return null;
}
for (DeviceCategory val : values()) {
if (val.getValue().equals(value)) {
return val;
}
}
return null;
}
}

View File

@@ -77,16 +77,10 @@ public enum DispenseStatus implements HisEnumInterface {
* 已配药
*/
PREPARED(14, "PR", "已配药"),
/**
* 撤回
*/
CANCELLED(15, "CA", "撤回"),
/**
* 待退药
*/
PENDING_REFUND(16, "PRD", "待退药");
CANCELLED(15, "CA", "撤回");
private Integer value;
private String code;

View File

@@ -1,34 +0,0 @@
package com.openhis.common.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 来源(Source)类型
*
* @author swb
* @date 2025-11-26
*/
@Getter
@AllArgsConstructor
public enum DocDefinitionEnum{
ADMISSION_VITAL_SIGNS("1", "ADMISSION_VITAL_SIGNS", "入院体征"),
TEMPERATURE("4", "TEMPERATURE", "体温单"),
NURSING_RECORD("3", "NURSING_RECORD", "护理记录");
@EnumValue
private final String value;
private final String code;
private final String info;
public static String getInfoByValue(String value){
for(DocDefinitionEnum definition : DocDefinitionEnum.values()){
if(definition.getValue().equals(value)){
return definition.getInfo();
}
}
return "";
}
}

View File

@@ -12,8 +12,8 @@ import lombok.Getter;
public enum DocStatusEnum implements HisEnumInterface {
DRAFT(0, "DRAFT", "草稿/暂存"),
SAVED(1, "SAVED", "提交"),
ARCHIVED(2, "ARCHIVED", "归档");
// UPDATED(3, "UPDATED", "修改");
ARCHIVED(2, "ARCHIVED", "归档"),
UPDATED(3, "UPDATED", "修改");
@EnumValue
private final Integer value;
private final String code;

View File

@@ -17,13 +17,13 @@ public enum EncounterZyStatus implements HisEnumInterface {
AWAITING_DISCHARGE(3, "awaiting-discharge", "待出院"),
DISCHARGED_FROM_HOSPITAL(4, "discharged-from-hospital", "出院结算"),
DISCHARGED_FROM_HOSPITAL(4, "discharged-from-hospital", "出院"),
ADMITTED_TO_THE_HOSPITAL(5, "admitted-to-the-hospital", "已入院"),
PENDING_TRANSFER(6, "pending-transfer", "待转科"),
ALREADY_SETTLED(7, "already-settled", "已结算出院");
ALREADY_SETTLED(7, "already-settled", "已结算");
@EnumValue
private final Integer value;

View File

@@ -1,53 +0,0 @@
package com.openhis.common.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum InstrumentCategory implements HisEnumInterface{
/**
* 仪器种类
*/
INSTRUMENT_TYPE_BLOOD_CELL_ANALYZER(1, "Blood Cell Analyzer", "血细胞分析仪"),
INSTRUMENT_TYPE_BLOOD_COAGULATION_ANALYZER(2, "Blood Coagulation Analyzer", "血凝仪"),
INSTRUMENT_TYPE_URINE_ANALYZER(3, "Urine Analyzer", "尿液分析仪"),
INSTRUMENT_TYPE_BLOOD_GAS_ANALYZER(4, "Blood Gas Analyzer", "血气分析仪"),
INSTRUMENT_TYPE_BIOCHEMICAL_ANALYZER(5, "Biochemical Analyzer", "生化分析仪"),
INSTRUMENT_TYPE_R_COUNTER(6, "R Counter", "R-计数器"),
INSTRUMENT_TYPE_GENE_AMPLIFICATION_INSTRUMENT(7, "Gene Amplification Instrument", "基因扩增仪"),
INSTRUMENT_TYPE_SEQUENCER(8, "Sequencer", "测序仪"),
INSTRUMENT_TYPE_ENZYME_LABELED_INSTRUMENT(9, "Enzyme Labeled Instrument", "酶标仪"),
INSTRUMENT_TYPE_ELECTROLYTE_ANALYZER(10, "Electrolyte Analyzer", "电解质分析仪"),
INSTRUMENT_TYPE_BACTERIAL_IDENTIFICATION_INSTRUMENT(11, "Bacterial Identification Instrument", "细菌鉴定仪"),
INSTRUMENT_TYPE_MANUAL_ANALYSIS(12, "Manual Analysis", "手工分析"),
INSTRUMENT_TYPE_ELECTROPHORESIS(13, "Electrophoresis", "电泳仪"),
INSTRUMENT_TYPE_SPECIFIC_PROTEIN_ANALYZER(14, "Specific Protein Analyzer", "特定蛋白分析仪"),
INSTRUMENT_TYPE_GLYCOHEMOGLOBIN_ANALYZER(15, "Glycohemoglobin Analyzer", "糖化血红蛋白分析仪"),
INSTRUMENT_TYPE_FLOW_CYTOMETER(16, "Flow Cytometer", "流式细胞仪"),
INSTRUMENT_TYPE_BLOOD_TYPE_ANALYZER(17, "Blood Type Analyzer", "血型分析仪"),
INSTRUMENT_TYPE_HS_CRP_ANALYZER(18, "High-Sensitivity CRP Analyzer", "超敏CRP分析仪"),
INSTRUMENT_TYPE_BLOOD_RHEOLOGY_ANALYZER(19, "Blood Rheology Analyzer", "血流变分析仪"),
INSTRUMENT_TYPE_BLOOD_CULTURE_ANALYZER(20, "Blood Culture Analyzer", "血培养仪");
@EnumValue
private final Integer value;
private final String code;
private final String info;
public static InstrumentCategory getByValue(Integer value) {
if (value == null) {
return null;
}
for (InstrumentCategory val : values()) {
if (val.getValue().equals(value)) {
return val;
}
}
return null;
}
}

View File

@@ -1,49 +0,0 @@
package com.openhis.common.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum InstrumentStatus implements HisEnumInterface{
/**
* 仪器状态
*/
NORMAL(1, "Normal", "日常"),
/**
* 仪器闲置
*/
IDLE(2, "Idle", "闲置"),
/**
* 仪器报损
*/
DAMAGED(3, "Damaged", "报损"),
/**
* 仪器故障
*/
FAULTY(4, "Faulty", "故障");
@EnumValue
private final Integer value;
private final String code;
private final String info;
public static InstrumentStatus getByValue(Integer value) {
if (value == null) {
return null;
}
for (InstrumentStatus val : values()) {
if (val.getValue().equals(value)) {
return val;
}
}
return null;
}
}

View File

@@ -19,9 +19,9 @@ import lombok.Getter;
public enum NursingOrdersClass implements HisEnumInterface {
/**
* 护理级别
* 护理
*/
NURSING(26, "26", "护理级别"),
NURSING(26, "26", "护理"),
/**
* 病情

View File

@@ -1,67 +0,0 @@
package com.openhis.common.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ObservationType implements HisEnumInterface{
/**
* OBSERVATION_TYPE: 实验室检查:如血液、尿液等实验室检查结果
*/
OBSERVATION_TYPE_LABORATORY_TEST(1, "Laboratory Test", "实验室检查"),
/**
* OBSERVATION_TYPE: 临床症状:如体温、呼吸等临床观察症状
*/
OBSERVATION_TYPE_CLINICAL_SYMPTOMS(2, "Clinical Symptoms", "临床症状"),
/**
* OBSERVATION_TYPE: 影像学检查如X光、CT扫描等影像学检查
*/
OBSERVATION_TYPE_IMAGING_EXAMINATION(3, "Imaging Examination", "X光、CT扫描影像学"),
/**
* OBSERVATION_TYPE: 生理指标:如血压、心率、体温等常规生理参数
*/
OBSERVATION_TYPE_PHYSIOLOGICAL_PARAMETERS(4, "Physiological Parameters", "常规生理"),
/**
* OBSERVATION_TYPE: 药物反应:观察药物治疗后的效果
*/
OBSERVATION_TYPE_DRUG_REACTION(5, "Drug Reaction", "药物治疗"),
/**
* OBSERVATION_TYPE: 病理检查:如组织切片、病理学诊断结果
*/
OBSERVATION_TYPE_PATHOLOGY_TEST(6, "Pathology Test", "组织切片、病理学诊断"),
/**
* OBSERVATION_TYPE: 基因检测:基因组或遗传相关检查
*/
OBSERVATION_TYPE_GENETIC_TEST(7, "Genetic Test", "基因组检查"),
/**
* OBSERVATION_TYPE: 其他
*/
OBSERVATION_TYPE_OTHER(8, "Other", "其他类型");
@EnumValue
private final Integer value;
private final String code;
private final String info;
public static ObservationType getByValue(Integer value) {
if (value == null) {
return null;
}
for (ObservationType val : values()) {
if (val.getValue().equals(value)) {
return val;
}
}
return null;
}
}

View File

@@ -24,8 +24,7 @@ public enum ProcedureCategory {
OUTPATIENT_ADVICE(10, "10", "门诊医嘱"),
INPATIENT_ADVICE(11, "11", "住院医嘱"),
INPATIENT_NURSE_ADVICE(12, "12", "住院护理医嘱");
INPATIENT_ADVICE(11, "11", "住院医嘱");
@EnumValue
private final Integer value;

View File

@@ -1,18 +0,0 @@
package com.openhis.common.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum ReportCodeEnum {
ANNUAL_TOTAL_DRUG_INCOME("1", "ANNUAL_TOTAL_DRUG_INCOME", "年度药品总收入"),
PRODUCT_TRANSFER("2", "PRODUCT_TRANSFER", "药品调拨");
@EnumValue
private final String value;
private final String code;
private final String info;
}

View File

@@ -16,9 +16,7 @@ import lombok.Getter;
public enum Severity implements HisEnumInterface {
MILD(0, "mild", "轻微"),
MODERATE(1, "moderate", "中度"),
SEVERE(2, "severe", "严重");
@EnumValue

View File

@@ -1,44 +0,0 @@
package com.openhis.common.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum SpecimenType implements HisEnumInterface{
/**
* 样本种类
*/
SPECIMEN_TYPE_BLOOD(1, "Blood", "血液样本"),
SPECIMEN_TYPE_URINE(2, "Urine", "尿液样本"),
SPECIMEN_TYPE_SALIVA(3, "Saliva", "唾液样本"),
SPECIMEN_TYPE_TISSUE(4, "Tissue", "组织样本"),
SPECIMEN_TYPE_CSF(5, "Cerebrospinal Fluid", "脑脊液样本"),
SPECIMEN_TYPE_SPUTUM(6, "Sputum", "痰液样本"),
SPECIMEN_TYPE_FECES(7, "Feces", "粪便样本"),
SPECIMEN_TYPE_SWAB(8, "Swab", "拭子样本"),
SPECIMEN_TYPE_BONE_MARROW(9, "Bone Marrow", "骨髓样本"),
SPECIMEN_TYPE_SEMEN(10, "Semen", "精液样本"),
SPECIMEN_TYPE_AMNIOTIC_FLUID(11, "Amniotic Fluid", "羊水样本"),
SPECIMEN_TYPE_HAIR(12, "Hair", "毛发样本"),
SPECIMEN_TYPE_NAIL(13, "Nail", "指甲样本");
@EnumValue
private final Integer value;
private final String code;
private final String info;
public static SpecimenType getByValue(Integer value) {
if (value == null) {
return null;
}
for (SpecimenType val : values()) {
if (val.getValue().equals(value)) {
return val;
}
}
return null;
}
}

View File

@@ -1,39 +0,0 @@
package com.openhis.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 体温单枚举
*
* @author swb
* @date 2025-11-21
*/
@Getter
@AllArgsConstructor
public enum TemperatureChartEnum {
TEMPERATURE_CHINESE("00301","","体温拒测等汉字"),
BREATH("001", "breathe", "呼吸"),
PULSE("002", "pulse", "脉搏"),
TEMPERATURE("003", "temperature", "体温"),
BLOOD_PRESSURE("008", "bloodPressure", "血压"),
PAIN_SCORE("016", "painScore", "疼痛等级"),
POSTOP_DAYS("031", "", "术后天数"),
HEIGHT("030","height","身高"),
WEIGHT("009","weight","体重"),
OUTPUT("","output","出量"),
INPUT("006","input","入量"),
BOWEL_MOVEMENT_FREQUENCY("005","input","大便次数"),
URINATION_FREQUENCY("004","input","小便次数"),
URINE_VOLUME("011","input","尿量"),
OTHERS("007","input","其他"),
HEART_RATE("","heartRate","心率"),
TIME_POINT("","timePoint","时间点"),
OPERATION("9502", "", "手术"),
TRANSFER_DEPARTMENT("9506", "", "转科"),
WARD_ADMISSION("9500", "", "入科");
private final String code;
private final String typeCode;
private final String description;
}

View File

@@ -10,9 +10,7 @@ public enum TraceNoStatus implements HisEnumInterface {
IN(1, "1", ""),
OUT(2, "2", ""),
IN_STOCK(3, "3", "在库");
OUT(2, "2", ""),;
@EnumValue
private final Integer value;

View File

@@ -1,40 +1,32 @@
package com.openhis.common.enums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 过敏与不耐受中验证状态
*
* @author liuhr
* @date 2025/3/6
*/
@Getter
@AllArgsConstructor
public enum SpecCollectStatus implements HisEnumInterface{
/**
* 待采集
*/
PENDING(0, "Pending", "待采集"),
/**
* 已采集
*/
COLLECTED(1, "COLLECTED", "已采集"),
/**
* 已接收
*/
RECEIVED(2, "COLLECTED", "已接收");
public enum VerificationStatus implements HisEnumInterface {
UNCONFIRMED(1, "unconfirmed", "未确认"), CONFIRMED(2, "confirmed", "已确认"), REFUTED(3, "refuted", "已反驳"),
ENTERED_IN_ERROR(4, "entered-in-error", "输入错误");
@EnumValue
private final Integer value;
private final String code;
private final String info;
public static SpecCollectStatus getByValue(Integer value) {
public static VerificationStatus getByValue(Integer value) {
if (value == null) {
return null;
}
for (SpecCollectStatus val : values()) {
for (VerificationStatus val : values()) {
if (val.getValue().equals(value)) {
return val;
}

View File

@@ -1,37 +0,0 @@
package com.openhis.common.enums.ybenums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.openhis.common.enums.HisEnumInterface;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum YbEncounterZyStatus implements HisEnumInterface {
TO_BE_REGISTERED(1, "to-be-registered", "待登记"),
ADMITTED_TO_THE_HOSPITAL(2, "admitted-to-the-hospital", "已登记"),
DISCHARGED_FROM_HOSPITAL(3, "discharged-from-hospital", "已出院"),
ALREADY_SETTLED(4, "already-settled", "已结算");
@EnumValue
private final Integer value;
private final String code;
private final String info;
public static YbEncounterZyStatus getByValue(Integer value) {
if (value == null) {
return null;
}
for (YbEncounterZyStatus val : values()) {
if (val.getValue().equals(value)) {
return val;
}
}
return null;
}
}

View File

@@ -1,66 +0,0 @@
package com.openhis.common.enums.ybenums;
import com.baomidou.mybatisplus.annotation.EnumValue;
import com.openhis.common.enums.ClaimType;
import com.openhis.common.enums.HisEnumInterface;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum YbMdcsType {
/** 职工基本医疗保险 */
EMPLOYEE_BASIC(310,"310", "职工基本医疗保险"),
/** 离休人员医疗保障 */
RETIRED_PERSONNEL(340,"340", "离休人员医疗保障"),
/** 一至六级残疾军人医疗补助 */
DISABLED_SOLDIER(350,"350", "一至六级残疾军人医疗补助"),
/** 老红军医疗保障 */
RED_ARMY_VETERAN(360,"360", "老红军医疗保障"),
/** 新型农村合作医疗 */
NEW_RURAL_COOPERATIVE(380,"380", "新型农村合作医疗"),
/** 城乡居民基本医疗保险 */
URBAN_RURAL_RESIDENT(390,"390", "城乡居民基本医疗保险"),
/** 城镇居民基本医疗保险 */
URBAN_RESIDENT(391,"391", "城镇居民基本医疗保险"),
/** 其他医疗保险 */
OTHER(999,"999", "其他医疗保险");
@EnumValue
private final Integer value;
private final String code;
private final String info;
public static YbMdcsType getByValue(Integer value) {
if (value == null) {
return null;
}
for (YbMdcsType val : values()) {
if (val.getValue().equals(value)) {
return val;
}
}
return null;
}
public static YbMdcsType getByCode(String code) {
if (code == null|| code.isEmpty()) {
return null;
}
for (YbMdcsType val : values()) {
if (val.getCode().equals(code)) {
return val;
}
}
return null;
}
}

View File

@@ -14,7 +14,6 @@ import javax.servlet.http.HttpServletRequest;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.core.common.utils.DateUtils;
import com.core.common.utils.SecurityUtils;
import com.core.framework.config.TenantContext;
import com.openhis.common.constant.CommonConstants;
/**
@@ -101,15 +100,6 @@ public class HisQueryUtils {
return queryWrapper;
}
// 新增SQL转义方法防止注入风险
private static String escapeSql(String value) {
if (value == null) {
return "";
}
// 转义单引号PostgreSQL中用两个单引号表示一个单引号
return value.replace("'", "''");
}
/**
* 检查时间字符串是否符合指定格式
*
@@ -156,8 +146,6 @@ public class HisQueryUtils {
// 获取当前登录用户的租户 ID
if (SecurityUtils.getAuthentication() != null) {
return SecurityUtils.getLoginUser().getTenantId();
} else if (TenantContext.getCurrentTenant() != null) {
return TenantContext.getCurrentTenant();
}
return 0;
}

View File

@@ -1,56 +0,0 @@
package com.openhis.common.utils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.ArrayList;
import java.util.List;
/**
* 分页工具类
*/
public class PageUtils {
/**
* 手动分页
*
* @param allList 数据
* @param pageNo 页码
* @param pageSize 每页大小
* @return 分页数据
*/
public static <T> Page<T> buildPage(List<T> allList, long pageNo, long pageSize) {
Page<T> page = new Page<>();
int total = allList.size();
if (total == 0) {
page.setRecords(new ArrayList<>());
page.setTotal(0);
page.setCurrent(pageNo);
page.setSize(pageSize);
page.setPages(0L);
return page;
}
// 计算分页起始位置
int startIndex = (int)((pageNo - 1) * pageSize);
if (startIndex >= total) {
// 如果起始位置超过总数,返回最后一页
startIndex = (int)((total - 1) / pageSize * pageSize);
pageNo = (total + pageSize - 1) / pageSize;
}
int endIndex = (int)Math.min(startIndex + pageSize, total);
// 获取当前页数据
List<T> currentPageList = allList.subList(startIndex, endIndex);
// 设置分页信息
page.setRecords(new ArrayList<>(currentPageList));
page.setCurrent(pageNo);
page.setSize(pageSize);
page.setTotal(total);
page.setPages((total + pageSize - 1) / pageSize); // 计算总页数
return page;
}
}