TvController.java
17.5 KB
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
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
package com.huaheng.api.tv.controller;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.huaheng.api.general.controller.TokenApiController;
import com.huaheng.api.tv.domain.*;
import com.huaheng.api.wcs.domain.WcsTask;
import com.huaheng.common.constant.QuantityConstant;
import com.huaheng.framework.web.controller.BaseController;
import com.huaheng.framework.web.domain.AjaxResult;
import com.huaheng.pc.config.container.domain.Container;
import com.huaheng.pc.config.container.service.ContainerService;
import com.huaheng.pc.config.location.controller.LocationController;
import com.huaheng.pc.config.location.domain.Location;
import com.huaheng.pc.config.location.domain.LocationStatus;
import com.huaheng.pc.config.location.service.LocationService;
import com.huaheng.pc.config.material.domain.Material;
import com.huaheng.pc.config.material.service.MaterialService;
import com.huaheng.pc.config.materialWarnning.service.IMaterialWarningService;
import com.huaheng.pc.config.supplier.service.SupplierService;
import com.huaheng.pc.config.zone.domain.Zone;
import com.huaheng.pc.config.zone.service.ZoneService;
import com.huaheng.pc.inventory.InventoryMaterialSummary.domain.InventoryMaterialSummary;
import com.huaheng.pc.inventory.InventoryMaterialSummary.service.InventoryMaterialSummaryService;
import com.huaheng.pc.inventory.inventoryDetail.domain.InventoryDetail;
import com.huaheng.pc.inventory.inventoryDetail.service.InventoryDetailService;
import com.huaheng.pc.inventory.inventoryHeader.service.InventoryHeaderService;
import com.huaheng.pc.inventory.inventoryTransaction.service.InventoryTransactionService;
import com.huaheng.pc.receipt.receiptDetail.service.ReceiptDetailService;
import com.huaheng.pc.receipt.receiptDetailHistory.service.ReceiptDetailHistoryService;
import com.huaheng.pc.receipt.receiptHeader.service.ReceiptHeaderService;
import com.huaheng.pc.shipment.shipmentDetail.service.ShipmentDetailService;
import com.huaheng.pc.shipment.shipmentHeader.service.ShipmentHeaderService;
import com.huaheng.pc.shipment.shipmentHeaderHistory.service.ShipmentHeaderHistoryService;
import com.huaheng.pc.task.taskHeader.domain.TaskHeader;
import com.huaheng.pc.task.taskHeader.service.TaskHeaderService;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
@RestController
@RequestMapping("/API/WMS/v2")
public class TvController extends BaseController {
@Resource
private TaskHeaderService taskHeaderService;
@Resource
private ContainerService containerService;
@Resource
private LocationService locationService;
@Resource
private ZoneService zoneService;
@Resource
private InventoryDetailService inventoryDetailService;
@Resource
private InventoryMaterialSummaryService inventoryMaterialSummaryService;
@Resource
private MaterialService materialService;
@Resource
private LocationController locationController;
@Resource
private TokenApiController tokenApiController;
@Resource
private SupplierService supplierService;
@Resource
private ReceiptDetailHistoryService receiptDetailHistoryService;
@Resource
private ShipmentHeaderHistoryService shipmentHeaderHistoryService;
@Resource
private IMaterialWarningService materialWarningService;
@Resource
private InventoryHeaderService inventoryHeaderService;
@Resource
private ShipmentHeaderService shipmentHeaderService;
@Resource
private ReceiptHeaderService receiptHeaderService;
@Resource
private ReceiptDetailService receiptDetailService;
@Resource
private ShipmentDetailService shipmentDetailService;
@PostMapping("/getTvView")
@ApiOperation("获取电视信息")
@ResponseBody
public AjaxResult getTvView(@RequestBody WcsTask wcsTask) {
String area = wcsTask.getArea();
LambdaQueryWrapper<TaskHeader> taskHeaderLambdaQueryWrapper = Wrappers.lambdaQuery();
taskHeaderLambdaQueryWrapper.eq(TaskHeader::getArea, area)
.lt(TaskHeader::getStatus, QuantityConstant.TASK_STATUS_COMPLETED)
.orderByDesc(TaskHeader::getId);
List<TaskHeader> taskHeaderList = taskHeaderService.list(taskHeaderLambdaQueryWrapper);
if(taskHeaderList != null && taskHeaderList.size() > 0) {
for(TaskHeader taskHeader : taskHeaderList) {
String materialCode = taskHeader.getMaterialCode();
String warehouseCode = taskHeader.getWarehouseCode();
Material material = materialService.getMaterialByCode(materialCode, warehouseCode);
if(material != null) {
taskHeader.setMaterialCode(material.getName());
}
}
}
LambdaQueryWrapper<Container> containerEmptyLambdaQueryWrapper = Wrappers.lambdaQuery();
containerEmptyLambdaQueryWrapper.eq(Container::getArea, area)
.eq(Container::getStatus, QuantityConstant.STATUS_CONTAINER_EMPTY)
.ne(Container::getLocationCode, "");
List<Container> containerEmptyList = containerService.list(containerEmptyLambdaQueryWrapper);
int containerEmptySize = containerEmptyList.size();
LambdaQueryWrapper<Container> containerManyLambdaQueryWrapper = Wrappers.lambdaQuery();
containerManyLambdaQueryWrapper.eq(Container::getArea, area)
.eq(Container::getStatus, QuantityConstant.STATUS_CONTAINER_MANY)
.ne(Container::getLocationCode, "");
List<Container> manyEmptyList = containerService.list(containerManyLambdaQueryWrapper);
int manyEmptyListSize = manyEmptyList.size();
containerEmptySize = containerEmptySize + manyEmptyListSize * 6;
LambdaQueryWrapper<Container> containerSomeLambdaQueryWrapper = Wrappers.lambdaQuery();
containerSomeLambdaQueryWrapper.eq(Container::getArea, area)
.eq(Container::getStatus, QuantityConstant.STATUS_CONTAINER_SOME)
.ne(Container::getLocationCode, "");
List<Container> containerSomeList = containerService.list(containerSomeLambdaQueryWrapper);
int containerSomeSize = containerSomeList.size();
LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery();
locationLambdaQueryWrapper.eq(Location::getArea, area);
List<Location> locationList = locationService.list(locationLambdaQueryWrapper);
int totalLocationSize = locationList.size();
LambdaQueryWrapper<Zone> zoneLambdaQueryWrapper = Wrappers.lambdaQuery();
zoneLambdaQueryWrapper.eq(Zone::getArea, area);
Zone zone = zoneService.getOne(zoneLambdaQueryWrapper);
LambdaQueryWrapper<InventoryDetail> inventoryDetailLambdaQueryWrapper = Wrappers.lambdaQuery();
inventoryDetailLambdaQueryWrapper.eq(InventoryDetail::getZoneCode, zone.getCode());
List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(inventoryDetailLambdaQueryWrapper);
int inventorySize = inventoryDetailList.size();
LambdaQueryWrapper<InventoryMaterialSummary> lambdaQueryWrapper = Wrappers.lambdaQuery();
lambdaQueryWrapper.eq(InventoryMaterialSummary::getZoneCode, zone.getCode());
List<InventoryMaterialSummary> list = inventoryMaterialSummaryService.list(lambdaQueryWrapper);
if (list == null) {
list = Collections.emptyList();
}
//筛选库存汇总数据的专用方法
List<InventoryMaterialSummary> details = inventoryMaterialSummaryService.duplicateRemoval(list);
TvBean tvBean = new TvBean();
tvBean.setDetails(details);
tvBean.setContainerEmptySize(containerEmptySize);
tvBean.setContainerSomeSize(containerSomeSize);
tvBean.setTotalLocationSize(totalLocationSize);
tvBean.setTaskHeaderList(taskHeaderList);
tvBean.setInventorySize(inventorySize);
return AjaxResult.success(tvBean);
}
@GetMapping("/getTvPortView")
@ApiOperation("获取电视信息")
public AjaxResult getTvPortView(@RequestParam(name = "station",required = true) String station) {
return taskHeaderService.getTvPortView(station);
}
@CrossOrigin
@GetMapping("/getLocation")
@ApiOperation("获取库位看板数据")
public AjaxResult getLocation(String type,String row,String line, String layer) {
tokenApiController.getToken("xcq","123456","CS0001");
AjaxResult ajaxResult = locationController.getLocationInfo(type, row,line, layer, null);
List<Location> locations = (List<Location>) ajaxResult.getData();
Map<String, Object> map = new HashMap<>();
Map<Integer,String> keyMap = new HashMap<>();
keyMap.put(LocationStatus.IDLE_EMPTY_LOCATION, "空柜空闲");
keyMap.put(LocationStatus.IDLE_EMPTY_CONTAINER, "空盘空闲");
keyMap.put(LocationStatus.IDLE_FULL_CONTAINER, "满盘空闲" );
keyMap.put(LocationStatus.LOCK_EMPTY_LOCATION, "空柜锁定");
keyMap.put(LocationStatus.LOCK_EMPTY_CONTAINER, "空盘锁定");
keyMap.put(LocationStatus.LOCK_FULL_CONTAINER, "满盘锁定");
Map<String, Integer> locationMap = new HashMap<>();
locationMap.put(keyMap.get(LocationStatus.IDLE_EMPTY_LOCATION), 0);
locationMap.put(keyMap.get(LocationStatus.IDLE_EMPTY_CONTAINER), 0);
locationMap.put(keyMap.get(LocationStatus.IDLE_FULL_CONTAINER), 0);
locationMap.put(keyMap.get(LocationStatus.LOCK_EMPTY_LOCATION), 0);
locationMap.put(keyMap.get(LocationStatus.LOCK_EMPTY_CONTAINER), 0);
locationMap.put(keyMap.get(LocationStatus.LOCK_FULL_CONTAINER), 0);
if (locations != null){
locations.forEach(item->{
Integer userDef3 = 0;
if (StringUtils.isNotEmpty(item.getUserDef3())){
userDef3 = Integer.valueOf(item.getUserDef3());
}
if (keyMap.containsKey(userDef3)){
Integer temp = locationMap.get(keyMap.get(userDef3)) + 1;
locationMap.put(keyMap.get(userDef3), temp);
}
});
}
List<LocationDisplay> locationDisplayList = new ArrayList<>();
keyMap.forEach((key, value)->{
LocationDisplay display = new LocationDisplay();
display.setText(value);
display.setNumCount(locationMap.get(value));
display.setUserDef3(String.valueOf(key));
locationDisplayList.add(display);
});
map.put("topData", locationDisplayList);
List data = locationService.columnLayerConvert(locations);
map.put("data", data);
ajaxResult.setData(map);
return ajaxResult;
}
@CrossOrigin
@GetMapping("/getWMSDisplayData")
@ApiOperation("获取WMS看板数据")
public AjaxResult getWMSDisplayData(){
try {
DisplayData displayData = new DisplayData();
// 获取供应商数量
Integer supplier = supplierService.count();
displayData.getTopData().put("supplier", supplier);
// 获取库位数量
Integer location = locationService.count();
displayData.getTopData().put("location", location);
// 获取入库量
Integer receipt = receiptDetailHistoryService.count();
displayData.getTopData().put("receipt", receipt);
// 获取出库量
Integer shipment = shipmentHeaderHistoryService.count();
displayData.getTopData().put("shipment", shipment);
// 获取库存总量
BigDecimal total = inventoryDetailService.selectQtyTotal();
displayData.getTopData().put("total", total);
// 获取物料总量
Integer material = materialService.count();
displayData.getTopData().put("material", material);
// 获取预警数量
Integer warning = materialWarningService.selectWarningQuantity();
displayData.getTopData().put("warning", warning);
// 获取出入库热度数据
displayData.setProjectBeanList(inventoryHeaderService.getInOutHeadData());
// 获取库龄数据
displayData.setWarehouseLowBeanList(inventoryHeaderService.getInventoryAge());
// 获取库龄饼状图
displayData.setTopBeanList(materialService.getWarehourePieData());
// 获取入库统计数据
displayData.setReceiptStatistics(receiptHeaderService.selectReceiptStatistics());
// 获取出库统计数据
displayData.setShipmentStatistics(shipmentHeaderService.selectShipmentStatistics());
// 获取入库情况数据
displayData.setReceiptSituationList(receiptHeaderService.selectReceiptSituation());
// 获取出库情况数据
displayData.setShipmentSituationList(shipmentHeaderService.selectShipmentSituation());
// 获取最近7天入库趋势
displayData.setReceiptTrend(receiptHeaderService.selectReceiptTrend());
// 获取最近7天出库趋势
displayData.setShipmentTrend(shipmentHeaderService.selectShipmentTrend());
// 获取物料预警数据
displayData.setMaterialWarningLists(materialWarningService.selectMaterialWarningList());
// 获取库存等级图表
displayData.setInventoryLevelChart(inventoryDetailService.getInventoryLevelChart());
// 获取入库等级趋势图
// 优等品
List<ProjectBean> premium = receiptDetailService.getReceiptLevelLast7Days("01");
// 一等品
List<ProjectBean> grade = receiptDetailService.getReceiptLevelLast7Days("02");
// 合格品
List<ProjectBean> qualified = receiptDetailService.getReceiptLevelLast7Days("03");
displayData.getReceiptLevelTrend().put("nums", premium.stream().map(ProjectBean::getName).collect(Collectors.toList()));
displayData.getReceiptLevelTrend().put("premium", premium.stream().map(ProjectBean::getNums).collect(Collectors.toList()));
displayData.getReceiptLevelTrend().put("grade", grade.stream().map(ProjectBean::getNums).collect(Collectors.toList()));
displayData.getReceiptLevelTrend().put("qualified", qualified.stream().map(ProjectBean::getNums).collect(Collectors.toList()));
// 获取出库等级趋势图
premium = shipmentDetailService.getShipmentLevelLast7Days("01");
grade = shipmentDetailService.getShipmentLevelLast7Days("02");
qualified = shipmentDetailService.getShipmentLevelLast7Days("03");
displayData.getShipmentLevelTrend().put("nums", premium.stream().map(ProjectBean::getName).collect(Collectors.toList()));
displayData.getShipmentLevelTrend().put("premium", premium.stream().map(ProjectBean::getNums).collect(Collectors.toList()));
displayData.getShipmentLevelTrend().put("grade", grade.stream().map(ProjectBean::getNums).collect(Collectors.toList()));
displayData.getShipmentLevelTrend().put("qualified", qualified.stream().map(ProjectBean::getNums).collect(Collectors.toList()));
return AjaxResult.success(displayData);
}catch (Exception e){
return AjaxResult.error(e.getMessage());
}
}
@CrossOrigin
@GetMapping("/getPickingData")
@ApiOperation("获取WMS拣选数据")
public AjaxResult getPickingData(){
PickingData pickingData = new PickingData();
try {
// 获取今日任务数量
pickingData.setTodayTask(taskHeaderService.getTodayTask());
// 获取已完成任务数量
pickingData.setTaskCompleted(taskHeaderService.getTaskCompleted());
// 获取未完成任务数量
pickingData.setIncompleteTask(taskHeaderService.getIncompleteTask());
// 获取拆垛数据
pickingData.setDestackingData(taskHeaderService.getDestackingData());
// 获取码垛数据
pickingData.setPalletizingData(taskHeaderService.getPalletizingData());
// 获取正在挑选的订单
pickingData.setOrdersBeingPicked(taskHeaderService.getOrdersBeingPicked());
// 获取正在拣选的订单
pickingData.setOrdersWaitingPalletized(taskHeaderService.getOrdersWaitingPalletized());
// 拆垛总数
if (pickingData.getDestackingData()!= null && pickingData.getDestackingData().size() > 0){
Integer destackingTotal = pickingData.getDestackingData().stream().map(ProjectBean::getNums).mapToInt(BigDecimal::intValue).sum();
pickingData.setDestackingTotal(destackingTotal);
}else {
pickingData.setDestackingTotal(0);
}
if (pickingData.getPalletizingData() != null && pickingData.getPalletizingData().size() > 0){
Integer palletizingTotal = pickingData.getPalletizingData().stream().map(ProjectBean::getNums).mapToInt(BigDecimal::intValue).sum();
pickingData.setPalletizingTotal(palletizingTotal);
}else {
pickingData.setPalletizingTotal(0);
}
return AjaxResult.success(pickingData);
}catch (Exception e){
return AjaxResult.error(e.getMessage());
}
}
}