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 |  163 ++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 150 insertions(+), 13 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 b442995..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,18 +1,26 @@
 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;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.server.api.entity.enums.OrderType;
-import com.vincent.rsf.server.api.entity.enums.OrderWorkType;
+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;
 import com.vincent.rsf.server.common.domain.BaseParam;
 import com.vincent.rsf.server.common.domain.KeyValVo;
 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.entity.AsnOrder;
 import com.vincent.rsf.server.manager.entity.AsnOrderItem;
 import com.vincent.rsf.server.manager.entity.excel.AsnOrderTemplate;
@@ -25,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.*;
@@ -35,6 +45,7 @@
 @RestController
 @Api(tags = "鍑哄簱鍗曟嵁")
 public class OutStockController extends BaseController {
+    Logger logger = LoggerFactory.getLogger(OutStockController.class);
 
     @Autowired
     private OutStockService outStockService;
@@ -46,7 +57,21 @@
     public R page(@RequestBody Map<String, Object> map) {
         BaseParam baseParam = buildParam(map, BaseParam.class);
         PageParam<AsnOrder, BaseParam> pageParam = new PageParam<>(baseParam, AsnOrder.class);
-        return R.ok().add(outStockService.page(pageParam, pageParam.buildWrapper(true)));
+        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);
+        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')")
@@ -80,7 +105,8 @@
             if (Objects.isNull(ruleCode) || StringUtils.isBlank(ruleCode)) {
                 return R.error("缂栫爜瑙勫垯閿欒锛氱紪鐮併�孲YS_OUT_STOCK_CODE銆嶆槸鏈缃垚鍔燂紒锛�");
             }
-            asnOrder.setCode(ruleCode);
+            asnOrder.setExceStatus(AsnExceStatus.OUT_STOCK_STATUS_TASK_INIT.val)
+                    .setCode(ruleCode);
         }
         if (!outStockService.save(asnOrder)) {
             return R.error("Save Fail");
@@ -141,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")
@@ -168,26 +209,122 @@
                 template.setCode(order.getCode())
                         .setType(OrderType.getValType(order.getType()))
                         .setWkType(OrderWorkType.getWorkDesc(order.getWkType()))
-                        .setExceStatus(AsnExceStatus.getExceStatus(order.getExceStatus()))
                         .setAnfme(item.getAnfme() + "")
                         .setMaktx(item.getMaktx())
                         .setMemo(item.getMemo())
                         .setMatnrCode(item.getMatnrCode())
                         .setPoCode(item.getPoCode())
                         .setSplrName(item.getSplrName())
-                        .setPoId(order.getPoId() + "")
-                        .setTrackCode(item.getTrackCode())
-                        .setBarcode(item.getBarcode())
-                        .setPackName(item.getPackName())
                         .setPlatItemId(item.getPlatItemId())
                         .setSplrBatch(item.getSplrBatch())
-                        .setSplrCode(item.getSplrCode())
-                        .setStockUnit(item.getStockUnit())
-                        .setPurQty(item.getPurQty() + "")
-                        .setPurUnit(item.getPurUnit());
+                        .setSplrCode(item.getSplrCode());
                 orderTemplates.add(template);
             }
         }
         ExcelUtil.build(ExcelUtil.create(orderTemplates, AsnOrderTemplate.class), response);
     }
+
+
+    @PreAuthorize("hasAuthority('manager:outStock:update')")
+    @ApiOperation("閫氳繃DO鍗曠敓鎴愬嚭搴撳崟")
+    @PostMapping("/outStock/generate/orders")
+    public R genOutStock(@RequestBody Map<String, Object> params) {
+        if (Objects.isNull(params.get("ids"))) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        List<DeliveryItem> items = JSON.parseArray(JSONObject.toJSONString(params.get("ids")), DeliveryItem.class);
+        return outStockService.genOutStock(items, getLoginUserId());
+    }
+
+    @PreAuthorize("hasAuthority('manager:outStock:update')")
+    @ApiOperation("鍑哄簱鍗曠敓鎴愭尝娆�")
+    @PostMapping("/outStock/generate/wave")
+    public R generateWave(@RequestBody Map<String, Object> params) {
+        if (Objects.isNull(params)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        List<Long> ids = (List<Long>) params.get("ids");
+        return outStockService.generateWaves(ids);
+    }
+
+    @PostMapping("/outStock/items/save")
+    @ApiOperation("淇濆瓨涓诲崟鍙婃槑缁�")
+    @PreAuthorize("hasAuthority('manager:outStock:save')")
+    public R saveOutStock(@RequestBody AsnOrderAndItemsParams params) throws Exception {
+        if (Objects.isNull(params)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        return outStockService.saveOutStock(params, getLoginUserId());
+    }
+
+    @ApiOperation("鍗曟嵁淇℃伅淇敼")
+    @PostMapping("/outStock/items/update")
+    @PreAuthorize("hasAuthority('manager:outStock:update')")
+    public R orderAndrItemUpdate(@RequestBody AsnOrderAndItemsParams params) throws Exception {
+        if (Objects.isNull(params)) {
+            return R.error("鍙傛暟涓嶈兘涓虹┖锛侊紒");
+        }
+        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