自动化立体仓库 - WMS系统
zwl
21 小时以前 6e18b1e086f202512eeb9aa988a8b9026cfccec3
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
package com.zy.api.controller;
 
 
import com.alibaba.fastjson.JSONObject;
import com.core.annotations.ManagerAuth;
import com.core.common.Cools;
import com.core.common.R;
import com.zy.api.controller.params.HmesBackLocParams;
import com.zy.api.controller.params.ReceviceTaskParams;
import com.zy.api.service.HmesApiService;
import com.zy.asrs.entity.param.OpenOrderPakoutParam;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
 
import java.util.Objects;
 
@Api(value = "HMES对接")
@RestController
@Slf4j
@RequestMapping("/api")
public class HmesApiController {
 
    @Autowired
    private HmesApiService hmesApiService;
 
    /**
     * 人工穿线
     * @author Ryan
     * @date 2026/1/10 10:40
     * @return com.core.common.R
     */
//    @ManagerAuth
    @ApiOperation("下发生产任务")
    @PostMapping("/work/tasks")
    public R menauWork(@RequestBody OpenOrderPakoutParam params) {
        log.info("下发生产任务={}", JSONObject.toJSONString(params));
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        if (Cools.isEmpty(params.getOrderNo())) {
            return R.error("单据编号[orderNo]不能为空");
        }
        if (Cools.isEmpty(params.getBillType())) {
            return R.error("单据类型[BillType]不能为空");
        }
        if (Cools.isEmpty(params.getMatList())) {
            return R.error("单据明细[orderDetails]不能为空");
        }
 
        return hmesApiService.pubWorkTask(params);
    }
 
    /**
     * 穿线完成,释放机台周边库位
     * @author Ryan
     * @date 2026/1/10 11:06
     * @param params
     * @return com.core.common.R
     */
//    @ManagerAuth
    @ApiOperation("穿线完成")
    @PostMapping("/work/release/lock")
    public R releaseLock(@RequestBody ReceviceTaskParams params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        if (Objects.isNull(params.getDevNo())) {
            return R.error("机台号不能为空!!");
        }
 
        return hmesApiService.releaseLock(params);
    }
 
    /**
     * 解冻所有机台工位
     * @author Ryan
     * @date 2026/3/28 20:45
     * @return com.core.common.R
     */
//    @ManagerAuth
    @ApiOperation("解冻所有机台工位")
    @PostMapping("/work/release/lock/all")
    public R releaseAllLocks() {
        return hmesApiService.releaseAllLocks();
    }
 
    /**
     * 获取机台及对应工位冻结情况
     * @author Ryan
     * @date 2026/3/20 11:06
     * @param devNo 机台号,不传则查询全部
     * @return com.core.common.R
     */
//    @ManagerAuth
    @ApiOperation("获取机台及对应工位冻结情况")
    @GetMapping("/work/freeze/status")
    public R getDeviceFreezeStatus(@RequestParam(required = false) String devNo) {
        return hmesApiService.getDeviceFreezeStatus(devNo);
    }
 
    /**
     * 空桶/余料回库
     * @author Ryan
     * @date 2026/3/20 11:28
     * @param params
     * @return com.core.common.R
     */
//    @ManagerAuth
    @ApiOperation("空桶/余料回库")
    @PostMapping("/work/back/loc")
    public R backLoc(@RequestBody HmesBackLocParams params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        if (Cools.isEmpty(params.getLocNo()) && Cools.isEmpty(params.getWorkNo()) && Cools.isEmpty(params.getBarcode())) {
            return R.error("库位号[locNo]、工作号[workNo]、条码[barcode]不能同时为空");
        }
        if (Cools.isEmpty(params.getBackType())) {
            return R.error("回库类型[backType]不能为空");
        }
        return hmesApiService.backLoc(params);
    }
 
 
}