自动化立体仓库 - WMS系统
chen.llin
2 天以前 2816415f539ef54839e331657edae7055c243ad8
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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
package com.zy.asrs.controller;
 
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.baomidou.mybatisplus.mapper.Wrapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.core.annotations.ManagerAuth;
import com.core.common.BaseRes;
import com.core.common.Cools;
import com.core.common.DateUtils;
import com.core.common.R;
import com.core.exception.CoolException;
import com.zy.asrs.entity.LocCache;
import com.zy.asrs.entity.param.LocMastInitParam;
import com.zy.asrs.service.LocCacheService;
import com.zy.common.web.BaseController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
 
import java.util.*;
 
@RestController
public class LocCacheController extends BaseController {
 
    @Autowired
    private LocCacheService locCacheService;
 
    @RequestMapping(value = "/locCache/{id}/auth")
    @ManagerAuth
    public R get(@PathVariable("id") String id) {
        return R.ok(locCacheService.selectById(String.valueOf(id)));
    }
 
    @RequestMapping(value = "/locCache/list/auth")
    @ManagerAuth
    public R list(@RequestParam(defaultValue = "1") Integer curr,
                  @RequestParam(defaultValue = "10") Integer limit,
                  @RequestParam(required = false) String orderByField,
                  @RequestParam(required = false) String orderByType,
                  @RequestParam(required = false) String condition,
                  @RequestParam Map<String, Object> param) {
        EntityWrapper<LocCache> wrapper = new EntityWrapper<>();
        excludeTrash(param);
        convert(param, wrapper);
        allLike(LocCache.class, param.keySet(), wrapper, condition);
        if (!Cools.isEmpty(orderByField)) {
            wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));
        }
        // 移除 full_plt = "N" 的限制,允许查询所有状态的库位(包括满托和空托)
        // 如果需要在后端管理页面过滤,可以在前端进行过滤
        return R.ok(locCacheService.selectPage(new Page<>(curr, limit), wrapper));
    }
 
    private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper) {
        for (Map.Entry<String, Object> entry : map.entrySet()) {
            String val = String.valueOf(entry.getValue());
            // 将驼峰命名转换为下划线命名(如 locNo -> loc_no)
            String columnName = humpToLine(entry.getKey());
            if (val.contains(RANGE_TIME_LINK)) {
                String[] dates = val.split(RANGE_TIME_LINK);
                wrapper.ge(columnName, DateUtils.convert(dates[0]));
                wrapper.le(columnName, DateUtils.convert(dates[1]));
            } else {
                wrapper.like(columnName, val);
            }
        }
    }
 
    @RequestMapping(value = "/locCache/add/auth")
    @ManagerAuth
    public R add(LocCache locCache) {
        locCacheService.insert(locCache);
        return R.ok();
    }
 
    @RequestMapping(value = "/locCache/update/auth")
    @ManagerAuth
    public R update(LocCache locCache) {
        if (Cools.isEmpty(locCache) || null == locCache.getLocNo()) {
            return R.error();
        }
        locCacheService.updateById(locCache);
        return R.ok();
    }
 
    @RequestMapping(value = "/locCache/delete/auth")
    @ManagerAuth
    public R delete(@RequestParam(value = "ids[]") Long[] ids) {
        for (Long id : ids) {
            locCacheService.deleteById(id);
        }
        return R.ok();
    }
 
    @RequestMapping(value = "/locCache/export/auth")
    @ManagerAuth
    public R export(@RequestBody JSONObject param) {
        EntityWrapper<LocCache> wrapper = new EntityWrapper<>();
        List<String> fields = JSONObject.parseArray(param.getJSONArray("fields").toJSONString(), String.class);
        Map<String, Object> map = excludeTrash(param.getJSONObject("locCache"));
        convert(map, wrapper);
        List<LocCache> list = locCacheService.selectList(wrapper);
        return R.ok(exportSupport(list, fields));
    }
 
    @RequestMapping(value = "/locCacheQuery/auth")
    @ManagerAuth
    public R query(String condition) {
        EntityWrapper<LocCache> wrapper = new EntityWrapper<>();
        wrapper.like("loc_no", condition);
        Page<LocCache> page = locCacheService.selectPage(new Page<>(0, 10), wrapper);
        List<Map<String, Object>> result = new ArrayList<>();
        for (LocCache locCache : page.getRecords()) {
            Map<String, Object> map = new HashMap<>();
            map.put("id", locCache.getLocNo());
            map.put("value", locCache.getLocNo());
            result.add(map);
        }
        return R.ok(result);
    }
 
    @RequestMapping(value = "/locCache/check/column/auth")
    @ManagerAuth
    public R query(@RequestBody JSONObject param) {
        Wrapper<LocCache> wrapper = new EntityWrapper<LocCache>().eq(humpToLine(String.valueOf(param.get("key"))), param.get("val"));
        if (null != locCacheService.selectOne(wrapper)) {
            return R.parse(BaseRes.REPEAT).add(getComment(LocCache.class, String.valueOf(param.get("key"))));
        }
        return R.ok();
    }
 
 
    @RequestMapping("locCache/init/auth")
    @ManagerAuth
    public R init(LocMastInitParam param) {
        if (Objects.isNull(param)) {
            throw new CoolException("参数不能为空!");
        }
        return locCacheService.initLocCache(param, getUserId());
    }
 
    /**
     * 锁定/解锁缓存库位
     * @param locNo 库位号
     * @param lock 是否锁定,true-锁定,false-解锁
     * @param fullPlt 是否满托,true-满托(设置为F),false-空托(设置为D),解锁时可为空
     * @return 操作结果
     */
    @RequestMapping(value = "/locCache/lockOrUnlock/auth", method = RequestMethod.POST)
    @ManagerAuth
    public R lockOrUnlock(@RequestParam String locNo, @RequestParam Boolean lock, @RequestParam(required = false) Boolean fullPlt) {
        if (Cools.isEmpty(locNo)) {
            return R.error("库位号不能为空");
        }
        if (lock == null) {
            return R.error("锁定参数不能为空");
        }
        return locCacheService.lockOrUnlockLocCache(locNo, lock, fullPlt, getUserId());
    }
 
    /**
     * 锁定/解锁当前排的所有库位
     * @param locNo 库位号(用于获取排号)
     * @param lock 是否锁定,true-锁定,false-解锁
     * @param fullPlt 是否满托,true-满托(设置为F),false-空托(设置为D),解锁时可为空
     * @return 操作结果
     */
    @RequestMapping(value = "/locCache/lockOrUnlockRow/auth", method = RequestMethod.POST)
    @ManagerAuth
    public R lockOrUnlockRow(@RequestParam String locNo, @RequestParam Boolean lock, @RequestParam(required = false) Boolean fullPlt) {
        if (Cools.isEmpty(locNo)) {
            return R.error("库位号不能为空");
        }
        if (lock == null) {
            return R.error("锁定参数不能为空");
        }
        return locCacheService.lockOrUnlockRowLocCache(locNo, lock, fullPlt, getUserId());
    }
 
    /**
     * 锁定/解锁当前列的所有库位
     * @param locNo 库位号(用于获取列号bay1)
     * @param lock 是否锁定,true-锁定,false-解锁
     * @param fullPlt 是否满托,true-满托(设置为F),false-空托(设置为D),解锁时可为空
     * @return 操作结果
     */
    @RequestMapping(value = "/locCache/lockOrUnlockBay/auth", method = RequestMethod.POST)
    @ManagerAuth
    public R lockOrUnlockBay(@RequestParam String locNo, @RequestParam Boolean lock, @RequestParam(required = false) Boolean fullPlt) {
        if (Cools.isEmpty(locNo)) {
            return R.error("库位号不能为空");
        }
        if (lock == null) {
            return R.error("锁定参数不能为空");
        }
        return locCacheService.lockOrUnlockBayLocCache(locNo, lock, fullPlt, getUserId());
    }
 
    /**
     * 清空整排的所有库位(所有列)
     * @param locNo 库位号(用于获取排号row1)
     * @param lock 是否锁定,true-锁定,false-解锁(清空)
     * @param fullPlt 是否满托,true-满托(设置为F),false-空托(设置为D),解锁时可为空
     * @return 操作结果
     */
    @RequestMapping(value = "/locCache/clearAllColumnsInRow/auth", method = RequestMethod.POST)
    @ManagerAuth
    public R clearAllColumnsInRow(@RequestParam String locNo, @RequestParam Boolean lock, @RequestParam(required = false) Boolean fullPlt) {
        if (Cools.isEmpty(locNo)) {
            return R.error("库位号不能为空");
        }
        if (lock == null) {
            return R.error("锁定参数不能为空");
        }
        return locCacheService.clearAllColumnsInRow(locNo, lock, fullPlt, getUserId());
    }
 
}