自动化立体仓库 - WMS系统
#
zwl
7 小时以前 44b6b79dd5dee0ebbd2d11b08abbc2be275bed58
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
141
142
143
144
145
146
147
148
149
package com.zy.api.controller;
 
 
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.annotations.ManagerAuth;
import com.core.common.R;
import com.zy.api.controller.params.ReceviceTaskParams;
import com.zy.api.controller.params.WorkTaskParams;
import com.zy.api.service.WcsApiService;
import com.zy.asrs.entity.LocAroundBind;
import com.zy.asrs.entity.WaitPakin;
import com.zy.asrs.service.LocAroundBindService;
import com.zy.asrs.service.WaitPakinService;
import com.zy.asrs.utils.Utils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.util.List;
import java.util.Objects;
 
@Api("WCS交互接口")
@RequestMapping("/wcs")
@RestController
public class WcsApiController {
 
    @Autowired
    private WcsApiService wcsApiService;
    @Autowired
    private WaitPakinService waitPakinService;
 
    @Autowired
    private LocAroundBindService locAroundBindService;
    /**
     * 通知WCS锁定周边库位,及禁止任务执行
     * @author Ryan
     * @date 2026/1/10 11:13
     * @return com.core.common.R
     */
    @ManagerAuth
    @ApiOperation("锁定机台周边库位执行任务")
    @PostMapping("/lock/locs")
    public R reportLockLocs(@RequestBody ReceviceTaskParams params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        if (Objects.isNull(params.getDevNo())) {
            return R.error("机台号不能为空!!");
        }
 
        return wcsApiService.lockLocs(params);
    }
 
 
    /**
     * 回库搬运指令
     * @author Ryan
     * @date 2026/1/10 13:08
     * @param params
     * @return com.core.common.R
     */
//    @ManagerAuth
    @ApiOperation("堆垛机回库搬运指令")
    @PostMapping("/back/loc")
    public synchronized R backLoc(@RequestBody String params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        return wcsApiService.backLocs(params);
    }
 
 
    /**
     * 下发任务至WCS
     * @author Ryan
     * @date 2026/1/10 13:57
     * @param params
     * @return com.core.common.R
     */
    @ManagerAuth
    @ApiOperation("下发任务至WCS")
    @PostMapping("/pub/wrks")
    public R pubWrkToWcs(@RequestBody WorkTaskParams params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        return wcsApiService.pubWrkToWcs(params);
    }
 
    @ManagerAuth
    @ApiOperation("设备执行状态回写-wcs任务完成回写")
    @PostMapping("/openapi/report")
    public R receviceTaskFromWcs(@RequestBody ReceviceTaskParams params) {
        if (Objects.isNull(params)) {
            return R.error("参数不能为空!!");
        }
        return wcsApiService.receviceTaskFromWcs(params);
 
    }
 
    @ManagerAuth
    @ApiOperation("获取组托入库托盘信息")
    @PostMapping("/openapi/waitPakins")
    public R waitPakins() {
        List<WaitPakin> waitPakins = waitPakinService.selectList(new EntityWrapper<WaitPakin>().eq("io_status", "N"));
        return R.ok().add(waitPakins);
 
    }
 
    @ManagerAuth
    @ApiOperation("获取机台库位的数组")
    @GetMapping("/openapi/arr")
    public R arr() {
        int i = 0;
        int[] k = new  int[] { 3, 0, 4, 1, 5, 2};
        int c=0;
        int h=0;
        int i1 = 15;
        List<LocAroundBind> locAroundBinds = locAroundBindService.selectList(new EntityWrapper<LocAroundBind>().orderBy("dev_id"));
        String[] arr = new String[90];
        for (LocAroundBind locAroundBind : locAroundBinds) {
            String s = Utils.WMSLocToWCSLoc(locAroundBind.getBlocNo());
            int index = i*6+k[c];
            arr[index] = s;
            c++;
            if (c==k.length) {
                c=0;
                i++;
            }
            if (i==i1){
                i=0;
                h++;
                System.out.print("[");
                for (int j=0;j<i1*6;j++){
                    System.out.print(arr[j]+",");
                }
                System.out.println("]");
                if (h==2){
                    i1 = 13;
                }else if (h==3){
                   i1 = 8;
                }
            }
        }
        return R.ok();
 
    }
}