提交merge1.3

This commit is contained in:
2025-12-27 15:31:06 +08:00
parent cbd3e7f981
commit 79ea4ed4f7
148 changed files with 6722 additions and 10861 deletions

View File

@@ -2,16 +2,7 @@ package com.openhis.web.pharmacymanage.appservice;
import java.util.List;
<<<<<<< HEAD
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.core.common.core.domain.R;
import com.openhis.web.inhospitalnursestation.dto.AdmissionPageParam;
import com.openhis.web.pharmacymanage.dto.*;
=======
import com.core.common.core.domain.R;
>>>>>>> v1.3
/**
* 住院汇总发药 应用实现接口
@@ -24,98 +15,14 @@ public interface ISummaryDispenseMedicineAppService {
/**
* 汇总发药
*
<<<<<<< HEAD
* @return 初始化信息
*/
R<?> init();
/**
* 分页查询住院病人列表
*
* @param admissionPageParam 查询条件
* @param startTime 开始时间
* @param endTime 结束时间
* @param searchKey 模糊查询关键字
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
* @return 病人列表
*/
R<?> getEncounterInfoListPage(AdmissionPageParam admissionPageParam, String startTime, String endTime,
Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);
void makeExcelFile(MedicineSummarySearchParam searchParam, Integer pageNo,
Integer pageSize, String searchKey,
HttpServletRequest request, HttpServletResponse response);
/**
* 住院汇总药品
*
* @param searchParam 查询信息
* @param pageNo 当前页码
* @param pageSize 查询条数
* @return 药品汇总
*/
R<?> getSummaryMedicationInfo(MedicineSummarySearchParam searchParam, Integer pageNo, Integer pageSize);
/**
* 住院汇总发药单
*
* @param searchParam 查询信息
* @param startTime 开始时间
* @param endTime 结束时间
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
* @return 药品汇总
*/
R<?> getSummaryFromInfo(FromSummarySearchParam searchParam, String startTime, String endTime, String searchKey,
Integer pageNo, Integer pageSize, HttpServletRequest request);
/**
* 住院药品汇总发药单详细
*
* @param searchParam 查询条件
* @param searchKey 模糊查询关键字
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
*/
R<?> getOrderInfo(FromSearchParam searchParam, String searchKey, Integer pageNo, Integer pageSize,
HttpServletRequest request);
/**
* 处方单核对发药
*
* @param dispenseMedicineList 发药信息
* @return 处理结果
*/
R<?> SummaryDispenseMedicine(List<DispenseItemDto> dispenseMedicineList);
=======
* @param summaryNoList 汇总单列表
* @return 处理结果
*/
R<?> SummaryDispenseMedicine(List<String> summaryNoList);
>>>>>>> v1.3
/**
* 作废
*
<<<<<<< HEAD
* @param dispenseMedicineList 作废信息
* @return 处理结果
*/
R<?> dispenseCancel(List<DispenseItemDto> dispenseMedicineList);
/**
* 退药处理
*
* @param dispenseMedicineList 退药清单
* @return 处理结果
*/
R<?> medicineReturn(List<DispenseItemDto> dispenseMedicineList);
=======
* @param summaryNoList 汇总单列表
* @return 处理结果
*/
@@ -144,10 +51,4 @@ public interface ISummaryDispenseMedicineAppService {
// */
// void takeExcelField(FromSearchParam searchParam, String searchKey, Integer pageNo, Integer pageSize,
// HttpServletRequest request, HttpServletResponse response);
>>>>>>> v1.3
}

View File

