1
12 小时以前 64c076641c56b857fa78f6d9401f070591094569
lsh#wcs2.0交互下发
6个文件已添加
7个文件已修改
639 ■■■■■ 已修改文件
rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/MissionTransferStationController.java 48 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WcsConstant.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/MissionTaskIssueParam.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/MissionWcsTaskIssueParam.java 80 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/enums/MissionActionTypeEnum.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/enums/MissionStepTypeEnum.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/enums/MissionSystemCodeEnum.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/enums/TaskTypeEnum.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsWcsService.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsWcsServiceImpl.java 120 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/MissionTaskIssueParam.java 148 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/MissionTransferStationController.java
@@ -1,9 +1,15 @@
package com.vincent.rsf.openApi.controller;
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.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.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@@ -15,13 +21,43 @@
@RequestMapping("/mission")
public class MissionTransferStationController {
    @Autowired
    private WmsWcsService wmsWcsService;
    @ApiOperation("任务总控")
    @PostMapping("/task/master/control")
    public CommonResponse missionMasterControl(@RequestBody Object objParams) {
        System.out.println("111");
        //判断需要下发系统
        //判断下发方式
        //返回结果
        return CommonResponse.ok();
    public CommonResponse missionMasterControl(@RequestBody MissionTaskIssueParam param) {
        try{
            if (Cools.isEmpty(param)){
                return CommonResponse.error("参数为空!!!");
            }
            //判断需要下发系统
            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"));
//                }
            } else if (param.getSystemCode().equals(MissionSystemCodeEnum.MISSION_SYSTEM_CODE_ENUM_ZY_WCS_TWO.type)){
                //转wcs下发程序
                R r = wmsWcsService.issueTaskWcs(param);
                if (!r.get("code").equals(200)){
                    return CommonResponse.error(""+r.get("msg"));
                }
            } else if (param.getSystemCode().equals(MissionSystemCodeEnum.MISSION_SYSTEM_CODE_ENUM_WEIGHING_YZ_5.type)){
                //转称重
//                R r = wmsWcsService.issueTaskWcs(param);
//                if (!r.get("code").equals(200)){
//                    return CommonResponse.error(""+r.get("msg"));
//                }
            } else {
                return CommonResponse.error("未知系统类型");
            }
            //判断下发方式
            //返回结果
            return CommonResponse.ok();
        } catch (Exception e){
            return CommonResponse.error(e.getMessage());
        }
    }
}
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WcsConstant.java
@@ -2,8 +2,13 @@
public class WcsConstant {
    public static String pubTask = "/openapi/createInTask";
    public static String createInTask = "/wcs/openapi/createInTask";//入库任务申请
    public static String syncLocs = "/api/open/loc/sync";
    public static String createOutTask = "/wcs/openapi/createOutTask";//出库任务下发
    public static String createLocMoveTask = "/wcs/openapi/createLocMoveTask";//移库任务下发
    public static String STA_TO_STA = "/wcs/openapi/createLocMoveTask";//移库任务下发
    public static String syncLocs = "/wcs/api/open/loc/sync";
}
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/MissionTaskIssueParam.java
New file
@@ -0,0 +1,119 @@
package com.vincent.rsf.openApi.entity.params;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
@Data
public class MissionTaskIssueParam {
    /**
     * WMS任务号
     */
    private String taskNo;
    private String barcode;//条码
    private Integer taskPri;//优先级
    /*
     * 类型:出库、入库、移库、站到站
     * */
    private String type;
    /**
     * 起点编码
     */
    private String sourceCode;
    /**
     * 终点编码
     */
    private String targetCode;
    /**
     * 子系统编码
     */
    private String systemCode;
    /**
     * 子系统名称
     */
    private String systemName;
    /**
     * 步骤类型:REQUEST-请求, RESPONSE-响应, VALIDATE-校验, TRANSFORM-转换
     */
    private String stepType;
    /**
     * 动作类型:HTTP_CALL, RPC_CALL, MQ_SEND, DB_OPERATION
     */
    private String actionType;
    /**
     * 关联flow_instance.id
     */
    private Long flowInstanceId;
    /**
     * 流程实例编号
     */
    private String flowInstanceNo;
    /**
     * 步骤顺序
     */
    private Integer stepOrder;
    /**
     * 步骤编码
     */
    private String stepCode;
    /**
     * 步骤名称
     */
    private String stepName;
    /**
     * 步骤模板ID
     */
    private Long stepTemplateId;
    /**
     * 状态:0-排队中 1-待执行 2-执行中 3-执行成功 4-执行失败 5-已跳过 6-已取消
     */
    private Short status;
    /**
     * 执行结果
     */
    private String executeResult;
    /**
     * 错误码
     */
    private String errorCode;
    /**
     * 错误信息
     */
    private String errorMessage;
    /**
     * 开始时间
     */
    private Date startTime;
    /**
     * 执行耗时(秒)
     */
    private Integer durationSeconds;
    /**
     * 步骤重试次数
     */
    private Integer retryTimes;
}
rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/params/MissionWcsTaskIssueParam.java
New file
@@ -0,0 +1,80 @@
package com.vincent.rsf.openApi.entity.params;
import lombok.Data;
import java.util.Date;
@Data
public class MissionWcsTaskIssueParam {
    //移库 **********************************************************************
    /**
     * WMS任务号  工作号
     */
    private String taskNo;
    /*
    * 源库位
    * */
    private String sourceLocNo;
    /*
    * 目标库位
    * */
    private String locNo;
    /*
    * 任务优先级
    * */
    private Integer taskPri = 1;
    //出库 **********************************************************************
//    /**
//     * WMS任务号  工作号
//     */
//    private String taskNo;
//    /*
//     * 出库库位
//     * */
//    private String locNo;
//    /*
//     * 任务优先级
//     * */
//    private String taskPri;
    /*
     * 目标站(优先级高于出库区域)
     * */
    private Integer staNo;
    /*
     * 出库区域
     * */
    private String outArea;
    /*
     * 出库批次号
     * */
    private String batch;
    /*
     * 出库顺序号
     * */
    private Integer batchSeq;
    //入库 **********************************************************************
//    /**
//     * WMS任务号  工作号
//     */
//    private String taskNo;
//    /*
//     * 库位号
//     * */
//    private String locNo;
    //    /*
//     * 任务优先级
//     * */
//    private String taskPri;
    /*
     * 条码
     * */
    private String barcode;
}
rsf-open-api/src/main/java/com/vincent/rsf/openApi/enums/MissionActionTypeEnum.java
New file
@@ -0,0 +1,21 @@
package com.vincent.rsf.openApi.enums;
/**
 * @author Ryan
 * @version 1.0
 * @title TaskType
 * @description
 * @create 2025/3/29 17:02
 */
