up
This commit is contained in:
@@ -1,19 +1,5 @@
|
|||||||
package com.openhis.web.pharmacymanage.appservice.impl;
|
package com.openhis.web.pharmacymanage.appservice.impl;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
import java.math.RoundingMode;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletRequest;
|
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
|
||||||
import org.springframework.stereotype.Service;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.core.common.core.domain.R;
|
import com.core.common.core.domain.R;
|
||||||
@@ -34,6 +20,18 @@ import com.openhis.web.pharmacymanage.dto.*;
|
|||||||
import com.openhis.web.pharmacymanage.mapper.WesternMedicineDispenseMapper;
|
import com.openhis.web.pharmacymanage.mapper.WesternMedicineDispenseMapper;
|
||||||
import com.openhis.workflow.domain.InventoryItem;
|
import com.openhis.workflow.domain.InventoryItem;
|
||||||
import com.openhis.workflow.service.IInventoryItemService;
|
import com.openhis.workflow.service.IInventoryItemService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletRequest;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 西药发放 应用实现类
|
* 西药发放 应用实现类
|
||||||
@@ -42,7 +40,7 @@ import com.openhis.workflow.service.IInventoryItemService;
|
|||||||
* @date 2025/3/14
|
* @date 2025/3/14
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDispenseAppService {
|
public class IWesternMedicineDispenseAppServiceImpl implements IWesternMedicineDispenseAppService {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IOrganizationService iOrganizationService;
|
private IOrganizationService iOrganizationService;
|
||||||
@@ -69,15 +67,14 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
|
|||||||
// 获取科室下拉选列表
|
// 获取科室下拉选列表
|
||||||
List<Organization> organizationList = iOrganizationService.getList(OrganizationClass.CLINIC.getValue());
|
List<Organization> organizationList = iOrganizationService.getList(OrganizationClass.CLINIC.getValue());
|
||||||
List<PageInitDto.DepartmentOption> organizationOptions = organizationList.stream()
|
List<PageInitDto.DepartmentOption> organizationOptions = organizationList.stream()
|
||||||
.map(organization -> new PageInitDto.DepartmentOption(organization.getId(), organization.getName()))
|
.map(organization -> new PageInitDto.DepartmentOption(organization.getId(),
|
||||||
.collect(Collectors.toList());
|
organization.getName())).collect(Collectors.toList());
|
||||||
|
|
||||||
// 未发药原因下拉选列表
|
// 未发药原因下拉选列表
|
||||||
List<PageInitDto.NotPerformedReasonOption> notPerformedReasonOptions =
|
List<PageInitDto.NotPerformedReasonOption> notPerformedReasonOptions =
|
||||||
Stream.of(NotPerformedReasonEnum.values())
|
Stream.of(NotPerformedReasonEnum.values()).map(notPerformedReason ->
|
||||||
.map(notPerformedReason -> new PageInitDto.NotPerformedReasonOption(notPerformedReason.getValue(),
|
new PageInitDto.NotPerformedReasonOption(notPerformedReason.getValue(),
|
||||||
notPerformedReason.getInfo()))
|
notPerformedReason.getInfo())).collect(Collectors.toList());
|
||||||
.collect(Collectors.toList());
|
|
||||||
|
|
||||||
initDto.setDepartmentOptions(organizationOptions).setNotPerformedReasonOptions(notPerformedReasonOptions);
|
initDto.setDepartmentOptions(organizationOptions).setNotPerformedReasonOptions(notPerformedReasonOptions);
|
||||||
return R.ok(initDto);
|
return R.ok(initDto);
|
||||||
@@ -93,32 +90,33 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
|
|||||||
* @return 就诊病人列表
|
* @return 就诊病人列表
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public R<?> getEncounterInfoListPage(EncounterInfoSearchParam encounterInfoSearchParam, Integer pageNo,
|
public R<?> getEncounterInfoListPage(EncounterInfoSearchParam encounterInfoSearchParam,
|
||||||
Integer pageSize, HttpServletRequest request) {
|
Integer pageNo,
|
||||||
|
Integer pageSize,
|
||||||
|
HttpServletRequest request) {
|
||||||
|
|
||||||
// 查询条件设定
|
// 查询条件设定
|
||||||
String condition = encounterInfoSearchParam.getCondition();
|
String condition = encounterInfoSearchParam.getCondition();
|
||||||
if (!condition.isEmpty()) {
|
if (!condition.isEmpty()){
|
||||||
Pattern pattern = Pattern.compile(".*\\d.*");
|
Pattern pattern = Pattern.compile(".*\\d.*");
|
||||||
Matcher matcher = pattern.matcher(encounterInfoSearchParam.getCondition());
|
Matcher matcher = pattern.matcher(encounterInfoSearchParam.getCondition());
|
||||||
encounterInfoSearchParam.setIdCard(matcher.find() ? condition : "");
|
encounterInfoSearchParam.setIdCard(matcher.find() ? condition:"");
|
||||||
encounterInfoSearchParam.setPatientName(!matcher.find() ? condition : "");
|
encounterInfoSearchParam.setPatientName(!matcher.find() ? condition:"");
|
||||||
}
|
}
|
||||||
|
|
||||||
// 构建查询条件
|
// 构建查询条件
|
||||||
QueryWrapper<EncounterInfoSearchParam> queryWrapper =
|
QueryWrapper<EncounterInfoSearchParam> queryWrapper =
|
||||||
HisQueryUtils.buildQueryWrapper(encounterInfoSearchParam, null, null, request);
|
HisQueryUtils.buildQueryWrapper(encounterInfoSearchParam,null,null, request);
|
||||||
|
|
||||||
// 查询就诊病人列表
|
// 查询就诊病人列表
|
||||||
Page<EncounterInfoPageDto> encounterInfoPageDto =
|
Page<EncounterInfoPageDto> encounterInfoPageDto = westernMedicineDispenseMapper.selectEncounterInfoListPage(
|
||||||
westernMedicineDispenseMapper.selectEncounterInfoListPage(new Page<>(pageNo, pageSize), queryWrapper);
|
new Page<>(pageNo, pageSize), queryWrapper);
|
||||||
|
|
||||||
return R.ok(encounterInfoPageDto);
|
return R.ok(encounterInfoPageDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询处方单列表
|
* 查询处方单列表
|
||||||
*
|
|
||||||
* @param encounterId 就诊号
|
* @param encounterId 就诊号
|
||||||
* @return 处方单列表
|
* @return 处方单列表
|
||||||
*/
|
*/
|
||||||
@@ -126,15 +124,15 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
|
|||||||
public R<?> getPrescriptionInfo(Long encounterId) {
|
public R<?> getPrescriptionInfo(Long encounterId) {
|
||||||
|
|
||||||
// 患者基本信息查询
|
// 患者基本信息查询
|
||||||
PrescriptionPatientInfoDto prescriptionPatientInfoDto =
|
PrescriptionPatientInfoDto prescriptionPatientInfoDto = westernMedicineDispenseMapper.
|
||||||
westernMedicineDispenseMapper.selectPrescriptionPatientInfo(encounterId);
|
selectPrescriptionPatientInfo(encounterId);
|
||||||
|
|
||||||
// 处方单信息查询
|
// 处方单信息查询
|
||||||
List<PrescriptionMedicineInfoDto> prescriptionMedicineInfoList =
|
List<PrescriptionMedicineInfoDto> prescriptionMedicineInfoList = westernMedicineDispenseMapper.
|
||||||
westernMedicineDispenseMapper.selectPrescriptionMedicineInfoList(encounterId);
|
selectPrescriptionMedicineInfoList(encounterId);
|
||||||
|
|
||||||
// 计算合计金额
|
// 计算合计金额
|
||||||
if (!prescriptionMedicineInfoList.isEmpty()) {
|
if(!prescriptionMedicineInfoList.isEmpty()) {
|
||||||
BigDecimal totalPrice = new BigDecimal(0);
|
BigDecimal totalPrice = new BigDecimal(0);
|
||||||
for (PrescriptionMedicineInfoDto item : prescriptionMedicineInfoList) {
|
for (PrescriptionMedicineInfoDto item : prescriptionMedicineInfoList) {
|
||||||
totalPrice.add(item.getTotal_price());
|
totalPrice.add(item.getTotal_price());
|
||||||
@@ -151,7 +149,6 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 处方单核对发药
|
* 处方单核对发药
|
||||||
*
|
|
||||||
* @param prescriptionNo 处方号
|
* @param prescriptionNo 处方号
|
||||||
* @return 处理结果
|
* @return 处理结果
|
||||||
*/
|
*/
|
||||||
@@ -164,9 +161,9 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
|
|||||||
boolean iInventoryItemUpdFlg = true;
|
boolean iInventoryItemUpdFlg = true;
|
||||||
|
|
||||||
// 获取药品待发放和库存信息
|
// 获取药品待发放和库存信息
|
||||||
List<DispenseInventoryDto> dispenseInventoryList =
|
List<DispenseInventoryDto> dispenseInventoryList = westernMedicineDispenseMapper.
|
||||||
westernMedicineDispenseMapper.selectDispenseInventoryInfoByPrescriptionNo(prescriptionNo);
|
selectDispenseInventoryInfoByPrescriptionNo(prescriptionNo);
|
||||||
if (!dispenseInventoryList.isEmpty()) {
|
if(!dispenseInventoryList.isEmpty()){
|
||||||
MedicationDispense medicationDispense;
|
MedicationDispense medicationDispense;
|
||||||
InventoryItem inventoryItem;
|
InventoryItem inventoryItem;
|
||||||
for (DispenseInventoryDto dispenseInventoryDto : dispenseInventoryList) {
|
for (DispenseInventoryDto dispenseInventoryDto : dispenseInventoryList) {
|
||||||
@@ -192,23 +189,28 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
|
|||||||
// 库存表项目设定
|
// 库存表项目设定
|
||||||
inventoryItem = new InventoryItem();
|
inventoryItem = new InventoryItem();
|
||||||
// 库存数量
|
// 库存数量
|
||||||
if (dispenseInventoryDto.getDispenseUnitCode()
|
if (dispenseInventoryDto.getDispenseUnitCode().equals(dispenseInventoryDto.
|
||||||
.equals(dispenseInventoryDto.getInventoryBaseUnitCode())) {
|
getInventoryBaseUnitCode())) {
|
||||||
|
|
||||||
// id
|
// id
|
||||||
inventoryItem.setId(dispenseInventoryDto.getInventoryId());
|
inventoryItem.setId(dispenseInventoryDto.getInventoryId());
|
||||||
// 包装数量
|
// 包装数量
|
||||||
inventoryItem.setBaseQuantity(new BigDecimal(dispenseInventoryDto.getDispenseQuantity()));
|
inventoryItem.setBaseQuantity(dispenseInventoryDto.getInventoryBaseQuantity().
|
||||||
|
min(new BigDecimal(dispenseInventoryDto.getDispenseQuantity())));
|
||||||
// 拆零数量(拆零比×包装数量)
|
// 拆零数量(拆零比×包装数量)
|
||||||
inventoryItem.setMinQuantity(dispenseInventoryDto.getPartPercent()
|
inventoryItem.setMinQuantity(dispenseInventoryDto.getInventoryMinQuantity().
|
||||||
.multiply(new BigDecimal(dispenseInventoryDto.getDispenseQuantity())));
|
min(dispenseInventoryDto.getPartPercent().multiply(
|
||||||
} else if (dispenseInventoryDto.getDispenseUnitCode()
|
new BigDecimal(dispenseInventoryDto.getDispenseQuantity()))));
|
||||||
.equals(dispenseInventoryDto.getInventoryMinUnitCode())) {
|
} else if (dispenseInventoryDto.getDispenseUnitCode().equals(dispenseInventoryDto.
|
||||||
|
getInventoryMinUnitCode())) {
|
||||||
|
// id
|
||||||
|
inventoryItem.setId(dispenseInventoryDto.getInventoryId());
|
||||||
// 拆零数量
|
// 拆零数量
|
||||||
inventoryItem.setMinQuantity(new BigDecimal(dispenseInventoryDto.getDispenseQuantity()));
|
inventoryItem.setMinQuantity(dispenseInventoryDto.getInventoryMinQuantity().min(
|
||||||
|
new BigDecimal(dispenseInventoryDto.getDispenseQuantity())));
|
||||||
// 包装数量(拆零数量÷拆零比)
|
// 包装数量(拆零数量÷拆零比)
|
||||||
inventoryItem.setBaseQuantity(new BigDecimal(dispenseInventoryDto.getDispenseQuantity())
|
inventoryItem.setBaseQuantity(dispenseInventoryDto.getInventoryBaseQuantity().min(
|
||||||
.divide(dispenseInventoryDto.getPartPercent(), RoundingMode.HALF_UP));
|
new BigDecimal(dispenseInventoryDto.getDispenseQuantity()).
|
||||||
|
divide(dispenseInventoryDto.getPartPercent(),RoundingMode.HALF_UP)));
|
||||||
}
|
}
|
||||||
inventoryItemList.add(inventoryItem);
|
inventoryItemList.add(inventoryItem);
|
||||||
}
|
}
|
||||||
@@ -218,28 +220,28 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
|
|||||||
// 库存更新
|
// 库存更新
|
||||||
iInventoryItemUpdFlg = iInventoryItemService.updateBatchById(inventoryItemList);
|
iInventoryItemUpdFlg = iInventoryItemService.updateBatchById(inventoryItemList);
|
||||||
}
|
}
|
||||||
return iMedicationDispenseUpdFlg && iInventoryItemUpdFlg
|
return iMedicationDispenseUpdFlg && iInventoryItemUpdFlg ?
|
||||||
? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null))
|
R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null))
|
||||||
: R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00010, null));
|
: R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00010, null));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 作废
|
* 作废
|
||||||
*
|
|
||||||
* @param prescriptionNo 处方号
|
* @param prescriptionNo 处方号
|
||||||
* @param notPerformedReasonEnum 未发药原因
|
* @param notPerformedReasonEnum 未发药原因
|
||||||
* @return 处理结果
|
* @return 处理结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public R<?> medicineCancel(String prescriptionNo, Integer notPerformedReasonEnum) {
|
public R<?> medicineCancel(String prescriptionNo,
|
||||||
|
Integer notPerformedReasonEnum) {
|
||||||
|
|
||||||
List<MedicationDispense> medicationDispenseList = new ArrayList<>();
|
List<MedicationDispense> medicationDispenseList = new ArrayList<>();
|
||||||
boolean iMedicationDispenseUpdFlg = true;
|
boolean iMedicationDispenseUpdFlg = true;
|
||||||
|
|
||||||
// 获取药品待发放记录
|
// 获取药品待发放记录
|
||||||
List<DispenseInventoryDto> dispenseInventoryList =
|
List<DispenseInventoryDto> dispenseInventoryList = westernMedicineDispenseMapper.
|
||||||
westernMedicineDispenseMapper.selectDispenseInventoryInfoByPrescriptionNo(prescriptionNo);
|
selectDispenseInventoryInfoByPrescriptionNo(prescriptionNo);
|
||||||
if (!dispenseInventoryList.isEmpty()) {
|
if(!dispenseInventoryList.isEmpty()){
|
||||||
MedicationDispense medicationDispense;
|
MedicationDispense medicationDispense;
|
||||||
for (DispenseInventoryDto dispenseInventoryDto : dispenseInventoryList) {
|
for (DispenseInventoryDto dispenseInventoryDto : dispenseInventoryList) {
|
||||||
|
|
||||||
@@ -260,7 +262,8 @@ public class WesternMedicineDispenseAppServiceImpl implements IWesternMedicineDi
|
|||||||
// 药品发放更新
|
// 药品发放更新
|
||||||
iMedicationDispenseUpdFlg = iMedicationDispenseService.updateBatchById(medicationDispenseList);
|
iMedicationDispenseUpdFlg = iMedicationDispenseService.updateBatchById(medicationDispenseList);
|
||||||
}
|
}
|
||||||
return iMedicationDispenseUpdFlg ? R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null))
|
return iMedicationDispenseUpdFlg?
|
||||||
: R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00010, null));
|
R.ok(null, MessageUtils.createMessage(PromptMsgConstant.Common.M00004, null))
|
||||||
|
: R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00010, null));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,12 +3,12 @@
|
|||||||
*/
|
*/
|
||||||
package com.openhis.web.pharmacymanage.dto;
|
package com.openhis.web.pharmacymanage.dto;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.math.BigDecimal;
|
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 就诊人员列表
|
* 就诊人员列表
|
||||||
*
|
*
|
||||||
@@ -24,6 +24,9 @@ public class PrescriptionMedicineInfoDto implements Serializable {
|
|||||||
/** 科室 */
|
/** 科室 */
|
||||||
private String departmentName;
|
private String departmentName;
|
||||||
|
|
||||||
|
/** 项目类型 */
|
||||||
|
private String itemType;
|
||||||
|
|
||||||
/** 开单医生 */
|
/** 开单医生 */
|
||||||
private String doctorName;
|
private String doctorName;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user