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.LocMapConstants; import com.zy.asrs.utils.Utils; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @RestController public class MapController extends BaseController { @Autowired private LocMastService locMastService; @Autowired private LocDetlService locDetlService; @GetMapping("/map/getData/auth") @ManagerAuth public String getMapData(@RequestParam String area, @RequestParam Integer lev) { //获取当前楼层库位数据 List locMasts = locMastService.selectNodeLocByLev(area, lev); // 加载库区对应地图数据 List arrayLists; switch (area) { case "B": arrayLists = LocMapConstants.B_LOC_MAP_FINAL; break; case "C": arrayLists = LocMapConstants.C_LOC_MAP_FINAL; break; case "D": arrayLists = LocMapConstants.D_LOC_MAP_FINAL; break; case "E": arrayLists = LocMapConstants.E_LOC_MAP_FINAL; break; default: arrayLists = LocMapConstants.A_LOC_MAP_FINAL; break; } // 除A库区外,其他区没有层,而且把列存到了层的数据里,需要转换回来 if (!"A".equals(area)) { locMasts = locMasts.stream().peek(locMast -> locMast.setBay1(locMast.getLev1())).collect(Collectors.toList()); } for (LocMast locMast : locMasts) { Integer row = locMast.getRow1(); Integer bay = locMast.getBay1(); // CDE只有一列,所以列右移 if ("C".equals(area) || "D".equals(area) || "E".equals(area)) { ++ bay ; } 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());//库位状态 //更新list rowData.set(bay, jsonObject); arrayLists.set(row, rowData); } return JSONObject.toJSONString(arrayLists); } @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 locDetls = locDetlService.searchByLike(orderNo, matnr, maktx, specs, ""); ArrayList 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); } }