From 86b8273226c7aa87e7c346659ed9e76278dcc471 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期日, 15 十月 2023 11:28:01 +0800
Subject: [PATCH] AGV工作档取消和完成

---
 src/main/java/com/zy/common/service/erp/ErpService.java                  |    0 
 src/main/java/com/zy/common/service/erp/task/ErpScheduler.java           |  187 ++++++--------------
 src/main/java/com/zy/asrs/service/AgvWrkMastLogService.java              |    2 
 src/main/java/com/zy/asrs/service/AgvWrkMastService.java                 |    2 
 src/main/resources/mapper/ViewStayTimeMapper.xml                         |    1 
 src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java           |    8 
 src/main/java/com/zy/asrs/controller/AgvOpenController.java              |    2 
 src/main/java/com/zy/asrs/service/AgvWrkDetlService.java                 |    2 
 src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java         |    6 
 src/main/java/com/zy/asrs/service/impl/AllLocDetlServiceImpl.java        |    7 
 src/main/java/com/zy/asrs/mapper/InventoryVarianceMapper.java            |   11 +
 src/main/java/com/zy/asrs/service/InventoryVarianceService.java          |    7 
 src/main/java/com/zy/common/service/erp/entity/WlzhVStRd.java            |   38 ++++
 src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java                   |    7 
 src/main/java/com/zy/asrs/service/impl/InventoryVarianceServiceImpl.java |   11 +
 src/main/java/com/zy/asrs/service/OrderDetlService.java                  |    2 
 src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java        |    7 
 src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java         |   11 +
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java           |  182 +++++--------------
 src/main/java/com/zy/asrs/service/AllLocDetlService.java                 |    3 
 src/main/resources/application.yml                                       |   10 
 src/main/java/com/zy/asrs/entity/InventoryVariance.java                  |   30 +++
 22 files changed, 262 insertions(+), 274 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AgvOpenController.java b/src/main/java/com/zy/asrs/controller/AgvOpenController.java
index 702185d..4c6a853 100644
--- a/src/main/java/com/zy/asrs/controller/AgvOpenController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvOpenController.java
@@ -118,7 +118,7 @@
             }
             //鍑哄簱浠诲姟 110.绌烘澘鍑哄簱
             if(agvWrkMast.getIoType() == 110){
-                agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode());
+                agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode());
             }
         }
 
diff --git a/src/main/java/com/zy/asrs/entity/InventoryVariance.java b/src/main/java/com/zy/asrs/entity/InventoryVariance.java
new file mode 100644
index 0000000..59beed6
--- /dev/null
+++ b/src/main/java/com/zy/asrs/entity/InventoryVariance.java
@@ -0,0 +1,30 @@
+package com.zy.asrs.entity;
+
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/**
+ * ERP - 绔嬪簱 搴撳瓨宸紓缁熻琛�
+ */
+@Data
+@TableName("inventory_variance")
+public class InventoryVariance {
+    //瀛樿揣缂栫爜
+    private String matnr;
+    //閿�鍞鍗曞彿
+    private String csocode;
+    //閿�鍞鍗曡鍙�
+    private String isoseq;
+    //ERP瀛樿揣鏁伴噺
+    private Double iQuantity;
+    //绔嬪簱瀛樿揣鏁伴噺
+    private Double anfme;
+
+    public InventoryVariance(String matnr, String csocode, String isoseq, Double iQuantity, Double anfme){
+        this.matnr = matnr;
+        this.csocode = csocode;
+        this.isoseq = isoseq;
+        this.iQuantity = iQuantity;
+        this.anfme = anfme;
+    }
+}
diff --git a/src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java b/src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java
index e2e6631..80232bd 100644
--- a/src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java
+++ b/src/main/java/com/zy/asrs/mapper/AgvLocDetlMapper.java
@@ -24,8 +24,11 @@
             "\t\tROW_NUMBER() over (order by sum(a.anfme) desc) as row\n" +
             "\t\t, a.matnr\n" +
             "\t\t, sum(a.anfme) as anfme\n" +
-            "\t\tfrom agv_loc_detl a\n" +
-            "\t\twhere 1=1\n" +
+//            "\t\tfrom agv_loc_detl a\n" +
+//            "\t\twhere 1=1\n" +
+//            "\t\t<when #{matnr} != '>" +
+//            "\t\tAND matnr = #{matnr}" +
+            "\t\t</when>" +
             "\t\tgroup by a.matnr\n" +
             " ) t where t.row between ((#{pageNumber}-1)*#{pageSize}+1) and (#{pageNumber}*#{pageSize})")
     List<AgvLocDetl> getStockStatis(Map<String, Object> map);
