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

@@ -0,0 +1,23 @@
/**
* 取消汇总
*
* @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

@@ -0,0 +1,42 @@
@Resource
private IMedicationDispenseService medicationDispenseService;
@Resource
private ReturnMedicineMapper returnMedicineMapper;
@Resource
private ISupplyRequestService supplyRequestService;
@Resource
private ISupplyDeliveryService supplyDeliveryService;
@Resource
private ITraceNoManageService traceNoManageService;
@Resource
private IInventoryItemService inventoryItemService;
@Resource
private IMedicationDefinitionService medicationDefinitionService;
@Resource
private ReceiptApprovalAppServiceImpl receiptApprovalAppService;
@Resource
private WesternMedicineDispenseAppServiceImpl westernMedicineDispenseAppService;
@Resource
private WesternMedicineDispenseMapper westernMedicineDispenseMapper;
@Resource
private IOrganizationService organizationService;
@Resource
private AdviceProcessAppMapper adviceProcessAppMapper;
@Resource
private MedicationRequestServiceImpl medicationRequestService;

View File

@@ -33,7 +33,7 @@ public enum DelFlag {
return null;
}
for (DelFlag val : values()) {
if (val.getValue().equals(value)) {
if (val.value.equals(value)) {
return val;
}
}

View File

@@ -7,7 +7,7 @@ import org.springframework.http.HttpMethod;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.ProviderManager;
import org.springframework.security.authentication.dao.DaoAuthenticationProvider;
import org.springframework.security.config.annotation.method.configuration.EnableMethodSecurity;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.http.SessionCreationPolicy;
import org.springframework.security.core.userdetails.UserDetailsService;
@@ -27,7 +27,7 @@ import com.core.framework.security.handle.LogoutSuccessHandlerImpl;
*
* @author system
*/
@EnableMethodSecurity(prePostEnabled = true, securedEnabled = true)
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
@Configuration
public class SecurityConfig {
/**

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<groupId>com.openhis</groupId>
<artifactId>openhis-server</artifactId>
@@ -16,6 +16,11 @@
system系统模块
</description>
<properties>
<fastjson2.version>2.0.43</fastjson2.version>
<pinyin4j.version>2.5.1</pinyin4j.version>
</properties>
<dependencies>
<!-- 通用工具-->
@@ -29,6 +34,28 @@
<artifactId>lombok</artifactId>
</dependency>
<!-- FastJSON2 -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>${fastjson2.version}</version>
</dependency>
<!-- 如果还需要FastJSON建议移除或替换为FastJSON2 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>
<!-- pinyin4j -->
<dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>${pinyin4j.version}</version>
</dependency>
<!-- swagger注解 -->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
@@ -40,11 +67,6 @@
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>

View File

@@ -25,7 +25,6 @@
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<!-- Spring 配置 -->
@@ -102,9 +101,11 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<source>17</source>
<target>17</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>

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

View File

@@ -175,11 +175,6 @@ public enum YbPayment {
MAF_PAY(14, 2, null, "医疗救助基金支出"),
OTH_PAY(15, 2, null, "其他支出"),//重复,误用
ACCT_MULAID_PAY(16, 2, null, "个人账户共济支付金额"),
// 医保结算返回值记录枚举
FULAMT_OWNPAY_AMT(1, 2, null, "全自费金额"),
// PSN_PART_AMT(2,2,null,"个人负担总金额"),
OVERLMT_SELFPAY(3, 2, null, "超限价自费费用"), PRESELFPAY_AMT(4, 2, null, "先行自付金额"), INSCP_SCP_AMT(5, 2, null, "符合政策范围金额"),
ACT_PAY_DEDC(6, 2, null, "实际支付起付线"), POOL_PROP_SELFPAY(7, 2, null, "基本医疗保险统筹基金支付比例"), BALC(8, 2, null, "余额"),
// 基金类型,下述仅作记录
BIRTH_FUND(510100, 2, YB_FUND_PAY, "生育基金"),
RETIREE_MEDICAL(340100, 2, YB_FUND_PAY, "离休人员医疗保障基金"),

View File

@@ -21,8 +21,8 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>16</source>
<target>16</target>
<source>17</source>
<target>17</target>
</configuration>
</plugin>
</plugins>
@@ -56,6 +56,16 @@
<artifactId>lombok</artifactId>
<scope>compile</scope>
</dependency>
<!-- MyBatis-Plus 支持 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<!-- Kotlin 反射库支持 -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
</dependency>
</dependencies>
</project>

View File

@@ -5,15 +5,23 @@ import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
// 添加访问修饰符,确保枚举值可以被外部访问
public enum IdentifierUse {
USUAL(1, "USUAL", "Usual item"),
OFFICIAL(2, "OFFICIAL", "Official item"),
TEMP(3, "TEMP", "Temporary item"),
SECONDARY(4, "SECONDARY", "Secondary item"),
OLD(5, "OLD", "Old item");
@EnumValue
private final Integer value;
private final String code;
private final String info;
}
// 为枚举添加构造函数
IdentifierUse(Integer value, String code, String info) {
this.value = value;
this.code = code;
this.info = info;
}
}

View File

@@ -33,4 +33,12 @@ public class CostDetailSearchParam {
* 费用类型ID
*/
private String chargeItemEnum;
public List<Long> getEncounterIds() {
return encounterIds;
}
public void setEncounterIds(List<Long> encounterIds) {
this.encounterIds = encounterIds;
}
}

