优化修正请求和响应逻辑

This commit is contained in:
lsymicc
2026-04-09 08:50:52 +08:00
parent 38d27e3cf2
commit 715fd4a017
16 changed files with 286 additions and 135 deletions

View File

@@ -20,12 +20,12 @@ public class ResponseResult {
/**
* 请求是否成功
*/
private Integer success;
private boolean success;
/**
* 提示信息
*/
private boolean message;
private String message;
/**
* 成功时返回任务信息对象

View File

@@ -40,6 +40,6 @@ public class TaskExceptionRequest {
/**
* 异常任务的类型 - 1052-入库有货,2-出库无货
*/
private int type;
private String type;
}

View File

@@ -33,7 +33,6 @@ import java.util.Map;
public interface IApiService
{
/**
* 生成agv队列
* @param code1 起点
@@ -90,6 +89,13 @@ public interface IApiService
*/
RequestLog finishMydoJob(Map<String, Object> param);
/**
* @@@ FT568 任务完成回传 适应wms的自定义响应格式
* @param param
* @return
*/
RequestLog finishMydoJobForResponseResult(Map<String, Object> param);
/**
* 下发agv任务
* @param agvQueue
@@ -144,6 +150,11 @@ public interface IApiService
*/
AjaxResult createInMydoJob(Map<String, Object> param);
/**
* @@@ FT568 入库请求生成作业 处理了请求响应,适应wms的自定义响应格式
*/
AjaxResult createMydoJobForStockin(Map<String, Object> param);
/**
* 入库请求作业异常反馈(扫码失败、外形、称重等异常)
*/

View File

@@ -77,4 +77,13 @@ public interface IRequestLogService
public RequestLog getRequestLog(String url, String param);
RequestLog getRequestLog2(String url, String param, String endPoint);
/**
* @@@ FT568 使用用户自定义的wms请求响应
* @param url
* @param endPoint
* @param param
* @return
*/
RequestLog getRequestLogForResponseResult(String url, String endPoint, String param);
}

View File

