云
2026-10-25 d54fbc9d4f8981fa0f7f613b33a28a8cd4f764ea
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
139
package cn.iocoder.yudao.module.mes.service.wm.miscreceipt;
 
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.mes.controller.admin.wm.miscreceipt.vo.MesWmMiscReceiptImportExcelVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.miscreceipt.vo.MesWmMiscReceiptImportRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.miscreceipt.vo.MesWmMiscReceiptPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.wm.miscreceipt.vo.MesWmMiscReceiptSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.wm.miscreceipt.MesWmMiscReceiptDO;
import jakarta.validation.Valid;
 
import java.util.List;
import java.util.Set;
 
/**
 * MES 杂项入库单 Service 接口
 *
 * @author 超级管理员
 */
public interface MesWmMiscReceiptService {
 
    /**
     * 创建杂项入库单
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createMiscReceipt(@Valid MesWmMiscReceiptSaveReqVO createReqVO);
 
    /**
     * 修改杂项入库单
     *
     * @param updateReqVO 修改信息
     */
    void updateMiscReceipt(@Valid MesWmMiscReceiptSaveReqVO updateReqVO);
 
    /**
     * 删除杂项入库单(级联删除行)
     *
     * @param id 编号
     */
    void deleteMiscReceipt(Long id);
 
    /**
     * 获得杂项入库单
     *
     * @param id 编号
     * @return 杂项入库单
     */
    MesWmMiscReceiptDO getMiscReceipt(Long id);
 
    /**
     * 获得杂项入库单分页
     *
     * @param pageReqVO 分页参数
     * @return 杂项入库单分页
     */
    PageResult<MesWmMiscReceiptDO> getMiscReceiptPage(MesWmMiscReceiptPageReqVO pageReqVO);
 
    /**
     * 提交杂项入库单审批(草稿 → 审批中)
     *
     * 审核人由「系统管理 - 审批配置」按业务类型统一配置(业务编码 misc_receipt_approve),
     * 提交时无需指定;未启用审批或未配置有效审核人时抛出业务异常。
     *
     * @param id 编号
     */
    void submitMiscReceiptApproval(Long id);
 
    /**
     * 获得杂项入库单审批的审核人编号集合
     *
     * 供前端判断当前登录用户是否应展示「审核」按钮;未配置时返回空集合。
     *
     * @return 审核人用户编号集合
     */
    Set<Long> getMiscReceiptApproverUserIds();
 
    /**
     * 审核杂项入库单(审批中 → 已审批 / 草稿)
     *
     * 仅业务编码 misc_receipt_approve 配置的审核人可操作(多人时或签),且仅在审批中状态下允许。
     * 审核通过置为已审批(可执行入库);审核不通过必须填写原因,退回草稿可修改后重新提交。
     *
     * @param id           编号
     * @param pass         是否通过,true=通过 / false=不通过
     * @param reviewRemark 审核意见,审核不通过时必填
     */
    void auditMiscReceipt(Long id, Boolean pass, String reviewRemark);
 
    /**
     * 回写 BPM 审批结果(供 BPM 流程状态监听器调用)
     *
     * 仅在单据处于审批中时生效:通过=已审批 / 不通过=草稿 / 取消=已取消。
     *
     * @param id        编号
     * @param bpmStatus BPM 任务状态,见 {@link cn.iocoder.yudao.module.bpm.enums.task.BpmTaskStatusEnum}
     * @param reason    审批意见 / 取消原因
     */
    void updateMiscReceiptAuditStatus(Long id, Integer bpmStatus, String reason);
 
    /**
     * 执行入库(已审批 → 已完成),更新库存台账
     *
     * @param id 编号
     */
    void finishMiscReceipt(Long id);
 
    /**
     * 取消杂项入库单(草稿/已审批 → 已取消)
     *
     * @param id 编号
     */
    void cancelMiscReceipt(Long id);
 
    /**
     * 校验杂项入库单存在
     *
     * @param id 编号
     * @return 杂项入库单
     */
    MesWmMiscReceiptDO validateMiscReceiptExists(Long id);
 
    /**
     * 校验杂项入库单是否可编辑(存在且为草稿状态)
     *
     * @param id 编号
     */
    void validateMiscReceiptEditable(Long id);
 
    /**
     * 导入杂项入库单
     *
     * @param importList    导入列表
     * @param updateSupport 是否支持更新,默认为 false
     * @return 导入结果
     */
    MesWmMiscReceiptImportRespVO importMiscReceiptList(List<MesWmMiscReceiptImportExcelVO> importList, boolean updateSupport);
 
}