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.PageWrap; import doumeemes.core.model.PageData; import doumeemes.core.utils.DateUtil; import doumeemes.dao.business.model.WOutbound; import doumeemes.dao.business.model.WTransfer; import doumeemes.dao.ext.bean.*; import doumeemes.dao.ext.beanDto.QueryWOutBoundDto; import doumeemes.dao.ext.beanDto.QueryWSOutBoundDto; import doumeemes.dao.ext.dto.QueryWOutboundExtDTO; import doumeemes.dao.ext.vo.WOutboundExtListVO; import doumeemes.dao.ext.vo.WOutboundListCountVO; import doumeemes.dao.ext.vo.WorkOrderOutboundExtListVO; import doumeemes.service.business.WOutboundService; import doumeemes.service.ext.WOutboundExtService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import io.swagger.models.auth.In; import org.apache.shiro.authz.annotation.RequiresPermissions; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletResponse; import java.util.ArrayList; import java.util.List; /** * 出入库单信息接口 * @author 江蹄蹄 * @date 2022/04/20 10:57 */ @RestController @RequestMapping("/ext/wOutboundExt") @Api(tags = "出入库单信息接口") @Trace(withRequestResult = false,withRequestParameters = false) public class WOutboundExtController extends BaseController { @Autowired private WOutboundExtService wOutboundExtService; @Autowired private WOutboundService wOutboundService; // @PreventRepeat // @ApiOperation("新建") // @PostMapping("/create") // @RequiresPermissions("ext:woutboundext:create") // public ApiResponse create(@RequestBody WOutbound wOutbound) { // return ApiResponse.success(wOutboundService.create(wOutbound)); // } // // @ApiOperation("根据ID删除") // @GetMapping("/delete/{id}") // @RequiresPermissions("ext:woutboundext:delete") // public ApiResponse deleteById(@PathVariable Integer id) { // wOutboundService.deleteById(id); // return ApiResponse.success(null); // } // // @ApiOperation("批量删除") // @GetMapping("/delete/batch") // @RequiresPermissions("ext:woutboundext:delete") // public ApiResponse deleteByIds(@RequestParam String ids) { // String [] idArray = ids.split(","); // List idList = new ArrayList<>(); // for (String id : idArray) { // idList.add(Integer.valueOf(id)); // } // wOutboundService.deleteByIdInBatch(idList); // return ApiResponse.success(null); // } // // @ApiOperation("根据ID修改") // @PostMapping("/updateById") // @RequiresPermissions("ext:woutboundext:update") // public ApiResponse updateById(@RequestBody WOutbound wOutbound) { // wOutboundService.updateById(wOutbound); // return ApiResponse.success(null); // } // // @ApiOperation("分页查询") // @PostMapping("/page") // @RequiresPermissions("ext:woutboundext:query") // public ApiResponse> findPage (@RequestBody PageWrap pageWrap) { // return ApiResponse.success(wOutboundExtService.findPage(pageWrap)); // } // // @ApiOperation("导出Excel") // @PostMapping("/exportExcel") // @RequiresPermissions("ext:woutboundext:exportExcel") // public void exportExcel (@RequestBody PageWrap pageWrap, HttpServletResponse response) { // ExcelExporter.build(WOutboundExtListVO.class).export(wOutboundExtService.findPage(pageWrap).getRecords(), "出入库单信息", response); // } // // @ApiOperation("根据ID查询") // @GetMapping("/{id}") // @RequiresPermissions("ext:woutboundext:query") // public ApiResponse findById(@PathVariable Integer id) { // return ApiResponse.success(wOutboundService.findById(id)); // } @PreventRepeat @ApiOperation("新建") @PostMapping("/create") @RequiresPermissions("ext:woutboundext:create") public ApiResponse create(@Validated @RequestBody WOutBoundBean wOutBoundBean) { return wOutboundService.saveBean(wOutBoundBean,getLoginUser()) ; } @PreventRepeat @ApiOperation("新建") @PostMapping("/createForStandard") @RequiresPermissions("ext:woutboundext:create") public ApiResponse createForStandard(@Validated @RequestBody WOutBoundBean wOutBoundBean) { return wOutboundService.saveBeanForStandard(wOutBoundBean,getLoginUser()) ; } @ApiOperation("分页查询") @PostMapping("/page") @RequiresPermissions("ext:woutboundext:query") public ApiResponse> findPage (@RequestBody PageWrap pageWrap) { return ApiResponse.success(wOutboundExtService.findListPage(pageWrap)); } @ApiOperation("根据ID查询") @GetMapping("/{id}") public ApiResponse findById(@PathVariable Integer id) { return ApiResponse.success(wOutboundService.getBeanById(id)); } @ApiOperation("导出Excel") @PostMapping("/exportExcel") @RequiresPermissions("ext:woutboundext:exportExcel") public void exportExcel (@RequestBody QueryWOutBoundDto queryWOutBoundDto, HttpServletResponse response) throws Exception{ ExcelExporter.build(WOutboundExtListVO.class).export(wOutboundExtService.listForExcel(queryWOutBoundDto), queryWOutBoundDto.getType()==0?"出":"入"+"库单信息"+DateUtil.getNowLongTime(), response); } @ApiOperation("单据取消") @GetMapping("/cancel") @RequiresPermissions("ext:woutboundext:cancel") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "主键" , required = true), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "detail", value = "取消描述" , required = true), }) public ApiResponse cancel(@RequestParam Integer id,@RequestParam String detail) { return wOutboundService.cancel(id,detail,getLoginUser()); } @ApiOperation("出入库分页查询 - H5") @PostMapping("/listPage") @RequiresPermissions("ext:woutboundext:query") public ApiResponse> listPage (@RequestBody PageWrap pageWrap) { return ApiResponse.success(wOutboundExtService.findListPage(pageWrap)); } @ApiOperation("出入库列表统计 - H5") @PostMapping("/pageCount") @RequiresPermissions("ext:woutboundext:query") public ApiResponse pageCount (@RequestBody QueryWOutBoundDto queryWOutBoundDto) { return ApiResponse.success(wOutboundExtService.pageCount(queryWOutBoundDto)); } @ApiOperation("根据转库单获取出库信息 - H5") @GetMapping("/getOutByWTransferId") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "转库单主键" , required = true) }) public ApiResponse getOutByWTransferIdForH5(@RequestParam Integer id) { return wOutboundService.getOutByWTransferId(id); } @ApiOperation("根据转库单获取入库信息 - H5") @GetMapping("/getInByWTransferId") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "转库单主键" , required = true) }) public ApiResponse getInByWTransferId(@RequestParam Integer id) { return wOutboundService.getInByWTransferId(id); } @ApiOperation("获出入库单详情 - H5") @GetMapping("/findById") public ApiResponse findByIdForH5(@RequestParam Integer id) { return ApiResponse.success(wOutboundService.getBeanById(id)); } @ApiOperation("出库扫描篮筐码 - H5") @GetMapping("/outScanAppliances") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "pId", value = "转库单主键/出库单主键" , required = true), @ApiImplicitParam(paramType = "query", dataType = "String", name = "barCode", value = "条码" , required = true), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "type", value = "单据类别 :1=转库单;2=出库单;3:入库单" , required = true), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "locationId", value = "货位主键" , required = false), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "warehouseId", value = "仓库主键" , required = false) }) public ApiResponse outScanAppliances(@RequestParam String barCode, @RequestParam Integer type, Integer locationId, @RequestParam Integer pId , Integer warehouseId) { return wOutboundService.outScanAppliances(barCode,type,pId,warehouseId,locationId,getLoginUser()); } @PreventRepeat @ApiOperation("出库单保存 - H5") @PostMapping("/saveOut") @RequiresPermissions("ext:woutboundext:upload") public ApiResponse saveOut(@Validated @RequestBody WOutBoundOutBean wOutBoundOutBean) { return wOutboundService.saveOut(wOutBoundOutBean,getLoginUser()) ; } @PreventRepeat @ApiOperation("入库单保存 - H5") @PostMapping("/saveIn") @RequiresPermissions("ext:woutboundext:upload") public ApiResponse saveIn(@Validated @RequestBody WOutBoundOutBean wOutBoundOutBean) { return wOutboundService.saveIn(wOutBoundOutBean,getLoginUser()) ; } @ApiOperation("据入库货位筛选入库单 - H5") @GetMapping("/finishedInBill") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "String", name = "inLocationIds", value = "入库仓位主键" , required = true) }) public ApiResponse> finishedInBill(@RequestParam String inLocationIds) { return ApiResponse.success(wOutboundExtService.finishedInBill(inLocationIds,null)); } @ApiOperation(value = "出入库单详情与出入库业务处理", notes = "出入库单详情与出入库业务处理 - H5") @GetMapping("/wOutBoundForInOut") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "转库单主键" , required = true), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "wOutboundType", value = "出入库单类别 0:转出;1转入" , required = true), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "optType", value = "操作类别:1 添加 2 移除" , required = false), @ApiImplicitParam(paramType = "query", dataType = "String", name = "jsonBean", value = "添加条码类" , required = false) }) @RequiresPermissions("ext:woutboundext:deal") public ApiResponse wOutBoundForInOut(@RequestParam Integer id, @RequestParam Integer wOutboundType, Integer optType , String jsonBean) { return ApiResponse.success(wOutboundService.wOutBoundForInOut(id,wOutboundType,optType,jsonBean)); } @ApiOperation(value = "出入库业务处理提交", notes = "出入库业务处理提交 - H5") @GetMapping("/wOutBoundForUpload") @ApiImplicitParams({ @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "id", value = "出入库单主键" , required = true), @ApiImplicitParam(paramType = "query", dataType = "Integer", name = "wOutboundType", value = "出入库单类别 0:转出;1转入" , required = true) }) @RequiresPermissions("ext:woutboundext:upload") public ApiResponse wOutBoundForUpload(@RequestParam Integer id, @RequestParam Integer wOutboundType) { wOutboundService.wOutBoundForUpload(id,wOutboundType,getLoginUser()); return ApiResponse.success("操作成功"); } @ApiOperation(value = "库存调整、采购入库入库单创建", notes = "库存调整、采购入库入库单创建") @PostMapping("/wOutBoundForStockUp") @RequiresPermissions("ext:woutboundext:adjustment") public ApiResponse wOutBoundForStockUp(@Validated @RequestBody WOutboundInHeadBean wOutboundInHeadBean ) { wOutboundService.wOutBoundForStockUp(wOutboundInHeadBean,getLoginUser()); return ApiResponse.success("操作成功"); } @ApiOperation("出入库明细 - H5") @PostMapping("/workOrderOutListPage") @RequiresPermissions("ext:woutboundext:query") public ApiResponse> workOrderOutListPage (@RequestBody PageWrap pageWrap) { return ApiResponse.success(wOutboundExtService.workOrderOutList(pageWrap)); } @ApiOperation("出入库明细 - 导出Excel") @PostMapping("/workOrderOutListExcel") public void exportExcel (@RequestBody PageWrap pageWrap, HttpServletResponse response) throws Exception{ ExcelExporter.build(WorkOrderOutboundExtListVO.class).export(wOutboundExtService.workOrderOutList(pageWrap).getRecords(), "出入库明细"+DateUtil.getNowLongTime(), response); } }