public enum MissionActionTypeEnum {
    MISSION_ACTION_TYPE_ENUM_HTTP_CALL("HTTP_CALL", "HTTP_CALL"),
    MISSION_ACTION_TYPE_ENUM_NO_EXECUTE("NO_EXECUTE", "NO_EXECUTE"),
    ;
    public String type;
    public String desc;
    MissionActionTypeEnum(String type, String desc) {
        this.type = type;
        this.desc = desc;
    }
}
rsf-open-api/src/main/java/com/vincent/rsf/openApi/enums/MissionStepTypeEnum.java
New file
@@ -0,0 +1,33 @@
package com.vincent.rsf.openApi.enums;
/**
 * @author Ryan
 * @version 1.0
 * @title TaskType
 * @description
 * @create 2025/3/29 17:02
 */
public enum MissionStepTypeEnum {
    MISSION_STEP_TYPE_RESPONSE("RESPONSE", "响应"),
    MISSION_STEP_TYPE_RECEIVE("RECEIVE", "接收"),
    MISSION_STEP_TYPE_RECEIVE_BIN("RECEIVE_BIN", "接收-解绑"),
    MISSION_STEP_TYPE_REQUEST("REQUEST", "请求"),
    MISSION_STEP_TYPE_UNBIND("UNBIND", "解绑"),
    MISSION_STEP_TYPE_BIND("BIND", "绑定"),
    MISSION_STEP_TYPE_OBTAIN("OBTAIN", "获取"),
    MISSION_STEP_TYPE_NO_EXECUTE("NO_EXECUTE", "越过"),
    MISSION_STEP_TYPE_VALIDATE("VALIDATE", "校验"),
    MISSION_STEP_TYPE_TRANSFORM("TRANSFORM", "转换"),
    ;
    public String type;
    public String desc;
    MissionStepTypeEnum(String type, String desc) {
        this.type = type;
        this.desc = desc;
    }
}
rsf-open-api/src/main/java/com/vincent/rsf/openApi/enums/MissionSystemCodeEnum.java
New file
@@ -0,0 +1,24 @@
package com.vincent.rsf.openApi.enums;
/**
 * @author Ryan
 * @version 1.0
 * @title TaskType
 * @description
 * @create 2025/3/29 17:02
 */