diff --git a/src/main/java/com/zy/asrs/mapper/InventoryVarianceMapper.java b/src/main/java/com/zy/asrs/mapper/InventoryVarianceMapper.java
new file mode 100644
index 0000000..298dd11
--- /dev/null
+++ b/src/main/java/com/zy/asrs/mapper/InventoryVarianceMapper.java
@@ -0,0 +1,11 @@
+package com.zy.asrs.mapper;
+
+import com.baomidou.mybatisplus.mapper.BaseMapper;
+import com.zy.asrs.entity.InventoryVariance;
+import org.apache.ibatis.annotations.Mapper;
+import org.springframework.stereotype.Repository;
+
+@Mapper
+@Repository
+public interface InventoryVarianceMapper extends BaseMapper<InventoryVariance> {
+}
diff --git a/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java b/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java
index 3447454..1c016dc 100644
--- a/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java
+++ b/src/main/java/com/zy/asrs/service/AgvWrkDetlService.java
@@ -24,4 +24,6 @@
 
     boolean updateOrderNo(String orderNo, Integer wrkNo, String matnr, String batch);
 
+    boolean deleteByWrkNo(int wrkNo);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/AgvWrkMastLogService.java b/src/main/java/com/zy/asrs/service/AgvWrkMastLogService.java
index 864a789..d44ed7c 100644
--- a/src/main/java/com/zy/asrs/service/AgvWrkMastLogService.java
+++ b/src/main/java/com/zy/asrs/service/AgvWrkMastLogService.java
@@ -6,6 +6,6 @@
 
 public interface AgvWrkMastLogService extends IService<AgvWrkMastLog> {
 
-    boolean save(AgvWrkMast workNo);
+    boolean save(AgvWrkMast agvWrkMast);
 
 }
diff --git a/src/main/java/com/zy/asrs/service/AgvWrkMastService.java b/src/main/java/com/zy/asrs/service/AgvWrkMastService.java
index e0d2298..9b827e3 100644
--- a/src/main/java/com/zy/asrs/service/AgvWrkMastService.java
+++ b/src/main/java/com/zy/asrs/service/AgvWrkMastService.java
@@ -17,4 +17,6 @@
     public int containerMoveOut(List<AgvWrkMast> agvWrkMastList) throws IOException;
 
     public boolean insertByIncrease(AgvWrkMast agvWrkMast);
+
+    public boolean deleteByWrkNo(int wrkNo);
 }
diff --git a/src/main/java/com/zy/asrs/service/AllLocDetlService.java b/src/main/java/com/zy/asrs/service/AllLocDetlService.java
index 1770fa5..25e475c 100644
--- a/src/main/java/com/zy/asrs/service/AllLocDetlService.java
+++ b/src/main/java/com/zy/asrs/service/AllLocDetlService.java
@@ -3,6 +3,9 @@
 import com.baomidou.mybatisplus.service.IService;
 import com.zy.asrs.entity.AllLocDetl;
 
+import java.util.List;
+
 public interface AllLocDetlService extends IService<AllLocDetl> {
+    public List<AllLocDetl> getByMatnrAndCsocodeAndIsoseq(String matnr, String csocode, String isoseq);
 
 }
diff --git a/src/main/java/com/zy/asrs/service/InventoryVarianceService.java b/src/main/java/com/zy/asrs/service/InventoryVarianceService.java
new file mode 100644
index 0000000..2117673
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/InventoryVarianceService.java
@@ -0,0 +1,7 @@
+package com.zy.asrs.service;
+
+import com.baomidou.mybatisplus.service.IService;
+import com.zy.asrs.entity.InventoryVariance;
+
+public interface InventoryVarianceService extends IService<InventoryVariance> {
+}
diff --git a/src/main/java/com/zy/asrs/service/OrderDetlService.java b/src/main/java/com/zy/asrs/service/OrderDetlService.java
index df117bb..6f8be15 100644
--- a/src/main/java/com/zy/asrs/service/OrderDetlService.java
+++ b/src/main/java/com/zy/asrs/service/OrderDetlService.java
@@ -34,4 +34,6 @@
 
     OrderDetl selectContainBatch(String batch);
 
