cl
6 小时以前 3b41ed73cd464ae2bad44598e6f0b522fc50e886
海康发送模拟
2个文件已添加
2个文件已修改
174 ■■■■■ 已修改文件
rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/MissionTransferStationController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RCSTargetRouteItem.java 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/RCSTaskSubmitRequest.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/resources/application-dev.yml 4 ●●●● 补丁 | 查看 | 原始文档 | 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