311 检验项目设置-》检验项目:【新增】一条检验项目系统自动在《诊疗目录》增加一条检验收费项目

312检验项目设置-套餐设置:折扣%字段换算公式错误
319 住院管理》-住院医生站》-住院医生站保存患者诊断时报错
This commit is contained in:
2026-04-02 17:25:28 +08:00
parent 09fdfa294a
commit 7a2342ea2e
19 changed files with 905 additions and 87 deletions

View File

@@ -55,7 +55,10 @@ public class InspectionPackageDetail {
/** 单位 */
private String unit;
/** 单价 */
/** 原始单价(未折扣前的价格,用于折扣变更时恢复原价) */
private BigDecimal originalPrice;
/** 单价(折后单价 = 原始单价 × 折扣比例) */
private BigDecimal unitPrice;
/** 金额 */

View File

@@ -0,0 +1,106 @@
package com.openhis.lab.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.core.common.core.domain.HisBaseEntity;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
/**
* 检验项目定义实体(独立表 lab_activity_definition不依赖 wor_activity_definition
*/
@Data
@TableName("lab_activity_definition")
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = false)
public class LabActivityDefinition extends HisBaseEntity {
/** 主键ID */
@TableId(type = IdType.ASSIGN_ID)
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 目录类别 */
private String categoryCode;
/** 编码 */
private String busNo;
/** 项目名称 */
private String name;
/** 项目名称拼音 */
private String pyStr;
/** 五笔拼音 */
private String wbStr;
/** 类型 */
private Integer typeEnum;
/** 使用单位 */
private String permittedUnitCode;
/** 所属科室 */
@JsonSerialize(using = ToStringSerializer.class)
private Long orgId;
/** 所在位置 */
@JsonSerialize(using = ToStringSerializer.class)
private Long locationId;
/** 医保标记 */
private Integer ybFlag;
/** 医保编码 */
private String ybNo;
/** 医保对码标记 */
private Integer ybMatchFlag;
/** 状态 */
private Integer statusEnum;
/** 身体部位 */
private String bodySiteCode;
/** 所需标本 */
private String specimenCode;
/** 说明 */
private String descriptionText;
/** 规则id */
private Integer ruleId;
/** 医保等级 */
private Integer chrgitmLv;
/** 子项json */
private String childrenJson;
/** 划价标记 */
private Integer pricingFlag;
/** 序号 */
private Integer sortOrder;
/** 服务范围 */
private String serviceRange;
/** 检验类型ID关联 inspection_type 大类,逻辑关联无外键) */
@JsonSerialize(using = ToStringSerializer.class)
private Long inspectionTypeId;
/** 费用套餐ID关联 inspection_basic_information逻辑关联无外键 */
@JsonSerialize(using = ToStringSerializer.class)
private Long feePackageId;
/** 下级医技类型ID关联 inspection_type 子类,逻辑关联无外键) */
@JsonSerialize(using = ToStringSerializer.class)
private Long subItemId;
}

View File

@@ -0,0 +1,13 @@
package com.openhis.lab.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.openhis.lab.domain.LabActivityDefinition;
import org.springframework.stereotype.Repository;
/**
* 检验项目定义 Mapper 接口
*/
@Repository
public interface LabActivityDefinitionMapper extends BaseMapper<LabActivityDefinition> {
}

View File

@@ -0,0 +1,18 @@
package com.openhis.lab.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.openhis.lab.domain.LabActivityDefinition;
/**
* 检验项目定义 Service 接口
*/
public interface ILabActivityDefinitionService extends IService<LabActivityDefinition> {
/**
* 新增检验项目
*
* @param labActivityDefinition 检验项目实体
* @return 是否成功
*/
boolean addLabActivityDefinition(LabActivityDefinition labActivityDefinition);
}

View File

@@ -0,0 +1,63 @@
package com.openhis.lab.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.core.common.utils.SecurityUtils;
import com.core.common.core.domain.model.LoginUser;
import com.openhis.lab.domain.LabActivityDefinition;
import com.openhis.lab.mapper.LabActivityDefinitionMapper;
import com.openhis.lab.service.ILabActivityDefinitionService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Date;
import java.util.List;
/**
* 检验项目定义 Service 实现类
*/
@Slf4j
@Service
public class LabActivityDefinitionServiceImpl
extends ServiceImpl<LabActivityDefinitionMapper, LabActivityDefinition>
implements ILabActivityDefinitionService {
/**
* 新增检验项目(检查编码唯一性)
*/
@Override
@Transactional(rollbackFor = Exception.class)
public boolean addLabActivityDefinition(LabActivityDefinition labActivityDefinition) {
// 根据编码判断是否已存在
List<LabActivityDefinition> existing = baseMapper.selectList(
new LambdaQueryWrapper<LabActivityDefinition>()
.eq(LabActivityDefinition::getBusNo, labActivityDefinition.getBusNo()));
if (!existing.isEmpty()) {
return false;
}
setRequiredFields(labActivityDefinition);
return baseMapper.insert(labActivityDefinition) == 1;
}
/**
* 补全必填字段create_by、tenant_id、create_time
*/
private void setRequiredFields(LabActivityDefinition entity) {
String createBy = "system";
Integer tenantId = 1;
try {
LoginUser loginUser = SecurityUtils.getLoginUser();
if (loginUser != null) {
createBy = loginUser.getUsername();
tenantId = loginUser.getTenantId() != null ? loginUser.getTenantId() : 1;
}
} catch (Exception ignored) {
}
entity.setCreateBy(createBy);
entity.setTenantId(tenantId);
if (entity.getCreateTime() == null) {
entity.setCreateTime(new Date());
}
}
}

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.openhis.lab.mapper.LabActivityDefinitionMapper">
</mapper>