BoxRestController.java
4.6 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
package com.neotel.webbox.capacity;
import com.neotel.webbox.capacity.bean.*;
import com.neotel.webbox.capacity.data.BaseDataCache;
import com.neotel.webbox.capacity.method.AssignMethod1;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@Slf4j
@RestController
public class BoxRestController {
@RequestMapping("/baseData")
public ResultBean baseData() {
Map<String,Object> map = new HashMap<>();
List<BoxData> boxDataList = new ArrayList<>(BaseDataCache.getBoxDataList());
boxDataList.sort(new Comparator<BoxData>() {
@Override
public int compare(BoxData o1, BoxData o2) {
return o1.getBoxName().compareTo(o2.getBoxName());
}
});
map.put("boxDataList",boxDataList);
Collection<ReelData> reelNameList = BaseDataCache.getReelDataList();
Map<Integer,List<Integer>> reelSizeMap = new HashMap<>();
for (ReelData reelData : reelNameList) {
int reelSize = reelData.getReelSize();
List<Integer> reelHeightList = reelSizeMap.get(reelSize);
if(reelHeightList == null){
reelHeightList = new ArrayList<>();
}
int reelHeight = reelData.getReelHeight();
reelHeightList.add(reelHeight);
reelHeightList.sort(new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1 - o2;
}
});
reelSizeMap.put(reelSize,reelHeightList);
}
map.put("reelSizeMap",reelSizeMap);
return ResultBean.newOkResult(map);
}
@RequestMapping("/capacity")
public ResultBean capacityCalculation(@RequestBody Map<String,String> paramMap) {
try{
String boxName = paramMap.get("boxName");
log.info("收到计算料仓数量请求:" + boxName);
BoxData boxData = BaseDataCache.getBoxData(boxName);
if(boxData == null){
String msg = "未找到"+boxName+"对应的料仓";
log.warn(msg);
return ResultBean.newErrorResult(101,msg);
}
List<RequestItem> requestList = new ArrayList<>();
for (Map.Entry<String, String> item : paramMap.entrySet()) {
if(item.getKey().equals("boxName")){
continue;
}
ReelData reelData = BaseDataCache.getReelData(item.getKey());
if(reelData == null){
String msg = "未找到"+boxName+"对应的料盘"+ item.getKey();
log.warn(msg);
return ResultBean.newErrorResult(102,msg);
}
log.info("料盘需求" + item.getKey() + ":" + item.getValue());
int num = Integer.valueOf(item.getValue());
requestList.add(new RequestItem(num,reelData));
}
if(requestList.isEmpty()){
String msg = "Params Error";
log.warn(msg);
return ResultBean.newErrorResult(102,msg);
}
BoxResult boxResult = AssignMethod1.averageAssignToBox(boxData,requestList);
log.info("方案一共需要"+boxResult.getBoxList().size()+"个料仓");
for (ReelItem reelItem : boxResult.getReelItemList()) {
log.info(reelItem.getSizeStr()+" 料盘需求:" + reelItem.getNeedNum() + " 容量:" + reelItem.getCapacity());
}
Map<String,Object> resultMap = new HashMap<>();
resultMap.put("boxCount", boxResult.getBoxList().size());
List<Map<String,Object>> capacityItems = new ArrayList<>();
for (ReelItem reelItem : boxResult.getReelItemList()) {
Map<String,Object> dataMap = new HashMap<>();
int needNum = reelItem.getNeedNum();
int capacity = reelItem.getCapacity();
int w = reelItem.getW();
int h = reelItem.getH();
dataMap.put("w",w);
dataMap.put("h",h);
dataMap.put("capacity",capacity);
dataMap.put("needNum",needNum);
capacityItems.add(dataMap);
}
resultMap.put("boxName",boxName);
resultMap.put("capacityItems",capacityItems);
return ResultBean.newOkResult(resultMap);
}catch (Exception e){
log.error("计算料仓数量时发生异常",e);
return ResultBean.newErrorResult(500,"Error");
}
}
}