package com.openhis.administration.service;

import java.math.BigDecimal;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.openhis.administration.domain.ChargeItemDefinition;
import com.openhis.administration.domain.HealthcareService;

/**
 * 费用定价管理Service接口
 *
 * @author system
 * @date 2025-02-20
 */
public interface IChargeItemDefinitionService extends IService<ChargeItemDefinition> {

    /**
     * 获取定价分页列表
     *
     * @param chargeItemDefinition 定价查询条件
     * @param pageNo 页码
     * @param pageSize 页面大小
     * @return 定价分页列表
     */
    Page<ChargeItemDefinition> getPage(ChargeItemDefinition chargeItemDefinition, Integer pageNo, Integer pageSize);

    /**
     * 新增费用定价
     *
     * @param chargeItemDefinition 新增内容
     * @return 新增结果
     */
    boolean addChargeItemDefinition(ChargeItemDefinition chargeItemDefinition);

    /**
     * 删除费用定价
     *
     * @param id 费用定价id
     * @return 新增结果
     */
    boolean deleteChargeItemDefinition(Long id);

    /**
     * 通过服务管理新增费用定价
     *
     * @param healthcareService 服务管理
     * @param chargeItemDefinition 费用定价
     * @return 新增结果
     */
    boolean addChargeItemDefinitionByHealthcareService(HealthcareService healthcareService,
        ChargeItemDefinition chargeItemDefinition);

    /**
     * 创建费用定价和详情
     *
     * @param chargeName 名称
     * @param typeCode 财务类别
     * @param ybCode 医保类别
     * @param unitCode 包装单位
     * @param purchasePrice 购入价
     * @param retailPrice 零售价
     * @param maximumRetailPrice 最高零售价
     * @param orgId 机构ID
     * @param instanceTable 关联表
     * @param instanceId 关联ID
     */
    void addChargeItemDefinitionAndDetail(String chargeName, String typeCode, String ybCode, String unitCode,
        BigDecimal purchasePrice, BigDecimal retailPrice, BigDecimal maximumRetailPrice, Long orgId,
        String instanceTable, Long instanceId);
}