From a48548b110cc1c80e5ee5e5eedeca8bb31e3f295 Mon Sep 17 00:00:00 2001 From: whycq <10027870+whycq@user.noreply.gitee.com> Date: 星期五, 31 五月 2024 19:02:30 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 596 +++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 470 insertions(+), 126 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 c19448b..688fa4f 100644 --- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java @@ -3,174 +3,468 @@ 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.common.R; +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; import java.io.IOException; +import java.util.Date; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +@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; + @Autowired + private AgvWorkService agvWorkService; @Transactional public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) { - int wrkNo = agvWrkMast.getWrkNo(); - String barcode = agvWrkMast.getBarcode(); - String orderNo = getOrderNoByWrkNo(wrkNo); + try{ + int wrkNo = agvWrkMast.getWrkNo(); + String barcode = agvWrkMast.getBarcode(); + String orderNo = getOrderNoByWrkNo(wrkNo); + String agvBasDevp = ""; + if (agvWrkMast.getIoType() > 100) { + agvBasDevp = agvWrkMast.getLocNo(); + } else { + agvBasDevp = agvWrkMast.getSourceLocNo(); + } - //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚 - agvWrkMast.setWrkSts(207L); - agvWrkMastService.updateById(agvWrkMast); - if(agvWrkMast.getIoType() == 10){ + + //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚 + agvWrkMast.setWrkSts(207L); + agvWrkMastService.updateById(agvWrkMast); // 绌烘澘鍏ュ簱 璁剧疆搴撲綅鐘舵�佷负D.绌烘《/绌烘爤鏉� - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D"); - }else{ - //淇敼鐩爣搴撲綅鐘舵�佷负F.鍦ㄥ簱 - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F"); - } - //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� - agvWrkMastLogService.save(wrkNo); - //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗� - agvWrkDetlLogService.save(wrkNo); - //鍒犻櫎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(agvWrkMast.getIoType() == 11){ - //鏇存柊搴撳瓨鏄庣粏 - agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); - //淇敼婧愬簱浣嶇姸鎬佷负O - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O"); - } - if(!isJSON(orderNo)){ - //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚 - orderService.checkComplete(orderNo); - }else{ - List<Map> maps = JSONArray.parseArray(orderNo, Map.class); - maps.forEach(map -> { - String o = map.get("orderNo").toString(); - orderService.checkComplete(o); - }); - } + String locSts = agvWrkMast.getIoType() == 10 ? "D" : "F"; - return SUCCESS; + if (agvWrkMast.getIoType() != 111) { + //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + agvWrkMastLogService.save(agvWrkMast); + //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗� + agvWrkDetlLogService.save(wrkNo); + } + + switch (agvWrkMast.getIoType()){ + case 1: + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + //鏇存柊鐩爣搴撲綅鏄庣粏 + 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)); + break; + case 10: + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); + break; + case 11: + case 12: + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + //鏇存柊搴撳瓨鏄庣粏 + agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); + //淇敼婧愬簱浣嶇姸鎬佷负O + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); + break; + case 53: + //淇敼宸ヤ綔鍏氭槑缁� + //淇敼搴撳瓨淇℃伅 + List<AgvWrkDetl> agvWrkDetlList = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + agvWrkDetlList.forEach(agvWrkDetl -> { + AgvLocDetl agvLocDetl = agvLocDetlService.selectByMatnrAndBatchAndCsocodeAndisoCode(agvWrkMast.getLocNo(), agvWrkDetl.getMatnr(), agvWrkDetl.getBatch(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime()); + if (!Cools.isEmpty(agvLocDetl)) { + double updateAnfme = agvLocDetl.getAnfme() - agvWrkDetl.getAnfme(); + agvLocDetlService.updateAnfme(updateAnfme,agvLocDetl.getLocNo(),agvLocDetl.getMatnr(),agvLocDetl.getBatch(),agvLocDetl.getThreeCode(),agvLocDetl.getDeadTime()); + } + //AgvLocDetl agvLocDetl = agvLocDetlService.selectLocdetl(agvWrkMast.getLocNo(),agvWrkDetl.getMatnr(),agvWrkDetl.getBatch(),agvWrkDetl.getThreeCode(),agvWrkDetl.getDeadTime()); + + }); + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue()); + break; + case 58: + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue()); + break; + case 108: + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + //鏇存柊搴撳瓨鏄庣粏 + agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); + //淇敼婧愬簱浣嶇姸鎬佷负O + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); + break; + case 109: + // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅 + if (agvWrkMast.getLocNo().substring(0,2).equals("DB")) { + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + // 鎺ラ┏浣� -- 搴撲綅 + } else { + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + } + // 鎺ラ┏浣� -- 搴撲綅 + if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); + // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅 + } else { + //淇敼婧愬簱浣嶇姸鎬佷负O + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); + } + break; + case 111: + // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅 + if (agvWrkMast.getLocNo().substring(0,2).equals("DB")) { + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + // 鎺ラ┏浣� -- 搴撲綅 + } else { + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + } + + // 鎺ラ┏浣� -- 搴撲綅 + if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); + // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅 + } else { + //淇敼婧愬簱浣嶇姸鎬佷负O + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); + } + break; + case 113: + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + // 鎺ラ┏浣� -- 搴撲綅 + if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); + } + break; + case 1: + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + //鏇存柊鐩爣搴撲綅鏄庣粏 + 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)); + break; + case 11: + case 12: + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + //鏇存柊搴撳瓨鏄庣粏 + agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); + //淇敼婧愬簱浣嶇姸鎬佷负O + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); + break; + case 108: + case 121: + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + //鏇存柊搴撳瓨鏄庣粏 + agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); + //淇敼婧愬簱浣嶇姸鎬佷负O + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); + break; + case 112: + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + // 鎺ラ┏浣� -- 搴撲綅 + if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F","",agvWrkMast.getWhsType().shortValue(),"",(short)0); + // 搴撲綅 -- 鎺ラ┏浣� / 搴撲綅 + } else { + //淇敼婧愬簱浣嶇姸鎬佷负O + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); + } + break; + case 113: + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + // 鎺ラ┏浣� -- 搴撲綅 + if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); + } + break; + + + + + + + default: + return null; + } + if (agvWrkMast.getIoType() != 111) { + //鍒犻櫎AGV宸ヤ綔妗� + agvWrkMastService.deleteById(wrkNo); + //鍒犻櫎AGV宸ヤ綔鏄庣粏妗� + agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); + } + + if(!isJSON(orderNo)){ + //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚 + orderService.checkComplete(orderNo); + }else{ + List<Map> maps = JSONArray.parseArray(orderNo, Map.class); + maps.forEach(map -> { + String o = map.get("orderNo").toString(); + orderService.checkComplete(o); + }); + } + + return SUCCESS; + }catch (Exception e){ + log.error(""+e.getMessage()); + } + return FAIL; } @Transactional public ReturnT<String> completedCarryWrk(AgvWrkMast agvWrkMast) { - int wrkNo = agvWrkMast.getWrkNo(); - String orderNo = getOrderNoByWrkNo(wrkNo); - //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚 - agvWrkMast.setWrkSts(207L); - agvWrkMastService.updateById(agvWrkMast); - //淇敼婧愬簱浣嶇姸鎬佷负O - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O"); - if(agvWrkMast.getIoType() == 101){ - //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁� - agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); - } + try{ + int wrkNo = agvWrkMast.getWrkNo(); + String orderNo = getOrderNoByWrkNo(wrkNo); + //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚 + agvWrkMast.setWrkSts(207L); + agvWrkMastService.updateById(agvWrkMast); + //淇敼婧愬簱浣嶇姸鎬佷负O + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); + if(agvWrkMast.getIoType() == 101){ + //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁� + agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); + //鐢熸垚绌烘澘鍏ュ簱浠诲姟 + Short containerType = Short.valueOf(agvWrkMast.getBarcode().substring(0, 2)); + try { + //agvWorkService.emptyPlateIn(agvWrkMast.getLocNo(),agvWrkMast.getBarcode(),containerType,9527L,true); + AgvWrkMast wrkMast = new AgvWrkMast(); + //宸ヤ綔鐘舵�� + wrkMast.setWrkSts(201L); + //鍏ュ嚭搴撶被鍨� + wrkMast.setIoType(10); + wrkMast.setIoTime(new Date()); + //浼樺厛绾� + wrkMast.setIoPri(300.0); + //婧愮珯鐐� + wrkMast.setSourceLocNo(agvWrkMast.getLocNo()); + //鐩爣绔欑偣 + wrkMast.setLocNo(agvWrkMast.getSourceLocNo()); + //璐ф灦缂栫爜 + wrkMast.setBarcode(agvWrkMast.getBarcode()); + //璐ф灦绫诲瀷 + wrkMast.setWhsType(Integer.valueOf(agvWrkMast.getBarcode().substring(0, 2))); - //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� - agvWrkMastLogService.save(wrkNo); - //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗� - agvWrkDetlLogService.save(wrkNo); - //鍒犻櫎AGV宸ヤ綔妗� - agvWrkMastService.deleteById(wrkNo); - //鍒犻櫎AGV宸ヤ綔鏄庣粏妗� - agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); - if(!isJSON(orderNo)){ - //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚 - orderService.checkComplete(orderNo); - }else{ - List<Map> maps = JSONArray.parseArray(orderNo, Map.class); - maps.forEach(map -> { - String o = map.get("orderNo").toString(); - orderService.checkComplete(o); - }); + wrkMast.setAppeUser(9527L); + wrkMast.setAppeTime(new Date()); + wrkMast.setModiUser(9527L); + wrkMast.setModiTime(new Date()); + + if (!agvWrkMastService.insertByIncrease(wrkMast)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + }catch (Exception e){ + e.printStackTrace(); + log.error(e.getMessage()); + } + } + + //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + agvWrkMastLogService.save(agvWrkMast); + //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗� + agvWrkDetlLogService.save(wrkNo); + //鍒犻櫎AGV宸ヤ綔妗� + agvWrkMastService.deleteById(wrkNo); + //鍒犻櫎AGV宸ヤ綔鏄庣粏妗� + agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); + if(!isJSON(orderNo)){ + //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚 + orderService.checkComplete(orderNo); + }else{ + List<Map> maps = JSONArray.parseArray(orderNo, Map.class); + maps.forEach(map -> { + String o = map.get("orderNo").toString(); + orderService.checkComplete(o); + }); + } + return SUCCESS; + }catch (Exception e){ + log.error(""+e.getMessage()); } + return FAIL; + } + + @Transactional + public ReturnT<String> completedCarryWrk2(AgvWrkMast agvWrkMast) { + try{ + int wrkNo = agvWrkMast.getWrkNo(); + String orderNo = getOrderNoByWrkNo(wrkNo); + String agvBasDevp = ""; + if (agvWrkMast.getIoType() > 100) { + agvBasDevp = agvWrkMast.getLocNo(); + } else { + agvBasDevp = agvWrkMast.getSourceLocNo(); + } + //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚 + agvWrkMast.setWrkSts(207L); + agvWrkMastService.updateById(agvWrkMast); + //淇敼婧愬簱浣嶇姸鎬佷负O + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); + if(agvWrkMast.getIoType() == 101){ + //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁� + agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); + } + + //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� + agvWrkMastLogService.save(agvWrkMast); + //鐢熸垚AGV宸ヤ綔鏄庣粏鍘嗗彶妗� + agvWrkDetlLogService.save(wrkNo); + //鍒犻櫎AGV宸ヤ綔妗� + agvWrkMastService.deleteById(wrkNo); + //鍒犻櫎AGV宸ヤ綔鏄庣粏妗� + agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); + if(!isJSON(orderNo)){ + //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚 + orderService.checkComplete(orderNo); + }else{ + List<Map> maps = JSONArray.parseArray(orderNo, Map.class); + maps.forEach(map -> { + String o = map.get("orderNo").toString(); + orderService.checkComplete(o); + }); + } + return SUCCESS; + }catch (Exception e){ + log.error(""+e.getMessage()); + } + return FAIL; + } + + @Transactional + @Synchronized + public ReturnT<String> startPutWayWrk(AgvWrkMast agvWrkMast) throws IOException { + + try{ + //涓嬪彂浠诲姟 + int startWrkCode = agvWrkMastService.startWrk(agvWrkMast); + if(startWrkCode != 0){ + throw new CoolException("浠诲姟涓嬪彂澶辫触"); + } + + agvWrkMast.setWrkSts(202L); + agvWrkMastService.updateById(agvWrkMast); + if(agvWrkMast.getIoType() == 1){ + //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y + agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y"); + } + return SUCCESS; + }catch (Exception e){ + log.error("淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y"+e.getMessage()); + } + return FAIL; + } + + @Transactional + @Synchronized + public ReturnT<String> startAllcationIn(AgvWrkMast agvWrkMast) throws IOException { + + //涓嬪彂浠诲姟 + try{ + int startWrkCode = agvWrkMastService.startAllcationIn(agvWrkMast); + if(startWrkCode != 0){ + throw new CoolException("浠诲姟涓嬪彂澶辫触"); + } + return SUCCESS; + }catch (Exception e){ + log.error("浠诲姟涓嬪彂澶辫触"+e.getMessage()); + } + return FAIL; + + } + +// @Transactional +// public ReturnT<String> startCarryWrk(AgvWrkMast agvWrkMast) throws IOException { +// //log.info(agvWrkMastList.toString()); +// //浠诲姟杩囨护锛岃繃婊ゆ帀宸插瓨鍦ㄧ浉鍚岀洰鏍囧簱浣嶇殑宸ヤ綔妗� +// //agvWrkMastList = filter(agvWrkMastList); +// int code = agvWrkMastService.startWrk(agvWrkMast); +// //log.info(agvWrkMastList.toString()); +// if (Cools.isEmpty(agvWrkMastList)){ +// return SUCCESS; +// } +// if(code == 0){ +// agvWrkMastList.forEach(agvWrkMast -> { +// //202.RCS鍙栬揣涓� +// agvWrkMast.setWrkSts(202L); +// agvWrkMastService.updateById(agvWrkMast); +// }); +// //agvWrkMastService.updateBatchById(agvWrkMastList); +// +// return SUCCESS; +// } +// +// return FAIL; +// } + + @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; } + @Synchronized @Transactional - public ReturnT<String> startPutWayWrk(List<AgvWrkMast> agvWrkMastList) throws IOException { + public ReturnT<String> autoEmptyOut(AgvBasDevp agvBasDevp) { - int startWwrkCode = agvWrkMastService.startWrk(agvWrkMastList,"putaway"); + agvWorkService.emptyPlateOut(agvBasDevp.getDevNo(),0,9527L); - int code = agvWrkMastService.containerMove(agvWrkMastList); - - if(code == 0){ - agvWrkMastList.forEach(agvWrkMast -> { - //202.RCS鍙栬揣涓� - 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; - } - - @Transactional - public ReturnT<String> startCarryWrk(List<AgvWrkMast> agvWrkMastList) throws IOException { - int code = agvWrkMastService.startWrk(agvWrkMastList,"carry"); - if(code == 0){ - agvWrkMastList.forEach(agvWrkMast -> { - //202.RCS鍙栬揣涓� - agvWrkMast.setWrkSts(202L); - agvWrkMastService.updateById(agvWrkMast); - }); - //agvWrkMastService.updateBatchById(agvWrkMastList); - - return SUCCESS; - } - - return FAIL; + return SUCCESS; } private String getOrderNoByWrkNo(int wrkNo){ @@ -195,4 +489,54 @@ } } } + + private List<AgvWrkMast> filter(List<AgvWrkMast> agvWrkMastList){ + return agvWrkMastList.stream().filter(agvWrkMast -> { + AgvWrkMast agvWrkMastWroking = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("source_loc_no", agvWrkMast.getLocNo())); + if(!Cools.isEmpty(agvWrkMastWroking) && agvWrkMastWroking.getWrkSts()<=202){ + System.out.println("source_loc_no > 1"); + return false; + } + log.info(agvWrkMast.toString()); + int num = agvWrkMastService.selectCount(new EntityWrapper<AgvWrkMast>().eq("loc_no", agvWrkMast.getLocNo())); + return num <= maxWrokNum; + }).collect(Collectors.toList()); + } + + /* + 鐢熸垚宸ヤ綔妗� + */ + private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor){ + AgvWrkMast wrkMast = new AgvWrkMast(); + //宸ヤ綔鐘舵�� + wrkMast.setWrkSts(wrkSts); + //鍏ュ嚭搴撶被鍨� + wrkMast.setIoType(ioType); + wrkMast.setIoTime(now); + //浼樺厛绾� + wrkMast.setIoPri(300.0); + //婧愮珯鐐� + wrkMast.setSourceLocNo(sourceLocNo); + //鐩爣绔欑偣 + wrkMast.setLocNo(locNo); + //璐ф灦缂栫爜 + wrkMast.setBarcode(barcode); + //璐ф灦绫诲瀷 + wrkMast.setWhsType(containerType); + // 鐩爣妤煎眰 + wrkMast.setCrnNo(floor); + + wrkMast.setAppeUser(userId); + wrkMast.setAppeTime(now); + wrkMast.setModiUser(userId); + wrkMast.setModiTime(now); + + if (!agvWrkMastService.insertByIncrease(wrkMast)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + + wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no",sourceLocNo).eq("barcode",barcode).orderBy("modi_time",false)); + + return wrkMast; + } } -- Gitblit v1.9.1