采购代码调整,退费代码增加

This commit is contained in:
Zhang.WH
2025-03-19 09:22:15 +08:00
parent 615810461f
commit 2d0decb7e9
39 changed files with 615 additions and 233 deletions

View File

@@ -91,7 +91,8 @@ public class OutpatientChargeAppServiceImpl implements IOutpatientChargeAppServi
public R<?> getEncounterPatientPrescription(Long encounterId) {
return R.ok(outpatientChargeAppMapper.selectEncounterPatientPrescription(encounterId,
ChargeItemContext.ACTIVITY.getValue(), ChargeItemContext.MEDICATION.getValue(),
ChargeItemContext.DEVICE.getValue()));
ChargeItemContext.DEVICE.getValue(), ChargeItemStatus.PLANNED.getValue(),
ChargeItemStatus.BILLABLE.getValue(), ChargeItemStatus.BILLED.getValue()));
}
/**

View File

@@ -4,12 +4,20 @@
package com.openhis.web.chargemanage.appservice.impl;
import java.util.List;
import java.util.stream.Collectors;
import com.openhis.web.chargemanage.dto.RefundItemDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.core.common.core.domain.R;
import com.core.common.utils.MessageUtils;
import com.openhis.administration.domain.ChargeItem;
import com.openhis.administration.service.IChargeItemService;
import com.openhis.common.constant.CommonConstants;
import com.openhis.common.constant.PromptMsgConstant;
import com.openhis.common.enums.PaymentStatus;
import com.openhis.financial.service.IPaymentReconciliationService;
import com.openhis.web.chargemanage.appservice.IOutpatientRefundAppService;
import com.openhis.web.chargemanage.dto.EncounterPatientPaymentDto;
import com.openhis.web.chargemanage.mapper.OutpatientRefundAppMapper;
@@ -25,6 +33,10 @@ public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppServi
@Autowired
private OutpatientRefundAppMapper outpatientRefundAppMapper;
@Autowired
private IPaymentReconciliationService paymentReconciliationService;
@Autowired
private IChargeItemService chargeItemService;
/**
* 根据就诊id查询患者的账单
@@ -49,10 +61,28 @@ public class OutpatientRefundAppServiceImpl implements IOutpatientRefundAppServi
@Override
public R<?> refundPayment(List<Long> paymentIdList) {
List<RefundItemDto> refundItemList = outpatientRefundAppMapper.selectRefundItem(paymentIdList, CommonConstants.TableName.MED_MEDICATION_REQUEST,
CommonConstants.TableName.WOR_SERVICE_REQUEST, CommonConstants.TableName.WOR_DEVICE_REQUEST,
CommonConstants.Common.THREE);
// 医生同意退费
// 查询所有的chargeid对应生成一个负的chargeitem
// 根据每个 chargeitem判断对应的服务药品耗材是否已发放执行
// 若已发放/执行需要对应的发药人/执行人审批(药品耗材需要先退药)
for (Long paymentId : paymentIdList) {
// 根据支付id获取对应收费项目的id列表
List<Long> chargeItemIdList = paymentReconciliationService.getChargeItemIdListByPayment(paymentId);
if (chargeItemIdList == null) {
return R.fail(MessageUtils.createMessage(PromptMsgConstant.Common.M00006, null));
}
// 根据收费项目id列表获取收费信息
List<ChargeItem> chargeItemList = chargeItemService.getChargeItemInfo(chargeItemIdList);
List<String> prescriptionNoList =
chargeItemList.stream().map(ChargeItem::getPrescriptionNo).collect(Collectors.toList());
}
return null;
}
}

View File

@@ -73,6 +73,4 @@ public class EncounterPatientPaymentDto implements Serializable {
/** 合同编码 */
private String contractNo;
/** 处方号集合 */
private String chargeItemIds;
}

View File

