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">
-