From 1d853e91b6561317a9cb113b4d61de0b7f891708 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期三, 14 四月 2021 14:16:18 +0800
Subject: [PATCH] #

---
 src/main/webapp/views/safeSto/safeSto.html                           |    2 
 src/main/java/zy/cloud/wms/common/service/asrs/entity/Result1.java   |   28 +++++
 src/main/java/zy/cloud/wms/common/service/asrs/AsrsService.java      |   53 ++++++++++
 src/main/java/zy/cloud/wms/manager/controller/WorkController.java    |    2 
 src/main/java/zy/cloud/wms/common/service/asrs/entity/Result.java    |   28 +++++
 src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java |   59 +++++++++++
 src/main/java/zy/cloud/wms/manager/service/WorkService.java          |    2 
 src/main/resources/application.yml                                   |    3 
 src/main/java/zy/cloud/wms/common/service/MainService.java           |   64 ++++++++++++
 9 files changed, 236 insertions(+), 5 deletions(-)

diff --git a/src/main/java/zy/cloud/wms/common/service/MainService.java b/src/main/java/zy/cloud/wms/common/service/MainService.java
index 6c81900..827ef29 100644
--- a/src/main/java/zy/cloud/wms/common/service/MainService.java
+++ b/src/main/java/zy/cloud/wms/common/service/MainService.java
@@ -7,11 +7,20 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import zy.cloud.wms.common.config.CodeCoolException;
 import zy.cloud.wms.common.model.MatnrDto;
 import zy.cloud.wms.common.model.OrderStoDto;
+import zy.cloud.wms.common.service.asrs.AsrsService;
+import zy.cloud.wms.common.service.asrs.entity.Result;
+import zy.cloud.wms.common.service.asrs.entity.Result1;
 import zy.cloud.wms.common.utils.VersionUtils;
 import zy.cloud.wms.manager.entity.*;
-import zy.cloud.wms.manager.service.*;
+import zy.cloud.wms.manager.entity.param.StockTransferParam;
+import zy.cloud.wms.manager.entity.result.PakoutVo;
+import zy.cloud.wms.manager.service.LocDetlService;
+import zy.cloud.wms.manager.service.MatService;
+import zy.cloud.wms.manager.service.OrderService;
+import zy.cloud.wms.manager.service.PakoutService;
 
 import java.util.*;
 
@@ -32,6 +41,8 @@
     private SnowflakeIdWorker snowflakeIdWorker;
     @Autowired
     private OrderService orderService;
+    @Autowired
+    private AsrsService asrsService;
 
     @Transactional
     public List<StoPreTab> stockOutPreview(OrderStoDto orderStoDto) {
@@ -40,7 +51,17 @@
         }
         List<StoPreTab> res = new ArrayList<>();
         // 妫�鏌ュ簱瀛樻槸鍚﹁冻澶�
-        locDetlService.checkLocDetlCount(orderStoDto.getDtos());
+        List<StockTransferParam> transferParams = locDetlService.checkLocDetlCountOfRes(orderStoDto.getDtos());
+        if (!Cools.isEmpty(transferParams)) {
+            // 鏌ョ湅绔嬪簱搴撳瓨
+            Result result = asrsService.stockTransferPrew(transferParams);
+            if (result.getCode() == 500) {
+                throw new CodeCoolException("20001-" + String.valueOf(result.getMsg()));
+            }
+            if (result.getCode() == 200) {
+                res = (List<StoPreTab>) result.getData();
+            }
+        }
 
         for (MatnrDto matnrDto : orderStoDto.getDtos()) {
             // 鍒ゆ柇鐗╂枡鏄惁瀛樺湪
@@ -97,7 +118,44 @@
         }
         Date now = new Date();
         // 妫�鏌ュ簱瀛樻槸鍚﹁冻澶�
