86门诊医生站-》西药方
This commit is contained in:
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.core.common.enums.DelFlag;
|
||||
import com.core.common.utils.AssignSeqUtil;
|
||||
import com.core.common.utils.DateUtils;
|
||||
import com.core.common.utils.SecurityUtils;
|
||||
import com.openhis.common.enums.AssignSeqEnum;
|
||||
import com.openhis.common.enums.DispenseStatus;
|
||||
import com.openhis.medication.domain.MedicationDispense;
|
||||
@@ -29,301 +30,344 @@ import java.util.List;
|
||||
*/
|
||||
@Service
|
||||
public class MedicationDispenseServiceImpl extends ServiceImpl<MedicationDispenseMapper, MedicationDispense>
|
||||
implements IMedicationDispenseService {
|
||||
implements IMedicationDispenseService {
|
||||
|
||||
@Resource
|
||||
AssignSeqUtil assignSeqUtil;
|
||||
@Resource
|
||||
AssignSeqUtil assignSeqUtil;
|
||||
|
||||
/**
|
||||
* 处理药品发放信息
|
||||
*
|
||||
* @param medicationRequest 药品请求信息
|
||||
* @param dbOpType db操作类型
|
||||
* @return 发放id
|
||||
*/
|
||||
@Override
|
||||
public Long handleMedicationDispense(MedicationRequest medicationRequest, String dbOpType) {
|
||||
MedicationDispense medicationDispense = new MedicationDispense();
|
||||
// 药品发放id
|
||||
medicationDispense.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_DIS_NO.getPrefix(), 4));
|
||||
// 药品发放状态
|
||||
medicationDispense.setStatusEnum(DispenseStatus.DRAFT.getValue());
|
||||
// 状态变更时间
|
||||
medicationDispense.setStatusChangedTime(DateUtils.getNowDate());
|
||||
// 发药类型
|
||||
medicationDispense.setDispenseEnum(medicationRequest.getCategoryEnum());
|
||||
// 药品编码
|
||||
medicationDispense.setMedicationId(medicationRequest.getMedicationId());
|
||||
// 请求数量
|
||||
medicationDispense.setQuantity(medicationRequest.getQuantity());
|
||||
// 请求单位编码
|
||||
medicationDispense.setUnitCode(medicationRequest.getUnitCode());
|
||||
// 产品批号
|
||||
medicationDispense.setLotNumber(medicationRequest.getLotNumber());
|
||||
// 患者id
|
||||
medicationDispense.setPatientId(medicationRequest.getPatientId());
|
||||
// 就诊id
|
||||
medicationDispense.setEncounterId(medicationRequest.getEncounterId());
|
||||
// 支持用药信息
|
||||
medicationDispense.setSupportInfo(medicationRequest.getSupportInfo());
|
||||
// 发药人
|
||||
medicationDispense.setPractitionerId(medicationRequest.getPractitionerId());
|
||||
// 发放药房
|
||||
medicationDispense.setLocationId(medicationRequest.getPerformLocation());
|
||||
// 药品请求id
|
||||
medicationDispense.setMedReqId(medicationRequest.getId());
|
||||
// 已发药数量
|
||||
medicationDispense.setDispenseQuantity(BigDecimal.ZERO);
|
||||
// 用法
|
||||
medicationDispense.setMethodCode(medicationRequest.getMethodCode());
|
||||
// 用药频次
|
||||
medicationDispense.setFrequencyCode(medicationRequest.getRateCode());
|
||||
// 单次剂量
|
||||
medicationDispense.setDose(medicationRequest.getDose());
|
||||
// 剂量单位
|
||||
medicationDispense.setDoseUnitCode(medicationRequest.getDoseUnitCode());
|
||||
// 单次最大剂量
|
||||
medicationDispense.setMaxUnit(medicationRequest.getMaxDose());
|
||||
/**
|
||||
* 处理药品发放信息
|
||||
*
|
||||
* @param medicationRequest 药品请求信息
|
||||
* @param dbOpType db操作类型
|
||||
* @return 发放id
|
||||
*/
|
||||
@Override
|
||||
public Long handleMedicationDispense(MedicationRequest medicationRequest, String dbOpType) {
|
||||
MedicationDispense medicationDispense = new MedicationDispense();
|
||||
// 药品发放id
|
||||
medicationDispense.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_DIS_NO.getPrefix(), 4));
|
||||
// 药品发放状态
|
||||
medicationDispense.setStatusEnum(DispenseStatus.DRAFT.getValue());
|
||||
// 状态变更时间
|
||||
medicationDispense.setStatusChangedTime(DateUtils.getNowDate());
|
||||
|
||||
// 获取当前时间
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
// 增加2小时
|
||||
LocalDateTime newTime = now.plusHours(2);
|
||||
// 转换为Date对象(如果需要保持使用Date类型)
|
||||
Date limitTime = Date.from(newTime.atZone(ZoneId.systemDefault()).toInstant());
|
||||
// 设置限制发药时间
|
||||
medicationDispense.setLimitTime(limitTime);
|
||||
// 【关键修改】设置创建时间,解决数据库 not-null 报错
|
||||
medicationDispense.setCreateTime(DateUtils.getNowDate());
|
||||
|
||||
baseMapper.insert(medicationDispense);
|
||||
// 发药类型
|
||||
medicationDispense.setDispenseEnum(medicationRequest.getCategoryEnum());
|
||||
// 药品编码
|
||||
medicationDispense.setMedicationId(medicationRequest.getMedicationId());
|
||||
// 请求数量
|
||||
medicationDispense.setQuantity(medicationRequest.getQuantity());
|
||||
// 请求单位编码
|
||||
medicationDispense.setUnitCode(medicationRequest.getUnitCode());
|
||||
// 产品批号
|
||||
medicationDispense.setLotNumber(medicationRequest.getLotNumber());
|
||||
// 患者id
|
||||
medicationDispense.setPatientId(medicationRequest.getPatientId());
|
||||
// 就诊id
|
||||
medicationDispense.setEncounterId(medicationRequest.getEncounterId());
|
||||
// 支持用药信息
|
||||
medicationDispense.setSupportInfo(medicationRequest.getSupportInfo());
|
||||
// 发药人
|
||||
medicationDispense.setPractitionerId(medicationRequest.getPractitionerId());
|
||||
// 发放药房
|
||||
medicationDispense.setLocationId(medicationRequest.getPerformLocation());
|
||||
// 药品请求id
|
||||
medicationDispense.setMedReqId(medicationRequest.getId());
|
||||
// 已发药数量
|
||||
medicationDispense.setDispenseQuantity(BigDecimal.ZERO);
|
||||
// 用法
|
||||
medicationDispense.setMethodCode(medicationRequest.getMethodCode());
|
||||
// 用药频次
|
||||
medicationDispense.setFrequencyCode(medicationRequest.getRateCode());
|
||||
// 单次剂量
|
||||
medicationDispense.setDose(medicationRequest.getDose());
|
||||
// 剂量单位
|
||||
medicationDispense.setDoseUnitCode(medicationRequest.getDoseUnitCode());
|
||||
// 单次最大剂量
|
||||
medicationDispense.setMaxUnit(medicationRequest.getMaxDose());
|
||||
|
||||
// if (DbOpType.INSERT.getCode().equals(dbOpType)) {
|
||||
// baseMapper.insert(medicationDispense);
|
||||
// } else if (DbOpType.UPDATE.getCode().equals(dbOpType)) {
|
||||
// baseMapper.update(medicationDispense, new LambdaUpdateWrapper<MedicationDispense>()
|
||||
// .eq(MedicationDispense::getMedReqId, medicationRequest.getId()));
|
||||
// }
|
||||
return medicationDispense.getId();
|
||||
}
|
||||
// 获取当前时间
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
// 增加2小时
|
||||
LocalDateTime newTime = now.plusHours(2);
|
||||
// 转换为Date对象
|
||||
Date limitTime = Date.from(newTime.atZone(ZoneId.systemDefault()).toInstant());
|
||||
// 设置限制发药时间
|
||||
medicationDispense.setLimitTime(limitTime);
|
||||
|
||||
/**
|
||||
* 医嘱执行生成药品发放,状态为待配药
|
||||
*
|
||||
* @param medicationRequest 药品医嘱请求
|
||||
* @param procedureId 执行记录id
|
||||
* @param plannedDispenseTime 预定发药时间
|
||||
* @return 发放id
|
||||
*/
|
||||
@Override
|
||||
public Long generateMedicationDispense(MedicationRequest medicationRequest, Long procedureId,
|
||||
Date plannedDispenseTime) {
|
||||
MedicationDispense medicationDispense = new MedicationDispense();
|
||||
// 执行id
|
||||
medicationDispense.setProcedureId(procedureId);
|
||||
// 预定发药时间
|
||||
medicationDispense.setPlannedDispenseTime(plannedDispenseTime);
|
||||
// 药品发放id
|
||||
medicationDispense.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_DIS_NO.getPrefix(), 4));
|
||||
// 药品发放状态
|
||||
medicationDispense.setStatusEnum(DispenseStatus.PREPARATION.getValue());
|
||||
// 状态变更时间
|
||||
medicationDispense.setStatusChangedTime(DateUtils.getNowDate());
|
||||
// 发药类型
|
||||
medicationDispense.setDispenseEnum(medicationRequest.getCategoryEnum());
|
||||
// 药品编码
|
||||
medicationDispense.setMedicationId(medicationRequest.getMedicationId());
|
||||
// 请求数量
|
||||
medicationDispense.setQuantity(medicationRequest.getQuantity());
|
||||
// 请求单位编码
|
||||
medicationDispense.setUnitCode(medicationRequest.getUnitCode());
|
||||
// 产品批号
|
||||
medicationDispense.setLotNumber(medicationRequest.getLotNumber());
|
||||
// 患者id
|
||||
medicationDispense.setPatientId(medicationRequest.getPatientId());
|
||||
// 就诊id
|
||||
medicationDispense.setEncounterId(medicationRequest.getEncounterId());
|
||||
// 支持用药信息
|
||||
medicationDispense.setSupportInfo(medicationRequest.getSupportInfo());
|
||||
// 发药人
|
||||
medicationDispense.setPractitionerId(medicationRequest.getPractitionerId());
|
||||
// 发放药房
|
||||
medicationDispense.setLocationId(medicationRequest.getPerformLocation());
|
||||
// 药品请求id
|
||||
medicationDispense.setMedReqId(medicationRequest.getId());
|
||||
// 已发药数量
|
||||
medicationDispense.setDispenseQuantity(BigDecimal.ZERO);
|
||||
// 用法
|
||||
medicationDispense.setMethodCode(medicationRequest.getMethodCode());
|
||||
// 用药频次
|
||||
medicationDispense.setFrequencyCode(medicationRequest.getRateCode());
|
||||
// 单次剂量
|
||||
medicationDispense.setDose(medicationRequest.getDose());
|
||||
// 剂量单位
|
||||
medicationDispense.setDoseUnitCode(medicationRequest.getDoseUnitCode());
|
||||
// 单次最大剂量
|
||||
medicationDispense.setMaxUnit(medicationRequest.getMaxDose());
|
||||
// 获取当前时间
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
// 增加12小时
|
||||
LocalDateTime newTime = now.plusHours(12);
|
||||
// 转换为Date对象(如果需要保持使用Date类型)
|
||||
Date limitTime = Date.from(newTime.atZone(ZoneId.systemDefault()).toInstant());
|
||||
// 设置限制发药时间
|
||||
medicationDispense.setLimitTime(limitTime);
|
||||
// 【关键修改】手动设置租户ID和创建人,确保 create_by 非空
|
||||
try {
|
||||
// 尝试获取当前登录用户
|
||||
medicationDispense.setTenantId(SecurityUtils.getLoginUser().getTenantId());
|
||||
medicationDispense.setCreateBy(SecurityUtils.getUsername());
|
||||
} catch (Exception e) {
|
||||
// 如果获取失败(如系统自动执行),使用默认值兜底,防止数据库报错
|
||||
medicationDispense.setTenantId(1);
|
||||
medicationDispense.setCreateBy("system");
|
||||
}
|
||||
|
||||
baseMapper.insert(medicationDispense);
|
||||
// 执行插入
|
||||
// 注意:如果您需要区分新增和修改,请取消下面注释并根据 dbOpType 判断
|
||||
// if (DbOpType.UPDATE.getCode().equals(dbOpType)) {
|
||||
// baseMapper.update(medicationDispense, new LambdaUpdateWrapper<MedicationDispense>()
|
||||
// .eq(MedicationDispense::getMedReqId, medicationRequest.getId()));
|
||||
// } else {
|
||||
baseMapper.insert(medicationDispense);
|
||||
// }
|
||||
|
||||
return medicationDispense.getId();
|
||||
}
|
||||
return medicationDispense.getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除药品发放信息
|
||||
*
|
||||
* @param medReqId 药品请求id
|
||||
*/
|
||||
@Override
|
||||
public void deleteMedicationDispense(Long medReqId) {
|
||||
baseMapper.delete(new LambdaQueryWrapper<MedicationDispense>().eq(MedicationDispense::getMedReqId, medReqId));
|
||||
}
|
||||
/**
|
||||
* 医嘱执行生成药品发放,状态为待配药
|
||||
*
|
||||
* @param medicationRequest 药品医嘱请求
|
||||
* @param procedureId 执行记录id
|
||||
* @param plannedDispenseTime 预定发药时间
|
||||
* @return 发放id
|
||||
*/
|
||||
@Override
|
||||
public Long generateMedicationDispense(MedicationRequest medicationRequest, Long procedureId,
|
||||
Date plannedDispenseTime) {
|
||||
MedicationDispense medicationDispense = new MedicationDispense();
|
||||
// 执行id
|
||||
medicationDispense.setProcedureId(procedureId);
|
||||
// 预定发药时间
|
||||
medicationDispense.setPlannedDispenseTime(plannedDispenseTime);
|
||||
// 药品发放id
|
||||
medicationDispense.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.MEDICATION_DIS_NO.getPrefix(), 4));
|
||||
// 药品发放状态
|
||||
medicationDispense.setStatusEnum(DispenseStatus.PREPARATION.getValue());
|
||||
// 状态变更时间
|
||||
medicationDispense.setStatusChangedTime(DateUtils.getNowDate());
|
||||
// 发药类型
|
||||
medicationDispense.setDispenseEnum(medicationRequest.getCategoryEnum());
|
||||
// 药品编码
|
||||
medicationDispense.setMedicationId(medicationRequest.getMedicationId());
|
||||
// 请求数量
|
||||
medicationDispense.setQuantity(medicationRequest.getQuantity());
|
||||
// 请求单位编码
|
||||
medicationDispense.setUnitCode(medicationRequest.getUnitCode());
|
||||
// 产品批号
|
||||
medicationDispense.setLotNumber(medicationRequest.getLotNumber());
|
||||
// 患者id
|
||||
medicationDispense.setPatientId(medicationRequest.getPatientId());
|
||||
// 就诊id
|
||||
medicationDispense.setEncounterId(medicationRequest.getEncounterId());
|
||||
// 支持用药信息
|
||||
medicationDispense.setSupportInfo(medicationRequest.getSupportInfo());
|
||||
// 发药人
|
||||
medicationDispense.setPractitionerId(medicationRequest.getPractitionerId());
|
||||
// 发放药房
|
||||
medicationDispense.setLocationId(medicationRequest.getPerformLocation());
|
||||
// 药品请求id
|
||||
medicationDispense.setMedReqId(medicationRequest.getId());
|
||||
// 已发药数量
|
||||
medicationDispense.setDispenseQuantity(BigDecimal.ZERO);
|
||||
// 用法
|
||||
medicationDispense.setMethodCode(medicationRequest.getMethodCode());
|
||||
// 用药频次
|
||||
medicationDispense.setFrequencyCode(medicationRequest.getRateCode());
|
||||
// 单次剂量
|
||||
medicationDispense.setDose(medicationRequest.getDose());
|
||||
// 剂量单位
|
||||
medicationDispense.setDoseUnitCode(medicationRequest.getDoseUnitCode());
|
||||
// 单次最大剂量
|
||||
medicationDispense.setMaxUnit(medicationRequest.getMaxDose());
|
||||
|
||||
/**
|
||||
* 更新未发放药品状态:停止发放
|
||||
*
|
||||
* @param medDisIdList 发放id列表
|
||||
* @param refund 停止原因:退费
|
||||
*/
|
||||
@Override
|
||||
public void updateStopDispenseStatus(List<Long> medDisIdList, Integer refund) {
|
||||
baseMapper.update(
|
||||
new MedicationDispense().setStatusEnum(DispenseStatus.STOPPED.getValue()).setNotPerformedReasonEnum(refund),
|
||||
new LambdaUpdateWrapper<MedicationDispense>().in(MedicationDispense::getId, medDisIdList));
|
||||
}
|
||||
// 获取当前时间
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
// 增加12小时
|
||||
LocalDateTime newTime = now.plusHours(12);
|
||||
// 转换为Date对象(如果需要保持使用Date类型)
|
||||
Date limitTime = Date.from(newTime.atZone(ZoneId.systemDefault()).toInstant());
|
||||
// 设置限制发药时间
|
||||
medicationDispense.setLimitTime(limitTime);
|
||||
// 手动设置租户ID和创建人
|
||||
try {
|
||||
medicationDispense.setTenantId(SecurityUtils.getLoginUser().getTenantId());
|
||||
medicationDispense.setCreateBy(SecurityUtils.getUsername());
|
||||
} catch (Exception e) {
|
||||
// 如果获取登录用户信息失败,使用默认值
|
||||
medicationDispense.setTenantId(1); // 默认租户ID
|
||||
medicationDispense.setCreateBy("system"); // 默认创建人
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新药品状态:待配药
|
||||
*
|
||||
* @param medicationRequestIdList 请求id列表
|
||||
*/
|
||||
@Override
|
||||
public void updatePreparationDispenseStatus(List<Long> medicationRequestIdList) {
|
||||
baseMapper.update(null,
|
||||
new LambdaUpdateWrapper<MedicationDispense>()
|
||||
.set(MedicationDispense::getStatusEnum, DispenseStatus.PREPARATION.getValue())
|
||||
.set(MedicationDispense::getStatusChangedTime, DateUtils.getNowDate())
|
||||
.in(MedicationDispense::getMedReqId, medicationRequestIdList));
|
||||
}
|
||||
baseMapper.insert(medicationDispense);
|
||||
|
||||
/**
|
||||
* 更新药品状态:暂停
|
||||
*
|
||||
* @param medReqIdList 请求id列表
|
||||
*/
|
||||
@Override
|
||||
public void updateOnHoldDispenseStatus(List<Long> medReqIdList) {
|
||||
baseMapper.update(null,
|
||||
new LambdaUpdateWrapper<MedicationDispense>()
|
||||
.set(MedicationDispense::getStatusEnum, DispenseStatus.ON_HOLD.getValue())
|
||||
.set(MedicationDispense::getStatusChangedTime, DateUtils.getNowDate())
|
||||
.in(MedicationDispense::getMedReqId, medReqIdList));
|
||||
}
|
||||
return medicationDispense.getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* 验证是否发过药
|
||||
*
|
||||
* @param medicationDefId 药品定义id
|
||||
* @return 验证结果
|
||||
*/
|
||||
@Override
|
||||
public boolean verifyAbleEdit(Long medicationDefId) {
|
||||
return baseMapper.exists(
|
||||
new LambdaQueryWrapper<MedicationDispense>().eq(MedicationDispense::getMedicationId, medicationDefId)
|
||||
.and(q -> q.eq(MedicationDispense::getStatusEnum, DispenseStatus.COMPLETED.getValue()).or()
|
||||
.eq(MedicationDispense::getStatusEnum, DispenseStatus.REFUNDED.getValue()))
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
}
|
||||
/**
|
||||
* 删除药品发放信息
|
||||
*
|
||||
* @param medReqId 药品请求id
|
||||
*/
|
||||
@Override
|
||||
public void deleteMedicationDispense(Long medReqId) {
|
||||
baseMapper.delete(new LambdaQueryWrapper<MedicationDispense>().eq(MedicationDispense::getMedReqId,
|
||||
medReqId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过请求id获取药品发放信息
|
||||
*
|
||||
* @param requestIdList 请求id
|
||||
* @return 发放信息
|
||||
*/
|
||||
@Override
|
||||
public List<MedicationDispense> selectByRequestIdList(List<Long> requestIdList) {
|
||||
return baseMapper
|
||||
.selectList(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getMedReqId, requestIdList)
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
}
|
||||
/**
|
||||
* 更新未发放药品状态:停止发放
|
||||
*
|
||||
* @param medDisIdList 发放id列表
|
||||
* @param refund 停止原因:退费
|
||||
*/
|
||||
@Override
|
||||
public void updateStopDispenseStatus(List<Long> medDisIdList, Integer refund) {
|
||||
baseMapper.update(
|
||||
new MedicationDispense().setStatusEnum(DispenseStatus.STOPPED.getValue())
|
||||
.setNotPerformedReasonEnum(refund),
|
||||
new LambdaUpdateWrapper<MedicationDispense>().in(MedicationDispense::getId,
|
||||
medDisIdList));
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新药品状态:已汇总
|
||||
*
|
||||
* @param medDispenseId 发放id列表
|
||||
*/
|
||||
@Override
|
||||
public void updateDispenseStatusSummarized(List<Long> medDispenseId, String busNo) {
|
||||
baseMapper.update(null,
|
||||
new LambdaUpdateWrapper<MedicationDispense>()
|
||||
.set(MedicationDispense::getStatusEnum, DispenseStatus.SUMMARIZED.getValue())
|
||||
.set(MedicationDispense::getStatusChangedTime, DateUtils.getNowDate())
|
||||
.set(MedicationDispense::getSummaryNo, busNo).in(MedicationDispense::getId, medDispenseId)
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
}
|
||||
/**
|
||||
* 更新药品状态:待配药
|
||||
*
|
||||
* @param medicationRequestIdList 请求id列表
|
||||
*/
|
||||
@Override
|
||||
public void updatePreparationDispenseStatus(List<Long> medicationRequestIdList) {
|
||||
baseMapper.update(null,
|
||||
new LambdaUpdateWrapper<MedicationDispense>()
|
||||
.set(MedicationDispense::getStatusEnum,
|
||||
DispenseStatus.PREPARATION.getValue())
|
||||
.set(MedicationDispense::getStatusChangedTime, DateUtils.getNowDate())
|
||||
.in(MedicationDispense::getMedReqId, medicationRequestIdList));
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过执行id获取药品发放信息
|
||||
*
|
||||
* @param procedureIdList 执行id列表
|
||||
* @return 发放信息
|
||||
*/
|
||||
@Override
|
||||
public List<MedicationDispense> getMedDispenseByProcedureId(List<Long> procedureIdList) {
|
||||
return baseMapper.selectList(
|
||||
new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getProcedureId, procedureIdList)
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
}
|
||||
/**
|
||||
* 更新药品状态:暂停
|
||||
*
|
||||
* @param medReqIdList 请求id列表
|
||||
*/
|
||||
@Override
|
||||
public void updateOnHoldDispenseStatus(List<Long> medReqIdList) {
|
||||
baseMapper.update(null,
|
||||
new LambdaUpdateWrapper<MedicationDispense>()
|
||||
.set(MedicationDispense::getStatusEnum,
|
||||
DispenseStatus.ON_HOLD.getValue())
|
||||
.set(MedicationDispense::getStatusChangedTime, DateUtils.getNowDate())
|
||||
.in(MedicationDispense::getMedReqId, medReqIdList));
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消汇总
|
||||
*
|
||||
* @param summaryNoList 汇总单号
|
||||
* @return 取消结果
|
||||
*/
|
||||
@Override
|
||||
public boolean cancelMedicationSummary(List<String> summaryNoList) {
|
||||
int result = baseMapper.update(null,
|
||||
new LambdaUpdateWrapper<MedicationDispense>()
|
||||
.set(MedicationDispense::getStatusEnum, DispenseStatus.PREPARATION.getValue())
|
||||
.set(MedicationDispense::getSummaryNo, null).in(MedicationDispense::getSummaryNo, summaryNoList)
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
return result > 0;
|
||||
}
|
||||
/**
|
||||
* 验证是否发过药
|
||||
*
|
||||
* @param medicationDefId 药品定义id
|
||||
* @return 验证结果
|
||||
*/
|
||||
@Override
|
||||
public boolean verifyAbleEdit(Long medicationDefId) {
|
||||
return baseMapper.exists(
|
||||
new LambdaQueryWrapper<MedicationDispense>()
|
||||
.eq(MedicationDispense::getMedicationId, medicationDefId)
|
||||
.and(q -> q.eq(MedicationDispense::getStatusEnum,
|
||||
DispenseStatus.COMPLETED.getValue()).or()
|
||||
.eq(MedicationDispense::getStatusEnum,
|
||||
DispenseStatus.REFUNDED.getValue()))
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新药品发放状态
|
||||
*
|
||||
* @param dispenseIdList 发放id列表
|
||||
* @param dispenseStatus 发放状态
|
||||
*/
|
||||
@Override
|
||||
public void updateDispenseStatus(List<Long> dispenseIdList, Integer dispenseStatus) {
|
||||
baseMapper.update(null,
|
||||
new LambdaUpdateWrapper<MedicationDispense>().set(MedicationDispense::getStatusEnum, dispenseStatus)
|
||||
.set(MedicationDispense::getStatusChangedTime, DateUtils.getNowDate())
|
||||
.in(MedicationDispense::getId, dispenseIdList)
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
}
|
||||
/**
|
||||
* 通过请求id获取药品发放信息
|
||||
*
|
||||
* @param requestIdList 请求id
|
||||
* @return 发放信息
|
||||
*/
|
||||
@Override
|
||||
public List<MedicationDispense> selectByRequestIdList(List<Long> requestIdList) {
|
||||
return baseMapper
|
||||
.selectList(new LambdaQueryWrapper<MedicationDispense>()
|
||||
.in(MedicationDispense::getMedReqId, requestIdList)
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过汇总单号获取药品发放信息
|
||||
*
|
||||
* @param summaryNoList 汇总单号列表
|
||||
* @return 发放信息
|
||||
*/
|
||||
@Override
|
||||
public List<MedicationDispense> getMedDispenseBySummaryNo(List<String> summaryNoList) {
|
||||
return baseMapper
|
||||
.selectList(new LambdaQueryWrapper<MedicationDispense>().in(MedicationDispense::getSummaryNo, summaryNoList)
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode())
|
||||
.eq(MedicationDispense::getStatusEnum, DispenseStatus.SUMMARIZED.getValue()));
|
||||
}
|
||||
/**
|
||||
* 更新药品状态:已汇总
|
||||
*
|
||||
* @param medDispenseId 发放id列表
|
||||
*/
|
||||
@Override
|
||||
public void updateDispenseStatusSummarized(List<Long> medDispenseId, String busNo) {
|
||||
baseMapper.update(null,
|
||||
new LambdaUpdateWrapper<MedicationDispense>()
|
||||
.set(MedicationDispense::getStatusEnum,
|
||||
DispenseStatus.SUMMARIZED.getValue())
|
||||
.set(MedicationDispense::getStatusChangedTime, DateUtils.getNowDate())
|
||||
.set(MedicationDispense::getSummaryNo, busNo)
|
||||
.in(MedicationDispense::getId, medDispenseId)
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过执行id获取药品发放信息
|
||||
*
|
||||
* @param procedureIdList 执行id列表
|
||||
* @return 发放信息
|
||||
*/
|
||||
@Override
|
||||
public List<MedicationDispense> getMedDispenseByProcedureId(List<Long> procedureIdList) {
|
||||
return baseMapper.selectList(
|
||||
new LambdaQueryWrapper<MedicationDispense>()
|
||||
.in(MedicationDispense::getProcedureId, procedureIdList)
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消汇总
|
||||
*
|
||||
* @param summaryNoList 汇总单号
|
||||
* @return 取消结果
|
||||
*/
|
||||
@Override
|
||||
public boolean cancelMedicationSummary(List<String> summaryNoList) {
|
||||
int result = baseMapper.update(null,
|
||||
new LambdaUpdateWrapper<MedicationDispense>()
|
||||
.set(MedicationDispense::getStatusEnum,
|
||||
DispenseStatus.PREPARATION.getValue())
|
||||
.set(MedicationDispense::getSummaryNo, null)
|
||||
.in(MedicationDispense::getSummaryNo, summaryNoList)
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
return result > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新药品发放状态
|
||||
*
|
||||
* @param dispenseIdList 发放id列表
|
||||
* @param dispenseStatus 发放状态
|
||||
*/
|
||||
@Override
|
||||
public void updateDispenseStatus(List<Long> dispenseIdList, Integer dispenseStatus) {
|
||||
baseMapper.update(null,
|
||||
new LambdaUpdateWrapper<MedicationDispense>()
|
||||
.set(MedicationDispense::getStatusEnum, dispenseStatus)
|
||||
.set(MedicationDispense::getStatusChangedTime, DateUtils.getNowDate())
|
||||
.in(MedicationDispense::getId, dispenseIdList)
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode()));
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过汇总单号获取药品发放信息
|
||||
*
|
||||
* @param summaryNoList 汇总单号列表
|
||||
* @return 发放信息
|
||||
*/
|
||||
@Override
|
||||
public List<MedicationDispense> getMedDispenseBySummaryNo(List<String> summaryNoList) {
|
||||
return baseMapper
|
||||
.selectList(new LambdaQueryWrapper<MedicationDispense>()
|
||||
.in(MedicationDispense::getSummaryNo, summaryNoList)
|
||||
.eq(MedicationDispense::getDeleteFlag, DelFlag.NO.getCode())
|
||||
.eq(MedicationDispense::getStatusEnum,
|
||||
DispenseStatus.SUMMARIZED.getValue()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -77,6 +77,9 @@ public class DeviceDispenseServiceImpl extends ServiceImpl<DeviceDispenseMapper,
|
||||
deviceDispense.setDispenseQuantity(BigDecimal.ZERO);
|
||||
// 发药频次
|
||||
deviceDispense.setDispenseFrequencyCode(deviceRequest.getRateCode());
|
||||
// 设置租户id
|
||||
LoginUser loginUser = getLoginUser();
|
||||
deviceDispense.setTenantId(loginUser.getTenantId());
|
||||
|
||||
// 获取当前时间
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
@@ -150,6 +153,9 @@ public class DeviceDispenseServiceImpl extends ServiceImpl<DeviceDispenseMapper,
|
||||
deviceDispense.setDispenseQuantity(BigDecimal.ZERO);
|
||||
// 发药频次
|
||||
deviceDispense.setDispenseFrequencyCode(deviceRequest.getRateCode());
|
||||
// 设置租户id
|
||||
LoginUser loginUser = getLoginUser();
|
||||
deviceDispense.setTenantId(loginUser.getTenantId());
|
||||
|
||||
// 获取当前时间
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
@@ -230,6 +236,9 @@ public class DeviceDispenseServiceImpl extends ServiceImpl<DeviceDispenseMapper,
|
||||
deviceDispense.setDispenseTime(now);
|
||||
// id
|
||||
deviceDispense.setId(null);
|
||||
// 设置租户id
|
||||
LoginUser currentLoginUser = getLoginUser();
|
||||
deviceDispense.setTenantId(currentLoginUser.getTenantId());
|
||||
// 新增器材发放
|
||||
baseMapper.insert(deviceDispense);
|
||||
|
||||
@@ -397,6 +406,8 @@ public class DeviceDispenseServiceImpl extends ServiceImpl<DeviceDispenseMapper,
|
||||
// todo 存疑,是否用请求人作为发药人
|
||||
LoginUser loginUser = getLoginUser();
|
||||
deviceDispense.setPerformerId(loginUser.getPractitionerId());
|
||||
// 设置租户id
|
||||
deviceDispense.setTenantId(loginUser.getTenantId());
|
||||
// 发放器材房
|
||||
deviceDispense.setLocationId(locationId);
|
||||
// 支持用药信息
|
||||
|
||||
Reference in New Issue
Block a user