rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/WarehouseController.java
@@ -17,6 +17,7 @@ import com.vincent.rsf.server.manager.service.WarehouseService; import com.vincent.rsf.server.system.controller.BaseController; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -166,12 +167,11 @@ ExcelUtil.build(ExcelUtil.create(list, Warehouse.class), response); } @ApiOperation("获取仓库树状图") @PreAuthorize("hasAuthority('manager:warehouse:list')") @GetMapping("/warehouse/areas") public R getAreasForWarehouse() { return R.ok(warehouseService.getAllWarehouseAreas()); @PostMapping("/warehouse/areas") public R getAreasForWarehouse(@RequestBody Map<String, Object> param) { return R.ok(warehouseService.getAllWarehouseAreas(param)); } } rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Warehouse.java
@@ -146,6 +146,11 @@ @ApiModelProperty("库区") private List<WarehouseAreas> children; @TableField(exist = false) private Integer flagWare; public Warehouse() {} public Warehouse(String name,String code,String factory,String address,String longitude,String latgitude,Double length,Double width,Double height,Integer status,Integer deleted,Integer tenantId,Long createBy,Date createTime,Long updateBy,Date updateTime,String memo) { rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/WarehouseAreas.java
@@ -1,6 +1,7 @@ package com.vincent.rsf.server.manager.entity; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.*; import java.text.SimpleDateFormat; import java.util.Date; @@ -12,10 +13,7 @@ import java.text.SimpleDateFormat; import java.util.Date; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -141,6 +139,10 @@ @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date updateTime; @TableField(exist = false) @ApiModelProperty("是否仓库") private Integer flagWare; /** * 备注 */ rsf-server/src/main/java/com/vincent/rsf/server/manager/mapper/WarehouseMapper.java
@@ -3,10 +3,14 @@ import com.vincent.rsf.server.manager.entity.Warehouse; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import org.springframework.stereotype.Repository; import java.util.List; @Mapper @Repository public interface WarehouseMapper extends BaseMapper<Warehouse> { List<Warehouse> selectByName(@Param("name") String name); } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/WarehouseService.java
@@ -4,8 +4,9 @@ import com.vincent.rsf.server.manager.entity.Warehouse; import java.util.List; import java.util.Map; public interface WarehouseService extends IService<Warehouse> { List<Warehouse> getAllWarehouseAreas(); List<Warehouse> getAllWarehouseAreas(Map<String, Object> param); } rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/WarehouseServiceImpl.java
@@ -2,17 +2,22 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.server.manager.entity.Loc; import com.vincent.rsf.server.manager.entity.WarehouseAreas; import com.vincent.rsf.server.manager.mapper.WarehouseMapper; import com.vincent.rsf.server.manager.entity.Warehouse; import com.vincent.rsf.server.manager.service.WarehouseAreasService; import com.vincent.rsf.server.manager.service.WarehouseService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; @Service("warehouseService") public class WarehouseServiceImpl extends ServiceImpl<WarehouseMapper, Warehouse> implements WarehouseService { @@ -21,19 +26,33 @@ private WarehouseAreasService warehouseAreasService; @Override public List<Warehouse> getAllWarehouseAreas() { List<Warehouse> warehouses = this.list(new LambdaQueryWrapper<>()); public List<Warehouse> getAllWarehouseAreas(Map<String, Object> param) { List<Warehouse> filters = new ArrayList<>(); List<Long> wareIds = new ArrayList<>(); Object name = param.get("name"); boolean isEmpty = !Objects.isNull(name) && !StringUtils.isBlank(name.toString()); if (isEmpty) { filters = this.baseMapper.selectByName(name.toString()); wareIds = filters.stream().map(Warehouse::getId).collect(Collectors.toList()); } List<Warehouse> warehouses = this.list(new LambdaQueryWrapper<Warehouse>().in(!wareIds.isEmpty(), Warehouse::getId, wareIds)); if (warehouses.isEmpty()) { throw new CoolException("仓库为空,请添加仓库后再操作!!"); } List<WarehouseAreas> warehouseAreas = warehouseAreasService.list(new LambdaQueryWrapper<>()); List<Long> list = warehouses.stream().map(Warehouse::getId).collect(Collectors.toList()); List<WarehouseAreas> warehouseAreas = warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>() .like(isEmpty, WarehouseAreas::getName, !Objects.isNull(name) ? name.toString() : "") .in(!warehouses.isEmpty(), WarehouseAreas::getWarehouseId, list) ); if (warehouseAreas.isEmpty()) { return warehouses; } warehouses.forEach(warehouse -> { warehouse.setFlagWare(1); List<WarehouseAreas> areas = new ArrayList<>(); warehouseAreas.forEach(warehouseAreas1 -> { if (warehouse.getId().equals(warehouseAreas1.getWarehouseId())) { warehouseAreas1.setFlagWare(0); areas.add(warehouseAreas1); } }); rsf-server/src/main/resources/mapper/manager/WarehouseMapper.xml
@@ -2,4 +2,8 @@ <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.vincent.rsf.server.manager.mapper.WarehouseMapper"> <select id="selectByName" resultType="com.vincent.rsf.server.manager.entity.Warehouse"> SELECT wh.id AS id FROM man_warehouse wh LEFT JOIN man_warehouse_areas wa on wh.id = wa.warehouse_id WHERE wh.`name` LIKE CONCAT('%',#{name},'%') OR wa.`name` LIKE CONCAT('%',#{name},'%') </select> </mapper>