将仓储任务注册转移到统一上报类

This commit is contained in:
葛林强 2026-01-22 13:57:51 +08:00
parent 52edde38c5
commit d60a3685dd
2 changed files with 88 additions and 33 deletions

View File

@ -1,15 +1,21 @@
package org.wcs.business.pub; package org.wcs.business.pub;
import com.alibaba.fastjson2.JSONObject;
import com.alibaba.fastjson2.TypeReference;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.wcs.constant.ConstantData; import org.wcs.constant.ConstantData;
import org.wcs.constant.enums.http.StockCallBackStatusEnum; import org.wcs.constant.enums.http.StockCallBackStatusEnum;
import org.wcs.model.bo.tuple.Tuple2; 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.StockTaskStatusUploadReq;
import org.wcs.model.dto.client.UpperSystemDataResponse;
import org.wcs.model.po.app.AppStockComposeTask; import org.wcs.model.po.app.AppStockComposeTask;
import org.wcs.plugin.webHttpClient.WebHttpClient; import org.wcs.plugin.webHttpClient.WebHttpClient;
import org.wcs.plugin.webHttpClient.model.HttpRequest; import org.wcs.plugin.webHttpClient.model.HttpRequest;
import org.wcs.plugin.webHttpClient.model.HttpResponse; import org.wcs.plugin.webHttpClient.model.HttpResponse;
import org.wcs.utils.AppStringUtils; 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 stockTaskCallBackAddressKey = "_STOCK_TASK_STATUS_CALLBACK";
// 仓库任务申请地址键用任务点绑定的系统拼接此字符串查找上位系统地址
private static final String stockLoginRequestAddressKey = "_STOCK_LOGIN_REQ";
/** /**
* 上报仓库任务状态 * 上报仓库任务状态
@ -75,10 +83,80 @@ public class ReportStandard {
errText += httpResponse.getException().getMessage(); errText += httpResponse.getException().getMessage();
} }
return new Tuple2<>(errText, null); return new Tuple2<>(errText, null);
}
/**
* 仓库任务申请
* @param sysName 系统名称
* @param vehicleNo 车辆编号
* @param origin 源点
* @return <错误信息响应数据 >
*/
public static Tuple2<String, StockLoginDataResp> 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<String, StockLoginDataResp> 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<String, StockLoginDataResp> 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<StockLoginDataResp> 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());
}
}
} }

View File

@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.wcs.annotation.ScanMethodTag; import org.wcs.annotation.ScanMethodTag;
import org.wcs.business.pub.ReportStandard;
import org.wcs.business.stock.intf.IScanMethod; import org.wcs.business.stock.intf.IScanMethod;
import org.wcs.constant.ConstantData; import org.wcs.constant.ConstantData;
import org.wcs.constant.enums.common.TrueOrFalseEnum; 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.helper.PlcTaskIdHelper;
import org.wcs.mapper.intf.AppStackerLocationService; import org.wcs.mapper.intf.AppStackerLocationService;
import org.wcs.mapper.intf.AppStockComposeTaskService; 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.StockLoginDataResp;
import org.wcs.model.dto.client.StockLoginReq; import org.wcs.model.dto.client.StockLoginReq;
import org.wcs.model.dto.client.UpperSystemDataResponse; import org.wcs.model.dto.client.UpperSystemDataResponse;
@ -94,43 +96,18 @@ public class ScanMethod implements IScanMethod {
writeSimpleScanTask(stockScan, (short)1); writeSimpleScanTask(stockScan, (short)1);
return; return;
} }
// 请求上位系统 // 请求上位系统获取任务
StockLoginReq stockLoginReq = new StockLoginReq(); Tuple2<String, StockLoginDataResp> stringStockLoginDataResp = ReportStandard.stockLoginRequest(stockScan.getParam1(), code, stockScan.getScanId(), Integer.valueOf(scanInfo.getVehicleSize()), scanInfo.getWeight(), scanInfo.getLength(), scanInfo.getWidth(), scanInfo.getHeight());
stockLoginReq.setRequestId(AppUUIDUtils.getNewUUID()); if(AppStringUtils.isNotEmpty(stringStockLoginDataResp.getItem1()) || stringStockLoginDataResp.getItem2() == null) {
stockLoginReq.setVehicleNo(scanInfo.getVehicleNo()); // 请求失败
stockLoginReq.setLocation(stockScan.getScanId()); log.info("扫码:{} 申请堆垛机任务失败,异常信息:{}", stockScan.getScanId(), stringStockLoginDataResp.getItem1());
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());
writeSimpleScanTask(stockScan, (short)2); writeSimpleScanTask(stockScan, (short)2);
return; return;
} }
String responseText = httpResponse.getResponseText(); log.info("扫码:{} 申请堆垛机任务成功", stockScan.getScanId());
UpperSystemDataResponse<StockLoginDataResp> 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());
writeSimpleScanTask(stockScan, (short)1); writeSimpleScanTask(stockScan, (short)1);
// 生成任务 // 生成任务
StockLoginDataResp returnData = upperSystemDataResponse.getReturnData(); StockLoginDataResp returnData = stringStockLoginDataResp.getItem2();
if(returnData == null) { if(returnData == null) {
return; return;
} }