From f767b93f0cadd0d2214aa9f03a35bfff2bed3cde Mon Sep 17 00:00:00 2001 From: "Wang.Huan" Date: Fri, 28 Mar 2025 14:26:20 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=82=E4=B8=8E=E8=80=85=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/mapper/system/SysRoleMapper.xml | 8 +- .../appservice/IPractitionerAppService.java | 2 +- .../impl/PractitionerAppServiceImpl.java | 117 ++++++++++--- .../controller/PractitionerController.java | 2 +- .../dto/PractitionerOrgAndLocationDto.java} | 26 +-- .../dto/PractitionerRolesDto.java | 32 ++++ .../dto/UserAndPractitionerDto.java | 20 ++- .../mapper/PractitionerAppAppMapper.java | 20 ++- .../OutpatientRegistrationAppServiceImpl.java | 4 +- .../DoctorStationAdviceAppServiceImpl.java | 160 +++++++++++------- .../web/doctorstation/dto/AdviceBaseDto.java | 7 + .../web/doctorstation/dto/AdviceSaveDto.java | 6 + .../basedatamanage/PractitionerAppMapper.xml | 31 +++- .../DoctorStationAdviceAppMapper.xml | 6 +- ...tionerRole.java => PractitionerRoles.java} | 6 +- 15 files changed, 316 insertions(+), 131 deletions(-) rename openhis-server/openhis-application/src/main/java/com/openhis/web/{doctorstation/dto/UserAndPractitionerChildDto.java => basedatamanage/dto/PractitionerOrgAndLocationDto.java} (79%) create mode 100644 openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/PractitionerRolesDto.java rename openhis-server/openhis-application/src/main/java/com/openhis/web/{doctorstation => basedatamanage}/dto/UserAndPractitionerDto.java (79%) rename openhis-server/openhis-common/src/main/java/com/openhis/common/enums/{PractitionerRole.java => PractitionerRoles.java} (74%) diff --git a/openhis-server/core-system/src/main/resources/mapper/system/SysRoleMapper.xml b/openhis-server/core-system/src/main/resources/mapper/system/SysRoleMapper.xml index 55d07a54..aaa8b474 100644 --- a/openhis-server/core-system/src/main/resources/mapper/system/SysRoleMapper.xml +++ b/openhis-server/core-system/src/main/resources/mapper/system/SysRoleMapper.xml @@ -149,14 +149,14 @@ data_scope = #{dataScope}, - 1, - 0, + menu_check_strictly=1, + menu_check_strictly=0, - 1, - 0, + dept_check_strictly=1, + dept_check_strictly=0, status = #{status}, diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IPractitionerAppService.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IPractitionerAppService.java index b3d27871..9db610ad 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IPractitionerAppService.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/IPractitionerAppService.java @@ -2,7 +2,7 @@ package com.openhis.web.basedatamanage.appservice; import com.baomidou.mybatisplus.core.metadata.IPage; import com.core.common.core.domain.R; -import com.openhis.web.doctorstation.dto.UserAndPractitionerDto; +import com.openhis.web.basedatamanage.dto.UserAndPractitionerDto; /** * 参与者 应该服务类 diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/PractitionerAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/PractitionerAppServiceImpl.java index 3a476f55..2cc18a79 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/PractitionerAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/appservice/impl/PractitionerAppServiceImpl.java @@ -27,11 +27,13 @@ import com.openhis.administration.service.IPractitionerRoleService; import com.openhis.administration.service.IPractitionerService; import com.openhis.common.constant.PromptMsgConstant; import com.openhis.common.enums.AccountStatus; +import com.openhis.common.enums.PractitionerRoles; import com.openhis.common.utils.HisQueryUtils; import com.openhis.web.basedatamanage.appservice.IPractitionerAppService; +import com.openhis.web.basedatamanage.dto.PractitionerOrgAndLocationDto; +import com.openhis.web.basedatamanage.dto.PractitionerRolesDto; +import com.openhis.web.basedatamanage.dto.UserAndPractitionerDto; import com.openhis.web.basedatamanage.mapper.PractitionerAppAppMapper; -import com.openhis.web.doctorstation.dto.UserAndPractitionerChildDto; -import com.openhis.web.doctorstation.dto.UserAndPractitionerDto; @Service public class PractitionerAppServiceImpl implements IPractitionerAppService { @@ -82,12 +84,12 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService { Long userId = iBizUserService.getOne(new LambdaQueryWrapper().eq(BizUser::getUserName, userName)).getUserId(); // 用户id // 新增 sys_user_role - List roleIds = userAndPractitionerDto.getRoleIds(); + List practitionerRoleDtoList = userAndPractitionerDto.getPractitionerRolesDtoList(); BizUserRole bizUserRole; - for (Long roleId : roleIds) { + for (PractitionerRolesDto practitionerRolesDto : practitionerRoleDtoList) { bizUserRole = new BizUserRole(); bizUserRole.setUserId(userId); - bizUserRole.setRoleId(roleId); + bizUserRole.setRoleId(practitionerRolesDto.getRoleId()); iBizUserRoleService.save(bizUserRole); } // 新增 adm_practitioner @@ -100,21 +102,43 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService { practitioner.setAddress(userAndPractitionerDto.getAddress()); // 地址 practitioner.setYbNo(userAndPractitionerDto.getYbNo()); // 医保码 practitioner.setUserId(userId); // 系统用户id - practitioner.setOrgId(userAndPractitionerDto.getOrgId()); // 机构id + // 责任科室 + List responsibilityOrgDtoList = + userAndPractitionerDto.getResponsibilityOrgDtoList(); + practitioner.setOrgId(responsibilityOrgDtoList.get(0).getOrgId()); // 机构id practitioner.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(nickName)); // 拼音码 practitioner.setWbStr(ChineseConvertUtils.toWBFirstLetter(nickName)); // 五笔码 iPractitionerService.save(practitioner); Long practitionerId = practitioner.getId();// 参与者id // 新增 adm_practitioner_role - List childList = userAndPractitionerDto.getChildList(); PractitionerRole practitionerRole; - for (UserAndPractitionerChildDto userAndPractitionerChildDto : childList) { + // 1.责任科室 + for (PractitionerOrgAndLocationDto responsibilityOrgDto : responsibilityOrgDtoList) { practitionerRole = new PractitionerRole(); practitionerRole.setName(nickName); // 姓名 practitionerRole.setPractitionerId(practitionerId); // 参与者id - practitionerRole.setRoleCode(userAndPractitionerChildDto.getRoleCode()); // 角色code - practitionerRole.setOrgId(userAndPractitionerChildDto.getOrgId()); // 机构id - practitionerRole.setLocationId(userAndPractitionerChildDto.getLocationId()); // 位置id + practitionerRole.setOrgId(responsibilityOrgDto.getOrgId()); // 机构id + iPractitionerRoleService.save(practitionerRole); + } + // 2.医生出诊科室 + List doctorVisitOrgDtoList = userAndPractitionerDto.getDoctorVisitOrgDtoList(); + for (PractitionerOrgAndLocationDto doctorVisitOrgDto : doctorVisitOrgDtoList) { + practitionerRole = new PractitionerRole(); + practitionerRole.setName(nickName); // 姓名 + practitionerRole.setPractitionerId(practitionerId); // 参与者id + practitionerRole.setRoleCode(PractitionerRoles.DOCTOR.getCode());// 角色code + practitionerRole.setOrgId(doctorVisitOrgDto.getOrgId()); // 机构id + iPractitionerRoleService.save(practitionerRole); + } + // 3.管理库房 + List manageLocationDtoList = userAndPractitionerDto.getManageLocationDtoList(); + for (PractitionerOrgAndLocationDto manageLocationDto : manageLocationDtoList) { + practitionerRole = new PractitionerRole(); + practitionerRole.setName(nickName); // 姓名 + practitionerRole.setPractitionerId(practitionerId); // 参与者id + practitionerRole.setRoleCode(PractitionerRoles.LOCATION_ADMIN.getCode()); // 角色code + practitionerRole.setLocationId(manageLocationDto.getLocationId()); // 位置id + practitionerRole.setOrgId(manageLocationDto.getOrgId()); // 机构id iPractitionerRoleService.save(practitionerRole); } @@ -143,13 +167,34 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService { // 参与者id集合 List practitionerIdList = records.stream().map(UserAndPractitionerDto::getPractitionerId).collect(Collectors.toList()); - // 子集合 - List childList = practitionerAppAppMapper.getChildList(practitionerIdList); + // 角色集合 + List practitionerRolesDtoList = + practitionerAppAppMapper.getPractitionerRolesDtoList(practitionerIdList); + // 科室和位置 + List orgAndLocationDtoList = + practitionerAppAppMapper.getOrgAndLocationDtoList(practitionerIdList); for (UserAndPractitionerDto record : records) { - // 匹配子集合 - List childDtoList = childList.stream() + // 匹配角色 + List list1 = practitionerRolesDtoList.stream() .filter(e -> e.getPractitionerId().equals(record.getPractitionerId())).collect(Collectors.toList()); - record.setChildList(childDtoList); + record.setPractitionerRolesDtoList(list1); + // 匹配责任科室 + List list2 = orgAndLocationDtoList.stream() + .filter(e -> e.getPractitionerId().equals(record.getPractitionerId()) && "".equals(e.getRoleCode())) + .collect(Collectors.toList()); + record.setResponsibilityOrgDtoList(list2); + // 匹配医生出诊科室 + List list3 = + orgAndLocationDtoList.stream().filter(e -> e.getPractitionerId().equals(record.getPractitionerId()) + && PractitionerRoles.DOCTOR.getCode().equals(e.getRoleCode())).collect(Collectors.toList()); + record.setDoctorVisitOrgDtoList(list3); + // 匹配管理库房 + List list4 = + orgAndLocationDtoList.stream() + .filter(e -> e.getPractitionerId().equals(record.getPractitionerId()) + && PractitionerRoles.LOCATION_ADMIN.getCode().equals(e.getRoleCode())) + .collect(Collectors.toList()); + record.setManageLocationDtoList(list4); } return userPractitionerPage; } @@ -179,12 +224,12 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService { iBizUserService.update(bizUser, new LambdaQueryWrapper().eq(BizUser::getUserId, userId)); // 先删除,再新增 sys_user_role practitionerAppAppMapper.delUserRole(userId); - List roleIds = userAndPractitionerDto.getRoleIds(); + List practitionerRoleDtoList = userAndPractitionerDto.getPractitionerRolesDtoList(); BizUserRole bizUserRole; - for (Long roleId : roleIds) { + for (PractitionerRolesDto practitionerRolesDto : practitionerRoleDtoList) { bizUserRole = new BizUserRole(); bizUserRole.setUserId(userId); - bizUserRole.setRoleId(roleId); + bizUserRole.setRoleId(practitionerRolesDto.getRoleId()); iBizUserRoleService.save(bizUserRole); } // 编辑 adm_practitioner @@ -197,21 +242,43 @@ public class PractitionerAppServiceImpl implements IPractitionerAppService { practitioner.setAddress(userAndPractitionerDto.getAddress()); // 地址 practitioner.setYbNo(userAndPractitionerDto.getYbNo()); // 医保码 practitioner.setUserId(userId); // 系统用户id - practitioner.setOrgId(userAndPractitionerDto.getOrgId()); // 机构id + // 责任科室 + List responsibilityOrgDtoList = + userAndPractitionerDto.getResponsibilityOrgDtoList(); + practitioner.setOrgId(responsibilityOrgDtoList.get(0).getOrgId()); // 机构id practitioner.setPyStr(ChineseConvertUtils.toPinyinFirstLetter(nickName)); // 拼音码 practitioner.setWbStr(ChineseConvertUtils.toWBFirstLetter(nickName)); // 五笔码 iPractitionerService.updateById(practitioner); // 先删除,再新增 adm_practitioner_role practitionerAppAppMapper.delPractitionerRole(practitionerId); - List childList = userAndPractitionerDto.getChildList(); PractitionerRole practitionerRole; - for (UserAndPractitionerChildDto userAndPractitionerChildDto : childList) { + // 1.责任科室 + for (PractitionerOrgAndLocationDto responsibilityOrgDto : responsibilityOrgDtoList) { practitionerRole = new PractitionerRole(); practitionerRole.setName(nickName); // 姓名 practitionerRole.setPractitionerId(practitionerId); // 参与者id - practitionerRole.setRoleCode(userAndPractitionerChildDto.getRoleCode()); // 角色code - practitionerRole.setOrgId(userAndPractitionerChildDto.getOrgId()); // 机构id - practitionerRole.setLocationId(userAndPractitionerChildDto.getLocationId()); // 位置id + practitionerRole.setOrgId(responsibilityOrgDto.getOrgId()); // 机构id + iPractitionerRoleService.save(practitionerRole); + } + // 2.医生出诊科室 + List doctorVisitOrgDtoList = userAndPractitionerDto.getDoctorVisitOrgDtoList(); + for (PractitionerOrgAndLocationDto doctorVisitOrgDto : doctorVisitOrgDtoList) { + practitionerRole = new PractitionerRole(); + practitionerRole.setName(nickName); // 姓名 + practitionerRole.setPractitionerId(practitionerId); // 参与者id + practitionerRole.setRoleCode(PractitionerRoles.DOCTOR.getCode());// 角色code + practitionerRole.setOrgId(doctorVisitOrgDto.getOrgId()); // 机构id + iPractitionerRoleService.save(practitionerRole); + } + // 3.管理库房 + List manageLocationDtoList = userAndPractitionerDto.getManageLocationDtoList(); + for (PractitionerOrgAndLocationDto manageLocationDto : manageLocationDtoList) { + practitionerRole = new PractitionerRole(); + practitionerRole.setName(nickName); // 姓名 + practitionerRole.setPractitionerId(practitionerId); // 参与者id + practitionerRole.setRoleCode(PractitionerRoles.LOCATION_ADMIN.getCode()); // 角色code + practitionerRole.setLocationId(manageLocationDto.getLocationId()); // 位置id + practitionerRole.setOrgId(manageLocationDto.getOrgId()); // 机构id iPractitionerRoleService.save(practitionerRole); } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/PractitionerController.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/PractitionerController.java index 0644b661..22e5553e 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/PractitionerController.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/controller/PractitionerController.java @@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.*; import com.baomidou.mybatisplus.core.metadata.IPage; import com.core.common.core.domain.R; import com.openhis.web.basedatamanage.appservice.IPractitionerAppService; -import com.openhis.web.doctorstation.dto.UserAndPractitionerDto; +import com.openhis.web.basedatamanage.dto.UserAndPractitionerDto; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerChildDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/PractitionerOrgAndLocationDto.java similarity index 79% rename from openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerChildDto.java rename to openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/PractitionerOrgAndLocationDto.java index f3586e8f..c3057f78 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerChildDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/PractitionerOrgAndLocationDto.java @@ -1,4 +1,4 @@ -package com.openhis.web.doctorstation.dto; +package com.openhis.web.basedatamanage.dto; import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; @@ -8,19 +8,11 @@ import lombok.Data; import lombok.experimental.Accessors; /** - * 用户 及 参与者 子dto + * 参与者机构和位置 dto */ @Data @Accessors(chain = true) -public class UserAndPractitionerChildDto { - - /** - * 机构id - */ - @Dict(dictTable = "adm_organization", dictCode = "id", dictText = "name") - @JsonSerialize(using = ToStringSerializer.class) - private Long orgId; - private String orgId_dictText; +public class PractitionerOrgAndLocationDto { /** * 位置id @@ -36,14 +28,12 @@ public class UserAndPractitionerChildDto { private String roleCode; /** - * 角色id + * 机构id */ - private Long roleId; - - /** - * 角色name - */ - private String roleName; + @Dict(dictTable = "adm_organization", dictCode = "id", dictText = "name") + @JsonSerialize(using = ToStringSerializer.class) + private Long orgId; + private String orgId_dictText; /** * 参与者id diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/PractitionerRolesDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/PractitionerRolesDto.java new file mode 100644 index 00000000..f8b19a3d --- /dev/null +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/PractitionerRolesDto.java @@ -0,0 +1,32 @@ +package com.openhis.web.basedatamanage.dto; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; + +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 参与者角色 dto + */ +@Data +@Accessors(chain = true) +public class PractitionerRolesDto { + + /** + * 角色id + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long roleId; + /** + * 角色名称 + */ + private String roleName; + + /** + * 参与者id + */ + @JsonSerialize(using = ToStringSerializer.class) + private Long practitionerId; + +} diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/UserAndPractitionerDto.java similarity index 79% rename from openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerDto.java rename to openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/UserAndPractitionerDto.java index 4a6e4718..01866348 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/UserAndPractitionerDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/dto/UserAndPractitionerDto.java @@ -1,4 +1,4 @@ -package com.openhis.web.doctorstation.dto; +package com.openhis.web.basedatamanage.dto; import java.util.Date; import java.util.List; @@ -103,13 +103,23 @@ public class UserAndPractitionerDto { private String orgId_dictText; /** - * 角色id集合 + * 责任科室 */ - private List roleIds; + private List responsibilityOrgDtoList; /** - * 子集合 + * 参与者角色集合 */ - private List childList; + private List practitionerRolesDtoList; + + /** + * 医生出诊科室集合 + */ + private List doctorVisitOrgDtoList; + + /** + * 管理库房集合 + */ + private List manageLocationDtoList; } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/mapper/PractitionerAppAppMapper.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/mapper/PractitionerAppAppMapper.java index 9696fae2..87a0d1d6 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/mapper/PractitionerAppAppMapper.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/basedatamanage/mapper/PractitionerAppAppMapper.java @@ -9,8 +9,9 @@ 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.doctorstation.dto.UserAndPractitionerChildDto; -import com.openhis.web.doctorstation.dto.UserAndPractitionerDto; +import com.openhis.web.basedatamanage.dto.PractitionerOrgAndLocationDto; +import com.openhis.web.basedatamanage.dto.PractitionerRolesDto; +import com.openhis.web.basedatamanage.dto.UserAndPractitionerDto; /** * 参与者 应用Mapper @@ -29,12 +30,21 @@ public interface PractitionerAppAppMapper { @Param(Constants.WRAPPER) QueryWrapper queryWrapper); /** - * 查询子集合 + * 查询参与者的角色信息 * * @param practitionerIdList 参与者id集合 - * @return 子集合 + * @return 参与者的角色信息 */ - List getChildList(@Param("practitionerIdList") List practitionerIdList); + List getPractitionerRolesDtoList(@Param("practitionerIdList") List practitionerIdList); + + /** + * 查询科室和位置集合 + * + * @param practitionerIdList 参与者id集合 + * @return 科室和位置集合 + */ + List + getOrgAndLocationDtoList(@Param("practitionerIdList") List practitionerIdList); /** * 物理删除系统用户与角色的关系 diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRegistrationAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRegistrationAppServiceImpl.java index f01c4d3f..3ad9bb1c 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRegistrationAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/chargemanage/appservice/impl/OutpatientRegistrationAppServiceImpl.java @@ -23,7 +23,7 @@ import com.openhis.administration.service.*; import com.openhis.common.constant.CommonConstants; import com.openhis.common.constant.PromptMsgConstant; import com.openhis.common.enums.*; -import com.openhis.common.enums.PractitionerRole; +import com.openhis.common.enums.PractitionerRoles; import com.openhis.common.utils.EnumUtils; import com.openhis.common.utils.HisPageUtils; import com.openhis.common.utils.HisQueryUtils; @@ -142,7 +142,7 @@ public class OutpatientRegistrationAppServiceImpl implements IOutpatientRegistra new HashSet<>(Arrays.asList("name", "py_str", "wb_str")), null); IPage practitionerMetadataPage = outpatientRegistrationAppMapper.getPractitionerMetadataPage(new Page<>(pageNo, pageSize), locationId, - PractitionerRole.DOCTOR.getCode(), queryWrapper); + PractitionerRoles.DOCTOR.getCode(), queryWrapper); practitionerMetadataPage.getRecords().forEach(e -> { // 性别 e.setGenderEnum_enumText(EnumUtils.getInfoByValue(AdministrativeGender.class, e.getGenderEnum())); diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java index 2d4e3795..7f082eb0 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/appservice/impl/DoctorStationAdviceAppServiceImpl.java @@ -98,70 +98,114 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp // 费用定价子表信息 List childCharge = doctorStationAdviceAppMapper - .getChildCharge(ConditionCode.UNIT_PRODUCT_BATCH_NUM.getInfo(), chargeItemDefinitionIdList); + .getChildCharge(ConditionCode.UNIT_PRODUCT_BATCH_NUM.getCode(), chargeItemDefinitionIdList); // 费用定价主表信息 List mainCharge = doctorStationAdviceAppMapper.getMainCharge(chargeItemDefinitionIdList); - // 药品和耗材 - List medicationAndDeviceList = adviceBaseDtoList.stream() - .filter(e -> CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(e.getAdviceTableName()) - || CommonConstants.TableName.ADM_DEVICE_DEFINITION.equals(e.getAdviceTableName())) - .collect(Collectors.toList()); - // 药品和耗材-赋值 + String unitCode = ""; // 包装单位 - String minUnitCode; // 小单位 Long chargeItemDefinitionId; // 费用定价主表ID - for (AdviceBaseDto baseDto : medicationAndDeviceList) { - // 每一条医嘱的库存集合信息 - List inventoryList = - adviceInventory.stream().filter(e -> baseDto.getAdviceDefinitionId().equals(e.getItemId()) - && baseDto.getAdviceTableName().equals(e.getItemTable())).collect(Collectors.toList()); - // 库存信息 - baseDto.setInventoryList(inventoryList); - - unitCode = baseDto.getUnitCode(); - minUnitCode = baseDto.getMinUnitCode(); - chargeItemDefinitionId = baseDto.getChargeItemDefinitionId(); - - List priceDtoList = new ArrayList<>(); - // 库存信息里取 单位,产品批号 去匹配价格 - for (AdviceInventoryDto adviceInventoryDto : inventoryList) { - Long finalChargeItemDefinitionId = chargeItemDefinitionId; - String finalUnitCode = unitCode; - String finalMinUnitCode = minUnitCode; - // 匹配包装单位 - List advicePrice1 = childCharge.stream() - .filter(e -> e.getDefinitionId().equals(finalChargeItemDefinitionId) && e.getConditionValue() - .equals(String.format(CommonConstants.Common.COMMA_FORMAT, finalUnitCode, - adviceInventoryDto.getLotNumber()))) - .peek(e -> e.setUnitCode(finalUnitCode)) // 设置 unitCode - .collect(Collectors.toList()); - // 匹配最小单位 - List advicePrice2 = childCharge.stream() - .filter(e -> e.getDefinitionId().equals(finalChargeItemDefinitionId) && e.getConditionValue() - .equals(String.format(CommonConstants.Common.COMMA_FORMAT, finalMinUnitCode, - adviceInventoryDto.getLotNumber()))) - .peek(e -> e.setUnitCode(finalMinUnitCode)) // 设置 unitCode - .collect(Collectors.toList()); - priceDtoList.addAll(advicePrice1); - priceDtoList.addAll(advicePrice2); + for (AdviceBaseDto baseDto : adviceBaseDtoList) { + // 药品和耗材 + if (CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(baseDto.getAdviceTableName()) + || CommonConstants.TableName.ADM_DEVICE_DEFINITION.equals(baseDto.getAdviceTableName())) { + // 每一条医嘱的库存集合信息 , 包装单位库存前端计算 + List inventoryList = + adviceInventory.stream().filter(e -> baseDto.getAdviceDefinitionId().equals(e.getItemId()) + && baseDto.getAdviceTableName().equals(e.getItemTable())).collect(Collectors.toList()); + // 库存信息 + baseDto.setInventoryList(inventoryList); + unitCode = baseDto.getUnitCode(); + chargeItemDefinitionId = baseDto.getChargeItemDefinitionId(); + List priceDtoList = new ArrayList<>(); + // 库存信息里取 命中条件 去匹配价格 + for (AdviceInventoryDto adviceInventoryDto : inventoryList) { + Long finalChargeItemDefinitionId = chargeItemDefinitionId; + String finalUnitCode = unitCode; + // 匹配包装单位 + List advicePrice1 = childCharge.stream() + .filter(e -> e.getDefinitionId().equals(finalChargeItemDefinitionId) && e.getConditionValue() + .equals(String.format(CommonConstants.Common.COMMA_FORMAT, finalUnitCode, + adviceInventoryDto.getLotNumber()))) + .peek(e -> e.setUnitCode(finalUnitCode)) // 设置 unitCode + .collect(Collectors.toList()); + priceDtoList.addAll(advicePrice1); + } + } + // 诊疗活动 + else { + List priceList = + mainCharge.stream().filter(e -> baseDto.getChargeItemDefinitionId().equals(e.getDefinitionId())) + .collect(Collectors.toList()); + // 价格信息 + baseDto.setPriceList(priceList); + // 活动类型 + baseDto + .setActivityType_enumText(EnumUtils.getInfoByValue(ActivityType.class, baseDto.getActivityType())); } - // 价格信息 - baseDto.setPriceList(priceDtoList); - } - // 诊疗 - List activityList = adviceBaseDtoList.stream() - .filter(e -> CommonConstants.TableName.WOR_ACTIVITY_DEFINITION.equals(e.getAdviceTableName())) - .collect(Collectors.toList()); - // 诊疗-赋值 - for (AdviceBaseDto baseDto : activityList) { - // 活动类型 - baseDto.setActivityType_enumText(EnumUtils.getInfoByValue(ActivityType.class, baseDto.getActivityType())); - List priceList = - mainCharge.stream().filter(e -> baseDto.getChargeItemDefinitionId().equals(e.getDefinitionId())) - .collect(Collectors.toList()); - // 价格信息 - baseDto.setPriceList(priceList); } + + // 下面的注释不要删除 2025.03.27 + // // 药品和耗材 + // List medicationAndDeviceList = adviceBaseDtoList.stream() + // .filter(e -> CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(e.getAdviceTableName()) + // || CommonConstants.TableName.ADM_DEVICE_DEFINITION.equals(e.getAdviceTableName())) + // .collect(Collectors.toList()); + // // 药品和耗材-赋值 + // String unitCode = ""; // 包装单位 + // String minUnitCode; // 小单位 + // Long chargeItemDefinitionId; // 费用定价主表ID + // for (AdviceBaseDto baseDto : medicationAndDeviceList) { + // // 每一条医嘱的库存集合信息 + // List inventoryList = + // adviceInventory.stream().filter(e -> baseDto.getAdviceDefinitionId().equals(e.getItemId()) + // && baseDto.getAdviceTableName().equals(e.getItemTable())).collect(Collectors.toList()); + // // 库存信息 + // baseDto.setInventoryList(inventoryList); + // + // unitCode = baseDto.getUnitCode(); + // minUnitCode = baseDto.getMinUnitCode(); + // chargeItemDefinitionId = baseDto.getChargeItemDefinitionId(); + // + // List priceDtoList = new ArrayList<>(); + // // 库存信息里取 单位,产品批号 去匹配价格 + // for (AdviceInventoryDto adviceInventoryDto : inventoryList) { + // Long finalChargeItemDefinitionId = chargeItemDefinitionId; + // String finalUnitCode = unitCode; + // String finalMinUnitCode = minUnitCode; + // // 匹配包装单位 + // List advicePrice1 = childCharge.stream() + // .filter(e -> e.getDefinitionId().equals(finalChargeItemDefinitionId) && e.getConditionValue() + // .equals(String.format(CommonConstants.Common.COMMA_FORMAT, finalUnitCode, + // adviceInventoryDto.getLotNumber()))) + // .peek(e -> e.setUnitCode(finalUnitCode)) // 设置 unitCode + // .collect(Collectors.toList()); + // // 匹配最小单位 + // List advicePrice2 = childCharge.stream() + // .filter(e -> e.getDefinitionId().equals(finalChargeItemDefinitionId) && e.getConditionValue() + // .equals(String.format(CommonConstants.Common.COMMA_FORMAT, finalMinUnitCode, + // adviceInventoryDto.getLotNumber()))) + // .peek(e -> e.setUnitCode(finalMinUnitCode)) // 设置 unitCode + // .collect(Collectors.toList()); + // priceDtoList.addAll(advicePrice1); + // priceDtoList.addAll(advicePrice2); + // } + // // 价格信息 + // baseDto.setPriceList(priceDtoList); + // } + // // 诊疗 + // List activityList = adviceBaseDtoList.stream() + // .filter(e -> CommonConstants.TableName.WOR_ACTIVITY_DEFINITION.equals(e.getAdviceTableName())) + // .collect(Collectors.toList()); + // // 诊疗-赋值 + // for (AdviceBaseDto baseDto : activityList) { + // // 活动类型 + // baseDto.setActivityType_enumText(EnumUtils.getInfoByValue(ActivityType.class, baseDto.getActivityType())); + // List priceList = + // mainCharge.stream().filter(e -> baseDto.getChargeItemDefinitionId().equals(e.getDefinitionId())) + // .collect(Collectors.toList()); + // // 价格信息 + // baseDto.setPriceList(priceList); + // } return adviceBaseInfo; } diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceBaseDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceBaseDto.java index dcea9bdc..c61768b4 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceBaseDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceBaseDto.java @@ -1,5 +1,6 @@ package com.openhis.web.doctorstation.dto; +import java.math.BigDecimal; import java.util.List; import com.fasterxml.jackson.databind.annotation.JsonSerialize; @@ -24,6 +25,12 @@ public class AdviceBaseDto { */ private String categoryCode; + /** 拆零比 */ + private BigDecimal partPercent; + + /** 拆分属性 */ + private Integer partAttributeEnum; + /** 医嘱定义ID */ @JsonSerialize(using = ToStringSerializer.class) private Long adviceDefinitionId; diff --git a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceSaveDto.java b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceSaveDto.java index 0c844a0f..43424d69 100644 --- a/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceSaveDto.java +++ b/openhis-server/openhis-application/src/main/java/com/openhis/web/doctorstation/dto/AdviceSaveDto.java @@ -27,6 +27,12 @@ public class AdviceSaveDto { */ private String categoryCode; + /** 拆零比 */ + private BigDecimal partPercent; + + /** 拆分属性 */ + private Integer partAttributeEnum; + /** 执行次数 */ private Integer executeNum; // 当医嘱类型为药品时,选填 diff --git a/openhis-server/openhis-application/src/main/resources/mapper/basedatamanage/PractitionerAppMapper.xml b/openhis-server/openhis-application/src/main/resources/mapper/basedatamanage/PractitionerAppMapper.xml index be4c8a1f..eb75fe31 100644 --- a/openhis-server/openhis-application/src/main/resources/mapper/basedatamanage/PractitionerAppMapper.xml +++ b/openhis-server/openhis-application/src/main/resources/mapper/basedatamanage/PractitionerAppMapper.xml @@ -4,7 +4,7 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - SELECT T3.tenant_id, T3.user_id, T3.practitioner_id, @@ -45,18 +45,33 @@ ${ew.customSqlSegment} - + SELECT + sr.role_id, + sr.role_name, + ap.ID AS practitioner_id + FROM + sys_role sr + JOIN sys_user_role sur ON sr.role_id = sur.role_id + JOIN adm_practitioner ap ON sur.user_id = ap.user_id + WHERE + ap.delete_flag = '0' + + AND ap.ID IN + + #{itemId} + + + + +