hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.github.yulichang.query.MPJQueryWrapper; import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.mes.common.S7object; import com.mes.common.config.Const; import com.mes.device.PlcParameterObject; @@ -128,27 +129,6 @@ } Date endDate = new Date(); log.info("本次任务结束时间:{},共耗时:{}ms", endDate, endDate.getTime() - startDate.getTime()); } 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(); // } // } // // } // } } /** @@ -277,6 +257,7 @@ MPJQueryWrapper<EdgStorageCageDetails> wrapper = new MPJQueryWrapper<>(); wrapper.select("count(t.glass_id), t.width, t.height") .eq("t.state", Const.GLASS_STATE_IN) .inSql("t.slot", "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON) .groupBy("t.width, t.height"); if (endcell == Const.A10_OUT_TARGET_POSITION) { wrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " + @@ -372,8 +353,9 @@ glassList.add(resultDetails); } //获取笼内玻璃 List<EdgStorageCageDetails> details = edgStorageCageDetailsService.list(new LambdaQueryWrapper<EdgStorageCageDetails>() .eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)); List<EdgStorageCageDetails> details = edgStorageCageDetailsService.selectJoinList(EdgStorageCageDetails.class, new MPJLambdaWrapper<EdgStorageCageDetails>().selectAll(EdgStorageCageDetails.class) .leftJoin(EdgStorageCage.class, on -> on.eq(EdgStorageCage::getSlot, EdgStorageCageDetails::getSlot).eq(EdgStorageCageDetails::getState, Const.GLASS_STATE_IN)) .eq(EdgStorageCage::getEnableState, Const.SLOT_ON)); glassList.addAll(details); return glassList; @@ -384,19 +366,20 @@ * * @return */ private boolean queryMaxMinDiff(int threshold) { public boolean queryMaxMinDiff(int threshold) { //获取笼子内最大版图id和最小版图id插值,判断是否大于阈值,大于阈值直接出最小版图玻璃 QueryWrapper<EdgStorageCageDetails> queryWrapper = new QueryWrapper<>(); queryWrapper.select("max(tempering_layout_id)-min(tempering_layout_id) as diff") .eq("state", Const.GLASS_STATE_IN); .eq("state", Const.GLASS_STATE_IN) .inSql("slot", "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON); List<Object> list = edgStorageCageDetailsService.listObjs(queryWrapper); //获取笼内玻璃版图差值是否大于阈值 if (CollectionUtil.isNotEmpty(list)) { Long diff = (Long) list.get(0); int diff = (int) list.get(0); return diff > threshold; } else { return Boolean.FALSE; } } /** @@ -411,6 +394,7 @@ .eq(EdgStorageCageDetails::getState, 100) .eq(width != 0, EdgStorageCageDetails::getWidth, width) .eq(height != 0, EdgStorageCageDetails::getHeight, height) .inSql(EdgStorageCageDetails::getSlot, "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON) .orderByAsc(EdgStorageCageDetails::getTemperingLayoutId) .orderBy(Boolean.TRUE, sequenceOrder, EdgStorageCageDetails::getTemperingFeedSequence) .last("limit 1")); @@ -446,6 +430,7 @@ .eq("t.glass_id", taskCache.getGlassId()) .ne("t1.glass_id", taskCache.getGlassId()) .eq("t1.state", Const.GLASS_STATE_IN) .inSql("t1.slot", "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON) .orderByAsc("t1.tempering_layout_id") .orderBy(Boolean.TRUE, sequenceOrder, "t1.tempering_feed_sequence"); List<EdgStorageCageDetails> details = edgStorageCageDetailsService.selectJoinList(EdgStorageCageDetails.class, mpjLambdaWrapper); @@ -469,7 +454,7 @@ return null; } return edgStorageCageDetailsService.getOne(new LambdaQueryWrapper<EdgStorageCageDetails>().eq(EdgStorageCageDetails::getGlassId, taskCache.getGlassId()) // .inSql(EdgStorageCageDetails::getEngineerId, "select engineer_id from engineering where state = 1") .inSql(EdgStorageCageDetails::getSlot, "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON) .last(" limit 1 ")); } @@ -513,6 +498,7 @@ MPJQueryWrapper<EdgStorageCageDetails> wrapper = new MPJQueryWrapper<>(); wrapper.select("count(t.glass_id) as count, t.width, t.height") .eq("t.state", Const.GLASS_STATE_IN) .inSql("t.slot", "select slot from edg_storage_cage where enable_state = " + Const.SLOT_ON) .groupBy("t.width, t.height"); if (endcell == Const.A10_OUT_TARGET_POSITION) { wrapper.innerJoin("(select glass_id, case when height <= width then width else height end as first_length, " + hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/entity/BigStorageCage.java
@@ -46,15 +46,26 @@ private Integer slot; /** * 栅格号 */ @ApiModelProperty(value = "最小厚度", position = 5) private Integer minThickness; /** * 栅格号 */ @ApiModelProperty(value = "最大厚度", position = 6) private Integer maxThickness; /** * 启用状态 */ @ApiModelProperty(value = "启用状态", position = 5) @ApiModelProperty(value = "启用状态", position = 7) private Integer enableState; /** * 剩余宽度 */ @ApiModelProperty(value = "剩余宽度", position = 6) @ApiModelProperty(value = "剩余宽度", position = 8) private Integer remainWidth; @ApiModelProperty(hidden = true) hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -285,9 +285,12 @@ bigStorageDTO.setSlot(bigStorageCage.getSlot()); return bigStorageDTO; } //todo:获取玻璃的厚度:重新选笼子需要按照笼子可放玻璃厚度进行选择 bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() .eq(BigStorageCage::getRemainWidth, slotWidth) .eq(BigStorageCage::getEnableState, Const.SLOT_ON) .gt(BigStorageCage::getMaxThickness, glassInfo.getThickness()) .orderByAsc(BigStorageCage::getDeviceId) .last("limit 1")); Assert.isTrue(null != bigStorageCage, "没有空余的笼子存放玻璃"); bigStorageDTO = new BigStorageDTO(); hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -377,27 +377,29 @@ Boolean flag = Boolean.TRUE; //2、获取卧转立 Integer widthFirst = Math.max(edgGlassTaskInfoList.get(0).getWidth() / 10, edgGlassTaskInfoList.get(0).getHeight() / 10); Integer heightFirst = Math.min(edgGlassTaskInfoList.get(0).getWidth() / 10, edgGlassTaskInfoList.get(0).getHeight() / 10); if (edgGlassTaskInfoList.size() == 1) { if (remainWidth >= widthFirst) { if (glassCount < inCarMaxSize) { addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst); addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst, heightFirst); } else { addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst); addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst, heightFirst); } } else { flag = Boolean.FALSE; } } else { Integer widthSecond = Math.max(edgGlassTaskInfoList.get(1).getWidth() / 10, edgGlassTaskInfoList.get(1).getHeight() / 10); Integer heightSecond = Math.min(edgGlassTaskInfoList.get(1).getWidth() / 10, edgGlassTaskInfoList.get(1).getHeight() / 10); if (remainWidth >= widthFirst) { if (remainWidth - widthFirst - glassGap >= widthSecond) { if (glassCount < inCarMaxSize) { addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst); addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst, heightSecond); } else { addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst); addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst, heightSecond); } } else { addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst); addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst, heightSecond); } } else { flag = Boolean.FALSE; @@ -414,13 +416,14 @@ /** * 添加任务信息 */ private Boolean addFeedTask(String glassId, Integer line, Integer taskType, Integer width) { private Boolean addFeedTask(String glassId, Integer line, Integer taskType, Integer width, Integer height) { BigStorageCageFeedTask bigStorageCageFeedTask = new BigStorageCageFeedTask(); bigStorageCageFeedTask.setGlassId(glassId); bigStorageCageFeedTask.setTaskState(Const.BIG_STORAGE_IN_NEW); bigStorageCageFeedTask.setLine(line); bigStorageCageFeedTask.setTaskType(taskType); bigStorageCageFeedTask.setWidth(width); bigStorageCageFeedTask.setHeight(height); bigStorageCageFeedTask.setCreateTime(new Date()); return bigStorageCageFeedTaskService.save(bigStorageCageFeedTask); } @@ -576,6 +579,9 @@ public Boolean computeIsRun(int line, String glassId) { //获取卧转立剩余宽度 BigStorageDTO sitToUpRemainWidth = bigStorageCageFeedTaskService.querySitToUpRemainWidth(line); if (sitToUpRemainWidth.getGlassCount() == 0) { return Boolean.FALSE; } //获取玻璃信息 GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId)); return sitToUpRemainWidth.getWidth() < glassInfo.getWidth(); hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml
@@ -33,7 +33,7 @@ ELSE HEIGHT END MAX_LENGTH FROM BIG_STORAGE_CAGE_FEED_TASK WHERE LINE = 2002 WHERE LINE = #{line} AND TASK_STATE IN (1, 2) ) T </select>