自动化立体仓库 - WMS系统
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
140
package com.zy.asrs.service;
 
import com.core.common.R;
import com.zy.asrs.entity.WrkDetl;
import com.zy.asrs.entity.param.*;
import com.zy.asrs.entity.result.OpenOrderCompeteResult;
import com.zy.asrs.entity.result.StockVo;
 
import java.util.Map;
import java.util.List;
 
public interface OpenService {
 
    /**
     * 添加入库单
     */
    void pakinOrderCreate(OpenOrderPakinParam param);
 
    /**
     * 入库单回写
     */
    List<OpenOrderCompeteResult> pakinOrderComplete(OpenOrderCompleteParam param);
 
    /**
     * 添加入库单
     */
    void pakoutOrderCreate(OpenOrderPakoutParam param);
 
    /**
     * pause out order
     */
    R pakoutOrderPause(OpenOrderPakoutPauseParam param);
 
    /**
     * execute out order
     */
    R pakoutOrderExecute(OpenOrderPakoutExecuteParam param);
 
    /**
     * 入库单回写
     */
    List<OpenOrderCompeteResult> pakoutOrderComplete(OpenOrderCompleteParam param);
 
    /**
     * 库存统计
     */
    List<StockVo> queryStock();
 
    /**
     * 按托盘码批量重报入库历史到 ERP。
     */
    R reportPakinHistoryToErp(List<String> barcodes);
 
    // ------------------------------------------
 
    // 打包上线
    void packageUp(PackParam param);
 
    /**
     * 同步商品信息
     * @param param
     */
    void syncMat(MatSyncParam param);
 
    void taskArmReport(TaskArmReportParam param);
    void taskArmCycleResult(TaskArmCycleResultParam param);
    void taskArmWorkspaceStatus(TaskArmWorkspaceStatusParam param);
    boolean TaskArmLocStatus(ArmOKParam param);
    void taskArmWorkOrderStatus(OrderArmEndParam param);
    List<AgvLocListDetlParam> getAgvLocList(AgvLocListParam param);
    boolean bindCtnrAndBin(bindCtnrAndBinParam param);
    boolean taskArmOrderResult(OrderArmEndParam param);
    List<PickWrkDetlListParam> getPickList(PdaPickListParam param);
 
    /**
     * 输出所有入库站和出库站站点
     * @return
     */
    R stationAll ();
 
    /**
     * 7.3 组托信息下发
     */
    R mesToComb(MesToCombParam param);
 
    /**
     * 7.11 出库通知单(传递有序无序规则)
     */
    R outOrder(OutTaskParam  param,int count,int i);
 
    /**
     * 7.11 出库通知单(传递有序无序规则)批量建单,同一事务:任一行失败则全部回滚。
     */
    R outOrderBatch(Map<String, List<OutTaskParam>> linesByBatchSeq,int count);
 
    /**
     * ERP / IoT 出库通知先生成出库订单,不直接生成任务。
     *
     * 该方法只负责把接口参数落到 man_order_pakout / man_order_detl_pakout。
     * 库位锁定、WrkMast/WrkDetl 创建和 WCS 下发都留给后续定时生成任务流程处理。
     */
    R outOrderCreatePakoutOrder(List<OutTaskParam> params);
 
    /**
     * 创建出库订单,并指定订单是否立即允许定时器生成任务。
     *
     * executable=true:订单 status=1,适用于 ERP /outOrder,创建后自动生成并下发。
     * executable=false:订单 status=0,适用于 IoT/MQTT 预创建,必须调用执行接口后才生成任务。
     *
     * 该开关只控制“是否允许生成后续任务”,不代表订单完成状态:
     * - 订单完成进度仍由 settle 和明细 work_qty/qty 判断;
     * - 中止/恢复继续复用同一个 status 字段,避免新增数据库字段。
     */
    R outOrderCreatePakoutOrder(List<OutTaskParam> params, boolean executable);
 
    /**
     * 扫描待生成任务的出库订单,按任务批次键批量生成任务。
     *
     * 调度器入口:会遍历启用中的出库订单,每个订单最多生成一个当前可放行的批次。
     * 高站点批次键为 entryWmsCode;低站点批次键为 orderNo。
     */
    R generatePendingPakoutOrderTasks();
 
    /**
     * 生成指定出库订单当前允许的一个批次任务。
     *
     * orderNo 对应 WrkMast.userNo;任务批次键在实现中会强制作为 WrkMast.batchSeq。
     */
    R generatePendingPakoutOrderTasks(String orderNo);
 
    /**
     * 7.9 出库异常变动上报
     */
    R outOrderAbnormalReport(OutOrderAbnormalReportParam param);
 
    /**
     * 7.10 出库异常变动处理
     */
    R outOrderAbnormalHandle(OutOrderAbnormalHandleParam param);
}