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

View File

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

View File

@@ -1,18 +1,20 @@
package com.openhis.common.aspectj; package com.openhis.common.aspectj;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import java.lang.reflect.Field;
import com.core.common.core.domain.R; import java.util.List;
import com.openhis.common.annotation.Dict;
import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around; import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Aspect;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import java.lang.reflect.Field; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.util.List; import com.core.common.core.domain.R;
import com.openhis.common.annotation.Dict;
@Aspect @Aspect
@Component @Component
@@ -21,8 +23,8 @@ public class DictAspect {
@Autowired @Autowired
private JdbcTemplate jdbcTemplate; // 使用 JdbcTemplate 执行 SQL private JdbcTemplate jdbcTemplate; // 使用 JdbcTemplate 执行 SQL
@Around("@annotation(org.springframework.web.bind.annotation.GetMapping) || " + @Around("@annotation(org.springframework.web.bind.annotation.GetMapping) || "
"@annotation(org.springframework.web.bind.annotation.PostMapping)") + "@annotation(org.springframework.web.bind.annotation.PostMapping)")
public Object aroundController(ProceedingJoinPoint joinPoint) throws Throwable { public Object aroundController(ProceedingJoinPoint joinPoint) throws Throwable {
Object result = joinPoint.proceed(); // 执行原方法 Object result = joinPoint.proceed(); // 执行原方法
@@ -99,11 +101,21 @@ public class DictAspect {
if (StringUtils.isEmpty(dictTable)) { if (StringUtils.isEmpty(dictTable)) {
// 场景 1默认查询 sys_dict_data 表 // 场景 1默认查询 sys_dict_data 表
sql = "SELECT dict_label FROM sys_dict_data WHERE dict_type = ? AND dict_value::varchar = ? LIMIT 1"; 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); return jdbcTemplate.queryForObject(sql, String.class, dictCode, dictValue);
} catch (DataAccessException e) {
// 如果查询结果为空,返回 空字符串
return "";
}
} else { } else {
// 场景 2查询指定表 // 场景 2查询指定表
sql = String.format("SELECT %s FROM %s WHERE %s::varchar = ? LIMIT 1", dictText, dictTable, dictCode); sql = String.format("SELECT %s FROM %s WHERE %s::varchar = ? LIMIT 1", dictText, dictTable, dictCode);
try {
return jdbcTemplate.queryForObject(sql, String.class, dictValue); return jdbcTemplate.queryForObject(sql, String.class, dictValue);
} catch (DataAccessException e) {
// 如果查询结果为空,返回 空字符串
return "";
}
} }
} }
} }