+    public OrderDetl selectByOrderNoAndMatnr(String orderNo, String matnr, String csocode, String isoseq);
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
index cf82a7a..cc0e439 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -3,7 +3,6 @@
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
-import com.core.common.DateUtils;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.EmptyPlateOutParam;
@@ -25,7 +24,6 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.UUID;
-import java.util.concurrent.TimeUnit;
 
 /**
  * Created by vincent on 2020/6/11
@@ -447,26 +445,22 @@
         if (Cools.isEmpty(wrkMast)){
             throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
         }
-        if (wrkMast.getWrkSts() == 9 || wrkMast.getWrkSts() == 29) {
-            throw new CoolException("褰撳墠宸ヤ綔妗e凡瀹屾垚");
+
+        if(wrkMast.getWrkSts() > 202){
+            //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚
+            agvWrkMastService.updateWrkStsByWrkNo(wrkMast.getWrkNo(),205);
+
+            //鍑哄簱浠诲姟 101.鍑哄簱 || 103.鎷f枡鍑哄簱 || 107.鐩樼偣鍑哄簱
+            if(wrkMast.getIoType() == 101 || wrkMast.getIoType() == 103 || wrkMast.getIoType() == 107){
+                //淇敼鍑哄簱绔欑偣鐘舵��
+                agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getLocNo(),"F",wrkMast.getBarcode());
+            }
+            //鍑哄簱浠诲姟 110.绌烘澘鍑哄簱
+            if(wrkMast.getIoType() == 110){
+                agvBasDevpService.updateLocStsAndBarcodeByDevNo(wrkMast.getLocNo(),"F",wrkMast.getBarcode());
+            }
         }
-        // 鍏ュ簱 + 搴撲綅杞Щ
-        if (wrkMast.getWrkSts() < 9 || (wrkMast.getWrkSts() > 10 && wrkMast.getIoType()==11)) {
-            wrkMast.setWrkSts(9L);
-            // 鍑哄簱
-        } else if (wrkMast.getWrkSts() > 20) {
-            wrkMast.setWrkSts(29L);
-        }
-        Date now = new Date();
-        wrkMast.setCrnStrTime(DateUtils.calculate(now, 1L, TimeUnit.SECONDS, true));
-        wrkMast.setCrnEndTime(now);
-        wrkMast.setModiTime(now);
-        wrkMast.setModiUser(userId);
-        // 瀹屾垚鎿嶄綔浜哄憳璁板綍
-        wrkMast.setManuType("鎵嬪姩瀹屾垚");
-        if (!agvWrkMastService.updateById(wrkMast)) {
-            throw new CoolException("淇敼宸ヤ綔妗eけ璐�");
-        }
+
     }
 
     @Transactional
@@ -475,125 +469,51 @@
         if (Cools.isEmpty(wrkMast)){
             throw new CoolException(workNo+"宸ヤ綔妗d笉瀛樺湪");
         }
-
-        if (wrkMast.getWrkSts() == 200) {
-            //灏忚溅绉诲簱浠诲姟锛岀洿鎺ュ垹闄ゅ伐浣滄。
-            agvWrkMastService.deleteById(wrkMast);
-            return;
+        //鎷f枡鍏ュ簱 鐩樼偣鍏ュ簱涓嶅彲鍙栨秷
+        if(wrkMast.getIoType() == 53 || wrkMast.getIoType() == 57){
+            throw new CoolException("褰撳墠浠诲姟涓嶅彲鍙栨秷");
         }
 
-        String locNo = ""; // 寰呬慨鏀圭洰鏍囧簱浣�
-        String locSts = ""; // 寰呬慨鏀圭洰鏍囧簱浣嶇姸鎬�
-        // 鍏ュ簱鍙栨秷锛堜慨鏀圭洰鏍囧簱浣嶏級
-        if (wrkMast.getWrkSts() < 9) {
-            locNo = wrkMast.getLocNo();
-            locSts = "O";
+        //AGV鏈哄櫒浜烘湭鍙栬揣鍓嶅彇娑�
+        if(wrkMast.getWrkSts() < 203){
+            //鍏ュ簱鍙栨秷
+            if(wrkMast.getIoType() == 1 || wrkMast.getIoType() == 10){
+                //婧愮珯鐐�
+                String devNo = wrkMast.getSourceLocNo();
+                //鐩爣搴撲綅
+                String locNo = wrkMast.getLocNo();
+                agvLocMastService.updateLocStsByLocNo(locNo,"O");
+                agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"F",wrkMast.getBarcode());
 
-            // 搴撲綅杞Щ
-            if (wrkMast.getIoType() == 11) {
-                // 搴撲綅杞Щ锛氭簮搴撲綅
-                AgvLocMast locMast = agvLocMastService.selectById(wrkMast.getSourceLocNo());
-                if (Cools.isEmpty(locMast)) {
-                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛屾簮搴撲綅涓嶅瓨鍦�:"+ wrkMast.getSourceLocNo());
-                }
-                locMast.setLocSts("F");
-                locMast.setModiTime(new Date());
-                locMast.setModiUser(userId);
-                agvLocMastService.updateById(locMast);
+                //鍑哄簱鍙栨秷
+            }else {
+                //婧愬簱浣�
+                String locNo = wrkMast.getSourceLocNo();
+                //鐩爣绔欑偣
+                String devNo = wrkMast.getLocNo();
+                agvLocMastService.updateLocStsByLocNo(locNo,"F");
+                agvBasDevpService.updateLocStsAndBarcodeByDevNo(devNo,"O","");
             }
-            // 鍑哄簱鍙栨秷锛堜慨鏀规簮搴撲綅锛�
-        } else if (wrkMast.getWrkSts() > 20) {
-            locNo = wrkMast.getSourceLocNo();
-            // 鍑哄簱 ===>> F.鍦ㄥ簱
-            if (wrkMast.getIoType() > 100 && wrkMast.getIoType() != 110) {
-                locSts = "F";
-                // 绌烘澘鍑哄簱 ===>> D.绌烘《/绌烘爤鏉�
-            } else if (wrkMast.getIoType() == 110) {
-                locSts = "D";
-                // 搴撲綅杞Щ ===>> D.绌烘《/绌烘爤鏉�
-            } else if (wrkMast.getIoType() == 11) {
-                locSts = wrkMast.getFullPlt().equalsIgnoreCase("N")?"D":"F";
-                // 搴撲綅杞Щ锛氱洰鏍囧簱浣�
-                AgvLocMast locMast = agvLocMastService.selectById(wrkMast.getLocNo());
-                if (Cools.isEmpty(locMast)) {
-                    throw new CoolException("鍙栨秷搴撲綅杞Щ澶辫触锛岀洰鏍囧簱浣嶄笉瀛樺湪:"+ wrkMast.getSourceLocNo());
-                }
-                locMast.setLocSts("O");
-                locMast.setModiTime(new Date());
-                locMast.setModiUser(userId);
-                agvLocMastService.updateById(locMast);
-            }
-        } else {
-            throw new CoolException("褰撳墠宸ヤ綔鐘舵�佹棤娉曞彇娑�");
-        }
-        // 璁㈠崟鍏宠仈
-        List<AgvWrkDetl> wrkDetls = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo());
-        for (AgvWrkDetl wrkDetl : wrkDetls) {
-            if (!Cools.isEmpty(wrkDetl.getOrderNo())) {
-                if (!BaseController.isJSON(wrkDetl.getOrderNo())) {
-                    if (!orderDetlService.decrease(wrkDetl.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), wrkDetl.getAnfme())) {
-                        throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
-                    }
-                } else {
-                    // 璁㈠崟鍚堝苟鍑哄簱
 
-                    //瀹為檯鍙栨秷鐨勫嚭搴撴暟閲�
-                    Double wrkDetlAnfme = wrkDetl.getAnfme();
-                    //璁㈠崟瀹為檯鍑哄簱鏁伴噺
-                    Double orderAnfme;
-
-                    List<OrderDto> orderDtoList = JSON.parseArray(wrkDetl.getOrderNo(), OrderDto.class);
-                    for (OrderDto orderDto : orderDtoList) {
-
-                        if(wrkDetlAnfme > orderDto.getAnfme()){
-                            orderAnfme = orderDto.getAnfme();
-                            wrkDetlAnfme -= orderAnfme;
-                        }else {
-                            orderAnfme = wrkDetlAnfme;
-                        }
-
-                        if (!orderDetlService.decrease(orderDto.getOrderNo(), wrkDetl.getMatnr(), wrkDetl.getBatch(), orderAnfme)) {
-                            throw new CoolException("璁㈠崟鏁版嵁鍥炴粴澶辫触");
-                        }
-                    }
-                }
-            }
-        }
-        // 鍙栨秷鎿嶄綔浜哄憳璁板綍
-        wrkMast.setManuType("鎵嬪姩鍙栨秷");
-        wrkMast.setModiUser(userId);
-        wrkMast.setModiTime(new Date());
-        if (!agvWrkMastService.updateById(wrkMast)) {
-            throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐�");
-        }
-        // 淇濆瓨宸ヤ綔涓绘。鍘嗗彶妗�
-        if (!agvWrkMastLogService.save(wrkMast)) {
-            throw new CoolException("淇濆瓨宸ヤ綔鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
-        }
-        // 鍒犻櫎宸ヤ綔涓绘。
-        boolean wrkMastRes = agvWrkMastService.deleteById(wrkMast);
-
-        if (wrkMast.getIoType() != 10 && wrkMast.getIoType() != 110) {
-            // 淇濆瓨宸ヤ綔鏄庣粏妗e巻鍙叉。
-            if (!agvWrkDetlLogService.save(wrkMast.getWrkNo())) {
-//                throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏鍘嗗彶妗eけ璐�, workNo = " + wrkMast.getWrkNo());
-            }
-            // 鍒犻櫎宸ヤ綔妗f槑缁�
-            boolean wrkDetlRes = agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", workNo));
         }
 
-        // 淇敼搴撲綅鐘舵��
-        AgvLocMast locMast = agvLocMastService.selectById(locNo);
-        if (Cools.isEmpty(locMast)) {
-            throw new CoolException("鍙栨秷宸ヤ綔妗eけ璐ワ紝搴撲綅涓嶅瓨鍦�:"+ locNo);
+        //璁㈠崟鍥炴粴
+        AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectByWrkNo(wrkMast.getWrkNo()).get(0);
+        if(!Cools.isEmpty(agvWrkDetl.getOrderNo())){
+            OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(agvWrkDetl.getOrderNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime());
+            orderDetl.setQty(orderDetl.getQty() - agvWrkDetl.getAnfme());
+            orderDetlService.updateById(orderDetl);
         }
-        locMast.setLocSts(locSts);
-        locMast.setModiTime(new Date());
-        locMast.setModiUser(userId);
-        boolean locMastRes = agvLocMastService.updateById(locMast);
-        if (!wrkMastRes || !locMastRes) {
-            throw new CoolException("淇濆瓨鏁版嵁澶辫触");
+
+        //淇濆瓨宸ヤ綔妗d互鍙婃槑缁�
+        agvWrkMastLogService.save(wrkMast);
+        agvWrkDetlLogService.save(wrkMast.getWrkNo());
+
+        //鍒犻櫎宸ヤ綔妗d互鍙婃槑缁�
+        if(agvWrkMastService.deleteByWrkNo(wrkMast.getWrkNo()) && agvWrkDetlService.deleteByWrkNo(wrkMast.getWrkNo())){
+            throw new CoolException("鍒犻櫎澶辫触锛岃鑱旂郴绠$悊鍛�");
         }
+
     }
 
     /*
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java
index f8cd847..c44a681 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkDetlServiceImpl.java
@@ -1,5 +1,6 @@
 package com.zy.asrs.service.impl;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.zy.asrs.entity.AgvWrkDetl;
 import com.zy.asrs.entity.WrkDetl;
@@ -51,6 +52,7 @@
     */
     @Override
     public List<AgvWrkDetl> selectByWrkNo(Integer wrkNo) {
+
         return this.baseMapper.selectByWrkNo(wrkNo);
     }
 
