package doumeemes.api.ext; import doumeemes.api.BaseController; import doumeemes.core.annotation.excel.ExcelExporter; import doumeemes.core.annotation.pr.PreventRepeat; import doumeemes.core.annotation.trace.Trace; import doumeemes.core.model.ApiResponse; import doumeemes.core.model.PageData; import doumeemes.core.model.PageWrap; import doumeemes.core.utils.Constants; import doumeemes.dao.business.model.WStock; import doumeemes.dao.business.model.Warehouse; import doumeemes.dao.business.model.WarehouseLocation; import doumeemes.dao.ext.dto.QueryWarehouseLocationExtDTO; import doumeemes.dao.ext.vo.WarehouseLocationExtListVO; import doumeemes.dao.system.model.SystemDictData; import doumeemes.service.business.WStockService; import doumeemes.service.business.WarehouseLocationService; import doumeemes.service.business.WarehouseService; import doumeemes.service.ext.WarehouseLocationExtService; import doumeemes.service.system.SystemDictDataService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 货位信息接口 * @author 江蹄蹄 * @date 2022/05/05 11:37 */ @RestController @RequestMapping("/ext/warehouseLocationExt") @Api(tags = "货位信息接口") @Trace(withRequestResult = false,withRequestParameters = false) public class WarehouseLocationExtController extends BaseController { @Autowired private WarehouseLocationExtService warehouseLocationExtService; @Autowired private WarehouseLocationService warehouseLocationService; @Autowired private WStockService wStockService; @Autowired private WarehouseService warehouseService; @Autowired private SystemDictDataService systemDictDataService; @PreventRepeat @ApiOperation("新建") @PostMapping("/create") @RequiresPermissions("ext:warehouselocationext:create") public ApiResponse create(@RequestBody WarehouseLocation warehouseLocation) { return warehouseLocationService.create(warehouseLocation); } @ApiOperation("根据ID删除") @GetMapping("/delete/{id}") @RequiresPermissions("ext:warehouselocationext:delete") public ApiResponse deleteById(@PathVariable Integer id) { WarehouseLocation warehouseLocation=new WarehouseLocation(); warehouseLocation.setWarehouseId(id); warehouseLocation.setDeleted(Constants.ONE); warehouseLocationService.updateById(warehouseLocation); return ApiResponse.success(null); } @ApiOperation("批量删除") @GetMapping("/delete/batch") @RequiresPermissions("ext:warehouselocationext:delete") public ApiResponse deleteByIds(@RequestParam String ids) { String [] idArray = ids.split(","); List idList = new ArrayList<>(); for (String id : idArray) { WarehouseLocation warehouseLocation=new WarehouseLocation(); warehouseLocation.setWarehouseId(Integer.valueOf(id)); warehouseLocation.setDeleted(Constants.ONE); idList.add(warehouseLocation); } warehouseLocationService.updateByIdInBatch(idList); return ApiResponse.success(null); } @ApiOperation("根据ID修改") @PostMapping("/updateById") @RequiresPermissions("ext:warehouselocationext:update") public ApiResponse updateById(@RequestBody WarehouseLocation warehouseLocation) { Warehouse warehouse= warehouseService.findById(warehouseLocation.getWarehouseId()); SystemDictData systemDictData= systemDictDataService.findById(Integer.valueOf(warehouse.getSystemDicDataId())); if(!StringUtils.equals(systemDictData.getLabel(),"APPLIANCE_MIX")){ if(!StringUtils.equals(warehouse.getSystemDicDataId(),warehouseLocation.getSystemDicDataId())){ return ApiResponse.failed("仓库的属性不是混合,则货位属性需要跟仓库相同"); } } warehouseLocation.setUpdateTime(new Date()); warehouseLocation.setUpdateUser(getLoginUser().getId()); if(StringUtils.isNotEmpty(warehouseLocation.getShelf())){ if(StringUtils.isNotEmpty(warehouseLocation.getCell())){ warehouseLocation.setUnionName(warehouseLocation.getArea()+"-"+warehouseLocation.getShelf()+"-"+warehouseLocation.getCell()); }else{ warehouseLocation.setUnionName(warehouseLocation.getArea()+"-"+warehouseLocation.getShelf()); } }else{ warehouseLocation.setUnionName(warehouseLocation.getArea()); } WarehouseLocation codedate=new WarehouseLocation(); codedate.setDeleted(Constants.ZERO); codedate.setRootDepartId(getLoginUser().getRootDepartment().getId()); codedate.setCode(warehouseLocation.getCode()); List listcode=warehouseLocationService.findList(codedate); if(listcode.size()>0){ if(!Constants.equalsInteger(listcode.get(0).getId(),warehouseLocation.getId())){ return ApiResponse.failed("主组织下货位编码不能重复"); } } WarehouseLocation codeUnionName=new WarehouseLocation(); codeUnionName.setDeleted(Constants.ZERO); codeUnionName.setRootDepartId(getLoginUser().getRootDepartment().getId()); codeUnionName.setUnionName(warehouseLocation.getUnionName()); List listUnionName=warehouseLocationService.findList(codeUnionName); if(listUnionName.size()>0){ if(!Constants.equalsInteger(listUnionName.get(0).getId(),warehouseLocation.getId())){ return ApiResponse.failed("仓库下货位组合不能重复"); } } WarehouseLocation find=warehouseLocationService.findById(warehouseLocation.getId()); find.setWarehouseId(warehouseLocation.getWarehouseId()); find.setCode(warehouseLocation.getCode()); find.setArea(warehouseLocation.getArea()); find.setCell(warehouseLocation.getCell()); find.setShelf(warehouseLocation.getShelf()); find.setUpdateTime(new Date()); find.setUpdateUser(getLoginUser().getId()); find.setUnionName(warehouseLocation.getUnionName()); find.setSystemDicDataId(warehouseLocation.getSystemDicDataId()); // find.setStatus(Constants.ZERO); warehouseLocationService.updateById(find); return ApiResponse.success(null); } @ApiOperation("分页查询") @PostMapping("/page") @RequiresPermissions("ext:warehouselocationext:query") public ApiResponse> findPage (@RequestBody PageWrap pageWrap) { pageWrap.getModel().setDeleted(Constants.ZERO); pageWrap.getModel().setRootDepartId(getLoginUser().getRootDepartment().getId()); pageWrap.getModel().setWmodelDepartId(getLoginUser().getCurComDepartment().getId()); return ApiResponse.success(warehouseLocationExtService.findPage(pageWrap)); } @ApiOperation("导出Excel") @PostMapping("/exportExcel") @RequiresPermissions("ext:warehouselocationext:exportExcel") public void exportExcel (@RequestBody PageWrap pageWrap, HttpServletResponse response) { ExcelExporter.build(WarehouseLocationExtListVO.class).export(warehouseLocationExtService.findPage(pageWrap).getRecords(), "货位信息", response); } @ApiOperation("根据ID查询") @GetMapping("/{id}") @RequiresPermissions("ext:warehouselocationext:query") public ApiResponse findById(@PathVariable Integer id) { return ApiResponse.success(warehouseLocationService.findById(id)); } @ApiOperation("更改状态") @ApiImplicitParams({ @ApiImplicitParam(value = "id", name = "id", paramType = "query", required = true, dataType = "String"), @ApiImplicitParam(value = "status", name = "status", paramType = "query", required = true, dataType = "String") }) @GetMapping("/upsateStatus") @RequiresPermissions("ext:warehouselocationext:upsateStatus") public ApiResponse upsateStatus(@RequestParam String id,@RequestParam String status) { WarehouseLocation data= warehouseLocationService.findById(Integer.valueOf(id)); WarehouseLocation warehouseLocation=new WarehouseLocation(); warehouseLocation.setId(Integer.valueOf(id)); warehouseLocation.setStatus(Integer.valueOf(status)); WStock wStock=new WStock(); wStock.setDeleted(Constants.ZERO); wStock.setRootDepartId(getLoginUser().getRootDepartment().getId()); wStock.setLocationId(data.getId()); wStock.setWarehouseId(data.getWarehouseId()); WStock wl= wStockService.findOne(wStock); if(wl!=null&&wl.getNum()!=null&&wl.getNum().compareTo(BigDecimal.ZERO)>0){ return ApiResponse.failed("库存库位的库存量大于0,不允许失效"); } warehouseLocationService.updateById(warehouseLocation); return ApiResponse.success(null); } @ApiOperation("根据仓库查询仓库下货位信息") @ApiImplicitParams({ @ApiImplicitParam(value = "wareHouseId", name = "wareHouseId", paramType = "query", required = true, dataType = "Integer"), @ApiImplicitParam(value = "status", name = "status", paramType = "query", required = false, dataType = "String"), @ApiImplicitParam(value = "systemDicDataId", name = "systemDicDataId", paramType = "query", required = false, dataType = "String"), }) @GetMapping("/getListByWarehouseId") public ApiResponse> getListByWarehouseId(@RequestParam Integer wareHouseId ,@RequestParam(required = false) String status,@RequestParam(required = false) String systemDicDataId) { WarehouseLocation warehouseLocation = new WarehouseLocation(); warehouseLocation.setWarehouseId(wareHouseId); if(StringUtils.isNotEmpty(status)){ warehouseLocation.setStatus(Integer.valueOf(status)); } if(StringUtils.isNotEmpty(systemDicDataId)){ warehouseLocation.setSystemDicDataId(systemDicDataId); } warehouseLocation.setDeleted(Constants.ZERO); warehouseLocation.setRootDepartId(getLoginUser().getRootDepartment().getId()); return ApiResponse.success(warehouseLocationService.findList(warehouseLocation)); } }