From 2d836c8b6a270b7007e1a2e1e9962cb9dcd8b6f6 Mon Sep 17 00:00:00 2001
From: zyx <zyx123456>
Date: 星期一, 01 四月 2024 14:47:36 +0800
Subject: [PATCH] 入库接驳位空板自动出库 全班出库后自动空板入库

---
 src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java           |   48 ++++++++++++++++
 src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java     |   19 +++++-
 src/main/java/com/zy/common/entity/Parameter.java                 |   11 +++
 src/main/java/com/zy/asrs/controller/AgvMobileController.java     |    3 
 src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java    |   22 +++----
 src/main/java/com/zy/asrs/controller/AgvOpenController.java       |    8 +-
 src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java |    7 ++
 src/main/java/com/zy/asrs/controller/AgvBasDevpController.java    |   49 +++++++++-------
 src/main/java/com/zy/asrs/service/AgvWorkService.java             |    2 
 src/main/java/com/zy/asrs/service/AgvLocMastService.java          |    2 
 10 files changed, 127 insertions(+), 44 deletions(-)

diff --git a/src/main/java/com/zy/asrs/controller/AgvBasDevpController.java b/src/main/java/com/zy/asrs/controller/AgvBasDevpController.java
index 66f5101..1d493bc 100644
--- a/src/main/java/com/zy/asrs/controller/AgvBasDevpController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvBasDevpController.java
@@ -6,7 +6,10 @@
 import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.core.annotations.ManagerAuth;
-import com.core.common.*;
+import com.core.common.BaseRes;
+import com.core.common.Cools;
+import com.core.common.DateUtils;
+import com.core.common.R;
 import com.core.exception.CoolException;
 import com.zy.asrs.entity.*;
 import com.zy.asrs.entity.param.LocMastInitParam;
@@ -15,7 +18,6 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
-import java.io.IOException;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -238,26 +240,31 @@
 //            return agvWrkMast;
 //        }).collect(Collectors.toList());
 
-        try {
-           int code = agvWrkMastService.containerMoveOut(agvWrkMastList);
-           if(code == 0){
-               //灏嗗伐浣滃厷鐘舵�佹敼涓哄鍣ㄧ鍦�
-               agvWrkMastList.forEach(agvWrkMast -> {
-                   agvWrkMast.setWrkSts(206L);
-                   agvWrkMastService.updateById(agvWrkMast);
-               });
-               //淇敼绔欑偣鐘舵��
-//               devNos.forEach(devNo -> {
-//                   AgvBasDevp agvBasDevp = agvBasDevpService.selectById(devNo);
-//                   agvBasDevp.setBarcode("");
-//                   agvBasDevp.setLocSts("O");
-//                   agvBasDevpService.updateById(agvBasDevp);
+        agvWrkMastList.forEach(agvWrkMast -> {
+            agvWrkMast.setWrkSts(206L);
+            agvWrkMastService.updateById(agvWrkMast);
+        });
+
+//        try {
+//           int code = agvWrkMastService.containerMoveOut(agvWrkMastList);
+//           if(code == 0){
+//               //灏嗗伐浣滃厷鐘舵�佹敼涓哄鍣ㄧ鍦�
+//               agvWrkMastList.forEach(agvWrkMast -> {
+//                   agvWrkMast.setWrkSts(206L);
+//                   agvWrkMastService.updateById(agvWrkMast);
 //               });
-           }
-        } catch (IOException e) {
-            e.printStackTrace();
-            return R.error("瀹瑰櫒绂诲満澶辫触");
-        }
+//               //淇敼绔欑偣鐘舵��
+////               devNos.forEach(devNo -> {
+////                   AgvBasDevp agvBasDevp = agvBasDevpService.selectById(devNo);
+////                   agvBasDevp.setBarcode("");
+////                   agvBasDevp.setLocSts("O");
+////                   agvBasDevpService.updateById(agvBasDevp);
+////               });
+//           }
+//        } catch (IOException e) {
+//            e.printStackTrace();
+//            return R.error("瀹瑰櫒绂诲満澶辫触");
+//        }
 
         return R.ok("瀹瑰櫒绂诲満鎴愬姛");
     }
diff --git a/src/main/java/com/zy/asrs/controller/AgvMobileController.java b/src/main/java/com/zy/asrs/controller/AgvMobileController.java
index 69e0bb0..23dd1e1 100644
--- a/src/main/java/com/zy/asrs/controller/AgvMobileController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvMobileController.java
@@ -105,7 +105,7 @@
 
         for (AgvMobileStartParam.Pda pda : params.getPad()) {
             pda.setContainerType(Short.valueOf(pda.getContainerCode().substring(0,2)));
-            workService.emptyPlateIn(pda.getDevNo(),pda.getContainerCode(),pda.getContainerType(), getUserId());
+            workService.emptyPlateIn(pda.getDevNo(),pda.getContainerCode(),pda.getContainerType(), getUserId(),false);
         }
 
         return R.ok();
@@ -138,4 +138,5 @@
 
     }
 
+
 }
diff --git a/src/main/java/com/zy/asrs/controller/AgvOpenController.java b/src/main/java/com/zy/asrs/controller/AgvOpenController.java
index 55492df..89fb7e1 100644
--- a/src/main/java/com/zy/asrs/controller/AgvOpenController.java
+++ b/src/main/java/com/zy/asrs/controller/AgvOpenController.java
@@ -112,17 +112,13 @@
 enum AgvTask{
 
     /**
-     * 涓婃姤浠诲姟鐘舵��
+     * 涓婃姤浠诲姟瀹屾垚
      */
     end{
         @Transactional
         public void success(AgvWrkMast agvWrkMast, AgvTaskCallBackParam param) {
             //淇敼AGV宸ヤ綔妗g殑宸ヤ綔鐘舵�佷负205.宸ヤ綔瀹屾垚
             agvWrkMast.setWrkSts(205L);
-
-            //agvWrkMast.setLocNo(param.getLocationCode());
-            agvWrkMastService.updateById(agvWrkMast);
-            //agvWrkMastService.updateWrkStsByWrkNo(agvWrkMast.getWrkNo(),205);
 
             //鍑哄簱浠诲姟 101.鍑哄簱 || 103.鎷f枡鍑哄簱 || 107.鐩樼偣鍑哄簱
             if(agvWrkMast.getIoType() == 101 || agvWrkMast.getIoType() == 103 || agvWrkMast.getIoType() == 107){
@@ -132,7 +128,9 @@
             //鍑哄簱浠诲姟 110.绌烘澘鍑哄簱
             if(agvWrkMast.getIoType() == 110){
                 agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue());
+                agvWrkMast.setWrkSts(206L);
             }
+            agvWrkMastService.updateById(agvWrkMast);
         }
     },
     /**
diff --git a/src/main/java/com/zy/asrs/service/AgvLocMastService.java b/src/main/java/com/zy/asrs/service/AgvLocMastService.java
index 04ce60b..6745ff3 100644
--- a/src/main/java/com/zy/asrs/service/AgvLocMastService.java
+++ b/src/main/java/com/zy/asrs/service/AgvLocMastService.java
@@ -26,6 +26,8 @@
 
     AgvLocMast selectEmptyZpallet(int type);
 
+    AgvLocMast selectEmptyZpalletByLocType1(int type);
+
     public List<String> queryContainerTypeByLocType1(Short locType1);
 
 }
diff --git a/src/main/java/com/zy/asrs/service/AgvWorkService.java b/src/main/java/com/zy/asrs/service/AgvWorkService.java
index 6946beb..8591a4a 100644
--- a/src/main/java/com/zy/asrs/service/AgvWorkService.java
+++ b/src/main/java/com/zy/asrs/service/AgvWorkService.java
@@ -39,7 +39,7 @@
     /*
     绌烘澘鍏ュ簱
      */
-    String emptyPlateIn(String station,String containerCode,Short containerType, Long userId);
+    String emptyPlateIn(String station,String containerCode,Short containerType, Long userId, boolean emptyAutoIn);
 
     void emptyPlateOut(String station, int containerType, Long userId);
 
diff --git a/src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java
index a0485fc..66cf080 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvLocMastServiceImpl.java
@@ -243,6 +243,13 @@
     }
 
     @Override
+    public AgvLocMast selectEmptyZpalletByLocType1(int type) {
+
+        return this.selectOne(new EntityWrapper<AgvLocMast>().eq("loc_sts","D").eq("loc_type1",type));
+
+    }
+
+    @Override
     public List<String> queryContainerTypeByLocType1(Short locType1) {
         return this.baseMapper.queryContainerTypeByLocType1(locType1);
     }
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 f49c996..b6b41c6 100644
--- a/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/AgvWorkServiceImpl.java
@@ -316,27 +316,19 @@
     鍏ュ簱
      */
     @Transactional
-    public String emptyPlateIn(String station,String containerCode,Short containerType, Long userId) {
+    public String emptyPlateIn(String station,String containerCode,Short containerType, Long userId, boolean emptyAutoIn) {
 
         Date now = new Date();
-        // 婧愮珯鐐圭姸鎬佹娴�
-        //AgvBasDevp agvBasDevp = agvBasDevpService.selectByDevNo(station);
+
         AgvBasDevp agvBasDevp = agvBasDevpService.selectById(station);
 
-        //鍒濆瀹氫箟涓虹┖鏉垮叆搴撶被鍨�
-        int ioType = 10;
-
-//        if(Cools.isEmpty(agvBasDevp.getBarcode())){
-//            agvBasDevp.setBarcode(containerCode);
-//        }
-
-        if(!Cools.eq(agvBasDevp.getBarcode(),containerCode) && !agvBasDevp.getLocSts().equals("O")){
+        if(!Cools.eq(agvBasDevp.getBarcode(),containerCode) && !agvBasDevp.getLocSts().equals("O") && !emptyAutoIn){
             throw new CoolException("褰撳墠宸ヤ綔浣嶇姸鎬佷负" + agvBasDevp.getLocSts()+",鏃犳硶杩涜绌烘澘鍏ュ簱");
         }
 
         //鏌ヨ宸ヤ綔妗�
         AgvWrkMast agvWrkMast = agvWrkMastService.selectByContainerCode(containerCode);
-        if(!Cools.isEmpty(agvWrkMast)){
+        if(!Cools.isEmpty(agvWrkMast) && !emptyAutoIn){
             throw new CoolException("褰撳墠瀹瑰櫒宸叉湁鍏ュ簱浠诲姟锛屾棤娉曡繘琛屽叆搴�");
         }
 
@@ -388,6 +380,12 @@
 
         //瀵绘壘鐩稿簲绫诲瀷鐨勭┖鎵樼洏
         AgvLocMast agvLocMast = agvLocMastService.selectEmptyZpallet(containerType);
+        if(containerType == 0){
+            //绌烘澘鑷姩鍑哄簱锛屾牴鎹珯鐐圭被鍨嬮�夋嫨
+            agvLocMastService.selectEmptyZpalletByLocType1(agvBasDevp.getLocType1());
+
+        }
+
         if (Cools.isEmpty(agvLocMast)) {
             throw new CoolException("鏆傛棤褰撳墠鍑哄簱绔欑偣绫诲瀷鐨勭┖鎵樼洏锛�");
         }
diff --git a/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java b/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
index 525c730..1acf9ef 100644
--- a/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AgvWrkMastScheduler.java
@@ -1,19 +1,23 @@
 package com.zy.asrs.task;
 
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
+import com.baomidou.mybatisplus.mapper.Wrapper;
 import com.baomidou.mybatisplus.plugins.Page;
 import com.core.common.Cools;
+import com.zy.asrs.entity.AgvBasDevp;
 import com.zy.asrs.entity.AgvWrkMast;
 import com.zy.asrs.service.AgvBasDevpService;
 import com.zy.asrs.service.AgvWrkMastService;
 import com.zy.asrs.task.core.ReturnT;
 import com.zy.asrs.task.handler.AgvWrkMastHandler;
+import com.zy.common.entity.Parameter;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.scheduling.annotation.Scheduled;
 import org.springframework.stereotype.Component;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -137,4 +141,48 @@
             }
         }
     }
+
+    /*
+    鑷姩鐢熸垚绌烘澘鍑哄簱浠诲姟
+     */
+    //@Scheduled(cron = "0/10 * * * * ? ")
+    public void autoEmptyOut(){
+        boolean packageEmptyAutoOUt = Cools.eq("Y",Parameter.get().getPackageEmptyAutoOUt());
+        boolean mateEmptyAutoOut = Cools.eq("Y",Parameter.get().getMateEmptyAutoOut());
+        boolean boxEmptyAutoOut = Cools.eq("Y",Parameter.get().getBoxEmptyAutoOut());
+
+        if(!packageEmptyAutoOUt && !mateEmptyAutoOut && !boxEmptyAutoOut){
+            return;
+        }
+
+        List<Integer> locType1Condition = new ArrayList<>();
+        if(packageEmptyAutoOUt){
+            locType1Condition.add(1);
+        }
+        if(mateEmptyAutoOut){
+            locType1Condition.add(2);
+        }
+        if(boxEmptyAutoOut){
+            locType1Condition.add(3);
+        }
+
+        //鎵惧嚭闇�瑕佽ˉ鏂欑殑绔欑偣
+        Wrapper<AgvBasDevp> wrapper = new EntityWrapper<AgvBasDevp>()
+                .eq("in_enable", "Y")
+                .eq("loc_sts", "O")
+                .in("loc_type1", locType1Condition);
+
+        List<AgvBasDevp> agvBasDevpList = agvBasDevpService.selectList(wrapper);
+        for (AgvBasDevp agvBasDevp : agvBasDevpList){
+            try {
+                agvWrkMastHandler.autoEmptyOut(agvBasDevp);
+            }catch (Exception e){
+                log.error(e.getMessage());
+                e.printStackTrace();
+            }
+
+        }
+
+    }
+
 }
diff --git a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
index 94cae13..15a1e99 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java
@@ -4,10 +4,7 @@
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.core.common.Cools;
 import com.core.exception.CoolException;
-import com.zy.asrs.entity.AgvLocDetl;
-import com.zy.asrs.entity.AgvWaitPakin;
-import com.zy.asrs.entity.AgvWrkDetl;
-import com.zy.asrs.entity.AgvWrkMast;
+import com.zy.asrs.entity.*;
 import com.zy.asrs.service.*;
 import com.zy.asrs.task.AbstractHandler;
 import com.zy.asrs.task.core.ReturnT;
@@ -50,6 +47,8 @@
     private OrderService orderService;
     @Autowired
     private AgvBasDevpService agvBasDevpService;
+    @Autowired
+    private AgvWorkService agvWorkService;
 
     @Transactional
     public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) {
@@ -118,6 +117,9 @@
         if(agvWrkMast.getIoType() == 101){
             //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁�
             agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo()));
+            //鐢熸垚绌烘澘鍏ュ簱浠诲姟
+            Short containerType = Short.valueOf(agvWrkMast.getBarcode().substring(0, 2));
+            agvWorkService.emptyPlateIn(agvWrkMast.getLocNo(),agvWrkMast.getBarcode(),containerType,9527L,true);
         }
 
         //鐢熸垚AGV宸ヤ綔鍘嗗彶妗�
@@ -203,6 +205,15 @@
         return SUCCESS;
     }
 
+    @Synchronized
+    @Transactional
+    public ReturnT<String> autoEmptyOut(AgvBasDevp agvBasDevp) {
+
+        agvWorkService.emptyPlateOut(agvBasDevp.getDevNo(),0,9527L);
+
+        return SUCCESS;
+    }
+
     private String getOrderNoByWrkNo(int wrkNo){
         AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo));
         if(Cools.isEmpty(agvWrkDetl)){
diff --git a/src/main/java/com/zy/common/entity/Parameter.java b/src/main/java/com/zy/common/entity/Parameter.java
index 32a1ae1..fe66c2a 100644
--- a/src/main/java/com/zy/common/entity/Parameter.java
+++ b/src/main/java/com/zy/common/entity/Parameter.java
@@ -66,4 +66,15 @@
     //鏈烘鑷傝嚜鍔ㄨˉ璐у紑鍏�
     private String autoReplenishment;
 
+    //绌烘澘鑷姩鍑哄簱-鍖呰
+    private String packageEmptyAutoOUt;
+
+    //绌烘澘鑷姩鍑哄簱-鍘熸潗鏂�
+    private String mateEmptyAutoOut;
+
+    //绌烘澘鑷姩鍑哄簱-绠卞3
+    private String boxEmptyAutoOut;
+
+
+
 }

--
Gitblit v1.9.1