View File

@@ -29,4 +29,14 @@ public interface IInvoiceService extends IService<Invoice> {
* @return
*/
Invoice getByPaymentId(Long id);
/**
* 分页查询发票列表(带用户角色权限过滤)
*
* @param page 分页参数
* @param isAdmin 是否为管理员
* @param userId 用户ID
* @return 分页结果
*/
IPage<Invoice> selectInvoicePage(Page<Invoice> page, boolean isAdmin, Long userId);
}

View File

@@ -1,16 +1,16 @@
package com.openhis.administration.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.core.common.enums.DelFlag;
import com.core.common.utils.SecurityUtils;
import com.core.common.exception.ServiceException;
import com.openhis.administration.domain.Invoice;
import com.openhis.administration.domain.Supplier;
import com.openhis.administration.mapper.InvoiceMapper;
import com.openhis.administration.service.IInvoiceService;
import com.openhis.common.enums.SupplyStatus;
import com.openhis.workflow.domain.SupplyRequest;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
@@ -28,20 +28,22 @@ public class InvoiceServiceImpl extends ServiceImpl<InvoiceMapper, Invoice> impl
* 新增发票
*
* @param invoice 发票实体
* @return
* @return 发票ID
* @throws ServiceException 当发票已存在或插入失败时抛出异常
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Long addInvoice(Invoice invoice) {
// 根据编码判断发票是否存在
List<Invoice> invoices
= baseMapper.selectList(new LambdaQueryWrapper<Invoice>().eq(Invoice::getBusNo, invoice.getBusNo()));
if (invoices.size() > 0) {
return null;
// 根据编码判断发票是否存在 - 使用count查询优化性能
long count = baseMapper.selectCount(new LambdaQueryWrapper<Invoice>().eq(Invoice::getBusNo, invoice.getBusNo()));
if (count > 0) {
throw new ServiceException("发票编码已存在: " + invoice.getBusNo());
}
// 新增发票
int insert = baseMapper.insert(invoice);
if (insert != 1) {
return null;
throw new ServiceException("发票新增失败,请检查输入数据");
}
return invoice.getId();
@@ -52,4 +54,17 @@ public class InvoiceServiceImpl extends ServiceImpl<InvoiceMapper, Invoice> impl
return baseMapper.selectOne(new LambdaQueryWrapper<Invoice>().eq(Invoice::getReconciliationId, id)
.eq(Invoice::getDeleteFlag, DelFlag.NO.getCode()));
}
@Override
public IPage<Invoice> selectInvoicePage(Page<Invoice> page, boolean isAdmin, Long userId) {
LambdaQueryWrapper<Invoice> queryWrapper = new LambdaQueryWrapper<Invoice>()
.eq(Invoice::getDeleteFlag, DelFlag.NO.getCode());
// 非管理员用户只能查看自己创建的发票
if (!isAdmin) {
queryWrapper.eq(Invoice::getInvoicingStaffId, userId);
}
return baseMapper.selectPage(page, queryWrapper);
}
}

View File

@@ -16,8 +16,6 @@ import com.openhis.administration.mapper.OrganizationMapper;
import com.openhis.administration.service.IOrganizationService;
import com.openhis.common.enums.AccountStatus;
import javax.annotation.Resource;
/**
* 机构管理Service业务层处理
*
@@ -89,9 +87,4 @@ public class OrganizationServiceImpl extends ServiceImpl<OrganizationMapper, Org
public List<OrgDataDto> searchOrgDataByHealth() {
return this.organizationMapper.searchOrgDataByHealth();
}
@Override
public List<OrgDataDto> searchOrgDataByHealth() {
return this.organizationMapper.searchOrgDataByHealth();
}
}

View File

@@ -155,4 +155,9 @@ public class PaymentReconciliation extends HisBaseEntity {
* 医保清算标志
*/
private Integer ybClearFlag;// 默认值0 未清算
/**
* 退费原因
*/
private String refundReason;
}

View File

