| package doumeemes.api.ext; | 
|   | 
| import doumeemes.api.BaseController; | 
| import doumeemes.core.annotation.excel.ExcelExporter; | 
| import doumeemes.core.annotation.pr.PreventRepeat; | 
| 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 = "货位信息接口") | 
| 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<WarehouseLocation> 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<WarehouseLocation> 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<WarehouseLocation> 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<PageData<WarehouseLocationExtListVO>> findPage (@RequestBody PageWrap<QueryWarehouseLocationExtDTO> 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<QueryWarehouseLocationExtDTO> pageWrap, HttpServletResponse response) { | 
|         ExcelExporter.build(WarehouseLocationExtListVO.class).export(warehouseLocationExtService.findPage(pageWrap).getRecords(), "货位信息", response); | 
|     } | 
|   | 
|     @ApiOperation("根据ID查询") | 
|     @GetMapping("/{id}") | 
|     @RequiresPermissions("ext:warehouselocationext:query") | 
|     public ApiResponse<WarehouseLocation> 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<List<WarehouseLocation>> 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)); | 
|     } | 
|   | 
| } |