package com.ruoyi.sales.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.ruoyi.basic.pojo.Customer; import com.ruoyi.common.enums.SaleEnum; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.sales.dto.*; import com.ruoyi.sales.pojo.SalesLedger; import com.ruoyi.sales.pojo.SalesLedgerProcessRoute; import com.ruoyi.sales.pojo.SalesLedgerProduct; import org.springframework.web.multipart.MultipartFile; import javax.annotation.Nullable; import javax.validation.constraints.NotNull; import java.math.BigDecimal; import java.util.List; import java.util.Map; /** * 销售台账Service接口 * * @author ruoyi * @date 2025-05-08 */ public interface ISalesLedgerService extends IService { List selectSalesLedgerList(SalesLedgerDto salesLedgerDto); int deleteSalesLedgerByIds(Long[] ids); int addOrUpdateSalesLedger(SalesLedgerDto salesLedgerDto); List getSalesLedgerProductListByRelateId(@NotNull Long relateId, @NotNull SaleEnum type); List getSalesLedgerProductListByIds(@Nullable List relateIds, @NotNull SaleEnum type); void handleSalesLedgerProducts(Long salesLedgerId, List products, SaleEnum type); SalesLedgerDto getSalesLedgerWithProducts(SalesLedgerDto salesLedgerDto); List getSalesNo(); BigDecimal getContractAmount(); List getTopFiveList(); List getAmountHalfYear(Integer type); IPage selectSalesLedgerListPage(Page page, SalesLedgerDto salesLedgerDto); void importData(MultipartFile file); List getSalesLedgerWithProductsLoss(Long salesLedgerId); IPage listSalesLedger(SalesLedgerDto salesLedgerDto, Page page); void saleProcessBind(SalesLedgerProcessRoute salesLedgerProcessRoute); SalesProcessCardDto processCard(Long salesLedgerId); SalesLedgerProcessRouteDto salesProcess(Long salesLedgerId); SalesOrdersDto salesOrders(Long salesLedgerId); SalesInvoicesDto salesInvoices(List salesLedgerIds); List salesLabel(Long salesLedgerId); void salesStock(SalesProductStockDto dto); void executeSalesStockApproved(Long salesLedgerId, List salesLedgerProductIds); void executeSalesScanInboundApproved(Long salesLedgerId, Map inboundQtyByLineId); void executeSalesScanInboundUnqualifiedApproved(Long salesLedgerId, Map inboundQtyByLineId); List shippedCustomers(); void scanInbound(SalesScanInboundDto dto); void scanInboundUnqualified(SalesScanInboundDto dto); void scanOutbound(SalesScanInboundDto dto); void scanOutboundUnqualified(SalesScanInboundDto dto); /** * APP 扫码发货:发起发货审批(审批通过后自动扣库存、发货台账与订单状态为已发货) */ void scanShipApply(SalesScanShipDto dto); /** * 发货审批(类型 7)节点状态变更:扫码发货流程 {@code approveRemark} 以 {@code SCAN_SHIP_DELIVERY_JSON:} 开头时回调。 * * @param outcomeStatus 审批流状态:1 审核中 2 通过 3 拒绝 */ void onScanShipDeliveryApproveOutcome(ApproveProcess approveProcess, Integer outcomeStatus); void shippingImport(MultipartFile file); void notShippingImport(MultipartFile file); }