huminmin
8 天以前 7b8b2456bb15aa733b8599fce2ada5d9549ba881
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
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.approve.pojo.ApproveProcess;
import com.ruoyi.basic.pojo.Customer;
import com.ruoyi.common.enums.SaleEnum;
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.servlet.http.HttpServletResponse;
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<SalesLedger> {
 
    List<SalesLedger> selectSalesLedgerList(SalesLedgerDto salesLedgerDto);
 
    int deleteSalesLedgerByIds(Long[] ids);
 
    int addOrUpdateSalesLedger(SalesLedgerDto salesLedgerDto);
 
    List<SalesLedgerProduct> getSalesLedgerProductListByRelateId(@NotNull Long relateId, @NotNull SaleEnum type);
 
    List<SalesLedgerProduct> getSalesLedgerProductListByIds(@Nullable List<Long> relateIds, @NotNull SaleEnum type);
 
    void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, SaleEnum type);
 
    SalesLedgerDto getSalesLedgerWithProducts(SalesLedgerDto salesLedgerDto);
 
    List getSalesNo();
 
    BigDecimal getContractAmount();
 
    List getTopFiveList();
 
    List<MonthlyAmountDto> getAmountHalfYear(Integer type);
 
    IPage<SalesLedger> selectSalesLedgerListPage(Page page, SalesLedgerDto salesLedgerDto);
 
    void importData(MultipartFile file);
 
    List<LossProductModelDto> getSalesLedgerWithProductsLoss(Long salesLedgerId);
 
    IPage<SalesLedgerDto> listSalesLedger(SalesLedgerDto salesLedgerDto, Page page);
 
    void saleProcessBind(SalesLedgerProcessRouteDto salesLedgerProcessRouteDto);
 
    SalesProcessCardDto processCard(Long salesLedgerId);
 
    SalesLedgerProcessRouteDto salesProcess(Long salesLedgerId);
 
    SalesOrdersDto salesOrders(Long salesLedgerId);
 
    SalesInvoicesDto salesInvoices(List<Long> salesLedgerIds);
 
    List<SalesLabelDto> salesLabel(Long salesLedgerId);
 
    void salesStock(SalesProductStockDto dto);
 
    void executeSalesStockApproved(Long salesLedgerId, List<Long> salesLedgerProductIds);
 
    void executeSalesScanInboundApproved(Long salesLedgerId, Map<Long, BigDecimal> inboundQtyByLineId);
 
    void executeSalesScanInboundUnqualifiedApproved(Long salesLedgerId, Map<Long, BigDecimal> inboundQtyByLineId);
 
    List<Customer> 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);
 
    /**
     * 反审核操作:作废或重新生成
     */
    List<Long> counterReview(CounterReviewDto dto);
 
    /**
     * 标记订单完成
     */
    void markOrderCompleted(List<Long> ids);
 
    /**
     * 递增打印次数
     * @param id 销售台账ID
     * @param printType 打印类型:label=标签打印,document=单据打印
     */
    void incrementPrintCount(Long id, String printType);
 
    /**
     * 导出销售台账及产品明细(两个sheet页)
     * @param response HttpServletResponse
     * @param salesLedgerDto 查询条件
     */
    void exportWithProducts(HttpServletResponse response, SalesLedgerDto salesLedgerDto);
 
    /**
     * 导出售后台账工艺路线
     * @param response HttpServletResponse
     * @param salesLedgerIds 销售台账ID列表
     * @param completedTimeStart 完成时间开始
     * @param completedTimeEnd 完成时间结束
     */
    void exportProcessRoute(HttpServletResponse response, List<Long> salesLedgerIds, String completedTimeStart, String completedTimeEnd);
}