@Dict注解缺陷修复

This commit is contained in:
Wang.Huan
2025-03-12 15:45:29 +08:00
parent 189b801b51
commit 7999a35355
3 changed files with 89 additions and 67 deletions

View File

@@ -3,6 +3,18 @@
*/
package com.openhis.web.basicservice.controller;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.servlet.http.HttpServletRequest;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -22,18 +34,9 @@ import com.openhis.common.utils.EnumUtils;
import com.openhis.common.utils.HisQueryUtils;
import com.openhis.web.basicservice.dto.*;
import com.openhis.web.basicservice.mapper.HealthcareServiceBizMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* 服务管理 controller
@@ -61,7 +64,8 @@ public class HealthcareServiceController {
.collect(Collectors.toList());
healthcareServiceInitDto.setActiveFlagOptions(activeFlagOptions);
// 是否需要预约
List<HealthcareServiceInitDto.appointmentRequiredFlagOption> appointmentRequiredFlagOptions = Stream.of(WhetherContainUnknown.values())
List<HealthcareServiceInitDto.appointmentRequiredFlagOption> appointmentRequiredFlagOptions =
Stream.of(WhetherContainUnknown.values())
.map(wh -> new HealthcareServiceInitDto.appointmentRequiredFlagOption(wh.getValue(), wh.getInfo()))
.collect(Collectors.toList());
healthcareServiceInitDto.setAppointmentRequiredFlagOptions(appointmentRequiredFlagOptions);
@@ -74,9 +78,11 @@ public class HealthcareServiceController {
@PostMapping(value = "/healthcare-service")
public R<?> add(@Validated @RequestBody HealthcareServiceAddOrUpdateParam healthcareServiceAddOrUpdateParam) {
// 服务管理-表单数据
HealthcareServiceFormData healthcareServiceFormData = healthcareServiceAddOrUpdateParam.getHealthcareServiceFormData();
HealthcareServiceFormData healthcareServiceFormData =
healthcareServiceAddOrUpdateParam.getHealthcareServiceFormData();
// 费用定价-表单数据
ChargeItemDefinitionFormData chargeItemDefinitionFormData = healthcareServiceAddOrUpdateParam.getChargeItemDefinitionFormData();
ChargeItemDefinitionFormData chargeItemDefinitionFormData =
healthcareServiceAddOrUpdateParam.getChargeItemDefinitionFormData();
// 服务管理-新增
HealthcareService healthcareService = new HealthcareService();
BeanUtils.copyProperties(healthcareServiceFormData, healthcareService);
@@ -84,9 +90,10 @@ public class HealthcareServiceController {
// 同时保存费用定价
ChargeItemDefinition chargeItemDefinition = new ChargeItemDefinition();
BeanUtils.copyProperties(chargeItemDefinitionFormData, chargeItemDefinition);
boolean res = iChargeItemDefinitionService.addChargeItemDefinitionByHealthcareService(healthcareServiceAfterAdd, chargeItemDefinition);
return res ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00001, new Object[]{"服务管理"})) :
R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00010, null));
boolean res = iChargeItemDefinitionService.addChargeItemDefinitionByHealthcareService(healthcareServiceAfterAdd,
chargeItemDefinition);
return res ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00001, new Object[] {"服务管理"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00010, null));
}
/**
@@ -105,17 +112,17 @@ public class HealthcareServiceController {
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
// 构建查询条件
QueryWrapper<HealthcareServiceDto> queryWrapper = HisQueryUtils.buildQueryWrapper(healthcareServiceDto, searchKey,
new HashSet<>(Arrays.asList("name", "charge_name")), request);
QueryWrapper<HealthcareServiceDto> queryWrapper = HisQueryUtils.buildQueryWrapper(healthcareServiceDto,
searchKey, new HashSet<>(Arrays.asList("name", "charge_name")), request);
IPage<HealthcareServiceDto> healthcareServicePage = healthcareServiceBizMapper.getHealthcareServicePage(
new Page<>(pageNo, pageSize), CommonConstants.TableName.ADM_HEALTHCARE_SERVICE, queryWrapper);
healthcareServicePage.getRecords().forEach(e -> {
// 活动标记-枚举类回显赋值
e.setActiveFlag_enumText(EnumUtils.getInfoByValue(AccountStatus.class, e.getActiveFlag()));
// 预约要求-枚举类回显赋值
e.setAppointmentRequiredFlag_enumText(EnumUtils.getInfoByValue(WhetherContainUnknown.class, e.getAppointmentRequiredFlag()));
}
);
e.setAppointmentRequiredFlag_enumText(
EnumUtils.getInfoByValue(WhetherContainUnknown.class, e.getAppointmentRequiredFlag()));
});
return R.ok(healthcareServicePage, MessageUtils.createMessage(PromptMsgConstant.Common.M00009, null));
}
@@ -130,18 +137,20 @@ public class HealthcareServiceController {
HealthcareServiceDto healthcareServiceDto = new HealthcareServiceDto();
healthcareServiceDto.setId(id);
// 构建查询条件
QueryWrapper<HealthcareServiceDto> queryWrapper = HisQueryUtils.buildQueryWrapper(healthcareServiceDto, null,
null, null);
IPage<HealthcareServiceDto> healthcareServicePage = healthcareServiceBizMapper.getHealthcareServicePage(
new Page<>(1, 1), CommonConstants.TableName.ADM_HEALTHCARE_SERVICE, queryWrapper);
QueryWrapper<HealthcareServiceDto> queryWrapper =
HisQueryUtils.buildQueryWrapper(healthcareServiceDto, null, null, null);
IPage<HealthcareServiceDto> healthcareServicePage = healthcareServiceBizMapper
.getHealthcareServicePage(new Page<>(1, 1), CommonConstants.TableName.ADM_HEALTHCARE_SERVICE, queryWrapper);
HealthcareServiceDto healthcareServiceDtoDetail = healthcareServicePage.getRecords().get(0);
// 枚举赋值
healthcareServiceDtoDetail.setActiveFlag_enumText(EnumUtils.getInfoByValue(AccountStatus.class, healthcareServiceDtoDetail.getActiveFlag()))
.setAppointmentRequiredFlag_enumText(EnumUtils.getInfoByValue(WhetherContainUnknown.class, healthcareServiceDtoDetail.getAppointmentRequiredFlag()));
healthcareServiceDtoDetail
.setActiveFlag_enumText(
EnumUtils.getInfoByValue(AccountStatus.class, healthcareServiceDtoDetail.getActiveFlag()))
.setAppointmentRequiredFlag_enumText(EnumUtils.getInfoByValue(WhetherContainUnknown.class,
healthcareServiceDtoDetail.getAppointmentRequiredFlag()));
return R.ok(healthcareServiceDtoDetail);
}
/**
* 服务管理 编辑
*
@@ -151,12 +160,13 @@ public class HealthcareServiceController {
@PutMapping(value = "/healthcare-service")
public R<?> edit(@Validated @RequestBody HealthcareServiceAddOrUpdateParam healthcareServiceAddOrUpdateParam) {
// 服务管理-表单数据
HealthcareServiceFormData healthcareServiceFormData = healthcareServiceAddOrUpdateParam.getHealthcareServiceFormData();
HealthcareServiceFormData healthcareServiceFormData =
healthcareServiceAddOrUpdateParam.getHealthcareServiceFormData();
HealthcareService healthcareService = new HealthcareService();
BeanUtils.copyProperties(healthcareServiceFormData, healthcareService);
boolean res = iHealthcareServiceService.updateHealthcareService(healthcareService);
return res ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[]{"服务管理"})) :
R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
return res ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"服务管理"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
/**
@@ -175,13 +185,12 @@ public class HealthcareServiceController {
// 同时删除非同定价
for (Long id : idsList) {
LambdaQueryWrapper<ChargeItemDefinition> QueryWrapper = new LambdaQueryWrapper<>();
QueryWrapper.eq(ChargeItemDefinition::getInstanceId, id).
eq(ChargeItemDefinition::getInstanceTable, CommonConstants.TableName.ADM_HEALTHCARE_SERVICE);
QueryWrapper.eq(ChargeItemDefinition::getInstanceId, id).eq(ChargeItemDefinition::getInstanceTable,
CommonConstants.TableName.ADM_HEALTHCARE_SERVICE);
iChargeItemDefinitionService.remove(QueryWrapper);
}
return res ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00005, new Object[]{"服务管理"})) :
R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00006, null));
return res ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00005, new Object[] {"服务管理"}))
: R.fail(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00006, null));
}
}

View File

@@ -1,12 +1,13 @@
package com.openhis.web.basicservice.mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.web.basicservice.dto.HealthcareServiceDto;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
/**
* 服务管理 自定义Mapper

View File

@@ -1,18 +1,20 @@
package com.openhis.common.aspectj;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.openhis.common.annotation.Dict;
import java.lang.reflect.Field;
import java.util.List;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import java.lang.reflect.Field;
import java.util.List;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.openhis.common.annotation.Dict;
@Aspect
@Component
@@ -21,19 +23,19 @@ public class DictAspect {
@Autowired
private JdbcTemplate jdbcTemplate; // 使用 JdbcTemplate 执行 SQL
@Around("@annotation(org.springframework.web.bind.annotation.GetMapping) || " +
"@annotation(org.springframework.web.bind.annotation.PostMapping)")
@Around("@annotation(org.springframework.web.bind.annotation.GetMapping) || "
+ "@annotation(org.springframework.web.bind.annotation.PostMapping)")
public Object aroundController(ProceedingJoinPoint joinPoint) throws Throwable {
Object result = joinPoint.proceed(); // 执行原方法
if (result instanceof R) {
// 如果返回值是 R<?>,提取其中的数据
R<?> response = (R<?>) result;
R<?> response = (R<?>)result;
Object data = response.getData(); // 获取 R<?> 中的实际数据
if (data instanceof Page) {
// 如果数据是 Page 类型,处理分页数据
Page<?> page = (Page<?>) data;
Page<?> page = (Page<?>)data;
List<?> records = page.getRecords();
if (!records.isEmpty()) {
for (Object obj : records) {
@@ -42,7 +44,7 @@ public class DictAspect {
}
} else if (data instanceof List) {
// 如果数据是 List 类型,处理列表数据
List<?> list = (List<?>) data;
List<?> list = (List<?>)data;
if (!list.isEmpty()) {
for (Object obj : list) {
processDict(obj); // 处理每个 DTO 对象
@@ -99,11 +101,21 @@ public class DictAspect {
if (StringUtils.isEmpty(dictTable)) {
// 场景 1默认查询 sys_dict_data 表
sql = "SELECT dict_label FROM sys_dict_data WHERE dict_type = ? AND dict_value::varchar = ? LIMIT 1";
try {
return jdbcTemplate.queryForObject(sql, String.class, dictCode, dictValue);
} catch (DataAccessException e) {
// 如果查询结果为空,返回 空字符串
return "";
}
} else {
// 场景 2查询指定表
sql = String.format("SELECT %s FROM %s WHERE %s::varchar = ? LIMIT 1", dictText, dictTable, dictCode);
try {
return jdbcTemplate.queryForObject(sql, String.class, dictValue);
} catch (DataAccessException e) {
// 如果查询结果为空,返回 空字符串
return "";
}
}
}
}