@@ -1,9 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.15</version>
<relativePath />
</parent>
<groupId>com.openhis</groupId>
<artifactId>openhis-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
@@ -17,14 +24,13 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>17</java.version>
<maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<spring-boot.version>2.5.15</spring-boot.version>
<druid.version>1.2.23</druid.version>
<druid.version>1.2.27</druid.version>
<bitwalker.version>1.21</bitwalker.version>
<swagger.version>3.0.0</swagger.version>
<kaptcha.version>2.3.3</kaptcha.version>
<pagehelper.boot.version>1.4.7</pagehelper.boot.version>
<fastjson.version>2.0.53</fastjson.version>
<oshi.version>6.6.5</oshi.version>
<commons.io.version>2.13.0</commons.io.version>
<poi.version>4.1.2</poi.version>
@@ -33,10 +39,22 @@
<!-- override dependency version -->
<tomcat.version>9.0.96</tomcat.version>
<logback.version>1.2.13</logback.version>
<lombok.version>1.18.26</lombok.version>
<lombok.version>1.18.42</lombok.version>
<mybatis-plus.version>3.5.3</mybatis-plus.version>
<flowable.version>6.8.0</flowable.version>
<postgresql.version>42.2.27</postgresql.version>
<aviator.version>5.3.3</aviator.version>
<swagger-annotations.version>1.5.21</swagger-annotations.version>
<fastjson2.version>2.0.58</fastjson2.version>
<swagger-models.version>1.6.2</swagger-models.version>
<pinyin4j.version>2.5.1</pinyin4j.version>
<liteflow-spring-boot-starter.version>2.12.4.1</liteflow-spring-boot-starter.version>
<hutool-all.version>5.3.8</hutool-all.version>
<bcprov-jdk15on.version>1.69</bcprov-jdk15on.version>
<kernel.version>7.1.2</kernel.version>
<itextpdf.version>5.5.12</itextpdf.version>
<itext-asian.version>5.2.0</itext-asian.version>
<mysql-connector-j.version>9.4.0</mysql-connector-j.version>
</properties>
<!-- 依赖声明 -->
@@ -47,7 +65,12 @@
<artifactId>mysql-connector-j</artifactId>
<version>${mysql-connector-j.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
<scope>provided</scope>
</dependency>
<!-- pdf依赖-->
<dependency>
<groupId>com.itextpdf</groupId>
@@ -212,68 +235,6 @@
<version>${mybatis-plus.version}</version>
</dependency>
<!-- lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</dependency>
<!-- 覆盖SpringFramework的依赖配置-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>${spring-framework.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 覆盖SpringSecurity的依赖配置-->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-bom</artifactId>
<version>${spring-security.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- SpringBoot的依赖配置-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- 覆盖logback的依赖配置-->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback.version}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback.version}</version>
</dependency>
<!-- 覆盖tomcat的依赖配置-->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-el</artifactId>
<version>${tomcat.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<version>${tomcat.version}</version>
</dependency>
<!-- 阿里数据库连接池 -->
<dependency>
@@ -337,13 +298,6 @@
<version>${velocity.version}</version>
</dependency>
<!-- 阿里JSON解析器 -->
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>${fastjson.version}</version>
</dependency>
<!-- Token生成与解析-->
<dependency>
<groupId>io.jsonwebtoken</groupId>
@@ -358,14 +312,6 @@
<version>${kaptcha.version}</version>
</dependency>
<!-- Swagger API文档的注解 -->
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.21</version>
<scope>compile</scope>
</dependency>
<!-- 轻量级的业务流程引擎 -->
<dependency>
<groupId>org.flowable</groupId>
@@ -373,27 +319,27 @@
<version>${flowable.version}</version>
</dependency>
<!--el表达式计算-->
<dependency>
<groupId>com.googlecode.aviator</groupId>
<artifactId>aviator</artifactId>
<version>5.3.3</version>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>${postgresql.version}</version>
</dependency>
<!-- Kotlin 反射库,解决 KProperty 问题 -->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
<version>1.9.10</version>
</dependency>
</dependencies>
</dependencyManagement>
<modules>
<!-- <module>openhis-miniapp</module> -->
<module>openhis-application</module>
<module>openhis-domain</module>
<module>openhis-common</module>
<!-- <module>openhis-ybapp</module>-->
<module>core-admin</module>
<module>core-framework</module>
<module>core-system</module>
@@ -401,6 +347,7 @@
<module>core-generator</module>
<module>core-common</module>
<module>core-flowable</module>
<module>openhis-einvoiceapp</module>
</modules>
<packaging>pom</packaging>
@@ -409,10 +356,10 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<version>${maven-compiler-plugin.version}</version>
<configuration>
<source>17</source>
<target>17</target>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${project.build.sourceEncoding}</encoding>
<annotationProcessorPaths>
<path>