-        locDetlService.checkLocDetlCount(orderStoDto.getDtos());
+        List<StockTransferParam> transferParams = locDetlService.checkLocDetlCountOfRes(orderStoDto.getDtos());
+        if (!Cools.isEmpty(transferParams)) {
+            // 鏌ョ湅绔嬪簱搴撳瓨
+            Result1 result = asrsService.stockTransfer(transferParams);
+            if (result.getCode() == 500) {
+                if (Cools.isEmpty(result.getData())) {
+                    throw new CoolException(result.getMsg());
+                } else {
+                    throw new CodeCoolException("20001-" + result.getData());
+                }
+            }
+            if (result.getCode() == 200) {
+                for (PakoutVo vo : result.getData()) {
+                    // 鍒ゆ柇鐗╂枡鏄惁瀛樺湪
+                    Mat mat = matService.selectByMatnr(vo.getMatnr());
+                    if (null == mat) {
+                        throw new CoolException(vo.getMatnr() + "鐗╂枡灏氭湭鏇存柊銆�" + orderStoDto.getOrderNo() +"鍗曟嵁鍥犳涓柇锛�");
+                    }
+                    Pakout pakout = new Pakout();
+                    pakout.setWrkSts(1L);
+                    pakout.setAnfme(vo.getAnfme());
+                    pakout.setZpallet(vo.getZpallet());
+                    pakout.setLocNo(vo.getLocNo());
+                    pakout.setNodeId(-1L);
+                    pakout.setWrkNo(String.valueOf(snowflakeIdWorker.nextId()));
+                    VersionUtils.setPakout(pakout, mat);
+                    pakout.setDocId(order.getDocType()); // 鍗曟嵁绫诲瀷
+                    pakout.setDocNum(order.getOrderNo());    // 鍗曟嵁缂栧彿
+                    pakout.setCreateTime(now);
+                    pakout.setUpdateTime(now);
+                    pakout.setStatus(1);
+                    if (!pakoutService.insert(pakout)) {
+                        throw new CoolException("淇濆瓨鍑哄簱閫氱煡鍗曞け璐�");
+                    }
+                }
+
+            }
+        }
 
         for (MatnrDto matnrDto : orderStoDto.getDtos()) {
             // 鍒ゆ柇鐗╂枡鏄惁瀛樺湪
diff --git a/src/main/java/zy/cloud/wms/common/service/asrs/AsrsService.java b/src/main/java/zy/cloud/wms/common/service/asrs/AsrsService.java
new file mode 100644
index 0000000..c6590d1
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/common/service/asrs/AsrsService.java
@@ -0,0 +1,53 @@
+package zy.cloud.wms.common.service.asrs;
+
+import com.alibaba.fastjson.JSON;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import zy.cloud.wms.common.service.asrs.entity.Result;
+import zy.cloud.wms.common.service.asrs.entity.Result1;
+import zy.cloud.wms.manager.entity.param.StockTransferParam;
+import zy.cloud.wms.manager.utils.HttpHandler;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * Created by vincent on 2021/3/20
+ */
+@Service("asrsService")
+public class AsrsService {
+
+    @Value("${asrs.baseUrl}")
+    private String asrsBaseUrl;
+
+    public Result stockTransferPrew(List<StockTransferParam> params) {
+        try {
+            String response = new HttpHandler.Builder()
+                    .setUri(asrsBaseUrl)
+                    .setPath("/open/api/stockOut/prew")
+                    .setJson(JSON.toJSONString(params))
+                    .build()
+                    .doPost();
+            return JSON.parseObject(response, Result.class);
+        } catch (IOException e) {
+            e.printStackTrace();
+            return new Result(500, "鏈嶅姟鍣ㄥ紓甯�", null);
+        }
+    }
+
+    public Result1 stockTransfer(List<StockTransferParam> params) {
+        try {
+            String response = new HttpHandler.Builder()
+                    .setUri(asrsBaseUrl)
+                    .setPath("/open/api/stockOut")
+                    .setJson(JSON.toJSONString(params))
+                    .build()
+                    .doPost();
+            return JSON.parseObject(response, Result1.class);
+        } catch (IOException e) {
+            e.printStackTrace();
+            return new Result1(500, "鏈嶅姟鍣ㄥ紓甯�", null);
+        }
+    }
+
+}
diff --git a/src/main/java/zy/cloud/wms/common/service/asrs/entity/Result.java b/src/main/java/zy/cloud/wms/common/service/asrs/entity/Result.java
new file mode 100644
index 0000000..bb31cd6
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/common/service/asrs/entity/Result.java
@@ -0,0 +1,28 @@
+package zy.cloud.wms.common.service.asrs.entity;
+
+import lombok.Data;
+import zy.cloud.wms.manager.entity.StoPreTab;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2021/3/20
+ */
+@Data
+public class Result {
+
+    private Integer code;
+
+    private String msg;
+
+    private List<StoPreTab> data;
+
+    public Result() {
+    }
+
+    public Result(Integer code, String msg, List<StoPreTab> data) {
+        this.code = code;
+        this.msg = msg;
+        this.data = data;
+    }
+}
diff --git a/src/main/java/zy/cloud/wms/common/service/asrs/entity/Result1.java b/src/main/java/zy/cloud/wms/common/service/asrs/entity/Result1.java
new file mode 100644
index 0000000..cda8c58
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/common/service/asrs/entity/Result1.java
@@ -0,0 +1,28 @@
+package zy.cloud.wms.common.service.asrs.entity;
+
+import lombok.Data;
+import zy.cloud.wms.manager.entity.result.PakoutVo;
+
+import java.util.List;
+
+/**
+ * Created by vincent on 2021/3/20
+ */
+@Data
+public class Result1 {
+
+    private Integer code;
+
+    private String msg;
+
+    private List<PakoutVo> data;
+
+    public Result1() {
+    }
+
+    public Result1(Integer code, String msg, List<PakoutVo> data) {
+        this.code = code;
+        this.msg = msg;
+        this.data = data;
+    }
+}
diff --git a/src/main/java/zy/cloud/wms/manager/controller/WorkController.java b/src/main/java/zy/cloud/wms/manager/controller/WorkController.java
index b1100d0..3bb9361 100644
--- a/src/main/java/zy/cloud/wms/manager/controller/WorkController.java
+++ b/src/main/java/zy/cloud/wms/manager/controller/WorkController.java
@@ -144,7 +144,7 @@
     @RequestMapping("/stock/transfer")
     @ManagerAuth(memo = "搴撳瓨璋冩嫧")
     public R stockTransfer(@RequestBody AsrsTransferParam number) {
-        return R.error();
+        return workService.asrsStockTransfer(number, getUserId());
     }
 
     @RequestMapping("/stock/check")
diff --git a/src/main/java/zy/cloud/wms/manager/service/WorkService.java b/src/main/java/zy/cloud/wms/manager/service/WorkService.java
index f261d36..85a45ea 100644
--- a/src/main/java/zy/cloud/wms/manager/service/WorkService.java
+++ b/src/main/java/zy/cloud/wms/manager/service/WorkService.java
@@ -27,6 +27,8 @@
 
     R cancelPakout(String wrkNo, Long userId);
 
+    R asrsStockTransfer(AsrsTransferParam param, Long userId);
+
     R initOrder(InitOrderParam param, Long userId);
 
     R stockCheck(StoCheckParam param, Long userId);
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
index 0c0cb46..fb26290 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java
@@ -1,6 +1,7 @@
 package zy.cloud.wms.manager.service.impl;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.core.common.Arith;
 import com.core.common.Cools;
 import com.core.common.R;
 import com.core.common.SnowflakeIdWorker;
@@ -9,10 +10,13 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import zy.cloud.wms.common.config.CodeCoolException;
 import zy.cloud.wms.common.model.BillDto;
 import zy.cloud.wms.common.model.MatnrDto;
 import zy.cloud.wms.common.model.OrderStoDto;
 import zy.cloud.wms.common.service.MainService;
+import zy.cloud.wms.common.service.asrs.AsrsService;
+import zy.cloud.wms.common.service.asrs.entity.Result1;
 import zy.cloud.wms.common.service.erp.ErpService;
 import zy.cloud.wms.common.utils.VersionUtils;
 import zy.cloud.wms.manager.entity.*;
@@ -55,6 +59,8 @@
     private CstmrService cstmrService;
     @Autowired
     private ErpService erpService;
+    @Autowired
+    private AsrsService asrsService;
 
     @Override
     @Transactional
@@ -515,6 +521,59 @@
     }
 
     @Override
