修改请求入库、处理异常任务接口
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
package com.ruoyi.api.domain.wcs2wms;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 请求响应信息
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ResponseResult {
|
||||
|
||||
/**
|
||||
* 状态码:200 成功,500 失败,400 参数错误
|
||||
*/
|
||||
private Integer code;
|
||||
|
||||
/**
|
||||
* 请求是否成功
|
||||
*/
|
||||
private Integer success;
|
||||
|
||||
/**
|
||||
* 提示信息
|
||||
*/
|
||||
private boolean message;
|
||||
|
||||
/**
|
||||
* 成功时返回任务信息对象
|
||||
*/
|
||||
private Object result;
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.ruoyi.api.domain.wcs2wms.exception;
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
|
||||
/**
|
||||
* 出入库异常信息上报响应信息
|
||||
*
|
||||
* 【常见错误】
|
||||
* 任务编号不可为空 未传 taskCode
|
||||
* 未找到该任务信息xxxxx taskCode 对应的任务在系统中不存在
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TaskExceptionReceive {
|
||||
|
||||
/**
|
||||
* 系统生成的任务编号(唯一)
|
||||
*/
|
||||
private String taskCode;
|
||||
|
||||
/**
|
||||
* 异请求时传入的 reqCode,原样回传
|
||||
*/
|
||||
private String reqCode;
|
||||
|
||||
/**
|
||||
* 转存库位编号
|
||||
*/
|
||||
private String siteCode;
|
||||
|
||||
}
|
||||
@@ -4,19 +4,42 @@ import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 出入库异常信息上报
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TaskExceptionRequest {
|
||||
|
||||
/**
|
||||
* 任务号
|
||||
* 异常任务类型
|
||||
*/
|
||||
private String taskNo;
|
||||
private String taskTypeCode;
|
||||
|
||||
/**
|
||||
* 异常类型
|
||||
* 需要上报异常的任务编号(系统任务号)
|
||||
*/
|
||||
private int exceptionType;
|
||||
private String taskCode;
|
||||
|
||||
/**
|
||||
* 异常类别:1-入库,2-出库
|
||||
*/
|
||||
private String taskClass;
|
||||
|
||||
/**
|
||||
* 请求唯一编号,原样回传
|
||||
*/
|
||||
private String reqCode;
|
||||
|
||||
/**
|
||||
* 异常信息
|
||||
*/
|
||||
private String adverseCauses;
|
||||
|
||||
/**
|
||||
* 异常任务的类型 - 1052-入库有货,2-出库无货
|
||||
*/
|
||||
private int type;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,29 +1,43 @@
|
||||
package com.ruoyi.api.domain.wcs2wms.stockin;
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 入库请求返回
|
||||
*
|
||||
* 【常见错误】
|
||||
* 任务类型不可为空 未传 taskTypeCode
|
||||
* 该任务类型未配置 taskTypeCode 在系统中不存在
|
||||
* 该任务类型无点位配置信息 任务类型缺少点位模板
|
||||
* 该任务类型未开启 任务类型状态为禁用
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class StockinReceive {
|
||||
|
||||
/**
|
||||
* wms下发任务号
|
||||
* 系统生成的任务编号(唯一)
|
||||
*/
|
||||
private String taskNo;
|
||||
private String taskCode;
|
||||
|
||||
/**
|
||||
* WMS分配的目标库位编号
|
||||
* 请求时传入的 reqCode,原样回传
|
||||
*/
|
||||
private String cargoSpaceId;
|
||||
private String reqCode;
|
||||
|
||||
/**
|
||||
* 巷道编号
|
||||
* 容器编号(containerCode)
|
||||
*/
|
||||
private String roadwayId;
|
||||
private String cntCode;
|
||||
|
||||
/**
|
||||
* 作业单ID
|
||||
* 终点库位编号
|
||||
*/
|
||||
private String jobId;
|
||||
private String siteCode;
|
||||
|
||||
|
||||
/**
|
||||
* 入出库标识
|
||||
*/
|
||||
private String inOrOut;
|
||||
}
|
||||
|
||||
@@ -13,24 +13,34 @@ import lombok.NoArgsConstructor;
|
||||
@NoArgsConstructor
|
||||
public class StockinRequest {
|
||||
|
||||
/**
|
||||
* 任务类型编号(必填),对应 WMS 任务配置中的类型 code
|
||||
*/
|
||||
private String taskTypeCode;
|
||||
|
||||
/**
|
||||
* 请求码 - 请求唯一编号,原样回传到响应中,便于追踪
|
||||
*/
|
||||
private String reqCode;
|
||||
|
||||
/**
|
||||
* 托盘号
|
||||
*/
|
||||
private String trayCode;
|
||||
private String cntCode;
|
||||
|
||||
/**
|
||||
* 重量
|
||||
* 货物高度 - 0-第一档高度,1-第二档高度,2-超高
|
||||
*/
|
||||
private int weight;
|
||||
private String altimetry;
|
||||
|
||||
/**
|
||||
* 货物高度
|
||||
* 重量 - 0-正常,1-超重。
|
||||
*/
|
||||
private int height;
|
||||
private String weight;
|
||||
|
||||
/**
|
||||
* 异常信息
|
||||
*/
|
||||
private String errorInfo;
|
||||
private String adverseCauses;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,22 +1,32 @@
|
||||
package com.ruoyi.api.domain.wcs2wms.taskFinish;
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* 任务完成回传请求
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class TaskFinishRequest {
|
||||
|
||||
/**
|
||||
* 任务号
|
||||
* 任务类型(必填)
|
||||
*/
|
||||
private String taskNo;
|
||||
private String taskTypeCode;
|
||||
|
||||
/**
|
||||
* 作业单ID
|
||||
* 请求唯一编号,原样回传到响应中,便于追踪
|
||||
*/
|
||||
private String jobId;
|
||||
private String reqCode;
|
||||
|
||||
/**
|
||||
* 完成类型枚举值
|
||||
* 1-入库完成 2-出库完成
|
||||
* 任务编号
|
||||
*/
|
||||
private String type;
|
||||
private String taskCode;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,36 @@
|
||||
package com.ruoyi.api.domain.wcs2wms.taskFinish;
|
||||
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
|
||||
/**
|
||||
* 任务完成回传响应
|
||||
*
|
||||
* 【常见错误】
|
||||
* 任务编号不可为空 未传 taskCode
|
||||
* 未找到该任务信息xxxxx taskCode 对应的任务在系统中不存在
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class taskFinishReceive {
|
||||
|
||||
/**
|
||||
* 任务类型(必填)
|
||||
*/
|
||||
private String taskTypeCode;
|
||||
|
||||
/**
|
||||
* 请求唯一编号,原样回传到响应中,便于追踪
|
||||
*/
|
||||
private String reqCode;
|
||||
|
||||
/**
|
||||
* 任务编号
|
||||
*/
|
||||
private String taskCode;
|
||||
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ Y锁、N开 */
|
||||
|
||||
/** 货位高度 */
|
||||
@Excel(name = "货位高度")
|
||||
private String cargoHight;
|
||||
private String cargoHeight;
|
||||
|
||||
/** 是否双伸 Y N */
|
||||
@Excel(name = "是否双伸 Y N ")
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.ruoyi.common;
|
||||
|
||||
public class Constant {
|
||||
|
||||
public static final String WMS_BASE_URL = "http://192.168.58.10:8082/api2wms/";
|
||||
public static final String WMS_BASE_URL = "http://192.168.58.10:8082/api2wms";
|
||||
public static final String RCS_BASE_URL = "http://192.168.58.101:8182/rcms/services/rest/hikRpcService/";
|
||||
|
||||
//#region AGV接口url
|
||||
@@ -27,16 +27,16 @@ public class Constant {
|
||||
/**
|
||||
* 向wms请求入库url
|
||||
*/
|
||||
public static final String WMS_STOCKIN_MYDOJOB = WMS_BASE_URL + "wcs/inbound/info";
|
||||
public static final String WMS_STOCKIN_MYDOJOB = WMS_BASE_URL + "/api/external/taskIssue";
|
||||
|
||||
/**
|
||||
* 向wms请求任务回传url
|
||||
*/
|
||||
public static final String WMS_TASK_FINISH = WMS_BASE_URL + "wcs/task/complete";
|
||||
public static final String WMS_TASK_FINISH = WMS_BASE_URL + "/api/external/taskIssue";
|
||||
|
||||
/**
|
||||
* 异常信息回传url
|
||||
*/
|
||||
public static final String WMS_TASK_EXCEPTION = WMS_BASE_URL + "wcs/exception/report";
|
||||
public static final String WMS_TASK_EXCEPTION = WMS_BASE_URL + "/api/external/taskIssue";
|
||||
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ public class TaskExceptionType {
|
||||
/**
|
||||
* 任务异常 - 入库放货有货
|
||||
*/
|
||||
public static final int TASK_EXCEPTION_STOCKIN_OCCUPIED = 1;
|
||||
public static final int TASK_EXCEPTION_STOCKIN_OCCUPIED = 1052;
|
||||
|
||||
/**
|
||||
* 任务异常 - 出库取货无货
|
||||
|
||||
@@ -4,6 +4,7 @@ import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import cn.hutool.core.lang.UUID;
|
||||
import cn.hutool.core.util.ObjUtil;
|
||||
import com.ruoyi.api.domain.wcs2wms.JobParam;
|
||||
import com.ruoyi.api.domain.wcs2wms.exception.TaskExceptionRequest;
|
||||
@@ -150,9 +151,16 @@ public class DdjThread implements Runnable {
|
||||
mydoJob.setStatus("1");
|
||||
mydoJobService.updateMydoJob(mydoJob);
|
||||
|
||||
//向wms请求重分接口
|
||||
// todo-在此商定每种异常类型对应的值
|
||||
AjaxResult ajaxResult = apiService.reAssign(new TaskExceptionRequest(mydoJob.getTaskNo(),TASK_EXCEPTION_STOCKIN_OCCUPIED));
|
||||
//上报异常 - 向wms请求重分接口
|
||||
TaskExceptionRequest taskExceptionRequest = new TaskExceptionRequest();
|
||||
taskExceptionRequest.setTaskClass(mydoJob.getInOrOut());
|
||||
taskExceptionRequest.setType(TASK_EXCEPTION_STOCKIN_OCCUPIED);
|
||||
taskExceptionRequest.setTaskCode(String.valueOf(mydoJob));
|
||||
taskExceptionRequest.setTaskTypeCode("");//todo 不知道填什么内容
|
||||
taskExceptionRequest.setReqCode(UUID.randomUUID().toString());
|
||||
taskExceptionRequest.setAdverseCauses("当前位置已有货物,盘点后重新分配货位");
|
||||
|
||||
AjaxResult ajaxResult = apiService.reAssign(taskExceptionRequest);
|
||||
if (ajaxResult.isSuccess()){
|
||||
//获取返回的新货位
|
||||
MydoJob mydoJobReAssign = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class);
|
||||
@@ -188,7 +196,15 @@ public class DdjThread implements Runnable {
|
||||
//找到对应任务 调用api接口 取货无货,重新分配单据
|
||||
if (ObjUtil.isNotNull(ddjDeviceExecutionQueue)) {
|
||||
//向wms返回异常信息
|
||||
AjaxResult ajaxResult = apiService.reMaterial(new TaskExceptionRequest(mydoJob.getTaskNo(),TASK_EXCEPTION_STOCKOUT_EMPTY));
|
||||
TaskExceptionRequest taskExceptionRequest = new TaskExceptionRequest();
|
||||
taskExceptionRequest.setTaskClass(mydoJob.getInOrOut());
|
||||
taskExceptionRequest.setType(TASK_EXCEPTION_STOCKOUT_EMPTY);
|
||||
taskExceptionRequest.setTaskCode(String.valueOf(mydoJob));
|
||||
taskExceptionRequest.setTaskTypeCode("");//todo 不知道填什么内容
|
||||
taskExceptionRequest.setReqCode(UUID.randomUUID().toString());
|
||||
taskExceptionRequest.setAdverseCauses("取货位置空,盘点后作废该任务");
|
||||
|
||||
AjaxResult ajaxResult = apiService.reMaterial(taskExceptionRequest);
|
||||
if (ajaxResult.isSuccess()) {
|
||||
//作废作业
|
||||
InvalidMydoJob(rwh, ddj.getId());
|
||||
|
||||
@@ -2,8 +2,11 @@ package com.ruoyi.schedule.scheduleTask.ssj;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.convert.Convert;
|
||||
import cn.hutool.core.lang.UUID;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import com.ruoyi.api.domain.wcs2wms.ResponseResult;
|
||||
import com.ruoyi.api.domain.wcs2wms.stockin.StockinReceive;
|
||||
import com.ruoyi.api.service.IApiService;
|
||||
import com.ruoyi.bas.cargospace.domain.BasCargoSpace;
|
||||
import com.ruoyi.bas.cargospace.service.IBasCargoSpaceService;
|
||||
@@ -98,11 +101,14 @@ public class PortConvThread implements Runnable {
|
||||
//---------------------------入口取输送机(叉车取放货位置)---------------------------
|
||||
//输送机【非空闲】、【输送到位】、【条码不为空】、有【入库请求】
|
||||
if (inSsjDevice.getKx() != 1 && inSsjDevice.getDw() == 1) {
|
||||
|
||||
AjaxResult ajaxResult;
|
||||
|
||||
//请求参数
|
||||
HashMap<String, Object> paramMap = new HashMap<>();
|
||||
paramMap.put("trayCode", inSsjDevice.getTrayCode());//托盘条码
|
||||
paramMap.put("taskTypeCode", inSsjDevice.getTrayCode());//任务类型编号
|
||||
paramMap.put("reqCode", UUID.randomUUID().toString());//任请求码
|
||||
paramMap.put("cntCode", inSsjDevice.getTrayCode());//容器编号
|
||||
int height = inSsjDevice.getHeight();
|
||||
int weight = inSsjDevice.getWeight();
|
||||
paramMap.put("weight", weight);//重量
|
||||
@@ -113,7 +119,7 @@ public class PortConvThread implements Runnable {
|
||||
|
||||
//外形检测异常
|
||||
case ConvException.CHECK_SIZE_EXCEPTION:
|
||||
paramMap.put("errorInfo", "外形检测异常-货物超高");
|
||||
paramMap.put("adverseCauses", "外形检测异常-货物超高");
|
||||
ajaxResult = apiService.createInMydoJobException(paramMap);
|
||||
if (ajaxResult.isSuccess()) {
|
||||
//向输送机下发退回
|
||||
@@ -123,7 +129,7 @@ public class PortConvThread implements Runnable {
|
||||
|
||||
//超重检测
|
||||
case ConvException.CHECK_OVERWEIGHT_EXCEPTION:
|
||||
paramMap.put("errorInfo", "外形检测异常-货物超重");
|
||||
paramMap.put("adverseCauses", "外形检测异常-货物超重");
|
||||
ajaxResult = apiService.createInMydoJobException(paramMap);
|
||||
if (ajaxResult.isSuccess()) {
|
||||
//向输送机下发退回
|
||||
@@ -134,11 +140,11 @@ public class PortConvThread implements Runnable {
|
||||
//扫码异常
|
||||
case ConvException.CHECK_BARCODE_EXCEPTION:
|
||||
if (inSsjDevice.getTrayCode() == "") {
|
||||
paramMap.put("errorInfo", "条码扫描失败:扫描结果为空");
|
||||
paramMap.put("adverseCauses", "条码扫描失败:扫描结果为空");
|
||||
ajaxResult = apiService.createInMydoJobException(paramMap);
|
||||
}else{
|
||||
//条码格式校验
|
||||
paramMap.put("errorInfo", "条码扫描异常:格式错误");
|
||||
paramMap.put("adverseCauses", "条码扫描异常:格式错误");
|
||||
ajaxResult = apiService.createInMydoJobException(paramMap);
|
||||
}
|
||||
if (ajaxResult.isSuccess()) {
|
||||
@@ -172,8 +178,13 @@ public class PortConvThread implements Runnable {
|
||||
//请求生成wcs任务
|
||||
ajaxResult = apiService.createInMydoJob(paramMap);
|
||||
if (ajaxResult.isSuccess()) {
|
||||
|
||||
//获取wms下发的任务号和分配货位
|
||||
MydoJob mydoJob = BeanUtil.toBean(ajaxResult.get("data"), MydoJob.class);
|
||||
StockinReceive result = BeanUtil.toBean(ajaxResult.get("result"), StockinReceive.class);
|
||||
MydoJob mydoJob = new MydoJob();
|
||||
mydoJob.setTrayCode(result.getCntCode());
|
||||
mydoJob.setCargoSpaceId(result.getSiteCode());
|
||||
// mydoJob.setTaskNo(result.getTaskCode());//todo 确定是否用获取的任务号作为wcs的任务号
|
||||
|
||||
//todo 校验wms分配的货位(排列层)是否合法
|
||||
if (mydoJob.getCargoSpaceId() == null) {
|
||||
|
||||
Reference in New Issue
Block a user