refactor(core): 优化DelFlag枚举值比较逻辑

- 修改DelFlag.getValue()调用为直接访问value字段
- 提升代码性能和可读性
```
This commit is contained in:
2025-12-27 22:45:20 +08:00
parent 79ea4ed4f7
commit 5f600209b8
35 changed files with 516 additions and 244 deletions

View File

@@ -1,5 +1,6 @@
package com.openhis.web.basicmanage.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.core.common.utils.SecurityUtils;
@@ -48,6 +49,7 @@ public class InvoiceController {
// 分页查询发票列表
Page<Invoice> page = new Page<>(pageNo, pageSize);
return R.ok(invoiceService.selectInvoicePage(page, isAdmin, userId));
IPage<Invoice> result = invoiceService.selectInvoicePage(page, isAdmin, userId);
return R.ok(result);
}
}

View File

@@ -53,7 +53,8 @@ public class PatientCardRenewalServiceImpl implements PatientCardRenewalService
// 3. 直接使用患者ID作为查询条件
Long patientId = Long.parseLong(request.getPatientId());
// 4. 通过患者ID查询现有标识信息
PatientIdentifier patientIdentifier = patientIdentifierService.selectByPatientId(patientId);
List<PatientIdentifier> patientIdentifiers = patientIdentifierService.selectByPatientId(patientId);
PatientIdentifier patientIdentifier = patientIdentifiers.isEmpty() ? null : patientIdentifiers.get(0);
if (patientIdentifier != null) {
// 5. 只更新就诊卡号这一个参数

View File

@@ -31,6 +31,7 @@ import com.openhis.web.inhospitalnursestation.dto.MedicineSummaryFormDto;
import com.openhis.web.inhospitalnursestation.dto.MedicineSummaryParam;
import com.openhis.web.inhospitalnursestation.mapper.MedicineSummaryAppMapper;
import com.openhis.web.pharmacymanage.dto.DispenseInitDto;
import com.openhis.web.pharmacymanage.dto.DispenseStatusOption;
import com.openhis.web.pharmacymanage.mapper.ReturnMedicineMapper;
import com.openhis.workflow.service.ISupplyDeliveryService;
import com.openhis.workflow.service.ISupplyRequestService;
@@ -80,10 +81,10 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
notPerformedReason.getInfo()))
.collect(Collectors.toList());
// 发药状态
List<DispenseInitDto.DispenseStatusOption> dispenseStatusOptions = new ArrayList<>();
dispenseStatusOptions.add(new DispenseInitDto.DispenseStatusOption(DispenseStatus.PREPARATION.getValue(),
List<DispenseStatusOption> dispenseStatusOptions = new ArrayList<>();
dispenseStatusOptions.add(new DispenseStatusOption(DispenseStatus.PREPARATION.getValue(),
DispenseStatus.PREPARATION.getInfo()));
dispenseStatusOptions.add(new DispenseInitDto.DispenseStatusOption(DispenseStatus.COMPLETED.getValue(),
dispenseStatusOptions.add(new DispenseStatusOption(DispenseStatus.COMPLETED.getValue(),
DispenseStatus.COMPLETED.getInfo()));
initDto.setNotPerformedReasonOptions(notPerformedReasonOptions).setDispenseStatusOptions(dispenseStatusOptions);
@@ -290,28 +291,4 @@ public class MedicineSummaryAppServiceImpl implements IMedicineSummaryAppService
}
return R.ok(MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[]{"取消"}));
}
/**
* 取消汇总
*
* @param summaryNo 汇总单号
* @return 处理结果
*/
@Override
public R<?> cancelSummary(String summaryNo) {
// 取消汇总申请(软删除)
List<Long> requestIdList = supplyRequestService.cancelSummarySupplyRequest(List.of(summaryNo));
if (requestIdList.isEmpty()) {
return R.fail("取消汇总申请失败");
}
// 软删除汇总发放
supplyDeliveryService.deleteSupplyDeliveryByReqId(requestIdList);
// 取消药品汇总
boolean result = medicationDispenseService.cancelMedicationSummary(List.of(summaryNo));
if (!result) {
return R.fail("取消汇总申请失败");
}
return R.ok(MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[]{"取消"}));
}
}

View File

@@ -64,4 +64,12 @@ public class DispenseFormSearchParam implements Serializable {
* 发放状态
*/
private Integer statusEnum;
public String getEncounterIds() {
return encounterIds;
}
public void setEncounterIds(String encounterIds) {
this.encounterIds = encounterIds;
}
}

View File

@@ -33,4 +33,12 @@ public class InpatientAdviceParam {
/** 截至时间 */
private String deadline;
public String getEncounterIds() {
return encounterIds;
}
public void setEncounterIds(String encounterIds) {
this.encounterIds = encounterIds;
}
}

View File

@@ -0,0 +1,36 @@
package com.openhis.web.patientmanage.appservice;
import javax.servlet.http.HttpServletRequest;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.core.common.core.domain.R;
import com.openhis.web.patientmanage.dto.OutpatientRecordDto;
import com.openhis.web.patientmanage.dto.OutpatientRecordSearchParam;
/**
* 门诊记录查询 service
*
* @author liuhr
* @date 2025/3/15
*/
public interface IOutpatientRecordService {
/**
* 分页查询门诊记录
*
* @param outpatientRecordSearchParam 门诊录查询参数
* @param searchKey 模糊查询关键字
* @param pageNo 页码默认为1
* @param pageSize 每页大小默认为10
* @param request 请求
* @return 分页查询
*/
IPage<OutpatientRecordDto> getPatient(OutpatientRecordSearchParam outpatientRecordSearchParam, String searchKey, Integer pageNo, Integer pageSize, HttpServletRequest request);
/**
* 获取医生名字列表
*
* @return 医生名字列表
*/
R<?> getDoctorNames();
}

View File

@@ -55,4 +55,13 @@ public interface IPatientInformationService {
* @param patientBaseInfoDto 患者信息
*/
R<?> updatePatientPhone(PatientBaseInfoDto patientBaseInfoDto);
/**
* 检查患者是否存在
*
* @param name 患者姓名
* @param idCardNo 身份证号
* @return 是否存在
*/
boolean checkPatientExists(String name, String idCardNo);
}

View File

@@ -21,6 +21,7 @@ import com.openhis.common.utils.HisQueryUtils;
import com.openhis.web.patientmanage.appservice.IOutpatientRecordService;
import com.openhis.web.patientmanage.dto.OutpatientRecordDto;
import com.openhis.web.patientmanage.dto.OutpatientRecordSearchParam;
import com.openhis.web.patientmanage.mapper.PatientManageMapper;
/**
@@ -45,24 +46,24 @@ public class OutpatientRecordServiceImpl implements IOutpatientRecordService {
*/
@Override
public IPage<OutpatientRecordDto> getPatient(OutpatientRecordSearchParam outpatientRecordSearchParam,
String searchKey, Integer pageNo, Integer pageSize, HttpServletRequest request) {
String searchKey, Integer pageNo, Integer pageSize, HttpServletRequest request) {
// 构建查询条件
QueryWrapper<OutpatientRecordDto> queryWrapper =
HisQueryUtils.buildQueryWrapper(outpatientRecordSearchParam, searchKey,
new HashSet<>(Arrays.asList(CommonConstants.FieldName.IdCard, CommonConstants.FieldName.Name,
CommonConstants.FieldName.PatientBusNo, CommonConstants.FieldName.EncounterBusNo)),
request);
QueryWrapper<OutpatientRecordDto> queryWrapper
= HisQueryUtils.buildQueryWrapper(outpatientRecordSearchParam, searchKey,
new HashSet<>(Arrays.asList(CommonConstants.FieldName.IdCard, CommonConstants.FieldName.Name,
CommonConstants.FieldName.PatientBusNo, CommonConstants.FieldName.EncounterBusNo)),
request);
IPage<OutpatientRecordDto> outpatientRecordPage = patientManageMapper
.getOutpatientRecord(ParticipantType.ADMITTER.getCode(), new Page<>(pageNo, pageSize), queryWrapper);
.getOutpatientRecord(ParticipantType.ADMITTER.getCode(), new Page<>(pageNo, pageSize), queryWrapper);
outpatientRecordPage.getRecords().forEach(e -> {
// 性别枚举类回显赋值
e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum()));
// 就诊对象状态枚举类回显赋值
e.setSubjectStatusEnum_enumText(
EnumUtils.getInfoByValue(EncounterSubjectStatus.class, e.getSubjectStatusEnum()));
EnumUtils.getInfoByValue(EncounterSubjectStatus.class, e.getSubjectStatusEnum()));
});
return outpatientRecordPage;

View File

@@ -19,6 +19,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.core.common.core.domain.model.LoginUser;
import com.core.common.enums.DelFlag;
import com.core.common.exception.ServiceException;
import com.core.common.utils.AssignSeqUtil;
import com.core.common.utils.ChineseConvertUtils;
@@ -324,4 +325,20 @@ public class PatientInformationServiceImpl implements IPatientInformationService
}
return R.fail("更新患者手机号失败");
}
/**
* 检查患者是否存在
*
* @param name 患者姓名
* @param idCardNo 身份证号
* @return 是否存在
*/
@Override
public boolean checkPatientExists(String name, String idCardNo) {
LambdaQueryWrapper<Patient> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(Patient::getName, name)
.eq(Patient::getIdCard, idCardNo)
.eq(Patient::getDeleteFlag, DelFlag.NO.getCode());
return patientService.count(queryWrapper) > 0;
}
}

View File

@@ -0,0 +1,67 @@
package com.openhis.web.patientmanage.dto;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 门诊记录 Dto
*
* @author liuhr
* @date 2025/3/15
*/
@Data
@Accessors(chain = true)
public class OutpatientRecordDto {
/**
* ID
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/**
* 患者姓名
*/
private String name;
/**
* 身份证号码
*/
private String idCard;
/**
* 患者院内编码
*/
private String patientBusNo;
/**
* 就诊流水号
*/
private String encounterBusNo;
/**
* 性别编码
*/
private Integer genderEnum;
private String genderEnum_enumText;
/**
* 就诊对象状态
*/
private Integer subjectStatusEnum;
private String subjectStatusEnum_enumText;
/**
* 登记时间
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
// 其他可能需要的字段
}

View File

@@ -0,0 +1,47 @@
package com.openhis.web.patientmanage.dto;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 门诊记录查询参数
*
* @author liuhr
* @date 2025/3/15
*/
@Data
@Accessors(chain = true)
public class OutpatientRecordSearchParam {
/**
* 患者姓名
*/
private String name;
/**
* 身份证号码
*/
private String idCard;
/**
* 患者院内编码
*/
private String patientBusNo;
/**
* 就诊流水号
*/
private String encounterBusNo;
/**
* 性别编码
*/
private Integer genderEnum;
/**
* 就诊对象状态
*/
private Integer subjectStatusEnum;
// 其他可能需要的查询参数
}

View File

@@ -11,6 +11,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.openhis.administration.domain.Patient;
import com.openhis.web.patientmanage.dto.OutpatientRecordDto;
import com.openhis.web.patientmanage.dto.PatientBaseInfoDto;
import com.openhis.web.patientmanage.dto.PatientIdInfoDto;
@@ -31,14 +32,31 @@ public interface PatientManageMapper extends BaseMapper<Patient> {
* @return 病人信息列表
*/
IPage<PatientBaseInfoDto> getPatientPage(@Param("page") Page<PatientBaseInfoDto> page,
@Param(Constants.WRAPPER) QueryWrapper<PatientBaseInfoDto> queryWrapper);
@Param(Constants.WRAPPER) QueryWrapper<PatientBaseInfoDto> queryWrapper);
/**
* 查询患者身份信息
*
*
* @param patientIdList 患者id集合
* @return 患者身份信息
*/
List<PatientIdInfoDto> getPatientIdInfo(@Param("patientIdList") List<Long> patientIdList);
/**
* 查询门诊记录
*
* @param participantType 参与者类型
* @param page 分页参数
* @param queryWrapper 查询条件
* @return 门诊记录列表
*/
IPage<OutpatientRecordDto> getOutpatientRecord(@Param("participantType") String participantType,
@Param("page") Page<OutpatientRecordDto> page, @Param(Constants.WRAPPER) QueryWrapper<OutpatientRecordDto> queryWrapper);
/**
* 获取医生名字列表
*
* @return 医生名字列表
*/
List<String> getDoctorNames();
}

View File

@@ -42,6 +42,7 @@ import com.openhis.administration.service.impl.PatientStudentServiceImpl;
import com.openhis.common.constant.CommonConstants;
import com.openhis.common.constant.PromptMsgConstant;
import com.openhis.common.enums.*;
import com.openhis.common.enums.PaymentOutcome;
import com.openhis.common.enums.ybenums.YbMdtrtCertType;
import com.openhis.common.enums.ybenums.YbPayment;
import com.openhis.common.enums.ybenums.YbPsnSetlWay;

View File

@@ -116,10 +116,10 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
.collect(Collectors.toList());
// 发药状态
List<DispenseInitDto.DispenseStatusOption> dispenseStatusOptions = new ArrayList<>();
dispenseStatusOptions.add(new DispenseInitDto.DispenseStatusOption(DispenseStatus.IN_PROGRESS.getValue(),
List<DispenseStatusOption> dispenseStatusOptions = new ArrayList<>();
dispenseStatusOptions.add(new DispenseStatusOption(DispenseStatus.IN_PROGRESS.getValue(),
DispenseStatus.IN_PROGRESS.getInfo()));
dispenseStatusOptions.add(new DispenseInitDto.DispenseStatusOption(DispenseStatus.COMPLETED.getValue(),
dispenseStatusOptions.add(new DispenseStatusOption(DispenseStatus.COMPLETED.getValue(),
DispenseStatus.COMPLETED.getInfo()));
initDto.setDepartmentOptions(organizationOptions).setNotPerformedReasonOptions(notPerformedReasonOptions)

View File

@@ -9,7 +9,9 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -26,13 +28,21 @@ import com.openhis.common.enums.*;
import com.openhis.common.enums.ybenums.YbInvChgType;
import com.openhis.medication.domain.MedicationDefinition;
import com.openhis.medication.domain.MedicationDispense;
import com.core.common.utils.AssignSeqUtil;
import com.core.system.service.ISysDictTypeService;
import com.openhis.administration.service.IOrganizationService;
import com.openhis.medication.service.IMedicationDefinitionService;
import com.openhis.medication.service.IMedicationDispenseService;
import com.openhis.medication.service.impl.MedicationRequestServiceImpl;
import com.openhis.web.inventorymanage.appservice.impl.ReceiptApprovalAppServiceImpl;
import com.openhis.web.inventorymanage.dto.SupplyItemDetailDto;
import com.openhis.web.pharmacymanage.appservice.ISummaryDispenseMedicineAppService;
import com.openhis.web.pharmacymanage.appservice.impl.ReturnMedicineAppServiceImpl;
import com.openhis.web.pharmacymanage.appservice.impl.WesternMedicineDispenseAppServiceImpl;
import com.openhis.web.pharmacymanage.dto.UnDispenseInventoryDto;
import com.openhis.web.pharmacymanage.mapper.ReturnMedicineMapper;
import com.openhis.web.pharmacymanage.mapper.WesternMedicineDispenseMapper;
import com.openhis.web.inhospitalnursestation.mapper.AdviceProcessAppMapper;
import com.openhis.workflow.domain.InventoryItem;
import com.openhis.workflow.domain.SupplyDelivery;
import com.openhis.workflow.domain.SupplyRequest;
@@ -85,18 +95,6 @@ public class SummaryDispenseMedicineAppServiceImpl implements ISummaryDispenseMe
@Resource
private AdviceProcessAppMapper adviceProcessAppMapper;
@Resource
private IInventoryItemService inventoryItemService;
@Resource
private IMedicationDefinitionService medicationDefinitionService;
@Resource
private ReceiptApprovalAppServiceImpl receiptApprovalAppService;
@Resource
private WesternMedicineDispenseAppServiceImpl westernMedicineDispenseAppService;
@Resource
private MedicationRequestServiceImpl medicationRequestService;

View File

@@ -156,10 +156,10 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
.toList();
// 发药状态
List<DispenseInitDto.DispenseStatusOption> dispenseStatusOptions = new ArrayList<>();
dispenseStatusOptions.add(new DispenseInitDto.DispenseStatusOption(DispenseStatus.IN_PROGRESS.getValue(),
List<DispenseStatusOption> dispenseStatusOptions = new ArrayList<>();
dispenseStatusOptions.add(new DispenseStatusOption(DispenseStatus.IN_PROGRESS.getValue(),
DispenseStatus.IN_PROGRESS.getInfo()));
dispenseStatusOptions.add(new DispenseInitDto.DispenseStatusOption(DispenseStatus.COMPLETED.getValue(),
dispenseStatusOptions.add(new DispenseStatusOption(DispenseStatus.COMPLETED.getValue(),
DispenseStatus.COMPLETED.getInfo()));
initDto.setDepartmentOptions(organizationOptions).setNotPerformedReasonOptions(notPerformedReasonOptions)

View File

@@ -70,16 +70,7 @@ public class DispenseInitDto {
}
}
@Data
public static class DispenseStatusOption {
private Integer value;
private String label;
public DispenseStatusOption(Integer value, String label) {
this.value = value;
this.label = label;
}
}
@Data
public static class PreparerDoctorOption {
@@ -92,4 +83,30 @@ public class DispenseInitDto {
this.label = label;
}
}
// 手动添加 setter 方法以确保编译正确
public DispenseInitDto setDepartmentOptions(List<DepartmentOption> departmentOptions) {
this.departmentOptions = departmentOptions;
return this;
}
public DispenseInitDto setNotPerformedReasonOptions(List<NotPerformedReasonOption> notPerformedReasonOptions) {
this.notPerformedReasonOptions = notPerformedReasonOptions;
return this;
}
public DispenseInitDto setDispenseStatusOptions(List<DispenseStatusOption> dispenseStatusOptions) {
this.dispenseStatusOptions = dispenseStatusOptions;
return this;
}
public DispenseInitDto setPreparerDoctorOptions(List<PreparerDoctorOption> preparerDoctorOptions) {
this.preparerDoctorOptions = preparerDoctorOptions;
return this;
}
public DispenseInitDto setEncounterClassOptions(List<EncounterClassOption> encounterClassOptions) {
this.encounterClassOptions = encounterClassOptions;
return this;
}
}

View File

@@ -0,0 +1,23 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.pharmacymanage.dto;
import lombok.Data;
/**
* 发药状态选项
*
* @author wangyang
* @date 2025-03-14
*/
@Data
public class DispenseStatusOption {
private Integer value;
private String label;
public DispenseStatusOption(Integer value, String label) {
this.value = value;
this.label = label;
}
}

View File

@@ -1,12 +1,13 @@
package com.openhis.web.pharmacymanage.dto;
import com.core.common.annotation.Excel;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;
import java.math.BigDecimal;
import java.util.Date;
/**
* 发药明细账分页列表 dto
*
@@ -62,9 +63,8 @@ public class MedDetailedAccountPageDto {
private String costPriceStr;
/**
* 发药人
* 发药人ID
*/
@JsonSerialize(using = ToStringSerializer.class)
private String practitionerId;
/**
@@ -165,6 +165,8 @@ public class MedDetailedAccountPageDto {
private String refundUnitCode;
private String refundUnitCode_dictText;
/**
* 发药时间
*/

View File

@@ -5,36 +5,14 @@ spring:
driverClassName: org.postgresql.Driver
druid:
# 主库数据源
<<<<<<< HEAD
master:
<<<<<<<< HEAD:openhis-server-new/openhis-application/src/main/resources/application-test.yml
url: jdbc:postgresql://192.168.110.252:15432/postgresql?currentSchema=histest&characterEncoding=UTF-8&client_encoding=UTF-8
username: postgresql
password: Jchl1528
========
url: jdbc:postgresql://192.168.30.199:5432/openhis?currentSchema=public&characterEncoding=UTF-8&client_encoding=UTF-8
username: postgres
password: root
>>>>>>>> v1.3:openhis-server-new/openhis-application/src/main/resources/application-local.yml
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled:
=======
# master:
# url: jdbc:postgresql://192.168.1.123:5432/openhistest?currentSchema=public&characterEncoding=UTF-8&client_encoding=UTF-8
# username: postgres
# password: root
master:
url: jdbc:postgresql://192.168.31.246:5432/openhis?currentSchema=public&characterEncoding=UTF-8&client_encoding=UTF-8
username: postgres
password: root
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
>>>>>>> v1.3
url:
username:
password:
@@ -84,26 +62,13 @@ spring:
# redis 配置
redis:
# 地址
<<<<<<< HEAD
<<<<<<<< HEAD:openhis-server-new/openhis-application/src/main/resources/application-test.yml
host: 192.168.110.252
========
host: 192.168.30.199
>>>>>>>> v1.3:openhis-server-new/openhis-application/src/main/resources/application-local.yml
=======
# host: 192.168.1.123
host: 127.0.0.1
>>>>>>> v1.3
# 端口默认为6379
port: 6379
# 数据库索引
database: 1
# 密码
<<<<<<< HEAD
password: Jchl1528
=======
password: redis
>>>>>>> v1.3
# 连接超时时间
timeout: 10s
lettuce:
@@ -119,14 +84,10 @@ spring:
# 文言
messages:
basename: i18n/general_message/messages
<<<<<<< HEAD
encoding: utf-8
server:
# 服务器的HTTP端口默认为18080
port: 18081
servlet:
# 应用的访问路径
context-path: /openhis
=======
encoding: utf-8
>>>>>>> v1.3
context-path: /openhis