From 0b190d8a9aad67aa521ec163b437c59f6e63c400 Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期四, 17 七月 2025 14:04:27 +0800 Subject: [PATCH] 盘点单下发功能优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 106 insertions(+), 3 deletions(-) diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java index 06f336b..941cabb 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java @@ -1,5 +1,6 @@ package com.vincent.rsf.server.manager.controller; +import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -11,7 +12,13 @@ import com.vincent.rsf.server.common.domain.PageParam; import com.vincent.rsf.server.common.utils.ExcelUtil; import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams; +import com.vincent.rsf.server.manager.controller.params.CheckOrderItemParams; +import com.vincent.rsf.server.manager.controller.params.CheckOrderParams; +import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam; import com.vincent.rsf.server.manager.entity.WkOrder; +import com.vincent.rsf.server.manager.entity.WkOrderItem; +import com.vincent.rsf.server.manager.entity.excel.CheckOrderTemplate; +import com.vincent.rsf.server.manager.enums.CheckExceStatus; import com.vincent.rsf.server.manager.enums.OrderType; import com.vincent.rsf.server.manager.service.CheckOrderService; import com.vincent.rsf.server.system.constant.SerialRuleCode; @@ -26,6 +33,7 @@ import javax.servlet.http.HttpServletResponse; import java.util.*; +import java.util.stream.Collectors; @Api("鐩樼偣") @RestController @@ -93,10 +101,32 @@ @OperationLog("Delete 瀛楀吀鏁版嵁闆�") @PostMapping("/check/remove/{ids}") public R remove(@PathVariable Long[] ids) { - if (!checkOrderService.removeByIds(Arrays.asList(ids))) { + if (Objects.isNull(ids)) { + throw new RuntimeException("鐩樼偣鍗旾D涓嶈兘涓虹┖锛侊紒"); + } + List<WkOrder> wkOrders = checkOrderService.list(new LambdaQueryWrapper<WkOrder>().in(WkOrder::getId, Arrays.asList(ids))); + if (wkOrders.isEmpty()) { + return R.ok(); + } + List<WkOrder> orders = wkOrders.stream().filter(order -> order.getExceStatus().equals(CheckExceStatus.CHECK_ORDER_STATUS_UN_EXCE.val)).collect(Collectors.toList()); + if (orders.isEmpty()) { + return R.ok(); + } + List<Long> orderIds = orders.stream().map(WkOrder::getId).collect(Collectors.toList()); + if (!checkOrderService.removeByIds(orderIds)) { return R.error("Delete Fail"); } return R.ok("Delete Success").add(ids); + } + + @PreAuthorize("hasAuthority('manager:outStock:update')") + @ApiOperation("鍙栨秷鐩樼偣鍗曟嵁") + @GetMapping("/check/cancel/{id}") + public R cancel(@PathVariable Long id) { + if (Objects.isNull(id)) { + return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + return checkOrderService.cancelCheckOrder(id); } @PreAuthorize("hasAuthority('manager:check:list')") @@ -126,7 +156,7 @@ } @PostMapping("/check/items/save") - @ApiOperation("淇濆瓨涓诲崟鍙婃槑缁�") + @ApiOperation("淇濆瓨鐩樼偣鍗曞強鏄庣粏") @PreAuthorize("hasAuthority('manager:check:save')") public R saveOutStock(@RequestBody AsnOrderAndItemsParams params) throws Exception { if (Objects.isNull(params)) { @@ -135,7 +165,81 @@ return checkOrderService.saveCheckOrder(params, getLoginUserId()); } + @ApiOperation("鐩樼偣鍗曚俊鎭慨鏀�") + @PostMapping("/check/items/update") + @PreAuthorize("hasAuthority('manager:check:update')") + public R orderAndrItemUpdate(@RequestBody AsnOrderAndItemsParams params) throws Exception { + if (Objects.isNull(params)) { + return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + return checkOrderService.updateOrderItem(params, getLoginUserId()); + } + @PostMapping("/check/order/items") + @ApiOperation("鐩樼偣鍑哄簱棰勮") + @PreAuthorize("hasAuthority('manager:check:list')") + public R getOrderOutTaskItem(@RequestBody OrderOutTaskParam param) { + if (Cools.isEmpty(param)) { + return R.error("鍙傛暟涓嶈兘涓虹┖"); + } + return checkOrderService.genCheckPreview(param); + } + + + /** + * 鐩樼偣鍗曠敓鎴愬嚭搴撲换鍔� + * @param params + * @return + */ + @PostMapping("/check/generate/tasks") + @ApiOperation("鐢熸垚鐩樼偣鍑哄簱浠诲姟") + @PreAuthorize("hasAuthority('manager:outStock:list')") + public R genCheckOutTask( @RequestBody List<CheckOrderParams> params) { + if (Cools.isEmpty()) { + return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + + return checkOrderService.genCheckOutTask(params, getLoginUserId()); + } + + /** + * 鑾峰彇鍑哄簱绔欑偣 + * @return + */ + @GetMapping("/check/tasks/sites") + @ApiOperation("鑾峰彇鐩樼偣鍑哄簱鍙�") + @PreAuthorize("hasAuthority('manager:check:list')") + public R getSiteNos() { + return checkOrderService.getSiteNos(); + } + + + @ApiOperation("鑾峰彇鍦ㄥ簱鐗╂枡鍒楄〃") + @PostMapping("/check/locs/{matnrs}") + @PreAuthorize("hasAuthority('manager:check:list')") + public R getAllLocByMatnr(@PathVariable String[] matnrs) { + if (Objects.isNull(matnrs)) { + return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + return checkOrderService.getAllLocByMatnr(Arrays.asList(matnrs)); + } + + + /** + * @author Ryan + * @description 涓嬭浇妯℃澘 + * @param + * @return + * @time 2025/4/18 08:17 + */ + @PostMapping("/check/template/download") + @ApiOperation("涓嬭浇鐩樼偣鍗曟ā鏉�") + @PreAuthorize("hasAuthority('manager:check:update')") + public void downloadTemplate(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception { + CheckOrderTemplate template = ExcelUtil.mockData(CheckOrderTemplate.class); + List<CheckOrderTemplate> list = Arrays.asList(template); + ExcelUtil.build(ExcelUtil.create(list, CheckOrderTemplate.class, true), response); + } /** * 鐩樼偣鍗曞鍏� @@ -152,6 +256,5 @@ HashMap<String, Object> hashMap = new HashMap<>(); return checkOrderService.excelImport(file, hashMap, getLoginUserId()); } - } -- Gitblit v1.9.1