From 2cd1fab84d88a16063d5036e77d690e9709f5d68 Mon Sep 17 00:00:00 2001 From: zyx <zyx123456> Date: 星期三, 10 七月 2024 08:28:32 +0800 Subject: [PATCH] #MES上报 --- src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 732 +++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 566 insertions(+), 166 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 7ec3e7f..e7a3b9d 100644 --- a/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java +++ b/src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java @@ -1,14 +1,20 @@ package com.zy.asrs.task.handler; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; -import com.core.common.R; import com.core.exception.CoolException; import com.zy.asrs.entity.*; +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; +import com.zy.common.utils.HttpHandler; +import io.swagger.models.auth.In; import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -17,16 +23,37 @@ import org.springframework.transaction.annotation.Transactional; import java.io.IOException; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; @Slf4j @Service public class AgvWrkMastHandler extends AbstractHandler<String> { + //鍏ュ簱绫诲瀷鏁扮粍 + private static final int[] IN_TYPE_ARRAY = new int[1]; + //鍑哄簱绫诲瀷鏁扮粍 + private static final int[] OUT_TYPE_ARRAY = new int[1]; + //绉诲簱绫诲瀷鏁扮粍 + private static final int[] MOVE_TYPE_ARRAY = new int[1]; + @Value("${agvBasDev.maxWorkNum}") private int maxWrokNum; + @Value("${mes.url}") + private String url; + @Value("${mes.orderReportPath}") + private String orderReportPath; + @Value("${mes.pakinReportPath}") + private String pakinReportPath; + @Value("${mes.pakoutReportPath}") + private String pakoutReportPath; + @Value("${mes.getTokenPath}") + private String getTokenPath; + @Value("${mes.appKey}") + private String appKey; + @Value("${mes.appSecret}") + private String appSecret; + @Autowired private AgvWrkMastService agvWrkMastService; @@ -50,190 +77,368 @@ private AgvBasDevpService agvBasDevpService; @Autowired private AgvWorkService agvWorkService; + @Autowired + private ApiLogService apiLogService; @Transactional public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) { - 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(); + 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(); + } + + //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏 + List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + + //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚 + agvWrkMast.setWrkSts(207L); + agvWrkMastService.updateById(agvWrkMast); + // 绌烘澘鍏ュ簱 璁剧疆搴撲綅鐘舵�佷负D.绌烘《/绌烘爤鏉� + String locSts = agvWrkMast.getIoType() == 10 ? "D" : "F"; + + 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); + //鏇存柊鐩爣搴撲綅鏄庣粏 101.鍑哄簱 鍒犻櫎婧愬簱浣嶅簱瀛樻槑缁� + agvLocDetlService.delete(new EntityWrapper<AgvLocDetl>().eq("loc_no",agvWrkMast.getSourceLocNo())); + } + break; + case 112: + 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(); + locDetl.setLocNo(agvWrkMast.getLocNo()); + locDetl.sync(agvWrkDetl); + locDetl.setModiTime(new Date()); + agvLocDetlService.insert(locDetl); + } + // 鎺ラ┏浣� -- 搴撲綅 + 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 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; + + 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); + }); + } + + //涓婃姤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()); } - - - //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚 - agvWrkMast.setWrkSts(207L); - agvWrkMastService.updateById(agvWrkMast); - // 绌烘澘鍏ュ簱 璁剧疆搴撲綅鐘舵�佷负D.绌烘《/绌烘爤鏉� - String locSts = agvWrkMast.getIoType() == 10 ? "D" : "F"; - if (agvWrkMast.getIoType() == 10 || agvWrkMast.getIoType() == 109) { - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"D",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); - } else { - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getLocNo(),"F",agvWrkMast.getBarcode(),agvWrkMast.getWhsType().shortValue()); - } - - //鐢熸垚AGV宸ヤ綔鍘嗗彶妗� - 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 || agvWrkMast.getIoType() == 12){ - //鏇存柊搴撳瓨鏄庣粏 - agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); - //淇敼婧愬簱浣嶇姸鎬佷负O - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",null); - } - - //绫诲瀷涓哄簱浣嶇Щ杞椂 - if(agvWrkMast.getIoType() == 108){ - //鏇存柊搴撳瓨鏄庣粏 - agvLocDetlService.updateStock(agvWrkMast.getSourceLocNo(),agvWrkMast.getLocNo()); - //淇敼婧愬簱浣嶇姸鎬佷负O - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); - } - - if(agvWrkMast.getIoType() == 109 || agvWrkMast.getIoType() == 58){ - //淇敼婧愬簱浣嶇姸鎬佷负O - agvLocMastService.updateLocStsByLocNo(agvWrkMast.getSourceLocNo(),"O","",agvWrkMast.getWhsType().shortValue(),"",(short)0); - } - - - //鍒犻櫎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; + 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","",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); - }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); - }); + try{ + + //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏 + List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + + Date now = new Date(); + int wrkNo = agvWrkMast.getWrkNo(); + String orderNo = getOrderNoByWrkNo(wrkNo); + //淇敼宸ヤ綔妗g姸鎬佷负207.搴撳瓨鏇存柊瀹屾垚 + agvWrkMast.setWrkSts(207L); + agvWrkMastService.updateById(agvWrkMast); + //淇敼婧愬簱浣嶇姸鎬佷负O + if (agvWrkMast.getIoType() == 110) { + 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(now); + //浼樺厛绾� + 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))); + + wrkMast.setAppeUser(9527L); + wrkMast.setAppeTime(now); + wrkMast.setModiUser(9527L); + wrkMast.setModiTime(now); + wrkMast.setLogErrMemo("completedCarryWrk"); + if (!agvWrkMastService.insertByIncrease(wrkMast)) { + throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); + } + AgvLocMast agvLocMast = agvLocMastService.selectById(agvWrkMast.getSourceLocNo()); + agvLocMast.setLocSts("S"); + agvLocMast.setModiTime(now); + agvLocMastService.updateById(agvLocMast); + + AgvBasDevp agvBasDevp = agvBasDevpService.selectById(agvWrkMast.getLocNo()); + agvBasDevp.setLocSts("R"); + agvBasDevp.setLocType2(Short.valueOf(agvWrkMast.getBarcode().substring(0, 2))); + agvBasDevpService.updateById(agvBasDevp); + }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); + }); + } + + //涓婃姤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()); } - return SUCCESS; + return FAIL; } @Transactional public ReturnT<String> completedCarryWrk2(AgvWrkMast agvWrkMast) { - 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())); - } + try{ + //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏 + List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); - //鐢熸垚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); - }); + 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); + }); + } + //涓婃姤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()); } - return SUCCESS; + return FAIL; } @Transactional @Synchronized public ReturnT<String> startPutWayWrk(AgvWrkMast agvWrkMast) throws IOException { - //涓嬪彂浠诲姟 - int startWrkCode = agvWrkMastService.startWrk(agvWrkMast); - if(startWrkCode != 0){ - throw new CoolException("浠诲姟涓嬪彂澶辫触"); - } + 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"); + 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 SUCCESS; - + return FAIL; } @Transactional @@ -241,11 +446,16 @@ public ReturnT<String> startAllcationIn(AgvWrkMast agvWrkMast) throws IOException { //涓嬪彂浠诲姟 - int startWrkCode = agvWrkMastService.startAllcationIn(agvWrkMast); - if(startWrkCode != 0){ - throw new CoolException("浠诲姟涓嬪彂澶辫触"); + try{ + int startWrkCode = agvWrkMastService.startAllcationIn(agvWrkMast); + if(startWrkCode != 0){ + throw new CoolException("浠诲姟涓嬪彂澶辫触"); + } + return SUCCESS; + }catch (Exception e){ + log.error("浠诲姟涓嬪彂澶辫触"+e.getMessage()); } - return SUCCESS; + return FAIL; } @@ -336,4 +546,194 @@ 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; + } + + private Object getReportParamByIoType(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){ + if(Cools.isEmpty(agvWrkDetls)){ + return null; + } + //鍖哄垎涓嶅悓浠诲姟绫诲瀷鐨勪笂鎶ユ柟寮� + + if(Arrays.asList(IN_TYPE_ARRAY).contains(agvWrkMast.getIoType())){ + + } + if(Arrays.asList(OUT_TYPE_ARRAY).contains(agvWrkMast.getIoType())){ + + } + if(Arrays.asList(MOVE_TYPE_ARRAY).contains(agvWrkMast.getIoType())){ + return generateMesParam(agvWrkMast,agvWrkDetls); + } + + return null; + } + + private void reportMesPakinOrder(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){ + + for (AgvWrkDetl agvWrkDetl : agvWrkDetls){ + MesPakinReportParam mesPakinReportParam = new MesPakinReportParam(); + mesPakinReportParam.setInboundOrderCode(agvWrkDetl.getOrderNo()); + mesPakinReportParam.setBizType("0"); + mesPakinReportParam.setInventoryAttr(new MesPakinReportParam.InventoryAttr(agvWrkDetl.getThreeCode(),agvWrkDetl.getMatnr(),agvWrkMast.getLocNo())); + mesPakinReportParam.setNoQrCodeExecAmount(new MesPakinReportParam.NoQrCodeExecAmount(agvWrkDetl.getAnfme(),agvWrkDetl.getUnit(),null)); + + doHttpRequest(mesPakinReportParam,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1"); + } + + } + + 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.getBatch())); + mesPakoutReportParam.setAmount(new MesPakoutReportParam.Amount(agvWrkDetl.getAnfme(),agvWrkDetl.getUnit(),null)); + + doHttpRequest(mesPakoutReportParam,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1"); + + } + } + + private MesOrderReportParam generateMesParam(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){ + + if(agvWrkMast.getIoType() == 53){ + String locNo = agvWrkMast.getLocNo(); + agvWrkMast.setLocNo(agvWrkMast.getSourceLocNo()); + agvWrkMast.setSourceLocNo(locNo); + } + + MesOrderReportParam param = new MesOrderReportParam(); + + List<MesOrderReportParam.TransferOrderItem> transferOrderItems = new ArrayList<>(); + List<MesOrderReportParam.TransferOrderItem.InventoryDetail> inventoryDetails = new ArrayList<>(); + //娣诲姞transferOrderItem灞炴�� + MesOrderReportParam.TransferOrderItem transferOrderItem = new MesOrderReportParam.TransferOrderItem(); + transferOrderItem.setRemark(agvWrkDetls.get(0).getOrderNo()); + transferOrderItem.setTargetLocationCode(agvWrkMast.getLocNo()); + transferOrderItems.add(transferOrderItem); + transferOrderItem.setInventoryDetails(inventoryDetails); + + param.setTransferOrderItems(transferOrderItems); + + 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()); + inventoryDetail.setAmount(amount); + //娣诲姞bizKey灞炴�� + MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey bizKey = new MesOrderReportParam.TransferOrderItem.InventoryDetail.BizKey(); + bizKey.setBatchNo(agvWrkDetl.getThreeCode()); + inventoryDetail.setBizKey(bizKey); + //娣诲姞inventoryDetail灞炴�� + inventoryDetail.setLocationCode(agvWrkMast.getSourceLocNo()); + inventoryDetail.setMaterialCode(agvWrkDetl.getMatnr()); + inventoryDetail.setQcStatus(1); + inventoryDetail.setStorageStatus(1); + inventoryDetails.add(inventoryDetail); + } + + return param; + } + + //鑾峰彇mes token淇℃伅 + 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"); + + 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){ + + String response = ""; + boolean success = false; + + try { + response = new HttpHandler.Builder() + .setUri(url) + .setPath(path) + .setHeaders(headParam) + .setJson(JSONObject.toJSONString(requestParam)) + .setHttps(true) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + + if(Cools.isEmpty(jsonObject.get("code")) && Integer.parseInt(jsonObject.get("code").toString()) != 200){ + throw new CoolException(jsonObject.get("dsc").toString()); + } + + return jsonObject; + +// String succeed = jsonObject.get("succeed").toString(); +// +// int code = Cools.eq("0",succeed) ? 0 : 1; +// if(code != 200){ +// throw new CoolException(jsonObject.get("dsc").toString()); +// } +// success = true; + + }catch (Exception e){ + log.error(e.getMessage()); + throw new CoolException(e.getMessage()); + }finally { + apiLogService.save( + namespace, + url + path, + appkey, + ip, + JSON.toJSONString(JSONObject.toJSONString(requestParam)), + response, + success + ); + } + + } } -- Gitblit v1.9.1