@@ -88,4 +90,9 @@
         return baseMapper.updateOrderNo(orderNo, wrkNo, matnr, batch) > 0;
     }
 
+    @Override
+    public boolean deleteByWrkNo(int wrkNo) {
+        return this.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo));
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
index 8d90d1d..c8b9ea2 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWrkMastServiceImp.java
@@ -2,6 +2,7 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.AgvWrkMast;
@@ -115,6 +116,11 @@
         return index > 0;
     }
 
+    @Override
+    public boolean deleteByWrkNo(int wrkNo) {
+        return this.delete(new EntityWrapper<AgvWrkMast>().eq("wrk_no", wrkNo));
+    }
+
     private void getContainerMoveParam(List<AgvWrkMast> agvWrkMastList,List<Map<String,String>> positionCodeMapList){
         //寰�瀹瑰櫒鍏ュ満鍙傛暟涓斁鍏ユ簮绔欑偣浣嶇疆
         for(AgvWrkMast agvWrkMast : agvWrkMastList){
diff --git a/src/main/java/com/zy/asrs/service/impl/AllLocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AllLocDetlServiceImpl.java
index 6484393..7a57897 100644
--- a/src/main/java/com/zy/asrs/service/impl/AllLocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AllLocDetlServiceImpl.java
@@ -1,11 +1,18 @@
 package com.zy.asrs.service.impl;
 
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.zy.asrs.entity.AllLocDetl;
 import com.zy.asrs.mapper.AllLocDetlMapper;
 import com.zy.asrs.service.AllLocDetlService;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 @Service
 public class AllLocDetlServiceImpl extends ServiceImpl<AllLocDetlMapper, AllLocDetl> implements AllLocDetlService {
+    @Override
+    public List<AllLocDetl> getByMatnrAndCsocodeAndIsoseq(String matnr, String csocode, String isoseq) {
+        return this.selectList(new EntityWrapper<AllLocDetl>().eq("matnr",matnr).eq("three_code",csocode).eq("dead_time",isoseq));
+    }
 }
diff --git a/src/main/java/com/zy/asrs/service/impl/InventoryVarianceServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/InventoryVarianceServiceImpl.java
new file mode 100644
index 0000000..8dd012b
--- /dev/null
+++ b/src/main/java/com/zy/asrs/service/impl/InventoryVarianceServiceImpl.java
@@ -0,0 +1,11 @@
+package com.zy.asrs.service.impl;
+
+import com.baomidou.mybatisplus.service.impl.ServiceImpl;
+import com.zy.asrs.entity.InventoryVariance;
+import com.zy.asrs.mapper.InventoryVarianceMapper;
+import com.zy.asrs.service.InventoryVarianceService;
+import org.springframework.stereotype.Service;
+
+@Service
+public class InventoryVarianceServiceImpl extends ServiceImpl<InventoryVarianceMapper, InventoryVariance> implements InventoryVarianceService {
+}
diff --git a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
index 46c7a70..7da76c4 100644
--- a/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/LocDetlServiceImpl.java
@@ -9,6 +9,7 @@
 import com.zy.asrs.entity.LocMast;
 import com.zy.asrs.entity.result.StockVo;
 import com.zy.asrs.mapper.LocDetlMapper;
+import com.zy.asrs.service.BasDevpService;
 import com.zy.asrs.service.LocDetlService;
 import com.zy.asrs.service.LocMastService;
 import com.zy.asrs.service.StaDescService;
@@ -28,6 +29,8 @@
     private StaDescService staDescService;
     @Autowired
     private LocMastService locMastService;
+    @Autowired
+    private BasDevpService basDevpService;
 
     @Override
     public Page<LocDetl> getStockOut(Page<LocDetl> page) {
@@ -123,9 +126,10 @@
                 int ioType = anfme > issued ? 103 : 101;
                 anfme = anfme > issued ? issued : anfme;
                 LocDto locDto = new LocDto(locDetl.getLocNo(), locDetl.getMatnr(), locDetl.getMaktx(), locDetl.getBatch(), orderNo, anfme);
-                List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), ioType);
+                //List<Integer> staNos = staDescService.queryOutStaNosByLocNo(locDetl.getLocNo(), ioType);
+                List<Integer> outSite = basDevpService.getAvailableOutSite(101);
 
-                locDto.setStaNos(staNos);
+                locDto.setStaNos(outSite);
                 locDto.setCsocode(csocode);
                 locDto.setIsoseq(isoseq);
                 locDto.setContainerCode(locDetl.getSuppCode());
diff --git a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
index ae757e0..46f1a15 100644
--- a/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/OrderDetlServiceImpl.java
@@ -1,12 +1,14 @@
 package com.zy.asrs.service.impl;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.baomidou.mybatisplus.service.impl.ServiceImpl;
 import com.core.common.Cools;
 import com.zy.asrs.entity.OrderDetl;
 import com.zy.asrs.mapper.OrderDetlMapper;
 import com.zy.asrs.service.OrderDetlService;
+import com.zy.asrs.utils.Utils;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
@@ -104,5 +106,14 @@
 //        return null;
     }
 
