诊疗下没有项目功能完善
This commit is contained in:
@@ -242,6 +242,8 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
|
||||
// 显式设置新增的字段
|
||||
activityDefinition.setSortOrder(diagnosisTreatmentUpDto.getSortOrder());
|
||||
activityDefinition.setServiceRange(diagnosisTreatmentUpDto.getServiceRange());
|
||||
// 显式设置划价标记(避免前端字段/类型差异导致 copyProperties 后仍为默认值)
|
||||
activityDefinition.setPricingFlag(diagnosisTreatmentUpDto.getPricingFlag());
|
||||
|
||||
// 拼音码
|
||||
activityDefinition.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(activityDefinition.getName()));
|
||||
@@ -402,6 +404,7 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
|
||||
activityDefinition.setStatusEnum(PublicationStatus.ACTIVE.getValue());
|
||||
|
||||
// 显式设置创建者和租户ID,确保插入时不为null
|
||||
|
||||
String createBy = "system";
|
||||
Integer tenantId = null;
|
||||
try {
|
||||
@@ -415,6 +418,10 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
|
||||
}
|
||||
activityDefinition.setCreateBy(createBy);
|
||||
activityDefinition.setTenantId(tenantId != null ? tenantId : 1); // 默认租户ID为1
|
||||
// 确保创建时间不为null
|
||||
if (activityDefinition.getCreateTime() == null) {
|
||||
activityDefinition.setCreateTime(new java.util.Date());
|
||||
}
|
||||
|
||||
// 检查编码是否已存在
|
||||
List<ActivityDefinition> existingDefinitions = activityDefinitionMapper.selectList(
|
||||
@@ -484,7 +491,8 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
|
||||
for (DiagnosisTreatmentImportDto importDto : importDtoList) {
|
||||
// 创建诊疗定义
|
||||
ActivityDefinition activityDefinition = createActivityDefinitionEntity(importDto, orgId);
|
||||
activityDefinitionService.save(activityDefinition);
|
||||
// 使用 addDiagnosisTreatment 方法,确保字段完整性
|
||||
activityDefinitionService.addDiagnosisTreatment(activityDefinition);
|
||||
// 创建费用定价和详情
|
||||
chargeItemDefinitionService.addChargeItemDefinitionAndDetail(importDto.getName(), importDto.getTypeCode(),
|
||||
importDto.getYbType(), importDto.getPermittedUnitCode(), null, importDto.getRetailPrice(),
|
||||
@@ -654,6 +662,10 @@ public class DiagTreatMAppServiceImpl implements IDiagTreatMAppService {
|
||||
}
|
||||
activityDefinition.setCreateBy(createBy);
|
||||
activityDefinition.setTenantId(tenantId != null ? tenantId : 1); // 默认租户ID为1
|
||||
// 确保创建时间不为null
|
||||
if (activityDefinition.getCreateTime() == null) {
|
||||
activityDefinition.setCreateTime(new java.util.Date());
|
||||
}
|
||||
return activityDefinition;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,8 @@ package com.openhis.web.datadictionary.appservice.impl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.core.common.core.domain.model.LoginUser;
|
||||
import com.core.common.utils.SecurityUtils;
|
||||
import com.core.common.utils.bean.BeanUtils;
|
||||
import com.openhis.administration.domain.ChargeItemDefDetail;
|
||||
import com.openhis.administration.domain.ChargeItemDefinition;
|
||||
@@ -17,6 +19,7 @@ import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -47,6 +50,9 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService {
|
||||
|
||||
ChargeItemDefinition chargeItemDefinition = new ChargeItemDefinition();
|
||||
BeanUtils.copyProperties(itemUpFromDirectoryDto, chargeItemDefinition);
|
||||
|
||||
// 显式设置创建者、创建时间和租户ID,确保插入时不为null
|
||||
setRequiredFields(chargeItemDefinition);
|
||||
|
||||
boolean insertCIDSuccess = chargeItemDefinitionService.save(chargeItemDefinition);
|
||||
|
||||
@@ -86,6 +92,9 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService {
|
||||
|
||||
shargeItemDefDetails.add(chargeItemDefDetail3);
|
||||
|
||||
// 批量设置必需字段(tenant_id、create_by、create_time)
|
||||
setRequiredFieldsForDetailList(shargeItemDefDetails);
|
||||
|
||||
return chargeItemDefDetailService.saveBatch(shargeItemDefDetails);
|
||||
}
|
||||
|
||||
@@ -139,4 +148,55 @@ public class ItemDefinitionServiceImpl implements IItemDefinitionService {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置必需的字段(tenant_id、create_by、create_time),确保插入时不为null
|
||||
*
|
||||
* @param chargeItemDefinition 费用定价对象
|
||||
*/
|
||||
private void setRequiredFields(ChargeItemDefinition chargeItemDefinition) {
|
||||
String createBy = "system";
|
||||
Integer tenantId = null;
|
||||
try {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null) {
|
||||
createBy = loginUser.getUsername();
|
||||
tenantId = loginUser.getTenantId();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// 如果获取失败,使用默认值
|
||||
}
|
||||
chargeItemDefinition.setCreateBy(createBy != null ? createBy : "system");
|
||||
chargeItemDefinition.setTenantId(tenantId != null ? tenantId : 1);
|
||||
if (chargeItemDefinition.getCreateTime() == null) {
|
||||
chargeItemDefinition.setCreateTime(new Date());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量设置费用定价详情列表的必需字段(tenant_id、create_by、create_time)
|
||||
*
|
||||
* @param chargeItemDefDetailList 费用定价详情对象列表
|
||||
*/
|
||||
private void setRequiredFieldsForDetailList(List<ChargeItemDefDetail> chargeItemDefDetailList) {
|
||||
String createBy = "system";
|
||||
Integer tenantId = null;
|
||||
try {
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
if (loginUser != null) {
|
||||
createBy = loginUser.getUsername();
|
||||
tenantId = loginUser.getTenantId();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// 如果获取失败,使用默认值
|
||||
}
|
||||
Date now = new Date();
|
||||
for (ChargeItemDefDetail detail : chargeItemDefDetailList) {
|
||||
detail.setCreateBy(createBy != null ? createBy : "system");
|
||||
detail.setTenantId(tenantId != null ? tenantId : 1);
|
||||
if (detail.getCreateTime() == null) {
|
||||
detail.setCreateTime(now);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.openhis.web.datadictionary.dto;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonAlias;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
|
||||
import com.openhis.common.annotation.Dict;
|
||||
@@ -105,8 +106,18 @@ public class DiagnosisTreatmentUpDto {
|
||||
private String childrenJson;
|
||||
|
||||
/** 划价标记 */
|
||||
@JsonAlias({"pricing_flag"})
|
||||
private Integer pricingFlag;
|
||||
|
||||
/**
|
||||
* 兼容前端把勾选框按 boolean 传参(true/false)的场景
|
||||
* - true -> 1
|
||||
* - false -> 0
|
||||
*/
|
||||
public void setPricingFlag(Boolean pricingFlag) {
|
||||
this.pricingFlag = pricingFlag == null ? null : (pricingFlag ? 1 : 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* 物价编码
|
||||
*/
|
||||
|
||||
@@ -369,9 +369,7 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
|
||||
.collect(Collectors.toList());
|
||||
// 价格信息
|
||||
baseDto.setPriceList(priceList);
|
||||
// 活动类型
|
||||
baseDto.setActivityType_enumText(
|
||||
EnumUtils.getInfoByValue(ActivityType.class, baseDto.getActivityType()));
|
||||
// 活动类型:字典转换框架会自动填充 activityType_dictText,无需手动设置
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,9 @@ public class AdviceBaseDto {
|
||||
/**
|
||||
* 医嘱详细分类
|
||||
*/
|
||||
@Dict(dictCode = "activity_category_code")
|
||||
private String categoryCode;
|
||||
private String categoryCode_dictText;
|
||||
|
||||
/**
|
||||
* 药品性质
|
||||
@@ -104,10 +106,11 @@ public class AdviceBaseDto {
|
||||
private String productName;
|
||||
|
||||
/**
|
||||
* 活动类型
|
||||
* 活动类型(诊疗项目使用目录类别)
|
||||
*/
|
||||
@Dict(dictCode = "activity_category_code")
|
||||
private Integer activityType;
|
||||
private String activityType_enumText;
|
||||
private String activityType_dictText;
|
||||
|
||||
/**
|
||||
* 是否皮试
|
||||
|
||||
@@ -200,7 +200,29 @@ public class IInventoryAdjustPriceServiceImpl implements IInventoryAdjustPriceSe
|
||||
itemDefDetailPurchaseList.add(chargeItemDefDetail);
|
||||
}
|
||||
}
|
||||
// 批量插入价格子表
|
||||
// 批量插入价格子表(在保存前设置必需字段)
|
||||
// 只对新插入的记录(id为null)设置字段
|
||||
List<ChargeItemDefDetail> newRetailList = itemDefDetailRetailList.stream()
|
||||
.filter(detail -> detail.getId() == null)
|
||||
.collect(Collectors.toList());
|
||||
if (!newRetailList.isEmpty()) {
|
||||
this.chargeItemDefDetailService.setRequiredFieldsBatch(newRetailList);
|
||||
}
|
||||
|
||||
List<ChargeItemDefDetail> newBuyingList = itemDefDetailBuyingList.stream()
|
||||
.filter(detail -> detail.getId() == null)
|
||||
.collect(Collectors.toList());
|
||||
if (!newBuyingList.isEmpty()) {
|
||||
this.chargeItemDefDetailService.setRequiredFieldsBatch(newBuyingList);
|
||||
}
|
||||
|
||||
List<ChargeItemDefDetail> newPurchaseList = itemDefDetailPurchaseList.stream()
|
||||
.filter(detail -> detail.getId() == null)
|
||||
.collect(Collectors.toList());
|
||||
if (!newPurchaseList.isEmpty()) {
|
||||
this.chargeItemDefDetailService.setRequiredFieldsBatch(newPurchaseList);
|
||||
}
|
||||
|
||||
this.chargeItemDefDetailService.saveOrUpdateBatch(itemDefDetailRetailList);
|
||||
this.chargeItemDefDetailService.saveOrUpdateBatch(itemDefDetailBuyingList);
|
||||
this.chargeItemDefDetailService.saveOrUpdateBatch(itemDefDetailPurchaseList);
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
abi.yb_no,
|
||||
abi.product_name,
|
||||
abi.activity_type,
|
||||
abi.activity_type_dictText,
|
||||
abi.unit_code,
|
||||
abi.min_unit_code,
|
||||
abi.volume,
|
||||
@@ -69,6 +70,7 @@
|
||||
T1.yb_no AS yb_no,
|
||||
T1.merchandise_name AS product_name,
|
||||
0 AS activity_type,
|
||||
'' AS activity_type_dictText,
|
||||
T1.unit_code AS unit_code,
|
||||
T1.min_unit_code AS min_unit_code,
|
||||
T2.total_volume AS volume,
|
||||
@@ -138,6 +140,7 @@
|
||||
T1.yb_no AS yb_no,
|
||||
'' AS product_name,
|
||||
0 AS activity_type,
|
||||
'' AS activity_type_dictText,
|
||||
T1.unit_code AS unit_code,
|
||||
T1.min_unit_code AS min_unit_code,
|
||||
T1.SIZE AS volume,
|
||||
@@ -200,8 +203,12 @@
|
||||
T1.wb_str AS wb_str,
|
||||
T1.yb_no AS yb_no,
|
||||
'' AS product_name,
|
||||
T1.type_enum AS activity_type,
|
||||
'' AS unit_code,
|
||||
-- 前端"类型"列:显示目录类别(category_code)
|
||||
-- 将category_code转换为整数,用于字典转换(字典转换框架会自动填充activityType_dictText)
|
||||
CAST(T1.category_code AS INTEGER) AS activity_type,
|
||||
NULL AS activity_type_dictText,
|
||||
-- 前端"包装单位"列:显示使用单位(permitted_unit_code)
|
||||
T1.permitted_unit_code AS unit_code,
|
||||
'' AS min_unit_code,
|
||||
'' AS volume,
|
||||
'' AS method_code,
|
||||
@@ -263,6 +270,7 @@
|
||||
CAST('' AS VARCHAR) AS yb_no,
|
||||
CAST('' AS VARCHAR) AS product_name,
|
||||
CAST(0 AS INTEGER) AS activity_type,
|
||||
CAST('' AS VARCHAR) AS activity_type_dictText,
|
||||
CAST('' AS VARCHAR) AS unit_code,
|
||||
CAST('' AS VARCHAR) AS min_unit_code,
|
||||
CAST(0 AS NUMERIC) AS volume,
|
||||
|
||||
Reference in New Issue
Block a user