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