zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/timer/TaskTimer.java
@@ -1,7 +1,9 @@ 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.wcs.core.entity.*; import com.zy.asrs.wcs.core.model.enums.LocStsType; import com.zy.asrs.wcs.core.model.enums.TaskStsType; @@ -12,9 +14,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 @@ -45,6 +45,12 @@ .eq(Task::getStatus, 1) .in(Task::getTaskSts, taskSts)); for (Task task : tasks) { boolean httpRequest = doHttpRequest(task, "127.0.0.1:8080", "/wms/open/asrs//wrkMast/finish/v1"); if (!httpRequest) { return; } //记录库存信息 updateRecordLoc(task); //任务转历史档 @@ -52,6 +58,36 @@ } } private boolean doHttpRequest(Task requestParam, String url, String path){ String response = ""; boolean success = false; try { Map<String, Object> map = new HashMap<>(); map.put("appkey", "ea1f0459efc02a79f046f982767939ae"); Map<String, Object> map2 = new HashMap<>(); map2.put("taskNo", requestParam.getWmsTaskNo()); log.info("请求报文:"+ JSONObject.toJSONString(requestParam)); response = new HttpHandler.Builder() .setHeaders(map) .setUri(url) .setPath(path) .setJson(JSONObject.toJSONString(map2)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); log.info("请求返回:"+response); String code = jsonObject.get("code").toString(); if(code.equals("200")){ success = true; } }catch (Exception e){ log.info("请求报错"+e.getMessage()); } return success; } //更新库存信息 @Transactional public void updateRecordLoc(Task task) { zy-asrs-wcs/src/main/java/com/zy/asrs/wcs/core/utils/ShuttleDispatcher.java
@@ -9,10 +9,7 @@ import com.zy.asrs.wcs.core.entity.*; import com.zy.asrs.wcs.core.kernel.AnalyzeService; import com.zy.asrs.wcs.core.model.NavigateNode; import com.zy.asrs.wcs.core.model.enums.DeviceCtgType; import com.zy.asrs.wcs.core.model.enums.NavigationMapType; import com.zy.asrs.wcs.core.model.enums.TaskCtgType; import com.zy.asrs.wcs.core.model.enums.TaskStsType; import com.zy.asrs.wcs.core.model.enums.*; import com.zy.asrs.wcs.core.service.*; import com.zy.asrs.wcs.rcs.News; import com.zy.asrs.wcs.rcs.cache.SlaveConnection; @@ -402,6 +399,45 @@ } //搜索是否存在前往目标楼层的小车工作档 for (Task task : taskService.list(new LambdaQueryWrapper<Task>() .in(Task::getTaskSts, TaskStsType.NEW_INBOUND.sts, TaskStsType.ANALYZE_INBOUND.sts, TaskStsType.EXECUTE_INBOUND.sts, TaskStsType.COMPLETE_INBOUND.sts , TaskStsType.NEW_OUTBOUND.sts, TaskStsType.ANALYZE_OUTBOUND.sts, TaskStsType.EXECUTE_OUTBOUND.sts, TaskStsType.COMPLETE_OUTBOUND.sts))) { List<Motion> motions = motionService.list(new LambdaQueryWrapper<Motion>() .eq(Motion::getTaskNo, task.getTaskNo()) .in(Motion::getMotionCtg, MotionCtgType.SHUTTLE_MOVE , MotionCtgType.SHUTTLE_MOVE_LIFT_PALLET , MotionCtgType.SHUTTLE_MOVE_DOWN_PALLET , MotionCtgType.SHUTTLE_MOVE_FROM_LIFT , MotionCtgType.SHUTTLE_MOVE_TO_LIFT , MotionCtgType.SHUTTLE_MOVE_FROM_CONVEYOR , MotionCtgType.SHUTTLE_MOVE_TO_CONVEYOR , MotionCtgType.SHUTTLE_MOVE_FROM_LIFT_TO_CONVEYOR )); boolean isUpdateLev = false; for (Motion motion : motions) { if (motion.getOrigin() == null || motion.getTarget() == null) { continue; } int sourceLev = Utils.getLev(motion.getOrigin());//动作源楼层 int targetLev = Utils.getLev(motion.getTarget());//动作目标楼层 if (sourceLev != targetLev) { isUpdateLev = true; break; } } if(isUpdateLev) { levCount++;//工作档属于跨层任务,小车归属于目标楼层 continue; } } return levCount < Integer.parseInt(dict.getValue()); }