From f39fd71eedfd828e715d33356a8c38ffbe66eb1a Mon Sep 17 00:00:00 2001 From: wuyouming666 <2265557248@qq.com> Date: 星期五, 24 五月 2024 15:28:09 +0800 Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes --- hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java | 145 ++++++++++++++++++++++++++++++++++------------- 1 files changed, 104 insertions(+), 41 deletions(-) diff --git a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java index e956d94..a3615de 100644 --- a/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java +++ b/hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java @@ -7,6 +7,7 @@ import com.github.yulichang.query.MPJQueryWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.mes.common.S7object; +import com.mes.common.WebSocketServer; import com.mes.common.config.Const; import com.mes.device.PlcParameterObject; import com.mes.edgglasstask.entity.EdgGlassTaskInfo; @@ -52,6 +53,9 @@ @Autowired EdgGlassTaskInfoService edgGlassTaskInfoService; + @Autowired + WebSocketServer webServerService; + @Value("${mes.threshold}") private int threshold; @@ -82,7 +86,7 @@ return; } log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓�0锛屽皢纭瀛楁敼涓�0"); - S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 0); + S7object.getinstance().plccontrol.writeWord(confirmationWrodAddress, (short) 0); return; } if (!"0".equals(confirmationWrodValue)) { @@ -100,17 +104,34 @@ } else if ("3".equals(taskRequestTypeValue)) { log.info("2銆佽繘鐗囧拰鍑虹墖閮界┖闂诧紝鎵ц鍑虹墖浠诲姟"); //鍔犵瀛愰噷闈㈡槸鍚︽湁鐜荤拑锛屾湁鍏堝嚭锛屾棤鐜荤拑鍏堣繘 - if (("1".equals(out08Glassstate) || "1".equals(out10Glassstate))) { - boolean outFlase = outTo(Integer.parseInt(out08Glassstate), - Integer.parseInt(out10Glassstate), confirmationWrodAddress, glassIdeValue, Integer.parseInt(currentSlot)); - log.info("鍑虹墖浠诲姟鏄惁瀹屾垚锛歿},澶辫触涓旂幓鐠僫d:{}涓嶄负绌哄垯鎵ц杩涚墖浠诲姟", outFlase, glassIdeValue); - if (!outFlase && StringUtils.isNotBlank(glassIdeValue)) { - inTo(glassIdeValue, confirmationWrodAddress, currentSlot); - } - } else { + boolean outFlase = outTo(Integer.parseInt(out08Glassstate), + Integer.parseInt(out10Glassstate), confirmationWrodAddress, glassIdeValue, Integer.parseInt(currentSlot)); + log.info("鍑虹墖浠诲姟鏄惁瀹屾垚锛歿},澶辫触涓旂幓鐠僫d:{}涓嶄负绌哄垯鎵ц杩涚墖浠诲姟", outFlase, glassIdeValue); + if (!outFlase && StringUtils.isNotBlank(glassIdeValue)) { inTo(glassIdeValue, confirmationWrodAddress, currentSlot); } } + } + + public void plcToHomeEdgTask() { + // log.info("鎺ㄦ暟鎹�"); + // jsonObject.append("params", new short[] { 30, 40, }); +// ArrayList<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("Home"); +// if (sendwServer != null) { +// for (WebSocketServer webserver : sendwServer) { +// webserver.sendMessage(jsonObject.toString()); +// if (webserver != null) { +// +// List<String> messages = webserver.getMessages(); +// +// if (!messages.isEmpty()) { +// // // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛� +// webserver.clearMessages(); +// } +// } +// +// } +// } } /** @@ -123,13 +144,14 @@ private void inTo(String glassId, String confirmationWrodAddress, String currentSlot) { log.info("1銆佹寜鐓х幓鐠僫d:{}鑾峰彇鐜荤拑灏忕墖淇℃伅,褰撳墠鏍煎瓙涓�:{}", glassId, currentSlot); GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId)); + //TODO: 鏌ヨ鐜荤拑 if (glassInfo == null) { log.info("2銆佹鐜荤拑缂栧彿涓嶅瓨鍦�"); return; } log.info("2銆佽幏鍙栧埌鐨勭幓鐠冧俊鎭负{}", glassInfo); //娣诲姞杩涚墖浠诲姟 鏌ユ壘绌烘牸 - EdgStorageCage nearestEmpty = edgStorageCageService.selectNearestEmpty(Integer.parseInt(currentSlot)); + EdgStorageCage nearestEmpty = edgStorageCageService.selectNearestEmpty(Integer.parseInt(currentSlot), Boolean.FALSE); Assert.isTrue(null != nearestEmpty, "鏍煎瓙宸叉弧"); log.info("3銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", nearestEmpty); @@ -145,7 +167,7 @@ boolean taskCache = saveTaskCache(details.getGlassId(), 0, nearestEmpty.getSlot(), Const.GLASS_CACHE_TYPE_IN); log.info("6銆佺敓鎴愯繘鐗囦换鍔′俊鎭瓨鍏ヤ换鍔¤〃鏄惁瀹屾垚锛歿}", taskCache); - S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 1); + S7object.getinstance().plccontrol.writeWord(confirmationWrodAddress, (short) 1); log.info("7銆佸彂閫佺‘璁ゅ瓧瀹屾垚"); @@ -174,7 +196,10 @@ // 1.2.3銆佹寜鐓у嚭鐗囦俊鎭幓璇︽儏琛ㄦ煡璇㈡牸瀛愬湪绗煎瓙閲岄潰鍓╀綑鐩稿悓灏哄鐨勭幓鐠冩暟鎹笖浠ョ増鍥緄d銆佺増搴忓崌搴忔帓搴� 鍙栫涓�鍧楃幓鐠冨嚭鐗� // 2銆佸鏋滄病鏈夊巻鍙插嚭鐗囦换鍔� // 2.1銆佸嚭褰撳墠鐗堝浘id鏈�灏忕増搴忔渶灏忕殑鐜荤拑锛堥棶棰橈細涓ゆ潯绾块兘娌℃湁鍘嗗彶浠诲姟锛屽嚭鐗囨椂涓ゆ潯绾跨殑鐜荤拑灏哄鐩稿悓锛屾槸鍚︽壘灏哄涓嶅悓鐨勶級 - Assert.isFalse(out08Glassstate == 0 && out10Glassstate == 0, "A09銆丄10閮芥湁鐜荤拑锛屾棤娉曞嚭鐗�"); + if (out08Glassstate == 2 && out10Glassstate == 2) { + log.info("A09銆丄10涓簕},{}闈炶嚜鍔ㄧ姸鎬侊紝鏃犳硶鍑虹墖"); + return Boolean.FALSE; + } log.info("0銆佸嚭鐗囦换鍔″嚭鐨勭姸鎬�:A09:銆恵}銆�;A10:銆恵}銆�)", out08Glassstate, out10Glassstate); //瀹氫箟鍑虹墖鐜荤拑淇℃伅 int endcell = 0; @@ -191,11 +216,12 @@ } EdgStorageCageDetails a09EdgGlass = queryGlassByTaskCache(Const.A09_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT); EdgStorageCageDetails a10EdgGlass = queryGlassByTaskCache(Const.A10_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT); - endcell = queryLineByGlassInfo(a09EdgGlass, a10EdgGlass, glassInfo, out08Glassstate, out08Glassstate); + endcell = queryLineByGlassInfo(a09EdgGlass, a10EdgGlass, glassInfo, out08Glassstate, out10Glassstate); } else { //鍒ゆ柇涓ゆ潯绾挎槸鍚﹂兘绌洪棽 - endcell = out08Glassstate == 1 ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION; - if (out08Glassstate == 1 && out10Glassstate == 1) { + endcell = out08Glassstate == 1 || out10Glassstate == 2 ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION; + + if ((out08Glassstate == 0 && out10Glassstate == 0) || (out08Glassstate == 1 && out10Glassstate == 1)) { EdgStorageCageDetails a09EdgGlass = queryGlassByTaskCache(Const.A09_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT); EdgStorageCageDetails a10EdgGlass = queryGlassByTaskCache(Const.A10_OUT_TARGET_POSITION, Const.GLASS_CACHE_TYPE_OUT); if (a09EdgGlass == null && a10EdgGlass == null) { @@ -232,9 +258,16 @@ } else { //鑾峰彇绗煎唴鎵�鏈夌幓鐠冧俊鎭紝鍖呮嫭寰呰繘鐗囩殑 List<EdgStorageCageDetails> glassList = queryEdgAllGlass(glassId); - Assert.isTrue(CollectionUtil.isNotEmpty(glassList), "绗煎唴鍜屽緟杩涚墖閮芥病鏈夌幓鐠�"); - int othercell = endcell == Const.A10_OUT_TARGET_POSITION ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION; - glassInfo = queryChangeGlassInfo(othercell, glassId); + if (CollectionUtil.isEmpty(glassList)) { + log.info("绗煎唴鍜屽緟杩涚墖閮芥病鏈夌幓鐠�"); + return Boolean.FALSE; + } + if (glassList.size() == 1 && glassId.equals(glassList.get(0).getGlassId())) { + glassInfo = glassList.get(0); + } else { + int othercell = endcell == Const.A10_OUT_TARGET_POSITION ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION; + glassInfo = queryChangeGlassInfo(othercell, glassId); + } } } } @@ -249,11 +282,14 @@ private List<EdgStorageCageDetails> queryEdgAllGlass(String glassId) { List<EdgStorageCageDetails> glassList = new ArrayList<>(); //鑾峰彇寰呰繘鐗囩幓鐠� - GlassInfo one = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>() - .eq(GlassInfo::getGlassId, glassId)); - EdgStorageCageDetails resultDetails = new EdgStorageCageDetails(); - BeanUtils.copyProperties(one, resultDetails); - glassList.add(resultDetails); + //todo: 鑾峰彇姝e湪鎵ц鐨勫伐绋嬩俊鎭� + if (StringUtils.isNotBlank(glassId)) { + GlassInfo one = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>() + .eq(GlassInfo::getGlassId, glassId)); + EdgStorageCageDetails resultDetails = new EdgStorageCageDetails(); + BeanUtils.copyProperties(one, resultDetails); + glassList.add(resultDetails); + } //鑾峰彇绗煎唴鐜荤拑 List<EdgStorageCageDetails> details = edgStorageCageDetailsService.list(new LambdaQueryWrapper<EdgStorageCageDetails>() .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)); @@ -369,23 +405,46 @@ */ private Integer queryLineByGlassInfo(EdgStorageCageDetails a08EdgStorageCageDetails, EdgStorageCageDetails a10EdgStorageCageDetails, EdgStorageCageDetails glassInfo, int out08Glassstate, int out10Glassstate) { - if (a08EdgStorageCageDetails != null && a08EdgStorageCageDetails.getHeight().equals(glassInfo.getHeight()) - && a08EdgStorageCageDetails.getWidth().equals(glassInfo.getWidth()) && out08Glassstate == 1) { - return Const.A09_OUT_TARGET_POSITION; + boolean b08 = a08EdgStorageCageDetails != null && a08EdgStorageCageDetails.getHeight().equals(glassInfo.getHeight()) + && a08EdgStorageCageDetails.getWidth().equals(glassInfo.getWidth()); + boolean b10 = a10EdgStorageCageDetails != null && a10EdgStorageCageDetails.getHeight().equals(glassInfo.getHeight()) + && a10EdgStorageCageDetails.getWidth().equals(glassInfo.getWidth()); + //瀛樺湪鍑虹墖浠诲姟 07涓虹┖ + if (a08EdgStorageCageDetails == null && a10EdgStorageCageDetails == null) { + return queryLineNoTask(out08Glassstate, out10Glassstate); + } else { + if (b08) { + return queryLineHasTask(out08Glassstate); + } + if (b10) { + return queryLineHasTask(out10Glassstate); + } + return queryLineNoTask(out08Glassstate, out10Glassstate); } - if (a10EdgStorageCageDetails != null && a10EdgStorageCageDetails.getHeight().equals(glassInfo.getHeight()) - && a10EdgStorageCageDetails.getWidth().equals(glassInfo.getWidth()) && out10Glassstate == 1) { - return Const.A10_OUT_TARGET_POSITION; - } - if (out08Glassstate == 1) { - return Const.A09_OUT_TARGET_POSITION; - } - if (out10Glassstate == 1) { - return Const.A10_OUT_TARGET_POSITION; - } - Assert.isTrue(Boolean.FALSE, "娌℃湁鎵惧埌鍑虹墖璺緞"); - return 0; } + + /** + * 鑾峰彇鏈変换鍔″悗鐨勫嚭鐗囬�昏緫 + */ + private Integer queryLineHasTask(int outGlassstate) { + return outGlassstate == 2 ? Const.A10_OUT_TARGET_POSITION : Const.A09_OUT_TARGET_POSITION; + } + + /** + * 鑾峰彇鏃犱换鍔″悗鐨勫嚭鐗囬�昏緫 + * + * @return + */ + private Integer queryLineNoTask(int out08Glassstate, int out10Glassstate) { + if (out08Glassstate == 2) { + return Const.A10_OUT_TARGET_POSITION; + } + if (out10Glassstate == 2 || out08Glassstate == 1) { + return Const.A09_OUT_TARGET_POSITION; + } + return Const.A10_OUT_TARGET_POSITION; + } + /** * 鎸夌収灏哄鍑虹幓鐠� @@ -399,9 +458,13 @@ MPJLambdaWrapper<EdgStorageCageDetails> wrapper = new MPJLambdaWrapper<>(); wrapper.select(EdgStorageCageDetails::getWidth, EdgStorageCageDetails::getHeight) .selectCount(EdgStorageCageDetails::getGlassId, EdgStorageCageDetails::getCount) + .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN) .groupBy(EdgStorageCageDetails::getWidth, EdgStorageCageDetails::getHeight) .last("order by count(t.glass_id) desc limit 2"); List<EdgStorageCageDetails> list = edgStorageCageDetailsService.list(wrapper); + if (CollectionUtil.isEmpty(list)) { + return null; + } log.info("鑾峰彇绗煎瓙鍐呮暟閲忓墠浜岀殑鐜荤拑鏁伴噺锛歿}", list); //鑾峰彇瀹介珮鎷嶇涓�鐨勭幓鐠冧俊鎭� EdgStorageCageDetails firstSize = list.get(0); @@ -467,7 +530,7 @@ log.info("5銆佺洿閫氫换鍔�,灏嗙幓鐠冧俊鎭彃鍏ュ崸寮忕悊鐗囩,褰撳墠鐜荤拑淇℃伅:{}", glassInfo); EdgStorageCageDetails details = new EdgStorageCageDetails(); BeanUtils.copyProperties(glassInfo, details); - EdgStorageCage nearestEmpty = edgStorageCageService.selectNearestEmpty(currentSlot); + EdgStorageCage nearestEmpty = edgStorageCageService.selectNearestEmpty(currentSlot, Boolean.TRUE); Assert.isTrue(null != nearestEmpty, "鏍煎瓙宸叉弧,鏃犳硶鎵ц鐩撮�氫换鍔�"); log.info("3銆佹煡璇㈠崸寮忕悊鐗囩閲岄潰鐨勭┖鏍�:{}", nearestEmpty); details.setSlot(nearestEmpty.getSlot()); @@ -490,7 +553,7 @@ } boolean glassSizeStatus = saveGlassSize(glassInfo); log.info("7銆佹坊鍔犲嚭鐗囩幓鐠冨昂瀵镐俊鎭埌纾ㄨ竟鍓嶇幓鐠冭〃鏄惁瀹屾垚锛歿}", glassSizeStatus); - S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 1); + S7object.getinstance().plccontrol.writeWord(confirmationWrodAddress, (short) 1); log.info("8銆佸彂閫佺‘璁ゅ瓧宸插畬鎴�"); return Boolean.TRUE; } @@ -526,7 +589,7 @@ private boolean saveGlassSize(EdgStorageCageDetails glassInfo) { EdgGlassTaskInfo edgGlassTaskInfo = new EdgGlassTaskInfo(); BeanUtils.copyProperties(glassInfo, edgGlassTaskInfo); - edgGlassTaskInfo.setHeight((int) (glassInfo.getEdgHeight() * ratio)); + edgGlassTaskInfo.setHeight((int) (glassInfo.getHeight() * ratio)); edgGlassTaskInfo.setWidth((int) (glassInfo.getWidth() * ratio)); edgGlassTaskInfo.setThickness((int) (glassInfo.getThickness() * ratio)); edgGlassTaskInfo.setStatus(Const.EDG_GLASS_BEFORE); -- Gitblit v1.8.0