From 41326b3129ae3e4ef7a45bc16dba64dc9dd27404 Mon Sep 17 00:00:00 2001 From: whycq <10027870+whycq@user.noreply.gitee.com> Date: 星期三, 04 九月 2024 09:58:14 +0800 Subject: [PATCH] Merge branch 'phyzasrs' of http://47.97.1.152:5880/r/zy-asrs into phyzasrs-erp --- src/main/java/com/zy/asrs/task/handler/AgvWrkMastHandler.java | 316 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 305 insertions(+), 11 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 93e8c90..9a23068 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.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; +import com.zy.common.utils.HttpHandler; import lombok.Synchronized; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -17,17 +23,52 @@ 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.*; import java.util.stream.Collectors; @Slf4j @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}") + private String getTokenPath; + @Value("${mes.appKey}") + private String appKey; + @Value("${mes.appSecret}") + private String appSecret; + @Autowired private AgvWrkMastService agvWrkMastService; @@ -51,9 +92,18 @@ private AgvBasDevpService agvBasDevpService; @Autowired private AgvWorkService agvWorkService; + @Autowired + private ApiLogService apiLogService; + @Autowired + private DocTypeService docTypeService; + @Autowired + private OrderDetlService orderDetlService; @Transactional public ReturnT<String> completedPutWayWrk(AgvWrkMast agvWrkMast) { + //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏 + List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + try{ int wrkNo = agvWrkMast.getWrkNo(); String barcode = agvWrkMast.getBarcode(); @@ -241,17 +291,30 @@ }); } - return SUCCESS; + //涓婃姤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 FAIL; + reportMes(agvWrkMast,agvWrkDetlListOld); + return SUCCESS; } @Transactional public ReturnT<String> completedCarryWrk(AgvWrkMast agvWrkMast) { + + //鐢ㄤ簬涓婃姤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); @@ -291,7 +354,6 @@ wrkMast.setModiUser(9527L); wrkMast.setModiTime(now); wrkMast.setLogErrMemo("completedCarryWrk"); - if (!agvWrkMastService.insertByIncrease(wrkMast)) { throw new CoolException("淇濆瓨宸ヤ綔妗eけ璐�"); } @@ -328,15 +390,25 @@ orderService.checkComplete(o); }); } - return SUCCESS; + + //涓婃姤mes +// MesOrderReportParam param = generateMesParam(agvWrkMast, agvWrkDetlListOld); +// if(!Cools.isEmpty(param)){ +// doHttpRequest(param,getMesTokenInfo(),"涓婃姤mes鍗曟嵁淇℃伅",url,orderReportPath,null,"127.0.0.1"); +// } + }catch (Exception e){ log.error(""+e.getMessage()); } - return FAIL; + reportMes(agvWrkMast,agvWrkDetlListOld); + return SUCCESS; } @Transactional public ReturnT<String> completedCarryWrk2(AgvWrkMast agvWrkMast) { + //鐢ㄤ簬涓婃姤mes鐨勫伐浣滄。鏄庣粏 + List<AgvWrkDetl> agvWrkDetlListOld = agvWrkDetlService.selectList(new EntityWrapper<AgvWrkDetl>().eq("wrk_no", agvWrkMast.getWrkNo())); + try{ int wrkNo = agvWrkMast.getWrkNo(); String orderNo = getOrderNoByWrkNo(wrkNo); @@ -374,11 +446,18 @@ orderService.checkComplete(o); }); } - return SUCCESS; + //涓婃姤mes +// 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 @@ -547,4 +626,219 @@ return wrkMast; } + + private void reportMes(AgvWrkMast agvWrkMast, List<AgvWrkDetl> agvWrkDetls){ + if(Cools.isEmpty(agvWrkDetls)){ + return ; + } + //鍖哄垎涓嶅悓浠诲姟绫诲瀷鐨勪笂鎶ユ柟寮� + + 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"); + } + } + + } + + 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); + } + + MesOrderReportParam param = new MesOrderReportParam(); + + 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()); + //璋冩嫧 + 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){ + MesOrderReportParam.TransferOrderItem.InventoryDetail inventoryDetail = new MesOrderReportParam.TransferOrderItem.InventoryDetail(); + //娣诲姞amount灞炴�� + 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(Cools.isEmpty(agvWrkDetl.getBatch()) ? "" : agvWrkDetl.getBatch().trim()); + inventoryDetail.setBizKey(bizKey); + //娣诲姞inventoryDetail灞炴�� + inventoryDetail.setLocationCode(agvWrkMast.getSourceLocNo()); + inventoryDetail.setMaterialCode(agvWrkDetl.getMatnr()); + 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); + } + + 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); + + 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()); + + return headParam; + + } + + //鏍规嵁妤煎眰榛樿鍑哄簱浠撲綅 + 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; + + 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()); + } + success = true; + 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