rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/WmsRcsController.java
@@ -40,7 +40,11 @@ if (Objects.isNull(params)) { throw new CoolException("参数不能为空!!"); } return wmsRcsService.pubTasks(params); if (params.getSign().equals("RCS")){ return wmsRcsService.pubTasks(params); } else { return wmsRcsService.pubTasksWcs(params); } } /** rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RcsPubTaskParams.java
@@ -13,6 +13,9 @@ @ApiModel(value = "RcsPubTaskParams", description = "下发任务参数") public class RcsPubTaskParams implements Serializable { @ApiModelProperty("标记类型{HKRCS: 海康, WCS: 立库WCS, OTHER: 其它}") private String sign; @ApiModelProperty("批次") private String batch; rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsRcsService.java
@@ -16,6 +16,7 @@ public interface WmsRcsService extends IService<Loc> { CommonResponse pubTasks(RcsPubTaskParams params); CommonResponse pubTasksWcs(RcsPubTaskParams params); CommonResponse cancelTasks(Map<String, Object> params); rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java
@@ -11,6 +11,7 @@ import com.vincent.rsf.framework.exception.CoolException; import com.vincent.rsf.openApi.config.PlatformProperties; import com.vincent.rsf.openApi.entity.Loc; import com.vincent.rsf.openApi.entity.constant.WcsConstant; import com.vincent.rsf.openApi.entity.constant.WmsConstant; import com.vincent.rsf.openApi.entity.dto.CommonResponse; import com.vincent.rsf.openApi.entity.constant.RcsConstant; @@ -46,6 +47,9 @@ private PlatformProperties.WmsApi wmsApi; @Autowired private PlatformProperties.WcsApi wcsApi; @Autowired private RestTemplate restTemplate; @@ -60,15 +64,52 @@ public CommonResponse pubTasks(RcsPubTaskParams params) { /**RCS基础配置链接*/ String rcsUrl = rcsApi.getHost() + ":" + rcsApi.getPort() + RcsConstant.pubTask; log.info("任务下发,请求地址: {}, 请求参数: {}", rcsUrl , JSONObject.toJSONString(params)); log.info("RCS任务下发,请求地址: {}, 请求参数: {}", rcsUrl , JSONObject.toJSONString(params)); HttpHeaders headers = new HttpHeaders(); headers.add("Content-Type", "application/json"); headers.add("api-version", "v2.0"); HttpEntity httpEntity = new HttpEntity(params, headers); ResponseEntity<String> exchange = restTemplate.exchange(rcsUrl, HttpMethod.POST, httpEntity, String.class); log.info("任务下发后,响应结果: {}", exchange); log.info("RCS任务下发后,响应结果: {}", exchange); if (Objects.isNull(exchange.getBody())) { throw new CoolException("任务下发失败!!"); throw new CoolException("RCS任务下发失败!!"); } else { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.coercionConfigDefaults() .setCoercion(CoercionInputShape.EmptyString, CoercionAction.AsEmpty); try { CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class); if (result.getCode() == 200) { return result; } else { return result; } } catch (JsonProcessingException e) { throw new CoolException(e.getMessage()); } } } /** * @author Munch D. Luffy * @date 2026/01/19 * @description: WCS任务下发 * @version 1.0 */ @Override @Transactional(rollbackFor = Exception.class) public CommonResponse pubTasksWcs(RcsPubTaskParams params) { /**WCS基础配置链接*/ String rcsUrl = wcsApi.getHost() + ":" + wcsApi.getPort() + WcsConstant.pubTask; log.info("WCS任务下发,请求地址: {}, 请求参数: {}", rcsUrl , JSONObject.toJSONString(params)); HttpHeaders headers = new HttpHeaders(); headers.add("Content-Type", "application/json"); headers.add("api-version", "v2.0"); HttpEntity httpEntity = new HttpEntity(params, headers); ResponseEntity<String> exchange = restTemplate.exchange(rcsUrl, HttpMethod.POST, httpEntity, String.class); log.info("WCS任务下发后,响应结果: {}", exchange); if (Objects.isNull(exchange.getBody())) { throw new CoolException("WCS任务下发失败!!"); } else { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.coercionConfigDefaults() rsf-open-api/src/main/resources/application-dev.yml
@@ -14,10 +14,12 @@ # url: jdbc:mysql://47.76.147.249:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai # username: rsf username: root url: jdbc:mysql://192.168.4.15:3306/rsf_20250106?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai password: 1234 # url: jdbc:mysql://192.168.4.15:3306/rsf_20250106?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai # password: 1234 # url: jdbc:mysql://10.10.10.200:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai # password: xltys1995 url: jdbc:mysql://192.168.4.199:3306/rsf?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai password: root type: com.alibaba.druid.pool.DruidDataSource druid: initial-size: 5 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/WcsTaskParams.java
@@ -14,6 +14,9 @@ @ApiModel(value = "WcsTaskParams", description = "任务下发参数") public class WcsTaskParams implements Serializable { @ApiModelProperty("标记类型{HKRCS: 海康, WCS: 立库WCS, OTHER: 其它}") private String sign; @ApiModelProperty("批次") private String batch; rsf-server/src/main/java/com/vincent/rsf/server/manager/enums/LocStsWcsOrOtherType.java
New file @@ -0,0 +1,65 @@ package com.vincent.rsf.server.manager.enums; public enum LocStsWcsOrOtherType { //WCS LOC_STS_TYPE_WCS("WCS", "WCS"), //RCS LOC_STS_TYPE_RCS("RCS", "RCS"), //OTHER LOC_STS_TYPE_OTHER("OTHER", "OTHER") ; public String type; public String desc; LocStsWcsOrOtherType(String type, String desc) { this.type = type; this.desc = desc; } public static LocStsWcsOrOtherType get(String el) { for (LocStsWcsOrOtherType value : LocStsWcsOrOtherType.values()) { if (el.equals(value.toString())) { return value; } } return null; } public static String getApiType(String val) { switch (val) { case "3#立体库区": return LocStsWcsOrOtherType.LOC_STS_TYPE_WCS.type; // case "RCS": // return LocStsWcsOrOtherType.LOC_STS_TYPE_RCS.type; default: return LocStsWcsOrOtherType.LOC_STS_TYPE_RCS.type; } } // public static String getLocSts(String val) { // if (val.equals("WCS")) { // return LocStsWcsOrOtherType.LOC_STS_TYPE_WCS.type; // } else if (val.equals("RCS")) { // return LocStsWcsOrOtherType.LOC_STS_TYPE_RCS.type; // } else { // return LocStsWcsOrOtherType.LOC_STS_TYPE_OTHER.type; // } // } // public static String getLocSts(Integer areaId) { // switch (areaId) { // case 22: // return LocStsWcsOrOtherType.LOC_STS_TYPE_RCS.type; // case 100: // return LocStsWcsOrOtherType.LOC_STS_TYPE_WCS.type; // default: // return LocStsWcsOrOtherType.LOC_STS_TYPE_OTHER.type; // } // } } rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -380,6 +380,22 @@ } /**判断是否起点系统类型 非标准程序*/ Loc loc = null; if (task.getTaskType()>=TaskType.TASK_TYPE_OUT.type) { loc = locService.getOne(new LambdaQueryWrapper<Loc>().eq(Loc::getCode, task.getOrgLoc())); if (Objects.isNull(loc)) { throw new CoolException("源库位不存在!!"); } } if (!Objects.isNull(loc)) { taskParams.setSign(LocStsWcsOrOtherType.getApiType(loc.getAreaId$())); } else { taskParams.setSign(LocStsWcsOrOtherType.LOC_STS_TYPE_RCS.type); } /**判断是否光电站点,非光店站点需管控站点状态*/ if (!Objects.isNull(station) && station.getType().equals(StationTypeEnum.STATION_TYPE_NORMAL.type)) { if (task.getTaskType() <= TaskType.TASK_TYPE_CHECK_IN.type && !task.getTaskType().equals(TaskType.TASK_TYPE_LOC_MOVE.type)) {