1
14 小时以前 64c076641c56b857fa78f6d9401f070591094569
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
@@ -67,7 +177,7 @@
            try {
                CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
                if (result.getCode() == 200) {
                    return R.ok();
                    return R.ok(result.getMsg()).add(result.getData());
                } else {
                    return R.error(result.getMsg());
//                    throw new CoolException("任务执行状态上报失败!!");
@@ -106,7 +216,7 @@
            try {
                CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
                if (result.getCode() == 200) {
                    return R.ok();
                    return R.ok(result.getMsg()).add(result.getData());
                } else {
                    return R.error(result.getMsg());
//                    throw new CoolException("任务执行状态上报失败!!");
@@ -145,7 +255,7 @@
            try {
                CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
                if (result.getCode() == 200) {
                    return R.ok();
                    return R.ok(result.getMsg()).add(result.getData());
                } else {
                    return R.error(result.getMsg());
//                    throw new CoolException("任务执行状态上报失败!!");
@@ -184,7 +294,7 @@
            try {
                CommonResponse result = objectMapper.readValue(exchange.getBody(), CommonResponse.class);
                if (result.getCode() == 200) {
                    return R.ok();
                    return R.ok(result.getMsg()).add(result.getData());
                } else {
                    return R.error(result.getMsg());
//                    throw new CoolException("任务执行状态上报失败!!");