From bcd583668d6dc95993075354a8e7b0935e92eefd Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 22 三月 2021 11:07:26 +0800
Subject: [PATCH] #

---
 src/main/resources/mapper/CustOrderMapper.xml                             |    1 
 src/main/webapp/views/custOrder/custOrder.html                            |    9 +++
 src/main/java/zy/cloud/wms/common/service/asrs/AsrsService.java           |   15 +++++
 src/main/webapp/static/js/custOrder/custOrder.js                          |   11 ++-
 src/main/java/zy/cloud/wms/manager/service/impl/CustOrderServiceImpl.java |    5 +
 src/main/java/zy/cloud/wms/common/service/asrs/entity/Result.java         |   13 ++++
 src/main/java/zy/cloud/wms/manager/service/LocDetlService.java            |    3 +
 src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java      |   16 +++-
 src/main/java/zy/cloud/wms/common/service/MainService.java                |   38 ++++++++++--
 src/main/java/zy/cloud/wms/manager/entity/CustOrder.java                  |   17 +++++
 src/main/java/zy/cloud/wms/manager/service/CustOrderService.java          |    2 
 src/main/java/zy/cloud/wms/manager/entity/param/StockTransferParam.java   |    2 
 src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java                  |    2 
 src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java           |    3 
 src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java            |    4 +
 src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java   |   23 +++++++
 16 files changed, 143 insertions(+), 21 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 433c536..d1ef20f 100644
--- a/src/main/java/zy/cloud/wms/common/service/MainService.java
+++ b/src/main/java/zy/cloud/wms/common/service/MainService.java
@@ -7,18 +7,19 @@
 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.OrderStoDto;
+import zy.cloud.wms.common.service.asrs.AsrsService;
+import zy.cloud.wms.common.service.asrs.entity.Result;
 import zy.cloud.wms.common.utils.VersionUtils;
 import zy.cloud.wms.manager.entity.*;
+import zy.cloud.wms.manager.entity.param.StockTransferParam;
 import zy.cloud.wms.manager.service.CustOrderService;
 import zy.cloud.wms.manager.service.LocDetlService;
 import zy.cloud.wms.manager.service.MatService;
 import zy.cloud.wms.manager.service.PakoutService;
 
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Optional;
+import java.util.*;
 
 /**
  * Created by vincent on 2021/3/1
@@ -37,15 +38,28 @@
     private CustOrderService custOrderService;
     @Autowired
     private SnowflakeIdWorker snowflakeIdWorker;
+    @Autowired
+    private AsrsService asrsService;
 
     @Transactional
     public List<StoPreTab> stockOutPreview(OrderStoDto dto) {
         if (Cools.isEmpty(dto) || Cools.isEmpty(dto.getCustOrders())) {
             throw new CoolException("鏁版嵁寮傚父锛岃鑱旂郴绠$悊鍛�");
         }
+        List<StoPreTab> res = new ArrayList<>();
         // 妫�鏌ュ簱瀛樻槸鍚﹁冻澶�
-        locDetlService.checkLocDetlCount(dto.getNumber());
-        List<StoPreTab> result = new ArrayList<>();
+        List<StockTransferParam> transferParams = locDetlService.checkLocDetlCountOfRes(dto.getNumber());
+        if (!Cools.isEmpty(transferParams)) {
+            // 鏌ョ湅绔嬪簱搴撳瓨
+            Result result = asrsService.stockTransferPrew(transferParams);
+            if (result.getCode() == 500) {
+                throw new CodeCoolException("20001-" + String.valueOf(result.getData()));
+            }
+            if (result.getCode() == 200) {
+                res = (List<StoPreTab>) result.getData();
+            }
+        }
+
         for (CustOrder custOrder : dto.getCustOrders()) {
             // 鍒ゆ柇鐗╂枡鏄惁瀛樺湪
             Mat mat = matService.selectByMatnr(custOrder.getUserCode());
@@ -72,14 +86,22 @@
                     tab.setRemQty(tab.getTotal() - tab.getReduce());
                     tab.setPrior(locDetlService.isPrior(locDetl.getNodeId(), mat.getMatnr()));
                     tab.setPrior$(tab.getPrior()?"鉁�":"脳");
-                    result.add(tab);
+                    tab.setType(1);
+                    res.add(tab);
                     // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
                     issued = issued - locDetl.getAnfme();
                 }
             }
 
         }
-        return result;
+        res.sort(new Comparator<StoPreTab>() {
+            @Override
+            public int compare(StoPreTab o1, StoPreTab o2) {
+//                return o1.getMatnr().length() - o2.getMatnr().length();
+                return (int) (o1.getAnfme() - o2.getAnfme());
+            }
+        });
+        return res;
     }
 
     @Transactional
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
index 9fb018a..3560d4b 100644
--- a/src/main/java/zy/cloud/wms/common/service/asrs/AsrsService.java
+++ b/src/main/java/zy/cloud/wms/common/service/asrs/AsrsService.java
@@ -19,6 +19,21 @@
     @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 Boolean stockTransfer(List<StockTransferParam> params) {
         try {
             String response = new HttpHandler.Builder()
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
index 497cd3b..bb31cd6 100644
--- 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
@@ -1,6 +1,9 @@
 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
@@ -12,6 +15,14 @@
 
     private String msg;
 
-    private Object data;
+    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/erp/ErpScheduler.java b/src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java
index b721994..cb18372 100644
--- a/src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java
+++ b/src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java
@@ -311,6 +311,7 @@
                                     data.getETypeID(),    // 缁忔墜浜虹紪鍙穂闈炵┖]
                                     detl0.getUserCode(),    // 鍟嗗搧缂栧彿
                                     detl0.getQty(),    // 鍟嗗搧鏁伴噺
+                                    detl0.getQty(),    // 鎬绘暟閲�
                                     detl0.getPrice(),    // 鍟嗗搧鍗曚环
                                     detl0.getComment(),    // 鍟嗗搧澶囨敞[闈炵┖]
                                     0,    // 鐘舵��
@@ -372,7 +373,7 @@
                             // 琛ㄤ綋
                             GetOrderResultDetl0 detl0 = new GetOrderResultDetl0();
                             detl0.setUserCode(custOrder.getUserCode());
-                            detl0.setQty(custOrder.getQty());
+                            detl0.setQty(custOrder.getTotal());
                             detl0.setPrice(custOrder.getPrice());
                             detl0.setComment(custOrder.getComment());
                             list.add(detl0);
diff --git a/src/main/java/zy/cloud/wms/manager/entity/CustOrder.java b/src/main/java/zy/cloud/wms/manager/entity/CustOrder.java
index 2de633b..eeb2b63 100644
--- a/src/main/java/zy/cloud/wms/manager/entity/CustOrder.java
+++ b/src/main/java/zy/cloud/wms/manager/entity/CustOrder.java
@@ -55,6 +55,12 @@
     private Double qty;
 
     /**
+     * 鎬绘暟閲�
+     */
+    @ApiModelProperty(value= "鎬绘暟閲�")
+    private Double total;
+
+    /**
      * 鍟嗗搧鍗曚环
      */
     @ApiModelProperty(value= "鍟嗗搧鍗曚环")
