chen.lin
昨天 da15785661f7832cdcb78fb6504752c0cb385e63
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java
@@ -50,7 +50,17 @@
    @Autowired
    private RestTemplate restTemplate;
    /**
     * 获取 WMS 基础 URL(host:port),未配置时抛出异常,避免产生 null:null 导致 URISyntaxException。
     */
    private String getWmsBaseUrl() {
        if (wmsApi == null || wmsApi.getHost() == null || wmsApi.getHost().isEmpty()
                || wmsApi.getPort() == null || wmsApi.getPort().isEmpty()) {
            log.error("WMS地址未配置。请在配置文件中设置 platform.wms.host 与 platform.wms.port");
            throw new CoolException("WMS回调地址未配置,请配置 platform.wms.host 和 platform.wms.port");
        }
        return wmsApi.getHost() + ":" + wmsApi.getPort();
    }
    /**
     * @author Ryan
@@ -213,7 +223,7 @@
            log.warn("RCS回调事件参数eventType为空!完整参数:{}", JSONObject.toJSONString(params));
        }
        
        String callUrl =  wmsApi.getHost() + ":" + wmsApi.getPort() + WmsConstant.callBack;
        String callUrl = getWmsBaseUrl() + WmsConstant.callBack;
        /**WMS基础配置链接*/
        log.info("任务执行状态上报,请求地址: {}, 请求参数: {}", callUrl , JSONObject.toJSONString(params));
        HttpHeaders headers = new HttpHeaders();
@@ -355,15 +365,17 @@
        
        // 将TaskReportParams转换为ExMsgParams格式(taskNo -> seqNum)
        // 根据RCS新接口规范,taskNo对应旧接口的seqNum
        // 批次号用于验证任务主表,任务号用于查询和关联明细
        JSONObject exMsgParams = new JSONObject();
        exMsgParams.put("seqNum", params.getTaskNo()); // taskNo映射到seqNum
        exMsgParams.put("batchNo", params.getBatchNo()); // 批次号用于精确关联
        // eventType设置为END,表示任务完成(根据业务需求可能需要调整)
        exMsgParams.put("eventType", "END");
        exMsgParams.put("robotCode", null);
        exMsgParams.put("zpallet", null);
        
        // 将任务上报回调转发到WMS系统
        String callUrl = wmsApi.getHost() + ":" + wmsApi.getPort() + WmsConstant.callBack;
        // 将任务上报回调转发到WMS系统(需配置 platform.wms.host 与 platform.wms.port)
        String callUrl = getWmsBaseUrl() + WmsConstant.callBack;
        log.info("RCS回调-WMS-SERVER任务上报-,请求地址: {}, 转换后参数: {}", callUrl, exMsgParams.toJSONString());
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type", "application/json");
@@ -417,7 +429,7 @@
        log.info("料箱码:{},入库站点:{},入库类型:{}", params.getBarcode(), params.getStaNo(), params.getType());
        
        // 调用WMS server内部接口进行库位分配
        String wmsUrl = wmsApi.getHost() + ":" + wmsApi.getPort() + "/rsf-server/wcs/allocate/location";
        String wmsUrl = getWmsBaseUrl() + "/rsf-server/wcs/allocate/location";
        log.info("WMS请求地址:{}", wmsUrl);
        
        // 构建请求参数
@@ -455,11 +467,15 @@
                    JSONObject data = responseJson.getJSONObject("data");
                    if (data != null) {
                        String locNo = data.getString("locNo");
                        String batchNo = data.getString("batchNo");
                        String taskNo = data.getString("taskNo");
                        log.info("========== 申请入库任务成功 ==========");
                        log.info("分配库位号:{}", locNo);
                        log.info("分配库位号:{},批次号:{},任务号:{}", locNo, batchNo, taskNo);
                        
                        LocationAllocateResponse response = new LocationAllocateResponse();
                        response.setLocNo(locNo);
                        response.setBatchNo(batchNo);
                        response.setTaskNo(taskNo);
                        return R.ok(response);
                    } else {
                        log.error("========== 申请入库任务失败 ==========");