public enum MissionSystemCodeEnum {
    MISSION_SYSTEM_CODE_ENUM_ZY_WCS_TWO("ZY_WCS_TWO", "中扬WCS2.0"),
    MISSION_SYSTEM_CODE_ENUM_HK_RCS_YZ_5("HK_RCS_YZ_5", "银座五期对接海康RCS"),
    MISSION_SYSTEM_CODE_ENUM_WEIGHING_YZ_5("WEIGHING_YZ_5", "银座五期称重"),
    MISSION_SYSTEM_CODE_ENUM_NO_EXECUTE("NO_EXECUTE", "不执行"),
    ;
    public String type;
    public String desc;
    MissionSystemCodeEnum(String type, String desc) {
        this.type = type;
        this.desc = desc;
    }
}
rsf-open-api/src/main/java/com/vincent/rsf/openApi/enums/TaskTypeEnum.java
@@ -14,13 +14,13 @@
    TASK_TYPE_ENUM_STA("STA_TO_STA", "站点间搬运")
    ;
    public String code;
    public String desc;
    TaskTypeEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }
    private String code;
    private String desc;
}
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/WmsWcsService.java
@@ -3,13 +3,11 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.vincent.rsf.framework.common.R;
import com.vincent.rsf.openApi.entity.Loc;
import com.vincent.rsf.openApi.entity.params.WcsChangeLocParam;
import com.vincent.rsf.openApi.entity.params.WcsCreateInTaskParam;
import com.vincent.rsf.openApi.entity.params.WcsReassignLocParam;
import com.vincent.rsf.openApi.entity.params.WcsTaskReportParam;
import com.vincent.rsf.openApi.entity.params.*;
public interface WmsWcsService extends IService<Loc> {
    R issueTaskWcs(MissionTaskIssueParam params);
    R wcsCreateInTask(WcsCreateInTaskParam params);
    R wcsTaskReport(WcsTaskReportParam params);
    R wcsReassignLoc(WcsReassignLocParam params);
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsRcsServiceImpl.java
@@ -100,7 +100,7 @@
    @Transactional(rollbackFor = Exception.class)
    public CommonResponse pubTasksWcs(RcsPubTaskParams params)  {
        /**WCS基础配置链接*/
        String rcsUrl =  wcsApi.getHost() + ":" + wcsApi.getPort() + WcsConstant.pubTask;
        String rcsUrl =  wcsApi.getHost() + ":" + wcsApi.getPort() + WcsConstant.createInTask;
        log.info("WCS任务下发,请求地址: {}, 请求参数: {}", rcsUrl , JSONObject.toJSONString(params));
        HttpHeaders headers = new HttpHeaders();
        headers.add("Content-Type", "application/json");
rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/impl/WmsWcsServiceImpl.java
@@ -9,12 +9,13 @@
import com.vincent.rsf.framework.common.R;
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.params.WcsChangeLocParam;
import com.vincent.rsf.openApi.entity.params.WcsCreateInTaskParam;
import com.vincent.rsf.openApi.entity.params.WcsReassignLocParam;
import com.vincent.rsf.openApi.entity.params.WcsTaskReportParam;
import com.vincent.rsf.openApi.entity.params.*;
import com.vincent.rsf.openApi.enums.MissionActionTypeEnum;
import com.vincent.rsf.openApi.enums.MissionStepTypeEnum;
import com.vincent.rsf.openApi.enums.TaskTypeEnum;
import com.vincent.rsf.openApi.mapper.LocMapper;
import com.vincent.rsf.openApi.service.WmsWcsService;
import lombok.extern.slf4j.Slf4j;
@@ -38,12 +39,121 @@
    private PlatformProperties.WmsApi wmsApi;
    @Autowired
    private PlatformProperties.WcsApi wcsApi;
    @Autowired
    private RestTemplate restTemplate;
    /**
     * @author Munch D. Luffy
     * @date 2026/01/09
     * @description: 任务下发
     * @description: 任务下发(指令下发)
     * @version 1.0
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R issueTaskWcs(MissionTaskIssueParam param)  {
        if (param.getActionType().equals(MissionActionTypeEnum.MISSION_ACTION_TYPE_ENUM_HTTP_CALL.type)){
            return issueTaskWcsHttp(param);
        }
        return R.error();
    }
    /**
     * @author Munch D. Luffy
     * @date 2026/01/09
     * @description: 任务下发(指令下发,HTTP方式)
     * @version 1.0
     */
    @Transactional(rollbackFor = Exception.class)
    public R issueTaskWcsHttp(MissionTaskIssueParam param)  {
        if (param.getStepType().equals(MissionStepTypeEnum.MISSION_STEP_TYPE_REQUEST.type)){
            return issueTaskWcsHttpREQUEST(param);
        } else if (param.getStepType().equals(MissionStepTypeEnum.MISSION_STEP_TYPE_UNBIND.type)){
            return issueTaskWcsHttpREQUEST(param);//待完善
        } else if (param.getStepType().equals(MissionStepTypeEnum.MISSION_STEP_TYPE_BIND.type)){
            return issueTaskWcsHttpREQUEST(param);//待完善
        } else if (param.getStepType().equals(MissionStepTypeEnum.MISSION_STEP_TYPE_OBTAIN.type)){
            return issueTaskWcsHttpREQUEST(param);//待完善
        } else if (param.getStepType().equals(MissionStepTypeEnum.MISSION_STEP_TYPE_NO_EXECUTE.type)){
            return issueTaskWcsHttpREQUEST(param);//待完善
        }
        return R.error();
    }
    /**
     * @author Munch D. Luffy
     * @date 2026/01/09
     * @description: 任务下发(指令下发,HTTP方式)
     * @version 1.0
     */
    @Transactional(rollbackFor = Exception.class)
    public R issueTaskWcsHttpREQUEST(MissionTaskIssueParam param)  {
        try{
            String wcsUrl =  wcsApi.getHost() + ":" + wcsApi.getPort();
            MissionWcsTaskIssueParam missionWcsTaskIssueParam = new MissionWcsTaskIssueParam();
            if (param.getType().equals(TaskTypeEnum.TASK_TYPE_ENUM_IN.code)){
                wcsUrl = wcsUrl + WcsConstant.createInTask;
                missionWcsTaskIssueParam.setTaskNo(param.getTaskNo());
                missionWcsTaskIssueParam.setLocNo(param.getTargetCode());
                missionWcsTaskIssueParam.setBarcode(param.getBarcode());
                missionWcsTaskIssueParam.setTaskPri(param.getTaskPri());
            } else if (param.getType().equals(TaskTypeEnum.TASK_TYPE_ENUM_OUT.code)){
                wcsUrl = wcsUrl + WcsConstant.createOutTask;
                missionWcsTaskIssueParam.setTaskNo(param.getTaskNo());
                missionWcsTaskIssueParam.setLocNo(param.getSourceCode());
                missionWcsTaskIssueParam.setTaskPri(param.getTaskPri());
                missionWcsTaskIssueParam.setStaNo(Integer.parseInt(param.getTargetCode()));//目标站
                missionWcsTaskIssueParam.setOutArea("");//目标区域
                missionWcsTaskIssueParam.setBatch("");//出库批次号
                missionWcsTaskIssueParam.setBatchSeq(1);//出库顺序号
            } else if (param.getType().equals(TaskTypeEnum.TASK_TYPE_ENUM_TRANSFER.code)){
                wcsUrl = wcsUrl + WcsConstant.createLocMoveTask;
                missionWcsTaskIssueParam.setTaskNo(param.getTaskNo());
                missionWcsTaskIssueParam.setSourceLocNo(param.getSourceCode());
                missionWcsTaskIssueParam.setLocNo(param.getTargetCode());
                missionWcsTaskIssueParam.setTaskPri(param.getTaskPri());
            } else if (param.getType().equals(TaskTypeEnum.TASK_TYPE_ENUM_STA.code)){
                wcsUrl = wcsUrl + WcsConstant.STA_TO_STA;
                missionWcsTaskIssueParam.setTaskNo(param.getTaskNo());
            }
            /**WMS基础配置链接*/
            log.info("入库任务申请,请求地址: {}, 请求参数: {}", wcsUrl , JSONObject.toJSONString(param));
            HttpHeaders headers = new HttpHeaders();
            headers.add("Content-Type", "application/json");
            headers.add("api-version", "v2.0");
            HttpEntity httpEntity = new HttpEntity(param, headers);
            ResponseEntity<String> exchange = restTemplate.exchange(wcsUrl, HttpMethod.POST, httpEntity, String.class);
            log.info("WCS任务申请,响应结果: {}", exchange);
            if (Objects.isNull(exchange.getBody())) {
                return R.error().add("下发Wcs返回参数为空!!!");
            } 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 R.ok(result.getMsg()).add(result.getData());
                    } else {
                        return R.error(result.getMsg());
//                    throw new CoolException("任务执行状态上报失败!!");
                    }
                } catch (JsonProcessingException e) {
//                throw new CoolException(e.getMessage());
                }
            }
        } catch (Exception e){
            log.error(e.getMessage(),e);
        }
        return R.error();
    }
    /**
     * @author Munch D. Luffy
     * @date 2026/01/09
     * @description: 任务下发(被动接收)
     * @version 1.0
     */
    @Override
rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/MissionTaskIssueParam.java
New file
@@ -0,0 +1,148 @@
package com.vincent.rsf.server.api.entity.params;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.vincent.rsf.server.system.entity.FlowStepInstance;
import com.vincent.rsf.server.system.entity.FlowStepTemplate;
import com.vincent.rsf.server.system.entity.SubsystemFlowTemplate;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import java.util.List;
@Data
public class MissionTaskIssueParam {
    /**
     * WMS任务号
     */
    private String taskNo;
    /*
    * 类型:出库、入库、移库、站到站
    * */
    private String type;
    /**
     * 起点编码
     */
    private String sourceCode;
    /**
     * 终点编码
     */
    private String targetCode;
    /**
     * 子系统编码
     */
    private String systemCode;
    /**
     * 子系统名称
     */
    private String systemName;
    /**
     * 步骤类型:REQUEST-请求, RESPONSE-响应, VALIDATE-校验, TRANSFORM-转换
     */
    private String stepType;
    /**
     * 动作类型:HTTP_CALL, RPC_CALL, MQ_SEND, DB_OPERATION
     */
    private String actionType;
    /**
     * 关联flow_instance.id
     */
    private Long flowInstanceId;
    /**
     * 流程实例编号
     */
    private String flowInstanceNo;
    /**
     * 步骤顺序
     */
    private Integer stepOrder;
    /**
     * 步骤编码
     */
    private String stepCode;
    /**
     * 步骤名称
     */
    private String stepName;
    /**
     * 步骤模板ID
     */
    private Long stepTemplateId;
    /**
     * 状态:0-排队中 1-待执行 2-执行中 3-执行成功 4-执行失败 5-已跳过 6-已取消
     */
    private Short status;
    /**
     * 执行结果
     */
    private String executeResult;
    /**
     * 错误码
     */
    private String errorCode;
    /**
     * 错误信息
     */
    private String errorMessage;
    /**
     * 开始时间
     */
    private Date startTime;
    /**
     * 执行耗时(秒)
     */
    private Integer durationSeconds;
    /**
     * 步骤重试次数
     */
    private Integer retryTimes;
    public MissionTaskIssueParam() {}
    public MissionTaskIssueParam(FlowStepInstance flowStepInstance, SubsystemFlowTemplate subsystemFlowTemplate, FlowStepTemplate flowStepTemplate ) {
        this.taskNo = flowStepInstance.getTaskNo();
        this.systemCode = subsystemFlowTemplate.getSystemCode();
        this.systemName = subsystemFlowTemplate.getSystemName();
        this.stepType = flowStepTemplate.getStepType();
        this.actionType = flowStepTemplate.getActionType();
        this.flowInstanceId = flowStepInstance.getFlowInstanceId();
        this.flowInstanceNo = flowStepInstance.getFlowInstanceNo();
        this.stepOrder = flowStepInstance.getStepOrder();
        this.stepCode = flowStepInstance.getStepCode();
        this.stepName = flowStepInstance.getStepName();
        this.stepType = flowStepInstance.getStepType();
        this.stepTemplateId = flowStepInstance.getStepTemplateId();
        this.status = flowStepInstance.getStatus();
        this.executeResult = flowStepInstance.getExecuteResult();
        this.errorCode = flowStepInstance.getErrorCode();
        this.errorMessage = flowStepInstance.getErrorMessage();
        this.startTime = flowStepInstance.getStartTime();
        this.durationSeconds = flowStepInstance.getDurationSeconds();
        this.retryTimes = flowStepInstance.getRetryTimes();
    }
}
rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -15,6 +15,7 @@
import com.vincent.rsf.server.api.config.RemotesInfoProperties;
import com.vincent.rsf.server.api.entity.CommonResponse;
import com.vincent.rsf.server.api.entity.constant.RcsConstant;
import com.vincent.rsf.server.api.entity.params.MissionTaskIssueParam;
import com.vincent.rsf.server.api.entity.params.TaskItemParam;
import com.vincent.rsf.server.api.entity.params.WcsTaskParams;
import com.vincent.rsf.server.api.utils.LocUtils;
@@ -28,10 +29,7 @@
import com.vincent.rsf.server.system.constant.SerialRuleCode;
import com.vincent.rsf.server.system.entity.*;
import com.vincent.rsf.server.system.service.ConfigService;
import com.vincent.rsf.server.system.service.impl.FlowInstanceServiceImpl;
import com.vincent.rsf.server.system.service.impl.FlowStepInstanceServiceImpl;
import com.vincent.rsf.server.system.service.impl.TaskInstanceNodeServiceImpl;
import com.vincent.rsf.server.system.service.impl.TaskInstanceServiceImpl;
import com.vincent.rsf.server.system.service.impl.*;
import com.vincent.rsf.server.system.utils.SerialRuleUtils;
import com.vincent.rsf.server.system.utils.SystemAuthUtils;
import lombok.extern.slf4j.Slf4j;
@@ -107,6 +105,10 @@
    private TaskInstanceNodeServiceImpl taskInstanceNodeService;
    @Autowired
    private TaskInstanceServiceImpl taskInstanceService;
    @Autowired
    private SubsystemFlowTemplateServiceImpl subsystemFlowTemplateService;
    @Autowired
    private FlowStepTemplateServiceImpl flowStepTemplateService;
    /**
@@ -168,6 +170,15 @@
                        throw new CoolException(e.getMessage());
                    }
                } else {
                    SubsystemFlowTemplate subsystemFlowTemplate = subsystemFlowTemplateService.getById(flowInstance.getFlowTemplateId());
                    FlowStepTemplate flowStepTemplate = flowStepTemplateService.getById(flowStepInstance.getStepTemplateId());
                    MissionTaskIssueParam missionTaskIssueParam = new MissionTaskIssueParam(flowStepInstance,subsystemFlowTemplate,flowStepTemplate);
                    missionTaskIssueParam.setType(RcsTaskType.getTypeDesc(task.getTaskType()));
                    missionTaskIssueParam.setSourceCode(taskInstance.getSourceCode());
                    missionTaskIssueParam.setTargetCode(taskInstance.getTargetCode());
                    /**任务下发接口*/
                    String pubTakUrl = wmsOpenApi.getHost() + ":" + wmsOpenApi.getPort() + RcsConstant.MISSION_TRANSFER_STATION;
@@ -176,7 +187,7 @@
                    HttpHeaders headers = new HttpHeaders();
                    headers.add("Content-Type", "application/json");
                    headers.add("api-version", "v2.0");
                    HttpEntity httpEntity = new HttpEntity(flowStepInstance, headers);
                    HttpEntity httpEntity = new HttpEntity(missionTaskIssueParam, headers);
                    ResponseEntity<String> exchange = restTemplate.exchange(pubTakUrl, HttpMethod.POST, httpEntity, String.class);
                    log.info("任务下发后,响应结果: {}", exchange);
                    if (Objects.isNull(exchange.getBody())) {