From c13fe87d70e81d7dcb604f8f1227de8f313cbefc Mon Sep 17 00:00:00 2001 From: zjj <3272660260@qq.com> Date: 星期三, 10 七月 2024 09:26:51 +0800 Subject: [PATCH] # --- zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/TaskTimer.java | 191 ++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 178 insertions(+), 13 deletions(-) diff --git a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/TaskTimer.java b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/TaskTimer.java index 63f990f..cdc3cd6 100644 --- a/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/TaskTimer.java +++ b/zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/TaskTimer.java @@ -1,7 +1,13 @@ package com.zy.asrs.wcs.core.timer; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.zy.asrs.common.utils.HttpHandler; +import com.zy.asrs.framework.common.Cools; +import com.zy.asrs.wcs.core.domain.param.AgvTaskCreateParam; +import com.zy.asrs.wcs.core.domain.param.CreateWcsTaskParam; +import com.zy.asrs.wcs.core.domain.param.ReturnWcsTaskStatisParam; import com.zy.asrs.wcs.core.entity.*; import com.zy.asrs.wcs.core.model.enums.LocStsType; import com.zy.asrs.wcs.core.model.enums.TaskStsType; @@ -12,9 +18,7 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; +import java.util.*; @Slf4j @Component @@ -30,25 +34,156 @@ private MotionLogService motionLogService; @Autowired private LocService locService; + @Autowired + private BasConveyorStaService basConveyorStaService; + + //鍑哄簱杞彂agv + @Scheduled(cron = "0/1 * * * * ? ") + @Transactional + public synchronized void sendOutTaskToAgv() { + ArrayList<Long> taskSts = new ArrayList<>(); + taskSts.add(TaskStsType.COMPLETE_OUTBOUND.sts); + + BasConveyorSta basConveyorSta = basConveyorStaService.getOne(new LambdaQueryWrapper<BasConveyorSta>().eq(BasConveyorSta::getSiteNo, 100)); + if (basConveyorSta == null) { + return; + } + if (basConveyorSta.getWorkMode() != 2){ + return; + } + if (basConveyorSta.getTaskNo() == 0){ + return; + } + if (!basConveyorSta.getAutoing().equals("Y") || !basConveyorSta.getLoading().equals("Y")) { + return; + } + + List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>() + .eq(Task::getStatus, 1) + .in(Task::getTaskSts, taskSts)); + for (Task task : tasks) { + if (Cools.isEmpty(task.getMemo())){ + task.setTaskSts(999L); + taskService.updateById(task); + continue; + }else if (task.getMemo().equals("06YZ0001")){ + task.setTaskSts(1001L); + taskService.updateById(task); + continue; + } + if (task.getTaskNo().equals(basConveyorSta.getTaskNo().toString())) { + AgvTaskCreateParam agvTaskCreateParam = new AgvTaskCreateParam(); + getOutRequestParam(agvTaskCreateParam,task); + boolean httpRequest = doHttpRequest(agvTaskCreateParam, "172.18.16.248:443", "/rcs/rtas/api/robot/controller/task/submit"); + if (httpRequest){ + task.setTaskSts(1000L); + taskService.updateById(task); + }else { + log.error("鍑哄簱浠诲姟鎺ㄩ�乺gv澶辫触"+task.getWmsTaskNo()); + } + } + } + } + + private void getOutRequestParam(AgvTaskCreateParam agvTaskCreateParam, Task param){ + List<AgvTaskCreateParam.AgvTaskParam> agvTaskParamList = Arrays.asList( + //璧峰浣� + new AgvTaskCreateParam.AgvTaskParam("SITE","06YZ0001",0,1), + //鐩爣浣� + new AgvTaskCreateParam.AgvTaskParam("SITE",param.getMemo(),1,1) + ); + List<AgvTaskCreateParam.carrierInfoParam> carrierInfoParam = Arrays.asList( + //璧峰浣� + new AgvTaskCreateParam.carrierInfoParam() + + ); + agvTaskCreateParam.setTaskType("F01"); + agvTaskCreateParam.setInitPriority(param.getPriority().toString()); + agvTaskCreateParam.setRobotTaskCode(param.getWmsTaskNo()); + agvTaskCreateParam.setTargetRoute(agvTaskParamList); + agvTaskCreateParam.setCarrierInfo(carrierInfoParam); + + } + + private boolean doHttpRequest(AgvTaskCreateParam requestParam, String url, String path){ + String response = ""; + boolean success = false; + Map<String, Object> map = new HashMap<>(); + map.put("Content-Type", "application/json;charset=UTF-8"); + map.put("X-lr-request-id", requestParam.getRobotTaskCode()); + map.put("X-lr-version", 4.1); + map.put("X-lr-trace-id", "{{$guid}}"); + try { + response = new HttpHandler.Builder() + .setHeaders(map) + .setUri(url) + .setHttps(true) + .setPath(path) + .setJson(JSONObject.toJSONString(requestParam)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + + String code = jsonObject.get("code").toString(); + if(code.equals("SUCCESS")){ + success = true; + } + + }catch (Exception e){ + + } + return success; + } @Scheduled(cron = "0/1 * * * * ? ") @Transactional public synchronized void clearCompletedTask() { ArrayList<Long> taskSts = new ArrayList<>(); taskSts.add(TaskStsType.COMPLETE_INBOUND.sts); - taskSts.add(TaskStsType.COMPLETE_OUTBOUND.sts); + taskSts.add(TaskStsType.OUT_TASK_OVER.sts); taskSts.add(TaskStsType.COMPLETE_CHARGE.sts); taskSts.add(TaskStsType.COMPLETE_MOVE.sts); taskSts.add(TaskStsType.COMPLETE_MANUAL.sts); + taskSts.add(TaskStsType.COMPLETE_LADEN_MOVE.sts); List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>() .eq(Task::getStatus, 1) .in(Task::getTaskSts, taskSts)); for (Task task : tasks) { - //璁板綍搴撳瓨淇℃伅 - updateRecordLoc(task); - //浠诲姟杞巻鍙叉。 - saveTaskLog(task); + + HashMap<String, String> mesMap = new HashMap<>(); + mesMap.put("taskNo", task.getWmsTaskNo()); + mesMap.put("contNo",task.getZpallet()); + boolean returnTask4 = toMesHttpRequest(mesMap, "172.18.231.126", "/api/wcs/wcsTaskInfo", "4",task.getMemo()); + if (returnTask4){ + //璁板綍搴撳瓨淇℃伅 + updateRecordLoc(task); + //浠诲姟杞巻鍙叉。 + saveTaskLog(task); + + }else { + log.error("浠诲姟瀹屾垚鍚庤繑鍥瀖es澶辫触"); + } + + } + } + + @Scheduled(cron = "0/1 * * * * ? ") + @Transactional + public synchronized void clearCompletedTask999() { + ArrayList<Long> taskSts = new ArrayList<>(); + taskSts.add(TaskStsType.OUT_TASK_OVER_HAND.sts); + + + List<Task> tasks = taskService.list(new LambdaQueryWrapper<Task>() + .eq(Task::getStatus, 1) + .in(Task::getTaskSts, taskSts)); + for (Task task : tasks) { + //璁板綍搴撳瓨淇℃伅 + updateRecordLoc(task); + //浠诲姟杞巻鍙叉。 + saveTaskLog(task); + } } @@ -87,12 +222,9 @@ @Transactional public void saveTaskLog(Task task) { //鍒涘缓鍘嗗彶妗� - Date date = new Date(); TaskLog taskLog = new TaskLog(); - taskLog.setTaskNo(task.getTaskNo()); - taskLog.setTaskData(JSON.toJSONString(task)); - taskLog.setCreateTime(date); - taskLog.setUpdateTime(date); + taskLog.sync(task); + taskLog.setUpdateTime(new Date()); taskLogService.save(taskLog); List<Motion> motions = motionService.list(new LambdaQueryWrapper<Motion>().eq(Motion::getTaskNo, task.getTaskNo()).eq(Motion::getHostId, task.getHostId())); @@ -110,4 +242,37 @@ motionService.remove(new LambdaQueryWrapper<Motion>().eq(Motion::getTaskNo, task.getTaskNo()).eq(Motion::getHostId, task.getHostId())); } + private boolean toMesHttpRequest(Map<String,String> map, String url, String path, String code,String localtion){ + Date now = new Date(); + long time = now.getTime()/1000; + ReturnWcsTaskStatisParam returnWcsTaskStatisParam = new ReturnWcsTaskStatisParam(); + returnWcsTaskStatisParam.setRequestPK(map.get("taskNo")); + returnWcsTaskStatisParam.setTrkId(map.get("taskNo")); + returnWcsTaskStatisParam.setContNo(map.get("contNo")); + returnWcsTaskStatisParam.setCode(code); + returnWcsTaskStatisParam.setOperator("wcs"); + returnWcsTaskStatisParam.setOperationTime(time); + returnWcsTaskStatisParam.setTrkType("01"); + returnWcsTaskStatisParam.setCurPos(localtion); + String response = ""; + boolean success = false; + try { + response = new HttpHandler.Builder() + .setUri(url) + .setPath(path) + .setJson(JSONObject.toJSONString(returnWcsTaskStatisParam)) + .build() + .doPost(); + JSONObject jsonObject = JSON.parseObject(response); + + String code1 = jsonObject.get("success").toString(); + if(code1.equals("1")){ + success = true; + } + }catch (Exception e){ + return success; + } + return success; + } + } -- Gitblit v1.9.1