package com.wms.controller; import com.alibaba.fastjson2.JSON; import com.wms.constants.WmsConstants; import com.wms.constants.enums.ResponseCode; import com.wms.entity.app.ResponseEntity; import com.wms.entity.app.display.LocationData; import com.wms.entity.app.display.LocationInfo; import com.wms.entity.table.Location; import com.wms.entity.table.Stock; import com.wms.service.LocationService; import com.wms.service.StockService; import com.wms.utils.HttpUtils; import com.wms.utils.StringUtils; import jakarta.servlet.http.HttpServletRequest; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.LinkedList; import java.util.List; @Controller @CrossOrigin @RequiredArgsConstructor(onConstructor = @__(@Autowired)) @RequestMapping(value = "/api/query") public class DisplayController extends BaseController{ private final StockService stockService; private final LocationService locationService; private final HttpServletRequest servletRequest; /** * 大屏查询库位信息 * @param location 参数---库位 * @return 结果 */ @GetMapping("/queryLocationInfo") @ResponseBody public String queryLocationInfo(@RequestParam String location) { logger.info("接收到查询大屏库位信息请求,ip地址:{},参数:{}", HttpUtils.getIpAddr(servletRequest), location); ResponseEntity response = new ResponseEntity(); if (StringUtils.isEmpty(location)) { logger.error("查询失败,参数中库位号为空"); response.setCode(ResponseCode.ERROR.getCode()); response.setMessage("查询失败,参数中库位号为空"); return JSON.toJSONString(response); } Location locationQuery = new Location(); locationQuery.setLocationId(location); List locations = locationService.selLocations(locationQuery); if (locations.size() == 0) { logger.error("查询失败,该库位立体库中不存在"); response.setCode(ResponseCode.ERROR.getCode()); response.setMessage("查询失败,请检查库位号正确性"); return JSON.toJSONString(response); } Location currentLocation = locations.get(0); String vehicleNo = currentLocation.getVehicleId(); if (StringUtils.isEmpty(vehicleNo)) { // 设定 LocationInfo returnData = new LocationInfo(); returnData.setLocationId(location); returnData.setVehicleNo(WmsConstants.EMPTY_STRING); response.setCode(ResponseCode.OK.getCode()); response.setMessage("查询成功"); response.setReturnData(returnData); return JSON.toJSONString(response); } // 查询库存 Stock stockQuery = new Stock(); stockQuery.setLocationId(location); stockQuery.setVehicleId(vehicleNo); List stocks = stockService.selStocks(stockQuery); List locationData = new LinkedList<>(); for (Stock tempStock : stocks) { LocationData tempData = new LocationData(); tempData.setGoodsId(tempStock.getGoodsId()); tempData.setGoodsName(tempStock.getGoodsName()); tempData.setGoodsNum(tempStock.getRealNum()); locationData.add(tempData); } // 设定 LocationInfo returnData = new LocationInfo(); returnData.setLocationId(location); returnData.setVehicleNo(WmsConstants.EMPTY_STRING); returnData.setLocationData(locationData); response.setCode(ResponseCode.OK.getCode()); response.setMessage("查询成功"); response.setReturnData(returnData); return JSON.toJSONString(response); } /** * 查询所有库位 * @return 结果 */ @GetMapping("/getAllLocations") @ResponseBody public String queryLocationInfo() { logger.info("接收到查询大屏所有库位信息请求,ip地址:{}", HttpUtils.getIpAddr(servletRequest)); return JSON.toJSONString(locationService.selLocations(new Location())); } }