From 67cb49032b0efff478b2432713d62c305e4e53ce Mon Sep 17 00:00:00 2001 From: ZY <zc857179121@qq.com> Date: 星期三, 30 十月 2024 17:42:34 +0800 Subject: [PATCH] 1 --- src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 463 ++++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 324 insertions(+), 139 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 0d2f99b..b226a86 100644 --- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java @@ -7,7 +7,10 @@ import com.core.common.Cools; import com.core.exception.CoolException; import com.zy.asrs.entity.*; +import com.zy.asrs.entity.param.MesBuyPakinReportParam; import com.zy.asrs.entity.param.MesOrderReportParam; +import com.zy.asrs.entity.param.MesPakinReportParam; +import com.zy.asrs.entity.param.MesPakoutReportParam; import com.zy.asrs.service.*; import com.zy.asrs.task.AbstractHandler; import com.zy.asrs.task.core.ReturnT; @@ -27,14 +30,43 @@ @Service public class AgvWrkMastHandler extends AbstractHandler<String> { + //鍏ュ簱绫诲瀷鏁扮粍 + private static final List<Integer> IN_TYPE_LIST = new ArrayList<Integer>() {{ + add(1); + }}; + //private static final int[] IN_TYPE_ARRAY = {1}; + //鍑哄簱绫诲瀷鏁扮粍 + private static final List<Integer> OUT_TYPE_List = new ArrayList<Integer>() {{ +// add(101); + }}; + //private static final int[] OUT_TYPE_ARRAY = {101}; + //绉诲簱绫诲瀷鏁扮粍 + private static final List<Integer> MOVE_TYPE_List = new ArrayList<Integer>() {{ + add(11); + add(101); + add(12); + add(53); + add(101); + add(108); + add(111); + add(112); + + + }}; + //private static final int[] MOVE_TYPE_ARRAY = {11,12}; + @Value("${agvBasDev.maxWorkNum}") private int maxWrokNum; @Value("${mes.url}") private String url; + @Value("${mes.getTokenUrl}") + private String getTokenUrl; @Value("${mes.orderReportPath}") private String orderReportPath; @Value("${mes.pakinReportPath}") private String pakinReportPath; + @Value("${mes.buyPakinReportPath}") + private String buyPakinReportPath; @Value("${mes.pakoutReportPath}") private String pakoutReportPath; @Value("${mes.getTokenPath}") @@ -69,10 +101,17 @@ private AgvWorkService agvWorkService; @Autowired private ApiLogService apiLogService; + @Autowired + private DocTypeService docTypeService; + @Autowired + private OrderDetlService orderDetlService; @Transactional public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) { - try{ + //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏 + List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + + try { int wrkNo = agvWrkMast.getWrkNo(); String barcode = agvWrkMast.getBarcode(); String orderNo = getOrderNoByWrkNo(wrkNo); @@ -83,9 +122,8 @@ agvBasDevp = agvWrkMast.getSourceLocNo(); } - //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏 - List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + agvWrkMast.setModiTime(new Date()); //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚 agvWrkMast.setWrkSts(207L); agvWrkMastService.updateById(agvWrkMast); @@ -99,29 +137,29 @@ agvWrkDetlLogService.save(wrkNo); } - switch (agvWrkMast.getIoType()){ + switch (agvWrkMast.getIoType()) { case 1: - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); //鏇存柊鐩爣搴撲綅鏄庣粏 log.info("鏇存柊鐩爣搴撲綅鏄庣粏 agvWrkMast.getLocNo(): " + agvWrkMast.getLocNo() + ", wrkNo: " + wrkNo); - agvLocDetlService.addLocDetlInfo(agvWrkMast.getLocNo(),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)); + 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); + 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()); + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); //鏇存柊搴撳瓨鏄庣粏 - agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); + agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo()); //淇敼婧愬簱浣嶇姸鎬佷负O - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null); break; case 53: //淇敼宸ヤ綔鍏氭槑缁� @@ -131,64 +169,83 @@ 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()); + 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()); + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); + break; + case 57: + Date now = new Date(); + // 鏇存柊搴撳瓨鏄庣粏 + List<AgvWrkDetl> wrkDetlList = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + wrkDetlList.forEach(agvWrkDetl -> { + AgvLocDetl agvLocDetl = new AgvLocDetl(); + agvLocDetl.setLocNo(agvWrkMast.getLocNo()); + agvLocDetl.sync(agvWrkDetl); + agvLocDetl.setModiTime(now); + agvLocDetl.setAppeTime(now); + if (!agvLocDetlService.insert(agvLocDetl)) { + throw new CoolException("淇濆瓨宸ヤ綔鏄庣粏澶辫触"); + } + }); + // 鏇存柊绔欑偣 + 搴撲綅鐘舵�� 婧愬簱浣嶆槸绔欑偣 + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue()); + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); break; case 58: - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); - agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue()); + 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()); + case 114: + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); //鏇存柊搴撳瓨鏄庣粏 - agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); + agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo()); //淇敼婧愬簱浣嶇姸鎬佷负O - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); + 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()); + 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()); + 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); + 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); + 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()); + 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()); + 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); + 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); + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁� - agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); + agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo())); } break; case 112: - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); List<AgvWrkDetl> agvWrkDetls = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { AgvLocDetl locDetl = new AgvLocDetl(); @@ -198,27 +255,27 @@ agvLocDetlService.insert(locDetl); } // 鎺ラ┏浣� -- 搴撲綅 - if (agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { - agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(),"O","",(short)0); + 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); + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); } break; case 113: - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + 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); + if (agvWrkMast.getSourceLocNo().substring(0, 2).equals("DB")) { + agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getSourceLocNo(), "O", "", (short) 0); } break; case 121: - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(), "F", agvWrkMast.getBarcode(), agvWrkMast.getWhsType().shortValue()); //鏇存柊搴撳瓨鏄庣粏 - agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); + agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(), agvWrkMast.getLocNo()); //淇敼婧愬簱浣嶇姸鎬佷负O - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", agvWrkMast.getWhsType().shortValue(), "", (short) 0); break; default: @@ -228,55 +285,71 @@ //鍒犻櫎AGV宸ヤ綔妗� agvWrkMastService.deleteById(wrkNo); //鍒犻櫎AGV宸ヤ綔鏄庣粏妗� - agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); + agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); } +// else { +// agvBasDevpService.updateLocStsAndBarcodeByDevNo(agvWrkMast.getLocNo(),"O","",agvWrkMast.getWhsType().shortValue()); +// if (!agvWrkMast.getSourceLocNo().substring(0,2).equals("DB")) { +// agvWrkMast.setSourceLocNo(""); +// } +// agvWrkMastService.updateById(agvWrkMast); +// } - if(!isJSON(orderNo)){ + if (!isJSON(orderNo)) { //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚 - orderService.checkComplete(orderNo); - }else{ + orderService.checkComplete(orderNo, agvWrkMast.getPltType()); + } else { List<Map> maps = JSONArray.parseArray(orderNo, Map.class); maps.forEach(map -> { String o = map.get("orderNo").toString(); - orderService.checkComplete(o); + orderService.checkComplete(o, agvWrkMast.getPltType()); }); } //涓婃姤mes - MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); - if(!Cools.isEmpty(param)){ - doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1"); - } +// MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); +// if(!Cools.isEmpty(param)){ +// doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1"); +// } - return SUCCESS; - }catch (Exception e){ - log.error(""+e.getMessage()); + //return SUCCESS; + } catch (Exception e) { + log.error("" + e.getMessage()); } - return FAIL; + //TODO + //鏆傛椂鍔犱笂trycatch + try { + reportMes(agvWrkMast, agvWrkDetlListOld); + } catch (Exception e) { + e.printStackTrace(); + } + return SUCCESS; } @Transactional public ReturnT<String> completedCarryWrk(AgvWrkMast agvWrkMast) { - try{ + //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏 + List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); - //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏 - List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + + try { Date now = new Date(); int wrkNo = agvWrkMast.getWrkNo(); String orderNo = getOrderNoByWrkNo(wrkNo); //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚 agvWrkMast.setWrkSts(207L); + agvWrkMast.setModiTime(new Date()); agvWrkMastService.updateById(agvWrkMast); //淇敼婧愬簱浣嶇姸鎬佷负O if (agvWrkMast.getIoType() == 110) { - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null); } - if(agvWrkMast.getIoType() == 101){ + if (agvWrkMast.getIoType() == 101) { //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁� - agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); + agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo())); //鐢熸垚绌烘澘鍏ュ簱浠诲姟 Short containerType = Short.valueOf(agvWrkMast.getBarcode().substring(0, 2)); try { @@ -315,7 +388,7 @@ agvBasDevp.setLocSts("R"); agvBasDevp.setLocType2(Short.valueOf(agvWrkMast.getBarcode().substring(0, 2))); agvBasDevpService.updateById(agvBasDevp); - }catch (Exception e){ + } catch (Exception e) { e.printStackTrace(); log.error(e.getMessage()); } @@ -328,37 +401,37 @@ //鍒犻櫎AGV宸ヤ綔妗� agvWrkMastService.deleteById(wrkNo); //鍒犻櫎AGV宸ヤ綔鏄庣粏妗� - agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); - if(!isJSON(orderNo)){ + agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); + if (!isJSON(orderNo)) { //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚 - orderService.checkComplete(orderNo); - }else{ + orderService.checkComplete(orderNo, agvWrkMast.getPltType()); + } else { List<Map> maps = JSONArray.parseArray(orderNo, Map.class); maps.forEach(map -> { String o = map.get("orderNo").toString(); - orderService.checkComplete(o); + orderService.checkComplete(o, agvWrkMast.getPltType()); }); } //涓婃姤mes - MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); - if(!Cools.isEmpty(param)){ - doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1"); - } +// MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); +// if(!Cools.isEmpty(param)){ +// doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1"); +// } - return SUCCESS; - }catch (Exception e){ - log.error(""+e.getMessage()); + } catch (Exception e) { + log.error("" + e.getMessage()); } - return FAIL; + reportMes(agvWrkMast, agvWrkDetlListOld); + return SUCCESS; } @Transactional public ReturnT<String> completedCarryWrk2(AgvWrkMast agvWrkMast) { - try{ - //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏 - List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏 + List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + try { int wrkNo = agvWrkMast.getWrkNo(); String orderNo = getOrderNoByWrkNo(wrkNo); String agvBasDevp = ""; @@ -369,12 +442,13 @@ } //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚 agvWrkMast.setWrkSts(207L); + agvWrkMast.setModiTime(new Date()); agvWrkMastService.updateById(agvWrkMast); //淇敼婧愬簱浣嶇姸鎬佷负O - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); - if(agvWrkMast.getIoType() == 101){ + agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(), "O", "", null); + if (agvWrkMast.getIoType() == 101) { //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁� - agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); + agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no", agvWrkMast.getSourceLocNo())); } //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� @@ -384,49 +458,53 @@ //鍒犻櫎AGV宸ヤ綔妗� agvWrkMastService.deleteById(wrkNo); //鍒犻櫎AGV宸ヤ綔鏄庣粏妗� - agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no",wrkNo)); - if(!isJSON(orderNo)){ + agvWrkDetlService.delete(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); + if (!isJSON(orderNo)) { //妫�鏌ヨ鍗曟槸鍚﹀凡瀹屾垚 - orderService.checkComplete(orderNo); - }else{ + orderService.checkComplete(orderNo, agvWrkMast.getPltType()); + } else { List<Map> maps = JSONArray.parseArray(orderNo, Map.class); maps.forEach(map -> { String o = map.get("orderNo").toString(); - orderService.checkComplete(o); + orderService.checkComplete(o, agvWrkMast.getPltType()); }); } //涓婃姤mes - MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); - if(!Cools.isEmpty(param)){ - doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1"); - } - return SUCCESS; - }catch (Exception e){ - log.error(""+e.getMessage()); +// MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); +// if(!Cools.isEmpty(param)){ +// doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1"); +// } +// reportMes(agvWrkMast,agvWrkDetlListOld); +// return SUCCESS; + } catch (Exception e) { + log.error("" + e.getMessage()); } - return FAIL; + reportMes(agvWrkMast, agvWrkDetlListOld); + return SUCCESS; } @Transactional @Synchronized public ReturnT<String> startPutWayWrk(AgvWrkMast agvWrkMast) throws IOException { - try{ + try { //涓嬪彂浠诲姟 int startWrkCode = agvWrkMastService.startWrk(agvWrkMast); - if(startWrkCode != 0){ + if (startWrkCode != 0) { throw new CoolException("浠诲姟涓嬪彂澶辫触"); } agvWrkMast.setWrkSts(202L); + agvWrkMast.setModiTime(new Date()); agvWrkMastService.updateById(agvWrkMast); - if(agvWrkMast.getIoType() == 1){ + if (agvWrkMast.getIoType() == 1) { //淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y - agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(),"Y"); + agvWaitPakinService.updateIoStatus(agvWrkMast.getWrkNo(), "Y"); } return SUCCESS; - }catch (Exception e){ - log.error("淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y"+e.getMessage()); + } catch (Exception e) { + //TODO + //log.error("淇敼AGV鍏ュ簱閫氱煡妗g姸鎬佸叆鍑虹姸鎬佷负Y" + e.getMessage()); } return FAIL; } @@ -434,16 +512,16 @@ @Transactional @Synchronized public ReturnT<String> startAllcationIn(AgvWrkMast agvWrkMast) throws IOException { - + //涓嬪彂浠诲姟 - try{ + try { int startWrkCode = agvWrkMastService.startAllcationIn(agvWrkMast); - if(startWrkCode != 0){ + if (startWrkCode != 0) { throw new CoolException("浠诲姟涓嬪彂澶辫触"); } return SUCCESS; - }catch (Exception e){ - log.error("浠诲姟涓嬪彂澶辫触"+e.getMessage()); + } catch (Exception e) { + log.error("浠诲姟涓嬪彂澶辫触" + e.getMessage()); } return FAIL; @@ -482,10 +560,11 @@ List<Map<String, Object>> devNoMaps = agvBasDevpService.selectDevNoAndNumBystationCode(agvWrkMast.getLocNo()); //鍙栫涓�涓殏瀛樹綅锛屽苟鏌ヨ鍏舵鏁颁笌閰嶇疆鐨勬鏁板仛姣旇緝 Map<String, Object> devNoMap = devNoMaps.get(0); - if((int)devNoMap.get("num") < maxWrokNum){ + if ((int) devNoMap.get("num") < maxWrokNum) { agvWrkMast.setLocNo(devNoMap.get("dev_no").toString()); + agvWrkMast.setModiTime(new Date()); agvWrkMastService.updateById(agvWrkMast); - log.info("after锛�" + devNoMap.toString() + ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo()); + log.info("after锛�" + devNoMap.toString() + ", wrkNo:" + agvWrkMast.getWrkNo() + ", locNo: " + agvWrkMast.getLocNo()); } }); @@ -496,14 +575,14 @@ @Transactional public ReturnT<String> autoEmptyOut(AgvBasDevp agvBasDevp) { - agvWorkService.emptyPlateOut(agvBasDevp.getDevNo(),0,9527L); + agvWorkService.emptyPlateOut(agvBasDevp.getDevNo(), 0, 9527L); return SUCCESS; } - private String getOrderNoByWrkNo(int wrkNo){ + private String getOrderNoByWrkNo(int wrkNo) { AgvWrkDetl agvWrkDetl = agvWrkDetlService.selectOne(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", wrkNo)); - if(Cools.isEmpty(agvWrkDetl)){ + if (Cools.isEmpty(agvWrkDetl)) { return null; } return agvWrkDetl.getOrderNo(); @@ -524,10 +603,10 @@ } } - private List<AgvWrkMast> filter(List<AgvWrkMast> agvWrkMastList){ + 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){ + if (!Cools.isEmpty(agvWrkMastWroking) && agvWrkMastWroking.getWrkSts() <= 202) { System.out.println("source_loc_no > 1"); return false; } @@ -540,7 +619,7 @@ /* 鐢熸垚宸ヤ綔妗� */ - private AgvWrkMast createWrkMast(int ioType, long wrkSts, String sourceLocNo, String locNo, String barcode, Date now, Long userId, int containerType, int floor){ + 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); @@ -569,18 +648,91 @@ 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)); + wrkMast = agvWrkMastService.selectOne(new EntityWrapper<AgvWrkMast>().eq("loc_no", locNo).eq("source_loc_no", sourceLocNo).eq("barcode", barcode).orderBy("modi_time", false)); return wrkMast; } - private MesOrderReportParam generateMesParam(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){ + private void reportMes(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) { + if (Cools.isEmpty(agvWrkDetls)) { + return; + } + //鍖哄垎涓嶅悓浠诲姟绫诲瀷鐨勪笂鎶ユ柟寮� - if(Cools.isEmpty(agvWrkDetls)){ - return null; + if (IN_TYPE_LIST.contains(agvWrkMast.getIoType())) { + reportMesPakinOrder(agvWrkMast, agvWrkDetls); + } + if (OUT_TYPE_List.contains(agvWrkMast.getIoType())) { + reportMesPakoutOrder(agvWrkMast, agvWrkDetls); + } + if (MOVE_TYPE_List.contains(agvWrkMast.getIoType())) { + generateMesParam(agvWrkMast, agvWrkDetls); + } + } + + private void reportMesPakinOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) { + + for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { + //鍒ゆ柇鏄惁閲囪喘鍏ュ簱 + + String orderNo = agvWrkDetl.getOrderNo(); + Order order = orderService.selectByNo(orderNo); + + DocType docType = docTypeService.selectById(order.getDocType()); + + if (docType.getDocName().contains("閲囪喘")) { + + OrderDetl orderDetl = orderDetlService.selectByOrderNoAndMatnr(orderNo, agvWrkDetl.getMatnr(), agvWrkDetl.getThreeCode(), agvWrkDetl.getDeadTime()); + + MesBuyPakinReportParam mesBuyPakinReportParam = new MesBuyPakinReportParam(); + List<MesBuyPakinReportParam.Iteam> iteams = new ArrayList<>(); + MesBuyPakinReportParam.Iteam iteam = new MesBuyPakinReportParam.Iteam(); + iteam.setMaterialCode(agvWrkDetl.getMatnr()); + iteam.setBatchNo(agvWrkDetl.getBatch()); + iteam.setAmount(agvWrkDetl.getAnfme()); + iteam.setStorageLocationCode(agvWrkMast.getLocNo()); + iteam.setLineNo(orderDetl.getItemNum()); + iteam.setSupplierCode(order.getSalesman()); + iteam.setUnit(agvWrkDetl.getUnit()); + + iteams.add(iteam); + + mesBuyPakinReportParam.setCode(orderNo); + mesBuyPakinReportParam.setIteam(iteams); + + doHttpRequest(mesBuyPakinReportParam, getMesTokenInfo(), "涓婃姤mes閲囪喘鍏ュ簱淇℃伅", url, buyPakinReportPath, null, "127.0.0.1"); + + } else { + MesPakinReportParam mesPakinReportParam = new MesPakinReportParam(); + mesPakinReportParam.setInboundOrderCode(agvWrkDetl.getOrderNo()); + mesPakinReportParam.setBizType("0"); + mesPakinReportParam.setInventoryAttr(new MesPakinReportParam.InventoryAttr(agvWrkDetl.getThreeCode().trim(), agvWrkDetl.getMatnr(), agvWrkMast.getLocNo())); + mesPakinReportParam.setNoQrCodeExecAmount(new MesPakinReportParam.NoQrCodeExecAmount(agvWrkDetl.getAnfme(), agvWrkDetl.getUnit(), null)); + + doHttpRequest(mesPakinReportParam, getMesTokenInfo(), "涓婃姤mes鍏ュ簱淇℃伅", url, pakinReportPath, null, "127.0.0.1"); + } } - if(agvWrkMast.getIoType() == 53){ + } + + private void reportMesPakoutOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) { + for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { + MesPakoutReportParam mesPakoutReportParam = new MesPakoutReportParam(); + mesPakoutReportParam.setStorageCode(agvWrkMast.getLocNo()); + AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getLocNo()); + mesPakoutReportParam.setWareHouseCode(agvLocMast.getPltType().toString()); + mesPakoutReportParam.setMaterialCode(agvWrkDetl.getMatnr()); + mesPakoutReportParam.setBatchNos(Arrays.asList(agvWrkDetl.getThreeCode().trim())); + mesPakoutReportParam.setAmount(new MesPakoutReportParam.Amount(agvWrkDetl.getAnfme(), agvWrkDetl.getUnit(), null)); + + doHttpRequest(mesPakoutReportParam, getMesTokenInfo(), "涓婃姤mes鍑哄簱淇℃伅", url, pakoutReportPath, null, "127.0.0.1"); + + } + } + + private void generateMesParam(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls) { + + if (agvWrkMast.getIoType() == 53) { String locNo = agvWrkMast.getLocNo(); agvWrkMast.setLocNo(agvWrkMast.getSourceLocNo()); agvWrkMast.setSourceLocNo(locNo); @@ -590,25 +742,35 @@ List<MesOrderReportParam.TransferOrderItem> transferOrderItems = new ArrayList<>(); List<MesOrderReportParam.TransferOrderItem.InventoryDetail> inventoryDetails = new ArrayList<>(); + List<MesOrderReportParam.RecordCustomFieldBaseCO.CustomField> customFields = new ArrayList<>(); + + MesOrderReportParam.RecordCustomFieldBaseCO recordCustomFieldBaseCO = new MesOrderReportParam.RecordCustomFieldBaseCO(); + recordCustomFieldBaseCO.setCustomFields(customFields); + param.setRecordCustomFieldBaseCO(recordCustomFieldBaseCO); + //娣诲姞transferOrderItem灞炴�� MesOrderReportParam.TransferOrderItem transferOrderItem = new MesOrderReportParam.TransferOrderItem(); transferOrderItem.setRemark(agvWrkDetls.get(0).getOrderNo()); - transferOrderItem.setTargetLocationCode(agvWrkMast.getLocNo()); + //璋冩嫧 + if (agvWrkMast.getLocNo().contains("YZ")) { + transferOrderItem.setTargetLocationCode(agvWrkMast.getLocNo()); + } else { + //鍑哄簱榛樿浠撲綅 + String floor = agvWrkMast.getLocNo().split("F")[1]; + transferOrderItem.setTargetLocationCode(getTargetLocationByFloor(floor)); + } transferOrderItems.add(transferOrderItem); transferOrderItem.setInventoryDetails(inventoryDetails); param.setTransferOrderItems(transferOrderItems); - for (AgvWrkDetl agvWrkDetl : agvWrkDetls){ + for (AgvWrkDetl agvWrkDetl : agvWrkDetls) { MesOrderReportParam.TransferOrderItem.InventoryDetail inventoryDetail = new MesOrderReportParam.TransferOrderItem.InventoryDetail(); //娣诲姞amount灞炴�� - MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount amount = new MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount(); - amount.setAmount(agvWrkDetl.getAnfme()); - amount.setUnitName(agvWrkDetl.getUnit()); + MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount amount = new MesOrderReportParam.TransferOrderItem.InventoryDetail.Amount(agvWrkDetl.getAnfme(), agvWrkDetl.getUnit(), null); inventoryDetail.setAmount(amount); //娣诲姞bizKey灞炴�� - MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey bizKey = new MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey(); - bizKey.setBatchNo(agvWrkDetl.getThreeCode()); + MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey bizKey = new MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey(Cools.isEmpty(agvWrkDetl.getBatch()) ? "" : agvWrkDetl.getBatch().trim()); inventoryDetail.setBizKey(bizKey); //娣诲姞inventoryDetail灞炴�� inventoryDetail.setLocationCode(agvWrkMast.getSourceLocNo()); @@ -616,27 +778,49 @@ inventoryDetail.setQcStatus(1); inventoryDetail.setStorageStatus(1); inventoryDetails.add(inventoryDetail); + //娣诲姞閿�鍞鍗曞彿 + MesOrderReportParam.RecordCustomFieldBaseCO.CustomField customField = new MesOrderReportParam.RecordCustomFieldBaseCO.CustomField("workOrderCode__c", agvWrkDetl.getThreeCode().trim()); + customFields.add(customField); } - return param; + doHttpRequest(param, getMesTokenInfo(), "涓婃姤mes璋冩嫧淇℃伅", url, orderReportPath, null, "127.0.0.1"); + } //鑾峰彇mes token淇℃伅 - private Map<String,Object> getMesTokenInfo(){ - Map<String,String> param = new HashMap<>(); - param.put("appKey",appKey); - param.put("appSecret",appSecret); + private Map<String, Object> getMesTokenInfo() { + Map<String, String> param = new HashMap<>(); + param.put("appKey", appKey); + param.put("appSecret", appSecret); - JSONObject jsonObject = doHttpRequest(param,null, "鑾峰彇MesToken", url, getTokenPath, null, "127.0.0.1"); + JSONObject jsonObject = doHttpRequest(param, null, "鑾峰彇MesToken", getTokenUrl, getTokenPath, null, "127.0.0.1"); - Map<String,Object> headParam = new HashMap<>(); - headParam.put("X-AUTH",JSON.parseObject(jsonObject.get("data").toString()).get("appAccessToken").toString()); + Map<String, Object> headParam = new HashMap<>(); + headParam.put("X-AUTH", JSON.parseObject(jsonObject.get("data").toString()).get("appAccessToken").toString()); return headParam; } - private JSONObject doHttpRequest(Object requestParam,Map<String,Object> headParam, String namespace, String url, String path, String appkey, String ip){ + //鏍规嵁妤煎眰榛樿鍑哄簱浠撲綅 + private String getTargetLocationByFloor(String f) { + int floor = Integer.parseInt(f); + if (floor == 1) { + return "WH-000"; + } + + if (floor == 2) { + return "WH-000"; + } + + if (floor == 3) { + return "WH-000"; + } + + return null; + } + + private JSONObject doHttpRequest(Object requestParam, Map<String, Object> headParam, String namespace, String url, String path, String appkey, String ip) { String response = ""; boolean success = false; @@ -652,10 +836,10 @@ .doPost(); JSONObject jsonObject = JSON.parseObject(response); - if(Cools.isEmpty(jsonObject.get("code")) && Integer.parseInt(jsonObject.get("code").toString()) != 200){ + if (Cools.isEmpty(jsonObject.get("code")) || Integer.parseInt(jsonObject.get("code").toString()) != 200) { throw new CoolException(jsonObject.get("dsc").toString()); } - + success = true; return jsonObject; // String succeed = jsonObject.get("succeed").toString(); @@ -666,10 +850,10 @@ // } // success = true; - }catch (Exception e){ + } catch (Exception e) { log.error(e.getMessage()); throw new CoolException(e.getMessage()); - }finally { + } finally { apiLogService.save( namespace, url + path, @@ -682,4 +866,5 @@ } } + } -- Gitblit v1.9.1