package com.zy.asrs.controller;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.core.annotations.ManagerAuth;
|
import com.zy.asrs.entity.LocMast;
|
import com.zy.asrs.service.LocMastService;
|
import com.zy.common.web.BaseController;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.io.*;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Optional;
|
|
@RestController
|
|
public class MapController extends BaseController {
|
|
@Autowired
|
private LocMastService locMastService;
|
|
private static final List<String> DISABLE_LOC_NO = new ArrayList<String>() {{
|
}};
|
|
@GetMapping("/map/getData/{lev}/auth")
|
@ManagerAuth
|
public String getMapData(@PathVariable("lev") Integer lev) {
|
try {
|
String mapFilename = "map_" + lev + ".json";
|
String fileName = this.getClass().getClassLoader().getResource(mapFilename).getPath();//获取文件路径
|
File file = new File(fileName);
|
StringBuffer stringBuffer = new StringBuffer();
|
if (file.isFile() && file.exists()) {
|
InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GBK");
|
BufferedReader br = new BufferedReader(isr);
|
String lineTxt = null;
|
while ((lineTxt = br.readLine()) != null) {
|
stringBuffer.append(lineTxt);
|
}
|
br.close();
|
|
//解析json地图数据
|
List<ArrayList> arrayLists = JSON.parseArray(stringBuffer.toString(), ArrayList.class);
|
ArrayList<HashMap<String, Integer>> lineRows = new ArrayList<>();
|
int dataRow = 0;
|
int dataRowCount = 0;
|
for (int i = 1; i < arrayLists.size(); i++) {
|
boolean flag = true;
|
ArrayList rows = arrayLists.get(i);
|
for (int j = 1; j < rows.size() - 1; j++) {
|
Object o = rows.get(j);
|
JSONObject jsonObject = JSON.parseObject(o.toString());
|
int value = Integer.parseInt(jsonObject.get("value").toString());
|
if (value >= 0 && value != 3) {
|
//只有该行中的任一一列有数据,则不需要创建空白行
|
flag = false;
|
}
|
}
|
|
if (flag) {
|
//空白行需要跳过
|
HashMap<String, Integer> map = new HashMap<>();
|
map.put("start", dataRow);
|
int end = i - 1 - dataRowCount;
|
map.put("end", end);
|
map.put("count", dataRowCount);
|
dataRow = end;
|
dataRowCount++;
|
lineRows.add(map);
|
}
|
}
|
|
//获取当前楼层库位数据
|
List<LocMast> locMasts = locMastService.selectLocByLev(lev);
|
|
for (LocMast locMast : locMasts) {
|
Integer row = locMast.getRow1();
|
Integer bay = locMast.getBay1();
|
for (HashMap<String, Integer> lineRow : lineRows) {
|
if (row > lineRow.get("start") && row <= lineRow.get("end")) {
|
row += lineRow.get("count");
|
break;
|
}
|
}
|
ArrayList rowData = arrayLists.get(row);
|
Object o = rowData.get(bay);
|
JSONObject jsonObject = JSON.parseObject(o.toString());
|
if (DISABLE_LOC_NO.contains(locMast.getLocNo())) {
|
//禁止库位
|
jsonObject.put("value", 10);//将禁用库位进行设置
|
}
|
jsonObject.put("locNo", locMast.getLocNo());//设置库位号
|
jsonObject.put("locSts", locMast.getLocSts());//库位状态
|
jsonObject.put("barcode", Optional.ofNullable(locMast.getBarcode()).orElse("无"));//托盘号
|
|
//更新list
|
rowData.set(bay, jsonObject);
|
arrayLists.set(row, rowData);
|
}
|
|
return JSONObject.toJSONString(arrayLists);
|
} else {
|
System.out.println("文件不存在!");
|
}
|
} catch (IOException ioException) {
|
ioException.printStackTrace();
|
}
|
return null;
|
}
|
|
}
|