采购代码调整,退费代码增加
This commit is contained in:
@@ -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()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,6 +73,4 @@ public class EncounterPatientPaymentDto implements Serializable {
|
||||
/** 合同编码 */
|
||||
private String contractNo;
|
||||
|
||||
/** 处方号集合 */
|
||||
private String chargeItemIds;
|
||||
}
|
||||
|
||||
@@ -51,6 +51,9 @@ public class EncounterPatientPrescriptionDto implements Serializable {
|
||||
/** 处方号 */
|
||||
private String prescriptionNo;
|
||||
|
||||
/** 业务编码 */
|
||||
private String busNo;
|
||||
|
||||
/** 开立人ID */
|
||||
private Long entererId;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -69,4 +69,11 @@ public interface IPurchaseInventoryAppService {
|
||||
* @return 操作结果
|
||||
*/
|
||||
R<?> withdrawApproval(String busNo);
|
||||
|
||||
/**
|
||||
* 入库单据页面初始化
|
||||
*
|
||||
* @return 初始化信息
|
||||
*/
|
||||
R<?> purchaseInventoryInit();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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(),
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
* 入库单据列表
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
Reference in New Issue
Block a user