Browse Source

redis处理wcs、rcs反馈消息

master
han\hanst 6 months ago
parent
commit
ff90dfe796
  1. 28
      src/main/java/com/gaotao/common/utils/AgvClientUtil.java
  2. 234
      src/main/java/com/gaotao/common/utils/WcsClientUtil.java
  3. 1
      src/main/java/com/gaotao/config/ShiroConfig.java
  4. 1
      src/main/resources/application.yml

28
src/main/java/com/gaotao/common/utils/AgvClientUtil.java

@ -20,12 +20,12 @@ public class AgvClientUtil {
/** /**
* -- GETTER -- * -- GETTER --
* 获取WCS基础URL
* 获取AGV基础URL
* -- SETTER -- * -- SETTER --
* 设置WCS基础URL
* 设置AGV基础URL
*/ */
@Value("${custom.wcs-url}")
private String wcsUrl;
@Value("${custom.agv-url}")
private String agvUrl;
/** /**
*1. 发送任务 - 创建APR搬运任务 *1. 发送任务 - 创建APR搬运任务
@ -36,7 +36,7 @@ public class AgvClientUtil {
* @return 响应结果 * @return 响应结果
*/ */
public ResponseData createTask(String taskId, List<String> targets, String configId, Integer priority) { public ResponseData createTask(String taskId, List<String> targets, String configId, Integer priority) {
String url = wcsUrl + "/rpc/createTask";
String url = agvUrl + "/rpc/createTask";
Map<String, Object> request = new HashMap<>(); Map<String, Object> request = new HashMap<>();
request.put("taskId", taskId); request.put("taskId", taskId);
request.put("targets", targets); request.put("targets", targets);
@ -55,7 +55,7 @@ public class AgvClientUtil {
* @return 响应结果 * @return 响应结果
*/ */
public ResponseData continueTask(String taskId) { public ResponseData continueTask(String taskId) {
String url = wcsUrl + "/rpc/continueTask";
String url = agvUrl + "/rpc/continueTask";
Map<String, Object> request = new HashMap<>(); Map<String, Object> request = new HashMap<>();
request.put("taskId", taskId); request.put("taskId", taskId);
return HttpClientUtil.doPostByRaw(url, request); return HttpClientUtil.doPostByRaw(url, request);
@ -67,7 +67,7 @@ public class AgvClientUtil {
* @return 响应结果 * @return 响应结果
*/ */
public ResponseData cancelTask(String taskId) { public ResponseData cancelTask(String taskId) {
String url = wcsUrl + "/rpc/cancelTask";
String url = agvUrl + "/rpc/cancelTask";
Map<String, Object> request = new HashMap<>(); Map<String, Object> request = new HashMap<>();
request.put("taskId", taskId); request.put("taskId", taskId);
return HttpClientUtil.doPostByRaw(url, request); return HttpClientUtil.doPostByRaw(url, request);
@ -81,7 +81,7 @@ public class AgvClientUtil {
* @return 响应结果 * @return 响应结果
*/ */
public ResponseData feedbackTask(String taskId, String deviceId, String targetPoint) { public ResponseData feedbackTask(String taskId, String deviceId, String targetPoint) {
String url = wcsUrl + "/feedbackTask";
String url = agvUrl + "/feedbackTask";
Map<String, Object> request = new HashMap<>(); Map<String, Object> request = new HashMap<>();
request.put("taskId", taskId); request.put("taskId", taskId);
request.put("deviceId", deviceId); request.put("deviceId", deviceId);
@ -94,7 +94,7 @@ public class AgvClientUtil {
* @return 响应结果 * @return 响应结果
*/ */
public ResponseData getOnlineRobot() { public ResponseData getOnlineRobot() {
String url = wcsUrl + "/rpc/getOnlineRobot";
String url = agvUrl + "/rpc/getOnlineRobot";
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
return HttpClientUtil.doGet(url, params); return HttpClientUtil.doGet(url, params);
} }
@ -105,7 +105,7 @@ public class AgvClientUtil {
* @return 响应结果 * @return 响应结果
*/ */
public ResponseData getMapInfo(String mapName) { public ResponseData getMapInfo(String mapName) {
String url = wcsUrl + "/rpc/getMapInfo";
String url = agvUrl + "/rpc/getMapInfo";
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
if (mapName != null) { if (mapName != null) {
params.put("mapName", mapName); params.put("mapName", mapName);
@ -118,7 +118,7 @@ public class AgvClientUtil {
* @return 响应结果 * @return 响应结果
*/ */
public ResponseData getAlarms() { public ResponseData getAlarms() {
String url = wcsUrl + "/rpc/getAlarms";
String url = agvUrl + "/rpc/getAlarms";
Map<String, String> params = new HashMap<>(); Map<String, String> params = new HashMap<>();
return HttpClientUtil.doGet(url, params); return HttpClientUtil.doGet(url, params);
} }
@ -131,7 +131,7 @@ public class AgvClientUtil {
* @return 响应结果 * @return 响应结果
*/ */
public ResponseData applyTrafficCtlArea(String areaName, Integer type, String agvNo) { public ResponseData applyTrafficCtlArea(String areaName, Integer type, String agvNo) {
String url = wcsUrl + "/applyTrafficCtlArea";
String url = agvUrl + "/applyTrafficCtlArea";
Map<String, Object> request = new HashMap<>(); Map<String, Object> request = new HashMap<>();
request.put("areaName", areaName); request.put("areaName", areaName);
request.put("type", type); request.put("type", type);
@ -151,7 +151,7 @@ public class AgvClientUtil {
* @return 响应结果 * @return 响应结果
*/ */
public ResponseData applyDeviceArea(String deviceName, Integer type, String taskId, String action, String agvNo) { public ResponseData applyDeviceArea(String deviceName, Integer type, String taskId, String action, String agvNo) {
String url = wcsUrl + "/applyDeviceArea";
String url = agvUrl + "/applyDeviceArea";
Map<String, Object> request = new HashMap<>(); Map<String, Object> request = new HashMap<>();
request.put("deviceName", deviceName); request.put("deviceName", deviceName);
request.put("type", type); request.put("type", type);
@ -175,7 +175,7 @@ public class AgvClientUtil {
* @return 响应结果 * @return 响应结果
*/ */
public ResponseData getMapStorage(List<String> storageNames, List<String> areaNames, List<String> mapNames) { public ResponseData getMapStorage(List<String> storageNames, List<String> areaNames, List<String> mapNames) {
String url = wcsUrl + "/getMapStorage";
String url = agvUrl + "/getMapStorage";
Map<String, Object> request = new HashMap<>(); Map<String, Object> request = new HashMap<>();
if (storageNames != null) { if (storageNames != null) {
request.put("storageNames", storageNames); request.put("storageNames", storageNames);

234
src/main/java/com/gaotao/common/utils/WcsClientUtil.java

@ -0,0 +1,234 @@
package com.gaotao.common.utils;
import lombok.Getter;
import lombok.Setter;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* WCS接口调用工具类
* 基于WMS-WCS接口文档实现
*/
@Setter
@Getter
@Component
public class WcsClientUtil {
/**
* WCS基础URL
*/
@Value("${custom.wcs-url}")
private String wcsUrl;
/**
* 1. 组盘信息下发
* 原料半成品成品等入库信息(包括托盘及物料号批号幅宽直径重量位置是否机械臂分拣选等)
* @param palletInfo 托盘信息
* @return 响应结果
*/
public ResponseData sendPalletInfo(Map<String, Object> palletInfo) {
String url = wcsUrl + "/api/pallet/send";
return HttpClientUtil.doPostByRaw(url, palletInfo);
}
/**
* 2. 出库信息下发
* 出库指令出库单号物料信息数量状态等
* @param outboundOrder 出库单信息
* @return 响应结果
*/
public ResponseData sendOutboundOrder(Map<String, Object> outboundOrder) {
String url = wcsUrl + "/api/outbound/send";
return HttpClientUtil.doPostByRaw(url, outboundOrder);
}
/**
* 3. 取消出库信息下发
* 是否继续执行出库如库存不足是否继续执行出库需求
* @param orderNo 出库单号
* @param continueFlag 是否继续执行标志
* @return 响应结果
*/
public ResponseData cancelOutboundOrder(String orderNo, Boolean continueFlag) {
String url = wcsUrl + "/api/outbound/cancel";
Map<String, Object> request = new HashMap<>();
request.put("orderNo", orderNo);
request.put("continueFlag", continueFlag);
return HttpClientUtil.doPostByRaw(url, request);
}
/**
* 4. PDA拣选完成下发
* 人工拣选物料信息反馈给WCS
* @param pickingInfo 拣选信息
* @return 响应结果
*/
public ResponseData sendPdaPickingComplete(Map<String, Object> pickingInfo) {
String url = wcsUrl + "/api/picking/pda/complete";
return HttpClientUtil.doPostByRaw(url, pickingInfo);
}
/**
* 5. 单据优先级下发
* 调整WCS单据任务顺序
* @param orderNo 单据号
* @param priority 优先级
* @return 响应结果
*/
public ResponseData updateOrderPriority(String orderNo, Integer priority) {
String url = wcsUrl + "/api/order/priority";
Map<String, Object> request = new HashMap<>();
request.put("orderNo", orderNo);
request.put("priority", priority);
return HttpClientUtil.doPostByRaw(url, request);
}
/**
* 6. 物料状态更新下发
* 物料状态下发WCS系统(待检验待入库等库位变化
* @param materialNo 物料号
* @param status 物料状态
* @param location 库位信息
* @return 响应结果
*/
public ResponseData updateMaterialStatus(String materialNo, String status, String location) {
String url = wcsUrl + "/api/material/status/update";
Map<String, Object> request = new HashMap<>();
request.put("materialNo", materialNo);
request.put("status", status);
request.put("location", location);
return HttpClientUtil.doPostByRaw(url, request);
}
/**
* 7. 盘点任务下发
* WMS下发盘点任务WCS控制设备进行通道机完成盘点功能
* @param inventoryTask 盘点任务信息
* @return 响应结果
*/
public ResponseData sendInventoryTask(Map<String, Object> inventoryTask) {
String url = wcsUrl + "/api/inventory/task/send";
return HttpClientUtil.doPostByRaw(url, inventoryTask);
}
/**
* 8. 盘点抽样出库需求
* 财务指定托盘进行抽检
* @param palletNo 托盘号
* @param sampleInfo 抽样信息
* @return 响应结果
*/
public ResponseData sendInventorySampleOutbound(String palletNo, Map<String, Object> sampleInfo) {
String url = wcsUrl + "/api/inventory/sample/outbound";
Map<String, Object> request = new HashMap<>();
request.put("palletNo", palletNo);
request.putAll(sampleInfo);
return HttpClientUtil.doPostByRaw(url, request);
}
/**
* 9. 盘点抽样回库指令
* 抽检完成后PDA/电脑产生回库信息
* @param palletNo 托盘号
* @param returnInfo 回库信息
* @return 响应结果
*/
public ResponseData sendInventorySampleReturn(String palletNo, Map<String, Object> returnInfo) {
String url = wcsUrl + "/api/inventory/sample/return";
Map<String, Object> request = new HashMap<>();
request.put("palletNo", palletNo);
request.putAll(returnInfo);
return HttpClientUtil.doPostByRaw(url, request);
}
/**
* 10. 盘点调整
* 盘盈,盘亏下发WCS系统
* @param adjustmentInfo 盘点调整信息
* @return 响应结果
*/
public ResponseData sendInventoryAdjustment(Map<String, Object> adjustmentInfo) {
String url = wcsUrl + "/api/inventory/adjustment";
return HttpClientUtil.doPostByRaw(url, adjustmentInfo);
}
/**
* 11. 库存对账接口
* WMS查询立库货位信息进行系统对账
* @param warehouseCode 仓库代码
* @param locationCode 库位代码可选
* @return 响应结果
*/
public ResponseData queryInventoryReconciliation(String warehouseCode, String locationCode) {
String url = wcsUrl + "/api/inventory/reconciliation";
Map<String, String> params = new HashMap<>();
params.put("warehouseCode", warehouseCode);
if (locationCode != null) {
params.put("locationCode", locationCode);
}
return HttpClientUtil.doGet(url, params);
}
// ========== WCS回调WMS的接口方法 ==========
/**
* 入库信息反馈处理
* 入库完成信息反馈
* @param inboundFeedback 入库反馈信息
* @return 处理结果
*/
public ResponseData handleInboundFeedback(Map<String, Object> inboundFeedback) {
// 这里应该是处理WCS回调的入库反馈信息
// 具体实现根据业务需求来定义
ResponseData response = new ResponseData("入库反馈处理成功");
response.setSuccess(true);
response.setCode("200");
return response;
}
/**
* 机械手拣货完成反馈处理
* 机械手拣选物料信息反馈给WMS
* @param robotPickingFeedback 机械手拣货反馈信息
* @return 处理结果
*/
public ResponseData handleRobotPickingFeedback(Map<String, Object> robotPickingFeedback) {
// 这里应该是处理WCS回调的机械手拣货反馈信息
ResponseData response = new ResponseData("机械手拣货反馈处理成功");
response.setSuccess(true);
response.setCode("200");
return response;
}
/**
* 盘点反馈处理
* 通道机盘点信息上传WMS
* @param inventoryFeedback 盘点反馈信息
* @return 处理结果
*/
public ResponseData handleInventoryFeedback(Map<String, Object> inventoryFeedback) {
// 这里应该是处理WCS回调的盘点反馈信息
ResponseData response = new ResponseData("盘点反馈处理成功");
response.setSuccess(true);
response.setCode("200");
return response;
}
/**
* 盘点抽样回库反馈处理
* WCS回库完成反馈库位信息
* @param sampleReturnFeedback 抽样回库反馈信息
* @return 处理结果
*/
public ResponseData handleSampleReturnFeedback(Map<String, Object> sampleReturnFeedback) {
// 这里应该是处理WCS回调的抽样回库反馈信息
ResponseData response = new ResponseData("抽样回库反馈处理成功");
response.setSuccess(true);
response.setCode("200");
return response;
}
}

1
src/main/java/com/gaotao/config/ShiroConfig.java

@ -49,6 +49,7 @@ public class ShiroConfig {
filterMap.put("/sysLanguageList/searchSysLanguage", "anon");//登录页面切换语言 filterMap.put("/sysLanguageList/searchSysLanguage", "anon");//登录页面切换语言
filterMap.put("/sys/userSiteList", "anon");//登录页面选择工厂 filterMap.put("/sys/userSiteList", "anon");//登录页面选择工厂
filterMap.put("/api/wms/**", "anon");//wcsrcs反馈信息 filterMap.put("/api/wms/**", "anon");//wcsrcs反馈信息
filterMap.put("/api/test/**", "anon");//Redis测试接口
filterMap.put("/swagger/**", "anon"); filterMap.put("/swagger/**", "anon");
filterMap.put("/v2/api-docs", "anon"); filterMap.put("/v2/api-docs", "anon");
filterMap.put("/swagger-ui.html", "anon"); filterMap.put("/swagger-ui.html", "anon");

1
src/main/resources/application.yml

@ -103,6 +103,7 @@ query:
custom: custom:
ifs-url: 'https://cclifswebservice.ccldesign.com' ifs-url: 'https://cclifswebservice.ccldesign.com'
wcs-url: 'http://wcs-server/api/receive' wcs-url: 'http://wcs-server/api/receive'
agv-url: 'http://agv-server/api'
# WMS消息队列配置 # WMS消息队列配置
wms: wms:

Loading…
Cancel
Save