@@ -94,13 +100,14 @@
 
     public CustOrder() {}
 
-    public CustOrder(String number,String billDate,String bTypeId,String eTypeId,String userCode,Double qty,Double price,String comment,Integer status,Date createTime,Date updateTime,String memo) {
+    public CustOrder(String number,String billDate,String bTypeId,String eTypeId,String userCode,Double qty,Double total,Double price,String comment,Integer status,Date createTime,Date updateTime,String memo) {
         this.number = number;
         this.billDate = billDate;
         this.bTypeId = bTypeId;
         this.eTypeId = eTypeId;
         this.userCode = userCode;
         this.qty = qty;
+        this.total = total;
         this.price = price;
         this.comment = comment;
         this.status = status;
@@ -172,6 +179,14 @@
         this.qty = qty;
     }
 
+    public Double getTotal() {
+        return total;
+    }
+
+    public void setTotal(Double total) {
+        this.total = total;
+    }
+
     public Double getPrice() {
         return price;
     }
diff --git a/src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java b/src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java
index 58b639f..e32e995 100644
--- a/src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java
+++ b/src/main/java/zy/cloud/wms/manager/entity/StoPreTab.java
@@ -30,4 +30,6 @@
 
     private String prior$;
 
+    private Integer type;
+
 }
diff --git a/src/main/java/zy/cloud/wms/manager/entity/param/StockTransferParam.java b/src/main/java/zy/cloud/wms/manager/entity/param/StockTransferParam.java
index eb0ff73..fe809f4 100644
--- a/src/main/java/zy/cloud/wms/manager/entity/param/StockTransferParam.java
+++ b/src/main/java/zy/cloud/wms/manager/entity/param/StockTransferParam.java
@@ -12,5 +12,7 @@
 
     private Double anfme;
 
+    private Double total;
+
 
 }
diff --git a/src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java b/src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java
index 3c1be77..207f7fb 100644
--- a/src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java
+++ b/src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java
@@ -16,4 +16,8 @@
 
     @Update("delete from man_cust_order where number=#{number}")
     int delete(@Param("number") String number);
