From c8931e838a1172bffa7de40abfac5c4466ec73ce Mon Sep 17 00:00:00 2001 From: skyouc Date: 星期三, 16 七月 2025 14:17:55 +0800 Subject: [PATCH] 盘点单出库功能优化 --- rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/CheckOrderController.java | 56 +++++++++++++++++- rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java | 7 ++ rsf-admin/src/page/orders/check/CheckOrderSiteDialog.jsx | 2 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java | 65 +++++++++++++++++++-- rsf-admin/src/page/orders/check/CheckOrderList.jsx | 2 5 files changed, 121 insertions(+), 11 deletions(-) diff --git a/rsf-admin/src/page/orders/check/CheckOrderList.jsx b/rsf-admin/src/page/orders/check/CheckOrderList.jsx index 349b85a..196c94d 100644 --- a/rsf-admin/src/page/orders/check/CheckOrderList.jsx +++ b/rsf-admin/src/page/orders/check/CheckOrderList.jsx @@ -236,7 +236,7 @@ const notify = useNotify(); const refresh = useRefresh(); const cancelOrder = async () => { - const { data: { code, data, msg } } = await request.get(`/outStock/cancel/${record?.id}`); + const { data: { code, data, msg } } = await request.get(`/check/cancel/${record?.id}`); if (code === 200) { notify(msg); refresh() diff --git a/rsf-admin/src/page/orders/check/CheckOrderSiteDialog.jsx b/rsf-admin/src/page/orders/check/CheckOrderSiteDialog.jsx index ead928b..ad2a0da 100644 --- a/rsf-admin/src/page/orders/check/CheckOrderSiteDialog.jsx +++ b/rsf-admin/src/page/orders/check/CheckOrderSiteDialog.jsx @@ -22,7 +22,7 @@ const getSiteNos = async () => { - const { data: { code, data, msg } } = await request.get('/outStock/tasks/sites'); + const { data: { code, data, msg } } = await request.get('/check/tasks/sites'); if (code === 200) { setSiteNos(data); } else { 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 c159e4d..2cb928b 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 @@ -11,9 +11,10 @@ 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.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; @@ -28,6 +29,7 @@ import javax.servlet.http.HttpServletResponse; import java.util.*; +import java.util.stream.Collectors; @Api("鐩樼偣") @RestController @@ -95,7 +97,19 @@ @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); @@ -138,7 +152,7 @@ } @PostMapping("/check/items/save") - @ApiOperation("淇濆瓨涓诲崟鍙婃槑缁�") + @ApiOperation("淇濆瓨鐩樼偣鍗曞強鏄庣粏") @PreAuthorize("hasAuthority('manager:check:save')") public R saveOutStock(@RequestBody AsnOrderAndItemsParams params) throws Exception { if (Objects.isNull(params)) { @@ -147,6 +161,42 @@ 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("/outStock/order/getOutTaskItems") + @ApiOperation("鐩樼偣鍑哄簱棰勮") + @PreAuthorize("hasAuthority('manager:outStock:list')") + public R getOrderOutTaskItem(@RequestBody OrderOutTaskParam param) { + if (Cools.isEmpty(param)) { + return R.error("鍙傛暟涓嶈兘涓虹┖"); + } + + return checkOrderService.genCheckPreview(param); + } + + + + /** + * 鑾峰彇鍑哄簱绔欑偣 + * @return + */ + @GetMapping("/check/tasks/sites") + @ApiOperation("鑾峰彇鐩樼偣鍑哄簱鍙�") + @PreAuthorize("hasAuthority('manager:check:list')") + public R getSiteNos() { + return checkOrderService.getSiteNos(); + } + + /** * @author Ryan * @description 涓嬭浇妯℃澘 diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java index 0734447..4e107a7 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/CheckOrderService.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.server.manager.controller.params.AsnOrderAndItemsParams; +import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam; import com.vincent.rsf.server.manager.entity.WkOrder; import org.springframework.web.multipart.MultipartFile; @@ -15,4 +16,10 @@ R saveCheckOrder(AsnOrderAndItemsParams params, Long loginUserId); R cancelCheckOrder(Long id); + + R updateOrderItem(AsnOrderAndItemsParams params, Long loginUserId); + + R getSiteNos(); + + R genCheckPreview(OrderOutTaskParam param); } diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java index aca2adf..69a1499 100644 --- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java +++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/CheckOrderServiceImpl.java @@ -9,16 +9,15 @@ import com.vincent.rsf.framework.exception.CoolException; 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.OrderOutTaskParam; +import com.vincent.rsf.server.manager.entity.DeviceSite; import com.vincent.rsf.server.manager.entity.WkOrder; import com.vincent.rsf.server.manager.entity.WkOrderItem; import com.vincent.rsf.server.manager.entity.Matnr; import com.vincent.rsf.server.manager.entity.excel.CheckOrderTemplate; import com.vincent.rsf.server.manager.enums.*; import com.vincent.rsf.server.manager.mapper.CheckOrderMapper; -import com.vincent.rsf.server.manager.service.AsnOrderItemService; -import com.vincent.rsf.server.manager.service.CheckOrderItemService; -import com.vincent.rsf.server.manager.service.CheckOrderService; -import com.vincent.rsf.server.manager.service.MatnrService; +import com.vincent.rsf.server.manager.service.*; import com.vincent.rsf.server.system.constant.SerialRuleCode; import com.vincent.rsf.server.system.utils.SerialRuleUtils; import org.apache.commons.lang3.StringUtils; @@ -40,6 +39,8 @@ private CheckOrderItemService checkOrderItemService; @Autowired private AsnOrderItemService asnOrderItemService; + @Autowired + private DeviceSiteService deviceSiteService; /** * @author Ryan @@ -165,6 +166,60 @@ } /** + * @param + * @return + * @author Ryan + * @description 淇敼涓诲崟鍙婃槑缁� + * @time 2025/4/29 13:47 + */ + @Override + public R updateOrderItem(AsnOrderAndItemsParams params, Long loginUserId) { + WkOrder orders = params.getOrders(); + if (Objects.isNull(orders)) { + throw new CoolException("涓诲崟淇℃伅涓嶈兘涓虹┖锛侊紒"); + } + if (Objects.isNull(orders.getId())) { + throw new CoolException("鏁版嵁閿欒锛氬崟鎹甀D涓嶈兘涓虹┖锛侊紒"); + } + if (!this.updateById(orders)) { + throw new CoolException("涓诲崟淇敼澶辫触锛侊紒"); + } + if (Objects.isNull(params.getItems()) || params.getItems().isEmpty()) { + throw new CoolException("鏄庣粏鍙傛暟涓嶈兘涓虹┖锛侊紒"); + } + try { + svaeOrUpdateOrderItem(params, loginUserId); + } catch (Exception e) { + throw new CoolException(e.getMessage()); + } + return R.ok(); + } + + /** + * @author Ryan + * @date 2025/7/16 + * @description: 鑾峰彇鐩樼偣鍑哄叆绔欏彛 + * @version 1.0 + */ + @Override + public R getSiteNos() { + List<Integer> list = Arrays.asList(TaskType.TASK_TYPE_CHECK_OUT.type, TaskType.TASK_TYPE_CHECK_IN.type); + List<DeviceSite> sites = deviceSiteService.list(new LambdaQueryWrapper<DeviceSite>().in(DeviceSite::getType, list).groupBy(DeviceSite::getSite)); + return R.ok().add(sites); + } + + /** + * @author Ryan + * @date 2025/7/16 + * @description: 鐩樼偣鍑哄簱棰勮 + * @version 1.0 + */ + @Override + public R genCheckPreview(OrderOutTaskParam param) { + return null; + } + + /** * @author Ryan * @date 2025/7/16 * @description: 鍙栨秷鐩樼偣鍗曟嵁 @@ -218,6 +273,4 @@ throw new CoolException("璁″垝鏀惰揣鏁伴噺淇敼澶辫触锛侊紒"); } } - - } -- Gitblit v1.9.1