+    public R asrsStockTransfer(AsrsTransferParam param, Long userId) {
+        if (Cools.isEmpty(param.getNode_id(), param.getMatnr(), param.getSafe_qua(), param.getAmount())) {
+            return R.error("鏁伴噺閿欒");
+        }
+        Node node = nodeService.selectById(param.getNode_id());
+        Mat mat = matService.selectByMatnr(param.getMatnr());
+        if (node == null || mat == null) {
+            return R.error();
+        }
+        double anfme = Arith.subtract(2, param.getSafe_qua(), param.getAmount());
+        List<StockTransferParam> params = new ArrayList<>();
+        StockTransferParam transferParam = new StockTransferParam();
+        transferParam.setMatnr(param.getMatnr());
+        transferParam.setAnfme(anfme);
+        transferParam.setAllotNo(param.getNode_id()+ "_" +param.getMatnr());
+        params.add(transferParam);
+        Result1 result = asrsService.stockTransfer(params);
+        if (result.getCode() == 500) {
+            if (Cools.isEmpty(result.getData())) {
+                throw new CoolException(result.getMsg());
+            } else {
+                throw new CodeCoolException("20001-" + result.getData());
+            }
+        }
+        // 鐩存帴澧炲姞搴撳瓨
+        LocDetl locDetl = locDetlService.getLocDetl(param.getNode_id(), param.getMatnr());
+        if (locDetl == null) {
+            // 鏇存柊璐т綅搴撳瓨鏄庣粏
+            locDetl = new LocDetl();
+            locDetl.setLocNo(node.getName());
+            locDetl.setNodeId(node.getId());
+            locDetl.setAnfme(anfme);
+            VersionUtils.setLocDetl(locDetl, mat);
+            locDetl.setStatus(1);
+            locDetl.setCreateBy(userId);
+            locDetl.setCreateTime(new Date());
+            locDetl.setUpdateBy(userId);
+            locDetl.setUpdateTime(new Date());
+            boolean insert = locDetlService.insert(locDetl);
+            if (!insert) {
+                throw new CoolException("鏂板搴撳瓨鏄庣粏妗eけ璐�");
+            }
+        } else {
+            if (!locDetlService.incrementStock(node.getId(), param.getMatnr(), anfme)) {
+                throw new CoolException("鏂板搴撳瓨鏄庣粏妗eけ璐�");
+            }
+        }
+
+        return R.ok("琛ヤ粨鎴愬姛锛岀瓑寰呯珛搴撹皟鎷�");
+    }
+
+
+    @Override
     public R stockCheck(StoCheckParam param, Long userId) {
         if (Cools.isEmpty(param.getLocNo())) {
             return R.error("璇烽�夋嫨璐т綅");
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 609a6ed..668e2de 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -51,3 +51,6 @@
     secret: 84CHL7tF21LbU1qpaP0jn9mIAZP9bv
     bucket: tjdt
     endpoint: http://oss-cn-hangzhou.aliyuncs.com
+
+asrs:
+  baseUrl: http://localhost:8081/htwms
\ No newline at end of file
diff --git a/src/main/webapp/views/safeSto/safeSto.html b/src/main/webapp/views/safeSto/safeSto.html
index 3a05d72..b5ada3a 100644
--- a/src/main/webapp/views/safeSto/safeSto.html
+++ b/src/main/webapp/views/safeSto/safeSto.html
@@ -56,7 +56,7 @@
 </script>
 
 <script type="text/html" id="operate">
-    {{#  if(d.status > 1){ }}
+    {{#  if(d.status > 2){ }}
     <a class="layui-btn layui-btn-normal layui-btn-xs" lay-event="allot">琛ヤ粨</a>
     {{#  } }}
 </script>

--
Gitblit v1.9.1