+    @Override
+    public OrderDetl selectByOrderNoAndMatnr(String orderNo, String matnr, String csocode, String isoseq) {
+        Wrapper<OrderDetl> wrapper = new EntityWrapper<OrderDetl>().eq("order_no", orderNo).eq("matnr", matnr);
+        Utils.wapperSetCondition(wrapper,"csocode",csocode);
+        Utils.wapperSetCondition(wrapper,"isoseq",isoseq);
+
+        return this.selectOne(wrapper);
+    }
+
 
 }
diff --git a/src/main/java/com/zy/common/service/erp/ErpService.java b/src/main/java/com/zy/common/service/erp/ErpService.java
index 98435aa..75d9605 100644
--- a/src/main/java/com/zy/common/service/erp/ErpService.java
+++ b/src/main/java/com/zy/common/service/erp/ErpService.java
Binary files differ
diff --git a/src/main/java/com/zy/common/service/erp/entity/WlzhVStRd.java b/src/main/java/com/zy/common/service/erp/entity/WlzhVStRd.java
new file mode 100644
index 0000000..f385dcd
--- /dev/null
+++ b/src/main/java/com/zy/common/service/erp/entity/WlzhVStRd.java
@@ -0,0 +1,38 @@
+package com.zy.common.service.erp.entity;
+
+import com.baomidou.mybatisplus.annotations.TableName;
+import lombok.Data;
+
+/*
+ERP涓簱瀛樻瘮瀵硅鍥�
+ */
+@Data
+@TableName("wlzh_v_st_rd")
+public class WlzhVStRd {
+    //鏍哥畻涓讳綋
+    private String account;
+
+    //浠撳簱
+    private String cWhName;
+
+    //瀛樿揣缂栫爜
+    private String cInvCode;
+
+    //瑙勬牸鍨嬪彿
+    private String cInvStd;
+
+    //璁¢噺鍗曚綅
+    private String cComUnitName;
+
+    //閫氱敤鍨嬪彿
+    private String cinvdefine4;
+
+    //鐜板瓨閲�
+    private Double iQuantity;
+
+    //閿�鍞鍗曞彿
+    private String csocode;
+
+    //閿�鍞鍗曡鍙�
+    private String isoseq;
+}
diff --git a/src/main/java/com/zy/common/service/erp/task/ErpScheduler.java b/src/main/java/com/zy/common/service/erp/task/ErpScheduler.java
index c09b5b8..0b38dcd 100644
--- a/src/main/java/com/zy/common/service/erp/task/ErpScheduler.java
+++ b/src/main/java/com/zy/common/service/erp/task/ErpScheduler.java
@@ -2,33 +2,35 @@
 
 import com.core.common.Cools;
 import com.core.common.DateUtils;
