From 0aacd330fca570ab3350aef5bda901f23aee23b3 Mon Sep 17 00:00:00 2001 From: wangfei <3597712270@qq.com> Date: 星期三, 20 十一月 2024 13:51:00 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/opccallback/CacheGlassStartCallback.java | 78 +++++++++++++++++++++++---------------- 1 files changed, 46 insertions(+), 32 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 68e550d..8941f5c 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 @@ -63,30 +63,39 @@ @Value("${mes.cellLength}") private int cellLength; + private Date startDate; + @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; + int device = tableName.equals("edg_storage_device_one_task") ? 1 : 2; EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(tableName); try { if (task == null) { log.info("浠诲姟琛ㄥ熀纭�鏁版嵁褰曞叆澶辫触锛岃妫�鏌ユ暟鎹槸鍚﹀綍鍏ユ垚鍔�"); return; } - int request = task.getTaskState(); + if (task.getTaskState() == 2) { + //闃叉鍑虹墖浠诲姟涓旂鍓嶆湁鐜荤拑鐨勬儏鍐碉紝灏嗚繘鐗噄d缃┖锛屽嵆鍑虹墖浠呰�冭檻绗煎唴鐨勭幓鐠� + task.setGlassIdIn(""); + } + int request = Integer.parseInt("" + value); log.info("寮�濮嬫墽琛屼换鍔★紝浠诲姟璇蜂俊鎭负{}", task); if (request == 0) { log.info("鏈敹鍒颁换鍔¤姹傦紝缁撴潫鏈浠诲姟"); } else if (request == 1) { //杩涚墖浠诲姟 - intoTask(task, tableName); + log.info("杩涚墖浠诲姟锛氳繘鐗囩幓鐠僫d涓猴細{}", task.getGlassIdIn()); + intoTask(task, tableName, device); } else if (request == 2) { //鍑虹墖浠诲姟 - outTask(task, tableName); + outTask(task, tableName, device); } else if (request == 3) { //鐩撮�氫换鍔� - if (!outTask(task, tableName)) { - intoTask(task, tableName); + if (!outTask(task, tableName, device)) { + intoTask(task, tableName, device); } } else if (request == 4) { log.info("灏嗗惎鍔ㄥ瓙鏀逛负0"); @@ -103,7 +112,7 @@ } } - private boolean intoTask(EdgStorageDeviceTask task, String tableName) { + private boolean intoTask(EdgStorageDeviceTask task, String tableName, int deviceId) { //鑾峰彇鐜荤拑鐨勫熀鏈俊鎭� GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, task.getGlassIdIn())); if (null == glassInfo) { @@ -111,11 +120,12 @@ return Boolean.FALSE; } //鑾峰彇褰撳墠杩涚墖鐜荤拑id鍜岃繘鐗囨牸瀛� 鐩稿悓灏哄鍙互鏀句笅鐨勬牸瀛� - EdgStorageCage edgStorageCage = edgStorageCageService.getEdgStorageCageBySize(1, glassInfo.getWidth(), glassInfo.getHeight(), task.getCurrentCell()); + EdgStorageCage edgStorageCage = edgStorageCageService.getEdgStorageCageBySize(deviceId, glassInfo.getWidth(), glassInfo.getHeight(), task.getCurrentCell()); if (edgStorageCage == null) { log.info("鐩稿悓灏哄鍙互鏀句笅鐨勬牸瀛愭湭鎵惧埌锛屾牸瀛恑d:{}", task.getCurrentCell()); // SELECT * from edg_storage_cage where device_id = 1 and remain_width > 1000 order by abs(slot - 10) - List<EdgStorageCage> storageCageList = edgStorageCageService.list(new LambdaQueryWrapper<EdgStorageCage>().eq(EdgStorageCage::getDeviceId, 1) + List<EdgStorageCage> storageCageList = edgStorageCageService.list(new LambdaQueryWrapper<EdgStorageCage>() + .eq(EdgStorageCage::getDeviceId, deviceId) .eq(EdgStorageCage::getEnableState, Const.SLOT_ON) .ge(EdgStorageCage::getRemainWidth, Math.max(glassInfo.getWidth(), glassInfo.getHeight())).last("order by abs(slot - " + task.getCurrentCell() + ")")); // //鐩撮�氫换鍔� @@ -144,7 +154,7 @@ return Boolean.TRUE; } - private boolean outTask(EdgStorageDeviceTask task, String tableName) { + private boolean outTask(EdgStorageDeviceTask task, String tableName, int deviceId) { EdgStorageCageDetails edgStorageCageDetails = null; //绗煎唴鏄増鍥剧浉宸槸鍚﹁秴杩囬槇鍊� boolean flag = queryMaxMinDiff(threshold); @@ -152,6 +162,7 @@ EdgStorageCageDetails minEdgDetails = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>() .inSql(EdgStorageCageDetails::getSlot, "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON) .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN) + .eq(EdgStorageCageDetails::getDeviceId, deviceId) .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId) .orderBy(Boolean.TRUE, Boolean.TRUE, EdgStorageCageDetails::getTemperingFeedSequence) .last("limit 1")); @@ -159,6 +170,7 @@ edgStorageCageDetails = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>() .eq(EdgStorageCageDetails::getWidth, minEdgDetails.getWidth()) .eq(EdgStorageCageDetails::getHeight, minEdgDetails.getHeight()) + .eq(EdgStorageCageDetails::getDeviceId, deviceId) .inSql(EdgStorageCageDetails::getId, "select min(id) from edg_storage_cage_details where state = 100 group by slot ") .last("order by abs(slot - " + task.getCurrentCell() + ") asc limit 1") ); @@ -176,6 +188,7 @@ if (null == edgStorageCageDetails) { edgStorageCageDetails = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>() .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN) + .eq(EdgStorageCageDetails::getDeviceId, deviceId) .eq(EdgStorageCageDetails::getSlot, minEdgDetails.getSlot()) .orderByAsc(EdgStorageCageDetails::getId) .last("limit 1") @@ -192,7 +205,7 @@ if (null != edgeData) { GlassInfo glassOutInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, edgeData.getGlassIdOut())); //绗煎唴鐨勭幓鐠冪殑灏哄鏄惁鍜屼笂涓�娆′换鍔′竴鑷� - edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsBySize(glassOutInfo.getWidth(), glassOutInfo.getHeight()); + edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsBySize(deviceId, task.getCurrentCell(), glassOutInfo.getWidth(), glassOutInfo.getHeight()); if (null == edgStorageCageDetails && StringUtils.isNotBlank(task.getGlassIdIn())) { GlassInfo glassInInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>() .eq(GlassInfo::getGlassId, task.getGlassIdIn()) @@ -206,7 +219,7 @@ } } if (null == edgStorageCageDetails) { - edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsBySize(0, 0); + edgStorageCageDetails = edgStorageCageDetailsService.queryEdgStorageDetailsBySize(deviceId, task.getCurrentCell(), 0, 0); } if (edgStorageCageDetails == null && StringUtils.isNotBlank(task.getGlassIdIn())) { //鍜屼笂娆′换鍔′笉瀛樺湪鐩稿悓灏哄 @@ -222,21 +235,28 @@ int taskType = Const.GLASS_CACHE_TYPE_OUT; String glassId = edgStorageCageDetails.getGlassId(); if (glassId.equals(task.getGlassIdIn())) { + if (3 != task.getTaskState()) { + return Boolean.FALSE; + } log.info("5銆佺洿閫氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", edgStorageCageDetails); //鐜荤拑淇℃伅鏇挎崲 String glassIdChange = queryAndChangeGlass(glassId); + //澶勭悊鍦ㄥ崸鐞嗗唴鐨勭幓鐠冧俊鎭細绗煎唴鐨勬暟鎹鐞� + queryEdgAndChangeGlass(edgStorageCageDetails.getGlassId(), glassIdChange); if (StringUtils.isNotBlank(glassIdChange)) { edgStorageCageDetails = new EdgStorageCageDetails(); GlassInfo one = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId)); BeanUtils.copyProperties(one, edgStorageCageDetails); } - EdgStorageCage storageCage = edgStorageCageService.getOne(new LambdaQueryWrapper<EdgStorageCage>().eq(EdgStorageCage::getDeviceId, 1) + EdgStorageCage storageCage = edgStorageCageService.getOne(new LambdaQueryWrapper<EdgStorageCage>() + .eq(EdgStorageCage::getDeviceId, deviceId) .eq(EdgStorageCage::getEnableState, Const.SLOT_ON) - .ge(EdgStorageCage::getRemainWidth, cellLength).last("order by abs(slot - " + task.getCurrentCell() + ")") - .last("limit 1")); + .ge(EdgStorageCage::getRemainWidth, cellLength) + .last("order by abs(slot - " + task.getCurrentCell() + ") limit 1")); Assert.isTrue(null != storageCage, "鏍煎瓙宸叉弧,鏃犳硶鎵ц鐩撮�氫换鍔�"); log.info("3銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", storageCage); edgStorageCageDetails.setSlot(storageCage.getSlot()); + edgStorageCageDetails.setDeviceId(storageCage.getDeviceId()); edgStorageCageDetails.setState(Const.GLASS_STATE_OUT); edgStorageCageDetailsService.save(edgStorageCageDetails); taskType = Const.GLASS_CACHE_TYPE_THROUGH; @@ -245,8 +265,10 @@ if (!edgStorageCageDetails.getSlot().equals(task.getCurrentCell())) { EdgStorageCageDetails currentGlass = edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>() .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN) + .eq(EdgStorageCageDetails::getDeviceId, deviceId) .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; @@ -261,28 +283,24 @@ edgStorageCageDetailsService.update(wrapper); log.info("5銆佹洿鏂板嚭鐗囩幓鐠冪殑鐘舵�佷负{}", Const.GLASS_STATE_OUT); } - - //鐜荤拑淇℃伅鏇挎崲 -// String glassIdChange = queryAndChangeGlass(edgStorageCageDetails.getGlassId()); - //澶勭悊鍦ㄥ崸鐞嗗唴鐨勭幓鐠冧俊鎭細绗煎唴鐨勬暟鎹鐞� -// queryEdgAndChangeGlass(edgStorageCageDetails.getGlassId(), glassIdChange); //鐢熸垚鍑虹墖浠诲姟 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); + 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.setCreateTime(new Date()); + edgInfo.setWidth((int) edgStorageCageDetails.getWidth()); + edgInfo.setHeight((int) edgStorageCageDetails.getWidth()); + edgInfo.setThickness((int) edgStorageCageDetails.getWidth()); edgInfo.setState(Const.GLASS_STATE_NEW); edgGlassTaskQueueInfoService.save(edgInfo); return Boolean.TRUE; @@ -297,20 +315,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; } @@ -426,7 +440,7 @@ 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; @@ -435,7 +449,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