package com.ruoyi.system.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.basic.PageInfo;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.dto.AddProcurementDto;
import com.ruoyi.system.export.PlatformLedgerReportExport;
import com.ruoyi.system.export.ProcurementReportClinicExport;
import com.ruoyi.system.export.ProcurementReportDetailExport;
import com.ruoyi.system.export.ProcurementReportPlatformExport;
import com.ruoyi.system.export.ProcurementReportSupplierExport;
import com.ruoyi.system.model.TErpGoods;
import com.ruoyi.system.model.TErpProcurement;
import com.ruoyi.system.model.TErpProcurementGoods;
import com.ruoyi.system.query.ClinicProcurementReportQuery;
import com.ruoyi.system.query.PerformanceReportQuery;
import com.ruoyi.system.query.TErpGoodsQuery;
import com.ruoyi.system.query.TErpProcurementQuery;
import com.ruoyi.system.vo.*;
import javax.validation.Valid;
import java.math.BigDecimal;
import java.util.List;
/**
*
* erp采购 服务类
*
*
* @author xiaochen
* @since 2025-08-20
*/
public interface TErpProcurementService extends IService {
PageInfo pageList(TErpProcurementQuery query, SysUser user);
PageInfo pageListWarehouse(TErpProcurementQuery query, SysUser user);
TErpProcurementDetailVo detail(String id, SysUser user, String goodsName);
PageInfo pageGoodsPageList(TErpGoodsQuery query, SysUser user);
List inventoryNotEnoughList(SysUser user);
void addProcurement(String clinicSupplierId, SysUser user, @Valid List dtos);
DetailProcurementVO detailProcurement(String clinicSupplierId, SysUser user, String id);
void detailProcurementSend(List clinicSupplierId, SysUser user, String id,String logisticsNumber);
/**
* 供应商采购统计
* @param supplierAndClinicId
* @param startTime
* @param endTime
* @return
*/
List supplierThirtyProcurementStatistics(String supplierAndClinicId, String startTime, String endTime, Integer roleType);
/**
* 供应商30天采购金额统计
* @param supplierAndClinicId
* @param startTime
* @param endTime
* @return
*/
List supplierThirtyMoneyProcurementStatistics(String supplierAndClinicId, String startTime, String endTime,Integer roleType);
/**
* 供应商30天采购总类统计
* @param supplierId
* @return
*/
Integer supplierSalesStatisticsTypeCount(String supplierId);
/**
* 供应商30天采购总数统计
* @param supplierId
* @return
*/
Integer supplierSalesStatisticsCount(String supplierId);
/**
* 供应商30天采购金额统计
* @param supplierId
* @param startTime
* @param endTime
* @return
*/
BigDecimal supplierSalesStatisticsMoney(String supplierId, String startTime, String endTime);
/**
* 供应商30天销售占比
* @param supplierId
* @param startTime
* @param endTime
* @return
*/
List supplierSalesStatisticsGoodsType(String supplierId, String startTime, String endTime);
/**
* 供应商30天销售商品统计
* @param supplierId
* @param startTime
* @param endTime
* @param goodsName
* @return
*/
List supplierSalesStatisticsGoodsCount(String supplierId, String startTime, String endTime, String goodsName);
/**
* 供应商30天销售商品统计
* @param supplierId
* @param startTime
* @param endTime
* @param goodsName
* @return
*/
List supplierSalesStatisticsGoodsCountMonth(String supplierId, String startTime, String endTime, String goodsName);
/**
* 诊所下所有的采购订单详情数据
* @param clinicIds 诊所id集合
* @return
*/
List branchAdminStatisticsThree(List clinicIds);
/**
* 诊所采购报表
* @param query
* @return
*/
PageInfo clinicProcurementReport(ClinicProcurementReportQuery query);
/**
* 诊所采购报表导出
* @param query
* @return
*/
List exportProcurementReportClinic(ClinicProcurementReportQuery query);
/**
* 供应商采购报表导出
* @param query
* @return
*/
List exportProcurementReportSupplier(ClinicProcurementReportQuery query);
/**
* 平台采购报表导出
* @param query
* @return
*/
List exportProcurementReportPlatform(ClinicProcurementReportQuery query);
/**
* 平台分账报表
* @param query
* @return
*/
PageInfo platformLedgerReport(ClinicProcurementReportQuery query);
/**
* 平台分账报表导出
* @param query
* @return
*/
List exportPlatformLedgerReport(ClinicProcurementReportQuery query);
/**
* 分公司业绩报表
* @param query
* @return
*/
PageInfo branchPerformanceReport(PerformanceReportQuery query);
/**
* 业务员业绩报表
* @param query
* @return
*/
PageInfo salespersonPerformanceReport(PerformanceReportQuery query);
/**
* 分公司业绩报表导出
* @param query
* @return
*/
List exportBranchPerformanceReport(PerformanceReportQuery query);
/**
* 业务员业绩报表导出
* @param query
* @return
*/
List exportSalespersonPerformanceReport(PerformanceReportQuery query);
/**
* 诊所采购报表详情列表(商品维度)
* @param id 查询参数(包含采购单ID)
* @return
*/
List clinicProcurementReportDetail(String id);
/**
* 诊所采购报表详情导出(商品维度)
*
* @param procurementIds 查询参数(包含采购单ID列表,支持多选)
* @return
*/
List exportProcurementReportDetail(List procurementIds);
}