From 6e24a8fe9a57687842413933ce891bebb5693649 Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期五, 17 十一月 2023 16:52:52 +0800 Subject: [PATCH] Merge branch 'tzskasrs' of http://47.97.1.152:5880/r/zy-asrs into tzskasrs --- src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 153 +++++++++++++++++++++++++++++++++----------------- 1 files changed, 101 insertions(+), 52 deletions(-) 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 8084635..b22bdd1 100644 --- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java @@ -3,14 +3,15 @@ import com.alibaba.fastjson.JSONArray; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; -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.core.exception.CoolException; +import com.zy.asrs.entity.*; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; +import lombok.Synchronized; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -18,27 +19,33 @@ import java.util.List; import java.util.Map; +@Slf4j @Service public class AgvWrkMastHandler extends AbstractHandler<String> { + @Value("${agvBasDev.maxWorkNum}") + private int maxWrokNum; + @Autowired - AgvWrkMastService agvWrkMastService; + private AgvWrkMastService agvWrkMastService; @Autowired - AgvLocMastService agvLocMastService; + private AgvLocMastService agvLocMastService; @Autowired - AgvLocDetlService agvLocDetlService; + private AgvLocDetlService agvLocDetlService; @Autowired - AgvWrkMastLogService agvWrkMastLogService; + private AgvWrkMastLogService agvWrkMastLogService; @Autowired - AgvWrkDetlService agvWrkDetlService; + private AgvWrkDetlService agvWrkDetlService; @Autowired - AgvWrkDetlLogService agvWrkDetlLogService; + private AgvWrkDetlLogService agvWrkDetlLogService; @Autowired - AgvWaitPakinService agvWaitPakinService; + private AgvWaitPakinService agvWaitPakinService; @Autowired - AgvWaitPakinLogService agvWaitPakinLogService; + private AgvWaitPakinLogService agvWaitPakinLogService; @Autowired - OrderService orderService; + private OrderService orderService; + @Autowired + private AgvBasDevpService agvBasDevpService; @Transactional public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) { @@ -46,28 +53,44 @@ String barcode = agvWrkMast.getBarcode(); String orderNo = getOrderNoByWrkNo(wrkNo); - //淇敼宸ヤ綔妗g姸鎬佷负206.搴撳瓨鏇存柊瀹屾垚 - agvWrkMast.setWrkSts(206L); + //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚 + agvWrkMast.setWrkSts(207L); agvWrkMastService.updateById(agvWrkMast); - //淇敼鐩爣搴撲綅鐘舵�佷负F.鍦ㄥ簱 - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F"); + if(agvWrkMast.getIoType() == 10){ + // 绌烘澘鍏ュ簱 璁剧疆搴撲綅鐘舵�佷负D.绌烘《/绌烘爤鏉� + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode()); + }else{ + //淇敼鐩爣搴撲綅鐘舵�佷负F.鍦ㄥ簱 + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode()); + } //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� - agvWrkMastLogService.save(wrkNo); + agvWrkMastLogService.save(agvWrkMast); //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗� agvWrkDetlLogService.save(wrkNo); + //绫诲瀷涓哄叆搴撴椂 + if(agvWrkMast.getIoType() == 1){ + //鏇存柊鐩爣搴撲綅鏄庣粏 + log.info("鏇存柊鐩爣搴撲綅鏄庣粏 agvWrkMast.getLocNo(): " + agvWrkMast.getLocNo() + ", wrkNo: " + wrkNo); + agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo); + //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗� + boolean save = agvWaitPakinLogService.save(barcode); + //鍒犻櫎鍏ュ簱閫氱煡妗� + log.info("鍒犻櫎鍏ュ簱閫氱煡妗� supp_code: " + barcode); + agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("supp_code",barcode)); + } + //绫诲瀷涓哄簱浣嶇Щ杞椂 + if(agvWrkMast.getIoType() == 11){ + //鏇存柊搴撳瓨鏄庣粏 + agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); + //淇敼婧愬簱浣嶇姸鎬佷负O + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O",""); + } + //鍒犻櫎AGV宸ヤ綔妗� agvWrkMastService.deleteById(wrkNo); //鍒犻櫎AGV宸ヤ綔鏄庣粏妗� agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); - if(agvWrkMast.getIoType() == 1){ - //鏇存柊鐩爣搴撲綅鏄庣粏 - agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),wrkNo); - //鐢熸垚鍏ュ簱閫氱煡鍘嗗彶妗� - agvWaitPakinLogService.save(barcode); - //鍒犻櫎鍏ュ簱閫氱煡妗� - agvWaitPakinService.delete(new EntityWrapper<AgvWaitPakin>().eq("zpallet",barcode)); - } if(!isJSON(orderNo)){ //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚 orderService.checkComplete(orderNo); @@ -82,19 +105,23 @@ return SUCCESS; } + @Transactional public ReturnT<String> completedCarryWrk(AgvWrkMast agvWrkMast) { int wrkNo = agvWrkMast.getWrkNo(); String orderNo = getOrderNoByWrkNo(wrkNo); - //淇敼宸ヤ綔妗g姸鎬佷负206.搴撳瓨鏇存柊瀹屾垚 - agvWrkMast.setWrkSts(206L); + //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚 + agvWrkMast.setWrkSts(207L); agvWrkMastService.updateById(agvWrkMast); //淇敼婧愬簱浣嶇姸鎬佷负O - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O"); - //鏇存柊鐩爣搴撲綅鏄庣粏 - agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O",""); + if(agvWrkMast.getIoType() == 101){ + //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁� + agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); + } + //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� - agvWrkMastLogService.save(wrkNo); + agvWrkMastLogService.save(agvWrkMast); //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗� agvWrkDetlLogService.save(wrkNo); //鍒犻櫎AGV宸ヤ綔妗� @@ -117,26 +144,35 @@ @Transactional public ReturnT<String> startPutWayWrk(List<AgvWrkMast> agvWrkMastList) throws IOException { - int startWwrkCode = agvWrkMastService.startWrk(agvWrkMastList,"putaway"); + //涓嬪彂浠诲姟 + int startWrkCode = agvWrkMastService.startWrk(agvWrkMastList,"putaway"); + if(startWrkCode != 0){ + throw new CoolException("浠诲姟涓嬪彂澶辫触"); + } - int code = agvWrkMastService.containerMove(agvWrkMastList); + //涓嬪彂瀹瑰櫒鍏ュ満鎸囦护 锛堢紦瀛樿揣鏋讹級 + int code = agvWrkMastService.containerMoveIn(agvWrkMastList); if(code == 0){ - agvWrkMastList.forEach(agvWrkMast -> { + for(AgvWrkMast agvWrkMast : agvWrkMastList){ + //涓嬪彂瀹瑰櫒杈惧埌閫氱煡 锛堣緭閫佺嚎锛� + if("Y".equals(agvWrkMast.getMk())){ + int containerArrivedCode = agvWrkMastService.containerArrived(agvWrkMast); + if(containerArrivedCode != 0){ + log.error("瀹瑰櫒鍒拌揪鎸囦护涓嬪彂澶辫触"); + continue; + } + } //202.RCS鍙栬揣涓� - agvWrkMast.setWrkSts((long)202); + agvWrkMast.setWrkSts(202L); agvWrkMastService.updateById(agvWrkMast); if(agvWrkMast.getIoType() == 1){ //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y"); } - - }); - //agvWrkMastService.updateBatchById(agvWrkMastList); - + } return SUCCESS; } - return FAIL; } @@ -146,7 +182,7 @@ if(code == 0){ agvWrkMastList.forEach(agvWrkMast -> { //202.RCS鍙栬揣涓� - agvWrkMast.setWrkSts((long)202); + agvWrkMast.setWrkSts(202L); agvWrkMastService.updateById(agvWrkMast); }); //agvWrkMastService.updateBatchById(agvWrkMastList); @@ -157,18 +193,31 @@ return FAIL; } - private String getOrderNoByWrkNo(int wrkNo){ - AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); - return agvWrkDetl.getOrderNo(); + @Synchronized + @Transactional + public ReturnT<String> dealWatiWrk(List<AgvWrkMast> agvWrkMastList) throws IOException { + + agvWrkMastList.forEach(agvWrkMast -> { + //鏌ヨ璇ョ珯鐐规墍鏈夋殏瀛樹綅鍦ㄥ伐浣滄。涓嚭鐜扮殑娆℃暟 + List<Map<String, Object>> devNoMaps = agvBasDevpService.selectDevNoAndNumBystationCode(agvWrkMast.getLocNo()); + //鍙栫涓�涓殏瀛樹綅锛屽苟鏌ヨ鍏舵鏁颁笌閰嶇疆鐨勬鏁板仛姣旇緝 + Map<String, Object> devNoMap = devNoMaps.get(0); + if((int)devNoMap.get("num") < maxWrokNum){ + agvWrkMast.setLocNo(devNoMap.get("dev_no").toString()); + agvWrkMastService.updateById(agvWrkMast); + log.info("after锛�" + devNoMap.toString() + ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo()); + } + }); + + return SUCCESS; } - public static void main(String[] args) { - String order = "[{\"anfme\":50.0,\"orderNo\":\"CS110011001111\"},{\"anfme\":50.0,\"orderNo\":\"CS110011001110\"}]"; - List<Map> maps = JSONArray.parseArray(order, Map.class); - maps.forEach(map -> { - Object orderNo = map.get("orderNo"); - System.out.println(orderNo ); - }); + private String getOrderNoByWrkNo(int wrkNo){ + AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); + if(Cools.isEmpty(agvWrkDetl)){ + return null; + } + return agvWrkDetl.getOrderNo(); } private boolean isJSON(String str) { -- Gitblit v1.9.1