| | |
| | | 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; |
| | |
| | | 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 |