From 6f39c0f9356f6c7e6fe80c4c99f1419b19be7e5e Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <xltys1995>
Date: 星期二, 06 四月 2021 23:21:25 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/luxiaotao1123/wms-cloud into master

---
 src/main/webapp/views/custOrder/custOrder.html                               |    2 
 src/main/java/zy/cloud/wms/common/service/erp/ErpScheduler.java              |   91 ++++++++++++++++++++++
 src/main/java/zy/cloud/wms/common/service/erp/entity/UploadCancelResult.java |   19 ++++
 src/main/java/zy/cloud/wms/manager/service/LocDetlService.java               |    5 +
 src/main/java/zy/cloud/wms/manager/service/impl/WorkServiceImpl.java         |   53 +++++++++++++
 src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java               |    6 +
 src/main/webapp/views/pda/stockCheck.html                                    |    2 
 src/main/webapp/views/pda/matQuery.html                                      |   16 ++-
 8 files changed, 186 insertions(+), 8 deletions(-)

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 c1e19f6..a844e3c 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
@@ -39,6 +39,8 @@
     public static final String GET_BASIS = "cM/basis/getBasis";
     public static final String UPLOAD_BILL = "cM/basis/uploadBill";
     public static final String UPLOAD_STOCK = "cM/basis/uploadStock";
+    public static final String OVER_BILL = "cM/basis/OverBill";
+    public static final String UPLOAD_CANCEL_RESULT = "cM/basis/cancelOrders";
 
     @Autowired
     private CustOrderService custOrderService;
@@ -474,4 +476,93 @@
     }
 
 
