| rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/MissionTransferStationController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RCSTargetRouteItem.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RCSTaskSubmitRequest.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| rsf-open-api/src/main/resources/application-dev.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/MissionTransferStationController.java
@@ -1,19 +1,27 @@ package com.vincent.rsf.openApi.controller; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.vincent.rsf.framework.common.Cools; import com.vincent.rsf.framework.common.R; import com.vincent.rsf.openApi.entity.dto.CommonResponse; import com.vincent.rsf.openApi.entity.params.MissionTaskIssueParam; import com.vincent.rsf.openApi.entity.params.RCSTaskSubmitRequest; import com.vincent.rsf.openApi.enums.MissionSystemCodeEnum; import com.vincent.rsf.openApi.service.WmsWcsService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @RestController @Api("任务中转站") @@ -24,6 +32,13 @@ @Autowired private WmsWcsService wmsWcsService; private final RestTemplate restTemplate = new RestTemplate(); @Value("${platform.hk.host}") private String hkHost; @Value("${platform.hk.port}") private String hkPort; @ApiOperation("任务总控") @PostMapping("/task/master/control") public CommonResponse missionMasterControl(@RequestBody MissionTaskIssueParam param) { @@ -33,11 +48,35 @@ } //判断需要下发系统 if (param.getSystemCode().equals(MissionSystemCodeEnum.MISSION_SYSTEM_CODE_ENUM_HK_RCS_YZ_5.type)){ //转海康下发程序 // R r = wmsWcsService.issueTaskWcs(param); // if (!r.get("code").equals(200)){ // return CommonResponse.error(""+r.get("msg")); // } HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); String url = hkHost + ":" + hkPort + "/rcs/rtas/api/robot/controller/task/submit"; RCSTaskSubmitRequest body = new RCSTaskSubmitRequest(param); String reqJson = body.toJSONObject(); try { HttpEntity<RCSTaskSubmitRequest> entity = new HttpEntity<>(body, headers); String resp = restTemplate.postForObject(url, entity, String.class); JSONObject respJson = (resp != null && !resp.isEmpty()) ? JSON.parseObject(resp) : null; log.info("url:{}, 请求参数:{}, 返回:{}", url, reqJson, respJson); /* 海康返回例子: { "code": "SUCCESS", "message": "成功", "data": { "robotTaskCode": "13123123123", "extra": null } }*/ if (respJson != null && "SUCCESS".equals(respJson.getString("code"))){ return CommonResponse.ok(respJson.getJSONObject("data")); } String msg = respJson != null ? respJson.getString("message") : "RCS返回异常"; return CommonResponse.error(msg != null ? msg : "RCS返回异常"); } catch (Exception e) { log.error("RCS任务下发请求异常, url:{}, {}", url, e.getMessage(), e); return CommonResponse.error("RCS服务访问异常: " + e.getMessage()); } } else if (param.getSystemCode().equals(MissionSystemCodeEnum.MISSION_SYSTEM_CODE_ENUM_ZY_WCS_TWO.type)){ //转wcs下发程序 R r = wmsWcsService.issueTaskWcs(param); @@ -60,4 +99,5 @@ return CommonResponse.error(e.getMessage()); } } } rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RCSTargetRouteItem.java
New file @@ -0,0 +1,51 @@ package com.vincent.rsf.openApi.entity.params; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.List; @Schema(description = "目标路径点(targetRoute 单条)") @Data public class RCSTargetRouteItem { @Schema(description = "顺序号", example = "0") private Integer seq; @Schema(description = "点位类型预制枚举值:\n" + "ZONE 目标所处区域编号\n" + "SITE 站点别名\n" + "STORAGE 仓位别名\n" + "MAT_LABEL 物料标签\n" + "CARRIER 载具编号\n" + "STACK 巷道编号\n" + "STACK_LABEL 巷道特征值\n" + "CHANNEL 通道编号\n" + "EQPT 外部设备\n" + "PTL_WALL CTU 缓存架\n" + "CARRIER_TYPE 载具类型\n" + "BIN_TYPE 仓位类型\n" + "AREA_STATION 区域工作台\n" + "PILE_COUNT 一次搬几个\n" + "MIX_CONDITION 条件组合 DEGREE 热度\n" + "MULTI_BIN_GROUP 多深位组号", example = "ZONE", allowableValues = {"ZONE", "SITE"}) private String type; @Schema(description = "点位编码", example = "A1") private String code; @Schema(description = "操作类型\n" + "COLLECT 取货\n" + "DELIVERY 送货\n" + "ROTATE 旋转", example = "COLLECT", allowableValues = {"COLLECT", "DELIVERY"}) private String operation; @Schema(description = "机器人类型") private String robotType; @Schema(description = "指定机器人编码列表") private List<String> robotCode; @Schema(description = "扩展信息") private Object extra; } rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RCSTaskSubmitRequest.java
New file @@ -0,0 +1,69 @@ package com.vincent.rsf.openApi.entity.params; import com.alibaba.fastjson.JSON; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.util.ArrayList; import java.util.List; @Schema(description = "任务下发请求(2.1.2 国标)") @Data public class RCSTaskSubmitRequest { @Schema(description = "任务类型", example = "TRANSPORT") private String taskType; @Schema(description = "目标路径点列表") private List<RCSTargetRouteItem> targetRoute = new ArrayList<RCSTargetRouteItem>(); @Schema(description = "初始优先级") private Integer initPriority; @Schema(description = "截止时间") private String deadline; @Schema(description = "机器人类型") private String robotType; @Schema(description = "指定机器人编码列表") private List<String> robotCode; @Schema(description = "是否可中断") private Integer interrupt; @Schema(description = "机器人任务编码", example = "tt13123123123") private String robotTaskCode; @Schema(description = "组编码") private String groupCode; @Schema(description = "扩展信息(如 carrierInfo 等)") private Object extra; public RCSTaskSubmitRequest() { } public RCSTaskSubmitRequest(MissionTaskIssueParam param) { setTaskType("TRANSPORT"); setRobotTaskCode(param.getTaskNo()); /*执行步骤*/ getTargetRoute().add(new RCSTargetRouteItem() {{ setSeq(0);//顺序号 setType("ZONE"); setCode("A1"); setOperation("COLLECT"); }}); getTargetRoute().add(new RCSTargetRouteItem() {{ setSeq(1); setType("ZONE"); setCode("S001"); setOperation("DELIVERY"); }}); } public String toJSONObject() { return JSON.toJSONString(this); } } rsf-open-api/src/main/resources/application-dev.yml
@@ -73,9 +73,9 @@ #WCS链接 hk: #链接 host: http://127.0.0.1 host: http://192.168.4.197 #端口 port: 9090 port: 9189 wms: #链接 host: http://127.0.0.1