From d60a3685ddd0479d31639fdbc72975d4c359a2b3 Mon Sep 17 00:00:00 2001 From: icewint Date: Thu, 22 Jan 2026 13:57:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=E4=BB=93=E5=82=A8=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E6=B3=A8=E5=86=8C=E8=BD=AC=E7=A7=BB=E5=88=B0=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=E4=B8=8A=E6=8A=A5=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/wcs/business/pub/ReportStandard.java | 80 ++++++++++++++++++- .../wcs/business/stock/impl/ScanMethod.java | 41 +++------- 2 files changed, 88 insertions(+), 33 deletions(-) diff --git a/wcs/src/main/java/org/wcs/business/pub/ReportStandard.java b/wcs/src/main/java/org/wcs/business/pub/ReportStandard.java index 09c0329..3ffd949 100644 --- a/wcs/src/main/java/org/wcs/business/pub/ReportStandard.java +++ b/wcs/src/main/java/org/wcs/business/pub/ReportStandard.java @@ -1,15 +1,21 @@ package org.wcs.business.pub; +import com.alibaba.fastjson2.JSONObject; +import com.alibaba.fastjson2.TypeReference; import lombok.extern.slf4j.Slf4j; import org.wcs.constant.ConstantData; import org.wcs.constant.enums.http.StockCallBackStatusEnum; import org.wcs.model.bo.tuple.Tuple2; +import org.wcs.model.dto.client.StockLoginDataResp; +import org.wcs.model.dto.client.StockLoginReq; import org.wcs.model.dto.client.StockTaskStatusUploadReq; +import org.wcs.model.dto.client.UpperSystemDataResponse; import org.wcs.model.po.app.AppStockComposeTask; import org.wcs.plugin.webHttpClient.WebHttpClient; import org.wcs.plugin.webHttpClient.model.HttpRequest; import org.wcs.plugin.webHttpClient.model.HttpResponse; import org.wcs.utils.AppStringUtils; +import org.wcs.utils.AppUUIDUtils; /** * 标准上报上位系统类 @@ -19,6 +25,8 @@ public class ReportStandard { // 仓库任务上报状态地址键,用任务来源拼接此字符串查找上位系统地址 private static final String stockTaskCallBackAddressKey = "_STOCK_TASK_STATUS_CALLBACK"; + // 仓库任务申请地址键,用任务点绑定的系统拼接此字符串查找上位系统地址 + private static final String stockLoginRequestAddressKey = "_STOCK_LOGIN_REQ"; /** * 上报仓库任务状态 @@ -75,10 +83,80 @@ public class ReportStandard { errText += httpResponse.getException().getMessage(); } return new Tuple2<>(errText, null); + } + /** + * 仓库任务申请 + * @param sysName 系统名称 + * @param vehicleNo 车辆编号 + * @param origin 源点 + * @return <错误信息,响应数据 > + */ + public static Tuple2 stockLoginRequest(String sysName, String vehicleNo, String origin) { + return stockLoginRequest(sysName, vehicleNo, origin, 0, 0, 0, 0, 0); + } - + /** + * 仓库任务申请 + * @param sysName 系统名称 + * @param vehicleNo 车辆编号 + * @param origin 源点 + * @param size 尺寸 + * @param weight 重量 + * @return <错误信息,响应数据 > + */ + public static Tuple2 stockLoginRequest(String sysName, String vehicleNo, String origin, Integer size, Integer weight) { + return stockLoginRequest(sysName, vehicleNo, origin, size, weight, 0, 0, 0); } + /** + * 仓库任务申请 + * @param sysName 系统名称 + * @param vehicleNo 车辆编号 + * @param origin 源点 + * @param size 尺寸 + * @param weight 重量 + * @param length 长度 + * @param width 宽度 + * @param height 高度 + * @return <错误信息,响应数据 > + */ + public static Tuple2 stockLoginRequest(String sysName, String vehicleNo, String origin, Integer size, Integer weight, Integer length, Integer width, Integer height) { + // 请求上位系统 + StockLoginReq stockLoginReq = new StockLoginReq(); + stockLoginReq.setRequestId(AppUUIDUtils.getNewUUID()); + stockLoginReq.setVehicleNo(vehicleNo); + stockLoginReq.setLocation(origin); + stockLoginReq.setSize(size); + stockLoginReq.setLength(length); + stockLoginReq.setWidth(width); + stockLoginReq.setHeight(height); + stockLoginReq.setWeight(weight); + HttpRequest httpRequest = HttpRequest.buildStart() + .post() + .setAddressKey(sysName + stockLoginRequestAddressKey) + .setBody(AppStringUtils.objectToString(stockLoginReq)) + .buildEnd(); + HttpResponse httpResponse = WebHttpClient.httpRequest(httpRequest); + if(!httpResponse.isSuccess()) { + log.info("点位:{} 申请仓储任务失败,异常信息:{}", origin, httpResponse.getException().toString()); + return new Tuple2<>("请求服务器失败", null); + } + String responseText = httpResponse.getResponseText(); + UpperSystemDataResponse upperSystemDataResponse = JSONObject.parseObject(responseText, new TypeReference<>(){}); + if(upperSystemDataResponse == null) { + log.info("点位:{} 申请仓储任务失败,返回的数据无法解析,返回信息:{}", origin, responseText); + return new Tuple2<>("请求返回的任务数据无法解析", null); + } + if(!upperSystemDataResponse.isOk()) { + log.info("点位:{} 申请仓储任务失败,上位返回信息:{}", origin, upperSystemDataResponse.getMessage()); + return new Tuple2<>(upperSystemDataResponse.getMessage(), null); + } + log.info("点位:{} 申请仓储任务成功,信息:{}", origin, upperSystemDataResponse.getMessage()); + return new Tuple2<>(null, upperSystemDataResponse.getReturnData()); + } + + + } diff --git a/wcs/src/main/java/org/wcs/business/stock/impl/ScanMethod.java b/wcs/src/main/java/org/wcs/business/stock/impl/ScanMethod.java index 2381bb5..f11ffd9 100644 --- a/wcs/src/main/java/org/wcs/business/stock/impl/ScanMethod.java +++ b/wcs/src/main/java/org/wcs/business/stock/impl/ScanMethod.java @@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.wcs.annotation.ScanMethodTag; +import org.wcs.business.pub.ReportStandard; import org.wcs.business.stock.intf.IScanMethod; import org.wcs.constant.ConstantData; import org.wcs.constant.enums.common.TrueOrFalseEnum; @@ -16,6 +17,7 @@ import org.wcs.constant.enums.database.StockComposeTaskTypeEnum; import org.wcs.helper.PlcTaskIdHelper; import org.wcs.mapper.intf.AppStackerLocationService; import org.wcs.mapper.intf.AppStockComposeTaskService; +import org.wcs.model.bo.tuple.Tuple2; import org.wcs.model.dto.client.StockLoginDataResp; import org.wcs.model.dto.client.StockLoginReq; import org.wcs.model.dto.client.UpperSystemDataResponse; @@ -94,43 +96,18 @@ public class ScanMethod implements IScanMethod { writeSimpleScanTask(stockScan, (short)1); return; } - // 请求上位系统 - StockLoginReq stockLoginReq = new StockLoginReq(); - stockLoginReq.setRequestId(AppUUIDUtils.getNewUUID()); - stockLoginReq.setVehicleNo(scanInfo.getVehicleNo()); - stockLoginReq.setLocation(stockScan.getScanId()); - stockLoginReq.setSize(Integer.valueOf(scanInfo.getVehicleSize() == null ? 0 : scanInfo.getVehicleSize())); - stockLoginReq.setLength(scanInfo.getLength() == null ? 0 : scanInfo.getLength()); - stockLoginReq.setWidth(scanInfo.getWidth() == null ? 0 : scanInfo.getWidth()); - stockLoginReq.setHeight(scanInfo.getHeight() == null ? 0 : scanInfo.getHeight()); - stockLoginReq.setWeight(scanInfo.getWeight() == null ? 0 : scanInfo.getWeight()); - HttpRequest httpRequest = HttpRequest.buildStart() - .post() - .setAddressKey(stockScan.getParam1() + "_LOGIN_STACKER") - .setBody(AppStringUtils.objectToString(stockLoginReq)) - .buildEnd(); - HttpResponse httpResponse = WebHttpClient.httpRequest(httpRequest); - if(!httpResponse.isSuccess()) { - log.info("扫码:{} 申请堆垛机任务失败,异常信息:{}", stockScan.getScanId(), httpResponse.getException().toString()); + // 请求上位系统获取任务 + Tuple2 stringStockLoginDataResp = ReportStandard.stockLoginRequest(stockScan.getParam1(), code, stockScan.getScanId(), Integer.valueOf(scanInfo.getVehicleSize()), scanInfo.getWeight(), scanInfo.getLength(), scanInfo.getWidth(), scanInfo.getHeight()); + if(AppStringUtils.isNotEmpty(stringStockLoginDataResp.getItem1()) || stringStockLoginDataResp.getItem2() == null) { + // 请求失败 + log.info("扫码:{} 申请堆垛机任务失败,异常信息:{}", stockScan.getScanId(), stringStockLoginDataResp.getItem1()); writeSimpleScanTask(stockScan, (short)2); return; } - String responseText = httpResponse.getResponseText(); - UpperSystemDataResponse upperSystemDataResponse = JSONObject.parseObject(responseText, new TypeReference<>(){}); - if(upperSystemDataResponse == null) { - log.info("扫码:{} 申请堆垛机任务失败,返回的数据无法解析,返回信息:{}", stockScan.getScanId(), responseText); - writeSimpleScanTask(stockScan, (short)2); - return; - } - if(!upperSystemDataResponse.isOk()) { - log.info("扫码:{} 申请堆垛机任务失败,返回信息:{}", stockScan.getScanId(), upperSystemDataResponse.getMessage()); - writeSimpleScanTask(stockScan, (short)2); - return; - } - log.info("扫码:{} 申请堆垛机任务成功,信息:{}", stockScan.getScanId(), upperSystemDataResponse.getMessage()); + log.info("扫码:{} 申请堆垛机任务成功", stockScan.getScanId()); writeSimpleScanTask(stockScan, (short)1); // 生成任务 - StockLoginDataResp returnData = upperSystemDataResponse.getReturnData(); + StockLoginDataResp returnData = stringStockLoginDataResp.getItem2(); if(returnData == null) { return; }