-import com.core.common.SnowflakeIdWorker;
 import com.core.exception.CoolException;
-import com.zy.asrs.entity.*;
-import com.zy.asrs.service.*;
+import com.zy.asrs.entity.AllLocDetl;
+import com.zy.asrs.entity.InventoryVariance;
+import com.zy.asrs.entity.Mat;
+import com.zy.asrs.entity.Tag;
+import com.zy.asrs.service.AllLocDetlService;
+import com.zy.asrs.service.InventoryVarianceService;
+import com.zy.asrs.service.MatService;
+import com.zy.asrs.service.TagService;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.common.service.erp.ErpService;
-import com.zy.common.service.erp.dto.VoucherDto;
 import com.zy.common.service.erp.entity.Goods;
-import com.zy.common.service.erp.entity.Voucher;
-import com.zy.common.service.erp.entity.VoucherDetail;
+import com.zy.common.service.erp.entity.WlzhVStRd;
 import lombok.Synchronized;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 /**
  * erp浠诲姟鎺у埗鍣�
  * Created by vincent on 2020/11/27
  */
 @Slf4j
-//@Component
+@Component
 public class ErpScheduler extends AbstractHandler<Exception> {
 
     @Autowired
@@ -38,15 +40,11 @@
     @Autowired
     private MatService matService;
     @Autowired
-    private OrderService orderService;
+    private AllLocDetlService allLocDetlService;
     @Autowired
-    private DocTypeService docTypeService;
-    @Autowired
-    private OrderDetlService orderDetlService;
-    @Autowired
-    private SnowflakeIdWorker snowflakeIdWorker;
+    private InventoryVarianceService inventoryVarianceService;
 
-    @Scheduled(cron = "0/5 * * * * ? ")
+    //@Scheduled(cron = "0/5 * * * * ? ")
     @Synchronized
     @Transactional
     public synchronized void syncMat() {
@@ -85,126 +83,53 @@
         }
     }
 
