/* * Copyright (c) 2018-2025, ztt All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * Neither the name of the pig4cloud.com developer nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * Author: ztt */ package com.chinaztt.mes.basic.controller; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.chinaztt.mes.basic.dto.LocationDTO; import com.chinaztt.mes.basic.entity.Location; import com.chinaztt.mes.basic.entity.Warehouse; import com.chinaztt.mes.basic.excel.LocationData; import com.chinaztt.mes.basic.excel.LocationUploadListener; import com.chinaztt.mes.basic.service.LocationService; import com.chinaztt.mes.basic.service.WarehouseService; import com.chinaztt.mes.common.wrapper.QueryWrapperUtil; import com.chinaztt.ztt.common.core.util.R; import com.chinaztt.ztt.common.log.annotation.SysLog; import com.chinaztt.ztt.common.security.annotation.Inner; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** * 库位基础数据 * * @author sunxl * @date 2020-09-21 08:18:12 */ @RestController @AllArgsConstructor @RequestMapping("/location") @Api(value = "location", tags = "库位基础数据管理") public class LocationController { private final LocationService locationService; private final WarehouseService warehouseService; /** * 分页查询 * * @param page 分页对象 * @param location 库位基础数据 * @return */ @ApiOperation(value = "分页查询", notes = "分页查询") @GetMapping("/page") @PreAuthorize("@pms.hasPermission('basic_location_view')") public R getLocationPage(Page page, LocationDTO location) { return R.ok(locationService.getLoc(page, QueryWrapperUtil.gen(location))); } /** * 分页查询 * * @param page 分页对象 * @param locationDTO 库位 * @return */ @ApiOperation(value = "分页查询", notes = "分页查询") @GetMapping("/pageDto") @PreAuthorize("@pms.hasPermission('basic_location_view')") public R getLocationDtoPage(Page page, LocationDTO locationDTO) { return R.ok(locationService.getLocationDtoPage(page, QueryWrapperUtil.gen(locationDTO))); } /** * 通过id查询库位基础数据 * * @param id id * @return R */ @ApiOperation(value = "通过id查询", notes = "通过id查询") @GetMapping("/{id}") @PreAuthorize("@pms.hasPermission('basic_location_view')") public R getById(@PathVariable("id") Long id) { return R.ok(locationService.getById(id)); } /** * 新增库位基础数据 * * @param location 库位基础数据 * @return R */ @ApiOperation(value = "新增库位基础数据", notes = "新增库位基础数据") @SysLog("新增库位基础数据") @PostMapping @PreAuthorize("@pms.hasPermission('basic_location_add')") public R save(@RequestBody Location location) { Location locationByFind = locationService.getOne(Wrappers.lambdaQuery().eq(Location::getLocNo, location.getLocNo())); if (locationByFind != null) { throw new RuntimeException("仓库编号重复:" + locationByFind.getLocNo() + "-" + locationByFind.getLocGroup()); } return R.ok(locationService.save(location)); } /** * excel上传 * * @return */ @PostMapping("/upload") public R upload(@RequestParam("file") MultipartFile file) { try { List warehouseList = warehouseService.list(); Map map = warehouseList.stream().collect(Collectors.toMap(Warehouse::getWarehouseName, warehouse -> warehouse, (k1, k2) -> k1)); EasyExcel.read(file.getInputStream(), LocationData.class, new LocationUploadListener(locationService, map)).sheet().doRead(); } catch (IOException e) { e.printStackTrace(); } return R.ok(); } /** * 修改库位基础数据 * * @param location 库位基础数据 * @return R */ @ApiOperation(value = "修改库位基础数据", notes = "修改库位基础数据") @SysLog("修改库位基础数据") @PutMapping @PreAuthorize("@pms.hasPermission('basic_location_edit')") public R updateById(@RequestBody Location location) { Location locationByFind = locationService.getOne(Wrappers.lambdaQuery().eq(Location::getLocNo, location.getLocNo()).ne(Location::getId, location.getId())); if (locationByFind != null) { throw new RuntimeException("仓库编号重复:" + locationByFind.getLocNo() + "-" + locationByFind.getLocGroup()); } return R.ok(locationService.updateById(location)); } /** * 通过id删除库位基础数据 * * @param id * @return R */ @ApiOperation(value = "通过id删除库位基础数据", notes = "通过id删除库位基础数据") @SysLog("通过id删除库位基础数据") @DeleteMapping("/{id}") @PreAuthorize("@pms.hasPermission('basic_location_del')") public R removeById(@PathVariable Long id) { return R.ok(locationService.removeById(id)); } /** * @param warehouse * @return */ @GetMapping("/warehouse") public List loadWarehouse(Warehouse warehouse) { return warehouseService.list(Wrappers.query(warehouse)); } /** * @param location * @return */ @GetMapping("/location") @Inner(value = false) public R loadLocation(Location location) { return R.ok(locationService.list(Wrappers.query(location))); } /** * @param location * @return */ @GetMapping("/prepareLocation") public R loadPrepareLocation(Location location) { return R.ok(locationService.getPrepare(location)); } /** * PDA查询所有 * * @param locationDTO 库位 * @return */ @ApiOperation(value = "PDA查询所有", notes = "PDA查询所有") @GetMapping("/pda/list") @Inner(false) public R pdaList(LocationDTO locationDTO) { return R.ok(locationService.pdaList(QueryWrapperUtil.gen(locationDTO))); } /** * 查询退库默认库位 * * @return */ @ApiOperation(value = "查询退库默认库位", notes = "查询退库默认库位") @GetMapping("/getDeaultLocation") @Inner(false) public R getDeaultLocation() { return R.ok(locationService.getDeaultLocation()); } /** * 查询ifs库位数据 * * @return */ @ApiOperation(value = "查询ifs库位数据", notes = "查询ifs库位数据") @GetMapping("/getIfsLocation") public R getIfsLocation(String locationGroup, String locationNo, String locationDesc) { return locationService.getIfsLocation(locationGroup, locationNo, locationDesc); } /** * 查询ifs库位分组数据 * * @return */ @ApiOperation(value = "查询ifs库位分组接口", notes = "查询ifs库位分组接口") @GetMapping("/getIfsLocationGroup") public R getIfsLocationGroup() { return locationService.getIfsLocationGroup(); } /** * 通过所属仓库分组查询库位号 * * @param id id * @return R */ @ApiOperation(value = "通过所属仓库分组查询库位号", notes = "通过所属仓库分组查询库位号") @GetMapping("/getLocationByGroups") public R getLocationByGroups(@RequestParam List localGroups) { return R.ok(locationService.getLocationByGroups(localGroups)); } }