+
+    @Update("update man_cust_order_log set qty = #{qty} where number=#{number} and user_code=#{userCode}")
+    int updateQty(@Param("number") String number, @Param("userCode") String userCode, @Param("qty") Double qty);
+
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/CustOrderService.java b/src/main/java/zy/cloud/wms/manager/service/CustOrderService.java
index 8710096..04859aa 100644
--- a/src/main/java/zy/cloud/wms/manager/service/CustOrderService.java
+++ b/src/main/java/zy/cloud/wms/manager/service/CustOrderService.java
@@ -7,4 +7,6 @@
 
     boolean updateStatus(String number, Integer status);
 
+    boolean updateQty(String number, String userCode, Double anfme);
+
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java b/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
index a0eab4c..0607190 100644
--- a/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
+++ b/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.service.IService;
 import zy.cloud.wms.manager.entity.LocDetl;
+import zy.cloud.wms.manager.entity.param.StockTransferParam;
 
 import java.util.List;
 
@@ -20,6 +21,8 @@
      */
     void checkLocDetlCount(String number);
 
+    List<StockTransferParam> checkLocDetlCountOfRes(String number);
+
     /**
      * 鍑忓皯搴撳瓨
      */
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/CustOrderServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/CustOrderServiceImpl.java
index d5f3d40..a2566e7 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/CustOrderServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/CustOrderServiceImpl.java
@@ -13,4 +13,9 @@
     public boolean updateStatus(String number, Integer status) {
         return this.baseMapper.updateStatus(number, status) > 0;
     }
+
+    @Override
+    public boolean updateQty(String number, String userCode, Double anfme) {
+        return this.baseMapper.updateQty(number, userCode, anfme) > 0;
+    }
 }
diff --git a/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java b/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java
index 64ec318..5a1277b 100644
--- a/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java
+++ b/src/main/java/zy/cloud/wms/manager/service/impl/LocDetlServiceImpl.java
@@ -11,6 +11,7 @@
 import zy.cloud.wms.manager.entity.LocDetl;
 import zy.cloud.wms.manager.entity.Mat;
 import zy.cloud.wms.manager.entity.Prior;
+import zy.cloud.wms.manager.entity.param.StockTransferParam;
 import zy.cloud.wms.manager.mapper.LocDetlMapper;
 import zy.cloud.wms.manager.service.CustOrderService;
 import zy.cloud.wms.manager.service.LocDetlService;
@@ -84,6 +85,28 @@
     }
 
     @Override
+    public List<StockTransferParam> checkLocDetlCountOfRes(String number) {
+        List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>().eq("number", number).eq("status", 1));
+        boolean asrs = false;
+        List<StockTransferParam> params = new ArrayList<>();
+        for (CustOrder custOrder : custOrders) {
+            Double count = this.baseMapper.selectCountByMatnr(custOrder.getUserCode());
+            if (count == null) {
+                count = 0.0D;
+            }
+            if (count < custOrder.getQty()) {
+                if (!asrs) { asrs = true; }
+                StockTransferParam param = new StockTransferParam();
+                param.setMatnr(custOrder.getUserCode());
+                param.setAnfme(custOrder.getQty() - count);
+                param.setTotal(custOrder.getQty());
+                params.add(param);
+            }
+        }
+        return params;
+    }
+
+    @Override
     public Boolean reduceStock(Long nodeId, String matnr, Double anfme) {
         return this.baseMapper.reduceStock(nodeId, matnr, anfme)>0;
     }
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 b580661..74ca754 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
@@ -317,6 +317,7 @@
                     null,    // 缁忔墜浜虹紪鍙穂绌篯
                     dto.getMatnr(),    // 鍟嗗搧缂栧彿
                     dto.getCount(),    // 鍟嗗搧鏁伴噺
+                    dto.getCount(),    // 鎬绘暟閲�
                     Cools.isEmpty(mat.getName())?0.0D:Double.parseDouble(mat.getName()),    // 鍟嗗搧鍗曚环
                     null,    // 鍟嗗搧澶囨敞[绌篯
                     1,    // 鐘舵��
@@ -332,9 +333,10 @@
     }
 
     @Override
+    @Transactional
     public R stockTransfer(String number, Long userId) {
         List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>().eq("number", number).eq("status", 1));
-        boolean error = false;
+        boolean asrs = false;
         List<StockTransferParam> params = new ArrayList<>();
         for (CustOrder custOrder : custOrders) {
             Double count = locDetlService.selectCountByMatnr(custOrder.getUserCode());
@@ -342,17 +344,21 @@
                 count = 0.0D;
             }
             if (count < custOrder.getQty()) {
-                if (!error) {
-                    error = true;
-                }
+                if (!asrs) { asrs = true; }
                 StockTransferParam param = new StockTransferParam();
                 param.setMatnr(custOrder.getUserCode());
                 param.setAnfme(custOrder.getQty() - count);
                 params.add(param);
             }
         }