+    /**
+     * 鑾峰彇鍙栨秷璁㈠崟
+     */
+    @Scheduled(cron = "0/5 * * * * ? ")
+    @Transactional
+//    @PostConstruct
+    public void getCancelOrdersExecute(){
+        try {
+            Map<String, Object> json = new HashMap<>();
+            String response = new HttpHandler.Builder()
+                    .setUri(URI)
+                    .setPath(OVER_BILL)
+                    .setJson(JSON.toJSONString(json))
+                    .build()
+                    .doPost();
+            if (!Cools.isEmpty(response)) {
+//                log.info(response);
+                Date now = new Date();
+                Result result = JSON.parseObject(response, Result.class);
+                if (result.getCode() != 1) {
+                    return;
+                }
+                List<GetOrderResult0> list = JSON.parseArray(result.getData(), GetOrderResult0.class);
+                if (!Cools.isEmpty(list)) {
+                    boolean complete = true;
+                    Set<String> existNumbers = new HashSet<>();
+
+                }
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+
+    }
+
+    /**
+     * 涓婁紶閿�鍞鍗曞彇娑堢粨鏋�
+     */
+    @Scheduled(cron = "0/5 * * * * ? ")
+    @Transactional
+//    @PostConstruct
+    public void uploadCancelOrdersExecute(){
+        try {
+            List<CustOrder> custOrders = custOrderService.selectList(new EntityWrapper<CustOrder>().eq("status", 3).isNotNull("vch_code"));
+            if (Cools.isEmpty(custOrders)) {
+                return;
+            }
+            Map<String, Object> json = new HashMap<>();
+            List<UploadCancelResult> list = new ArrayList<>();
+            for (CustOrder custOrder : custOrders) {
+                UploadCancelResult result = new UploadCancelResult();
+                result.setNumber(custOrder.getNumber());
+                result.setUserCode(custOrder.getUserCode());
+                result.setQty(custOrder.getTotal());
+                result.setStatus(1);
+                list.add(result);
+            }
+            json.put("data", list);
+            String response = new HttpHandler.Builder()
+                    .setUri(URI)
+                    .setPath(UPLOAD_CANCEL_RESULT)
+                    .setJson(JSON.toJSONString(json))
+                    .build()
+                    .doPost();
+            if (!Cools.isEmpty(response)) {
+//                log.info(response);
+                Date now = new Date();
+                Result result = JSON.parseObject(response, Result.class);
+                if (result.getCode() != 1) {
+                    return;
+                }
+                for (UploadCancelResult result1 : list) {
+                    // 杞巻鍙叉。
+                    int save = custOrderMapper.saveLog(result1.getNumber(), result1.getUserCode());
+                    if (save > 0) {
+                        if (custOrderMapper.delete(new EntityWrapper<CustOrder>().eq("number", result1.getNumber()).eq("user_code", result1.getUserCode())) == 0) {
+                            throw new CoolException("鍒犻櫎閿�鍞鍗曞け璐�");
+                        }
+                    }
+                }
+            }
+        } catch (IOException e) {
+            e.printStackTrace();
+            throw new RuntimeException(e.getMessage());
+        }
+
+    }
+
 }
diff --git a/src/main/java/zy/cloud/wms/common/service/erp/entity/UploadCancelResult.java b/src/main/java/zy/cloud/wms/common/service/erp/entity/UploadCancelResult.java
new file mode 100644
index 0000000..58abfd4
--- /dev/null
+++ b/src/main/java/zy/cloud/wms/common/service/erp/entity/UploadCancelResult.java
@@ -0,0 +1,19 @@
+package zy.cloud.wms.common.service.erp.entity;
+
+import lombok.Data;
+
+/**
+ * Created by vincent on 2021/4/5
+ */
+@Data
+public class UploadCancelResult {
+
+    private String number;
+
+    private String userCode;
+
+    private Double qty;
+
+    private Integer Status;
+
+}
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 207f7fb..fff9ad3 100644
--- a/src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java
+++ b/src/main/java/zy/cloud/wms/manager/mapper/CustOrderMapper.java
@@ -14,9 +14,15 @@
     @Insert("insert into man_cust_order_log select * from man_cust_order where number=#{number}")
     int saveLog(String number);
 
+    @Insert("insert into man_cust_order_log select * from man_cust_order where number=#{number} and user_code = #{userCode}")
+    int saveLog(@Param("number") String number, @Param("userCode") String userCode);
+
     @Update("delete from man_cust_order where number=#{number}")
     int delete(@Param("number") String number);
 
+    @Update("delete from man_cust_order where number=#{number} and user_code = #{userCode}")
+    int delete(@Param("number") String number, @Param("userCode") String userCode);
+
     @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/LocDetlService.java b/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
index 8b38696..4712c0a 100644
--- a/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
+++ b/src/main/java/zy/cloud/wms/manager/service/LocDetlService.java
@@ -13,6 +13,11 @@
 
     LocDetl getLocDetl(Long nodeId, String matnr);
 
+    /**
+     * 鏌ョ湅褰撳墠鐗╂枡鍦ㄥ簱瀛樹腑鐨勫簱瀛樻槑缁嗭紙鎺ㄨ崘璐т綅鍦ㄥ墠)
+     * @param matnr
+     * @return
+     */
     List<LocDetl> findOfSort(String matnr);
 
     /**
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 1beff42..547e5f9 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
@@ -254,9 +254,59 @@
         List<Pakout> pakouts = pakoutService.selectList(new EntityWrapper<Pakout>()
                 .eq("doc_num", param.getNumber())
                 .in("wrk_sts", 1, 2));
-        // 淇敼搴撳瓨鏁伴噺
         for (Pakout pakout : pakouts) {
             LocDetl locDetl = locDetlService.getLocDetl(pakout.getNodeId(), pakout.getMatnr());
+            // 缂鸿揣 or 绔嬪簱
+            if (locDetl == null) {
+                // 缂鸿揣
+                if (pakout.getLocNo().equals("缂鸿揣")) {
+                    Double count = Optional.ofNullable(locDetlService.selectCountByMatnr(pakout.getMatnr())).orElse(0.0D);
+                    if (count < pakout.getAnfme()) {
+                        throw new CoolException(pakout.getMaktx()+"缂鸿揣");
+                    }
+                    Date now = new Date();
+                    // 鏌ユ壘鎺ㄨ崘璐т綅鏄惁搴撳瓨瓒冲
+                    List<LocDetl> locDetls = locDetlService.findOfSort(pakout.getMatnr());
+                    double issued = Optional.ofNullable(pakout.getAnfme()).orElse(0.0D) ;
+                    for (LocDetl locDetl1 : locDetls) {
+                        if (issued > 0) {
+                            // 淇濆瓨鍑哄簱閫氱煡鍗�
+                            Pakout newPakout = new Pakout();
+                            newPakout.setWrkSts(3L);
+                            newPakout.setAnfme(issued>=locDetl1.getAnfme()?locDetl1.getAnfme():issued);
+                            newPakout.setZpallet(locDetl1.getZpallet());
+                            newPakout.setLocNo(locDetl1.getLocNo());
+                            newPakout.setNodeId(locDetl1.getNodeId());
+                            newPakout.setWrkNo(String.valueOf(snowflakeIdWorker.nextId()));
+                            VersionUtils.setPakout(newPakout, locDetl1);
+                            newPakout.setDocId(pakout.getDocId()); // 鍗曟嵁绫诲瀷
+                            newPakout.setDocNum(pakout.getDocNum());    // 鍗曟嵁缂栧彿
+                            newPakout.setCreateTime(now);
+                            newPakout.setUpdateTime(now);
+                            newPakout.setStatus(1);
+                            if (!pakoutService.insert(newPakout)) {
+                                throw new CoolException("淇濆瓨鍑哄簱閫氱煡鍗曞け璐�");
+                            }
+                            if (issued>=locDetl1.getAnfme()) {
+                                // 鍒犻櫎搴撳瓨鏄庣粏
+                                if (!locDetlService.removeStock(locDetl1.getNodeId(), newPakout.getMatnr())) {
+                                    throw new CoolException("鍒犻櫎搴撳瓨鏄庣粏澶辫触");
+                                }
+                            } else {
+                                // 淇敼搴撳瓨鏄庣粏鏁伴噺
+                                if (!locDetlService.reduceStock(locDetl1.getNodeId(), newPakout.getMatnr(), issued)) {
+                                    throw new CoolException("淇敼搴撳瓨鏄庣粏鏁伴噺澶辫触");
+                                }
+                            }
+                            // 鍓╀綑寰呭嚭鏁伴噺閫掑噺
+                            issued = issued - locDetl1.getAnfme();
+                        }
+                    }
+
+                }
+                continue;
+            }
+            // 淇敼搴撳瓨鏁伴噺
             if (pakout.getAnfme()>=locDetl.getAnfme()) {
                 // 鍒犻櫎搴撳瓨鏄庣粏
                 if (!locDetlService.removeStock(locDetl.getNodeId(), pakout.getMatnr())) {
@@ -269,6 +319,7 @@
                 }
             }
         }
+
         // 淇敼鍑哄簱鍗曠姸鎬�
         if (!pakoutService.stockOutComplete(param.getWrkNo(), param.getNumber(), userId)) {
             return R.error("淇濆瓨鏁版嵁澶辫触");
diff --git a/src/main/webapp/views/custOrder/custOrder.html b/src/main/webapp/views/custOrder/custOrder.html
index ddf8b9f..0a1a8f4 100644
--- a/src/main/webapp/views/custOrder/custOrder.html
+++ b/src/main/webapp/views/custOrder/custOrder.html
@@ -92,6 +92,8 @@
           class="layui-badge layui-badge-blue" ><span style="display: none">{{d.number}}</span>骞充粨</span>
           {{# } else if(d.type === 2){ }}
           class="layui-badge layui-badge-green" ><span style="display: none">{{d.number}}</span>绔嬪簱</span>
+          {{# } else if(d.type === 0){ }}
+          class="layui-badge layui-badge-red" ><span style="display: none">{{d.number}}</span>缂鸿揣</span>
           {{# } }}
 </script>
 
diff --git a/src/main/webapp/views/pda/matQuery.html b/src/main/webapp/views/pda/matQuery.html
index afb37b2..9051ba1 100644
--- a/src/main/webapp/views/pda/matQuery.html
+++ b/src/main/webapp/views/pda/matQuery.html
@@ -39,6 +39,13 @@
             text-overflow:ellipsis;
             vertical-align: middle;
         }
+        .form-box textarea {
+            width: 120px;
+            margin-left: 10px;
+            padding-left: 5px;
+            height: 30px;
+            border: 1px solid #777777;
+        }
         #selectBtn {
             vertical-align: middle;
             padding: 3px 5px;
@@ -88,12 +95,9 @@
         <button id="selectBtn">閫�</button>
     </div>
     <div class="form-item">
-        <span>鍟嗗搧鍚嶇О</span>
-        <input id="maktx" type="text" disabled="disabled">
-    </div>
-    <div class="form-item">
-        <span>鍟嗗搧瑙勬牸</span>
-        <input id="specs" type="text" disabled="disabled">
+        <span style="float: left;margin-left: 38px">鍟嗗搧鍚嶇О</span>
+        <textarea id="maktx" type="text" disabled="disabled" style="height: 60px;float: left;"></textarea>
+        <div style="clear: both"></div>
     </div>
     <div class="form-item">
         <span>鍗曚綅</span>
diff --git a/src/main/webapp/views/pda/stockCheck.html b/src/main/webapp/views/pda/stockCheck.html
index 8107089..f45778d 100644
--- a/src/main/webapp/views/pda/stockCheck.html
+++ b/src/main/webapp/views/pda/stockCheck.html
@@ -114,7 +114,7 @@
             cellMinWidth: 50,
             cols: [[
                 {fixed: 'left', align: 'center', field: 'count', title: '鏁伴噺', event: 'modify', style:'font-weight: bold;', width:50},
-                {field: 'matnr', align: 'center', title: '鍟嗗搧缂栧彿', event: 'modify'},
+                // {field: 'matnr', align: 'center', title: '鍟嗗搧缂栧彿', event: 'modify'},
                 {field: 'maktx', align: 'center', title: '鍟嗗搧鍚嶇О', event: 'modify'}
             ]],
             done: function (res, curr, count) {

--
Gitblit v1.9.1