|  |  | 
 |  |  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | 
 |  |  | import com.vincent.rsf.framework.common.Cools; | 
 |  |  | import com.vincent.rsf.framework.common.R; | 
 |  |  | import com.vincent.rsf.framework.exception.CoolException; | 
 |  |  | import com.vincent.rsf.server.common.utils.ExcelUtil; | 
 |  |  | import com.vincent.rsf.server.common.annotation.OperationLog; | 
 |  |  | import com.vincent.rsf.server.common.domain.BaseParam; | 
 |  |  | import com.vincent.rsf.server.common.domain.KeyValVo; | 
 |  |  | import com.vincent.rsf.server.common.domain.PageParam; | 
 |  |  | import com.vincent.rsf.server.manager.entity.Warehouse; | 
 |  |  | import com.vincent.rsf.server.manager.entity.WarehouseAreas; | 
 |  |  | import com.vincent.rsf.server.manager.service.WarehouseAreasItemService; | 
 |  |  | import com.vincent.rsf.server.manager.service.WarehouseAreasService; | 
 |  |  | 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.*; | 
 |  |  | 
 |  |  | import javax.servlet.http.HttpServletResponse; | 
 |  |  | import java.util.*; | 
 |  |  |  | 
 |  |  | @Api(tags = "仓库") | 
 |  |  | @RestController | 
 |  |  | public class WarehouseController extends BaseController { | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private WarehouseService warehouseService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private WarehouseAreasService warehouseAreasService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private WarehouseAreasItemService warehouseAreasItemService; | 
 |  |  |  | 
 |  |  |     @PreAuthorize("hasAuthority('manager:warehouse:list')") | 
 |  |  |     @PostMapping("/warehouse/page") | 
 |  |  | 
 |  |  |     @OperationLog("Create 仓库信息表") | 
 |  |  |     @PostMapping("/warehouse/save") | 
 |  |  |     public R save(@RequestBody Warehouse warehouse) { | 
 |  |  |         if (Objects.isNull(warehouse)) { | 
 |  |  |             throw new CoolException("参数不能为空!!"); | 
 |  |  |         } | 
 |  |  |         if (Objects.isNull(warehouse.getName())) { | 
 |  |  |             throw new CoolException("仓库名称不能为空!!"); | 
 |  |  |         } | 
 |  |  |         List<Warehouse> warehouses = warehouseService.list(new LambdaQueryWrapper<Warehouse>().eq(Warehouse::getName, warehouse.getName())); | 
 |  |  |         if (!warehouses.isEmpty()) { | 
 |  |  |             throw new CoolException("仓库名称已存在!!"); | 
 |  |  |         } | 
 |  |  |         if (!warehouseService.list(new LambdaQueryWrapper<Warehouse>().eq(Warehouse::getCode, warehouse.getCode())).isEmpty()) { | 
 |  |  |             throw new CoolException("仓库编码已存在!!"); | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         warehouse.setCreateBy(getLoginUserId()); | 
 |  |  |         warehouse.setCreateTime(new Date()); | 
 |  |  |         warehouse.setUpdateBy(getLoginUserId()); | 
 |  |  |         warehouse.setUpdateTime(new Date()); | 
 |  |  |         if (!warehouseService.save(warehouse)) { | 
 |  |  |             return R.error("Save Fail"); | 
 |  |  |         } | 
 |  |  | 
 |  |  |     @OperationLog("Update 仓库信息表") | 
 |  |  |     @PostMapping("/warehouse/update") | 
 |  |  |     public R update(@RequestBody Warehouse warehouse) { | 
 |  |  |         if (Objects.isNull(warehouse)) { | 
 |  |  |             throw new CoolException("参数不能为空!!"); | 
 |  |  |         } | 
 |  |  |         if (Objects.isNull(warehouse.getName())) { | 
 |  |  |             throw new CoolException("仓库名称不能为空!!"); | 
 |  |  |         } | 
 |  |  |         warehouse.setUpdateBy(getLoginUserId()); | 
 |  |  |         warehouse.setUpdateTime(new Date()); | 
 |  |  |  | 
 |  |  |         Warehouse warehouse1 = warehouseService.getById(warehouse.getId()); | 
 |  |  |         if (!warehouse.getName().equals(warehouse1.getName())) { | 
 |  |  |             List<Warehouse> areasList = warehouseService.list(new LambdaQueryWrapper<Warehouse>().eq(Warehouse::getName, warehouse1.getName())); | 
 |  |  |             if (!areasList.isEmpty()) { | 
 |  |  |                 throw new CoolException("仓库名已存在!!"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if (!warehouse.getCode().equals(warehouse1.getCode())) { | 
 |  |  |             List<Warehouse> areasList = warehouseService.list(new LambdaQueryWrapper<Warehouse>().eq(Warehouse::getCode, warehouse1.getCode())); | 
 |  |  |             if (!areasList.isEmpty()) { | 
 |  |  |                 throw new CoolException("仓库编码已存在!!"); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         if (!warehouseService.updateById(warehouse)) { | 
 |  |  |             return R.error("Update Fail"); | 
 |  |  |         } | 
 |  |  | 
 |  |  |     @OperationLog("Delete 仓库信息表") | 
 |  |  |     @PostMapping("/warehouse/remove/{ids}") | 
 |  |  |     public R remove(@PathVariable Long[] ids) { | 
 |  |  |         if (ids.length < 1) { | 
 |  |  |             throw new CoolException("查询id不能为空!!"); | 
 |  |  |         } | 
 |  |  |         List<WarehouseAreas> warehouseAreas = warehouseAreasService.list(new LambdaQueryWrapper<WarehouseAreas>() | 
 |  |  |                 .in(WarehouseAreas::getWarehouseId, ids)); | 
 |  |  |         if (!warehouseAreas.isEmpty()) { | 
 |  |  |             throw new CoolException("当前仓库下有未删除库区, 不可操作删除!!"); | 
 |  |  |         } | 
 |  |  |         if (!warehouseService.removeByIds(Arrays.asList(ids))) { | 
 |  |  |             return R.error("Delete Fail"); | 
 |  |  |         } | 
 |  |  | 
 |  |  |     @PreAuthorize("hasAuthority('manager:warehouse:list')") | 
 |  |  |     @PostMapping("/warehouse/export") | 
 |  |  |     public void export(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { | 
 |  |  |         ExcelUtil.build(ExcelUtil.create(warehouseService.list(), Warehouse.class), response); | 
 |  |  |         List<Warehouse> list = new ArrayList<>(); | 
 |  |  |         if (!Objects.isNull(map.get("ids"))) { | 
 |  |  |             list = warehouseService.list(new LambdaQueryWrapper<Warehouse>().in(Warehouse::getId, map.get("ids"))); | 
 |  |  |         } else { | 
 |  |  |             list = warehouseService.list(); | 
 |  |  |         } | 
 |  |  |         ExcelUtil.build(ExcelUtil.create(list, Warehouse.class), response); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @ApiOperation("获取仓库树状图") | 
 |  |  |     @PreAuthorize("hasAuthority('manager:warehouse:list')") | 
 |  |  |     @PostMapping("/warehouse/areas") | 
 |  |  |     public R getAreasForWarehouse(@RequestBody Map<String, Object> param) { | 
 |  |  |         return R.ok(warehouseService.getAllWarehouseAreas(param)); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | } |