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