-    @Scheduled(cron = "0/5 * * * * ? ")
+    //@Scheduled(cron = "0/5 * * * * ? ")
     @Synchronized
     @Transactional
-    public synchronized void syncOrder() {
-        List<VoucherDto> list = erpService.selectOrder(0);
-        for (VoucherDto dto : list) {
-            Voucher voucher = dto.getVoucher();
-            Order order = orderService.selectByNo(voucher.getVoucherID());
-            if (Cools.isEmpty(order)) {
+    public void syncLocDetl(){
 
-                String regEx = "[^0-9]";
-                Pattern compile = Pattern.compile(regEx);
-                Matcher matcher = compile.matcher(voucher.getMT());
-                String docTypeVal = matcher.replaceAll("").trim();
+        List<InventoryVariance> inventoryVariances = new ArrayList<>();
 
-                DocType docType = docTypeService.selectOrAdd(docTypeVal, null);
-                Date now = new Date();
-                // 鍗曟嵁涓绘。
-                order = new Order(
-                        String.valueOf(snowflakeIdWorker.nextId()),    // 缂栧彿[闈炵┖]
-                        voucher.getVoucherID(),    // 璁㈠崟缂栧彿
-                        DateUtils.convert(now),    // 鍗曟嵁鏃ユ湡
-                        docType.getDocId(),    // 鍗曟嵁绫诲瀷
-                        null,    // 椤圭洰缂栧彿
-                        null,    //
-                        null,    // 璋冩嫧椤圭洰缂栧彿
-                        voucher.getBatch(),    // 鍒濆绁ㄦ嵁鍙�
-                        voucher.getMaterialNO(),    // 绁ㄦ嵁鍙�
-                        null,    // 瀹㈡埛缂栧彿
-                        voucher.getCustomer(),    // 瀹㈡埛
-                        voucher.getCenterID(),    // 鑱旂郴鏂瑰紡
-                        voucher.getPlant(),    // 鎿嶄綔浜哄憳
-                        voucher.getTotalNum(),    // 鍚堣閲戦  ********************
-                        null,    // 浼樻儬鐜�
-                        null,    // 浼樻儬閲戦
-                        null,    // 閿�鍞垨閲囪喘璐圭敤鍚堣
-                        null,    // 瀹炰粯閲戦
-                        null,    // 浠樻绫诲瀷
-                        voucher.getLoc(),    // 涓氬姟鍛�
-                        voucher.getTotalCount(),    // 缁撶畻澶╂暟  ********************
-                        null,    // 閭垂鏀粯绫诲瀷
-                        voucher.getExpectedWeight(),    // 閭垂
-                        null,    // 浠樻鏃堕棿
-                        null,    // 鍙戣揣鏃堕棿
-                        null,    // 鐗╂祦鍚嶇О
-                        null,    // 鐗╂祦鍗曞彿
-                        1L,    // 璁㈠崟鐘舵��
-                        1,    // 鐘舵��
-                        9527L,    // 娣诲姞浜哄憳
-                        now,    // 娣诲姞鏃堕棿
-                        9527L,    // 淇敼浜哄憳
-                        now,    // 淇敼鏃堕棿
-                        null    // 澶囨敞
-                );
-                if (!orderService.insert(order)) {
-                    throw new CoolException(order.getOrderNo() + "鐢熸垚鍗曟嵁涓绘。澶辫触锛岃鑱旂郴绠$悊鍛�");
-                }
-
-                Mat mat = matService.selectByMatnr(voucher.getMaterialNO());
-                if (mat == null) {
-                    throw new CoolException(voucher.getMaterialNO() + "鐗╂枡鍙蜂笉瀛樺湪");
-                }
-
-                // 绻冲韩鍠�
-                if (docType.getPakin() == 1) {
-                    for (VoucherDetail detail : dto.getDetails()) {
-                        OrderDetl orderDetl = new OrderDetl();
-                        orderDetl.sync(mat);
-
-                        orderDetl.setBatch(detail.getBarcode());
-                        orderDetl.setAnfme(mat.getWeight());
-
-                        orderDetl.setOrderId(order.getId());
-                        orderDetl.setOrderNo(order.getOrderNo());
-                        orderDetl.setCreateBy(9527L);
-                        orderDetl.setCreateTime(now);
-                        orderDetl.setUpdateBy(9527L);
-                        orderDetl.setUpdateTime(now);
-                        orderDetl.setStatus(1);
-                        orderDetl.setQty(0.0D);
-                        if (!orderDetlService.insert(orderDetl)) {
-                            throw new CoolException(order.getOrderNo() + "鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
-                        }
-                    }
-                } else {
-                    OrderDetl orderDetl = new OrderDetl();
-                    orderDetl.sync(mat);
-                    StringBuilder sb = new StringBuilder();
-                    if (!Cools.isEmpty(dto.getDetails())) {
-                        for (VoucherDetail detail : dto.getDetails()) {
-                            sb.append(detail.getBarcode()).append(",");
-                        }
-                        orderDetl.setBatch(sb.toString());
-                    }
-                    orderDetl.setAnfme(voucher.getExpectedWeight());
-                    orderDetl.setOrderId(order.getId());
-                    orderDetl.setOrderNo(order.getOrderNo());
-                    orderDetl.setCreateBy(9527L);
-                    orderDetl.setCreateTime(now);
-                    orderDetl.setUpdateBy(9527L);
-                    orderDetl.setUpdateTime(now);
-                    orderDetl.setStatus(1);
-                    orderDetl.setQty(0.0D);
-                    if (!orderDetlService.insert(orderDetl)) {
-                        throw new CoolException(order.getOrderNo() + "鐢熸垚鍗曟嵁鏄庣粏澶辫触锛岃鑱旂郴绠$悊鍛�");
-                    }
-                }
-
-                // erp 鍚屾
-                int state = 1;
-                if (!erpService.updateStateForVoucher(voucher.getVoucherID(), state)) {
-                    throw new CoolException(voucher.getVoucherID() + "璁㈠崟淇敼State涓�"+state+"澶辫触");
-                } else {
-                    erpService.updateTimeForVoucherDetail(voucher.getVoucherID());
-                }
-
-            } else {
-                log.warn("{}璁㈠崟宸插瓨鍦�", voucher.getVoucherID());
+        int pageSize = 500;
+        int pageNumber = 0;
+        while (true){
+            List<WlzhVStRd> wlzhVStRds = erpService.selectPage(pageSize, pageNumber);
+            if(wlzhVStRds.size() < pageSize){
+                break;
             }
+
+            //ERP搴撳瓨涓庣珛搴撳簱瀛樻瘮瀵�
+            compileStock(wlzhVStRds,inventoryVariances);
+            pageNumber ++;
+
         }
+
+        inventoryVarianceService.insertBatch(inventoryVariances);
+
     }
 
+    private void compileStock(List<WlzhVStRd> wlzhVStRds, List<InventoryVariance> inventoryVariances){
+        wlzhVStRds.forEach(wlzhVStRd -> {
+            String matnr = wlzhVStRd.getCInvCode();
+            String csocode = wlzhVStRd.getCsocode();
+            String isoseq = wlzhVStRd.getIsoseq();
+            Double iQuantity = wlzhVStRd.getIQuantity();
+
+            Double anfme = 0.0;
+
+            List<AllLocDetl> allLocDetlList = allLocDetlService.getByMatnrAndCsocodeAndIsoseq(matnr, csocode, isoseq);
+            for(AllLocDetl allLocDetl : allLocDetlList){
+                anfme += allLocDetl.getAnfme();
+            }
+
+            int compare = Double.compare(iQuantity, anfme);
+            if(compare != 0){
+                InventoryVariance inventoryVarianceParam = new InventoryVariance(matnr,csocode,isoseq,iQuantity,anfme);
+                inventoryVariances.add(inventoryVarianceParam);
+            }
+
+        });
+    }
+
+
 }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 330352b..39c2117 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -10,9 +10,9 @@
     enabled: false
   datasource:
     driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    url: jdbc:sqlserver://localhost:1433;databasename=tzskasrs
+    #url: jdbc:sqlserver://localhost:1433;databasename=tzskasrs
     #url: jdbc:sqlserver://192.168.4.15:1433;databasename=tzskasrs
-    #url: jdbc:sqlserver://10.10.10.40:1433;databasename=tzskasrs
+    url: jdbc:sqlserver://10.10.10.40:1433;databasename=tzskasrs
     username: sa
     password: sa@123
   mvc:
@@ -68,9 +68,9 @@
 erp:
   db:
     driver_class_name: com.microsoft.sqlserver.jdbc.SQLServerDriver
-    ur: jdbc:sqlserver://10.20.46.23:1433;databasename=POY_ASRS
-    username: poy-asrs
-    password: Poy@2022
+    ur: jdbc:sqlserver://192.168.1.55:1433;databasename=ufdata_998_2022
+    username: WMS
+    password: Wlzh44338
 
 agv:
 #  url: localhost:8080
diff --git a/src/main/resources/mapper/ViewStayTimeMapper.xml b/src/main/resources/mapper/ViewStayTimeMapper.xml
index b4fbba3..7a0e299 100644
--- a/src/main/resources/mapper/ViewStayTimeMapper.xml
+++ b/src/main/resources/mapper/ViewStayTimeMapper.xml
@@ -178,5 +178,4 @@
 				) t
 		) a
 </select>
-
 </mapper>

--
Gitblit v1.9.1