From f5beff55159fdde55acdf9c7607d44babcdc0f5f Mon Sep 17 00:00:00 2001
From: yiwenpeng <ywp303@163.com>
Date: Sun, 25 Jun 2023 10:25:36 +0800
Subject: [PATCH] 加上库位是否有容器搜索

---
 src/main/java/com/huaheng/pc/config/location/controller/LocationController.java | 608 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 1 file changed, 308 insertions(+), 300 deletions(-)

diff --git a/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java b/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java
index 5b77fe3..2b7f4eb 100644
--- a/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java
+++ b/src/main/java/com/huaheng/pc/config/location/controller/LocationController.java
@@ -45,328 +45,336 @@ import java.util.stream.Collectors;
 @RequestMapping("/config/location")
 public class LocationController extends BaseController {
 
-  private String prefix = "config/location";
-
-  @Resource
-  private ContainerService containerService;
-  @Resource
-  private LocationService locationService;
-  @Resource
-  private InventoryDetailService inventoryDetailService;
-  @Resource
-  private MaterialService materialService;
-  @Resource
-  private DataSource dataSource;
-  @Resource
-  private Print print;
-
-  @RequiresPermissions("config:location:view")
-  @GetMapping()
-  public String location () {
-    return prefix + "/location";
-  }
-
-  /**
-   * 查询库位列表
-   */
-  @ApiOperation(value = "查看库位列表",
-          notes = "根据行、列、层、格、库位类型、库区、库位状态、容器编码、库位名称、库位编码、创建时间获取库位的详细信息",
-          httpMethod = "POST")
-  @RequiresPermissions("config:location:list")
-  @Log(title = "配置-库存资料-库位管理", operating = "查看库位列表", action = BusinessType.GRANT)
-  @PostMapping("/list")
-  @ResponseBody
-  public TableDataInfo list (
-          @ApiParam(name = "location", value = "行、列、层、格、库位类型、库区、库位状态、容器编码、库位名称、库位编码") Location location,
-          @ApiParam(name = "createdBegin", value = "起止时间") String createdBegin,
-          @ApiParam(name = "createdEnd", value = "结束时间") String createdEnd) {
-    LambdaQueryWrapper<Location> lambdaQueryWrapper = Wrappers.lambdaQuery();
-    PageDomain pageDomain = TableSupport.buildPageRequest();
-    Integer pageNum = pageDomain.getPageNum();
-    Integer pageSize = pageDomain.getPageSize();
-    lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), Location::getCreated, createdBegin)
-            .lt(StringUtils.isNotEmpty(createdEnd), Location::getCreated, createdEnd)
-            .eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode())
-            .eq(StringUtils.isNotEmpty(location.getCode()), Location::getCode, location.getCode())
-            .eq(StringUtils.isNotEmpty(location.getName()), Location::getName, location.getName())
-            .eq(StringUtils.isNotEmpty(location.getContainerCode()), Location::getContainerCode, location.getContainerCode())
-            .eq(StringUtils.isNotNull(location.getSystemCreated()), Location::getStatus, location.getStatus())
-            .eq(StringUtils.isNotEmpty(location.getZoneCode()), Location::getZoneCode, location.getZoneCode())
-            .eq(StringUtils.isNotNull(location.getIRow()), Location::getIRow, location.getIRow())
-            .eq(StringUtils.isNotNull(location.getIColumn()), Location::getIColumn, location.getIColumn())
-            .eq(StringUtils.isNotNull(location.getIGrid()), Location::getIGrid, location.getIGrid())
-            .eq(StringUtils.isNotNull(location.getILayer()), Location::getILayer, location.getILayer())
-            .eq(StringUtils.isNotEmpty(location.getStatus()), Location::getStatus, location.getStatus())
-            .eq(StringUtils.isNotEmpty(location.getLocationType()), Location::getLocationType, location.getLocationType())
-            .eq(Location::getDeleted, false)
-            .orderByDesc(Location::getId);
-
-    if(StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) {
-      /*使用分页查询*/
-      Page<Location> page = new Page<>(pageNum, pageSize);
-      IPage<Location> iPage = locationService.page(page, lambdaQueryWrapper);
-      return getMpDataTable(iPage.getRecords(), iPage.getTotal());
-    } else {
-      List<Location> list = locationService.list(lambdaQueryWrapper);
-      return getDataTable(list);
+    private String prefix = "config/location";
+
+    @Resource
+    private ContainerService containerService;
+    @Resource
+    private LocationService locationService;
+    @Resource
+    private InventoryDetailService inventoryDetailService;
+    @Resource
+    private MaterialService materialService;
+    @Resource
+    private DataSource dataSource;
+    @Resource
+    private Print print;
+
+    @RequiresPermissions("config:location:view")
+    @GetMapping()
+    public String location() {
+        return prefix + "/location";
     }
-  }
-
-  /**
-   * 查询库位列表
-   */
-  @Log(title = "配置-库存资料-库位管理", operating = "查看库位列表", action = BusinessType.GRANT)
-  @PostMapping("/getAllLocation")
-  @ResponseBody
-  public AjaxResult getAllLocation (String type) {
-    if(StringUtils.isEmpty(type)) {
-      return AjaxResult.error("type不能为空");
+
+    /**
+     * 查询库位列表
+     */
+    @ApiOperation(value = "查看库位列表",
+            notes = "根据行、列、层、格、库位类型、库区、库位状态、容器编码、库位名称、库位编码、创建时间获取库位的详细信息",
+            httpMethod = "POST")
+    @RequiresPermissions("config:location:list")
+    @Log(title = "配置-库存资料-库位管理", operating = "查看库位列表", action = BusinessType.GRANT)
+    @PostMapping("/list")
+    @ResponseBody
+    public TableDataInfo list(
+            @ApiParam(name = "location", value = "行、列、层、格、库位类型、库区、库位状态、容器编码、库位名称、库位编码") Location location,
+            @ApiParam(name = "createdBegin", value = "起止时间") String createdBegin,
+            @ApiParam(name = "createdEnd", value = "结束时间") String createdEnd) {
+        LambdaQueryWrapper<Location> lambdaQueryWrapper = Wrappers.lambdaQuery();
+        PageDomain pageDomain = TableSupport.buildPageRequest();
+        Integer pageNum = pageDomain.getPageNum();
+        Integer pageSize = pageDomain.getPageSize();
+        lambdaQueryWrapper.gt(StringUtils.isNotEmpty(createdBegin), Location::getCreated, createdBegin)
+                .lt(StringUtils.isNotEmpty(createdEnd), Location::getCreated, createdEnd)
+                .eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode())
+                .eq(StringUtils.isNotEmpty(location.getCode()), Location::getCode, location.getCode())
+                .eq(StringUtils.isNotEmpty(location.getName()), Location::getName, location.getName())
+                .eq(StringUtils.isNotEmpty(location.getContainerCode()), Location::getContainerCode, location.getContainerCode())
+                .eq(StringUtils.isNotNull(location.getSystemCreated()), Location::getStatus, location.getStatus())
+                .eq(StringUtils.isNotEmpty(location.getZoneCode()), Location::getZoneCode, location.getZoneCode())
+                .eq(StringUtils.isNotNull(location.getIRow()), Location::getIRow, location.getIRow())
+                .eq(StringUtils.isNotNull(location.getIColumn()), Location::getIColumn, location.getIColumn())
+                .eq(StringUtils.isNotNull(location.getIGrid()), Location::getIGrid, location.getIGrid())
+                .eq(StringUtils.isNotNull(location.getILayer()), Location::getILayer, location.getILayer())
+                .eq(StringUtils.isNotEmpty(location.getStatus()), Location::getStatus, location.getStatus())
+                .eq(StringUtils.isNotEmpty(location.getLocationType()), Location::getLocationType, location.getLocationType())
+                .eq(Location::getDeleted, false);
+
+        if (StringUtils.isNotEmpty(location.getUserDef2())) {
+            if ("有容器".equals(location.getUserDef2())) {
+                lambdaQueryWrapper.apply("containerCode!='' and containerCode IS NOT null");
+            } else {
+                lambdaQueryWrapper.apply("code in ( select CODE from location where containerCode='' or containerCode IS null) ");
+            }
+            lambdaQueryWrapper.orderByDesc(Location::getId);
+        }
+
+        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize)) {
+            /*使用分页查询*/
+            Page<Location> page = new Page<>(pageNum, pageSize);
+            IPage<Location> iPage = locationService.page(page, lambdaQueryWrapper);
+            return getMpDataTable(iPage.getRecords(), iPage.getTotal());
+        } else {
+            List<Location> list = locationService.list(lambdaQueryWrapper);
+            return getDataTable(list);
+        }
     }
 
