From a5d65e5021084f0ed84e76f519925096f43d0702 Mon Sep 17 00:00:00 2001 From: Zhuangxingyu Date: Sat, 22 Feb 2025 16:56:07 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=8F=90=E4=BA=A4=20?= =?UTF-8?q?=E8=B4=B9=E7=94=A8=E5=AE=9A=E4=BB=B7=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/common/enums/DefinitionTypeEnum.java | 42 ++++ .../assembler/ItemDefinitionAssembler.java | 197 +++++++++++++++ .../DiseaseManagementController.java | 2 +- .../controller/ItemDefinitionController.java | 200 +++++++++++++++ .../dto/ChargeItemDefPageDto.java | 90 +++++++ .../dto/ItemDefSearchParam.java | 27 ++ .../datadictionary/dto/ItemDefinitionDto.java | 96 +++++++ .../mapper/ChargeItemDefSearchMapper.java | 57 +++++ .../mapper/xml/ChargeItemDefSearchMapper.xml | 238 ++++++++++++++++++ .../service/IChargeItemDefAppService.java | 23 ++ .../service/IChargeItemDefinitionService.java | 26 ++ .../impl/ChargeItemDefAppServiceImpl.java | 54 +++- .../impl/ChargeItemDefinitionServiceImpl.java | 59 ++++- 13 files changed, 1108 insertions(+), 3 deletions(-) create mode 100644 openhis-server/core-common/src/main/java/com/core/common/enums/DefinitionTypeEnum.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/assembler/ItemDefinitionAssembler.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/ItemDefinitionController.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/ChargeItemDefPageDto.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/ItemDefSearchParam.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/ItemDefinitionDto.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/ChargeItemDefSearchMapper.java create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/xml/ChargeItemDefSearchMapper.xml diff --git a/openhis-server/core-common/src/main/java/com/core/common/enums/DefinitionTypeEnum.java b/openhis-server/core-common/src/main/java/com/core/common/enums/DefinitionTypeEnum.java new file mode 100644 index 00000000..9fa51072 --- /dev/null +++ b/openhis-server/core-common/src/main/java/com/core/common/enums/DefinitionTypeEnum.java @@ -0,0 +1,42 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.core.common.enums; + +/** + * 定价类型 + * + * @author zxy + * @date 2025-02-21 + */ +public enum DefinitionTypeEnum { + + /** + * 药品 + */ + MEDICATION("1", "药品"), + /** + * 耗材 + */ + DEVICE("2", "耗材"), + /** + * 手术 + */ + ACTIVITY("3", "手术"); + + private final String code; + private final String info; + + DefinitionTypeEnum(String code, String info) { + this.code = code; + this.info = info; + } + + public String getCode() { + return code; + } + + public String getInfo() { + return info; + } +} \ No newline at end of file diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/assembler/ItemDefinitionAssembler.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/assembler/ItemDefinitionAssembler.java new file mode 100644 index 00000000..7588c5af --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/assembler/ItemDefinitionAssembler.java @@ -0,0 +1,197 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.datadictionary.assembler; + +import java.util.List; +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.openhis.administration.domain.ChargeItemDefApp; +import com.openhis.administration.domain.ChargeItemDefinition; +import com.openhis.administration.domain.DeviceDefinition; +import com.openhis.medication.domain.MedicationDefinition; +import com.openhis.web.datadictionary.dto.ChargeItemDefPageDto; +import com.openhis.web.datadictionary.dto.ItemDefSearchParam; +import com.openhis.workflow.domain.ActivityDefinition; + +/** + * 费用定价dto转换器 + * + * @author zxy + * @date 2025-02-21 + */ +public class ItemDefinitionAssembler { +// /** +// * 装配【费用定价分页列表DTO】分页 药品 +// * +// * @param chargeItemDefinitionPage 【费用定价管理Entity实体】分页 +// * @param chargeItemDefAppList 【费用定价管理子表Entity实体】列表 +// * @param medicationDefinitionList【药品定义管理Entity实体】列表 +// * @return 【费用定价分页列表DTO】分页 +// */ +// public static Page assembleMedDefinitionDto( +// Page chargeItemDefinitionPage, List chargeItemDefAppList, +// List medicationDefinitionList, ItemDefSearchParam itemDefSearchParam) { +// +// // 将查询到的【药品基本信息管理】列表,作成以ID为Key的Map +// Map medicationDefinitionMap = medicationDefinitionList.stream() +// .collect(Collectors.toMap(MedicationDefinition::getId, Function.identity())); +// +// // 将查询到的【患者管理】列表,作成以ID为Key的Map +// Map chargeItemDefAppMap = +// chargeItemDefAppList.stream().collect(Collectors.toMap(ChargeItemDefApp::getId, Function.identity())); +// +// // 定义【入库单据分页列表DTO】的分页,传入【页码】、【行数】、及上面分页的【总数】 +// Page returnPage = new Page<>(chargeItemDefinitionPage.getCurrent(), +// chargeItemDefinitionPage.getSize(), chargeItemDefinitionPage.getTotal()); +// +// // 将【供应申请管理】的分页转化为返回【入库单据分页列表DTO】的分页 +// returnPage.setRecords(chargeItemDefinitionPage.getRecords().stream().map(entity -> { +// // 定义【入库单据分页列表DTO】 +// ChargeItemDefPageDto dto = new ChargeItemDefPageDto(); +// ChargeItemDefApp chargeItemDefApp = +// chargeItemDefAppMap.getOrDefault(entity.getInstanceId(), new ChargeItemDefApp()); +// MedicationDefinition medicationDefinition = +// medicationDefinitionMap.getOrDefault(entity.getInstanceId(), new MedicationDefinition()); +// // 从主表COPY需要的字段 +// dto.setId(entity.getId()); +// dto.setConditionLotnumber(chargeItemDefApp.getConditionLotnumber()); +// dto.setPyCode(medicationDefinition.getPyCode()); +// dto.setTypeEnum(medicationDefinition.getCategoryCode()); +// return dto; +// }).collect(Collectors.toList())); +// // 模糊查询项目名称/项目编码/助记码 +// if (itemDefSearchParam.getSearchKey() != null) { +// returnPage.setRecords(returnPage.getRecords().stream() +// .filter(e -> e.getChargeName().contains(itemDefSearchParam.getSearchKey()) +// || e.getTitle().contains(itemDefSearchParam.getSearchKey()) +// || e.getPyCode().contains(itemDefSearchParam.getSearchKey())) +// .collect(Collectors.toList())); +// } +// // 精确查询收费项目 +// if (itemDefSearchParam.getChargeItem() != null) { +// returnPage.setRecords(returnPage.getRecords().stream() +// .filter(e -> e.getTypeEnum().equals(itemDefSearchParam.getChargeItem())).collect(Collectors.toList())); +// } +// +// // 返回【入库单据分页列表DTO】分页 +// return returnPage; +// } +// +// /** +// * 装配【费用定价分页列表DTO】分页 器具 +// * +// * @param chargeItemDefinitionPage 【费用定价管理Entity实体】分页 +// * @param chargeItemDefAppList 【费用定价管理子表Entity实体】列表 +// * @param medicationDefinitionList【药品定义管理Entity实体】列表 +// * @return 【费用定价分页列表DTO】分页 +// */ +// public static Page assembleDevDefinitionDto( +// Page chargeItemDefinitionPage, List chargeItemDefAppList, +// List medicationDefinitionList, ItemDefSearchParam itemDefSearchParam) { +// +// // 将查询到的【药品基本信息管理】列表,作成以ID为Key的Map +// Map deviceDefinitionMap = +// medicationDefinitionList.stream().collect(Collectors.toMap(DeviceDefinition::getId, Function.identity())); +// +// // 将查询到的【患者管理】列表,作成以ID为Key的Map +// Map chargeItemDefAppMap = +// chargeItemDefAppList.stream().collect(Collectors.toMap(ChargeItemDefApp::getId, Function.identity())); +// +// // 定义【入库单据分页列表DTO】的分页,传入【页码】、【行数】、及上面分页的【总数】 +// Page returnPage = new Page<>(chargeItemDefinitionPage.getCurrent(), +// chargeItemDefinitionPage.getSize(), chargeItemDefinitionPage.getTotal()); +// +// // 将【供应申请管理】的分页转化为返回【入库单据分页列表DTO】的分页 +// returnPage.setRecords(chargeItemDefinitionPage.getRecords().stream().map(entity -> { +// // 定义【入库单据分页列表DTO】 +// ChargeItemDefPageDto dto = new ChargeItemDefPageDto(); +// ChargeItemDefApp chargeItemDefApp = +// chargeItemDefAppMap.getOrDefault(entity.getInstanceId(), new ChargeItemDefApp()); +// DeviceDefinition deviceDefinition = +// deviceDefinitionMap.getOrDefault(entity.getInstanceId(), new DeviceDefinition()); +// // 从主表COPY需要的字段 +// dto.setId(entity.getId()); +// dto.setConditionLotnumber(chargeItemDefApp.getConditionLotnumber()); +// dto.setPyCode(deviceDefinition.getPyCode()); +// dto.setTypeEnum(deviceDefinition.getDeviceClass()); +// return dto; +// }).collect(Collectors.toList())); +// // 模糊查询项目名称/项目编码/助记码 +// if (itemDefSearchParam.getSearchKey() != null) { +// returnPage.setRecords(returnPage.getRecords().stream() +// .filter(e -> e.getChargeName().contains(itemDefSearchParam.getSearchKey()) +// || e.getTitle().contains(itemDefSearchParam.getSearchKey()) +// || e.getPyCode().contains(itemDefSearchParam.getSearchKey())) +// .collect(Collectors.toList())); +// } +// // 精确查询收费项目 +// if (itemDefSearchParam.getChargeItem() != null) { +// returnPage.setRecords(returnPage.getRecords().stream() +// .filter(e -> e.getTypeEnum().equals(itemDefSearchParam.getChargeItem())).collect(Collectors.toList())); +// } +// +// // 返回【入库单据分页列表DTO】分页 +// return returnPage; +// } +// +// /** +// * 装配【费用定价分页列表DTO】分页 诊疗 +// * +// * @param chargeItemDefinitionPage 【费用定价管理Entity实体】分页 +// * @param chargeItemDefAppList 【费用定价管理子表Entity实体】列表 +// * @param medicationDefinitionList【药品定义管理Entity实体】列表 +// * @return 【费用定价分页列表DTO】分页 +// */ +// public static Page assembleProDefinitionDto( +// Page chargeItemDefinitionPage, List chargeItemDefAppList, +// List medicationDefinitionList, ItemDefSearchParam itemDefSearchParam) { +// +// // 将查询到的【药品基本信息管理】列表,作成以ID为Key的Map +// Map activityDefinitionMap = +// medicationDefinitionList.stream().collect(Collectors.toMap(ActivityDefinition::getId, Function.identity())); +// +// // 将查询到的【患者管理】列表,作成以ID为Key的Map +// Map chargeItemDefAppMap = +// chargeItemDefAppList.stream().collect(Collectors.toMap(ChargeItemDefApp::getId, Function.identity())); +// +// // 定义【入库单据分页列表DTO】的分页,传入【页码】、【行数】、及上面分页的【总数】 +// Page returnPage = new Page<>(chargeItemDefinitionPage.getCurrent(), +// chargeItemDefinitionPage.getSize(), chargeItemDefinitionPage.getTotal()); +// +// // 将【供应申请管理】的分页转化为返回【入库单据分页列表DTO】的分页 +// returnPage.setRecords(chargeItemDefinitionPage.getRecords().stream().map(entity -> { +// // 定义【入库单据分页列表DTO】 +// ChargeItemDefPageDto dto = new ChargeItemDefPageDto(); +// ChargeItemDefApp chargeItemDefApp = +// chargeItemDefAppMap.getOrDefault(entity.getInstanceId(), new ChargeItemDefApp()); +// ActivityDefinition deviceDefinition = +// activityDefinitionMap.getOrDefault(entity.getInstanceId(), new ActivityDefinition()); +// // 从主表COPY需要的字段 +// dto.setId(entity.getId()); +// dto.setConditionLotnumber(chargeItemDefApp.getConditionLotnumber()); +// dto.setPyCode(deviceDefinition.getPyCode()); +// dto.setTypeEnum(deviceDefinition.getTypeEnum().toString()); +// return dto; +// }).collect(Collectors.toList())); +// // 模糊查询项目名称/项目编码/助记码 +// if (itemDefSearchParam.getSearchKey() != null) { +// returnPage.setRecords(returnPage.getRecords().stream() +// .filter(e -> e.getChargeName().contains(itemDefSearchParam.getSearchKey()) +// || e.getTitle().contains(itemDefSearchParam.getSearchKey()) +// || e.getPyCode().contains(itemDefSearchParam.getSearchKey())) +// .collect(Collectors.toList())); +// } +// // 精确查询收费项目 +// if (itemDefSearchParam.getChargeItem() != null) { +// returnPage.setRecords(returnPage.getRecords().stream() +// .filter(e -> e.getTypeEnum().equals(itemDefSearchParam.getChargeItem())).collect(Collectors.toList())); +// } +// +// // 返回【入库单据分页列表DTO】分页 +// return returnPage; +// } +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiseaseManagementController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiseaseManagementController.java index 0e15ebca..e84318de 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiseaseManagementController.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/DiseaseManagementController.java @@ -55,7 +55,7 @@ public class DiseaseManagementController { void AddDisease(DiseaseInDto diseaseInDto) { ConditionDefinition conditionDefinition = new ConditionDefinition(); BeanUtils.copyProperties(diseaseInDto,conditionDefinition); - iConditionDefinitionService.AddDisease(conditionDefinition); +// iConditionDefinitionService.AddDisease(conditionDefinition); } // 新增医保病种目录 diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/ItemDefinitionController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/ItemDefinitionController.java new file mode 100644 index 00000000..e670e0fa --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/controller/ItemDefinitionController.java @@ -0,0 +1,200 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.datadictionary.controller; + +import java.util.ArrayList; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +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.enums.DefinitionTypeEnum; +import com.core.common.utils.MessageUtils; +import com.core.common.utils.bean.BeanUtils; +import com.openhis.administration.domain.ChargeItemDefApp; +import com.openhis.administration.domain.ChargeItemDefinition; +import com.openhis.administration.service.IChargeItemDefAppService; +import com.openhis.administration.service.IChargeItemDefinitionService; +import com.openhis.administration.service.IDeviceDefinitionService; +import com.openhis.common.constant.PromptMsgConstant; +import com.openhis.medication.service.IMedicationDefinitionService; +import com.openhis.web.datadictionary.dto.ChargeItemDefPageDto; +import com.openhis.web.datadictionary.dto.ItemDefSearchParam; +import com.openhis.web.datadictionary.dto.ItemDefinitionDto; +import com.openhis.web.datadictionary.mapper.ChargeItemDefSearchMapper; +import com.openhis.workflow.service.IActivityDefinitionService; + +import lombok.extern.slf4j.Slf4j; + +/** + * 项目定价 + * + * @author zxy + * @date 2025-02-21 + */ +@RestController +@RequestMapping("/dict-manager/definition") +@Slf4j +public class ItemDefinitionController { + + @Autowired(required = false) + private IChargeItemDefinitionService chargeItemDefinitionService; + @Autowired(required = false) + private IChargeItemDefAppService chargeItemDefAppService; + @Autowired(required = false) + private ChargeItemDefSearchMapper chargeItemDefSearchMapper; + @Autowired(required = false) + private IMedicationDefinitionService medicationDefinitionService; + @Autowired(required = false) + private IDeviceDefinitionService deviceDefinitionService; + @Autowired(required = false) + private IActivityDefinitionService activityDefinitionService; + + /** + * 项目定价列表 + * + * @param itemDefSearchParam 查询条件 + * @param pageNo 当前页码 + * @param pageSize 查询条数 + * @param request 请求数据 + * @return 项目定价列表 + */ + @GetMapping(value = "/item-definition-page") + public R getDefinitionPage(ItemDefSearchParam itemDefSearchParam, + @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo, + @RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) { + // region + /// todo: 代码未测试 + // 获取定价查询条件 + // ChargeItemDefinition chargeItemDefinition = new ChargeItemDefinition(); + // BeanUtils.copyProperties(itemDefSearchParam, chargeItemDefinition); + + // ==================================================================================== + + // 查询【费用定价管理】分页列表 + // Page chargeItemDefinitionPage = + // chargeItemDefinitionMapper.getPage(itemDefSearchParam, pageNo, pageSize); + // if (chargeItemDefinitionPage.getRecords() != null) { + // List chargeItemDefAppList = chargeItemDefAppService.listByIds(chargeItemDefinitionPage + // .getRecords().stream().filter(e -> e.getInstanceTable().equals("adm_charge_item_def_app")) + // .map(ChargeItemDefinition::getInstanceId).collect(Collectors.toList())); + // // 通过 DefinitionType 区分药品定价/器具定价/手术定价 + // if (DefinitionTypeEnum.MEDICATION.getCode().equals(itemDefSearchParam.getDefinitionType())) { + // // 获取药品定价列表 + // List medicationList = + // medicationDefinitionService.listByIds(chargeItemDefinitionPage.getRecords().stream() + // .filter(e -> e.getInstanceTable().equals("med_medication_definition")) + // .map(ChargeItemDefinition::getInstanceId).collect(Collectors.toList())); + // + // return R.ok(ItemDefinitionAssembler.assembleMedDefinitionDto(chargeItemDefinitionPage, + // chargeItemDefAppList, medicationList, itemDefSearchParam)); + // } else if (DefinitionTypeEnum.DEVICE.getCode().equals(itemDefSearchParam.getDefinitionType())) { + // // 获取器具定价列表 + // List deviceDefinitionList = deviceDefinitionService.listByIds(chargeItemDefinitionPage + // .getRecords().stream().filter(e -> e.getInstanceTable().equals("adm_device_definition")) + // .map(ChargeItemDefinition::getInstanceId).collect(Collectors.toList())); + // + // return R.ok(ItemDefinitionAssembler.assembleDevDefinitionDto(chargeItemDefinitionPage, + // chargeItemDefAppList, deviceDefinitionList, itemDefSearchParam)); + // } else if (DefinitionTypeEnum.ACTIVITY.getCode().equals(itemDefSearchParam.getDefinitionType())) { + // List activityDefinitionList = + // activityDefinitionService.listByIds(chargeItemDefinitionPage.getRecords().stream() + // .filter(e -> e.getInstanceTable().equals("wor_activity_definition")) + // .map(ChargeItemDefinition::getInstanceId).collect(Collectors.toList())); + // + // return R.ok(ItemDefinitionAssembler.assembleProDefinitionDto(chargeItemDefinitionPage, + // chargeItemDefAppList, activityDefinitionList, itemDefSearchParam)); + // } else { + // return R.ok(new Page()); + // } + // } else { + // return R.ok(new Page()); + // } + // endregion + + IPage chargeItemDefinitionPage = new Page<>(); + List chargeItemDefinitionList; + + // TODO: 待测试 + // 跳过的数量 + int skipCount = 0; + if (pageNo > 0) { + skipCount = (pageNo - 1) * pageSize; + } + // 通过 DefinitionType 区分药品定价/器具定价/手术定价 + if (DefinitionTypeEnum.MEDICATION.getCode().equals(itemDefSearchParam.getDefinitionType())) { + chargeItemDefinitionList = + chargeItemDefSearchMapper.getMedList(itemDefSearchParam, pageNo, pageSize, skipCount); + chargeItemDefinitionPage.setSize(pageSize); + chargeItemDefinitionPage.setCurrent(pageNo); + if (chargeItemDefinitionList.size() > 0) { + chargeItemDefinitionPage.setTotal(chargeItemDefinitionList.get(0).getTotalCount()); + chargeItemDefinitionPage.setRecords(chargeItemDefinitionList); + } else { + chargeItemDefinitionPage.setTotal(0); + chargeItemDefinitionPage.setRecords(new ArrayList<>()); + } + return R.ok(chargeItemDefinitionPage); + } else if (DefinitionTypeEnum.DEVICE.getCode().equals(itemDefSearchParam.getDefinitionType())) { + chargeItemDefinitionList = + chargeItemDefSearchMapper.getDevList(itemDefSearchParam, pageNo, pageSize, skipCount); + chargeItemDefinitionPage.setSize(pageSize); + chargeItemDefinitionPage.setCurrent(pageNo); + if (chargeItemDefinitionList.size() > 0) { + chargeItemDefinitionPage.setTotal(chargeItemDefinitionList.get(0).getTotalCount()); + chargeItemDefinitionPage.setRecords(chargeItemDefinitionList); + } else { + chargeItemDefinitionPage.setTotal(0); + chargeItemDefinitionPage.setRecords(new ArrayList<>()); + } + return R.ok(chargeItemDefinitionPage); + } else if (DefinitionTypeEnum.ACTIVITY.getCode().equals(itemDefSearchParam.getDefinitionType())) { + chargeItemDefinitionList = + chargeItemDefSearchMapper.getActList(itemDefSearchParam, pageNo, pageSize, skipCount); + chargeItemDefinitionPage.setSize(pageSize); + chargeItemDefinitionPage.setCurrent(pageNo); + if (chargeItemDefinitionList.size() > 0) { + chargeItemDefinitionPage.setTotal(chargeItemDefinitionList.get(0).getTotalCount()); + chargeItemDefinitionPage.setRecords(chargeItemDefinitionList); + } else { + chargeItemDefinitionPage.setTotal(0); + chargeItemDefinitionPage.setRecords(new ArrayList<>()); + } + return R.ok(chargeItemDefinitionPage); + } else { + return R.ok(); + } + } + + /** + * 修改项目定价 + * + * @param itemDefinitionDto 修改内容 + * @return 修改结果 + */ + @PutMapping(value = "/item-definition") + public R edit(@Validated @RequestBody ItemDefinitionDto itemDefinitionDto) { + // 更新adm_charge_item_definition信息 + ChargeItemDefinition chargeItemDefinition = new ChargeItemDefinition(); + BeanUtils.copyProperties(itemDefinitionDto, chargeItemDefinition); + if (!chargeItemDefinitionService.updateById(chargeItemDefinition)) { + return R.fail(); + } + + // 更新收费项目adm_charge_item_def_app + ChargeItemDefApp chargeItemDefApp = new ChargeItemDefApp(); + BeanUtils.copyProperties(itemDefinitionDto, chargeItemDefApp); + chargeItemDefApp.setDefinitionId(itemDefinitionDto.getId()); + chargeItemDefApp.setId(itemDefinitionDto.getItemId()); + return chargeItemDefAppService.updateChargeItemDefApp(chargeItemDefApp) + ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00002, new Object[] {"费用定价"})) + : R.fail(PromptMsgConstant.Common.M00007, null); + } +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/ChargeItemDefPageDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/ChargeItemDefPageDto.java new file mode 100644 index 00000000..ea0057e4 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/ChargeItemDefPageDto.java @@ -0,0 +1,90 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.datadictionary.dto; + +import java.math.BigDecimal; +import java.util.Date; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 费用定价分页Dto + * + * @author zxy + * @date 2025-02-21 + */ +@Data +@Accessors(chain = true) +public class ChargeItemDefPageDto { + + /** ID */ + private Long id; + + /** 费用定价子表主键 */ + private Long itemId; + + /** 名称 */ + private String chargeName; + + /** 项目编号 */ + private String itemNo; + + /** 规格 */ + private String totalVolume; + + /** 状态 */ + private Integer statusEnum; + + /** 单位 */ + private String unitCode; + + /** 拆零比 */ + private BigDecimal partPercent; + + /** 指导价 */ + private BigDecimal conditionYbCode; + + /** 批次号 */ + private String conditionLotnumber; + + /** 价格 */ + private BigDecimal price; + + /** 有效时间开始 */ + private Date effectiveStart; + + /** 有效时间结束 */ + private Date effectiveEnd; + + /** 拆零最小单位 */ + private String partMinUnitCode; + + /** 拆零指导价 */ + private BigDecimal partConditionPrice; + + /** 拆零价格 */ + private BigDecimal partPrice; + + /** 条件价格 */ + private BigDecimal amount; + + /** 调价说明 */ + private String description; + + /** 优先级 */ + private Integer priority; + + /** 条件规则 */ + private Integer conditionRuleId; + + /** 创建时间 */ + private Date createTime; + + /** 调价时间 */ + private Date updateTime; + + /** 总条数 */ + private Integer totalCount; +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/ItemDefSearchParam.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/ItemDefSearchParam.java new file mode 100644 index 00000000..4b44e9a2 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/ItemDefSearchParam.java @@ -0,0 +1,27 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.datadictionary.dto; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 项目定价查询dto + * + * @author zxy + * @date 2025-02-21 + */ +@Data +@Accessors(chain = true) +public class ItemDefSearchParam { + + /** 定价类型 */ + private String DefinitionType; + /** 定价项目 */ + private String chargeItem; + /** 模糊搜索条件 */ + private String searchKey; + /** 状态 */ + private Integer statusEnum; +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/ItemDefinitionDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/ItemDefinitionDto.java new file mode 100644 index 00000000..0ca84024 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/dto/ItemDefinitionDto.java @@ -0,0 +1,96 @@ +/* + * Copyright ©2023 CJB-CNIT Team. All rights reserved + */ +package com.openhis.web.datadictionary.dto; + +import lombok.Data; +import lombok.experimental.Accessors; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 收费项目保存dto + * + * @author zxy + * @date 2025-02-21 + */ +@Data +@Accessors(chain = true) +public class ItemDefinitionDto { + + /** ID */ + private Long id; + + /** 子表ID */ + private Long itemId; + + /** 名称 */ + private String chargeName; + + /** 标题 */ + private String title; + + /** 状态 */ + private Integer statusEnum; + + /** 机构编码 */ + private String orgCode; + + /** 描述 */ + private String description; + + /** 代码 */ + private String instanceTable; + + /** 关联项目 */ + private Long instanceId; + + /** 有效时间开始 */ + private Date effectiveStart; + + /** 有效时间结束 */ + private Date effectiveEnd; + + /** 财务类别 */ + private String typeCode; + + /** 医保类别 */ + private Integer ybType; + + /** 是否使用详细价格规则 */ + private Integer conditionFlag; + + /** 基础价格 */ + private BigDecimal price; + + /** 条件规则 */ + private Long conditionRuleId; + + /** 批次号 */ + private String conditionLotnumber; + + /** 医保相关价格 */ + private String conditionYbCode; + + /** 采购售卖条件 */ + private String conditionInoutCode; + + /** 条件类型 */ + private String conditionUnitCode; + + /** 条件 */ + private String conditionCode; + + /** 优先级 */ + private Integer priority; + + /** 价格 */ + private BigDecimal amount; + + /** 名称拼音码 */ + private String pyCode; + + /** 类型 */ + private String typeEnum; +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/ChargeItemDefSearchMapper.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/ChargeItemDefSearchMapper.java new file mode 100644 index 00000000..404e2a31 --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/ChargeItemDefSearchMapper.java @@ -0,0 +1,57 @@ +package com.openhis.web.datadictionary.mapper; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.springframework.stereotype.Repository; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.openhis.administration.domain.ChargeItemDefinition; +import com.openhis.web.datadictionary.dto.ChargeItemDefPageDto; +import com.openhis.web.datadictionary.dto.ItemDefSearchParam; + +/** + * 费用定价管理Mapper接口 + * + * @author system + * @date 2025-02-20 + */ +@Repository +public interface ChargeItemDefSearchMapper extends BaseMapper { + + /** + * 药品费用定价分页查询 + * + * @param itemDefSearchParam 查询条件 + * @param pageNo 页码 + * @param pageSize 页面大小 + * @param skipCount 跳过条数 + * @return 分页查询 + */ + List getMedList(@Param("itemDefSearchParam") ItemDefSearchParam itemDefSearchParam, + @Param("pageNo") Integer pageNo, @Param("pageSize") Integer pageSize, @Param("skipCount") Integer skipCount); + + /** + * 器具费用定价分页查询 + * + * @param itemDefSearchParam 查询条件 + * @param pageNo 页码 + * @param pageSize 页面大小 + * @param skipCount 跳过条数 + * @return 分页查询 + */ + List getDevList(@Param("itemDefSearchParam") ItemDefSearchParam itemDefSearchParam, + @Param("pageNo") Integer pageNo, @Param("pageSize") Integer pageSize, @Param("skipCount") int skipCount); + + /** + * 活动费用定价分页查询 + * + * @param itemDefSearchParam 查询条件 + * @param pageNo 页码 + * @param pageSize 页面大小 + * @param skipCount 跳过条数 + * @return 分页查询 + */ + List getActList(@Param("itemDefSearchParam") ItemDefSearchParam itemDefSearchParam, + @Param("pageNo") Integer pageNo, @Param("pageSize") Integer pageSize, @Param("skipCount") int skipCount); +} \ No newline at end of file diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/xml/ChargeItemDefSearchMapper.xml b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/xml/ChargeItemDefSearchMapper.xml new file mode 100644 index 00000000..0c4568cc --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/datadictionary/mapper/xml/ChargeItemDefSearchMapper.xml @@ -0,0 +1,238 @@ + + + + + + + + + + \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IChargeItemDefAppService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IChargeItemDefAppService.java index 5e09dbd0..bafc40b3 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IChargeItemDefAppService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IChargeItemDefAppService.java @@ -11,4 +11,27 @@ import com.openhis.administration.domain.ChargeItemDefApp; */ public interface IChargeItemDefAppService extends IService { + /** + * 更新项目定价 + * + * @param chargeItemDefApp 更新内容 + * @return 更新结果 + */ + boolean updateChargeItemDefApp(ChargeItemDefApp chargeItemDefApp); + + /** + * 新增费用定价 + * + * @param chargeItemDefApp 新增内容 + * @return 新增结果 + */ + boolean addChargeItemDefApp(ChargeItemDefApp chargeItemDefApp); + + /** + * 删除费用定价 + * + * @param id 费用定价id + * @return 新增结果 + */ + boolean deleteChargeItemDefApp(Long id); } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IChargeItemDefinitionService.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IChargeItemDefinitionService.java index 2ec4f012..e2c99a71 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IChargeItemDefinitionService.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/IChargeItemDefinitionService.java @@ -1,5 +1,6 @@ package com.openhis.administration.service; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.openhis.administration.domain.ChargeItemDefinition; @@ -11,4 +12,29 @@ import com.openhis.administration.domain.ChargeItemDefinition; */ public interface IChargeItemDefinitionService extends IService { + /** + * 获取定价分页列表 + * + * @param chargeItemDefinition 定价查询条件 + * @param pageNo 页码 + * @param pageSize 页面大小 + * @return 定价分页列表 + */ + Page getPage(ChargeItemDefinition chargeItemDefinition, Integer pageNo, Integer pageSize); + + /** + * 新增费用定价 + * + * @param chargeItemDefinition 新增内容 + * @return 新增结果 + */ + boolean addChargeItemDefinition(ChargeItemDefinition chargeItemDefinition); + + /** + * 删除费用定价 + * + * @param id 费用定价id + * @return 新增结果 + */ + boolean deleteChargeItemDefinition(Long id); } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/ChargeItemDefAppServiceImpl.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/ChargeItemDefAppServiceImpl.java index 24cc1673..6b906ffb 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/ChargeItemDefAppServiceImpl.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/ChargeItemDefAppServiceImpl.java @@ -14,6 +14,58 @@ import com.openhis.administration.service.IChargeItemDefAppService; * @date 2025-02-20 */ @Service -public class ChargeItemDefAppServiceImpl extends ServiceImpl implements IChargeItemDefAppService { +public class ChargeItemDefAppServiceImpl extends ServiceImpl + implements IChargeItemDefAppService { + /** + * 更新项目定价 + * + * @param chargeItemDefApp 更新内容 + * @return 更新结果 + */ + @Override + public boolean updateChargeItemDefApp(ChargeItemDefApp chargeItemDefApp) { + // 更新样例 一切以实际为主 + if (chargeItemDefApp.getId() != null) { + // 获取更新前收费项目,避免更新导致数据库崩溃 + if (baseMapper.selectById(chargeItemDefApp.getId()) == null) { + return false; + } else { + return baseMapper.updateById(chargeItemDefApp) > 0; + } + } else { + return false; + } + } + + /** + * 新增费用定价 + * + * @param chargeItemDefApp 新增内容 + * @return 新增结果 + */ + @Override + public boolean addChargeItemDefApp(ChargeItemDefApp chargeItemDefApp) { + //此判断是为了避免插入时主键重复 + if (chargeItemDefApp.getId() != null) { + return false; + } else { + return baseMapper.insert(chargeItemDefApp) > 0; + } + } + + /** + * 删除费用定价 + * + * @param id 费用定价id + * @return 新增结果 + */ + @Override + public boolean deleteChargeItemDefApp(Long id) { + if (baseMapper.selectById(id) == null) { + return false; + } else { + return baseMapper.deleteById(id) > 0; + } + } } \ No newline at end of file diff --git a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/ChargeItemDefinitionServiceImpl.java b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/ChargeItemDefinitionServiceImpl.java index a2a6162f..9165da6b 100644 --- a/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/ChargeItemDefinitionServiceImpl.java +++ b/openhis-server/openhis-domain/src/main/java/com/openhis/administration/service/impl/ChargeItemDefinitionServiceImpl.java @@ -2,10 +2,13 @@ package com.openhis.administration.service.impl; import org.springframework.stereotype.Service; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.openhis.administration.domain.ChargeItemDefinition; import com.openhis.administration.mapper.ChargeItemDefinitionMapper; import com.openhis.administration.service.IChargeItemDefinitionService; +import com.openhis.common.enums.DelFlag; /** * 费用定价管理Service业务层处理 @@ -14,6 +17,60 @@ import com.openhis.administration.service.IChargeItemDefinitionService; * @date 2025-02-20 */ @Service -public class ChargeItemDefinitionServiceImpl extends ServiceImpl implements IChargeItemDefinitionService { +public class ChargeItemDefinitionServiceImpl extends ServiceImpl + implements IChargeItemDefinitionService { + /** + * 获取分页列表 + * + * @param chargeItemDefinition 查询条件 + * @param pageNo 页码 + * @param pageSize 页面大小 + * @return 分页列表 + */ + @Override + public Page getPage(ChargeItemDefinition chargeItemDefinition, Integer pageNo, + Integer pageSize) { + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(ChargeItemDefinition::getDeleteFlag, DelFlag.NO.getValue()); + + //拼接查询条件 + if (chargeItemDefinition.getStatusEnum() != null) { + queryWrapper.eq(ChargeItemDefinition::getStatusEnum, chargeItemDefinition.getStatusEnum()); + } + + return baseMapper.selectPage(new Page<>(pageNo, pageSize), queryWrapper); + } + + /** + * 新增费用定价 + * + * @param chargeItemDefinition 新增内容 + * @return 新增结果 + */ + @Override + public boolean addChargeItemDefinition(ChargeItemDefinition chargeItemDefinition) { + //此判断是为了避免插入时主键重复 + if (chargeItemDefinition.getId() != null) { + return false; + } else { + return baseMapper.insert(chargeItemDefinition) > 0; + } + } + + /** + * 删除费用定价 + * + * @param id 费用定价id + * @return 新增结果 + */ + @Override + public boolean deleteChargeItemDefinition(Long id) { + if (baseMapper.selectById(id) == null) { + return false; + } else { + return baseMapper.deleteById(id) > 0; + } + } } \ No newline at end of file