package com.chinaztt.mes.warehouse.controller; import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.chinaztt.mes.common.wrapper.QueryWrapperUtil; import com.chinaztt.mes.warehouse.dto.FeedingStockDTO; import com.chinaztt.mes.warehouse.dto.MoveLibraryBoxDTO; import com.chinaztt.mes.warehouse.dto.StockDTO; import com.chinaztt.mes.warehouse.entity.JoinStockOrder; import com.chinaztt.mes.warehouse.excel.StockData; import com.chinaztt.mes.warehouse.excel.StockUploadListener; import com.chinaztt.mes.warehouse.service.StockService; import com.chinaztt.ztt.common.core.util.R; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; /** * 库存表 * * @author cxf * @date 2020-10-22 16:37:46 */ @RestController @AllArgsConstructor @RequestMapping("/stock") @Api(value = "stock", tags = "库存表管理") public class StockController { private final StockService warehouseStockService; /** * 分页查询 * * @param page 分页对象 * @param stockDTO 库存表 * @return */ @ApiOperation(value = "分页查询", notes = "分页查询") @GetMapping("/page") public R getStockPage(Page page, StockDTO stockDTO) { return R.ok(warehouseStockService.getStockPage(page, QueryWrapperUtil.gen(stockDTO))); } /** * 实时库存分页查询 * * @param page 分页对象 * @param stockDTO 库存表 * @return */ @ApiOperation(value = "实时库存分页查询", notes = "实时库存分页查询") @GetMapping("/realTimeStockPage") public R getRealTimeStockPage(Page page, StockDTO stockDTO) { return R.ok(warehouseStockService.getRealTimeStockPage(page, QueryWrapperUtil.gen(stockDTO),stockDTO)); } /** * 根据sn号获取库存明细 * * @param * @return */ @ApiOperation(value = "根据sn号获取库存明细", notes = "根据sn号获取库存明细") @GetMapping("/getStockBySn") public R getStockBySn(@RequestParam("partBatchNo") String partBatchNo) { return R.ok(warehouseStockService.getStockBySn(partBatchNo)); } /** * 分页查询 * * @param feedingStockDTO 库存表 * @return */ @ApiOperation(value = "分页查询", notes = "分页查询") @GetMapping("/getFeedingStock/{workstationId}") public R getFeedingStock(FeedingStockDTO feedingStockDTO, @PathVariable("workstationId") Long workstationId) { return R.ok(warehouseStockService.getFeedingStock(workstationId, QueryWrapperUtil.gen(feedingStockDTO))); } /** * 根据工单所需物料获取实时库存 * * @param page 分页对象 * @param stockDTO 库存表 * @return */ @ApiOperation(value = "根据工单所需物料获取实时库存", notes = "根据工单所需物料获取实时库存") @GetMapping(value = {"/getStockPageByOperation/{operationTaskId}", "getStockPageByOperation"}) public R getStockPageByOperation(Page page, StockDTO stockDTO, @PathVariable(value = "operationTaskId", required = false) Long operationTaskId) { return R.ok(warehouseStockService.getStockPageByOperation(page, QueryWrapperUtil.gen(stockDTO), operationTaskId)); } // /** // * 根据工单所需物料获取实时库存 // * // * @param page 分页对象 // * @param stockDTO 库存表 // * @return // */ // @ApiOperation(value = "根据工单所需物料获取实时库存", notes = "根据工单所需物料获取实时库存") // @GetMapping(value = {"/getStockPageByOperation/{operationTaskId}", "getStockPageByOperation"}) // public R getStockPageByOperation(Page page, StockDTO stockDTO, @PathVariable(value = "operationTaskId", required = false) Long operationTaskId) { // return R.ok(warehouseStockService.getStockPageByOperation(page, QueryWrapperUtil.gen(stockDTO),stockDTO, operationTaskId)); // } // /** // * 根据工单所需物料获取实时库存(不分页) // * // * @param stockDTO 库存表 // * @return // */ // @ApiOperation(value = "根据工单所需物料获取实时库存", notes = "根据工单所需物料获取实时库存") // @GetMapping(value = {"/getStockListByOperation/{operationTaskId}", "getStockListByOperation"}) // public R getStockListByOperation(StockDTO stockDTO, @PathVariable(value = "operationTaskId", required = false) Long operationTaskId) { // return R.ok(warehouseStockService.getStockListByOperation(QueryWrapperUtil.gen(stockDTO), operationTaskId)); // } /** * 根据工单所需物料获取实时库存(不分页) * * @param stockDTO 库存表 * @return */ @ApiOperation(value = "根据工单所需物料获取实时库存", notes = "根据工单所需物料获取实时库存") @GetMapping(value = {"/getStockListByOperation/{operationTaskId}", "getStockListByOperation"}) public R getStockListByOperation(StockDTO stockDTO, @PathVariable(value = "operationTaskId", required = false) Long operationTaskId) { return R.ok(warehouseStockService.getStockListByOperation(QueryWrapperUtil.gen(stockDTO),stockDTO, operationTaskId)); } @ApiOperation(value = "查询ERP库存", notes = "查询ERP库存") @GetMapping(value = "/getERPStockListByOperation") public R getERPStockListByOperation(StockDTO stockDTO) { return R.ok(); // List erpStockListByOperation = warehouseStockService.getERPStockListByOperation(stockDTO.getPartNo(), stockDTO.getPartBatchNo()); // return R.ok(erpStockListByOperation); } @ApiOperation(value = "查询ERP库存", notes = "查询ERP库存") @GetMapping(value = "/getERPStockListPageByOperation") public R getERPStockListPageByOperation(Page page, StockDTO stockDTO) { R erpStockListByOperation = warehouseStockService.getERPStockListPageByOperation(page,stockDTO.getPartNo(),(int)page.getCurrent(),(int)page.getSize()); return erpStockListByOperation; } @ApiOperation(value = "锁定ERP库存", notes = "锁定ERP库存") @GetMapping(value = "/lockStore") public R lockStore(StockDTO stockDTO) { return warehouseStockService.lockStore(stockDTO); } /** * 根据零件、库位和批次号筛选实时库存 * * @param stockDTO 库存表 * @return */ @ApiOperation(value = "根据零件、库位和批次号筛选实时库存", notes = "根据零件、库位和批次号筛选实时库存") @GetMapping("/stock/page") public R getStockPage(StockDTO stockDTO,String condition) { return R.ok(warehouseStockService.getStock(stockDTO,condition)); } /** * 根据零件、库位和批次号筛选实时库存数量 * * @param stockDTO 库存表 * @return */ @ApiOperation(value = "根据零件、库位和批次号筛选实时库存数量", notes = "根据零件、库位和批次号筛选实时库存数量") @GetMapping("/stock/countStock") public R countStock(StockDTO stockDTO,String condition) { return R.ok(warehouseStockService.countStock(stockDTO,condition)); } /** * 移库 * * @param stockDTOList 库存表 * @return */ @ApiOperation(value = "移库", notes = "移库") @PostMapping("/move") public R moveStock(@RequestBody List stockDTOList) { return R.ok(warehouseStockService.moveStock(stockDTOList)); } /** * 删除实时库存的数量 * * @param stockDTOList 库存表 * @return */ @ApiOperation(value = "移库", notes = "移库") @PostMapping("/delete") public R deleteStock(@RequestBody List stockDTOList) { return R.ok(warehouseStockService.deleteStock(stockDTOList)); } /** * 增加实时库存的数量 * * @param stockDTOList 库存表 * @return */ @ApiOperation(value = "移库", notes = "移库") @PostMapping("/addStock") public R addStock(@RequestBody List stockDTOList) { return R.ok(warehouseStockService.addStock(stockDTOList)); } /** * 新增实时库存 * * @param stockDTO 实时库存 * @return R */ @ApiOperation(value = "新增实时库存", notes = "新增实时库存") @PostMapping public R save(@RequestBody StockDTO stockDTO) { return R.ok(warehouseStockService.fullSave(stockDTO)); } /** * 分页查询 * * @param page 材料申请备料过滤的库存 * @param stockDTO 库存表 * @return */ @ApiOperation(value = "材料申请备料过滤的库存", notes = "材料申请备料过滤的库存") @GetMapping("/page/{partId}") public R getStockByPartIdPage(Page page, StockDTO stockDTO, @PathVariable("partId") Long partId) { return R.ok(warehouseStockService.getStockByPartIdPage(page, QueryWrapperUtil.gen(stockDTO), partId)); } /** * excel上传 * * @return */ @PostMapping("/upload") public R upload(@RequestParam("file") MultipartFile file) { try { EasyExcel.read(file.getInputStream(), StockData.class, new StockUploadListener(warehouseStockService)).sheet().doRead(); } catch (IOException e) { e.printStackTrace(); } return R.ok(); } /** * 通过id查询库存表 * * @param id id * @return R */ @ApiOperation(value = "通过id查询", notes = "通过id查询") @GetMapping("/{id}") public R getById(@PathVariable("id") Long id) { return R.ok(warehouseStockService.getById(id)); } /** * 根据工作站id查询线边仓 * * @param stockDTO 库存表 * @return */ @ApiOperation(value = "根据工作站id查询线边仓", notes = "根据工作站id查询线边仓") @GetMapping("/getStockByWorkstationId") public R getStockByWorkstationId(Page page, StockDTO stockDTO) { return R.ok(warehouseStockService.getStockByWorkstationId(page, QueryWrapperUtil.gen(stockDTO))); } /** * 根据工作站id查询线边仓待处理物料 * * @param stockDTO 库存表 * @return */ @ApiOperation(value = "根据工作站id查询线边仓待处理物料", notes = "根据工作站id查询线边仓待处理物料") @GetMapping("/getToDealStockByWorkstationId") public R getToDealStockByWorkstationId(Page page, StockDTO stockDTO) { return R.ok(warehouseStockService.getToDealStockByWorkstationId(page, QueryWrapperUtil.gen(stockDTO))); } /** * 根据ids 查询库存信息 * * @param ids * @return */ @PostMapping("/stock") public R loadLocation(@RequestBody List ids) { return R.ok(warehouseStockService.getStockByLocation(ids)); } /** * 新增预留记录 * 增加预留库存 减少可用户库存 * * @param joinStockOrderList 客户订单库存预留表 * @return */ @ApiOperation(value = "预留", notes = "预留") @PostMapping("/reserve") public R reserve(@RequestBody List joinStockOrderList) { return R.ok(warehouseStockService.reserve(joinStockOrderList)); } /** * 删除预留记录 * 减少预留库存 增加可用户库存 * * @param joinStockOrderList 客户订单库存预留表 * @return */ @ApiOperation(value = "取消预留", notes = "取消预留") @PostMapping("/cancelReserve") public R cancelReserve(@RequestBody List joinStockOrderList) { return warehouseStockService.cancelReserve(joinStockOrderList); } /** * 查询ifs库存数量 * * @param partNo * @return */ @ApiOperation(value = "查询ifs库存数量", notes = "查询ifs库存数量") @GetMapping("/getIfsStock") public R getIfsStock(String partNo) { return warehouseStockService.getIfsStock(partNo, null); } /** * 根据SN号获取可用实时库存对象list * * @param sn * @return */ @ApiOperation(value = "【PDA移库】获取可用实时库存对象list", notes = "根据SN号获取") @GetMapping("/getEnableStockObjList/{sn}") public R getEnableStockObjList(@PathVariable String sn) { return warehouseStockService.getEnableStockObjList(sn); } @ApiOperation(value = "【PDA移库】获取可用库位对象list", notes = "无需传参") @GetMapping("/getEnableLocationObjList") public R getEnableLocationObjList() { return warehouseStockService.getEnableLocationObjList(); } @ApiOperation(value = "【PDA移库】提交移库请求", notes = "传五个参数:stockId,arriveLocationNo,moveQty,materialCode,snNo") @PostMapping("/pdaMoveStockSubmit") public R pdaMoveStockSubmit(@RequestBody List moveLibraryBoxDTOList) { return warehouseStockService.pdaMoveStockSubmit(moveLibraryBoxDTOList); } @ApiOperation(value = "PDA成品入库获取可用成品库位", notes = "PDA成品入库获取可用成品库位") @GetMapping("/getFinishProductLocation") public R getFinishProductLocation() { return R.ok(warehouseStockService.getFinishProductLocation()); } @ApiOperation(value = "PDA获取实时库存数据") @GetMapping("/getFinishProductStock") public R getFinishProductStock(@RequestParam("sn") String sn, @RequestParam("partNo") String partNo) { return R.ok(warehouseStockService.getFinishProductStock(sn, partNo)); } @ApiOperation(value = "根据库存id和SN号获取库存", notes = "根据库存id和SN号获取库存") @GetMapping("/getStockByLocNoAndSn") public R getStockByLocNoAndSn(@RequestParam("locationNo")String locationNo,@RequestParam("sn")String sn) { return R.ok(warehouseStockService.getStockByLocNoAndSn(locationNo,sn)); } /** * 分页查询出库位尾号为001的 * * @param page 分页对象 * @param stockDTO 库存表 * @return */ @ApiOperation(value = "分页查询出库位尾号为001的", notes = "分页查询出库位尾号为001的") @GetMapping("/getStockPageByLocNo") public R getStockPageByLocNo(Page page, StockDTO stockDTO) { return R.ok(warehouseStockService.getStockPageByLocNo(page, QueryWrapperUtil.gen(stockDTO))); } /** * 库存件接收校验 * * @param stockDTOList 库存表 * @return */ @ApiOperation(value = "库存件接收校验", notes = "库存件接收校验") @PostMapping("/checkWdr") public R checkWdr(@RequestBody List stockDTOList) { return warehouseStockService.checkWdr(stockDTOList); } /** * 通过SN号查到其入库前的库位 * * @param sn * @return */ @ApiOperation(value = "通过SN号查到其入库前的库位", notes = "通过SN号查到其入库前的库位") @GetMapping("/getTransactionBySn") public R getTransactionBySn(@RequestParam("sn")String sn) { return R.ok(warehouseStockService.getTransactionBySn(sn)); } /** * pda退库 * * @param sn * @param quantity * @return */ @ApiOperation(value = "pda退库", notes = "pda退库") @GetMapping("/returnStockBySn") public R returnStockBySn(@RequestParam("sn")String sn,@RequestParam("quantity")BigDecimal quantity) { return warehouseStockService.returnStockBySn(sn,quantity); } }