From f61904e8fc35b635cd4fe40ed9be770ef322fda4 Mon Sep 17 00:00:00 2001 From: ZengTao <2773468879@qq.com> Date: 星期五, 14 六月 2024 14:39:08 +0800 Subject: [PATCH] 添加破损接口实现类 --- hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java | 238 +++++++++++++++++++++++++++++++---------------------------- 1 files changed, 124 insertions(+), 114 deletions(-) diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java index a850be6..02228b4 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java @@ -8,7 +8,6 @@ import com.mes.bigstorage.service.BigStorageCageDetailsService; import com.mes.bigstorage.service.BigStorageCageService; import com.mes.bigstoragetask.entity.BigStorageCageFeedTask; -import com.mes.bigstoragetask.entity.BigStorageCageOutTask; import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService; import com.mes.bigstoragetask.service.BigStorageCageOutTaskService; import com.mes.common.S7object; @@ -32,6 +31,7 @@ import java.util.Date; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; @@ -69,102 +69,101 @@ * fixedRate : 涓婁竴涓皟鐢ㄥ紑濮嬪悗鍐嶆璋冪敤鐨勫欢鏃讹紙涓嶇敤绛夊緟涓婁竴娆¤皟鐢ㄥ畬鎴愶級 * fixedDelay : 涓婁竴涓皟鐢ㄧ粨鏉熷悗鍐嶆璋冪敤鐨勫欢鏃� */ - @Scheduled(fixedDelay = 5000) - public void plcStorageCageTask() throws InterruptedException { - - PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; - try { - - String plcFeedGlassid = ""; - String plcFeedReqLine = "0"; - if ("1".equals(plcParameterObject.getPlcParameter("D01Request").getValue())) { - plcFeedReqLine = "1"; - plcFeedGlassid = plcParameterObject.getPlcParameter("D01ID1").getValue(); - } - if ("1".equals(plcParameterObject.getPlcParameter("D04Request").getValue())) { - plcFeedReqLine = "2"; - plcFeedGlassid = plcParameterObject.getPlcParameter("D04ID1").getValue(); - } - line1Time += 1; - line2Time += 1; - - if (!("0".equals(plcFeedReqLine))) { - log.info("1銆丳lc杩涚墖璇锋眰鏃�"); - BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails(); - GlassInfo glassInfo = glassInfoService.getById(plcFeedGlassid); - log.info("2銆佹牴鎹幓鐠僫d鑾峰彇鐜荤拑淇℃伅" + glassInfo); - if (bigStorageCageDetailsService.selectGetBoard(plcFeedReqLine) >= 0) { - BigStorageCageDetails slotInfo = bigStorageCageService.feedGlass(glassInfo, bigStorageCageDetails); - if (slotInfo != null) { - int taskType = edgGlassTaskInfoService.judgeTasktype(plcFeedReqLine); - log.info("3銆佹煡璇换鍔¤〃鍒ゆ柇褰撳墠浠诲姟绫诲瀷涓轰笂杞︾瓑鍒拌繕鏄笂杞﹀惎鍔�" + taskType); - bigStorageCageFeedTaskService.addFeedTask(slotInfo, Integer.parseInt(plcFeedReqLine), taskType); - log.info("4銆佹坊鍔犱换鍔″埌浠诲姟琛�"); - bigStorageCageFullAlarm = false; - } else { - bigStorageCageFullAlarm = true; - } - } else { - log.info("褰撳墠鐜荤拑瀹藉害涓嶅涓婅溅" + glassInfo); - if (!("1".equals(plcFeedReqLine))) { - S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1); - } else { - S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1); - } - } - } else { - List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskService.querybigStorageCageFeedTask(1); - log.info("5銆佹煡璇换鍔¤〃鏄惁鏈夊凡缁忓畬鎴愮殑杩涚墖浠诲姟" + bigStorageCageFeedTaskList.size()); - for (BigStorageCageFeedTask bigStorageCageFeedTask : bigStorageCageFeedTaskList - ) { - BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails(); - bigStorageCageDetails.setId(bigStorageCageFeedTask.getId()); - bigStorageCageDetails.setState(1); - bigStorageCageDetailsService.updateById(bigStorageCageDetails); - log.info("6銆佷慨鏀圭悊鐗囩璇︽儏鐜荤拑鐘舵��"); - bigStorageCageFeedTaskService.removeById(bigStorageCageFeedTask); - log.info("7銆佸垹闄ゅ凡缁忓畬鎴愮殑杩涚墖浠诲姟"); - } - //鍚姩闃堝�� - if (line1Time >= 300) { - if ("0".equals(plcParameterObject.getPlcParameter("D05Go").getValue())) { - S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1); - } - } - if (line2Time >= 300) { - if ("0".equals(plcParameterObject.getPlcParameter("D02Go").getValue())) { - S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1); - } - } - } - - //鏌ヨ鍑虹墖琛ㄦ槸鍚︽湁浠诲姟鏈畬鎴愮殑浠诲姟 - List<BigStorageCageOutTask> bigStorageCageOutTask = bigStorageCageOutTaskService.querybigStorageCageOutTask(0); - if (bigStorageCageOutTask.size() == 0) { - boolean result = bigStorageCageService.outGlass(); - log.info("8銆佹病鏈夋湭瀹屾垚浠诲姟鏃惰皟鐢ㄥ嚭鐗囨帴鍙�"); - if (result == false) { - temperingGlassInfoService.schedulingTask(); - } - } - bigStorageCageOutTaskService.updateOutTask(); - log.info("9銆佹牴鎹换鍔¤〃鐘舵�佷慨鏀归挗鍖栧皬鐗囪〃浠诲姟鐘舵��"); - - //鏉ヤ笉鍙婇�佹椂鐩存帴璧� - String line = Integer.toString(edgGlassTaskInfoService.startTask()); - - if (!(line.equals(plcFeedReqLine))) { - S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1); - } else { - S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1); - } - - - } catch (Exception e) { - e.printStackTrace(); - } - } - +// @Scheduled(fixedDelay = 5000) +// public void plcStorageCageTask() throws InterruptedException { +// +// PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; +// try { +// +// String plcFeedGlassid = ""; +// String plcFeedReqLine = "0"; +// if ("1".equals(plcParameterObject.getPlcParameter("D01Request").getValue())) { +// plcFeedReqLine = "1"; +// plcFeedGlassid = plcParameterObject.getPlcParameter("D01ID1").getValue(); +// } +// if ("1".equals(plcParameterObject.getPlcParameter("D04Request").getValue())) { +// plcFeedReqLine = "2"; +// plcFeedGlassid = plcParameterObject.getPlcParameter("D04ID1").getValue(); +// } +// line1Time += 1; +// line2Time += 1; +// +// if (!("0".equals(plcFeedReqLine))) { +// log.info("1銆丳lc杩涚墖璇锋眰鏃�"); +// BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails(); +// GlassInfo glassInfo = glassInfoService.getById(plcFeedGlassid); +// log.info("2銆佹牴鎹幓鐠僫d鑾峰彇鐜荤拑淇℃伅" + glassInfo); +// if (bigStorageCageDetailsService.selectGetBoard(plcFeedReqLine) >= 0) { +// BigStorageCageDetails slotInfo = bigStorageCageService.feedGlass(glassInfo, bigStorageCageDetails); +// if (slotInfo != null) { +// int taskType = edgGlassTaskInfoService.judgeTasktype(plcFeedReqLine); +// log.info("3銆佹煡璇换鍔¤〃鍒ゆ柇褰撳墠浠诲姟绫诲瀷涓轰笂杞︾瓑鍒拌繕鏄笂杞﹀惎鍔�" + taskType); +// bigStorageCageFeedTaskService.addFeedTask(slotInfo, Integer.parseInt(plcFeedReqLine), taskType); +// log.info("4銆佹坊鍔犱换鍔″埌浠诲姟琛�"); +// bigStorageCageFullAlarm = false; +// } else { +// bigStorageCageFullAlarm = true; +// } +// } else { +// log.info("褰撳墠鐜荤拑瀹藉害涓嶅涓婅溅" + glassInfo); +// if (!("1".equals(plcFeedReqLine))) { +// S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1); +// } else { +// S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1); +// } +// } +// } else { +// List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskService.querybigStorageCageFeedTask(1); +// log.info("5銆佹煡璇换鍔¤〃鏄惁鏈夊凡缁忓畬鎴愮殑杩涚墖浠诲姟" + bigStorageCageFeedTaskList.size()); +// for (BigStorageCageFeedTask bigStorageCageFeedTask : bigStorageCageFeedTaskList +// ) { +// BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails(); +// bigStorageCageDetails.setId(bigStorageCageFeedTask.getId()); +// bigStorageCageDetails.setState(1); +// bigStorageCageDetailsService.updateById(bigStorageCageDetails); +// log.info("6銆佷慨鏀圭悊鐗囩璇︽儏鐜荤拑鐘舵��"); +// bigStorageCageFeedTaskService.removeById(bigStorageCageFeedTask); +// log.info("7銆佸垹闄ゅ凡缁忓畬鎴愮殑杩涚墖浠诲姟"); +// } +// //鍚姩闃堝�� +// if (line1Time >= 300) { +// if ("0".equals(plcParameterObject.getPlcParameter("D05Go").getValue())) { +// S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1); +// } +// } +// if (line2Time >= 300) { +// if ("0".equals(plcParameterObject.getPlcParameter("D02Go").getValue())) { +// S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1); +// } +// } +// } +// +// //鏌ヨ鍑虹墖琛ㄦ槸鍚︽湁浠诲姟鏈畬鎴愮殑浠诲姟 +// List<BigStorageCageOutTask> bigStorageCageOutTask = bigStorageCageOutTaskService.querybigStorageCageOutTask(0); +// if (bigStorageCageOutTask.size() == 0) { +// boolean result = bigStorageCageService.outGlass(); +// log.info("8銆佹病鏈夋湭瀹屾垚浠诲姟鏃惰皟鐢ㄥ嚭鐗囨帴鍙�"); +// if (result == false) { +// temperingGlassInfoService.schedulingTask(); +// } +// } +// bigStorageCageOutTaskService.updateOutTask(); +// log.info("9銆佹牴鎹换鍔¤〃鐘舵�佷慨鏀归挗鍖栧皬鐗囪〃浠诲姟鐘舵��"); +// +// //鏉ヤ笉鍙婇�佹椂鐩存帴璧� +// String line = Integer.toString(edgGlassTaskInfoService.startTask()); +// +// if (!(line.equals(plcFeedReqLine))) { +// S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1); +// } else { +// S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1); +// } +// +// +// } catch (Exception e) { +// e.printStackTrace(); +// } +// } @Scheduled(fixedDelay = 5000) public void plcToHomeEdgScan() { PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; @@ -189,7 +188,7 @@ flag01 = judgeGlassTypeStatus(d01ID1, Const.A09_OUT_TARGET_POSITION); } if ("1".equals(d04Request)) { - flag04 = judgeGlassTypeStatus(d01ID1, Const.A10_OUT_TARGET_POSITION); + flag04 = judgeGlassTypeStatus(d04ID1, Const.A10_OUT_TARGET_POSITION); } if (flag01 && flag04) { //姣旇緝鏈�鏃╀竴鐗囦换鍔$殑鐗堝浘id鍙婄増搴� 姹傚嚭鍗ц浆绔嬬殑绾胯矾 @@ -259,21 +258,27 @@ computeTargetByLine(outLine, d02GoAdress, d05GoAdress); } + @Scheduled(fixedDelay = 5000) + public void plcToHomeEdgOutTask() { + + } + + /** * 鎸夌収鐜荤拑id鍒ゆ柇鐜荤拑鐘舵�佸強鍗ц浆绔嬫槸鍚﹀彲鐩存帴鍚姩 */ public Boolean judgeGlassTypeStatus(String glassId, Integer line) { //1銆佽幏鍙栦换鍔¤〃涓浉閭荤幓鐠� - List<EdgGlassTaskInfo> edgGlassTaskInfoList = edgGlassTaskInfoService.list(new QueryWrapper<EdgGlassTaskInfo>() - .eq("line", line) - .gt("id", "select id from edg_glass_task_info where glass_id = " + glassId) - .orderByAsc("id")); - Assert.isTrue(CollectionUtils.isEmpty(edgGlassTaskInfoList), "璇嗗埆鐜荤拑淇℃伅鏈嚭鐜板湪灏哄琛ㄤ腑,鑾峰彇鐩搁偦涓ゅ潡鐜荤拑澶辫触"); + List<EdgGlassTaskInfo> edgGlassTaskInfoList = edgGlassTaskInfoService.list(new LambdaQueryWrapper<EdgGlassTaskInfo>() + .eq(EdgGlassTaskInfo::getLine, line) + .apply("time >= (select time from edg_glass_task_info where glass_id = '" + glassId + "')") + .orderByAsc(EdgGlassTaskInfo::getTime)); + Assert.isFalse(CollectionUtils.isEmpty(edgGlassTaskInfoList), "璇嗗埆鐜荤拑淇℃伅鏈嚭鐜板湪灏哄琛ㄤ腑,鑾峰彇鐩搁偦涓ゅ潡鐜荤拑澶辫触"); //2銆佽幏鍙栧崸杞珛鍓╀綑瀹藉害 Map<String, Object> map = bigStorageCageFeedTaskService.getMap(new QueryWrapper<BigStorageCageFeedTask>() - .select("5000 - sum(width + 20) as remainWidth") + .select("cast(5000 - sum(width + 20) as INT)as remainWidth") .eq("line", line).eq("task_state", Const.BIG_STORAGE_IN_UP)); - Integer remainWidth = Integer.parseInt(map.get("remainWidth") + ""); + Integer remainWidth = null == map ? 5000 : Integer.parseInt(map.get("remainWidth") + ""); //2銆佽幏鍙栧崸杞珛 Integer widthFirst = edgGlassTaskInfoList.get(0).getWidth(); if (edgGlassTaskInfoList.size() == 1) { @@ -318,10 +323,10 @@ * * @return */ - private Integer getStartLine() { + public Integer getStartLine() { List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>() .inSql(BigStorageCageFeedTask::getId, "select min(id) from big_storage_cage_feed_task where task_state = 2 group by line")); - Assert.isTrue(CollectionUtils.isEmpty(taskList), "鍗ц浆绔嬩袱鏉$嚎閮芥病鏈夌幓鐠冭繘鐗囦换鍔�"); + Assert.isFalse(CollectionUtils.isEmpty(taskList), "鍗ц浆绔嬩袱鏉$嚎閮芥病鏈夌幓鐠冭繘鐗囦换鍔�"); Map<String, Integer> taskMap = taskList.stream().collect(Collectors.toMap(BigStorageCageFeedTask::getGlassId, BigStorageCageFeedTask::getLine)); GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>() @@ -335,7 +340,7 @@ /** * 璁$畻浠诲姟琛ㄨ繘鐗囩嚎璺殑鐩爣鏍煎瓙锛屽苟鍚姩浠诲姟 */ - private boolean computeTargetByLine(Integer line, String d02GoAdress, String d05GoAdress) { + public boolean computeTargetByLine(Integer line, String d02GoAdress, String d05GoAdress) { //1銆佽幏鍙栦换鍔¤〃涓殑鎵�鏈夌幓鐠冿紙鎸囧畾绾胯矾涓斿凡缁忚繘鍗ц浆绔嬪畬鎴愶級 List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>() .eq(BigStorageCageFeedTask::getLine, line) @@ -349,6 +354,7 @@ AtomicReference<BigStorageDTO> bigStorageDTO = new AtomicReference<>(new BigStorageDTO()); Map<String, GlassInfo> glassInfoMap = glassInfos.stream().collect(Collectors.toMap(GlassInfo::getGlassId, p -> p)); List<BigStorageCageDetails> bigStorageCageDetailsList = new ArrayList<>(); + AtomicBoolean taskFlag = new AtomicBoolean(Boolean.TRUE); taskList.stream().forEach(e -> { BigStorageCageDetails cageDetails = new BigStorageCageDetails(); //鎸夌収鐗堝浘淇℃伅鑾峰彇杩涚墖绗煎瓙鏍煎瓙鍙� @@ -361,21 +367,25 @@ } else { bigStorageDTO.set(bigStorageCageDetailsService.queryTargetSlotByTempering(info)); } - e.setTragetSlot(bigStorageDTO.get().getSlot()); + e.setTargetSlot(bigStorageDTO.get().getSlot()); cageDetails.setSlot(bigStorageDTO.get().getSlot()); cageDetails.setState(Const.GLASS_STATE_IN); temperingLayoutIdTemp.set(info.getTemperingLayoutId()); temperingFeedSequenceTemp.set(info.getTemperingFeedSequence()); bigStorageCageDetailsList.add(cageDetails); + taskFlag.set(bigStorageCageFeedTaskService.updateById(e)); + if (!taskFlag.get()) { + return; + } }); - //3銆佹洿鏂拌繘鐗囦换鍔¤〃 - boolean taskFlag = bigStorageCageFeedTaskService.updateBatchById(taskList); + //3銆佹洿鏂拌繘鐗囦换鍔¤〃 閬囧埌闂锛氭棤娉曟壒閲忔洿鏂帮紝鎵归噺鏇存柊鏃犳硶璧版寚瀹氫粠搴� + //4銆佸湪璇︽儏琛ㄤ腑鍔犲叆杩涚墖鐜荤拑淇℃伅 bigStorageCageDetailsService.saveBatch(bigStorageCageDetailsList); - if (taskFlag) { + if (taskFlag.get()) { String lineAddress = line.equals(Const.A09_OUT_TARGET_POSITION) ? d02GoAdress : d05GoAdress; - S7object.getinstance().plccontrol.writeWord(lineAddress, (short) 1); +// S7object.getinstance().plccontrol.writeWord(lineAddress, (short) 1); } - return taskFlag; + return taskFlag.get(); } } \ No newline at end of file -- Gitblit v1.8.0