From c6cb57f307b0c62a05cac78cfd828c313f10e611 Mon Sep 17 00:00:00 2001 From: zhoushihao <zsh19950802@163.com> Date: 星期二, 15 四月 2025 10:58:25 +0800 Subject: [PATCH] 1、卧式理片笼新增任务逻辑 2、入参时间加入时区 --- hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java | 84 +++++++++++++++++++++++++++-------------- 1 files changed, 55 insertions(+), 29 deletions(-) diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java index 2cb907c..2ed246d 100644 --- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java +++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java @@ -51,20 +51,10 @@ @Autowired(required = false) MiloService miloService; - -// @Resource(name = "cacheGlassStartCallback") -// SubscriptionCallback cacheGlassStartCallback; -// -// @Resource(name = "cacheGlassTestCallback") -// SubscriptionCallback cacheGlassTestCallback; - @Resource EdgStorageDeviceTaskService edgStorageDeviceTaskService; - // @Resource -// EdgGlassTaskQueueInfoService edgGlassTaskQueueInfoService; @Autowired EdgGlassTaskInfoService edgGlassTaskInfoService; - @Resource GlassInfoService glassInfoService; @Resource @@ -101,16 +91,6 @@ private String glassInIdTwo = ""; private String glassIdOne = ""; private String glassIdTwo = ""; - - // @Scheduled(fixedDelay = Long.MAX_VALUE) -// public void startOneOpcTask() throws Exception { -// miloService.subscriptionFromOpcUa(Arrays.asList("mes.WL1.edg_storage_device_one_task[1].task_state"), cacheGlassStartCallback); -// } -// -// @Scheduled(fixedDelay = Long.MAX_VALUE) -// public void startTwoOpcTask() throws Exception { -// miloService.subscriptionFromOpcUa(Arrays.asList("mes.WL2.edg_storage_device_two_task[1].task_state"), cacheGlassStartCallback); -// } @Scheduled(fixedDelay = 1000) public void startOneOpcTask() { @@ -158,9 +138,12 @@ log.info("灏嗗惎鍔ㄥ瓙鏀逛负4"); task.setTaskRunning(Const.GLASS_CACHE_TYPE_RUNNING); edgStorageDeviceTaskService.updateTaskMessage(tableName, task); - } else { + } else if (request == 5) { log.info("璁惧锛歿}鐘舵�侊細{}", device, request); finishTask(task, tableName); + } else { + log.info("鐜荤拑寮傚父澶勭悊"); + damageTask(task, tableName); } // } catch (Exception e) { // log.info("鎵ц浠诲姟杩囩▼涓彂鐢熷紓甯革紝浠诲姟瀛梴}锛寋}", task.getTaskState(), e.getMessage()); @@ -481,7 +464,6 @@ Date startDate = new Date(); log.info("寮�濮嬫墽琛屽畬鎴愪换鍔″悗娓呴櫎鍔ㄤ綔锛屼换鍔′俊鎭负锛歿},琛ㄥ悕涓猴細{},寮�濮嬫椂闂达細{}", task, tableName, startDate); Integer cell = task.getStartCell(); - Integer state = task.getTaskState(); task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY); task.setGlassIdOut(""); task.setStartCell(0); @@ -498,14 +480,59 @@ edgStorageDeviceTaskHistoryService.update(new LambdaUpdateWrapper<EdgStorageDeviceTaskHistory>() .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW) .eq(EdgStorageDeviceTaskHistory::getDeviceId, device) - .set(EdgStorageDeviceTaskHistory::getTaskState, - Const.GLASS_CACHE_TYPE_FINISH.equals(state) ? Const.RAW_GLASS_TASK_SUCCESS : Const.RAW_GLASS_TASK_FAILURE) + .set(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_SUCCESS) ); //鏈�鍚庢洿鏂颁换鍔★紝淇濊瘉浠诲姟鍓嶇殑鍔ㄤ綔閮藉仛瀹� edgStorageDeviceTaskService.updateTaskMessage(tableName, task); Date endDate = new Date(); log.info("缁撴潫瀹屾垚浠诲姟鍚庢竻闄ゅ姩浣滐紝琛ㄥ悕涓猴細{},缁撴潫鏃堕棿涓猴細{}锛屽叡鑰楁椂锛歿}ms", tableName, endDate, endDate.getTime() - startDate.getTime()); return Boolean.TRUE; + } + + private boolean damageTask(EdgStorageDeviceTask task, String tableName) { + if (task.getTaskState() <= 5) { + log.info("浠诲姟鏈彂鐢熷紓甯告竻绌猴紝浠诲姟缁撴潫锛岀數姘旂姸鎬亄},mes鐘舵�亄}", task.getTaskState(), task.getTaskRunning()); + return Boolean.FALSE; + } + Date startDate = new Date(); + log.info("寮�濮嬫墽琛屽紓甯稿鐞嗕换鍔″悗娓呴櫎鍔ㄤ綔锛屼换鍔′俊鎭负锛歿},琛ㄥ悕涓猴細{},寮�濮嬫椂闂达細{}", task, tableName, startDate); + int device = tableName.equals("edg_storage_device_one_task") ? 1 : 2; + EdgStorageDeviceTaskHistory taskHistory = edgStorageDeviceTaskHistoryService.getOne(new LambdaQueryWrapper<EdgStorageDeviceTaskHistory>() + .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW) + .eq(EdgStorageDeviceTaskHistory::getDeviceId, device) + .orderByDesc(EdgStorageDeviceTaskHistory::getCreateTime).last("limit 1")); + Integer cell = taskHistory.getStartCell(); + Integer taskType = taskHistory.getTaskType(); + if (Const.GLASS_CACHE_TYPE_IN_ALL.contains(taskType)) { + String glassId = taskHistory.getGlassIdIn(); + edgStorageCageDetailsService.remove(new LambdaQueryWrapper<EdgStorageCageDetails>() + .eq(EdgStorageCageDetails::getDeviceId, device) + .eq(EdgStorageCageDetails::getSlot, cell) + .eq(EdgStorageCageDetails::getGlassId, glassId)); + } else { + String glassId = taskHistory.getGlassIdOut(); + edgStorageCageDetailsService.update(new LambdaUpdateWrapper<EdgStorageCageDetails>() + .set(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN) + .eq(EdgStorageCageDetails::getDeviceId, device) + .eq(EdgStorageCageDetails::getSlot, cell) + .eq(EdgStorageCageDetails::getGlassId, glassId)); + } + + updateCellRemainWidth(cell, device, taskHistory); + edgStorageDeviceTaskHistoryService.update(new LambdaUpdateWrapper<EdgStorageDeviceTaskHistory>() + .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW) + .eq(EdgStorageDeviceTaskHistory::getDeviceId, device) + .set(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_FAILURE) + ); + //鏈�鍚庢洿鏂颁换鍔★紝淇濊瘉浠诲姟鍓嶇殑鍔ㄤ綔閮藉仛瀹� + task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY); + task.setGlassIdOut(""); + task.setStartCell(0); + edgStorageDeviceTaskService.updateTaskMessage(tableName, task); + Date endDate = new Date(); + log.info("瀹屾垚鎵ц寮傚父澶勭悊浠诲姟鍚庢竻闄ゅ姩浣滐紝琛ㄥ悕涓猴細{},缁撴潫鏃堕棿涓猴細{}锛屽叡鑰楁椂锛歿}ms", tableName, endDate, endDate.getTime() - startDate.getTime()); + return Boolean.TRUE; + } /** @@ -652,7 +679,7 @@ return Boolean.TRUE; } - private boolean updateCellRemainWidth(int slot, int device, EdgStorageDeviceTaskHistory taskHistory) { + public boolean updateCellRemainWidth(int slot, int device, EdgStorageDeviceTaskHistory taskHistory) { List<EdgStorageCageDetails> list = edgStorageCageDetailsService.list(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getSlot, slot) .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)); int remainWidth = cellLength; @@ -660,10 +687,9 @@ if (2 == taskHistory.getTaskType()) { remainWidth = 0; } else { - EdgStorageCage storageCage = edgStorageCageService.getOne(new LambdaQueryWrapper<EdgStorageCage>() - .eq(EdgStorageCage::getDeviceId, device).eq(EdgStorageCage::getSlot, slot)); - EdgStorageCageDetails bigDetails = list.stream().filter(e -> e.getGlassId().equals(taskHistory.getGlassIdIn())).findFirst().orElse(null); - remainWidth = storageCage.getRemainWidth() - glassGap - (int) Math.max(bigDetails.getWidth(), bigDetails.getHeight()); + for (EdgStorageCageDetails item : list) { + remainWidth = remainWidth - glassGap - (int) Math.max(item.getWidth(), item.getHeight()); + } if (remainWidth <= 0) { remainWidth = 0; } -- Gitblit v1.8.0