-    return AjaxResult.success(locationService.getAllLocation(type));
-  }
-
-
-  /**
-   * 新增库位
-   */
-  @GetMapping("/add")
-  public String add () {
-    return prefix + "/add";
-  }
-
-  /**
-   * 新增保存库位
-   */
-  @ApiOperation(value = "新增库位", notes = "新增单个库位", httpMethod = "POST")
-  @RequiresPermissions("config:location:add")
-  @Log(title = "配置-库存资料-库位管理", operating = "新增库位", action = BusinessType.INSERT)
-  @PostMapping("/add")
-  @ResponseBody
-  public AjaxResult addSave (Location location) {
-    AjaxResult result = locationService.addsave(location);
-    return result;
-  }
-
-
-  /**
-   * 批量新增库位
-   */
-
-  @GetMapping("/addBatch")
-  public String addBatch () {
-    return prefix + "/addBatch";
-  }
-
-
-  /**
-   * 批量新增保存库位
-   */
-  @RequiresPermissions("config:location:add")
-  @ApiOperation(value = "新增库位", notes = "批量新增库位", httpMethod = "POST")
-  @Log(title = "配置-库存资料-库位管理", operating = "新增库位", action = BusinessType.INSERT)
-  @PostMapping("/addBatchSave")
-  @ResponseBody
-  public AjaxResult addBatchSave (String prefix, String firstRow, String lastRow, String firstColumn, String lastColumn, String firstLayer, String lastLayer,
-                                  String firstGrid, String lastGrid, String roadway, String status, String zoneCode, String locationType, String high) {
-
-    return toAjax(locationService.addBatchSave(prefix, Integer.parseInt(firstRow), Integer.parseInt(lastRow),
-            Integer.parseInt(firstColumn), Integer.parseInt(lastColumn), Integer.parseInt(firstLayer), Integer.parseInt(lastLayer),
-            Integer.parseInt(firstGrid), Integer.parseInt(lastGrid), roadway, status, zoneCode, locationType, high));
-  }
-
-  /**
-   * 修改库位
-   */
-  @GetMapping("/edit/{id}")
-  public String edit (@PathVariable("id") Integer id, ModelMap mmap) {
-    Location location = locationService.getById(id);
-    mmap.put("location", location);
-    return prefix + "/edit";
-  }
-
-  /**
-   * 修改物料
-   */
-  @GetMapping("/editBatch/{ids}")
-  public String editBatch (@PathVariable("ids") String ids, ModelMap mmap) {
-    mmap.put("ids", ids);
-    return prefix + "/editBatch";
-  }
-
-  /**
-   * 修改保存库位
-   */
-  @RequiresPermissions("config:location:edit")
-  @ApiOperation(value = "修改库位", notes = "批量修改库位", httpMethod = "POST")
-  @Log(title = "配置-库存资料-库位管理", operating = "修改库位", action = BusinessType.UPDATE)
-  @PostMapping("/edit")
-  @ResponseBody
-  public AjaxResult editSave (Location location) {
-    String containerCode = location.getContainerCode();
-    if (StringUtils.isNotEmpty(containerCode)) {
-      Container container =  containerService.getContainerByCode(containerCode);
-      if (container == null) {
-        return AjaxResult.error("容器编码输入错误");
-      }
+    /**
+     * 查询库位列表
+     */
+    @Log(title = "配置-库存资料-库位管理", operating = "查看库位列表", action = BusinessType.GRANT)
+    @PostMapping("/getAllLocation")
+    @ResponseBody
+    public AjaxResult getAllLocation(String type) {
+        if (StringUtils.isEmpty(type)) {
+            return AjaxResult.error("type不能为空");
+        }
+
+        return AjaxResult.success(locationService.getAllLocation(type));
     }
-    location.setLastUpdatedBy(ShiroUtils.getName());
-    return toAjax(locationService.updateById(location));
-  }
-
-  /**
-   * 修改保存物料
-   */
-  @ApiOperation(value = "批量修改库位", notes = "批量修改库位", httpMethod = "POST")
-  @RequiresPermissions("config:location:edit")
-  @Log(title = "通用-库位管理", operating = "批量修改库位", action = BusinessType.UPDATE)
-  @PostMapping("/editBatchSave")
-  @ResponseBody
-  public AjaxResult editBatchSave (String ids, String materialAreaCode, Integer high, String status) {
-    String[] idArray = Convert.toStrArray(ids);
-    LambdaUpdateWrapper<Location> wrapper = Wrappers.lambdaUpdate();
-    wrapper.in(Location::getId, idArray)
-            .set(Location::getMaterialAreaCode, materialAreaCode)
-            .set(Location::getHigh, high)
-            .set(Location::getStatus, status);
-    return toAjax(locationService.update(wrapper));
-  }
-
-  /**
-   * 删除库位
-   */
-  @RequiresPermissions("config:location:remove")
-  @Log(title = "配置库存资料-库位管理", operating = "删除库位", action = BusinessType.DELETE)
-  @ApiOperation(value = "删除库位", notes = "批量删除库位", httpMethod = "POST")
-  @PostMapping("/remove")
-  @ResponseBody
-  public AjaxResult remove (String ids) {
-    if(StringUtils.isEmpty(ids)) {
-      return AjaxResult.error("id不能为空");
+
+
+    /**
+     * 新增库位
+     */
+    @GetMapping("/add")
+    public String add() {
+        return prefix + "/add";
     }
-    for (Integer id : Convert.toIntArray(ids)) {
-      Location location = locationService.getById(id);
-      if(StringUtils.isEmpty(location.getContainerCode())) {
-        locationService.removeById(locationService.getById(id));
-      } else {
-        return AjaxResult.error("库位(" + location.getCode() + ")不是空,或者有容器,不能删除成功!");
-      }
+
+    /**
+     * 新增保存库位
+     */
+    @ApiOperation(value = "新增库位", notes = "新增单个库位", httpMethod = "POST")
+    @RequiresPermissions("config:location:add")
+    @Log(title = "配置-库存资料-库位管理", operating = "新增库位", action = BusinessType.INSERT)
+    @PostMapping("/add")
+    @ResponseBody
+    public AjaxResult addSave(Location location) {
+        AjaxResult result = locationService.addsave(location);
+        return result;
     }
-    return AjaxResult.success("删除成功!");
-  }
-
-  /**
-   * 查询库位列表
-   */
-  @Log(title = "配置-库存资料-库位管理", operating = "查看库位列表", action = BusinessType.GRANT)
-  @PostMapping("/getLocationInfo")
-  @ResponseBody
-  public AjaxResult getLocationInfo (String type, String row, String line, String layer, String grid) {
-    if(StringUtils.isEmpty(type)) {
-      return AjaxResult.error("type不能为空");
+
+
+    /**
+     * 批量新增库位
+     */
+
+    @GetMapping("/addBatch")
+    public String addBatch() {
+        return prefix + "/addBatch";
     }
 
-    /* 查询库位信息*/
-    LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery();
-    locationLambdaQueryWrapper.eq(StringUtils.isNotEmpty(row), Location::getIRow, row)
-            .eq(StringUtils.isNotEmpty(line), Location::getIColumn, line)
-            .eq(StringUtils.isNotEmpty(layer), Location::getILayer, layer)
-            .eq(Location::getIGrid, 1) //
-            .eq(StringUtils.isNotEmpty(type), Location::getLocationType, type)
-            .eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode())
-            .eq(StringUtils.isNotEmpty(type), Location::getZoneCode, type);
-    List<Location> locations = locationService.list(locationLambdaQueryWrapper);
-    List<Location> locationList = new ArrayList<>();
-
-    /* 查询库存明细*/
-    LambdaQueryWrapper<InventoryDetail> inventoryDetailLambda = Wrappers.lambdaQuery();
-    inventoryDetailLambda.eq(InventoryDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
-    List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(inventoryDetailLambda);
-
-    for (Location location1 : locations) {
-      InventoryDetail inventoryDetail = null;
-      String materialName = null;
-      for (InventoryDetail inventoryDetail2 : inventoryDetailList) {
-        if(location1.getCode().equals(inventoryDetail2.getLocationCode())) {
-          inventoryDetail = inventoryDetail2;
+
+    /**
+     * 批量新增保存库位
+     */
+    @RequiresPermissions("config:location:add")
+    @ApiOperation(value = "新增库位", notes = "批量新增库位", httpMethod = "POST")
+    @Log(title = "配置-库存资料-库位管理", operating = "新增库位", action = BusinessType.INSERT)
+    @PostMapping("/addBatchSave")
+    @ResponseBody
+    public AjaxResult addBatchSave(String prefix, String firstRow, String lastRow, String firstColumn, String lastColumn, String firstLayer, String lastLayer,
+                                   String firstGrid, String lastGrid, String roadway, String status, String zoneCode, String locationType, String high) {
+
+        return toAjax(locationService.addBatchSave(prefix, Integer.parseInt(firstRow), Integer.parseInt(lastRow),
+                Integer.parseInt(firstColumn), Integer.parseInt(lastColumn), Integer.parseInt(firstLayer), Integer.parseInt(lastLayer),
+                Integer.parseInt(firstGrid), Integer.parseInt(lastGrid), roadway, status, zoneCode, locationType, high));
+    }
+
+    /**
+     * 修改库位
+     */
+    @GetMapping("/edit/{id}")
+    public String edit(@PathVariable("id") Integer id, ModelMap mmap) {
+        Location location = locationService.getById(id);
+        mmap.put("location", location);
+        return prefix + "/edit";
+    }
+
+    /**
+     * 修改物料
+     */
+    @GetMapping("/editBatch/{ids}")
+    public String editBatch(@PathVariable("ids") String ids, ModelMap mmap) {
+        mmap.put("ids", ids);
+        return prefix + "/editBatch";
+    }
+
+    /**
+     * 修改保存库位
+     */
+    @RequiresPermissions("config:location:edit")
+    @ApiOperation(value = "修改库位", notes = "批量修改库位", httpMethod = "POST")
+    @Log(title = "配置-库存资料-库位管理", operating = "修改库位", action = BusinessType.UPDATE)
+    @PostMapping("/edit")
+    @ResponseBody
+    public AjaxResult editSave(Location location) {
+        String containerCode = location.getContainerCode();
+        if (StringUtils.isNotEmpty(containerCode)) {
+            Container container = containerService.getContainerByCode(containerCode);
+            if (container == null) {
+                return AjaxResult.error("容器编码输入错误");
+            }
         }
-      }
-      List<InventoryDetail> inventoryDetails = inventoryDetailList.stream().filter(inventoryDetail1 ->
-              inventoryDetail1.getLocationCode().equals(location1.getCode())).collect(Collectors.toList());
-
-      int userDef3 = 0;
-      String status = location1.getStatus();
-      String containerCode = location1.getContainerCode();
-      List<String> materialNameList = inventoryDetails.stream().map(InventoryDetail::getMaterialName).collect(Collectors.toList());
-      List<String> batchList = inventoryDetails.stream().map(InventoryDetail::getBatch).collect(Collectors.toList());
-      List<String> materialCodeList = inventoryDetails.stream().map(InventoryDetail::getMaterialCode).collect(Collectors.toList());
-      List<BigDecimal> qtyList = inventoryDetails.stream().map(InventoryDetail::getQty).collect(Collectors.toList());
-      if(QuantityConstant.STATUS_LOCATION_EMPTY.equals(status)) {
-        if(StringUtils.isEmpty(containerCode)) {
-          userDef3 = LocationStatus.IDLE_EMPTY_LOCATION;
-        } else {
-          if(inventoryDetail == null) {
-            userDef3 = LocationStatus.IDLE_EMPTY_CONTAINER;
-          } else {
-            location1.setMaterialName(materialNameList);
-            location1.setMaterialCode(materialCodeList);
-            location1.setBatch(batchList);
-            location1.setQty(qtyList);
-            userDef3 = LocationStatus.IDLE_FULL_CONTAINER;
-          }
+        location.setLastUpdatedBy(ShiroUtils.getName());
+        return toAjax(locationService.updateById(location));
+    }
+
+    /**
+     * 修改保存物料
+     */
+    @ApiOperation(value = "批量修改库位", notes = "批量修改库位", httpMethod = "POST")
+    @RequiresPermissions("config:location:edit")
+    @Log(title = "通用-库位管理", operating = "批量修改库位", action = BusinessType.UPDATE)
+    @PostMapping("/editBatchSave")
+    @ResponseBody
+    public AjaxResult editBatchSave(String ids, String materialAreaCode, Integer high, String status) {
+        String[] idArray = Convert.toStrArray(ids);
+        LambdaUpdateWrapper<Location> wrapper = Wrappers.lambdaUpdate();
+        wrapper.in(Location::getId, idArray)
+                .set(Location::getMaterialAreaCode, materialAreaCode)
+                .set(Location::getHigh, high)
+                .set(Location::getStatus, status);
+        return toAjax(locationService.update(wrapper));
+    }
+
+    /**
+     * 删除库位
+     */
+    @RequiresPermissions("config:location:remove")
+    @Log(title = "配置库存资料-库位管理", operating = "删除库位", action = BusinessType.DELETE)
+    @ApiOperation(value = "删除库位", notes = "批量删除库位", httpMethod = "POST")
+    @PostMapping("/remove")
+    @ResponseBody
+    public AjaxResult remove(String ids) {
+        if (StringUtils.isEmpty(ids)) {
+            return AjaxResult.error("id不能为空");
         }
-      } else if(QuantityConstant.STATUS_LOCATION_LOCK.equals(status)) {
-        if(StringUtils.isEmpty(containerCode)) {
-          userDef3 = LocationStatus.LOCK_EMPTY_LOCATION;
-        } else {
-          if(inventoryDetail == null) {
-            userDef3 = LocationStatus.LOCK_EMPTY_CONTAINER;
-          } else {
-            location1.setMaterialName(materialNameList);
-            location1.setMaterialCode(materialCodeList);
-            location1.setBatch(batchList);
-            location1.setQty(qtyList);
-            userDef3 = LocationStatus.LOCK_FULL_CONTAINER;
-          }
+        for (Integer id : Convert.toIntArray(ids)) {
+            Location location = locationService.getById(id);
+            if (StringUtils.isEmpty(location.getContainerCode())) {
+                locationService.removeById(locationService.getById(id));
+            } else {
+                return AjaxResult.error("库位(" + location.getCode() + ")不是空,或者有容器,不能删除成功!");
+            }
         }
-      }
+        return AjaxResult.success("删除成功!");
+    }
 
-      if(location1.getDeleted()) {
-        if(StringUtils.isEmpty(containerCode)) {
-          userDef3 = LocationStatus.DISABLE_EMPTY_LOCATION;
-        } else {
-          if(inventoryDetail == null) {
-            userDef3 = LocationStatus.DISABLE_EMPTY_CONTAINER;
-          } else {
-            location1.setMaterialName(materialNameList);
-            location1.setMaterialCode(materialCodeList);
-            location1.setBatch(batchList);
-            location1.setQty(qtyList);
-            userDef3 = LocationStatus.DISABLE_FULL_CONTAINER;
-          }
+    /**
+     * 查询库位列表
+     */
+    @Log(title = "配置-库存资料-库位管理", operating = "查看库位列表", action = BusinessType.GRANT)
+    @PostMapping("/getLocationInfo")
+    @ResponseBody
+    public AjaxResult getLocationInfo(String type, String row, String line, String layer, String grid) {
+        if (StringUtils.isEmpty(type)) {
+            return AjaxResult.error("type不能为空");
         }
-      }
 
-      location1.setUserDef3(String.valueOf(userDef3));
-      locationList.add(location1);
+        /* 查询库位信息*/
+        LambdaQueryWrapper<Location> locationLambdaQueryWrapper = Wrappers.lambdaQuery();
+        locationLambdaQueryWrapper.eq(StringUtils.isNotEmpty(row), Location::getIRow, row)
+                .eq(StringUtils.isNotEmpty(line), Location::getIColumn, line)
+                .eq(StringUtils.isNotEmpty(layer), Location::getILayer, layer)
+                .eq(Location::getIGrid, 1) //
+                .eq(StringUtils.isNotEmpty(type), Location::getLocationType, type)
+                .eq(Location::getWarehouseCode, ShiroUtils.getWarehouseCode())
+                .eq(StringUtils.isNotEmpty(type), Location::getZoneCode, type);
+        List<Location> locations = locationService.list(locationLambdaQueryWrapper);
+        List<Location> locationList = new ArrayList<>();
+
+        /* 查询库存明细*/
+        LambdaQueryWrapper<InventoryDetail> inventoryDetailLambda = Wrappers.lambdaQuery();
+        inventoryDetailLambda.eq(InventoryDetail::getWarehouseCode, ShiroUtils.getWarehouseCode());
+        List<InventoryDetail> inventoryDetailList = inventoryDetailService.list(inventoryDetailLambda);
+
+        for (Location location1 : locations) {
+            InventoryDetail inventoryDetail = null;
+            String materialName = null;
+            for (InventoryDetail inventoryDetail2 : inventoryDetailList) {
+                if (location1.getCode().equals(inventoryDetail2.getLocationCode())) {
+                    inventoryDetail = inventoryDetail2;
+                }
+            }
+            List<InventoryDetail> inventoryDetails = inventoryDetailList.stream().filter(inventoryDetail1 ->
+                    inventoryDetail1.getLocationCode().equals(location1.getCode())).collect(Collectors.toList());
+
+            int userDef3 = 0;
+            String status = location1.getStatus();
+            String containerCode = location1.getContainerCode();
+            List<String> materialNameList = inventoryDetails.stream().map(InventoryDetail::getMaterialName).collect(Collectors.toList());
+            List<String> batchList = inventoryDetails.stream().map(InventoryDetail::getBatch).collect(Collectors.toList());
+            List<String> materialCodeList = inventoryDetails.stream().map(InventoryDetail::getMaterialCode).collect(Collectors.toList());
+            List<BigDecimal> qtyList = inventoryDetails.stream().map(InventoryDetail::getQty).collect(Collectors.toList());
+            if (QuantityConstant.STATUS_LOCATION_EMPTY.equals(status)) {
+                if (StringUtils.isEmpty(containerCode)) {
+                    userDef3 = LocationStatus.IDLE_EMPTY_LOCATION;
+                } else {
+                    if (inventoryDetail == null) {
+                        userDef3 = LocationStatus.IDLE_EMPTY_CONTAINER;
+                    } else {
+                        location1.setMaterialName(materialNameList);
+                        location1.setMaterialCode(materialCodeList);
+                        location1.setBatch(batchList);
+                        location1.setQty(qtyList);
+                        userDef3 = LocationStatus.IDLE_FULL_CONTAINER;
+                    }
+                }
+            } else if (QuantityConstant.STATUS_LOCATION_LOCK.equals(status)) {
+                if (StringUtils.isEmpty(containerCode)) {
+                    userDef3 = LocationStatus.LOCK_EMPTY_LOCATION;
+                } else {
+                    if (inventoryDetail == null) {
+                        userDef3 = LocationStatus.LOCK_EMPTY_CONTAINER;
+                    } else {
+                        location1.setMaterialName(materialNameList);
+                        location1.setMaterialCode(materialCodeList);
+                        location1.setBatch(batchList);
+                        location1.setQty(qtyList);
+                        userDef3 = LocationStatus.LOCK_FULL_CONTAINER;
+                    }
+                }
+            }
+
+            if (location1.getDeleted()) {
+                if (StringUtils.isEmpty(containerCode)) {
+                    userDef3 = LocationStatus.DISABLE_EMPTY_LOCATION;
+                } else {
+                    if (inventoryDetail == null) {
+                        userDef3 = LocationStatus.DISABLE_EMPTY_CONTAINER;
+                    } else {
+                        location1.setMaterialName(materialNameList);
+                        location1.setMaterialCode(materialCodeList);
+                        location1.setBatch(batchList);
+                        location1.setQty(qtyList);
+                        userDef3 = LocationStatus.DISABLE_FULL_CONTAINER;
+                    }
+                }
+            }
+
+            location1.setUserDef3(String.valueOf(userDef3));
+            locationList.add(location1);
+        }
+        return AjaxResult.success(locations);
     }
-    return AjaxResult.success(locations);
-  }
 
 
-  @Log(title = "配置-库存资料-库位条码", operating = "库位条码打印", action = BusinessType.OTHER)
-  //  @ResponseBody // 错误1ajax是json数据而没有添加该注解返回值不为json所以不能够返回common.ajaxSetup.textStatus= "parsererror"报错
-  @GetMapping("/print/{ids}")
-  public void print (@PathVariable("ids") Integer[] ids, ModelMap mmap)  // arg1:物料id arg2:会话对象不需要直接返回
-  {
-    print.jasperPrint(ids, prefix);// 不用返回json打印
-  }
+    @Log(title = "配置-库存资料-库位条码", operating = "库位条码打印", action = BusinessType.OTHER)
+    //  @ResponseBody // 错误1ajax是json数据而没有添加该注解返回值不为json所以不能够返回common.ajaxSetup.textStatus= "parsererror"报错
+    @GetMapping("/print/{ids}")
+    public void print(@PathVariable("ids") Integer[] ids, ModelMap mmap)  // arg1:物料id arg2:会话对象不需要直接返回
+    {
+        print.jasperPrint(ids, prefix);// 不用返回json打印
+    }
 
 
     @Log(title = "监控-库位空闲监控-库位管理", operating = "查看库位空闲结果", action = BusinessType.GRANT)
     @PostMapping("/getIdleLocation")
     @ResponseBody
     public AjaxResult<?> getIdleLocation() {
-      return AjaxResult.success(locationService.getIdleLocation());
+        return AjaxResult.success(locationService.getIdleLocation());
     }
 }
--
libgit2 0.22.2