@@ -51,6 +51,9 @@ public class EncounterPatientPrescriptionDto implements Serializable {
/** 处方号 */
private String prescriptionNo;
/** 业务编码 */
private String busNo;
/** 开立人ID */
private Long entererId;

View File

@@ -0,0 +1,22 @@
/*
* Copyright ©2023 CJB-CNIT Team. All rights reserved
*/
package com.openhis.web.chargemanage.dto;
import java.io.Serializable;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 退款项目 dto
*
* @author zwh
* @date 2025-03-18
*/
@Data
@Accessors(chain = true)
public class RefundItemDto implements Serializable {
private static final long serialVersionUID = 1L;
}

View File

@@ -41,8 +41,12 @@ public interface OutpatientChargeAppMapper {
* @param activity 项目
* @param medication 药品
* @param device 耗材
* @param planned 收费状态:待收费
* @param billable 收费状态:待结算
* @param billed 收费状态:已结算
* @return 患者处方列表
*/
List<EncounterPatientPrescriptionDto> selectEncounterPatientPrescription(@Param("encounterId") Long encounterId,
@Param("activity") Integer activity, @Param("medication") Integer medication, @Param("device") Integer device);
@Param("activity") Integer activity, @Param("medication") Integer medication, @Param("device") Integer device,
@Param("planned") Integer planned, @Param("billable") Integer billable, @Param("billed") Integer billed);
}

View File

@@ -9,6 +9,7 @@ import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import com.openhis.web.chargemanage.dto.EncounterPatientPaymentDto;
import com.openhis.web.chargemanage.dto.RefundItemDto;
/**
* 门诊退费 appMapper
@@ -31,4 +32,19 @@ public interface OutpatientRefundAppMapper {
List<EncounterPatientPaymentDto> selectEncounterPatientPayment(@Param("encounterId") Long encounterId,
@Param("success") Integer success, @Param("refundAll") Integer refundAll,
@Param("refundPart") Integer refundPart);
/**
* 查询退费项目
*
* @param paymentIdList 支付编号列表
* @param medMedicationRequest 药品请求表
* @param worServiceRequest 服务请求表
* @param worDeviceRequest 耗材请求表
* @param three 用于字符截位
* @return 退费项目列表
*/
List<RefundItemDto> selectRefundItem(@Param("paymentIdList") List<Long> paymentIdList,
@Param("medMedicationRequest") String medMedicationRequest,
@Param("worServiceRequest") String worServiceRequest, @Param("worDeviceRequest") String worDeviceRequest,
@Param("three") Integer three);
}

View File

