package com.zy.asrs.controller;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONObject;
|
import com.core.annotations.ManagerAuth;
|
import com.core.common.R;
|
import com.zy.asrs.entity.LocDetl;
|
import com.zy.asrs.entity.LocMast;
|
import com.zy.asrs.service.LocDetlService;
|
import com.zy.asrs.service.LocMastService;
|
import com.zy.asrs.utils.Utils;
|
import com.zy.common.web.BaseController;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.core.io.ClassPathResource;
|
import org.springframework.web.bind.annotation.*;
|
|
import java.io.*;
|
import java.util.ArrayList;
|
import java.util.List;
|
|
@RestController
|
|
public class MapController extends BaseController {
|
|
@Autowired
|
private LocMastService locMastService;
|
@Autowired
|
private LocDetlService locDetlService;
|
|
private static final List<String> DISABLE_LOC_NO = new ArrayList<String>() {{
|
|
}};
|
|
@GetMapping("/map/getData/auth")
|
@ManagerAuth
|
public String getMapData(@RequestParam Integer lev,@RequestParam Integer area) {
|
try {
|
String mapFilename = "map.json";
|
// String fileName ="file:" + new ClassPathResource(mapFilename).getPath();
|
//获取当前楼层库位数据
|
List<LocMast> locMasts = locMastService.selectLocByLev(lev);
|
switch (area){
|
case 1:
|
break;
|
case 2:
|
case 3:
|
mapFilename = "DTBnode.json";
|
locMasts = locMastService.selectNodeBLocByLev(lev);
|
break;
|
case 4:
|
mapFilename = "DTCnode.json";
|
locMasts = locMastService.selectNodeCLocByLev(lev);
|
break;
|
case 5:
|
mapFilename = "DTDnode.json";
|
locMasts = locMastService.selectNodeDLocByLev(lev);
|
break;
|
case 32:
|
mapFilename = "DTBnode.json";
|
locMasts = locMastService.selectNodeB2LocByLev(lev);
|
break;
|
case 42:
|
mapFilename = "DTCnode.json";
|
locMasts = locMastService.selectNodeC2LocByLev(lev);
|
break;
|
case 52:
|
mapFilename = "DTDnode.json";
|
locMasts = locMastService.selectNodeD2LocByLev(lev);
|
break;
|
|
}
|
String fileName = this.getClass().getClassLoader().getResource(mapFilename).getPath();//获取文件路径
|
// File file = new File("D:\\workspace\\zy-asrs\\src\\main\\resources\\map.json");
|
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);
|
for (String locNo : DISABLE_LOC_NO) {//禁用设置库位
|
int row = Utils.getRow(locNo);
|
int bay = Utils.getBay(locNo);
|
if (row >= 2 && row <= 12) {
|
row++;
|
}else if (row == 13) {
|
row += 2;
|
}
|
ArrayList rowData = arrayLists.get(row);
|
Object o = rowData.get(bay);
|
JSONObject jsonObject = JSON.parseObject(o.toString());
|
jsonObject.put("value", 10);//将禁用库位进行设置
|
//更新list
|
rowData.set(bay, jsonObject);
|
arrayLists.set(row, rowData);
|
}
|
|
|
|
for (LocMast locMast : locMasts) {
|
Integer row = locMast.getRow1();
|
Integer bay = locMast.getBay1();
|
|
switch (area){
|
case 1:
|
if (row % 4 == 0 || (row+1) % 4 == 0) {
|
row=row+locMast.getCrnNo();
|
}else{
|
row=row+locMast.getCrnNo()-1;
|
}
|
bay=32-bay;
|
break;
|
case 2:
|
case 3:
|
case 32:
|
if (row<=3 || row>=5){
|
if (row%1==0){
|
row=row+(row/1)-1;
|
}else {
|
row=row+((row+1)/1)-1;
|
}
|
}else {
|
if (row%2==0){
|
row=row+(row/2);
|
}else {
|
row=row+((row-1)/2);
|
}
|
}
|
|
if (bay % 6 == 0) {
|
bay=bay+1;
|
}else{
|
if (bay>6){
|
bay=bay+locMast.getCrnNo();
|
}else {
|
bay=bay+locMast.getCrnNo()-1;
|
}
|
}
|
break;
|
case 4:
|
case 5:
|
case 42:
|
case 52:
|
if (row<=11){
|
if (row%2==0){
|
row=row+(row/2)-1;
|
}else {
|
row=row+((row+1)/2)-1;
|
}
|
}else {
|
if (row%2==0){
|
row=row+(row/2);
|
}else {
|
row=row+((row-1)/2);
|
}
|
}
|
|
if (bay % 7 == 0) {
|
bay=bay+1;
|
}else{
|
if (bay>7){
|
bay=bay+locMast.getCrnNo();
|
}else {
|
bay=bay+locMast.getCrnNo()-1;
|
}
|
}
|
break;
|
|
|
|
}
|
|
if (area == 1){
|
ArrayList rowData = arrayLists.get(row);
|
Object o = rowData.get(bay);
|
JSONObject jsonObject = JSON.parseObject(o.toString());
|
jsonObject.put("locNo", locMast.getLocNo());//设置库位号
|
jsonObject.put("locSts", locMast.getLocSts());//库位状态
|
//jsonObject.put("locSts$", locMast.getLocSts$());//库位状态
|
//更新list
|
rowData.set(bay, jsonObject);
|
arrayLists.set(row, rowData);
|
}else {
|
ArrayList rowData = arrayLists.get(bay);
|
Object o = rowData.get(row);
|
JSONObject jsonObject = JSON.parseObject(o.toString());
|
jsonObject.put("locNo", locMast.getLocNo());//设置库位号
|
jsonObject.put("locSts", locMast.getLocSts());//库位状态
|
//jsonObject.put("locSts$", locMast.getLocSts$());//库位状态
|
//更新list
|
rowData.set(row, jsonObject);
|
arrayLists.set(bay, rowData);
|
}
|
|
|
|
}
|
|
return JSONObject.toJSONString(arrayLists);
|
} else {
|
System.out.println("文件不存在!");
|
}
|
} catch (IOException ioException) {
|
ioException.printStackTrace();
|
}
|
return null;
|
}
|
|
@RequestMapping("/map/searchData/auth")
|
@ManagerAuth
|
public R searchLoc(@RequestParam("lev") Integer lev,
|
@RequestParam("locNo") String locNo,
|
@RequestParam("orderNo") String orderNo,
|
@RequestParam("specs") String specs,
|
@RequestParam("matnr") String matnr,
|
@RequestParam("maktx") String maktx
|
) {
|
List<LocDetl> locDetls = locDetlService.searchByLike(orderNo, matnr, maktx, specs, "");
|
ArrayList<LocDetl> lists = new ArrayList<>();
|
for (LocDetl locDetl : locDetls) {//过滤掉不是当前楼层的数据
|
int lev1 = Utils.getLev(locDetl.getLocNo());
|
if (lev1 == lev) {
|
lists.add(locDetl);
|
}
|
}
|
|
//搜索指定库位号,即使库位为空,也可以返回数据
|
LocMast locMast = locMastService.selectById(locNo);
|
if (locMast != null) {
|
LocDetl locDetl = new LocDetl();
|
locDetl.setLocNo(locMast.getLocNo());
|
lists.add(locDetl);
|
}
|
return R.ok().add(lists);
|
}
|
|
}
|