From 129882afa114d612b125a8085bfd6e63dee82d54 Mon Sep 17 00:00:00 2001
From: skyouc
Date: 星期五, 13 六月 2025 14:20:00 +0800
Subject: [PATCH] 出库优化

---
 rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java |  100 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 98 insertions(+), 2 deletions(-)

diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java
index 0db2488..d2d32ce 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/controller/OutStockController.java
@@ -1,5 +1,6 @@
 package com.vincent.rsf.server.manager.controller;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -7,6 +8,11 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.vincent.rsf.framework.common.Cools;
 import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.framework.exception.CoolException;
+import com.vincent.rsf.server.manager.controller.params.OrderOutTaskParam;
+import com.vincent.rsf.server.manager.controller.params.OutStockToTaskParams;
+import com.vincent.rsf.server.manager.entity.DeliveryItem;
+import com.vincent.rsf.server.manager.entity.excel.OutStockTemplate;
 import com.vincent.rsf.server.manager.enums.OrderType;
 import com.vincent.rsf.server.manager.enums.OrderWorkType;
 import com.vincent.rsf.server.common.annotation.OperationLog;
@@ -27,6 +33,8 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
@@ -37,6 +45,7 @@
 @RestController
 @Api(tags = "鍑哄簱鍗曟嵁")
 public class OutStockController extends BaseController {
+    Logger logger = LoggerFactory.getLogger(OutStockController.class);
 
     @Autowired
     private OutStockService outStockService;
@@ -46,6 +55,17 @@
     @PreAuthorize("hasAuthority('manager:outStock:list')")
     @PostMapping("/outStock/page")
     public R page(@RequestBody Map<String, Object> map) {
+        BaseParam baseParam = buildParam(map, BaseParam.class);
+        PageParam<AsnOrder, BaseParam> pageParam = new PageParam<>(baseParam, AsnOrder.class);
+        QueryWrapper<AsnOrder> queryWrapper = pageParam.buildWrapper(true);
+        List<String> list = Arrays.asList(OrderType.ORDER_OUT.type);
+        queryWrapper.in("type", list);
+        return R.ok().add(outStockService.page(pageParam, queryWrapper));
+    }
+
+    @PreAuthorize("hasAuthority('manager:outStock:list')")
+    @PostMapping("/outStock/dialog/page")
+    public R dialogPage(@RequestBody Map<String, Object> map) {
         BaseParam baseParam = buildParam(map, BaseParam.class);
         PageParam<AsnOrder, BaseParam> pageParam = new PageParam<>(baseParam, AsnOrder.class);
         QueryWrapper<AsnOrder> queryWrapper = pageParam.buildWrapper(true);
@@ -147,6 +167,21 @@
         return outStockService.cancelOutOrder(id);
     }
 
+    @PreAuthorize("hasAuthority('manager:outStock:update')")
+    @ApiOperation("鍒犻櫎宸茬敓鎴愭槑缁�")
+    @GetMapping("/outStock/items/cancel/{ids}")
+    public R cancel(@PathVariable Long[] ids) {
+        List<Long> list = Arrays.asList(ids);
+        if (list.isEmpty()) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        List<AsnOrderItem> orderItems = outStockItemService.list(new LambdaQueryWrapper<AsnOrderItem>().in(AsnOrderItem::getId, list));
+        if (orderItems.isEmpty()) {
+            throw new CoolException("鍗曟嵁鏄庣粏涓嶅瓨鍦紒锛�");
+        }
+        return outStockService.cancelOutOrderByItems(orderItems);
+    }
+
 
     @PreAuthorize("hasAuthority('manager:outStock:list')")
     @PostMapping("/outStock/export")
@@ -197,8 +232,8 @@
         if (Objects.isNull(params.get("ids"))) {
             return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        List<Long> ids = (List<Long>) params.get("ids");
-        return outStockService.genOutStock(ids, getLoginUserId());
+        List<DeliveryItem> items = JSON.parseArray(JSONObject.toJSONString(params.get("ids")), DeliveryItem.class);
+        return outStockService.genOutStock(items, getLoginUserId());
     }
 
     @PreAuthorize("hasAuthority('manager:outStock:update')")
@@ -231,4 +266,65 @@
         }
         return outStockService.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 outStockService.getOrderOutTaskItem(param);
+    }
+
+
+    /**
+     * 鍑哄簱鍗曠敓鎴愬嚭搴撲换鍔�
+     * @param params
+     * @return
+     */
+    @PostMapping("/outStock/generate/tasks")
+    @ApiOperation("鍑哄簱鍗曠敓鎴愬嚭搴撲换鍔�")
+    @PreAuthorize("hasAuthority('manager:outStock:list')")
+    public R genOutStockTask( @RequestBody Map<String, Object> params) {
+        if (Cools.isEmpty()) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        if (Objects.isNull(params.get("outId"))) {
+            return R.error("鍑哄簱鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+
+        List<OutStockToTaskParams> taskParams = JSONArray.parseArray(JSONArray.toJSONString(params.get("items")), OutStockToTaskParams.class);
+
+        return  outStockService.genOutStockTask(taskParams, getLoginUserId(), Long.parseLong(params.get("outId").toString()));
+    }
+
+    /**
+     * 鑾峰彇鍑哄簱绔欑偣
+     * @return
+     */
+    @GetMapping("/outStock/tasks/sites")
+    @ApiOperation("鑾峰彇鍑哄簱搴撳彛")
+    @PreAuthorize("hasAuthority('manager:outStock:list')")
+    public R getSiteNos() {
+        return outStockService.getSiteNos();
+    }
+
+    /**
+     * @author Ryan
+     * @description 涓嬭浇妯℃澘
+     * @param
+     * @return
+     * @time 2025/4/18 08:17
+     */
+    @PostMapping("/outStock/template/download")
+    @ApiOperation("涓嬭浇鏀惰揣鍗曟ā鏉�")
+    @PreAuthorize("hasAuthority('manager:outStockItem:update')")
+    public void downloadTemplate(@RequestBody Map<String, Object> map, HttpServletResponse response) throws Exception {
+        OutStockTemplate template = ExcelUtil.mockData(OutStockTemplate.class);
+        List<OutStockTemplate> list = Arrays.asList(template);
+        ExcelUtil.build(ExcelUtil.create(list, OutStockTemplate.class, true), response);
+    }
+
 }

--
Gitblit v1.9.1