@@ -3,12 +3,13 @@
*/
package com.openhis.web.datadictionary.controller;
import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import com.openhis.administration.domain.ChargeItemDefDetail;
import org.apache.ibatis.builder.MapperBuilderAssistant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
@@ -20,18 +21,18 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.core.common.enums.AssignSeqEnum;
import com.core.common.enums.ChargeItemEnum;
import com.core.common.enums.DefinitionTypeEnum;
import com.core.common.utils.AssignSeqUtil;
import com.core.common.utils.MessageUtils;
import com.core.common.utils.StringUtils;
import com.core.common.utils.bean.BeanUtils;
import com.openhis.administration.domain.ChargeItemDefDetail;
import com.openhis.administration.domain.ChargeItemDefinition;
import com.openhis.administration.service.IChargeItemDefDetailService;
import com.openhis.administration.service.IChargeItemDefinitionService;
import com.openhis.common.constant.CommonConstants;
import com.openhis.common.constant.PromptMsgConstant;
import com.openhis.common.enums.ChargeItemEnum;
import com.openhis.common.enums.ItemType;
import com.openhis.common.enums.PublicationStatus;
import com.openhis.web.datadictionary.dto.ChargeItemDefPageDto;
import com.openhis.web.datadictionary.dto.ChargeItemOptionDto;
@@ -71,7 +72,7 @@ public class ItemDefinitionController {
public R<?> getInitDefinitionOptions(ItemDefSearchParam itemDefSearchParam) {
/// TODO: 2025/2/26 收费项目下拉框 暂未做成用枚举代替,后续替换
List<ChargeItemOptionDto> chargeItemOptions = new ArrayList<>();
if (DefinitionTypeEnum.MEDICATION.getCode().equals(itemDefSearchParam.getDefinitionType())) {
if (ItemType.MEDICINE.getCode().equals(itemDefSearchParam.getDefinitionType())) {
// 西药
chargeItemOptions.add(new ChargeItemOptionDto(ChargeItemEnum.WEST_MEDICINE.getCode(),
ChargeItemEnum.WEST_MEDICINE.getInfo()));
@@ -84,14 +85,14 @@ public class ItemDefinitionController {
// 其他
chargeItemOptions
.add(new ChargeItemOptionDto(ChargeItemEnum.OTHER_FEE.getCode(), ChargeItemEnum.OTHER_FEE.getInfo()));
} else if (DefinitionTypeEnum.DEVICE.getCode().equals(itemDefSearchParam.getDefinitionType())) {
} else if (ItemType.DEVICE.getCode().equals(itemDefSearchParam.getDefinitionType())) {
// 卫生材料
chargeItemOptions.add(new ChargeItemOptionDto(ChargeItemEnum.SANITARY_MATERIALS_FEE.getCode(),
ChargeItemEnum.SANITARY_MATERIALS_FEE.getInfo()));
// 其他
chargeItemOptions
.add(new ChargeItemOptionDto(ChargeItemEnum.OTHER_FEE.getCode(), ChargeItemEnum.OTHER_FEE.getInfo()));
} else if (DefinitionTypeEnum.ACTIVITY.getCode().equals(itemDefSearchParam.getDefinitionType())) {
} else if (ItemType.ACTIVITY.getCode().equals(itemDefSearchParam.getDefinitionType())) {
// 床位
chargeItemOptions
.add(new ChargeItemOptionDto(ChargeItemEnum.BED_FEE.getCode(), ChargeItemEnum.BED_FEE.getInfo()));
@@ -155,14 +156,14 @@ public class ItemDefinitionController {
queryWrapper.eq(ChargeItemDefPageDto::getCategoryCode, chargeItemDefPageDto.getChargeItem());
}
// 通过 DefinitionType 区分药品定价/器具定价/活动定价
if (DefinitionTypeEnum.MEDICATION.getCode().equals(chargeItemDefPageDto.getDefinitionType())) {
if (ItemType.MEDICINE.getCode().equals(chargeItemDefPageDto.getDefinitionType())) {
queryWrapper.eq(ChargeItemDefPageDto::getInstanceTable,
CommonConstants.TableName.MED_MEDICATION_DEFINITION);
chargeItemDefinitionPage = chargeItemDefSearchMapper.getMedList(new Page<>(pageNo, pageSize), queryWrapper);
} else if (DefinitionTypeEnum.DEVICE.getCode().equals(chargeItemDefPageDto.getDefinitionType())) {
} else if (ItemType.DEVICE.getCode().equals(chargeItemDefPageDto.getDefinitionType())) {
queryWrapper.eq(ChargeItemDefPageDto::getInstanceTable, CommonConstants.TableName.ADM_DEVICE_DEFINITION);
chargeItemDefinitionPage = chargeItemDefSearchMapper.getDevList(new Page<>(pageNo, pageSize), queryWrapper);
} else if (DefinitionTypeEnum.ACTIVITY.getCode().equals(chargeItemDefPageDto.getDefinitionType())) {
} else if (ItemType.ACTIVITY.getCode().equals(chargeItemDefPageDto.getDefinitionType())) {
queryWrapper.eq(ChargeItemDefPageDto::getInstanceTable, CommonConstants.TableName.WOR_ACTIVITY_DEFINITION);
chargeItemDefinitionPage = chargeItemDefSearchMapper.getActList(new Page<>(pageNo, pageSize), queryWrapper);
}
@@ -204,45 +205,4 @@ public class ItemDefinitionController {
return R.ok(Arrays.stream(PublicationStatus.values())
.map(status -> new ChargeItemOptionDto(status.getValue(), status.getInfo())).collect(Collectors.toList()));
}
/**
* 采番测试(例子,非常规代码,请勿调用)
*
* @return 采番测试结果
*/
@GetMapping(value = "/test-assign")
public R<?> getTestAssign() {
// 基础采番
String code = assignSeqUtil.getSeq(AssignSeqEnum.TEST.getPrefix());
// 控制长度采番(seqLength: 总长度)
String code1 = assignSeqUtil.getSeq(AssignSeqEnum.TEST.getPrefix(), 8);
// 控制长度批量采番
List<String> code2 = assignSeqUtil.getSeq(AssignSeqEnum.TEST.getPrefix(), 8, 3);
// 获取编号
Integer code3 = assignSeqUtil.getSeqNo(AssignSeqEnum.TEST.getPrefix());
// 批量获取编号
List<Integer> code4 = assignSeqUtil.getSeqNo(AssignSeqEnum.TEST.getPrefix(), 3);
// 每日采番
String code5 = assignSeqUtil.getSeqByDay(AssignSeqEnum.TEST.getPrefix());
// 每日按长度采番(seqLength: 日期后的数字位数)
String code6 = assignSeqUtil.getSeqByDay(AssignSeqEnum.TEST.getPrefix(), 8);
// 每日批量采番
List<String> code7 = assignSeqUtil.getSeqByDay(AssignSeqEnum.TEST.getPrefix(), 8, 3);
// 每日获取编号
Integer code8 = assignSeqUtil.getSeqNoByDay(AssignSeqEnum.TEST.getPrefix());
// 每日批量获取编号
List<Integer> code9 = assignSeqUtil.getSeqNoByDay(AssignSeqEnum.TEST.getPrefix(), 3);
Map<String, Object> map = new HashMap<>();
map.put("code", code);
map.put("code1", code1);
map.put("code2", code2);
map.put("code3", code3);
map.put("code4", code4);
map.put("code5", code5);
map.put("code6", code6);
map.put("code7", code7);
map.put("code8", code8);
map.put("code9", code9);
return R.ok(map);
}
}

View File

@@ -98,14 +98,14 @@ public class DoctorStationAdviceAppServiceImpl implements IDoctorStationAdviceAp
// 匹配包装单位
List<AdvicePriceDto> advicePrice1 = childCharge.stream()
.filter(e -> e.getDefinitionId().equals(finalChargeItemDefinitionId) && e.getConditionValue()
.equals(String.format(CommonConstants.Common.COMMA, finalUnitCode,
.equals(String.format(CommonConstants.Common.COMMA_FORMAT, finalUnitCode,
adviceInventoryDto.getLotNumber())))
.peek(e -> e.setUnitCode(finalUnitCode)) // 设置 unitCode
.collect(Collectors.toList());
// 匹配最小单位
List<AdvicePriceDto> advicePrice2 = childCharge.stream()
.filter(e -> e.getDefinitionId().equals(finalChargeItemDefinitionId) && e.getConditionValue()
.equals(String.format(CommonConstants.Common.COMMA, finalMinUnitCode,
.equals(String.format(CommonConstants.Common.COMMA_FORMAT, finalMinUnitCode,
adviceInventoryDto.getLotNumber())))
.peek(e -> e.setUnitCode(finalMinUnitCode)) // 设置 unitCode
.collect(Collectors.toList());

View File

@@ -69,4 +69,11 @@ public interface IPurchaseInventoryAppService {
* @return 操作结果
*/
R<?> withdrawApproval(String busNo);
/**
* 入库单据页面初始化
*
* @return 初始化信息
*/
R<?> purchaseInventoryInit();
}

View File

@@ -4,6 +4,9 @@
package com.openhis.web.inventorymanage.appservice.impl;
import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.servlet.http.HttpServletRequest;
@@ -13,20 +16,25 @@ import org.springframework.stereotype.Service;
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.openhis.common.enums.AssignSeqEnum;
import com.core.common.utils.AssignSeqUtil;
import com.core.common.utils.DateUtils;
import com.core.common.utils.MessageUtils;
import com.core.common.utils.bean.BeanUtils;
import com.openhis.administration.domain.Practitioner;
import com.openhis.administration.domain.Supplier;
import com.openhis.administration.service.IPractitionerService;
import com.openhis.administration.service.ISupplierService;
import com.openhis.common.constant.CommonConstants;
import com.openhis.common.constant.PromptMsgConstant;
import com.openhis.common.enums.ItemType;
import com.openhis.common.enums.SupplyCategory;
import com.openhis.common.enums.SupplyStatus;
import com.openhis.common.enums.SupplyType;
import com.openhis.common.utils.EnumUtils;
import com.openhis.common.utils.HisQueryUtils;
import com.openhis.web.inventorymanage.appservice.IPurchaseInventoryAppService;
import com.openhis.web.inventorymanage.dto.InventoryReceiptDto;
import com.openhis.web.inventorymanage.dto.InventoryReceiptPageDto;
import com.openhis.web.inventorymanage.dto.InventorySearchParam;
import com.openhis.web.inventorymanage.dto.*;
import com.openhis.web.inventorymanage.mapper.PurchaseInventoryMapper;
import com.openhis.workflow.domain.SupplyRequest;
import com.openhis.workflow.service.ISupplyRequestService;
@@ -46,6 +54,55 @@ public class PurchaseInventoryAppServiceImpl implements IPurchaseInventoryAppSer
@Autowired
private ISupplyRequestService supplyRequestService;
@Autowired
private ISupplierService supplierService;
@Autowired
private IPractitionerService practitionerService;
@Autowired
private AssignSeqUtil assignSeqUtil;
/**
* 入库单据页面初始化
*
* @return 初始化信息
*/
@Override
public R<?> purchaseInventoryInit() {
InventoryReceiptInitDto initDto = new InventoryReceiptInitDto();
// 单据号
initDto.setBusNo(assignSeqUtil.getSeqByDay(AssignSeqEnum.PURCHASE_NUM.getPrefix(), 12));
// 查询供应商列表
List<Supplier> supplierList = supplierService.getList();
// 查询经手人列表
List<Practitioner> practitionerList = practitionerService.getList();
// 供应商信息
List<InventoryReceiptInitDto.practitionerListOption> practitionerListOptions = practitionerList.stream()
.map(practitioner -> new InventoryReceiptInitDto.practitionerListOption(practitioner.getId(),
practitioner.getName()))
.collect(Collectors.toList());
// 经手人信息
List<InventoryReceiptInitDto.supplierListOption> supplierListOptions = supplierList.stream()
.map(supplier -> new InventoryReceiptInitDto.supplierListOption(supplier.getId(), supplier.getName()))
.collect(Collectors.toList());
// 入库项目类型
List<InventoryReceiptInitDto.itemTypeOption> itemTypeOptions = Stream.of(ItemType.values())
.map(itemType -> new InventoryReceiptInitDto.itemTypeOption(itemType.getValue(), itemType.getInfo()))
.collect(Collectors.toList());
// 审批状态
List<InventoryReceiptInitDto.supplyStatusOption> supplyStatusOptions = Stream.of(SupplyStatus.values())
.map(supplyStatus -> new InventoryReceiptInitDto.supplyStatusOption(supplyStatus.getValue(),
supplyStatus.getInfo()))
.collect(Collectors.toList());
initDto.setSupplierListOptions(supplierListOptions).setItemTypeOptions(itemTypeOptions)
.setPractitionerListOptions(practitionerListOptions).setSupplyStatusOptions(supplyStatusOptions);
return R.ok(initDto);
}
/**
* 入库单据列表
*
@@ -86,6 +143,7 @@ public class PurchaseInventoryAppServiceImpl implements IPurchaseInventoryAppSer
*/
@Override
public R<?> getDetail(String busNo) {
List<ReceiptDetailDto> receiptDetailList = purchaseInventoryMapper.selectDetail(busNo);
return null;
}
@@ -102,13 +160,6 @@ public class PurchaseInventoryAppServiceImpl implements IPurchaseInventoryAppSer
SupplyRequest supplyRequest = new SupplyRequest();
BeanUtils.copyProperties(inventoryReceiptDto, supplyRequest);
// // 业务校验
// R<?> result = purchaseInventoryService.verifyInventoryReceipt(supplyRequest);
// // 校验失败返回提示信息
// if (result.getCode() == HttpStatus.ERROR) {
// return result;
// }
if (inventoryReceiptDto.getId() != null) {
// 更新单据信息
supplyRequestService.updateById(supplyRequest);

View File

@@ -220,8 +220,8 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
continue;
// 生成请求的命中值
String lotUnitCondition =
String.format(CommonConstants.Common.COMMA, supplyRequest.getLotNumber(), supplyRequest.getUnitCode());
String lotUnitCondition = String.format(CommonConstants.Common.COMMA_FORMAT, supplyRequest.getLotNumber(),
supplyRequest.getUnitCode());
for (ItemChargeDetailDto detail : details) {
@@ -238,7 +238,7 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
// 判断入库单位是大单位还是小单位
if (supplyRequest.getUnitCode().equals(detail.getUnitCode())) {
resultList.add(this.addChargeItemDefApp(
String.format(CommonConstants.Common.COMMA, supplyRequest.getLotNumber(),
String.format(CommonConstants.Common.COMMA_FORMAT, supplyRequest.getLotNumber(),
detail.getMinUnitCode()),
supplyRequest.getMinSellPrice(), detail.getDefinitionId()));
resultList.add(this.addChargeItemDefApp(lotUnitCondition, supplyRequest.getSellPrice(),
@@ -246,7 +246,7 @@ public class ReceiptApprovalAppServiceImpl implements IReceiptApprovalAppService
} else {
resultList
.add(this.addChargeItemDefApp(
String.format(CommonConstants.Common.COMMA, supplyRequest.getLotNumber(),
String.format(CommonConstants.Common.COMMA_FORMAT, supplyRequest.getLotNumber(),
detail.getUnitCode()),
supplyRequest.getMinSellPrice(), detail.getDefinitionId()));
resultList.add(this.addChargeItemDefApp(lotUnitCondition, supplyRequest.getMinSellPrice(),

View File

@@ -5,7 +5,6 @@ package com.openhis.web.inventorymanage.controller;
import javax.servlet.http.HttpServletRequest;
import com.openhis.web.inventorymanage.dto.InventoryReceiptInitDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -31,25 +30,15 @@ public class PurchaseInventoryController {
@Autowired
private IPurchaseInventoryAppService purchaseInventoryAppService;
// @GetMapping(value = "/init")
// public R<?> init() {
// // 采番
//
// InventoryReceiptInitDto initDto = new InventoryReceiptInitDto();
// // 设置供应商列表
// initDto.setSupplier(supplierService.list())
// // 设置药房列表
// .setLocation(locationService.list(new LambdaQueryWrapper<Location>().in(Location::getFormEnum, 1)))
// // 药品详细
// .setMedicationDetail(medicationService.getDetailList());
// return R.ok(initDto);
// }
// 添加入库单据之前需要
// 1.supplier供应商信息列表
// 2.location信息列表包括药房药库材料柜护理站
// 3.practitioner_role与practitioner联查获取对应location的管理员列表
// 4.查询选定对应药品类型的药品信息列表
/**
* 入库单据页面初始化
*
* @return 初始化信息
*/
@GetMapping(value = "/init")
public R<?> purchaseInventoryInit() {
return purchaseInventoryAppService.purchaseInventoryInit();
}
/**
* 入库单据列表

View File

@@ -58,18 +58,6 @@ public class InventoryReceiptDto implements Serializable {
@NotNull
private Long supplierId;
/** 源仓库类型 */
@NotNull
private Integer sourceTypeEnum;
/** 源仓库 */
@NotNull
private Long sourceLocationId;
/** 源仓位 */
@NotNull
private Long sourceLocationStoreId;
/** 目的仓库类型 */
@NotNull
private Integer purposeTypeEnum;
@@ -86,6 +74,10 @@ public class InventoryReceiptDto implements Serializable {
@NotNull
private Long applicantId;
/** 经手人 */
@NotNull
private Long practitionerId;
/** 申请时间 */
private Date applyTime;

View File

@@ -5,11 +5,6 @@ package com.openhis.web.inventorymanage.dto;
import java.util.List;
import com.openhis.administration.domain.Location;
import com.openhis.administration.domain.Supplier;
import com.openhis.medication.domain.MedicationDetail;
import com.openhis.web.basedatamanage.dto.LocationQueryDto;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -23,14 +18,84 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
public class InventoryReceiptInitDto {
// 返回前台的应是dto 懒得定义请勿学习
/**
* 单据号
*/
private String busNo;
/** 药房信息 */
private List<Location> location;
/**
* 供应商
*/
private List<InventoryReceiptInitDto.supplierListOption> supplierListOptions;
/** 供应商信息 */
private List<Supplier> supplier;
/**
* 经手人
*/
private List<InventoryReceiptInitDto.practitionerListOption> practitionerListOptions;
/** 药品详细信息 */
private List<MedicationDetail> medicationDetail;
/**
* 入库项目类型
*/
private List<InventoryReceiptInitDto.itemTypeOption> itemTypeOptions;
/**
* 审批状态
*/
private List<InventoryReceiptInitDto.supplyStatusOption> supplyStatusOptions;
/**
* 供应商
*/
@Data
public static class supplierListOption {
private Long value;
private String label;
public supplierListOption(Long value, String label) {
this.value = value;
this.label = label;
}
}
/**
* 经手人
*/
@Data
public static class practitionerListOption {
private Long value;
private String label;
public practitionerListOption(Long value, String label) {
this.value = value;
this.label = label;
}
}
/**
* 入库项目类型
*/
@Data
public static class itemTypeOption {
private Integer value;
private String label;
public itemTypeOption(Integer value, String label) {
this.value = value;
this.label = label;
}
}
/**
* 入库项目类型
*/
@Data
public static class supplyStatusOption {
private Integer value;
private String label;
public supplyStatusOption(Integer value, String label) {
this.value = value;
this.label = label;
}
}
}

View File

@@ -33,7 +33,7 @@ public class InventoryReceiptPageDto implements Serializable {
private Long id;
/** 单据号 */
private String busNo;
private String supplyBusNo;
/** 状态 */
private Integer statusEnum;
@@ -42,9 +42,9 @@ public class InventoryReceiptPageDto implements Serializable {
/** 供应商 */
private Long supplierId;
/** 目的仓库 */
@Dict(dictCode = "id", dictText = "name", dictTable = "adm_location")
private Long purposeLocationId;
/** 经手人 */
@Dict(dictCode = "id", dictText = "name", dictTable = "adm_practitioner")
private Long practitionerId;
/** 审批人 */
@Dict(dictCode = "id", dictText = "name", dictTable = "adm_practitioner")

View File

@@ -28,9 +28,6 @@ public class InventorySearchParam implements Serializable {
/** 状态 */
private Integer statusEnum;
/** 分类 */
private Integer categoryEnum;
/** 供应商 */
private Long supplierId;
@@ -40,9 +37,6 @@ public class InventorySearchParam implements Serializable {
/** 申请结束时间 */
private Date applyTimeEnd;
/** 目的仓库 */
private Long purposeLocationId;
/** 申请人 */
private Long applicantId;
/** 经手人 */
private Long practitionerId;
}

View File

@@ -4,6 +4,14 @@
package com.openhis.web.inventorymanage.dto;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.openhis.common.annotation.Dict;
import lombok.Data;
import lombok.experimental.Accessors;
@@ -19,4 +27,77 @@ import lombok.experimental.Accessors;
public class ReceiptDetailDto implements Serializable {
private static final long serialVersionUID = 1L;
/** ID */
@TableId(type = IdType.ASSIGN_ID)
@JsonSerialize(using = ToStringSerializer.class)
private Long id;
/** 单据号 */
private String busNo;
/** 当前库存总数 */
private BigDecimal totalQuantity;
/** 数量 */
private BigDecimal itemQuantity;
/** 物品名称 */
private String itemName;
/** 规格 */
private String totalVolume;
/** 物品计量单位 */
@Dict(dictCode = "unit_code")
private String unitCode;
private String unitCode_dictText;
/** 请求细节 */
private String detailJson;
/** 供应人名称 */
private String practitionerName;
/** 供应商名称 */
private String supplierName;
/** 目的仓库类型 */
private Integer purposeTypeEnum;
/** 目的仓库名称 */
private String purposeLocationName;
/** 目的货位名称 */
private String purposeLocationStoreName;
/** 申请时间 */
private Date applyTime;
/** 产品批号 */
private String lotNumber;
/** 追溯码 */
private String traceNo;
/** 发票号 */
private String invoiceNo;
/** 开始时间 */
private Date startTime;
/** 结束时间 */
private Date endTime;
/** 单价 */
private BigDecimal price;
/** 总价 */
private BigDecimal totalPrice;
/** 售价 */
private BigDecimal sellPrice;
/** 拆零售价 */
private BigDecimal minSellPrice;
}

View File

@@ -3,6 +3,8 @@
*/
package com.openhis.web.inventorymanage.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@@ -11,6 +13,7 @@ import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.openhis.web.inventorymanage.dto.InventoryReceiptPageDto;
import com.openhis.web.inventorymanage.dto.InventorySearchParam;
import com.openhis.web.inventorymanage.dto.ReceiptDetailDto;
/**
* 采购入库查询用 mapper
@@ -32,4 +35,12 @@ public interface PurchaseInventoryMapper {
Page<InventoryReceiptPageDto> selectInventoryReceiptPage(@Param("page") Page<InventoryReceiptPageDto> page,
@Param(Constants.WRAPPER) QueryWrapper<InventorySearchParam> queryWrapper,
@Param("purchaseInventory") Integer purchaseInventory);
/**
* 查询单据详情
*
* @param busNo 单据号
* @return 单据详情
*/
List<ReceiptDetailDto> selectDetail(@Param("busNo") String busNo);
}

View File

@@ -12,7 +12,7 @@ import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.core.common.core.domain.R;
import com.core.common.enums.AssignSeqEnum;
import com.openhis.common.enums.AssignSeqEnum;
import com.core.common.utils.AssignSeqUtil;
import com.core.common.utils.ChineseConvertUtils;
import com.core.common.utils.DateUtils;

View File

@@ -8,23 +8,21 @@
T2.bus_no AS supply_bus_no,
T2.status_enum,
T2.supplier_id,
T2.purpose_location_id,
T2.approver_id,
T2.approval_time,
T2.applicant_id,
T2.apply_time,
T2.purpose_location_id,
T2.practitioner_id,
T2.tenant_id
FROM (SELECT T1.id,
T1.bus_no,
T1.status_enum,
T1.supplier_id,
T1.purpose_location_id,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
T1.apply_time,
T1.purpose_location_id,
T1.practitioner_id,
T1.tenant_id
FROM wor_supply_request AS T1
WHERE type_enum = #{purchaseInventory}
@@ -32,15 +30,47 @@
T1.bus_no,
T1.status_enum,
T1.supplier_id,
T1.purpose_location_id,
T1.approver_id,
T1.approval_time,
T1.applicant_id,
T1.apply_time,
T1.purpose_location_id,
T1.practitioner_id,
T1.tenant_id
ORDER BY T1.bus_no desc
) AS T2
${ew.customSqlSegment}
</select>
<select id="selectDetail" resultType="com.openhis.web.inventorymanage.dto.ReceiptDetailDto">
SELECT *
FROM wor_supply_request T1
LEFT JOIN med_medication_definition T2
ON T1.item_id = T2.id
LEFT JOIN med_medication T3
ON T3.medication_def_id = T2.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
WHERE T1.bus_no = #{busNo}
AND T1.delete_flag = '0'
UNION ALL
SELECT *
FROM wor_supply_request T1
LEFT JOIN adm_device_definition T8
ON T1.item_id = T8.id
LEFT JOIN adm_supplier T4
ON T4.id = T1.supplier_id
LEFT JOIN adm_practitioner T5
ON T1.practitioner_id = T5.id
LEFT JOIN adm_location T6
ON T1.purpose_location_id = T6.id
LEFT JOIN adm_location T7
ON T1.purpose_location_store_id = T7.id
WHERE T1.bus_no = #{busNo}
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -50,6 +50,7 @@
T1.unit_price,
T1.total_price,
T1.prescription_no,
T1.bus_no,
T1.enterer_id,
T1.entered_date,
T1.account_id,
@@ -72,7 +73,7 @@
ON T1.context_enum = #{device}
AND T1.product_id = T4.id
WHERE T1.encounter_id = #{encounterId}
AND T1.status_enum IN (1 , 2 , 5)
AND T1.status_enum IN (#{planned} , #{billable} , #{billed})
AND T1.delete_flag = '0'
</select>
</mapper>

View File

@@ -14,7 +14,6 @@
T1.tendered_amount,
T1.returned_amount,
T1.contract_no,
T1.charge_item_ids,
T2.prescription_no,
T2.account_id
FROM fin_payment_reconciliation AS T1
@@ -24,4 +23,48 @@
AND T1.status_enum IN (#{success},#{refundAll},#{refundPart})
AND T1.delete_flag = '0'
</select>
<select id="selectRefundItem" resultType="com.openhis.web.chargemanage.dto.RefundItemDto">
SELECT T1.*,
T2.name AS service_name
FROM fin_payment_reconciliation AS T1
LEFT JOIN adm_charge_item AS T2
ON T2.id IN T1.charge_item_ids
LEFT JOIN med_medication_request AS T3
ON T3.bus_no = SUBSTRING(T2.bus_no, #{three})
LEFT JOIN med_medication_dispense AS T4
ON T4.med_req_id = T3.id
WHERE T2.service_table = #{medMedicationRequest}
AND T1.id IN
<foreach collection="paymentIdList" item="paymentId" separator="," open="(" close=")">
#{paymentId}
</foreach>
UNION ALL
SELECT T1.*,
T2.name AS service_name
FROM fin_payment_reconciliation AS T1
LEFT JOIN adm_charge_item AS T2
ON T2.id IN T1.charge_item_ids
LEFT JOIN wor_device_request AS T5
ON T6.bus_no = SUBSTRING(T2.bus_no, #{three})
LEFT JOIN wor_device_dispense AS T6
ON T6.device_req_id = T5.id
WHERE T2.service_table = #{worDeviceRequest}
AND T1.id IN
<foreach collection="paymentIdList" item="paymentId" separator="," open="(" close=")">
#{paymentId}
</foreach>
UNION ALL
SELECT T1.*,
T2.name AS service_name
FROM fin_payment_reconciliation AS T1
LEFT JOIN adm_charge_item AS T2
ON T2.id IN T1.charge_item_ids
LEFT JOIN wor_service_request AS T7
ON T7.bus_no = SUBSTRING(T2.bus_no, #{three})
WHERE T2.service_table = #{worServiceRequest}
AND T1.id IN
<foreach collection="paymentIdList" item="paymentId" separator="," open="(" close=")">
#{paymentId}
</foreach>
</select>
</mapper>