From c823892f961b266199731ddd365d2dd4af4bf382 Mon Sep 17 00:00:00 2001 From: zhoushihao <zsh19950802@163.com> Date: 星期二, 03 十二月 2024 08:50:27 +0800 Subject: [PATCH] 1、中空线初步版本,待优化 2、fixbug 钢化后摆片顺序错乱 --- hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java | 104 ++++++++++++++++++++++++++++++--------------------- 1 files changed, 61 insertions(+), 43 deletions(-) diff --git a/hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java b/hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java index 443b283..bbfea54 100644 --- a/hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java +++ b/hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java @@ -7,7 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.kangaroohy.milo.model.ReadWriteEntity; import com.kangaroohy.milo.service.MiloService; -import com.mes.base.entity.BigStorageCageBaseInfo; +import com.mes.base.entity.HollowBigStorageCageBaseInfo; import com.mes.bigstoragecagetask.entity.BigStorageCageTask; import com.mes.bigstoragecagetask.service.BigStorageCageTaskService; import com.mes.common.config.Const; @@ -71,6 +71,9 @@ private HollowGlassQueueInfoService hollowGlassQueueInfoService; @Resource private HollowGlassOutRelationInfoService hollowGlassOutRelationInfoService; + + private static final String BIG_STORAGE_CAGE_IN_TWO_TASK = "big_storage_cage_in_two_task"; + private static final String BIG_STORAGE_CAGE_OUT_TWO_TASK = "big_storage_cage_out_two_task"; @Autowired(required = false) MiloService miloService; @Resource @@ -87,14 +90,6 @@ @Value("${mes.outCarMaxSize}") private Integer outCarMaxSize; - - @Value("${mes.sequence.order}") - private boolean sequenceOrder; - - @Value("${mes.temperingOutTargetPosition}") - private Integer temperingOutTargetPosition; - @Value("${mes.artificialOutTargetPosition}") - private Integer artificialOutTargetPosition; @Scheduled(fixedDelay = 1000) public void inBigStorageTask() throws Exception { @@ -173,7 +168,7 @@ .eq(HollowBigStorageCage::getSlot, bigStorageDTO.getSlot())); task.setTargetSlot(bigStorageDTO.getSlot()); task.setGlassId(info.getGlassId()); - bigStorageCageTaskService.updateTaskMessage("big_storage_cage_in_two_task", task); + bigStorageCageTaskService.updateTaskMessage(BIG_STORAGE_CAGE_IN_TWO_TASK, task); //瀛樻斁鍘嗗彶浠诲姟 HollowBigStorageCageHistoryTask historyTask = new HollowBigStorageCageHistoryTask(); BeanUtils.copyProperties(task, historyTask); @@ -227,7 +222,7 @@ return; } //鑾峰彇鍑虹墖浠诲姟琛� - List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_out_two_task"); + List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage(BIG_STORAGE_CAGE_OUT_TWO_TASK); if (CollectionUtil.isNotEmpty(outTaskList)) { log.info("鏈夋鍦ㄦ墽琛岀殑鍑虹墖浠诲姟锛岀粨鏉熸湰娆″嚭鐗囦换鍔�"); return; @@ -270,10 +265,12 @@ List<HollowGlassQueueInfo> unFinishHollowQueueList = hollowGlassQueueInfoService.list(new LambdaQueryWrapper<HollowGlassQueueInfo>() .eq(HollowGlassQueueInfo::getFlowCardId, hollowGlassOutRelationInfo.getFlowCardId()) .eq(HollowGlassQueueInfo::getCell, cell) - .eq(HollowGlassQueueInfo::getState, Const.TEMPERING_NEW)); + .eq(HollowGlassQueueInfo::getState, Const.TEMPERING_NEW) + .orderByAsc(HollowGlassQueueInfo::getHollowSequence)); if (CollectionUtil.isNotEmpty(unFinishHollowQueueList)) { log.info("鏈夋鍦ㄥ嚭鐗囩殑涓┖浠诲姟"); - computeOutGlassInfo(unFinishHollowQueueList, "big_storage_cage_out_two_task", hollowGlassOutRelationInfo.getCell(), Const.GLASS_STATE_OUT_ING, Const.BIG_STORAGE_AFTER_OUT); + Integer isPair = unFinishHollowQueueList.get(0).getIsPair(); + hollowOutGlassByIsPair(unFinishHollowQueueList, hollowGlassOutRelationInfo.getCell(), isPair, hollowGlassOutRelationInfo.getTotalLayer()); Date endDate = new Date(); log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime()); return; @@ -297,12 +294,7 @@ //鐜荤拑鍒伴綈鍖呮嫭宸插嚭鐗囩殑 //鍒伴綈锛屽皢鐜荤拑灏忕墖鏁版嵁瀛樺叆涓┖灏忕墖琛紝閫昏緫鐢熸垚鍑虹墖浠诲姟 缁撴潫 for (FlowCardGlassInfoDTO item : flowCardGlassInfoDTO) { - List<HollowBigStorageCageDetails> hollowBigStorageCageDetailsList = hollowBigStorageCageDetailsService.list(new LambdaQueryWrapper<HollowBigStorageCageDetails>() - .eq(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN) - .eq(HollowBigStorageCageDetails::getFlowCardId, item.getFlowCardId()) - .orderByAsc(HollowBigStorageCageDetails::getHollowSequence) - .orderBy(Boolean.TRUE, cell != 931, HollowBigStorageCageDetails::getLayer) - ); + List<HollowBigStorageCageDetails> hollowBigStorageCageDetailsList = hollowBigStorageCageDetailsService.queryOutGlassList(item.getFlowCardId(), cell); int finalCell = cell; List<HollowGlassQueueInfo> hollowQueues = hollowBigStorageCageDetailsList.stream().map(queue -> { HollowGlassQueueInfo queueInfo = new HollowGlassQueueInfo(); @@ -313,7 +305,8 @@ }).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(hollowQueues)) { hollowGlassQueueInfoService.saveBatch(hollowQueues); - computeOutGlassInfo(hollowQueues, "big_storage_cage_out_two_task", cell, Const.GLASS_STATE_OUT_ING, Const.BIG_STORAGE_AFTER_OUT); + Integer isPair = hollowQueues.get(0).getIsPair(); + hollowOutGlassByIsPair(hollowQueues, cell, isPair, e.getTotalLayer()); //灏嗕腑绌轰换鍔$姸鎬佹敼涓哄紑濮� hollowGlassOutRelationInfoService.update(new LambdaUpdateWrapper<HollowGlassOutRelationInfo>() .eq(HollowGlassOutRelationInfo::getFlowCardId, e.getFlowCardId()) @@ -327,19 +320,8 @@ } } } - //鏄惁鏈変汉宸ヤ笅鐗囦换鍔� 鏈夌洿鎺ュ嚭 - List<HollowBigStorageCageDetails> artificialList = hollowBigStorageCageDetailsService.list(new LambdaQueryWrapper<HollowBigStorageCageDetails>() - .eq(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL) - .orderByAsc(HollowBigStorageCageDetails::getSlot) - .orderByAsc(HollowBigStorageCageDetails::getId).last("limit " + outCarMaxSize)); - if (CollectionUtil.isNotEmpty(artificialList)) { - computeOutGlassInfo(artificialList, "big_storage_cage_out_two_task", artificialOutTargetPosition, Const.GLASS_STATE_OUT_ING, Const.BIG_STORAGE_AFTER_OUT); - Date endDate = new Date(); - log.info("澶х悊鐗囩鍑虹墖浠诲姟缁撴潫鏃堕棿锛歿}锛屽叡鑰楁椂锛歿}ms,缁撴潫鎵爜浠诲姟", endDate, endDate.getTime() - startDate.getTime()); - return; - } } - +// redisUtil.setCacheObject("dispatchHollowSwitch",true); //鏄惁瀛樺湪闇�瑕佸唴閮ㄨ皟搴︾殑鏍煎瓙:鎵ц鍐呴儴璋冨害浠诲姟 if (redisUtil.getCacheObject("dispatchHollowSwitch")) { //todo:鑾峰彇绗煎唴鍗曟牸宸茬粡鍒伴綈鐨勭幓鐠冩牸瀛愪俊鎭� @@ -363,7 +345,7 @@ int targetSlot = item.getSlot(); list = hollowBigStorageCageDetailsService.list(new LambdaQueryWrapper<HollowBigStorageCageDetails>() .eq(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN).eq(HollowBigStorageCageDetails::getSlot, startSlot)); - computeOutGlassInfo(list, "big_storage_cage_out_two_task", targetSlot, Const.GLASS_STATE_SCHEDULE_ING, Const.BIG_STORAGE_AFTER_DISPATCH); + hollowOutGlassByIsPair(list, targetSlot, 0, 0); List<Integer> slotList = new ArrayList<>(); slotList.add(targetSlot); updateSlotRemainBySlots(slotList); @@ -474,7 +456,7 @@ return; } //鑾峰彇杩涚墖浠诲姟琛� - List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage("big_storage_cage_out_one_task"); + List<BigStorageCageTask> outTaskList = bigStorageCageTaskService.queryTaskMessage(BIG_STORAGE_CAGE_OUT_TWO_TASK); if (CollectionUtil.isEmpty(outTaskList)) { log.info("褰撳墠澶ц溅鏃犺繘鐗囩幓鐠冿紝缁撴潫瀹屾垚杩涚墖浠诲姟"); return; @@ -553,7 +535,7 @@ } } // 閲嶇疆浠诲姟琛ㄦ暟鎹� - bigStorageCageTaskService.updateOutTaskMessage("big_storage_cage_out_one_task"); + bigStorageCageTaskService.updateOutTaskMessage(BIG_STORAGE_CAGE_OUT_TWO_TASK); //娓呯┖鍚姩鐘舵�� //鍚憃pc鍙戦�佸惎鍔ㄤ俊鍙� miloService.writeToOpcWord(generateReadWriteEntity("DLP2B.DLP2B.MesReply", 0)); @@ -660,29 +642,59 @@ log.info("鍑虹墖浠诲姟-鏃犲姩浣滄墽琛屽畬鎴�"); } + + private <T extends HollowBigStorageCageBaseInfo> Boolean hollowOutGlassByIsPair(List<T> list, int targetSlot, int isPair, int totalLayer) { + List<T> resultList = new ArrayList<>(); + int taskType = Const.BIG_STORAGE_AFTER_OUT; + int taskState = Const.GLASS_STATE_OUT_ING; + for (T t : list) { + if (isPair == (t.getIsPair() == null ? 0 : t.getIsPair())) { + resultList.add(t); + } + } + if (isPair == 0) { + taskType = Const.BIG_STORAGE_AFTER_DISPATCH; + taskState = Const.GLASS_STATE_SCHEDULE_ING; + totalLayer = 0; + } + return computeOutGlassInfo(resultList, BIG_STORAGE_CAGE_OUT_TWO_TASK, targetSlot, taskState, taskType, totalLayer); + } + /** * 鍑虹墖涓�娆′粎鐢熸垚涓�杞︾幓鐠� * - * @param list * @param <T> + * @param list + * @param totalLayer * @return */ - private <T extends BigStorageCageBaseInfo> Boolean computeOutGlassInfo(List<T> list, String tableName, int targetSlot, int state, int taskType) { + private <T extends HollowBigStorageCageBaseInfo> Boolean computeOutGlassInfo(List<T> list, String tableName, int targetSlot, int state, int taskType, int totalLayer) { //浠诲姟鏁版嵁:鑾峰彇杞﹀瓙瀛樻斁鐜荤拑鏈�澶ф暟閲�,鐜荤拑闂撮殧 - List<BigStorageCageTask> bigStorageCageTaskList = new ArrayList<>(); + List<BigStorageCageTask> tempList = new ArrayList<>(); + List<T> tempTList = new ArrayList<>(); //鎵撹溅鍓╀綑灏哄 Integer remainWidth = carWidth; for (T e : list) { - if (bigStorageCageTaskList.size() >= outCarMaxSize || Math.max((int) e.getWidth(), (int) e.getHeight()) > remainWidth) { + if (tempList.size() >= outCarMaxSize || Math.max((int) e.getWidth(), (int) e.getHeight()) > remainWidth) { break; } //璁$畻褰撳墠鍑虹墖杞﹀墿灏哄 remainWidth = remainWidth - Math.max((int) e.getWidth(), (int) e.getHeight()) - glassGap; - bigStorageCageTaskList.add(new BigStorageCageTask(e.getGlassId(), e.getSlot(), targetSlot, + tempTList.add(e); + tempList.add(new BigStorageCageTask(e.getGlassId(), e.getSlot(), targetSlot, 0)); } - Assert.isFalse(CollectionUtil.isEmpty(bigStorageCageTaskList), "鏈幏鍙栧嚭鐗囨暟鎹紝缁撴潫鍑虹墖浠诲姟"); - log.info("鑾峰彇鍑虹墖浠诲姟鏁版嵁{}鏉★紝鎵ц淇濆瓨", bigStorageCageTaskList.size()); + Assert.isFalse(CollectionUtil.isEmpty(tempList), "鏈幏鍙栧嚭鐗囨暟鎹紝缁撴潫鍑虹墖浠诲姟"); + log.info("鑾峰彇鍑虹墖浠诲姟鏁版嵁{}鏉★紝鎵ц淇濆瓨", tempList.size()); + List<BigStorageCageTask> bigStorageCageTaskList = tempList; + if (taskType == Const.BIG_STORAGE_AFTER_OUT) { + if (tempList.size() <= totalLayer) { + bigStorageCageTaskList = tempList; + } else { + int remainCount = tempList.size() % totalLayer; +// tempList.subList(0,) + } + } List<String> glassIds = bigStorageCageTaskList.stream().map(BigStorageCageTask::getGlassId).collect(Collectors.toList()); int glassCount = bigStorageCageTaskList.size(); //鐢熸垚鍑虹墖浠诲姟鏉℃暟涓嶈冻6琛ュ叏 @@ -704,7 +716,7 @@ log.info("灏嗗嚭鐗囩幓鐠儃}鐜荤拑鐘舵�佹敼涓哄嚭鐗囦腑", glassIds); hollowBigStorageCageDetailsService.update(new LambdaUpdateWrapper<HollowBigStorageCageDetails>() .set(HollowBigStorageCageDetails::getState, state) - .set(Const.RAW_GLASS_TASK_TYPE_DISPATCH.equals(taskType), BigStorageCageBaseInfo::getSlot, targetSlot) + .set(Const.BIG_STORAGE_AFTER_DISPATCH.equals(taskType), HollowBigStorageCageDetails::getSlot, targetSlot) .ne(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_OUT) .in(HollowBigStorageCageDetails::getGlassId, glassIds)); try { @@ -747,4 +759,10 @@ .value(value) .build(); } +// +// private List<BigStorageCageTask> computeOutTaskList(List<BigStorageCageTask> taskList, int totalLayer, int target) { +//// if (target == 931){} +// if (taskList.get(0).get) +// return null; +// } } \ No newline at end of file -- Gitblit v1.8.0