From 9152c5394d4fd9d14d1a5fb9de9d441450b2bac6 Mon Sep 17 00:00:00 2001 From: zhoushihao <zsh19950802@163.com> Date: 星期三, 20 十一月 2024 08:41:13 +0800 Subject: [PATCH] 1、卧理进出片订阅功能直接按订阅结果判断,订阅后查询数据库,可能造成数据重复读,任务重复执行问题 2、大理片笼新增任务表、任务历史表脚本 3、大理片笼进片任务功能开发已完成50% --- hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java | 40 ++++++++++++++++++++++++++-------------- 1 files changed, 26 insertions(+), 14 deletions(-) diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java index 2d81cd3..deaedf2 100644 --- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java +++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.kangaroohy.milo.runner.subscription.SubscriptionCallback; import com.mes.common.config.Const; +import com.mes.edgglasstaskqueueinfo.entity.EdgGlassTaskQueueInfo; +import com.mes.edgglasstaskqueueinfo.service.EdgGlassTaskQueueInfoService; import com.mes.edgstoragecage.entity.EdgStorageCage; import com.mes.edgstoragecage.entity.EdgStorageCageDetails; import com.mes.edgstoragecage.service.EdgStorageCageDetailsService; @@ -24,6 +26,7 @@ import org.springframework.stereotype.Service; import javax.annotation.Resource; +import java.util.Date; import java.util.List; /** @@ -50,6 +53,9 @@ @Resource EdgStorageDeviceTaskHistoryService edgStorageDeviceTaskHistoryService; + @Resource + EdgGlassTaskQueueInfoService edgGlassTaskQueueInfoService; + @Value("${mes.glassGap}") private int glassGap; @Value("${mes.threshold}") @@ -59,6 +65,7 @@ @Override public void onSubscribe(String identifier, Object value) { + log.info("褰撳墠姝e湪鎵ц鐨勪换鍔′负{}", value); String tableName = identifier.contains("edg_storage_device_one_task") ? EDG_STORAGE_DEVICE_ONE_TASK : EDG_STORAGE_DEVICE_TWO_TASK; EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(tableName); try { @@ -66,12 +73,13 @@ log.info("浠诲姟琛ㄥ熀纭�鏁版嵁褰曞叆澶辫触锛岃妫�鏌ユ暟鎹槸鍚﹀綍鍏ユ垚鍔�"); return; } - int request = task.getTaskState(); + int request = Integer.parseInt("" + value); log.info("寮�濮嬫墽琛屼换鍔★紝浠诲姟璇蜂俊鎭负{}", task); if (request == 0) { log.info("鏈敹鍒颁换鍔¤姹傦紝缁撴潫鏈浠诲姟"); } else if (request == 1) { //杩涚墖浠诲姟 + log.info("杩涚墖浠诲姟锛氳繘鐗囩幓鐠僫d涓猴細{}", task.getGlassIdIn()); intoTask(task, tableName); } else if (request == 2) { //鍑虹墖浠诲姟 @@ -83,7 +91,7 @@ } } else if (request == 4) { log.info("灏嗗惎鍔ㄥ瓙鏀逛负0"); - task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY); + task.setTaskRunning(Const.GLASS_CACHE_TYPE_RUNNING); edgStorageDeviceTaskService.updateTaskMessage(tableName, task); } else { finishTask(task, tableName); @@ -240,6 +248,7 @@ .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN) .eq(EdgStorageCageDetails::getSlot, task.getCurrentCell()).eq(EdgStorageCageDetails::getWidth, edgStorageCageDetails.getWidth()) .eq(EdgStorageCageDetails::getHeight, edgStorageCageDetails.getHeight()).eq(EdgStorageCageDetails::getThickness, edgStorageCageDetails.getThickness()) + .orderByAsc(EdgStorageCageDetails::getId).last("limit 1") ); if (null != currentGlass) { edgStorageCageDetails = currentGlass; @@ -263,20 +272,26 @@ task.setGlassIdOut(edgStorageCageDetails.getGlassId()); task.setStartCell(edgStorageCageDetails.getSlot()); task.setTaskRunning(taskType); - task.setWidth((int) edgStorageCageDetails.getWidth() * 10); - task.setHeight((int) edgStorageCageDetails.getHeight() * 10); - task.setThickness((int) edgStorageCageDetails.getThickness() * 10); - task.setFilmRemove(0); +// task.setWidth((int) edgStorageCageDetails.getWidth() * 10); +// task.setHeight((int) edgStorageCageDetails.getHeight() * 10); +// task.setThickness((int) edgStorageCageDetails.getThickness() * 10); +// task.setFilmRemove(0); edgStorageDeviceTaskService.updateTaskMessage(tableName, task); saveHistoryTask(task); //鏇存柊璇︽儏琛ㄤ换鍔″嚭鐗囦腑 edgStorageCageDetailsService.update(new LambdaUpdateWrapper<EdgStorageCageDetails>() .set(EdgStorageCageDetails::getState, Const.GLASS_STATE_OUT) .eq(EdgStorageCageDetails::getGlassId, edgStorageCageDetails.getGlassId())); + //todo:纾ㄨ竟瀵瑰垪琛ㄦ柊澧炰竴鏉℃暟鎹� + EdgGlassTaskQueueInfo edgInfo = new EdgGlassTaskQueueInfo(); + BeanUtils.copyProperties(task, edgInfo); + edgInfo.setState(Const.GLASS_STATE_NEW); + edgGlassTaskQueueInfoService.save(edgInfo); return Boolean.TRUE; } private boolean finishTask(EdgStorageDeviceTask task, String tableName) { + log.info("褰撳墠浠诲姟淇℃伅涓猴細{}", task); if (task.getTaskState() <= 4) { log.info("鏈夋鍦ㄦ墽琛岀殑浠诲姟锛岀粨鏉�"); return Boolean.FALSE; @@ -284,20 +299,16 @@ Integer cell = task.getStartCell(); Integer state = task.getTaskState(); task.setTaskRunning(Const.GLASS_CACHE_TYPE_EMPTY); - task.setTaskState(Const.GLASS_CACHE_TYPE_EMPTY); task.setGlassIdOut(""); task.setStartCell(0); - task.setWidth(0); - task.setHeight(0); - task.setThickness(0); - task.setFilmRemove(0); edgStorageDeviceTaskService.updateTaskMessage(tableName, task); edgStorageDeviceTaskHistoryService.update(new LambdaUpdateWrapper<EdgStorageDeviceTaskHistory>() .eq(EdgStorageDeviceTaskHistory::getTaskState, Const.RAW_GLASS_TASK_NEW) .set(EdgStorageDeviceTaskHistory::getTaskState, Const.GLASS_CACHE_TYPE_FINISH.equals(state) ? Const.RAW_GLASS_TASK_SUCCESS : Const.RAW_GLASS_TASK_FAILURE) ); - updateCellRemainWidth(cell); + int device = tableName.equals("edg_storage_device_one_task") ? 1 : 2; + updateCellRemainWidth(cell, device); return Boolean.TRUE; } @@ -407,12 +418,13 @@ EdgStorageDeviceTaskHistory taskHistory = new EdgStorageDeviceTaskHistory(); BeanUtils.copyProperties(task, taskHistory); taskHistory.setTaskType(task.getTaskRunning()); + taskHistory.setCreateTime(new Date()); taskHistory.setTaskState(Const.RAW_GLASS_TASK_NEW); edgStorageDeviceTaskHistoryService.save(taskHistory); return Boolean.TRUE; } - private boolean updateCellRemainWidth(int slot) { + private boolean updateCellRemainWidth(int slot, int device) { List<EdgStorageCageDetails> list = edgStorageCageDetailsService.list(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getSlot, slot) .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)); int remainWidth = cellLength; @@ -421,7 +433,7 @@ remainWidth = cellLength - widthTotal >= 0 ? cellLength - widthTotal : 0; } edgStorageCageService.update(new LambdaUpdateWrapper<EdgStorageCage>(). - set(EdgStorageCage::getRemainWidth, remainWidth).eq(EdgStorageCage::getSlot, slot)); + set(EdgStorageCage::getRemainWidth, remainWidth).eq(EdgStorageCage::getSlot, slot).eq(EdgStorageCage::getDeviceId, device)); return Boolean.TRUE; } } -- Gitblit v1.8.0