@@ -18,6 +18,8 @@ import com.ruoyi.api.domain.agv.genAgvSchedulingTask.GenAgvSchedulingTaskRespons
import com.ruoyi.api.domain.agv.genAgvSchedulingTask.PositionCodeData;
import com.ruoyi.api.domain.wcs2wms.JobParam;
import com.ruoyi.api.domain.wcs2wms.ReceiveJob;
import com.ruoyi.api.domain.wcs2wms.ResponseResult;
import com.ruoyi.api.domain.wcs2wms.exception.TaskExceptionReceive;
import com.ruoyi.api.domain.wcs2wms.exception.TaskExceptionRequest;
import com.ruoyi.api.domain.wcs2wms.stockout.StockoutReceive;
import com.ruoyi.api.service.IApiService;
@@ -54,6 +56,7 @@ import static com.ruoyi.common.TaskStatusCode.TASK_EP_ROADWAY_SSJ;
@Service
@Slf4j
public class ApiServiceImpl implements IApiService {
@Autowired
private RequestLogServiceImpl requestLogService;
@Autowired
@@ -155,6 +158,15 @@ public class ApiServiceImpl implements IApiService {
return requestLogService.getRequestLog(WMS_TASK_FINISH, "任务完成上报", JSONUtil.toJsonStr(param));
}
/**
* @@@ FT568 任务完成回传 适应wms的自定义响应格式
* @param param
* @return
*/
public RequestLog finishMydoJobForResponseResult(Map<String, Object> param) {
return requestLogService.getRequestLogForResponseResult(WMS_TASK_FINISH, "任务完成上报", JSONUtil.toJsonStr(param));
}
/**
* 处理agv状态返回
@@ -266,10 +278,13 @@ public class ApiServiceImpl implements IApiService {
*/
@Override
public AjaxResult reAssign(TaskExceptionRequest taskExceptionRequest) {
RequestLog requestLog = requestLogService.getRequestLog(WMS_TASK_EXCEPTION, "入库异常-重新分配货位", JSONUtil.toJsonStr(taskExceptionRequest));
RequestLog requestLog = requestLogService.getRequestLogForResponseResult(WMS_TASK_EXCEPTION, "入库异常-重新分配货位", JSONUtil.toJsonStr(taskExceptionRequest));
if ("1".equals(requestLog.getIsSuccessful())){
InterfaceReceive bean = JSONUtil.toBean(requestLog.getResponseBody(), InterfaceReceive.class);
MydoJob wmsMydoJob = BeanUtil.toBean(bean.getData(), MydoJob.class);
//请求获取新分配的货位
ResponseResult bean = JSONUtil.toBean(requestLog.getResponseBody(), ResponseResult.class);
MydoJob wmsMydoJob = BeanUtil.toBean(bean.getResult(), MydoJob.class);
//更新任务信息
MydoJob mydoJob = mydoJobService.selectMydoJobByJobId(wmsMydoJob.getJobId());
mydoJob.setCargoSpaceId(wmsMydoJob.getCargoSpaceId());
mydoJobService.updateMydoJob(mydoJob);
@@ -299,7 +314,7 @@ public class ApiServiceImpl implements IApiService {
*/
@Override
public AjaxResult reMaterial(TaskExceptionRequest taskExceptionRequest) {
RequestLog requestLog = requestLogService.getRequestLog(WMS_TASK_EXCEPTION, "出库无货异常-任务作废", JSONUtil.toJsonStr(taskExceptionRequest));
RequestLog requestLog = requestLogService.getRequestLogForResponseResult(WMS_TASK_EXCEPTION, "出库无货异常-任务作废", JSONUtil.toJsonStr(taskExceptionRequest));
if ("1".equals(requestLog.getIsSuccessful())){
return AjaxResult.success();
}
@@ -434,7 +449,23 @@ public class ApiServiceImpl implements IApiService {
}
/**
* 入库请求作业异常反馈(扫码失败、外形、称重等异常)
* @@@ FT568 请求wms获取入库任务参数 - 适应wms的自定义请求响应格式
* @param param
* @return
*/
@Override
public AjaxResult createMydoJobForStockin(Map<String, Object> param) {
RequestLog requestLog = requestLogService.getRequestLogForResponseResult(WMS_STOCKIN_MYDOJOB, "入库请求生成作业", JSONUtil.toJsonStr(param));
if ("1".equals(requestLog.getIsSuccessful())) {
ResponseResult bean = JSONUtil.toBean(requestLog.getResponseBody(), ResponseResult.class);
return AjaxResult.success(bean.getResult());
} else {
return AjaxResult.error();
}
}
/**
* @@@ FT568 入库请求作业异常反馈(扫码失败、外形、称重等异常)
* @param param
* @return
*/

View File

@@ -9,6 +9,7 @@ import cn.hutool.core.date.DateUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.json.JSONUtil;
import com.ruoyi.api.domain.InterfaceReceive;
import com.ruoyi.api.domain.wcs2wms.ResponseResult;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -131,6 +132,7 @@ public class RequestLogServiceImpl implements IRequestLogService
String resStr = HttpUtil.post(url, param);
requestLog.setResponseBody(resStr);
InterfaceReceive bean = JSONUtil.toBean(resStr, InterfaceReceive.class);
if (bean.getCode() == 200) {
requestLog.setResponseTime(DateUtil.format(responseTime, "yyyy-MM-dd HH:mm:ss"));
requestLog.setResponseStatus("1");
@@ -173,6 +175,7 @@ public class RequestLogServiceImpl implements IRequestLogService
String resStr = HttpUtil.post(url, param);
requestLog.setResponseBody(resStr);
InterfaceReceive bean = JSONUtil.toBean(resStr, InterfaceReceive.class);
if (bean.getCode() == 0) {
requestLog.setResponseTime(DateUtil.format(responseTime, "yyyy-MM-dd HH:mm:ss"));
requestLog.setResponseStatus("1");
@@ -198,6 +201,56 @@ public class RequestLogServiceImpl implements IRequestLogService
return requestLog;
}
/**
* @@@ FT568 使用用户自定义的wms请求响应
* @param url
* @param endPoint
* @param param
* @return
*/
@Override
public RequestLog getRequestLogForResponseResult(String url, String endPoint, String param) {
RequestLog requestLog = new RequestLog();
Date requestTime = new Date();
requestLog.setRequestTime(DateUtil.format(requestTime, "yyyy-MM-dd HH:mm:ss"));
requestLog.setSourceSystem("wcs");
requestLog.setTargetSystem("wms");
requestLog.setEndpoint(endPoint);
requestLog.setRequestMethod("post");
requestLog.setRequestHeaders(null);
requestLog.setRequestBody(param);
requestLog.setRequestUrl(url);
Date responseTime =new Date();
try {
String resStr = HttpUtil.post(url, param);
requestLog.setResponseBody(resStr);
ResponseResult bean = JSONUtil.toBean(resStr, ResponseResult.class);
if (bean.getCode() == 200) {
requestLog.setResponseTime(DateUtil.format(responseTime, "yyyy-MM-dd HH:mm:ss"));
requestLog.setResponseStatus("1");
requestLog.setDuration(Convert.toStr(DateUtil.between(requestTime, responseTime, DateUnit.MS)));
requestLog.setIsSuccessful("1");
}else {
requestLog.setResponseTime(DateUtil.format(responseTime, "yyyy-MM-dd HH:mm:ss"));
requestLog.setResponseStatus("0");
requestLog.setErrorDetails(bean.isSuccess() + "-" + bean.getMessage());
requestLog.setIsSuccessful("0");
requestLog.setDuration(Convert.toStr(DateUtil.between(requestTime, responseTime, DateUnit.MS)));
}
} catch (Exception e) {
requestLog.setResponseTime(DateUtil.format(responseTime, "yyyy-MM-dd HH:mm:ss"));
requestLog.setErrorDetails(e.getMessage());
requestLog.setIsSuccessful("0");
requestLog.setResponseStatus("0");
requestLog.setDuration(Convert.toStr(DateUtil.between(requestTime, responseTime, DateUnit.MS)));
} finally {
insertRequestLog(requestLog);
}
return requestLog;
}
/**
* 插入请求日志
@@ -219,5 +272,24 @@ public class RequestLogServiceImpl implements IRequestLogService
return requestLog;
}
/**
* @@@ FT568 将wms自定义的响应格式解析为本地响应格式(减少其他改动)
* @param responseStr 请求响应字符串
* @return
*/
public InterfaceReceive resultToBean(String responseStr) {
InterfaceReceive interfaceReceive = new InterfaceReceive();
//返回供应商wms自定义的ResponseResult,解析为本地InterfaceReceive响应格式
ResponseResult result =JSONUtil.toBean(responseStr, ResponseResult.class);
interfaceReceive.setCode(result.getCode());
interfaceReceive.setMsg(result.isSuccess() + "-" + result.getMessage());
interfaceReceive.setData(result.getResult());
return interfaceReceive;
}
}