@@ -95,35 +95,35 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
DispenseInitDto initDto = new DispenseInitDto();
// 获取科室下拉选列表
List<Organization> organizationList =
organizationService.getList(OrganizationType.DEPARTMENT.getValue(), OrganizationClass.CLINIC.getValue());
List<Organization> organizationList
= organizationService.getList(OrganizationType.DEPARTMENT.getValue(), OrganizationClass.CLINIC.getValue());
List<DispenseInitDto.DepartmentOption> organizationOptions = organizationList.stream()
.map(organization -> new DispenseInitDto.DepartmentOption(organization.getId(), organization.getName()))
.collect(Collectors.toList());
.map(organization -> new DispenseInitDto.DepartmentOption(organization.getId(), organization.getName()))
.collect(Collectors.toList());
// 获取配药人下拉选列表
List<Practitioner> preparerDoctorList =
medicalDeviceDispenseMapper.getPreparerDoctorList(PractitionerRoles.PHARMACIST.getCode());
List<Practitioner> preparerDoctorList
= medicalDeviceDispenseMapper.getPreparerDoctorList(PractitionerRoles.PHARMACIST.getCode());
List<DispenseInitDto.PreparerDoctorOption> preparerDoctorOptions = preparerDoctorList.stream()
.map(practitioner -> new DispenseInitDto.PreparerDoctorOption(practitioner.getId(), practitioner.getName()))
.collect(Collectors.toList());
.map(practitioner -> new DispenseInitDto.PreparerDoctorOption(practitioner.getId(), practitioner.getName()))
.collect(Collectors.toList());
// 未发药原因下拉选列表
List<DispenseInitDto.NotPerformedReasonOption> notPerformedReasonOptions =
Stream.of(NotPerformedReasonEnum.values())
.map(notPerformedReason -> new DispenseInitDto.NotPerformedReasonOption(notPerformedReason.getValue(),
notPerformedReason.getInfo()))
.collect(Collectors.toList());
List<DispenseInitDto.NotPerformedReasonOption> notPerformedReasonOptions
= Stream.of(NotPerformedReasonEnum.values())
.map(notPerformedReason -> new DispenseInitDto.NotPerformedReasonOption(notPerformedReason.getValue(),
notPerformedReason.getInfo()))
.collect(Collectors.toList());
// 发药状态
List<DispenseInitDto.DispenseStatusOption> dispenseStatusOptions = new ArrayList<>();
dispenseStatusOptions.add(new DispenseInitDto.DispenseStatusOption(DispenseStatus.IN_PROGRESS.getValue(),
DispenseStatus.IN_PROGRESS.getInfo()));
DispenseStatus.IN_PROGRESS.getInfo()));
dispenseStatusOptions.add(new DispenseInitDto.DispenseStatusOption(DispenseStatus.COMPLETED.getValue(),
DispenseStatus.COMPLETED.getInfo()));
DispenseStatus.COMPLETED.getInfo()));
initDto.setDepartmentOptions(organizationOptions).setNotPerformedReasonOptions(notPerformedReasonOptions)
.setDispenseStatusOptions(dispenseStatusOptions).setPreparerDoctorOptions(preparerDoctorOptions);
.setDispenseStatusOptions(dispenseStatusOptions).setPreparerDoctorOptions(preparerDoctorOptions);
return R.ok(initDto);
}
@@ -139,28 +139,28 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
*/
@Override
public R<?> getEncounterInfoListPage(EncounterInfoSearchParam encounterInfoSearchParam, String searchKey,
Integer pageNo, Integer pageSize, HttpServletRequest request) {
Integer pageNo, Integer pageSize, HttpServletRequest request) {
// 发药状态初始化
Integer statusEnum = encounterInfoSearchParam.getStatusEnum();
encounterInfoSearchParam.setStatusEnum(null);
// 构建查询条件
QueryWrapper<EncounterInfoSearchParam> queryWrapper =
HisQueryUtils.buildQueryWrapper(encounterInfoSearchParam, searchKey,
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientName, CommonConstants.FieldName.IdCard,
CommonConstants.FieldName.PatientPyStr, CommonConstants.FieldName.PatientWbStr)),
request);
QueryWrapper<EncounterInfoSearchParam> queryWrapper
= HisQueryUtils.buildQueryWrapper(encounterInfoSearchParam, searchKey,
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientName, CommonConstants.FieldName.IdCard,
CommonConstants.FieldName.PatientPyStr, CommonConstants.FieldName.PatientWbStr)),
request);
// 查询就诊病人列表
Page<EncounterInfoDto> encounterInfoPage =
medicalDeviceDispenseMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper,
statusEnum, DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(),
DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue());
Page<EncounterInfoDto> encounterInfoPage
= medicalDeviceDispenseMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper,
statusEnum, DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(),
DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue());
encounterInfoPage.getRecords().forEach(encounterInfo -> {
// 性别
encounterInfo.setGenderEnum_enumText(
EnumUtils.getInfoByValue(AdministrativeGender.class, encounterInfo.getGenderEnum()));
EnumUtils.getInfoByValue(AdministrativeGender.class, encounterInfo.getGenderEnum()));
// 发药状态
encounterInfo
.setStatusEnum_enumText(EnumUtils.getInfoByValue(DispenseStatus.class, encounterInfo.getStatusEnum()));
.setStatusEnum_enumText(EnumUtils.getInfoByValue(DispenseStatus.class, encounterInfo.getStatusEnum()));
if (encounterInfo.getBirthDate() != null) {
// 计算年龄
encounterInfo.setAge(AgeCalculatorUtil.getAge(encounterInfo.getBirthDate()));
@@ -179,22 +179,22 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
*/
@Override
public R<?> getDeviceDispenseOrderList(ItemDispenseOrderDto itemDispenseOrderDto, Integer pageNo,
Integer pageSize) {
Integer pageSize) {
// 发药状态初始化
Integer dispenseStatus = itemDispenseOrderDto.getStatusEnum();
itemDispenseOrderDto.setStatusEnum(null);
// 构建查询条件
QueryWrapper<ItemDispenseOrderDto> queryWrapper =
HisQueryUtils.buildQueryWrapper(itemDispenseOrderDto, null, null, null);
QueryWrapper<ItemDispenseOrderDto> queryWrapper
= HisQueryUtils.buildQueryWrapper(itemDispenseOrderDto, null, null, null);
// 处方单信息查询
Page<ItemDispenseOrderDto> deviceDispenseOrderPage =
medicalDeviceDispenseMapper.selectDeviceDispenseOrderPage(new Page<>(pageNo, pageSize), queryWrapper,
DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(),
DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue(), dispenseStatus);
Page<ItemDispenseOrderDto> deviceDispenseOrderPage
= medicalDeviceDispenseMapper.selectDeviceDispenseOrderPage(new Page<>(pageNo, pageSize), queryWrapper,
DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(),
DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue(), dispenseStatus);
deviceDispenseOrderPage.getRecords().forEach(deviceDispenseOrder -> {
// 发药状态
deviceDispenseOrder.setStatusEnum_enumText(
EnumUtils.getInfoByValue(DispenseStatus.class, deviceDispenseOrder.getStatusEnum()));
EnumUtils.getInfoByValue(DispenseStatus.class, deviceDispenseOrder.getStatusEnum()));
// 设置所在表名
deviceDispenseOrder.setItemTable(CommonConstants.TableName.ADM_DEVICE_DEFINITION);
});
@@ -211,59 +211,17 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
public R<?> deviceDispense(List<DispenseItemDto> dispenseDeviceList) {
// 配药人检查
if (dispenseDeviceList.get(0).getPreparerId() == null
|| dispenseDeviceList.get(0).getPreparerId().equals(SecurityUtils.getLoginUser().getPractitionerId())) {
|| dispenseDeviceList.get(0).getPreparerId().equals(SecurityUtils.getLoginUser().getPractitionerId())) {
return R.fail("请选择调配药师");
}
// 获取发药单id列表
List<Long> devDispenseIdList =
dispenseDeviceList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
<<<<<<< HEAD
// 获取库存信息
List<UnDispenseInventoryDto> inventoryList = returnMedicineMapper.selectInventoryInfoList(devDispenseIdList, null,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
// 按每个药品分组
Map<Long, List<UnDispenseInventoryDto>> groupedByItemId =
inventoryList.stream().collect(Collectors.groupingBy(UnDispenseInventoryDto::getItemId));
// 遍历每个分组校验库存状态
for (Map.Entry<Long, List<UnDispenseInventoryDto>> entry : groupedByItemId.entrySet()) {
List<UnDispenseInventoryDto> groupItems = entry.getValue();
if (groupItems.stream().map(UnDispenseInventoryDto::getInventoryStatusEnum)
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
// 库存停供校验
return R.fail(groupItems.get(0).getItemName() + "库存已停供");
}
}
if (!inventoryList.isEmpty()) {
for (UnDispenseInventoryDto unDispenseInventoryDto : inventoryList) {
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())) {
InventoryItem inventoryItem = new InventoryItem();
// 库存数量判定
if (unDispenseInventoryDto.getDispenseUnit().equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-请求数量
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity().subtract(unDispenseInventoryDto.getQuantity());
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
}
} else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-拆零数量(拆零比×请求数量)
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity()
.subtract(unDispenseInventoryDto.getPartPercent().multiply(unDispenseInventoryDto.getQuantity()));
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
=======
List<Long> devDispenseIdList
= dispenseDeviceList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
// 获取耗材待发放库存信息
List<UnDispenseInventoryDto> unDispenseInventoryList =
returnMedicineMapper.selectInventoryInfoList(devDispenseIdList, null,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
List<UnDispenseInventoryDto> unDispenseInventoryList
= returnMedicineMapper.selectInventoryInfoList(devDispenseIdList, null,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
if (unDispenseInventoryList == null || unDispenseInventoryList.isEmpty()) {
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
@@ -271,15 +229,15 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
// 库存待更新列表
List<InventoryItem> inventoryItemList = new ArrayList<>();
// 根据批号,发放项目,发放药房进行分组处理
Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap =
unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId()
Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap
= unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId()
+ CommonConstants.Common.DASH + x.getLotNumber() + CommonConstants.Common.DASH + x.getLocationId()));
if (!unDispenseInventoryMap.isEmpty()) {
for (Map.Entry<String, List<UnDispenseInventoryDto>> entry : unDispenseInventoryMap.entrySet()) {
List<UnDispenseInventoryDto> inventoryList = entry.getValue();
if (!inventoryList.isEmpty()) {
if (inventoryList.stream().map(UnDispenseInventoryDto::getInventoryStatusEnum)
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
// 停供库存校验
return R.fail(inventoryList.get(0).getItemName() + "库存已停供");
}
@@ -292,17 +250,16 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
for (UnDispenseInventoryDto unDispenseInventoryDto : inventoryList) {
BigDecimal quantity = unDispenseInventoryDto.getQuantity();
if (!unDispenseInventoryDto.getDispenseUnit()
.equals(unDispenseInventoryDto.getInventoryUnitCode())) {
.equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 转换为小单位进行累加
quantity =
unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent());
quantity
= unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent());
}
minQuantity = minQuantity.add(quantity);
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())
&& unDispenseInventoryDto.getInventoryQuantity().compareTo(BigDecimal.ZERO) > 0) {
&& unDispenseInventoryDto.getInventoryQuantity().compareTo(BigDecimal.ZERO) > 0) {
inventoryQuantity = unDispenseInventoryDto.getInventoryQuantity();
inventoryId = unDispenseInventoryDto.getInventoryId();
>>>>>>> v1.3
}
}
if (minQuantity.compareTo(inventoryQuantity) > 0) {
@@ -311,7 +268,7 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
} else {
// 设置待更新的库存信息
inventoryItemList.add(new InventoryItem().setId(inventoryId)
.setQuantity(inventoryQuantity.subtract(minQuantity)));
.setQuantity(inventoryQuantity.subtract(minQuantity)));
}
}
}
@@ -319,14 +276,14 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
// 材料发放信息查询
List<DeviceDispense> dispenseList = deviceDispenseService
.list(new LambdaQueryWrapper<DeviceDispense>().in(DeviceDispense::getId, devDispenseIdList));
.list(new LambdaQueryWrapper<DeviceDispense>().in(DeviceDispense::getId, devDispenseIdList));
// 追溯码列表
List<TraceNoManage> tracesNoManageList = new ArrayList<>();
TraceNoManage traceNoManage;
List<SupplyItemDetailDto> supplyItemDetailList = new ArrayList<>();
if (dispenseList != null) {
if (dispenseList.stream().map(DeviceDispense::getStatusEnum)
.anyMatch(x -> !x.equals(DispenseStatus.PREPARATION.getValue()))) {
.anyMatch(x -> !x.equals(DispenseStatus.PREPARATION.getValue()))) {
throw new ServiceException("耗材发放失败,请检查发耗材单状态");
} else {
for (DeviceDispense deviceDispense : dispenseList) {
@@ -344,13 +301,13 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
deviceDispense.setPreparerId(dispenseDeviceList.get(0).getPreparerId());
// 设置库存变更参数
supplyItemDetailList.add(new SupplyItemDetailDto().setItemId(deviceDispense.getDeviceDefId())
.setLotNumber(deviceDispense.getLotNumber())
.setItemTable(CommonConstants.TableName.ADM_DEVICE_DEFINITION)
.setDispenseId(deviceDispense.getId()));
.setLotNumber(deviceDispense.getLotNumber())
.setItemTable(CommonConstants.TableName.ADM_DEVICE_DEFINITION)
.setDispenseId(deviceDispense.getId()));
if (deviceDispense.getTraceNo() == null) {
// 根据数量设置追溯码
deviceDispense.setTraceNo(String.join(CommonConstants.Common.COMMA, Collections
.nCopies(deviceDispense.getQuantity().intValue(), CommonConstants.Common.DEV_TRACE_NO)));
.nCopies(deviceDispense.getQuantity().intValue(), CommonConstants.Common.DEV_TRACE_NO)));
} else {
// 使用逗号分割追溯码并转换为List
String[] traceNoList = deviceDispense.getTraceNo().split(CommonConstants.Common.COMMA);
@@ -358,22 +315,22 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
traceNoManage = new TraceNoManage();
// 追溯码处理
traceNoManage.setItemTable(CommonConstants.TableName.ADM_DEVICE_DEFINITION)
// 项目id
.setItemId(deviceDispense.getDeviceDefId())
// 仓库类型
.setLocationTypeEnum(LocationForm.WAREHOUSE.getValue())
// 仓库
.setLocationId(deviceDispense.getLocationId())
// 产品批号
.setLotNumber(deviceDispense.getLotNumber())
// 追溯码
.setTraceNo(item)
// 追溯码状态
.setStatusEnum(TraceNoStatus.OUT.getValue())
// 追溯码单位
.setUnitCode(deviceDispense.getUnitCode())
// 操作类型
.setOperationType(SupplyType.DISPENSE_MEDICATION.getValue());
// 项目id
.setItemId(deviceDispense.getDeviceDefId())
// 仓库类型
.setLocationTypeEnum(LocationForm.WAREHOUSE.getValue())
// 仓库
.setLocationId(deviceDispense.getLocationId())
// 产品批号
.setLotNumber(deviceDispense.getLotNumber())
// 追溯码
.setTraceNo(item)
// 追溯码状态
.setStatusEnum(TraceNoStatus.OUT.getValue())
// 追溯码单位
.setUnitCode(deviceDispense.getUnitCode())
// 操作类型
.setOperationType(SupplyType.DISPENSE_MEDICATION.getValue());
tracesNoManageList.add(traceNoManage);
}
}
@@ -432,8 +389,8 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
@Override
public R<?> dispenseMedicalConsumables(List<Long> chargeItemIds) {
// 查看所属医院
String fixmedinsCode =
SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.FIXMEDINS_CODE);
String fixmedinsCode
= SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.FIXMEDINS_CODE);
if (!HospitalCodeEnum.CCU.getCode().equals(fixmedinsCode)) {
return R.ok();
}
@@ -443,59 +400,17 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
}
// 获取发申请id列表
List<Long> devRequestIdList =
chargeItemList.stream().map(ChargeItem::getServiceId).collect(Collectors.toList());
List<Long> devRequestIdList
= chargeItemList.stream().map(ChargeItem::getServiceId).collect(Collectors.toList());
// 获取耗材发放id列表
List<Long> devDispenseIdList = deviceDispenseService
.list(new LambdaQueryWrapper<DeviceDispense>().in(DeviceDispense::getDeviceReqId, devRequestIdList))
.stream().map(DeviceDispense::getId).collect(Collectors.toList());
<<<<<<< HEAD
// 获取库存信息
List<UnDispenseInventoryDto> inventoryList = returnMedicineMapper.selectInventoryInfoList(devDispenseIdList, null,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
// 按每个耗材分组
Map<Long, List<UnDispenseInventoryDto>> groupedByItemId =
inventoryList.stream().collect(Collectors.groupingBy(UnDispenseInventoryDto::getItemId));
// 遍历每个分组校验库存状态
for (Map.Entry<Long, List<UnDispenseInventoryDto>> entry : groupedByItemId.entrySet()) {
List<UnDispenseInventoryDto> groupItems = entry.getValue();
if (groupItems.stream().map(UnDispenseInventoryDto::getInventoryStatusEnum)
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
// 库存停供校验
return R.fail(groupItems.get(0).getItemName() + "库存已停供");
}
}
if (!inventoryList.isEmpty()) {
for (UnDispenseInventoryDto unDispenseInventoryDto : inventoryList) {
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())) {
InventoryItem inventoryItem = new InventoryItem();
// 库存数量判定
if (unDispenseInventoryDto.getDispenseUnit().equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-请求数量
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity().subtract(unDispenseInventoryDto.getQuantity());
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
}
} else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-拆零数量(拆零比×请求数量)
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity()
.subtract(unDispenseInventoryDto.getPartPercent().multiply(unDispenseInventoryDto.getQuantity()));
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
=======
.list(new LambdaQueryWrapper<DeviceDispense>().in(DeviceDispense::getDeviceReqId, devRequestIdList))
.stream().map(DeviceDispense::getId).collect(Collectors.toList());
// 获取耗材待发放库存信息
List<UnDispenseInventoryDto> unDispenseInventoryList =
returnMedicineMapper.selectInventoryInfoList(devDispenseIdList, null,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
List<UnDispenseInventoryDto> unDispenseInventoryList
= returnMedicineMapper.selectInventoryInfoList(devDispenseIdList, null,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
if (unDispenseInventoryList == null || unDispenseInventoryList.isEmpty()) {
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
@@ -503,15 +418,15 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
// 库存待更新列表
List<InventoryItem> inventoryItemList = new ArrayList<>();
// 根据批号,发放项目,发放药房进行分组处理
Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap =
unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId()
Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap
= unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId()
+ CommonConstants.Common.DASH + x.getLotNumber() + CommonConstants.Common.DASH + x.getLocationId()));
if (!unDispenseInventoryMap.isEmpty()) {
for (Map.Entry<String, List<UnDispenseInventoryDto>> entry : unDispenseInventoryMap.entrySet()) {
List<UnDispenseInventoryDto> inventoryList = entry.getValue();
if (!inventoryList.isEmpty()) {
if (inventoryList.stream().map(UnDispenseInventoryDto::getInventoryStatusEnum)
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
// 停供库存校验
return R.fail(inventoryList.get(0).getItemName() + "库存已停供");
}
@@ -524,17 +439,16 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
for (UnDispenseInventoryDto unDispenseInventoryDto : inventoryList) {
BigDecimal quantity = unDispenseInventoryDto.getQuantity();
if (!unDispenseInventoryDto.getDispenseUnit()
.equals(unDispenseInventoryDto.getInventoryUnitCode())) {
.equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 转换为小单位进行累加
quantity =
unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent());
quantity
= unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent());
}
minQuantity = minQuantity.add(quantity);
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())
&& unDispenseInventoryDto.getInventoryQuantity().compareTo(BigDecimal.ZERO) > 0) {
&& unDispenseInventoryDto.getInventoryQuantity().compareTo(BigDecimal.ZERO) > 0) {
inventoryQuantity = unDispenseInventoryDto.getInventoryQuantity();
inventoryId = unDispenseInventoryDto.getInventoryId();
>>>>>>> v1.3
}
}
if (minQuantity.compareTo(inventoryQuantity) > 0) {
@@ -543,7 +457,7 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
} else {
// 设置待更新的库存信息
inventoryItemList.add(new InventoryItem().setId(inventoryId)
.setQuantity(inventoryQuantity.subtract(minQuantity)));
.setQuantity(inventoryQuantity.subtract(minQuantity)));
}
}
}
@@ -551,11 +465,11 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
// 发耗材信息查询
List<DeviceDispense> dispenseList = deviceDispenseService
.list(new LambdaQueryWrapper<DeviceDispense>().in(DeviceDispense::getId, devDispenseIdList));
.list(new LambdaQueryWrapper<DeviceDispense>().in(DeviceDispense::getId, devDispenseIdList));
List<SupplyItemDetailDto> supplyItemDetailList = new ArrayList<>();
if (dispenseList != null) {
if (dispenseList.stream().map(DeviceDispense::getStatusEnum)
.anyMatch(x -> x.equals(DispenseStatus.COMPLETED.getValue()))) {
.anyMatch(x -> x.equals(DispenseStatus.COMPLETED.getValue()))) {
throw new ServiceException("耗材已发放,请勿重复操作");
} else {
for (DeviceDispense deviceDispense : dispenseList) {
@@ -569,11 +483,11 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
deviceDispense.setPerformerId(CommonConstants.CCU.DisDeviceDoctor);
// 根据数量设置追溯码
deviceDispense.setTraceNo(String.join(CommonConstants.Common.COMMA, Collections
.nCopies(deviceDispense.getQuantity().intValue(), CommonConstants.Common.DEV_TRACE_NO)));
.nCopies(deviceDispense.getQuantity().intValue(), CommonConstants.Common.DEV_TRACE_NO)));
// 设置库存变更参数
supplyItemDetailList.add(new SupplyItemDetailDto().setItemId(deviceDispense.getDeviceDefId())
.setLotNumber(deviceDispense.getLotNumber())
.setItemTable(CommonConstants.TableName.ADM_DEVICE_DEFINITION));
.setLotNumber(deviceDispense.getLotNumber())
.setItemTable(CommonConstants.TableName.ADM_DEVICE_DEFINITION));
}
// 药品发放更新
deviceDispenseService.updateBatchById(dispenseList);
@@ -627,11 +541,11 @@ public class MedicalDeviceDispenseAppServiceImpl implements IMedicalDeviceDispen
@Override
public R<?> deviceCancel(List<DispenseItemDto> dispenseDeviceList) {
// 获取发材料单id列表
List<Long> devDispenseIdList =
dispenseDeviceList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
List<Long> devDispenseIdList
= dispenseDeviceList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
// 材料发放信息查询
List<DeviceDispense> dispenseList = deviceDispenseService
.list(new LambdaQueryWrapper<DeviceDispense>().in(DeviceDispense::getId, devDispenseIdList));
.list(new LambdaQueryWrapper<DeviceDispense>().in(DeviceDispense::getId, devDispenseIdList));
if (dispenseList != null) {
for (DeviceDispense medicationDispense : dispenseList) {
// 材料发放状态

View File

@@ -1,10 +1,5 @@
package com.openhis.web.pharmacymanage.appservice.impl;
<<<<<<< HEAD
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
=======
import static com.openhis.common.constant.CommonConstants.ExcelOut.*;
import static com.openhis.common.constant.CommonConstants.SheetName.SHEET_NAME_DRUG_DETAIL;
@@ -13,18 +8,12 @@ import java.math.RoundingMode;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
>>>>>>> v1.3
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
<<<<<<< HEAD
import com.core.common.utils.poi.ExcelUtil;
import com.openhis.web.inventorymanage.dto.ReceiptPageDto;
=======
>>>>>>> v1.3
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -32,23 +21,15 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.core.common.core.domain.entity.SysDictData;
<<<<<<< HEAD
=======
import com.core.common.exception.NonCaptureException;
import com.core.common.utils.StringUtils;
import com.core.common.utils.poi.ExcelUtil;
>>>>>>> v1.3
import com.core.system.service.ISysDictTypeService;
import com.openhis.administration.domain.Practitioner;
import com.openhis.administration.service.IPractitionerService;
import com.openhis.common.constant.CommonConstants;
<<<<<<< HEAD
import com.openhis.common.enums.DispenseStatus;
import com.openhis.common.enums.EncounterClass;
=======
import com.openhis.common.enums.ConditionCode;
import com.openhis.common.enums.DispenseStatus;
>>>>>>> v1.3
import com.openhis.common.enums.PublicationStatus;
import com.openhis.common.enums.RequestStatus;
import com.openhis.common.utils.HisQueryUtils;
@@ -80,11 +61,6 @@ public class MedicationDetailsAppServiceImpl implements IMedicationDetailsAppSer
/**
* 获取页面初始化信息
*/
<<<<<<< HEAD
=======
>>>>>>> v1.3
@Override
public R<?> init() {
@@ -95,13 +71,13 @@ public class MedicationDetailsAppServiceImpl implements IMedicationDetailsAppSer
initDto.setPractitionerList(list);
// 获取状态
List<MedDetailsInitDto.statusEnumOption> statusEnumOptions = Stream.of(PublicationStatus.values())
.map(status -> new MedDetailsInitDto.statusEnumOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
.map(status -> new MedDetailsInitDto.statusEnumOption(status.getValue(), status.getInfo()))
.collect(Collectors.toList());
// 结算状态
initDto.setStatusSettlementOptions(statusEnumOptions)
// 出院状态
.setStatusDischargeOptions(statusEnumOptions);
// 出院状态
.setStatusDischargeOptions(statusEnumOptions);
return R.ok(initDto);
@@ -119,7 +95,7 @@ public class MedicationDetailsAppServiceImpl implements IMedicationDetailsAppSer
*/
@Override
public R<?> getAmbPractitionerDetailPage(MedDetailsSearchParam medDetailsSearchParam, Integer pageNo,
Integer pageSize, String searchKey, HttpServletRequest request) {
Integer pageSize, String searchKey, HttpServletRequest request) {
// 1:住院 2门诊
Integer flg = medDetailsSearchParam.getFlag();
medDetailsSearchParam.setFlag(null);
@@ -132,21 +108,13 @@ public class MedicationDetailsAppServiceImpl implements IMedicationDetailsAppSer
medDetailsSearchParam.setInventoryScope(null);
// 构建查询条件
QueryWrapper<MedDetailsSearchParam> queryWrapper = HisQueryUtils.buildQueryWrapper(medDetailsSearchParam,
searchKey, new HashSet<>(Arrays.asList("patient_name", "medication_name", "bus_no", "py_str")), request);
searchKey, new HashSet<>(Arrays.asList("patient_name", "medication_name", "bus_no", "py_str")), request);
<<<<<<< HEAD
Page<MedDetailedAccountPageDto> medDetailsPage =
medicationDetailsMapper.selectAmbPractitionerDetailPage(new Page<>(pageNo, pageSize), queryWrapper,
EncounterClass.AMB.getValue(), DispenseStatus.COMPLETED.getValue(), RequestStatus.COMPLETED.getValue(),
DispenseStatus.REFUNDED.getValue(), 1, flg, CommonConstants.TableName.MED_MEDICATION_DEFINITION,
CommonConstants.TableName.ADM_DEVICE_DEFINITION);
=======
Page<MedDetailedAccountPageDto> medDetailsPage = medicationDetailsMapper.selectAmbPractitionerDetailPage(
new Page<>(pageNo, pageSize), queryWrapper, DispenseStatus.COMPLETED.getValue(),
RequestStatus.COMPLETED.getValue(), DispenseStatus.REFUNDED.getValue(), statisticalType, flg,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION,
ConditionCode.LOT_NUMBER_COST.getCode());
>>>>>>> v1.3
new Page<>(pageNo, pageSize), queryWrapper, DispenseStatus.COMPLETED.getValue(),
RequestStatus.COMPLETED.getValue(), DispenseStatus.REFUNDED.getValue(), statisticalType, flg,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION,
ConditionCode.LOT_NUMBER_COST.getCode());
return R.ok(medDetailsPage);
@@ -165,28 +133,12 @@ public class MedicationDetailsAppServiceImpl implements IMedicationDetailsAppSer
*/
@Override
public void makeExcelFile(MedDetailsSearchParam medDetailsSearchParam, Integer pageNo, Integer pageSize,
String searchKey, HttpServletResponse response, HttpServletRequest request) {
String searchKey, HttpServletResponse response, HttpServletRequest request) {
R<?> result = this.getAmbPractitionerDetailPage(medDetailsSearchParam, 1, 10000, searchKey, request);
if (result != null && result.getData() != null) {
// 先获取Page对象再获取其中的记录列表
Page<MedDetailedAccountPageDto> pageData = (Page<MedDetailedAccountPageDto>)result.getData();
Page<MedDetailedAccountPageDto> pageData = (Page<MedDetailedAccountPageDto>) result.getData();
List<MedDetailedAccountPageDto> dataList = pageData.getRecords();
<<<<<<< HEAD
// 获取字典数据
for (MedDetailedAccountPageDto medDetailedAccountPageDto : dataList) {
String unitCode = medDetailedAccountPageDto.getUnitCode();
// 添加空值检查
if (unitCode != null && sysDictTypeService != null) {
// 缓存字典数据,避免重复查询
List<SysDictData> unitCodelist = sysDictTypeService.selectDictDataByType("unit_code");
if (unitCodelist != null) {
for (SysDictData dictData : unitCodelist) {
if (dictData != null && dictData.getDictValue() != null
&& dictData.getDictValue().equals(unitCode)) {
medDetailedAccountPageDto.setUnitCode_dictText(dictData.getDictLabel());
break;
=======
// 判断项目类别
try {
// 获取字典数据
@@ -195,120 +147,20 @@ public class MedicationDetailsAppServiceImpl implements IMedicationDetailsAppSer
// 添加空值检查
if (unitCode != null && sysDictTypeService != null) {
// 缓存字典数据,避免重复查询
List<SysDictData> unitCodelist =
sysDictTypeService.selectDictDataByType(CommonConstants.FieldName.UnitCode);
List<SysDictData> unitCodelist
= sysDictTypeService.selectDictDataByType(CommonConstants.FieldName.UnitCode);
if (unitCodelist != null) {
for (SysDictData dictData : unitCodelist) {
if (dictData != null && dictData.getDictValue() != null
&& dictData.getDictValue().equals(unitCode)) {
&& dictData.getDictValue().equals(unitCode)) {
// 设置字典数据
medDetailedAccountPageDto.setUnitCode_dictText(dictData.getDictLabel());
break;
}
>>>>>>> v1.3
}
}
}
}
<<<<<<< HEAD
}
// 将发药数量与单位拼接
for (MedDetailedAccountPageDto medDetailedAccountPageDto : dataList) {
String unitCode_dictText = medDetailedAccountPageDto.getUnitCode_dictText();
Integer dispenseQuantity = medDetailedAccountPageDto.getDispenseQuantity();
// 将发药数量与单位拼接
medDetailedAccountPageDto.setDispenseQuantitystr(dispenseQuantity + unitCode_dictText);
}
// 将退药数量与单位拼接
for (MedDetailedAccountPageDto medDetailedAccountPageDto : dataList) {
String unitCode_dictText = medDetailedAccountPageDto.getUnitCode_dictText();
Integer refundQuantity = medDetailedAccountPageDto.getRefundQuantity();
// 添加完整的空值检查和默认值处理
String unitText = (unitCode_dictText != null) ? unitCode_dictText : "";
if (refundQuantity == null) {
medDetailedAccountPageDto.setRefundQuantitystr("0.00" + unitCode_dictText);
} else if (refundQuantity == 0) {
medDetailedAccountPageDto.setRefundQuantitystr("0.00" + unitCode_dictText);
} else {
medDetailedAccountPageDto.setRefundQuantitystr(refundQuantity.toString() + unitCode_dictText);
}
}
// 将退药金额
for (MedDetailedAccountPageDto medDetailedAccountPageDto : dataList) {
BigDecimal refundPrice = medDetailedAccountPageDto.getRefundPrice();
if (refundPrice == null) {
medDetailedAccountPageDto.setRefundPricestr("0.00" );
} else if (refundPrice.signum() == 0) {
medDetailedAccountPageDto.setRefundPricestr("0.00" );
} else {
refundPrice = refundPrice.setScale(6, RoundingMode.HALF_UP);
medDetailedAccountPageDto.setRefundPricestr(refundPrice.toString() );
}
}
//发药金额
for (MedDetailedAccountPageDto medDetailedAccountPageDto : dataList) {
BigDecimal dispensePrice = medDetailedAccountPageDto.getDispensePrice();
if (dispensePrice == null) {
medDetailedAccountPageDto.setDispensePricestr("0.00" );
} else if (dispensePrice.signum() == 0) {
medDetailedAccountPageDto.setDispensePricestr("0.00" );
} else {
dispensePrice = dispensePrice.setScale(6, RoundingMode.HALF_UP);
medDetailedAccountPageDto.setDispensePricestr(dispensePrice.toString() );
}
}
// 添加项目类别
for (MedDetailedAccountPageDto medDetailedAccountPageDto : dataList) {
String itemTable = medDetailedAccountPageDto.getItemTable();
if (itemTable != null) {
if(itemTable.equals("med_medication_definition")){
medDetailedAccountPageDto.setItemTable("药品");
}
if(itemTable.equals("adm_device_definition")){
medDetailedAccountPageDto.setItemTable("耗材");
}
}
else{
medDetailedAccountPageDto.setItemTable("未知类型");
}
}
//判断项目类别
try {
// 准备表头key对应DTO的字段名
//Map<String, String> headers = new LinkedHashMap<>();
// headers.put("practitionerName", "发药人");
// headers.put("dispenseNo", "发药单号");
// headers.put("medicationName", "药品项目");
// headers.put("itemTable", "项目类别");
// headers.put("busNo", "药品编码");
// headers.put("ybNo", "医保编码");
// headers.put("totalVolume", "规格");
// headers.put("dispenseQuantitystr", "发药数量");
// headers.put("dispensePricestr", "发药金额");
// headers.put("refundQuantitystr", "退药数量");
// headers.put("refundPricestr", "退药金额");
// headers.put("lotNumber", "生产批号");
// headers.put("manufacturerText", "厂家/产地");
// headers.put("supplierName", "供应商");
// headers.put("dispenseTime", "发药时间");
// 导出到Excel
// ExcelFillerUtil.makeExcelFile(response, dataList, headers, "发药明细", null);
// 导出到Excel
ExcelUtil<MedDetailedAccountPageDto> util = new ExcelUtil<MedDetailedAccountPageDto>(MedDetailedAccountPageDto.class);
util.exportExcel(response,dataList,"发药明细");
} catch (Exception e) {
e.printStackTrace();
System.out.printf("导出Excel失败" + e.getMessage());
}
=======
// 将发药数量与单位拼接
for (MedDetailedAccountPageDto medDetailedAccountPageDto : dataList) {
@@ -408,7 +260,6 @@ public class MedicationDetailsAppServiceImpl implements IMedicationDetailsAppSer
throw new NonCaptureException(StringUtils.format("导出excel失败"), e);
}
>>>>>>> v1.3
}
}
@@ -424,7 +275,7 @@ public class MedicationDetailsAppServiceImpl implements IMedicationDetailsAppSer
*/
@Override
public R<?> getAmbMedicationDispenseDetailPage(MedDetailsSearchParam medDetailsSearchParam, Integer pageNo,
Integer pageSize, String searchKey, HttpServletRequest request) {
Integer pageSize, String searchKey, HttpServletRequest request) {
// 1:住院 2门诊
Integer flg = medDetailsSearchParam.getFlag();
@@ -438,21 +289,13 @@ public class MedicationDetailsAppServiceImpl implements IMedicationDetailsAppSer
medDetailsSearchParam.setInventoryScope(null);
// 构建查询条件
QueryWrapper<MedDetailsSearchParam> queryWrapper = HisQueryUtils.buildQueryWrapper(medDetailsSearchParam,
searchKey, new HashSet<>(Arrays.asList("patient_name", "medication_name", "bus_no", "py_str")), request);
searchKey, new HashSet<>(Arrays.asList("patient_name", "medication_name", "bus_no", "py_str")), request);
<<<<<<< HEAD
Page<MedDetailedAccountPageDto> medDetailsPage =
medicationDetailsMapper.selectAmbPractitionerDetailPage(new Page<>(pageNo, pageSize), queryWrapper,
EncounterClass.AMB.getValue(), DispenseStatus.COMPLETED.getValue(), RequestStatus.COMPLETED.getValue(),
DispenseStatus.REFUNDED.getValue(), 2, flg, CommonConstants.TableName.MED_MEDICATION_DEFINITION,
CommonConstants.TableName.ADM_DEVICE_DEFINITION);
=======
Page<MedDetailedAccountPageDto> medDetailsPage = medicationDetailsMapper.selectAmbPractitionerDetailPage(
new Page<>(pageNo, pageSize), queryWrapper, DispenseStatus.COMPLETED.getValue(),
RequestStatus.COMPLETED.getValue(), DispenseStatus.REFUNDED.getValue(), statisticalType, flg,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION,
ConditionCode.LOT_NUMBER_COST.getCode());
>>>>>>> v1.3
new Page<>(pageNo, pageSize), queryWrapper, DispenseStatus.COMPLETED.getValue(),
RequestStatus.COMPLETED.getValue(), DispenseStatus.REFUNDED.getValue(), statisticalType, flg,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION,
ConditionCode.LOT_NUMBER_COST.getCode());
return R.ok(medDetailsPage);

View File

@@ -8,10 +8,7 @@ import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
<<<<<<< HEAD
=======
import org.apache.commons.lang3.tuple.Pair;
>>>>>>> v1.3
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSONArray;
@@ -135,18 +132,18 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
ReturnMedicineInitDto initDto = new ReturnMedicineInitDto();
// 获取科室下拉选列表
List<Organization> organizationList =
iOrganizationService.getList(OrganizationType.DEPARTMENT.getValue(), OrganizationClass.CLINIC.getValue());
List<Organization> organizationList
= iOrganizationService.getList(OrganizationType.DEPARTMENT.getValue(), OrganizationClass.CLINIC.getValue());
List<ReturnMedicineInitDto.DepartmentOption> organizationOptions = organizationList.stream().map(
organization -> new ReturnMedicineInitDto.DepartmentOption(organization.getId(), organization.getName()))
.collect(Collectors.toList());
organization -> new ReturnMedicineInitDto.DepartmentOption(organization.getId(), organization.getName()))
.collect(Collectors.toList());
// 发药状态
List<ReturnMedicineInitDto.RefundStatusOption> refundStatusOptions = new ArrayList<>();
refundStatusOptions.add(new ReturnMedicineInitDto.RefundStatusOption(DispenseStatus.PENDING_REFUND.getValue(),
DispenseStatus.PENDING_REFUND.getInfo()));
DispenseStatus.PENDING_REFUND.getInfo()));
refundStatusOptions.add(new ReturnMedicineInitDto.RefundStatusOption(DispenseStatus.REFUNDED.getValue(),
DispenseStatus.REFUNDED.getInfo()));
DispenseStatus.REFUNDED.getInfo()));
initDto.setDepartmentOptions(organizationOptions).setRefundStatusOptions(refundStatusOptions);
return R.ok(initDto);
}
@@ -163,24 +160,24 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
*/
@Override
public R<?> getReturnMedicinePatientPage(EncounterInfoDto encounterInfoDto, String searchKey, Integer pageNo,
Integer pageSize, HttpServletRequest request) {
Integer pageSize, HttpServletRequest request) {
// 构建查询条件
QueryWrapper<EncounterInfoDto> queryWrapper = HisQueryUtils.buildQueryWrapper(encounterInfoDto, searchKey,
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientName, CommonConstants.FieldName.IdCard,
CommonConstants.FieldName.PatientPyStr, CommonConstants.FieldName.PatientWbStr)),
request);
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientName, CommonConstants.FieldName.IdCard,
CommonConstants.FieldName.PatientPyStr, CommonConstants.FieldName.PatientWbStr)),
request);
// 查询退药患者分页列表
Page<EncounterInfoDto> encounterInfoPage =
returnMedicineMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper);
Page<EncounterInfoDto> encounterInfoPage
= returnMedicineMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper);
encounterInfoPage.getRecords().forEach(encounterInfo -> {
// 性别
encounterInfo.setGenderEnum_enumText(
EnumUtils.getInfoByValue(AdministrativeGender.class, encounterInfo.getGenderEnum()));
EnumUtils.getInfoByValue(AdministrativeGender.class, encounterInfo.getGenderEnum()));
// 年龄
encounterInfo.setAge(AgeCalculatorUtil.getAge(encounterInfo.getBirthDate()));
// 退药状态
encounterInfo
.setRefundEnum_enumText(EnumUtils.getInfoByValue(RequestStatus.class, encounterInfo.getRefundEnum()));
.setRefundEnum_enumText(EnumUtils.getInfoByValue(RequestStatus.class, encounterInfo.getRefundEnum()));
});
return R.ok(encounterInfoPage);
}
@@ -196,16 +193,16 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
public R<?> getReturnMedicineInfo(Long encounterId, Integer refundStatus) {
// 获取退药信息
List<ReturnMedicineInfoDto> returnMedicineInfoList = returnMedicineMapper.selectReturnMedicineInfo(encounterId,
CommonConstants.TableName.WOR_DEVICE_REQUEST, CommonConstants.TableName.MED_MEDICATION_REQUEST,
ItemType.MEDICINE.getValue(), ItemType.DEVICE.getValue(), refundStatus,
DispenseStatus.PENDING_REFUND.getValue(), DispenseStatus.REFUNDED.getValue());
CommonConstants.TableName.WOR_DEVICE_REQUEST, CommonConstants.TableName.MED_MEDICATION_REQUEST,
ItemType.MEDICINE.getValue(), ItemType.DEVICE.getValue(), refundStatus,
DispenseStatus.PENDING_REFUND.getValue(), DispenseStatus.REFUNDED.getValue());
returnMedicineInfoList.forEach(returnMedicineInfoDto -> {
// 退药状态
returnMedicineInfoDto.setRefundEnum_enumText(
EnumUtils.getInfoByValue(DispenseStatus.class, returnMedicineInfoDto.getRefundEnum()));
EnumUtils.getInfoByValue(DispenseStatus.class, returnMedicineInfoDto.getRefundEnum()));
// 退药请求状态
returnMedicineInfoDto.setReqStatus_enumText(
EnumUtils.getInfoByValue(RequestStatus.class, returnMedicineInfoDto.getReqStatus()));
EnumUtils.getInfoByValue(RequestStatus.class, returnMedicineInfoDto.getReqStatus()));
});
return R.ok(returnMedicineInfoList);
}
@@ -230,10 +227,12 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
medicineReturnList.forEach(item -> {
switch (item.getTableName()) {
case CommonConstants.TableName.MED_MEDICATION_REQUEST -> returnMedicineList
.add(new ReturnMedicineDto().setDispenseId(item.getDispenseId()).setRequestId(item.getRequestId()));
case CommonConstants.TableName.WOR_DEVICE_REQUEST -> returnDeviceList
.add(new ReturnMedicineDto().setDispenseId(item.getDispenseId()).setRequestId(item.getRequestId()));
case CommonConstants.TableName.MED_MEDICATION_REQUEST ->
returnMedicineList
.add(new ReturnMedicineDto().setDispenseId(item.getDispenseId()).setRequestId(item.getRequestId()));
case CommonConstants.TableName.WOR_DEVICE_REQUEST ->
returnDeviceList
.add(new ReturnMedicineDto().setDispenseId(item.getDispenseId()).setRequestId(item.getRequestId()));
}
});
// 进销存参数
@@ -244,11 +243,11 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
List<Long> medReturnIdList = new ArrayList<>();
if (!returnMedicineList.isEmpty()) {
// 获取药品退药id列表
medReturnIdList =
returnMedicineList.stream().map(ReturnMedicineDto::getDispenseId).collect(Collectors.toList());
medReturnIdList
= returnMedicineList.stream().map(ReturnMedicineDto::getDispenseId).collect(Collectors.toList());
// 获取药品退药请求id列表
List<Long> medRequestIdList =
returnMedicineList.stream().map(ReturnMedicineDto::getRequestId).collect(Collectors.toList());
List<Long> medRequestIdList
= returnMedicineList.stream().map(ReturnMedicineDto::getRequestId).collect(Collectors.toList());
if (medReturnIdList.isEmpty()) {
throw new ServiceException("请选择要退的药品");
}
@@ -264,7 +263,7 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
}
// 重复退药校验
if (refundMedList.stream().map(MedicationDispense::getStatusEnum)
.anyMatch(x -> x.equals(DispenseStatus.REFUNDED.getValue()))) {
.anyMatch(x -> x.equals(DispenseStatus.REFUNDED.getValue()))) {
throw new ServiceException("药品已退药,请勿重复退药");
}
@@ -290,7 +289,7 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
}
}
supplyItemDetailDto.setItemTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION)
.setItemId(medicationDispense.getMedicationId()).setLotNumber(medicationDispense.getLotNumber());
.setItemId(medicationDispense.getMedicationId()).setLotNumber(medicationDispense.getLotNumber());
supplyItemDetailList.add(supplyItemDetailDto);
// 追溯码表相关处理
@@ -301,24 +300,24 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
traceNoManage = new TraceNoManage();
// 追溯码处理
traceNoManage.setItemTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION)
// 项目id
.setItemId(medicationDispense.getMedicationId())
// 仓库类型
.setLocationTypeEnum(null)
// 仓库
.setLocationId(medicationDispense.getLocationId())
// 仓位
.setLocationStoreId(null)
// 产品批号
.setLotNumber(medicationDispense.getLotNumber())
// 追溯码
.setTraceNo(item)
// 追溯码状态
.setStatusEnum(TraceNoStatus.IN.getValue())
// 追溯码单位
.setUnitCode(medicationDispense.getUnitCode())
// 操作类型
.setOperationType(SupplyType.RETURN_MEDICATION.getValue());
// 项目id
.setItemId(medicationDispense.getMedicationId())
// 仓库类型
.setLocationTypeEnum(null)
// 仓库
.setLocationId(medicationDispense.getLocationId())
// 仓位
.setLocationStoreId(null)
// 产品批号
.setLotNumber(medicationDispense.getLotNumber())
// 追溯码
.setTraceNo(item)
// 追溯码状态
.setStatusEnum(TraceNoStatus.IN.getValue())
// 追溯码单位
.setUnitCode(medicationDispense.getUnitCode())
// 操作类型
.setOperationType(SupplyType.RETURN_MEDICATION.getValue());
traceNoManageList.add(traceNoManage);
}
}
@@ -334,11 +333,11 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
List<Long> devReturnIdList = new ArrayList<>();
if (!returnDeviceList.isEmpty()) {
// 获取退耗材id列表
devReturnIdList =
returnDeviceList.stream().map(ReturnMedicineDto::getDispenseId).collect(Collectors.toList());
devReturnIdList
= returnDeviceList.stream().map(ReturnMedicineDto::getDispenseId).collect(Collectors.toList());
// 获取退耗材请求id列表
List<Long> devRequestIdList =
returnDeviceList.stream().map(ReturnMedicineDto::getRequestId).collect(Collectors.toList());
List<Long> devRequestIdList
= returnDeviceList.stream().map(ReturnMedicineDto::getRequestId).collect(Collectors.toList());
if (devReturnIdList.isEmpty()) {
throw new ServiceException("请选择要退的耗材");
}
@@ -352,7 +351,7 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
}
// 重复退耗材校验
if (refundDevList.stream().map(DeviceDispense::getStatusEnum)
.anyMatch(x -> x.equals(DispenseStatus.REFUNDED.getValue()))) {
.anyMatch(x -> x.equals(DispenseStatus.REFUNDED.getValue()))) {
throw new ServiceException("耗材已退,请勿重复操作");
}
// 更新退耗材单状态
@@ -365,8 +364,8 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
deviceDispense.setStatusEnum(DispenseStatus.REFUNDED.getValue());
// 设置库存变更参数
supplyItemDetailList
.add(new SupplyItemDetailDto().setItemTable(CommonConstants.TableName.ADM_DEVICE_DEFINITION)
.setItemId(deviceDispense.getDeviceDefId()).setLotNumber(deviceDispense.getLotNumber()));
.add(new SupplyItemDetailDto().setItemTable(CommonConstants.TableName.ADM_DEVICE_DEFINITION)
.setItemId(deviceDispense.getDeviceDefId()).setLotNumber(deviceDispense.getLotNumber()));
// // 使用逗号分割追溯码并转换为List
// String[] traceNoList = deviceDispense.getTraceNo().split(CommonConstants.Common.COMMA);
// for (String item : traceNoList) {
@@ -402,34 +401,14 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
// 处理退库存
// 获取库存信息
<<<<<<< HEAD
List<UnDispenseInventoryDto> inventoryList =
returnMedicineMapper.selectInventoryInfoList(devDispenseIdList, medDispenseIdList,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
if (inventoryList != null && !inventoryList.isEmpty()) {
// 设置库存数量
for (UnDispenseInventoryDto inventory : inventoryList) {
// 库存表项目设定
InventoryItem inventoryItem = new InventoryItem();
// id
inventoryItem.setId(inventory.getInventoryId());
// 库存数量
if (inventory.getDispenseUnit().equals(inventory.getInventoryUnitCode())) {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)+待退数量
inventoryItem.setQuantity(inventory.getInventoryQuantity().add(inventory.getDispenseQuantity()));
} else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)+退药数量(拆零比×待退数量)
inventoryItem.setQuantity(inventory.getInventoryQuantity()
.add(inventory.getPartPercent().multiply(inventory.getDispenseQuantity())));
=======
List<UnDispenseInventoryDto> unDispenseInventoryList =
returnMedicineMapper.selectInventoryInfoList(devReturnIdList, medReturnIdList,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
List<UnDispenseInventoryDto> unDispenseInventoryList
= returnMedicineMapper.selectInventoryInfoList(devReturnIdList, medReturnIdList,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
// 库存待更新列表
List<InventoryItem> inventoryItemList = new ArrayList<>();
// 根据批号,发放项目,发放药房进行分组处理
Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap =
unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId()
Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap
= unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId()
+ CommonConstants.Common.DASH + x.getLotNumber() + CommonConstants.Common.DASH + x.getLocationId()));
if (!unDispenseInventoryMap.isEmpty()) {
for (Map.Entry<String, List<UnDispenseInventoryDto>> entry : unDispenseInventoryMap.entrySet()) {
@@ -441,18 +420,17 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
for (UnDispenseInventoryDto unDispenseInventoryDto : inventoryList) {
BigDecimal quantity = unDispenseInventoryDto.getQuantity();
if (!unDispenseInventoryDto.getDispenseUnit()
.equals(unDispenseInventoryDto.getInventoryUnitCode())) {
.equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 转换为小单位进行累加
quantity =
unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent());
quantity
= unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent());
}
minQuantity = minQuantity.add(quantity);
}
// 理论上不出bug的情况下以项目id批号仓库进行分组处理库存一定唯一所以get(0)
// 设置待更新的库存信息
inventoryItemList.add(new InventoryItem().setId(inventoryList.get(0).getInventoryId())
.setQuantity(inventoryList.get(0).getInventoryQuantity().add(minQuantity)));
>>>>>>> v1.3
.setQuantity(inventoryList.get(0).getInventoryQuantity().add(minQuantity)));
}
}
// 库存更新
@@ -473,34 +451,35 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
if (!returnMedicineList.isEmpty()) {
// 设置进销存参数
medicationDefinitions = medicationDefinitionService.listByIds(supplyItemDetailList.stream()
.filter(x -> x.getItemTable().equals(CommonConstants.TableName.MED_MEDICATION_DEFINITION))
.map(SupplyItemDetailDto::getItemId).collect(Collectors.toList()));
.filter(x -> x.getItemTable().equals(CommonConstants.TableName.MED_MEDICATION_DEFINITION))
.map(SupplyItemDetailDto::getItemId).collect(Collectors.toList()));
}
if (!returnDeviceList.isEmpty()) {
deviceDefinitions = deviceDefinitionService.listByIds(supplyItemDetailList.stream()
.filter(x -> x.getItemTable().equals(CommonConstants.TableName.ADM_DEVICE_DEFINITION))
.map(SupplyItemDetailDto::getItemId).collect(Collectors.toList()));
.filter(x -> x.getItemTable().equals(CommonConstants.TableName.ADM_DEVICE_DEFINITION))
.map(SupplyItemDetailDto::getItemId).collect(Collectors.toList()));
}
// 创建映射表,添加空集合保护
Map<Long, MedicationDefinition> medicationMap =
medicationDefinitions != null ? medicationDefinitions.stream().filter(Objects::nonNull)
.collect(Collectors.toMap(MedicationDefinition::getId, Function.identity())) : new HashMap<>();
Map<Long, MedicationDefinition> medicationMap
= medicationDefinitions != null ? medicationDefinitions.stream().filter(Objects::nonNull)
.collect(Collectors.toMap(MedicationDefinition::getId, Function.identity())) : new HashMap<>();
Map<Long, DeviceDefinition> deviceMap =
deviceDefinitions != null ? deviceDefinitions.stream().filter(Objects::nonNull)
.collect(Collectors.toMap(DeviceDefinition::getId, Function.identity())) : new HashMap<>();
Map<Long, DeviceDefinition> deviceMap
= deviceDefinitions != null ? deviceDefinitions.stream().filter(Objects::nonNull)
.collect(Collectors.toMap(DeviceDefinition::getId, Function.identity())) : new HashMap<>();
// 设置库存变更参数,添加完整判空
for (SupplyItemDetailDto supplyItemDetailDto : supplyItemDetailList) {
if (supplyItemDetailDto == null)
if (supplyItemDetailDto == null) {
continue;
}
if (CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(supplyItemDetailDto.getItemTable())) {
if (supplyItemDetailDto.getItemId() != null) {
MedicationDefinition med = medicationMap.get(supplyItemDetailDto.getItemId());
if (med != null) {
supplyItemDetailDto.setItemBusNo(med.getBusNo()).setPartPercent(med.getPartPercent())
.setRxFlag(med.getRxFlag()).setYbNo(med.getYbNo());
.setRxFlag(med.getRxFlag()).setYbNo(med.getYbNo());
}
}
} else if (CommonConstants.TableName.ADM_DEVICE_DEFINITION.equals(supplyItemDetailDto.getItemTable())) {
@@ -508,14 +487,14 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
DeviceDefinition dev = deviceMap.get(supplyItemDetailDto.getItemId());
if (dev != null) {
supplyItemDetailDto.setItemBusNo(dev.getBusNo()).setPartPercent(dev.getPartPercent())
.setRxFlag(dev.getRxFlag()).setYbNo(dev.getYbNo());
.setRxFlag(dev.getRxFlag()).setYbNo(dev.getYbNo());
}
}
}
}
uploadFailedNoList = this.ybReturnIntegrated(medReturnIdList, null);
uploadFailedNoList = receiptApprovalAppService.ybInventoryIntegrated(supplyItemDetailList,
YbInvChgType.OTHER_OUT, DateUtils.getNowDate(), true);
YbInvChgType.OTHER_OUT, DateUtils.getNowDate(), true);
if (uploadFailedNoList != null) {
returnMsg = "3506商品销售退货上传错误错误项目编码" + uploadFailedNoList;
} else {
@@ -523,7 +502,7 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
}
}
// 返回退药成功信息
return R.ok(returnMsg, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[] {"退药"}));
return R.ok(returnMsg, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, new Object[]{"退药"}));
}
/**
@@ -539,8 +518,8 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
if (!dispenseMedIdList.isEmpty() || !dispenseDevIdList.isEmpty()) {
// 查询退药项目相关信息
List<DispenseInventoryDto> dispenseInventoryList = returnMedicineMapper.selectReturnItemDetail(
dispenseDevIdList, dispenseMedIdList, CommonConstants.TableName.MED_MEDICATION_DEFINITION,
CommonConstants.TableName.ADM_DEVICE_DEFINITION);
dispenseDevIdList, dispenseMedIdList, CommonConstants.TableName.MED_MEDICATION_DEFINITION,
CommonConstants.TableName.ADM_DEVICE_DEFINITION);
for (DispenseInventoryDto dispenseInventoryDto : dispenseInventoryList) {
if (dispenseInventoryDto.getYbNo() == null) {
continue;
@@ -550,7 +529,7 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
Contract contract = medical3506Pair.getRight();
if (contract != null) {
if (CommonConstants.BusinessName.DEFAULT_CONTRACT_NO
.equals(medical3506Pair.getRight().getBusNo())) {
.equals(medical3506Pair.getRight().getBusNo())) {
contract = null;
}
}
@@ -569,14 +548,14 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
if (CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(dispenseInventoryDto.getItemTable())) {
// 查询费用结算信息
chargeItem = iChargeItemService.getOne(new LambdaQueryWrapper<ChargeItem>()
.eq(ChargeItem::getServiceTable, CommonConstants.TableName.MED_MEDICATION_REQUEST)
.eq(ChargeItem::getServiceId, dispenseInventoryDto.getRefundId())
.eq(ChargeItem::getTenantId, SecurityUtils.getLoginUser().getTenantId()));
.eq(ChargeItem::getServiceTable, CommonConstants.TableName.MED_MEDICATION_REQUEST)
.eq(ChargeItem::getServiceId, dispenseInventoryDto.getRefundId())
.eq(ChargeItem::getTenantId, SecurityUtils.getLoginUser().getTenantId()));
} else if (CommonConstants.TableName.ADM_DEVICE_DEFINITION.equals(dispenseInventoryDto.getItemTable())) {
chargeItem = iChargeItemService.getOne(new LambdaQueryWrapper<ChargeItem>()
.eq(ChargeItem::getServiceTable, CommonConstants.TableName.WOR_DEVICE_REQUEST)
.eq(ChargeItem::getServiceId, dispenseInventoryDto.getRefundId())
.eq(ChargeItem::getTenantId, SecurityUtils.getLoginUser().getTenantId()));
.eq(ChargeItem::getServiceTable, CommonConstants.TableName.WOR_DEVICE_REQUEST)
.eq(ChargeItem::getServiceId, dispenseInventoryDto.getRefundId())
.eq(ChargeItem::getTenantId, SecurityUtils.getLoginUser().getTenantId()));
}
if (chargeItem == null) {
throw new ServiceException("未查询到收费项");
@@ -587,27 +566,27 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
throw new ServiceException("未查找到就诊诊断信息");
}
// 查询付款信息
PaymentReconciliation paymentReconciliation =
iPaymentReconciliationService.getOne(new LambdaQueryWrapper<PaymentReconciliation>()
.eq(PaymentReconciliation::getEncounterId, chargeItem.getEncounterId())
.like(PaymentReconciliation::getChargeItemIds, chargeItem.getId())
.eq(PaymentReconciliation::getStatusEnum, PaymentStatus.SUCCESS.getValue())
.eq(PaymentReconciliation::getPatientId, chargeItem.getPatientId())
.eq(PaymentReconciliation::getPaymentEnum, PaymentType.PAY.getValue()));
PaymentReconciliation paymentReconciliation
= iPaymentReconciliationService.getOne(new LambdaQueryWrapper<PaymentReconciliation>()
.eq(PaymentReconciliation::getEncounterId, chargeItem.getEncounterId())
.like(PaymentReconciliation::getChargeItemIds, chargeItem.getId())
.eq(PaymentReconciliation::getStatusEnum, PaymentStatus.SUCCESS.getValue())
.eq(PaymentReconciliation::getPatientId, chargeItem.getPatientId())
.eq(PaymentReconciliation::getPaymentEnum, PaymentType.PAY.getValue()));
if (paymentReconciliation == null) {
throw new ServiceException("未查询到收费");
}
// 查询账户信息
Account account = accountService
.getOne(new LambdaQueryWrapper<Account>().eq(Account::getEncounterId, chargeItem.getEncounterId())
.eq(Account::getEncounterFlag, Whether.YES.getValue()));
.getOne(new LambdaQueryWrapper<Account>().eq(Account::getEncounterId, chargeItem.getEncounterId())
.eq(Account::getEncounterFlag, Whether.YES.getValue()));
if (account == null) {
throw new ServiceException("未查询到账户");
}
// 查询合同实体
Contract contract =
iContractService.getOne(new LambdaQueryWrapper<Contract>().eq(Contract::getBusNo, account.getContractNo()));
Contract contract
= iContractService.getOne(new LambdaQueryWrapper<Contract>().eq(Contract::getBusNo, account.getContractNo()));
if (contract == null) {
throw new ServiceException("未查询到合同信息");
}
@@ -622,12 +601,12 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
}
// 查询就诊id
if (contract.getCategoryEnum().equals(Category.SELF.getValue())
|| contract.getCategoryEnum().equals(Category.PUBLIC.getValue())) {
|| contract.getCategoryEnum().equals(Category.PUBLIC.getValue())) {
medical3506Param.setMdtrtSn(dispenseInventoryDto.getEncounterNo());
} else {
ClinicSettle clinicSettle = clinicSettleService.getOne(new LambdaQueryWrapper<ClinicSettle>()
.in(ClinicSettle::getSetlId, List.of(paymentReconciliation.getYbSettleIds()))
.eq(ClinicSettle::getMedType, encounterDiagnosis.getMedTypeCode()).last(" LIMIT 1"));
.in(ClinicSettle::getSetlId, List.of(paymentReconciliation.getYbSettleIds()))
.eq(ClinicSettle::getMedType, encounterDiagnosis.getMedTypeCode()).last(" LIMIT 1"));
if (clinicSettle != null) {
medical3506Param.setMdtrtSn(clinicSettle.getMdtrtId());
} else {
@@ -643,9 +622,9 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
JSONArray medicalTraceNo = new JSONArray();
// 获取追溯码信息
if (dispenseInventoryDto.getTraceNo() != null) {
List<String> traceNoList =
Arrays.stream(dispenseInventoryDto.getTraceNo().split(CommonConstants.Common.COMMA)).map(String::trim)
.filter(s -> !s.isEmpty()).toList();
List<String> traceNoList
= Arrays.stream(dispenseInventoryDto.getTraceNo().split(CommonConstants.Common.COMMA)).map(String::trim)
.filter(s -> !s.isEmpty()).toList();
for (String traceNo : traceNoList) {
Map<String, String> traceNoMap = new HashMap<>();
traceNoMap.put("drug_trac_codg", traceNo);
@@ -653,17 +632,17 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
}
}
medical3506Param.setMedListCodg(dispenseInventoryDto.getYbNo())
.setFixmedinsBchno(dispenseInventoryDto.getRefundId().toString())
.setFixmedinsHilistId(dispenseInventoryDto.getItemNo())
.setFixmedinsHilistName(CommonConstants.TableName.MED_MEDICATION_DEFINITION)
.setPsnCertType(mdtrtCertType.getValue()).setManuLotnum(dispenseInventoryDto.getLotNumber())
.setManuDate(dispenseInventoryDto.getProductionDate())
.setSelRetnCnt(new BigDecimal(dispenseInventoryDto.getDispenseQuantity().toString()))
.setSelRetnTime(dispenseInventoryDto.getDispenseTime()).setExpyEnd(dispenseInventoryDto.getExpirationDate())
.setDrugtracinfo(medicalTraceNo).setCertno(dispenseInventoryDto.getIdCard());
.setFixmedinsBchno(dispenseInventoryDto.getRefundId().toString())
.setFixmedinsHilistId(dispenseInventoryDto.getItemNo())
.setFixmedinsHilistName(CommonConstants.TableName.MED_MEDICATION_DEFINITION)
.setPsnCertType(mdtrtCertType.getValue()).setManuLotnum(dispenseInventoryDto.getLotNumber())
.setManuDate(dispenseInventoryDto.getProductionDate())
.setSelRetnCnt(new BigDecimal(dispenseInventoryDto.getDispenseQuantity().toString()))
.setSelRetnTime(dispenseInventoryDto.getDispenseTime()).setExpyEnd(dispenseInventoryDto.getExpirationDate())
.setDrugtracinfo(medicalTraceNo).setCertno(dispenseInventoryDto.getIdCard());
// 查看所属医院
String fixmedinsCode =
SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.FIXMEDINS_CODE);
String fixmedinsCode
= SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.FIXMEDINS_CODE);
if (dispenseInventoryDto.getPreparerName() == null && HospitalCodeEnum.CCU.getCode().equals(fixmedinsCode)) {
medical3506Param.setSelRetnOpterName(CommonConstants.CCU.DisDeviceDoctorName);
} else {
@@ -686,22 +665,18 @@ public class ReturnMedicineAppServiceImpl implements IReturnMedicineAppService {
} else if (CommonConstants.TableName.ADM_DEVICE_DEFINITION.equals(dispenseInventoryDto.getItemTable())) {
medical3506Param.setFixmedinsHilistName(CommonConstants.TableName.ADM_DEVICE_DEFINITION);
}
<<<<<<< HEAD
return medical3506Param;
=======
return Pair.of(medical3506Param, contract);
>>>>>>> v1.3
}
private MedicalInventory3511Param getMedical3511Param(DispenseInventoryDto dispenseInventoryDto) {
MedicalInventory3511Param medicalInventory3511Param = new MedicalInventory3511Param();
String fixmedinsCode =
SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.FIXMEDINS_CODE);
String fixmedinsCode
= SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.FIXMEDINS_CODE);
// TODO
medicalInventory3511Param.setFixmedinsCode(fixmedinsCode).setMedinsListCodg(dispenseInventoryDto.getYbNo())
.setFixmedinsBchno(dispenseInventoryDto.getLotNumber()).setBegndate(dispenseInventoryDto.getDispenseTime())
.setEnddate(dispenseInventoryDto.getDispenseTime());
.setFixmedinsBchno(dispenseInventoryDto.getLotNumber()).setBegndate(dispenseInventoryDto.getDispenseTime())
.setEnddate(dispenseInventoryDto.getDispenseTime());
return medicalInventory3511Param;
}

View File

@@ -129,42 +129,42 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
DispenseInitDto initDto = new DispenseInitDto();
// 获取科室下拉选列表
List<Organization> organizationList =
organizationService.getList(OrganizationType.DEPARTMENT.getValue(), OrganizationClass.CLINIC.getValue());
List<Organization> organizationList
= organizationService.getList(OrganizationType.DEPARTMENT.getValue(), OrganizationClass.CLINIC.getValue());
List<DispenseInitDto.DepartmentOption> organizationOptions = organizationList.stream()
.map(organization -> new DispenseInitDto.DepartmentOption(organization.getId(), organization.getName()))
.collect(Collectors.toList());
.map(organization -> new DispenseInitDto.DepartmentOption(organization.getId(), organization.getName()))
.collect(Collectors.toList());
// 获取配药人下拉选列表
List<Practitioner> preparerDoctorList =
westernMedicineDispenseMapper.getPreparerDoctorList(PractitionerRoles.PHARMACIST.getCode());
List<Practitioner> preparerDoctorList
= westernMedicineDispenseMapper.getPreparerDoctorList(PractitionerRoles.PHARMACIST.getCode());
List<DispenseInitDto.PreparerDoctorOption> preparerDoctorOptions = preparerDoctorList.stream()
.map(practitioner -> new DispenseInitDto.PreparerDoctorOption(practitioner.getId(), practitioner.getName()))
.collect(Collectors.toList());
.map(practitioner -> new DispenseInitDto.PreparerDoctorOption(practitioner.getId(), practitioner.getName()))
.collect(Collectors.toList());
// 未发药原因下拉选列表
List<DispenseInitDto.NotPerformedReasonOption> notPerformedReasonOptions =
Stream.of(NotPerformedReasonEnum.values())
.map(notPerformedReason -> new DispenseInitDto.NotPerformedReasonOption(notPerformedReason.getValue(),
notPerformedReason.getInfo()))
.collect(Collectors.toList());
List<DispenseInitDto.NotPerformedReasonOption> notPerformedReasonOptions
= Stream.of(NotPerformedReasonEnum.values())
.map(notPerformedReason -> new DispenseInitDto.NotPerformedReasonOption(notPerformedReason.getValue(),
notPerformedReason.getInfo()))
.collect(Collectors.toList());
// 患者类型
List<DispenseInitDto.EncounterClassOption> encounterClassOptions = Stream.of(EncounterClass.values())
.map(encounterClass -> new DispenseInitDto.EncounterClassOption(encounterClass.getValue(),
.map(encounterClass -> new DispenseInitDto.EncounterClassOption(encounterClass.getValue(),
encounterClass.getInfo()))
.toList();
.toList();
// 发药状态
List<DispenseInitDto.DispenseStatusOption> dispenseStatusOptions = new ArrayList<>();
dispenseStatusOptions.add(new DispenseInitDto.DispenseStatusOption(DispenseStatus.IN_PROGRESS.getValue(),
DispenseStatus.IN_PROGRESS.getInfo()));
DispenseStatus.IN_PROGRESS.getInfo()));
dispenseStatusOptions.add(new DispenseInitDto.DispenseStatusOption(DispenseStatus.COMPLETED.getValue(),
DispenseStatus.COMPLETED.getInfo()));
DispenseStatus.COMPLETED.getInfo()));
initDto.setDepartmentOptions(organizationOptions).setNotPerformedReasonOptions(notPerformedReasonOptions)
.setDispenseStatusOptions(dispenseStatusOptions).setPreparerDoctorOptions(preparerDoctorOptions)
.setEncounterClassOptions(encounterClassOptions);
.setDispenseStatusOptions(dispenseStatusOptions).setPreparerDoctorOptions(preparerDoctorOptions)
.setEncounterClassOptions(encounterClassOptions);
return R.ok(initDto);
}
@@ -180,28 +180,28 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
*/
@Override
public R<?> getEncounterInfoListPage(EncounterInfoSearchParam encounterInfoSearchParam, String searchKey,
Integer pageNo, Integer pageSize, HttpServletRequest request) {
Integer pageNo, Integer pageSize, HttpServletRequest request) {
// 发药状态初始化
Integer statusEnum = encounterInfoSearchParam.getStatusEnum();
encounterInfoSearchParam.setStatusEnum(null);
// 构建查询条件
QueryWrapper<EncounterInfoSearchParam> queryWrapper =
HisQueryUtils.buildQueryWrapper(encounterInfoSearchParam, searchKey,
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientName, CommonConstants.FieldName.IdCard,
CommonConstants.FieldName.PatientPyStr, CommonConstants.FieldName.PatientWbStr)),
request);
QueryWrapper<EncounterInfoSearchParam> queryWrapper
= HisQueryUtils.buildQueryWrapper(encounterInfoSearchParam, searchKey,
new HashSet<>(Arrays.asList(CommonConstants.FieldName.PatientName, CommonConstants.FieldName.IdCard,
CommonConstants.FieldName.PatientPyStr, CommonConstants.FieldName.PatientWbStr)),
request);
// 查询就诊病人列表
Page<EncounterInfoDto> encounterInfoPage =
westernMedicineDispenseMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper,
statusEnum, DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(),
DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue());
Page<EncounterInfoDto> encounterInfoPage
= westernMedicineDispenseMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper,
statusEnum, DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(),
DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue());
encounterInfoPage.getRecords().forEach(encounterInfo -> {
// 性别
encounterInfo.setGenderEnum_enumText(
EnumUtils.getInfoByValue(AdministrativeGender.class, encounterInfo.getGenderEnum()));
EnumUtils.getInfoByValue(AdministrativeGender.class, encounterInfo.getGenderEnum()));
// 发药状态
encounterInfo
.setStatusEnum_enumText(EnumUtils.getInfoByValue(DispenseStatus.class, encounterInfo.getStatusEnum()));
.setStatusEnum_enumText(EnumUtils.getInfoByValue(DispenseStatus.class, encounterInfo.getStatusEnum()));
if (encounterInfo.getBirthDate() != null) {
// 计算年龄
encounterInfo.setAge(AgeCalculatorUtil.getAge(encounterInfo.getBirthDate()));
@@ -220,23 +220,23 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
*/
@Override
public R<?> getMedicineDispenseOrderList(ItemDispenseOrderDto itemDispenseOrderDto, Integer pageNo,
Integer pageSize) {
Integer pageSize) {
// 发药状态初始化
Integer dispenseStatus = itemDispenseOrderDto.getStatusEnum();
itemDispenseOrderDto.setStatusEnum(null);
// 构建查询条件
QueryWrapper<ItemDispenseOrderDto> queryWrapper =
HisQueryUtils.buildQueryWrapper(itemDispenseOrderDto, null, null, null);
QueryWrapper<ItemDispenseOrderDto> queryWrapper
= HisQueryUtils.buildQueryWrapper(itemDispenseOrderDto, null, null, null);
// 处方单信息查询
Page<ItemDispenseOrderDto> medicineDispenseOrderPage =
westernMedicineDispenseMapper.selectMedicineDispenseOrderPage(new Page<>(pageNo, pageSize), queryWrapper,
DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(),
DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue(), dispenseStatus,
PublicationStatus.ACTIVE.getValue());
Page<ItemDispenseOrderDto> medicineDispenseOrderPage
= westernMedicineDispenseMapper.selectMedicineDispenseOrderPage(new Page<>(pageNo, pageSize), queryWrapper,
DispenseStatus.IN_PROGRESS.getValue(), DispenseStatus.COMPLETED.getValue(),
DispenseStatus.PREPARATION.getValue(), DispenseStatus.PREPARED.getValue(), dispenseStatus,
PublicationStatus.ACTIVE.getValue());
medicineDispenseOrderPage.getRecords().forEach(medicineDispenseOrder -> {
// 发药状态
medicineDispenseOrder.setStatusEnum_enumText(
EnumUtils.getInfoByValue(DispenseStatus.class, medicineDispenseOrder.getStatusEnum()));
EnumUtils.getInfoByValue(DispenseStatus.class, medicineDispenseOrder.getStatusEnum()));
// 设置所在表名
medicineDispenseOrder.setItemTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION);
});
@@ -252,12 +252,12 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
@Override
public R<?> medicinePrepare(List<DispenseItemDto> dispenseMedicineList) {
// 追溯码集合
List<String> traceNoList =
dispenseMedicineList.stream().map(DispenseItemDto::getTraceNo).collect(Collectors.toList());
List<String> traceNoList
= dispenseMedicineList.stream().map(DispenseItemDto::getTraceNo).collect(Collectors.toList());
// 非输液药品的已出库追溯码
List<String> outTraceNoList = westernMedicineDispenseMapper.getOutTraceNo(TraceNoStatus.OUT.getValue(),
Whether.YES.getValue(), SplitPropertyCode.OUTPATIENT_MIN_UNIT_CEIL.getValue(),
SplitPropertyCode.OUTPATIENT_MIN_UNIT_TOTAL_CEIL.getValue(), SupplyType.DISPENSE_MEDICATION.getValue());
Whether.YES.getValue(), SplitPropertyCode.OUTPATIENT_MIN_UNIT_CEIL.getValue(),
SplitPropertyCode.OUTPATIENT_MIN_UNIT_TOTAL_CEIL.getValue(), SupplyType.DISPENSE_MEDICATION.getValue());
// 取交集
if (!traceNoList.isEmpty() && !outTraceNoList.isEmpty()) {
List<String> list = traceNoList.stream().filter(outTraceNoList::contains).collect(Collectors.toList());
@@ -267,65 +267,19 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
}
// 配药人检查
if (dispenseMedicineList.get(0).getPreparerId() == null
|| dispenseMedicineList.get(0).getPreparerId().equals(SecurityUtils.getLoginUser().getPractitionerId())) {
|| dispenseMedicineList.get(0).getPreparerId().equals(SecurityUtils.getLoginUser().getPractitionerId())) {
return R.fail("请选择调配药师");
}
// 获取发药单id列表
List<Long> medDispenseIdList =
dispenseMedicineList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
<<<<<<< HEAD
// 获取库存信息
List<UnDispenseInventoryDto> inventoryList =
returnMedicineMapper.selectInventoryInfoList(null, medDispenseIdList,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
// 按每个药品分组
Map<Long, List<UnDispenseInventoryDto>> groupedByItemId =
inventoryList.stream().collect(Collectors.groupingBy(UnDispenseInventoryDto::getItemId));
// 遍历每个分组校验库存状态
for (Map.Entry<Long, List<UnDispenseInventoryDto>> entry : groupedByItemId.entrySet()) {
List<UnDispenseInventoryDto> groupItems = entry.getValue();
if (groupItems.stream().map(UnDispenseInventoryDto::getInventoryStatusEnum)
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
// 库存停供校验
return R.fail(groupItems.get(0).getItemName() + "库存已停供");
}
}
if (!inventoryList.isEmpty()) {
for (UnDispenseInventoryDto unDispenseInventoryDto : inventoryList) {
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())) {
// 库存数量判定
if (unDispenseInventoryDto.getDispenseUnit()
.equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-请求数量
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity()
.subtract(unDispenseInventoryDto.getQuantity());
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
}
} else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-拆零数量(拆零比×请求数量)
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity().subtract(
unDispenseInventoryDto.getPartPercent().multiply(unDispenseInventoryDto.getQuantity()));
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
}
}
}
}
}
=======
>>>>>>> v1.3
List<Long> medDispenseIdList
= dispenseMedicineList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
// 药品发药信息查询
List<MedicationDispense> dispenseList = medicationDispenseService
.list(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getId, medDispenseIdList));
.list(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getId, medDispenseIdList));
if (dispenseList != null) {
if (dispenseList.stream().map(MedicationDispense::getStatusEnum)
.anyMatch(x -> !x.equals(DispenseStatus.PREPARATION.getValue()))) {
.anyMatch(x -> !x.equals(DispenseStatus.PREPARATION.getValue()))) {
throw new ServiceException("配药失败,请检查发药单状态");
} else {
for (MedicationDispense medicationDispense : dispenseList) {
@@ -350,10 +304,10 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
}
// 查询对应的药品医嘱
List<MedicationRequest> medicationRequests = medicationRequestService.listByIds(
dispenseList.stream().map(MedicationDispense::getMedReqId).distinct().collect(Collectors.toList()));
dispenseList.stream().map(MedicationDispense::getMedReqId).distinct().collect(Collectors.toList()));
// 根据请求id做map
Map<Long, List<MedicationDispense>> dispenseMap =
dispenseList.stream().collect(Collectors.groupingBy(MedicationDispense::getMedReqId));
Map<Long, List<MedicationDispense>> dispenseMap
= dispenseList.stream().collect(Collectors.groupingBy(MedicationDispense::getMedReqId));
for (MedicationRequest medicationRequest : medicationRequests) {
List<MedicationDispense> medicationDispenseList = dispenseMap.get(medicationRequest.getId());
BigDecimal dispenseQuantity = BigDecimal.ZERO;
@@ -387,79 +341,33 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
@Override
public R<?> medicineDispense(List<DispenseItemDto> dispenseMedicineList) {
// 获取发药单id列表
List<Long> medDispenseIdList =
dispenseMedicineList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
<<<<<<< HEAD
// 获取药品发放库存信息
List<UnDispenseInventoryDto> inventoryList =
returnMedicineMapper.selectInventoryInfoList(null, medDispenseIdList,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
// 按每个药品分组
Map<Long, List<UnDispenseInventoryDto>> groupedByItemId =
inventoryList.stream().collect(Collectors.groupingBy(UnDispenseInventoryDto::getItemId));
// 遍历每个分组校验库存状态
for (Map.Entry<Long, List<UnDispenseInventoryDto>> entry : groupedByItemId.entrySet()) {
List<UnDispenseInventoryDto> groupItems = entry.getValue();
if (groupItems.stream().map(UnDispenseInventoryDto::getInventoryStatusEnum)
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
// 库存停供校验
return R.fail(groupItems.get(0).getItemName() + "库存已停供");
}
}
if (!inventoryList.isEmpty()) {
for (UnDispenseInventoryDto unDispenseInventoryDto : inventoryList) {
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())) {
InventoryItem inventoryItem = new InventoryItem();
// 库存数量判定
if (unDispenseInventoryDto.getDispenseUnit()
.equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-请求数量
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity()
.subtract(unDispenseInventoryDto.getQuantity());
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
}
} else {
// 当前库存数量(拆零单位)=当前库存数量(拆零单位)-拆零数量(拆零比×请求数量)
BigDecimal quantity = unDispenseInventoryDto.getInventoryQuantity().subtract(
unDispenseInventoryDto.getPartPercent().multiply(unDispenseInventoryDto.getQuantity()));
// 库存数量判定
if (quantity.compareTo(BigDecimal.ZERO) < 0) {
// 库存数量不足
return R.fail(unDispenseInventoryDto.getItemName() + "当前库存数量不足");
} else {
inventoryItem.setId(unDispenseInventoryDto.getInventoryId()).setQuantity(quantity);
=======
List<Long> medDispenseIdList
= dispenseMedicineList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
// 获取药品待发放库存信息
List<UnDispenseInventoryDto> unDispenseInventoryList =
returnMedicineMapper.selectInventoryInfoList(null, medDispenseIdList,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
List<UnDispenseInventoryDto> unDispenseInventoryList
= returnMedicineMapper.selectInventoryInfoList(null, medDispenseIdList,
CommonConstants.TableName.MED_MEDICATION_DEFINITION, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
if (unDispenseInventoryList == null || unDispenseInventoryList.isEmpty()) {
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00007, null));
}
// 发药单状态校验
if (unDispenseInventoryList.stream().map(UnDispenseInventoryDto::getDispenseStatus)
.anyMatch(x -> !x.equals(DispenseStatus.PREPARED.getValue()))) {
.anyMatch(x -> !x.equals(DispenseStatus.PREPARED.getValue()))) {
throw new ServiceException("发药失败,请检查发药单状态");
}
// 库存待更新列表
List<InventoryItem> inventoryItemList = new ArrayList<>();
// 根据批号,发放项目,发放药房进行分组处理
Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap =
unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId()
Map<String, List<UnDispenseInventoryDto>> unDispenseInventoryMap
= unDispenseInventoryList.stream().collect(Collectors.groupingBy(x -> x.getItemId()
+ CommonConstants.Common.DASH + x.getLotNumber() + CommonConstants.Common.DASH + x.getLocationId()));
if (!unDispenseInventoryMap.isEmpty()) {
for (Map.Entry<String, List<UnDispenseInventoryDto>> entry : unDispenseInventoryMap.entrySet()) {
List<UnDispenseInventoryDto> inventoryList = entry.getValue();
if (!inventoryList.isEmpty()) {
if (inventoryList.stream().map(UnDispenseInventoryDto::getInventoryStatusEnum)
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
.allMatch(x -> x.equals(PublicationStatus.RETIRED.getValue()))) {
// 停供库存校验
return R.fail(inventoryList.get(0).getItemName() + "库存已停供");
}
@@ -472,17 +380,16 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
for (UnDispenseInventoryDto unDispenseInventoryDto : inventoryList) {
BigDecimal quantity = unDispenseInventoryDto.getQuantity();
if (!unDispenseInventoryDto.getDispenseUnit()
.equals(unDispenseInventoryDto.getInventoryUnitCode())) {
.equals(unDispenseInventoryDto.getInventoryUnitCode())) {
// 转换为小单位进行累加
quantity =
unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent());
quantity
= unDispenseInventoryDto.getQuantity().multiply(unDispenseInventoryDto.getPartPercent());
}
minQuantity = minQuantity.add(quantity);
if (PublicationStatus.ACTIVE.getValue().equals(unDispenseInventoryDto.getInventoryStatusEnum())
&& unDispenseInventoryDto.getInventoryQuantity().compareTo(BigDecimal.ZERO) > 0) {
&& unDispenseInventoryDto.getInventoryQuantity().compareTo(BigDecimal.ZERO) > 0) {
inventoryQuantity = unDispenseInventoryDto.getInventoryQuantity();
inventoryId = unDispenseInventoryDto.getInventoryId();
>>>>>>> v1.3
}
}
if (minQuantity.compareTo(inventoryQuantity) > 0) {
@@ -491,7 +398,7 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
} else {
// 设置待更新的库存信息
inventoryItemList.add(new InventoryItem().setId(inventoryId)
.setQuantity(inventoryQuantity.subtract(minQuantity)));
.setQuantity(inventoryQuantity.subtract(minQuantity)));
}
}
}
@@ -527,9 +434,9 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
// 设置库存变更参数
supplyItemDetailList.add(new SupplyItemDetailDto().setItemId(unDispenseInventoryDto.getItemId())
.setLotNumber(unDispenseInventoryDto.getLotNumber())
.setItemTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION)
.setRequestId(unDispenseInventoryDto.getRequestId()));
.setLotNumber(unDispenseInventoryDto.getLotNumber())
.setItemTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION)
.setRequestId(unDispenseInventoryDto.getRequestId()));
// 处理追溯码相关
// 使用逗号分割追溯码并转换为List
@@ -539,22 +446,22 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
traceNoManage = new TraceNoManage();
// 追溯码处理
traceNoManage.setItemTable(CommonConstants.TableName.MED_MEDICATION_DEFINITION)
// 项目id
.setItemId(unDispenseInventoryDto.getItemId())
// 仓库类型
.setLocationTypeEnum(LocationForm.PHARMACY.getValue())
// 仓库
.setLocationId(unDispenseInventoryDto.getLocationId())
// 产品批号
.setLotNumber(unDispenseInventoryDto.getLotNumber())
// 追溯码
.setTraceNo(item)
// 追溯码状态
.setStatusEnum(TraceNoStatus.OUT.getValue())
// 追溯码单位
.setUnitCode(unDispenseInventoryDto.getDispenseUnit())
// 操作类型
.setOperationType(SupplyType.DISPENSE_MEDICATION.getValue());
// 项目id
.setItemId(unDispenseInventoryDto.getItemId())
// 仓库类型
.setLocationTypeEnum(LocationForm.PHARMACY.getValue())
// 仓库
.setLocationId(unDispenseInventoryDto.getLocationId())
// 产品批号
.setLotNumber(unDispenseInventoryDto.getLotNumber())
// 追溯码
.setTraceNo(item)
// 追溯码状态
.setStatusEnum(TraceNoStatus.OUT.getValue())
// 追溯码单位
.setUnitCode(unDispenseInventoryDto.getDispenseUnit())
// 操作类型
.setOperationType(SupplyType.DISPENSE_MEDICATION.getValue());
tracesNoManageList.add(traceNoManage);
}
}
@@ -575,23 +482,23 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
if (Whether.YES.getCode().equals(ybSwitch)) {
// 设置进销存参数
List<MedicationDefinition> medicationDefinitions = medicationDefinitionService.listByIds(
supplyItemDetailList.stream().map(SupplyItemDetailDto::getItemId).collect(Collectors.toList()));
supplyItemDetailList.stream().map(SupplyItemDetailDto::getItemId).collect(Collectors.toList()));
// 用itemId分组
Map<Long, MedicationDefinition> medicationMap = medicationDefinitions.stream()
.collect(Collectors.toMap(MedicationDefinition::getId, Function.identity()));
.collect(Collectors.toMap(MedicationDefinition::getId, Function.identity()));
// 设置库存变更参数
for (SupplyItemDetailDto dto : supplyItemDetailList) {
if (CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(dto.getItemTable())) {
MedicationDefinition med = medicationMap.get(dto.getItemId());
if (med != null) {
dto.setItemBusNo(med.getBusNo()).setPartPercent(med.getPartPercent()).setRxFlag(med.getRxFlag())
.setYbNo(med.getYbNo());
.setYbNo(med.getYbNo());
}
}
}
uploadFailedNoList = this.ybMedicineIntegrated(medDispenseIdList, null);
uploadFailedNoList = receiptApprovalAppService.ybInventoryIntegrated(supplyItemDetailList,
YbInvChgType.OTHER_OUT, DateUtils.getNowDate(), true);
YbInvChgType.OTHER_OUT, DateUtils.getNowDate(), true);
if (uploadFailedNoList != null) {
returnMsg = "3505商品销售上传错误错误项目编码" + uploadFailedNoList;
} else {
@@ -610,11 +517,11 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
@Override
public R<?> medicineCancel(List<DispenseItemDto> dispenseMedicineList) {
// 获取发药单id列表
List<Long> medDispenseIdList =
dispenseMedicineList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
List<Long> medDispenseIdList
= dispenseMedicineList.stream().map(DispenseItemDto::getDispenseId).collect(Collectors.toList());
// 药品发药信息查询
List<MedicationDispense> dispenseList = medicationDispenseService
.list(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getId, medDispenseIdList));
.list(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getId, medDispenseIdList));
if (dispenseList != null) {
for (MedicationDispense medicationDispense : dispenseList) {
// 药品发放状态
@@ -640,15 +547,15 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
* @return 上传失败的编号集合
*/
public List<String> ybMedicineIntegrated(@Nullable List<Long> medDispenseIdList,
@Nullable List<Long> devDispenseIdList) {
@Nullable List<Long> devDispenseIdList) {
List<String> uploadFailedNoList = new ArrayList<>();
R<?> result;
if ((medDispenseIdList != null && !medDispenseIdList.isEmpty())
|| (devDispenseIdList != null && !devDispenseIdList.isEmpty())) {
|| (devDispenseIdList != null && !devDispenseIdList.isEmpty())) {
// 查询发药项目相关信息
List<DispenseInventoryDto> dispenseInventoryList = returnMedicineMapper.selectReturnItemDetail(
devDispenseIdList, medDispenseIdList, CommonConstants.TableName.MED_MEDICATION_DEFINITION,
CommonConstants.TableName.ADM_DEVICE_DEFINITION);
devDispenseIdList, medDispenseIdList, CommonConstants.TableName.MED_MEDICATION_DEFINITION,
CommonConstants.TableName.ADM_DEVICE_DEFINITION);
for (DispenseInventoryDto dispenseInventoryDto : dispenseInventoryList) {
if (dispenseInventoryDto.getYbNo() == null) {
continue;
@@ -658,7 +565,7 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
Contract contract = medical3505Pair.getRight();
if (contract != null) {
if (CommonConstants.BusinessName.DEFAULT_CONTRACT_NO
.equals(medical3505Pair.getRight().getBusNo())) {
.equals(medical3505Pair.getRight().getBusNo())) {
contract = null;
}
}
@@ -677,14 +584,14 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
if (CommonConstants.TableName.MED_MEDICATION_DEFINITION.equals(dispenseInventoryDto.getItemTable())) {
// 查询费用结算信息
chargeItem = chargeItemService.getOne(new LambdaQueryWrapper<ChargeItem>()
.eq(ChargeItem::getServiceTable, CommonConstants.TableName.MED_MEDICATION_REQUEST)
.eq(ChargeItem::getServiceId, dispenseInventoryDto.getReqId())
.eq(ChargeItem::getTenantId, SecurityUtils.getLoginUser().getTenantId()));
.eq(ChargeItem::getServiceTable, CommonConstants.TableName.MED_MEDICATION_REQUEST)
.eq(ChargeItem::getServiceId, dispenseInventoryDto.getReqId())
.eq(ChargeItem::getTenantId, SecurityUtils.getLoginUser().getTenantId()));
} else if (CommonConstants.TableName.ADM_DEVICE_DEFINITION.equals(dispenseInventoryDto.getItemTable())) {
chargeItem = chargeItemService.getOne(new LambdaQueryWrapper<ChargeItem>()
.eq(ChargeItem::getServiceTable, CommonConstants.TableName.WOR_DEVICE_REQUEST)
.eq(ChargeItem::getServiceId, dispenseInventoryDto.getReqId())
.eq(ChargeItem::getTenantId, SecurityUtils.getLoginUser().getTenantId()));
.eq(ChargeItem::getServiceTable, CommonConstants.TableName.WOR_DEVICE_REQUEST)
.eq(ChargeItem::getServiceId, dispenseInventoryDto.getReqId())
.eq(ChargeItem::getTenantId, SecurityUtils.getLoginUser().getTenantId()));
}
if (chargeItem == null) {
@@ -696,29 +603,29 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
throw new ServiceException("未查找到就诊诊断信息");
}
// 查询付款信息
List<PaymentReconciliation> paymentReconciliationList =
paymentReconciliationService.list(new LambdaQueryWrapper<PaymentReconciliation>()
.eq(PaymentReconciliation::getEncounterId, dispenseInventoryDto.getEncounterId())
.eq(PaymentReconciliation::getTenantId, SecurityUtils.getLoginUser().getTenantId())
.like(PaymentReconciliation::getChargeItemIds, chargeItem.getId())
.eq(PaymentReconciliation::getStatusEnum, PaymentStatus.SUCCESS.getValue())
.eq(PaymentReconciliation::getPatientId, dispenseInventoryDto.getPatientId())
.eq(PaymentReconciliation::getPaymentEnum, PaymentType.PAY.getValue())
.orderByDesc(PaymentReconciliation::getBillDate));
List<PaymentReconciliation> paymentReconciliationList
= paymentReconciliationService.list(new LambdaQueryWrapper<PaymentReconciliation>()
.eq(PaymentReconciliation::getEncounterId, dispenseInventoryDto.getEncounterId())
.eq(PaymentReconciliation::getTenantId, SecurityUtils.getLoginUser().getTenantId())
.like(PaymentReconciliation::getChargeItemIds, chargeItem.getId())
.eq(PaymentReconciliation::getStatusEnum, PaymentStatus.SUCCESS.getValue())
.eq(PaymentReconciliation::getPatientId, dispenseInventoryDto.getPatientId())
.eq(PaymentReconciliation::getPaymentEnum, PaymentType.PAY.getValue())
.orderByDesc(PaymentReconciliation::getBillDate));
if (paymentReconciliationList == null || paymentReconciliationList.isEmpty()) {
throw new ServiceException("未查找到收费信息");
}
PaymentReconciliation paymentReconciliation = paymentReconciliationList.get(0);
// 查询账户信息
Account account = accountService
.getOne(new LambdaQueryWrapper<Account>().eq(Account::getEncounterId, dispenseInventoryDto.getEncounterId())
.eq(Account::getEncounterFlag, Whether.YES.getValue()));
.getOne(new LambdaQueryWrapper<Account>().eq(Account::getEncounterId, dispenseInventoryDto.getEncounterId())
.eq(Account::getEncounterFlag, Whether.YES.getValue()));
if (account == null) {
throw new ServiceException("未查找到账户信息");
}
// 查询合同实体
Contract contract =
contractService.getOne(new LambdaQueryWrapper<Contract>().eq(Contract::getBusNo, account.getContractNo()));
Contract contract
= contractService.getOne(new LambdaQueryWrapper<Contract>().eq(Contract::getBusNo, account.getContractNo()));
if (contract == null) {
throw new ServiceException("未查找到合同信息");
}
@@ -733,13 +640,13 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
}
// 查询就诊id
if (contract.getCategoryEnum().equals(Category.SELF.getValue())
|| contract.getCategoryEnum().equals(Category.PUBLIC.getValue())) {
|| contract.getCategoryEnum().equals(Category.PUBLIC.getValue())) {
medical3505Param.setMdtrtSn(dispenseInventoryDto.getEncounterNo()).setMdtrtSetlType("2");
} else {
// todo虽然是医保挂号但是用什么结算的暂时未知先不做修改
ClinicSettle clinicSettle = clinicSettleService.getOne(new LambdaQueryWrapper<ClinicSettle>()
.in(ClinicSettle::getSetlId, List.of(paymentReconciliation.getYbSettleIds()))
.eq(ClinicSettle::getMedType, encounterDiagnosis.getMedTypeCode()).last(" LIMIT 1"));
.in(ClinicSettle::getSetlId, List.of(paymentReconciliation.getYbSettleIds()))
.eq(ClinicSettle::getMedType, encounterDiagnosis.getMedTypeCode()).last(" LIMIT 1"));
if (clinicSettle != null) {
medical3505Param.setMdtrtSn(clinicSettle.getMdtrtId()).setMdtrtSetlType("1");
} else {
@@ -755,9 +662,9 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
JSONArray medicalTraceNo = new JSONArray();
// 获取追溯码信息
if (dispenseInventoryDto.getTraceNo() != null) {
List<String> traceNoList =
Arrays.stream(dispenseInventoryDto.getTraceNo().split(CommonConstants.Common.COMMA)).map(String::trim)
.filter(s -> !s.isEmpty()).toList();
List<String> traceNoList
= Arrays.stream(dispenseInventoryDto.getTraceNo().split(CommonConstants.Common.COMMA)).map(String::trim)
.filter(s -> !s.isEmpty()).toList();
for (String traceNo : traceNoList) {
Map<String, String> traceNoMap = new HashMap<>();
traceNoMap.put("drug_trac_codg", traceNo);
@@ -765,25 +672,25 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
}
}
medical3505Param.setMedListCodg(dispenseInventoryDto.getYbNo())
.setFixmedinsBchno(dispenseInventoryDto.getReqId().toString())
.setFixmedinsHilistId(dispenseInventoryDto.getItemNo())
.setPrscDrName(dispenseInventoryDto.getPractitionerName())
.setPharName(dispenseInventoryDto.getDispenseName())
.setPharPracCertNo(dispenseInventoryDto.getPharPracCertNo()).setPsnCertType(mdtrtCertType.getValue())
.setManuLotnum(dispenseInventoryDto.getLotNumber()).setManuDate(dispenseInventoryDto.getProductionDate())
.setRtalDocno(dispenseInventoryDto.getDispenseNo())
.setSelRetnCnt(new BigDecimal(dispenseInventoryDto.getDispenseQuantity().toString()))
.setSelRetnTime(dispenseInventoryDto.getDispenseTime()).setExpyEnd(dispenseInventoryDto.getExpirationDate())
.setStooutNo(dispenseInventoryDto.getDispenseNo()).setDrugtracinfo(medicalTraceNo)
.setCertno(dispenseInventoryDto.getIdCard()).setPsnName(dispenseInventoryDto.getPatientName());
.setFixmedinsBchno(dispenseInventoryDto.getReqId().toString())
.setFixmedinsHilistId(dispenseInventoryDto.getItemNo())
.setPrscDrName(dispenseInventoryDto.getPractitionerName())
.setPharName(dispenseInventoryDto.getDispenseName())
.setPharPracCertNo(dispenseInventoryDto.getPharPracCertNo()).setPsnCertType(mdtrtCertType.getValue())
.setManuLotnum(dispenseInventoryDto.getLotNumber()).setManuDate(dispenseInventoryDto.getProductionDate())
.setRtalDocno(dispenseInventoryDto.getDispenseNo())
.setSelRetnCnt(new BigDecimal(dispenseInventoryDto.getDispenseQuantity().toString()))
.setSelRetnTime(dispenseInventoryDto.getDispenseTime()).setExpyEnd(dispenseInventoryDto.getExpirationDate())
.setStooutNo(dispenseInventoryDto.getDispenseNo()).setDrugtracinfo(medicalTraceNo)
.setCertno(dispenseInventoryDto.getIdCard()).setPsnName(dispenseInventoryDto.getPatientName());
if (dispenseInventoryDto.getInventoryUnitCode().equals(dispenseInventoryDto.getDispenseUnitCode())) {
medical3505Param.setTrdnFlag(Whether.YES.getCode());
} else {
medical3505Param.setTrdnFlag(Whether.NO.getCode());
}
// 查看所属医院
String fixmedinsCode =
SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.FIXMEDINS_CODE);
String fixmedinsCode
= SecurityUtils.getLoginUser().getOptionJson().getString(CommonConstants.Option.FIXMEDINS_CODE);
if (dispenseInventoryDto.getPreparerName() == null && HospitalCodeEnum.CCU.getCode().equals(fixmedinsCode)) {
medical3505Param.setSelRetnOpterName(CommonConstants.CCU.DisDeviceDoctorName);
} else {

View File

@@ -55,11 +55,11 @@ public class MedicationDetailsController {
*/
@GetMapping(value = "/amb-practitioner-detail")
public R<?> getAmbPractitionerDetailPage(MedDetailsSearchParam medDetailsSearchParam,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
return medicationDetailsAppService.getAmbPractitionerDetailPage(medDetailsSearchParam, pageNo, pageSize,
searchKey, request);
searchKey, request);
}
/**
@@ -74,11 +74,11 @@ public class MedicationDetailsController {
*/
@GetMapping(value = "/amb-medication-detail")
public R<?> getAmbMedicationDispenseDetailPage(MedDetailsSearchParam medDetailsSearchParam,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
return medicationDetailsAppService.getAmbMedicationDispenseDetailPage(medDetailsSearchParam, pageNo, pageSize,
searchKey, request);
searchKey, request);
}
// /**
@@ -118,10 +118,6 @@ public class MedicationDetailsController {
// return medicationDetailsAppService.getMedRunningAccountPage(medDetailsSearchParam, pageNo, pageSize, searchKey,
// request);
// }
<<<<<<< HEAD
=======
/**
* 发药明细导出
*
@@ -132,13 +128,12 @@ public class MedicationDetailsController {
* @param response 请求数据
* @param request 请求数据
*/
>>>>>>> v1.3
@GetMapping(value = "/excel-out")
public void exportExcel(MedDetailsSearchParam medDetailsSearchParam,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey,
HttpServletRequest request, HttpServletResponse response) {
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey,
HttpServletRequest request, HttpServletResponse response) {
medicationDetailsAppService.makeExcelFile(medDetailsSearchParam, pageNo, pageSize, searchKey, response, request);
}

View File

@@ -3,21 +3,11 @@ package com.openhis.web.pharmacymanage.controller;
import java.util.List;
import javax.annotation.Resource;
<<<<<<< HEAD
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.openhis.web.inhospitalnursestation.dto.AdmissionPageParam;
import com.openhis.web.pharmacymanage.dto.*;
import org.springframework.web.bind.annotation.*;
=======
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
>>>>>>> v1.3
import com.core.common.core.domain.R;
import com.openhis.web.pharmacymanage.appservice.ISummaryDispenseMedicineAppService;
@@ -25,7 +15,6 @@ import com.openhis.web.pharmacymanage.appservice.ISummaryDispenseMedicineAppServ
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
/**
* 住院汇总发药
*
@@ -42,98 +31,6 @@ public class SummaryDispenseMedicineController {
public ISummaryDispenseMedicineAppService medicineSummaryDispenseService;
/**
<<<<<<< HEAD
* 获取页面初始化信息
*
* @return 初始化信息
*/
@GetMapping(value = "/init")
public R<?> medicineDispenseInit() {
return medicineSummaryDispenseService.init();
}
/**
* 分页查询住院病人列表
*
* @param admissionPageParam 查询条件
* @param startTime 开始时间
* @param endTime 结束时间
* @param searchKey 模糊查询关键字
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
* @return 病人列表
*/
@GetMapping("/encounter-list")
public R<?> getEncounterInfoList(AdmissionPageParam admissionPageParam, String startTime, String endTime,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey, HttpServletRequest request) {
return medicineSummaryDispenseService.getEncounterInfoListPage(admissionPageParam, startTime, endTime, pageNo,
pageSize, searchKey, request);
}
/**
* 住院汇总药品
*
* @param searchParam 查询信息
* @param pageNo 当前页码
* @param pageSize 查询条数
* @return 药品汇总
*/
@GetMapping("/medication_summary-list")
public R<?> getSummaryMedicationInfo(MedicineSummarySearchParam searchParam,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize) {
return medicineSummaryDispenseService.getSummaryMedicationInfo(searchParam, pageNo, pageSize);
}
/**
* 住院汇总发药单
*
* @param searchParam 查询条件
* @param startTime 开始时间
* @param endTime 结束时间
* @param searchKey 模糊查询关键字
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
* @return 汇总单汇总
*/
@GetMapping("/from_summary-list")
public R<?> getSummaryFromInfo(FromSummarySearchParam searchParam, String startTime, String endTime,
String searchKey, @RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
return medicineSummaryDispenseService.getSummaryFromInfo(searchParam, startTime, endTime, searchKey, pageNo,
pageSize, request);
}
/**
* 住院药品汇总发药单详细
*
* @param searchParam 查询条件
* @param searchKey 模糊查询关键字
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
*/
@GetMapping("/from-list")
public R<?> getFromInfo(FromSearchParam searchParam, String searchKey,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest request) {
return medicineSummaryDispenseService.getOrderInfo(searchParam, searchKey, pageNo, pageSize, request);
}
/**
* 药品发药
*
* @param dispenseMedicineList 发药信息
* @return 处理结果
*/
@PutMapping("/summary-dispense-medicine")
public R<?> SummaryDispenseMedicine(@RequestBody List<DispenseItemDto> dispenseMedicineList) {
return medicineSummaryDispenseService.SummaryDispenseMedicine(dispenseMedicineList);
=======
* 汇总发药
*
* @param summaryNoList 汇总单列表
@@ -142,66 +39,11 @@ public class SummaryDispenseMedicineController {
@PutMapping("/summary-dispense-medicine")
public R<?> SummaryDispenseMedicine(@RequestBody List<String> summaryNoList) {
return medicineSummaryDispenseService.SummaryDispenseMedicine(summaryNoList);
>>>>>>> v1.3
}
/**
* 作废
*
<<<<<<< HEAD
* @param dispenseMedicineList 作废信息
* @return 处理结果
*/
@PutMapping("/dispense-cancel")
public R<?> dispenseCancel(@RequestBody List<DispenseItemDto> dispenseMedicineList) {
return medicineSummaryDispenseService.dispenseCancel(dispenseMedicineList);
}
/**
* 退药处理
*
* @param dispenseMedicineList 退药清单
* @return 处理结果
*/
@PutMapping("/medicine-return")
public R<?> medicineReturn(@RequestBody List<DispenseItemDto> dispenseMedicineList) {
return medicineSummaryDispenseService.medicineReturn(dispenseMedicineList);
}
/**
* 住院发药
*
* @param searchParam 查询条件
* @param searchKey 模糊查询关键字
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
*/
@GetMapping(value = "/excel-out")
public void excelOut(MedicineSummarySearchParam searchParam,
@RequestParam(value = "pageNo", defaultValue = "1") Integer pageNo,
@RequestParam(value = "pageSize", defaultValue = "10000") Integer pageSize,
@RequestParam(name = "searchKey", required = false) String searchKey,
HttpServletRequest request,HttpServletResponse response) {
medicineSummaryDispenseService.makeExcelFile(searchParam, pageNo, pageSize, searchKey, request, response);
}
/**
* 住院药品汇总
*
* @param searchParam 查询条件
* @param searchKey 模糊查询关键字
* @param pageNo 当前页码
* @param pageSize 查询条数
* @param request 请求数据
*/
=======
* @param summaryNoList 汇总单列表
* @return 处理结果
*/
@@ -245,5 +87,4 @@ public class SummaryDispenseMedicineController {
// HttpServletResponse response) {
// medicineSummaryDispenseService.takeExcelField(searchParam, searchKey, pageNo, pageSize, request, response);
// }
>>>>>>> v1.3
}

View File

@@ -21,29 +21,40 @@ import java.math.BigDecimal;
@Accessors(chain = true)
public class DispenseItemDto {
/** 配药人 */
/**
* 配药人
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long preparerId;
/** 发放ID */
/**
* 发放ID
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long dispenseId;
<<<<<<< HEAD
=======
/** 发药数量 */
/**
* 发药数量
*/
private BigDecimal quantity;
/** 批号 */
/**
* 批号
*/
private String lotNumber;
>>>>>>> v1.3
/** 单据号 */
/**
* 单据号
*/
private String busNo;
/** 追溯码 */
/**
* 追溯码
*/
private String traceNo;
/** 未发原因 */
/**
* 未发原因
*/
private Integer notPerformedReasonEnum;
}

View File

@@ -59,31 +59,19 @@ public class ItemDispenseOrderDto {
/**
* 发放药房
*/
<<<<<<< HEAD
@Excel(name = "发放药房",sort = 3)
=======
@Excel(name = "发放药房", sort = 3)
>>>>>>> v1.3
private String locationName;
/**
* 批次号
*/
<<<<<<< HEAD
@Excel(name = "批次号",sort = 4)
=======
@Excel(name = "批次号", sort = 4)
>>>>>>> v1.3
private String lotNumber;
/**
* 科室
*/
<<<<<<< HEAD
@Excel(name = "科室",sort = 5)
=======
@Excel(name = "科室", sort = 5)
>>>>>>> v1.3
private String departmentName;
/**
@@ -95,21 +83,13 @@ public class ItemDispenseOrderDto {
/**
* 开单医生
*/
<<<<<<< HEAD
@Excel(name = "开单医生",sort = 6)
=======
@Excel(name = "开单医生", sort = 6)
>>>>>>> v1.3
private String doctorName;
/**
* 发药医生
*/
<<<<<<< HEAD
@Excel(name = "发药医生",sort = 7)
=======
@Excel(name = "发药医生", sort = 7)
>>>>>>> v1.3
private String dispenseDoctorName;
/**
@@ -117,54 +97,32 @@ public class ItemDispenseOrderDto {
*/
@Dict(dictCode = "med_category_code")
private String itemType;
<<<<<<< HEAD
@Excel(name = "项目类型",sort = 8)
=======
@Excel(name = "项目类型", sort = 8)
>>>>>>> v1.3
private String itemType_dictText;
/**
* 发药状态
*/
private Integer statusEnum;
<<<<<<< HEAD
@Excel(name = "发药状态",sort = 9)
=======
@Excel(name = "发药状态", sort = 9)
>>>>>>> v1.3
private String statusEnum_enumText;
/**
* 诊断名称
*/
<<<<<<< HEAD
@Excel(name = "诊断名称",sort = 10)
=======
@Excel(name = "诊断名称", sort = 10)
>>>>>>> v1.3
private String conditionName;
/**
* 处方号
*/
<<<<<<< HEAD
@Excel(name = "处方号",sort = 11)
=======
@Excel(name = "处方号", sort = 11)
>>>>>>> v1.3
private String prescriptionNo;
/**
* 项目名称
*/
<<<<<<< HEAD
@Excel(name = "项目名称",sort = 1,width = 30)
=======
@Excel(name = "项目名称", sort = 1, width = 30)
>>>>>>> v1.3
private String itemName;
/**
@@ -175,21 +133,13 @@ public class ItemDispenseOrderDto {
/**
* 规格
*/
<<<<<<< HEAD
@Excel(name = "规格",sort = 2,width = 30)
=======
@Excel(name = "规格", sort = 2, width = 30)
>>>>>>> v1.3
private String totalVolume;
/**
* 单次剂量
*/
<<<<<<< HEAD
@Excel(name = "单次剂量",sort = 12)
=======
@Excel(name = "单次剂量", sort = 12)
>>>>>>> v1.3
private BigDecimal dose;
/**
@@ -202,11 +152,7 @@ public class ItemDispenseOrderDto {
*/
@Dict(dictCode = "rate_code")
private String rateCode;
<<<<<<< HEAD
@Excel(name = "用药频次",sort = 13)
=======
@Excel(name = "用药频次", sort = 13)
>>>>>>> v1.3
private String rateCode_dictText;
/**
@@ -214,60 +160,35 @@ public class ItemDispenseOrderDto {
*/
@Dict(dictCode = "method_code")
private String methodCode;
<<<<<<< HEAD
@Excel(name = "用法",sort = 14)
=======
@Excel(name = "用法", sort = 14)
>>>>>>> v1.3
private String methodCode_dictText;
/**
* 剂量单位
*/
@Dict(dictCode = "unit_code")
private String doseUnitCode;
<<<<<<< HEAD
@Excel(name = "剂量单位",sort = 15)
=======
@Excel(name = "剂量单位", sort = 15)
>>>>>>> v1.3
private String doseUnitCode_dictText;
/**
* 单位
*/
@Dict(dictCode = "unit_code")
private String unitCode;
<<<<<<< HEAD
@Excel(name = "单位",sort = 16)
=======
@Excel(name = "单位", sort = 16)
>>>>>>> v1.3
private String unitCode_dictText;
/**
* 单次发药数
*/
<<<<<<< HEAD
@Excel(name = "单次发药数",sort = 17)
=======
@Excel(name = "单次发药数", sort = 17)
>>>>>>> v1.3
private Integer dispensePerQuantity;
/**
* 每次发药供应天数
*/
<<<<<<< HEAD
@Excel(name = "每次发药供应天数",sort = 18)
=======
@Excel(name = "每次发药供应天数", sort = 18)
>>>>>>> v1.3
private Integer dispensePerDuration;
/**
@@ -278,32 +199,19 @@ public class ItemDispenseOrderDto {
/**
* 数量
*/
<<<<<<< HEAD
@Excel(name = "数量",sort = 19)
private Integer quantity;
=======
@Excel(name = "数量", sort = 19)
private BigDecimal quantity;
>>>>>>> v1.3
/**
* 单价
*/
<<<<<<< HEAD
@Excel(name = "单价",sort = 20)
=======
@Excel(name = "单价", sort = 20)
>>>>>>> v1.3
private BigDecimal unitPrice;
/**
* 金额
*/
<<<<<<< HEAD
@Excel(name = "金额",sort = 21)
=======
@Excel(name = "金额", sort = 21)
>>>>>>> v1.3
private BigDecimal totalPrice;
/**
* 组合号
@@ -315,66 +223,46 @@ public class ItemDispenseOrderDto {
* 就诊NO
*/
@JsonSerialize(using = ToStringSerializer.class)
<<<<<<< HEAD
@Excel(name = "就诊NO",sort = 24)
=======
@Excel(name = "就诊NO", sort = 24)
>>>>>>> v1.3
private String encounterBusNo;
/** 开具日期 */
/**
* 开具日期
*/
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
<<<<<<< HEAD
@Excel(name = "开具日期",sort = 25, dateFormat = "yyyy-MM-dd HH:mm:ss",width = 25)
private Date reqAuthoredTime;
/** 皮试标志 */
@Excel(name = "皮试标志",sort = 26)
private Integer skinTestFlag;
/** 中药标识 */
@Excel(name = "中药标识",sort = 27)
private Integer tcmFlag;
/** 所在表 */
@Excel(name = "所在表",sort = 28,width = 30)
=======
@Excel(name = "开具日期", sort = 25, dateFormat = "yyyy-MM-dd HH:mm:ss", width = 25)
private Date reqAuthoredTime;
/** 接收皮试标志 */
/**
* 接收皮试标志
*/
@Excel(name = "皮试标志", sort = 26)
private String skinTestFlagDesc;
private Integer skinTestFlag;
/** 接收中药标识 */
/**
* 接收中药标识
*/
@Excel(name = "中药标识", sort = 27)
private String tcmFlagDesc;
private Integer tcmFlag;
/** 所在表 */
/**
* 所在表
*/
@Excel(name = "所在表", sort = 28, width = 30)
>>>>>>> v1.3
private String itemTable;
/**
* 生产厂家
*/
<<<<<<< HEAD
@Excel(name = "生产厂家",sort = 22,width = 35)
=======
@Excel(name = "生产厂家", sort = 22, width = 35)
>>>>>>> v1.3
private String manufacturerText;
/**
* 追溯码
*/
<<<<<<< HEAD
@Excel(name = "追溯码",sort = 23)
=======
@Excel(name = "追溯码", sort = 23)
>>>>>>> v1.3
private String traceNo;
/**
@@ -384,12 +272,14 @@ public class ItemDispenseOrderDto {
private String medTypeCode;
private String medTypeCode_dictText;
/** 输液标志 */
/**
* 输液标志
*/
private Integer injectFlag;
/** 拆分属性 */
/**
* 拆分属性
*/
private Integer partAttributeEnum;
/**

View File

@@ -1,11 +1,5 @@
package com.openhis.web.pharmacymanage.dto;
<<<<<<< HEAD
import java.math.BigDecimal;
import java.util.Date;
=======
>>>>>>> v1.3
import com.core.common.annotation.Excel;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@@ -22,13 +16,10 @@ import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
public class MedDetailedAccountPageDto {
<<<<<<< HEAD
/** 门诊号 */
=======
/**
* 门诊号
*/
>>>>>>> v1.3
private String outpatientNo;
/**
@@ -41,37 +32,6 @@ public class MedDetailedAccountPageDto {
*/
private String patientName;
<<<<<<< HEAD
/** 项目类别 */
private String pinYin;
/** 接收发药数量 */
@Excel(name = "发药数量")
private String dispenseQuantitystr;
/** 接收发药金额 */
@Excel(name = "发药金额")
private String dispensePricestr;
/** 接收退药数量 */
@Excel(name = "退药数量")
private String refundQuantitystr;
/** 接收退药金额 */
@Excel(name = "退药金额")
private String refundPricestr;
/** 发药人 */
@JsonSerialize(using = ToStringSerializer.class)
private String practitionerId;
/** 发药人名称 */
@Excel(name = "发药人")
private String practitionerName;
/** 药品项目 */
@Excel(name = "药品项目")
=======
/**
* 接收发药数量
*/
@@ -117,7 +77,6 @@ public class MedDetailedAccountPageDto {
* 药品项目
*/
@Excel(name = "药品项目", sort = 3)
>>>>>>> v1.3
private String medicationName;
/**
@@ -125,22 +84,6 @@ public class MedDetailedAccountPageDto {
*/
private String pyStr;
<<<<<<< HEAD
/** 项目编码 */
@Excel(name = "药品编码")
private String busNo;
/** 发药编码 */
@Excel(name = "发药单号")
private String dispenseNo;
/** 医保编码 */
@Excel(name = "医保编码")
private String ybNo;
/** 规格 */
@Excel(name = "规格")
=======
/**
* 项目编码
*/
@@ -163,7 +106,6 @@ public class MedDetailedAccountPageDto {
* 规格
*/
@Excel(name = "规格", sort = 7, width = 30)
>>>>>>> v1.3
private String totalVolume;
/**
@@ -189,18 +131,6 @@ public class MedDetailedAccountPageDto {
* 成本金额
*/
<<<<<<< HEAD
/** 批号 */
@Excel(name = "生产批号")
private String lotNumber;
/** 厂商 */
@Excel(name = "厂家/产地")
private String manufacturerText;
/** 供应商 */
@Excel(name = "供应商")
=======
private BigDecimal costPrice;
/**
@@ -219,7 +149,6 @@ public class MedDetailedAccountPageDto {
* 供应商
*/
@Excel(name = "供应商", sort = 15, width = 35)
>>>>>>> v1.3
private String supplierName;
/**
@@ -236,14 +165,6 @@ public class MedDetailedAccountPageDto {
private String refundUnitCode;
private String refundUnitCode_dictText;
<<<<<<< HEAD
/** 发药时间 */
@Excel(name = "发药时间", dateFormat="yyyy-MM-dd HH:mm:ss")
private Date dispenseTime;
/** 项目所在表 */
// @Excel(name = "项目类别")
=======
/**
* 发药时间
*/
@@ -254,6 +175,5 @@ public class MedDetailedAccountPageDto {
* 项目所在表
*/
@Excel(name = "项目类别", sort = 4)
>>>>>>> v1.3
private String itemTable;
}

View File

@@ -15,36 +15,53 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
public class MedDetailsSearchParam {
/** 发药时间 */
/**
* 发药时间
*/
private Date dispenseTime;
/** 药房 */
/**
* 药房
*/
private Long locationId;
/** 患者姓名 */
/**
* 患者姓名
*/
private String patientName;
/** 发药人 */
/**
* 发药人
*/
private Long practitionerId;
/** 药品名称 */
/**
* 药品名称
*/
private String medicationName;
/** 药品项目(药品编码) */
/**
* 药品项目(药品编码)
*/
private String busNo;
/** 出院状态 */
/**
* 出院状态
*/
private Integer dischargeStatus;
/** 门诊住院flg */
/**
* 门诊住院flg
*/
private Integer flag;
/** 项目所在表 */
/**
* 项目所在表
*/
private String itemTable;
<<<<<<< HEAD
=======
/** 统计类型 */
/**
* 统计类型
*/
private Integer inventoryScope;
>>>>>>> v1.3
}

View File

@@ -5,10 +5,6 @@ package com.openhis.web.pharmacymanage.dto;
import java.math.BigDecimal;
import java.util.Date;
<<<<<<< HEAD
import java.util.List;
=======
>>>>>>> v1.3
import com.core.common.annotation.Excel;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@@ -27,17 +23,22 @@ import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
public class MedicineSummaryDto {
/**
* 单据号
*/
@Excel(name = "单据号", sort = 8, width = 35)
private String busNo;
/** 供应请求id */
/**
* 供应请求id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long requestId;
/** 供应发放id */
/**
* 供应发放id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long deliveryId;
@@ -51,7 +52,9 @@ public class MedicineSummaryDto {
@Excel(name = "项目名", sort = 2, width = 40)
private String itemName;
/** 项目id */
/**
* 项目id
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long itemId;
@@ -91,33 +94,45 @@ public class MedicineSummaryDto {
private String unitCode;
private String unitCode_dictText;
/** 常规单位 */
/**
* 常规单位
*/
@Dict(dictCode = "unit_code")
private String maxUnitCode;
private String maxUnitCode_dictText;
/** 最小单位 */
/**
* 最小单位
*/
@Dict(dictCode = "unit_code")
private String minUnitCode;
private String minUnitCode_dictText;
/** 发放地点 */
/**
* 发放地点
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long sourceLocationId;
@Excel(name = "发放地点", sort = 6)
private String sourceLocationName;
/** 申请科室 */
/**
* 申请科室
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long orgId;
private String orgName;
/** 领药人 */
/**
* 领药人
*/
@JsonSerialize(using = ToStringSerializer.class)
private Long applicantId;
private String applicantName;
/** 申请时间 */
/**
* 申请时间
*/
private Date applyTime;
/**
@@ -126,6 +141,8 @@ public class MedicineSummaryDto {
private Integer statusEnum;
private String statusEnum_enumText;
/** 患者信息 */
/**
* 患者信息
*/
private String patientInfo;
}

View File

@@ -22,31 +22,19 @@ public interface MedicationDetailsMapper {
* @param queryWrapper 查询条件
* @param completed 发药状态:已发药
* @param refunded 发药状态:已退药
<<<<<<< HEAD
* @param dispenseEnum 统计类型
* @param medMedicationDefinition 药品
* @param admDeviceDefinition 耗材
=======
* @param statisticalType 统计类型
* @param flg 1:住院 2门诊
* @param medMedicationDefinition 药品
* @param admDeviceDefinition 耗材
* @param costEnum 命中条件枚举:产品批号进价
>>>>>>> v1.3
* @return 门诊人员发药明细表
*/
Page<MedDetailedAccountPageDto> selectAmbPractitionerDetailPage(@Param("page") Page<MedDetailedAccountPageDto> page,
@Param(Constants.WRAPPER) QueryWrapper<MedDetailsSearchParam> queryWrapper,
@Param("completed") Integer completed, @Param("agree") Integer agree, @Param("refunded") Integer refunded,
<<<<<<< HEAD
@Param("dispenseEnum") Integer dispenseEnum, @Param("flg") Integer flg,
@Param("medMedicationDefinition") String medMedicationDefinition,
@Param("admDeviceDefinition") String admDeviceDefinition);
=======
@Param("statisticalType") Integer statisticalType, @Param("flg") Integer flg,
@Param("medMedicationDefinition") String medMedicationDefinition,
@Param("admDeviceDefinition") String admDeviceDefinition, @Param("costEnum") String costEnum);
>>>>>>> v1.3
@Param(Constants.WRAPPER) QueryWrapper<MedDetailsSearchParam> queryWrapper,
@Param("completed") Integer completed, @Param("agree") Integer agree, @Param("refunded") Integer refunded,
@Param("statisticalType") Integer statisticalType, @Param("flg") Integer flg,
@Param("medMedicationDefinition") String medMedicationDefinition,
@Param("admDeviceDefinition") String admDeviceDefinition, @Param("costEnum") String costEnum);
// /**
// * 门诊发药明细流水账
@@ -62,5 +50,4 @@ public interface MedicationDetailsMapper {
// @Param("page") Page<MedDetailedAccountPageDto> page,
// @Param(Constants.WRAPPER) QueryWrapper<MedDetailsSearchParam> queryWrapper, @Param("amb") Integer amb,
// @Param("completed") Integer completed, @Param("refunded") Integer refunded)
}

View File

@@ -27,11 +27,7 @@ public interface ReturnMedicineMapper {
* @return 退药患者分页列表
*/
Page<EncounterInfoDto> selectEncounterInfoListPage(@Param("page") Page<EncounterInfoDto> page,
<<<<<<< HEAD
@Param(Constants.WRAPPER) QueryWrapper<EncounterInfoDto> queryWrapper, @Param("amb") Integer amb);
=======
@Param(Constants.WRAPPER) QueryWrapper<EncounterInfoDto> queryWrapper);
>>>>>>> v1.3
@Param(Constants.WRAPPER) QueryWrapper<EncounterInfoDto> queryWrapper);
/**
* 申请退药清单查询
@@ -47,10 +43,10 @@ public interface ReturnMedicineMapper {
* @return 申请退药清单
*/
List<ReturnMedicineInfoDto> selectReturnMedicineInfo(@Param("encounterId") Long encounterId,
@Param("worDeviceRequest") String worDeviceRequest, @Param("medMedicationRequest") String medMedicationRequest,
@Param("medicine") Integer medicine, @Param("device") Integer device,
@Param("refundStatus") Integer refundStatus, @Param("pendingRefund") Integer pendingRefund,
@Param("refunded") Integer refunded);
@Param("worDeviceRequest") String worDeviceRequest, @Param("medMedicationRequest") String medMedicationRequest,
@Param("medicine") Integer medicine, @Param("device") Integer device,
@Param("refundStatus") Integer refundStatus, @Param("pendingRefund") Integer pendingRefund,
@Param("refunded") Integer refunded);
/**
* 库存信息查询
@@ -62,13 +58,13 @@ public interface ReturnMedicineMapper {
* @return 待发药信息
*/
List<UnDispenseInventoryDto> selectInventoryInfoList(@Param("devDispenseIdList") List<Long> devDispenseIdList,
@Param("medDispenseIdList") List<Long> medDispenseIdList,
@Param("medMedicationDefinition") String medMedicationDefinition,
@Param("admDeviceDefinition") String admDeviceDefinition);
@Param("medDispenseIdList") List<Long> medDispenseIdList,
@Param("medMedicationDefinition") String medMedicationDefinition,
@Param("admDeviceDefinition") String admDeviceDefinition);
/**
* 退药详细信息查询
*
*
* @param devDispenseIdList 耗材发放ID列表
* @param medDispenseIdList 药品发放ID列表
* @param medMedicationDefinition 药品定义表
@@ -76,7 +72,7 @@ public interface ReturnMedicineMapper {
* @return 退药信息
*/
List<DispenseInventoryDto> selectReturnItemDetail(@Param("devDispenseIdList") List<Long> devDispenseIdList,
@Param("medDispenseIdList") List<Long> medDispenseIdList,
@Param("medMedicationDefinition") String medMedicationDefinition,
@Param("admDeviceDefinition") String admDeviceDefinition);
@Param("medDispenseIdList") List<Long> medDispenseIdList,
@Param("medMedicationDefinition") String medMedicationDefinition,
@Param("admDeviceDefinition") String admDeviceDefinition);
}

View File

@@ -3,37 +3,8 @@
*/
package com.openhis.web.pharmacymanage.mapper;
<<<<<<< HEAD
import com.openhis.web.pharmacymanage.dto.FromSearchParam;
import org.apache.ibatis.annotations.Param;
=======
>>>>>>> v1.3
import org.springframework.stereotype.Repository;
@Repository
<<<<<<< HEAD
public interface SummaryDispenseMedicineMapper {
/**
* 汇总药品信息列表查询
*
* @param page 分页
* @param queryWrapper 查询条件
* @return 汇总药品信息
*/
Page<MedicineSummaryDto> selectMedicationSummaryInfo(@Param("page") Page<MedicineSummaryDto> page,
@Param(Constants.WRAPPER) QueryWrapper<MedicineSummarySearchParam> queryWrapper);
/**
* 汇总药品信息列表查询
*
* @param page 分页
* @param queryWrapper 查询条件
* @return 汇总药品信息
*/
Page<MedicineSummaryDto> selectOrderInfo(@Param("page") Page<MedicineSummaryDto> page,
@Param(Constants.WRAPPER) QueryWrapper<FromSearchParam> queryWrapper);
}
=======
public interface SummaryDispenseMedicineMapper {}
>>>>>>> v1.3