-        if (error) {
+        if (asrs) {
             if (asrsService.stockTransfer(params)) {
+                for (StockTransferParam param : params) {
+                    // 淇敼閿�鍞鍗曞緟鍑烘暟閲�
+                    if (!custOrderService.updateQty(number, param.getMatnr(), param.getAnfme())) {
+                        throw new CoolException("淇敼閿�鍞鍗曞緟鍑烘暟閲忓け璐�");
+                    }
+                }
                 return R.ok("搴撳瓨璋冩嫧鎴愬姛");
             } else {
                 return R.error("绔嬪簱璋冩嫧澶辫触锛岃鑱旂郴绠$悊鍛�");
diff --git a/src/main/resources/mapper/CustOrderMapper.xml b/src/main/resources/mapper/CustOrderMapper.xml
index b561851..fecc359 100644
--- a/src/main/resources/mapper/CustOrderMapper.xml
+++ b/src/main/resources/mapper/CustOrderMapper.xml
@@ -10,6 +10,7 @@
         <result column="eType_id" property="eTypeId" />
         <result column="user_code" property="userCode" />
         <result column="qty" property="qty" />
+        <result column="total" property="total" />
         <result column="price" property="price" />
         <result column="comment" property="comment" />
         <result column="status" property="status" />
diff --git a/src/main/webapp/static/js/custOrder/custOrder.js b/src/main/webapp/static/js/custOrder/custOrder.js
index 932e1f0..a8160a1 100644
--- a/src/main/webapp/static/js/custOrder/custOrder.js
+++ b/src/main/webapp/static/js/custOrder/custOrder.js
@@ -206,7 +206,7 @@
                                 ,closeBtn: false
                                 ,offset: '100px'
                                 // ,area: ['800px','450px']
-                                ,area: '800px'
+                                ,area: '1000px'
                                 ,shade: 0.5
                                 ,shadeClose: true
                                 ,id: 'LAY_layuipro'
@@ -224,15 +224,16 @@
                                         height: 432,
                                         cols: [[
                                             {field: 'title', title: '鍟嗗搧', align: 'center'},
-                                            {field: 'anfme', title: '鎬绘暟閲�', align: 'center', style: 'font-weight: bold', width: 80},
+                                            {field: 'anfme', title: '鎬绘暟閲�', align: 'center', style: 'font-weight: bold', width: 90},
+                                            {field: 'type', title: '浠撳簱', align: 'center', templet: '#typeTpl', width: 90},
                                             {field: 'locNo', title: '璐т綅', align: 'center'},
                                             {field: 'prior$', title: '鎺ㄨ崘璐т綅', align: 'center', width: 100},
-                                            {field: 'reduce', title: '鏁伴噺', align: 'center', width: 80, style: 'font-weight: bold'},
+                                            {field: 'reduce', title: '鏁伴噺', align: 'center', width: 90, style: 'font-weight: bold'},
                                             // {field: 'remQty', title: '浣欓噺', align: 'center', width: 80},
-                                            {field: 'total', title: '鎬婚噺', align: 'center', width: 80},
+                                            {field: 'total', title: '鎬婚噺', align: 'center', width: 90},
                                         ]],
                                         done: function () {
-                                            tableX.merges('stoPreTab', [0,1]);
+                                            tableX.merges('stoPreTab', [0,1,2]);
                                             $('.layui-table-body.layui-table-main').css("overflow", "auto")
                                         }
                                     });
diff --git a/src/main/webapp/views/custOrder/custOrder.html b/src/main/webapp/views/custOrder/custOrder.html
index d4eb38f..4b5d3ae 100644
--- a/src/main/webapp/views/custOrder/custOrder.html
+++ b/src/main/webapp/views/custOrder/custOrder.html
@@ -86,6 +86,15 @@
     >{{d.status$}}</span>
 </script>
 
+<script type="text/html" id="typeTpl">
+    <span name="type"
+          {{# if( d.type === 1){ }}
+          class="layui-badge layui-badge-blue" ><span style="display: none">{{d.number}}</span>骞充粨</span>
+          {{# } else if(d.type === 2){ }}
+          class="layui-badge layui-badge-red" ><span style="display: none">{{d.number}}</span>绔嬪簱</span>
+          {{# } }}
+</script>
+
 <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
 <script type="text/javascript" src="../../static/js/jquery/jQuery.print.js"></script>
 <script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>

--
Gitblit v1.9.1