From 73db5fb7f98e13e37ff5f43ec8977fb1f0cfcb9b Mon Sep 17 00:00:00 2001 From: zhoushihao <zsh19950802@163.com> Date: 星期四, 25 七月 2024 12:34:34 +0800 Subject: [PATCH] 大理片:修改进片逻辑,卧转立启动,详情表中新增一条状态为0的玻璃信息,进片任务完成后将状态改为100 下片:下片异常问题解决 --- hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java | 80 ++++++++++++++++++++++++++------------- 1 files changed, 53 insertions(+), 27 deletions(-) diff --git a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java index 63f6a49..841570f 100644 --- a/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java +++ b/hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java @@ -77,7 +77,7 @@ private Integer minHeight; - @Scheduled(fixedDelay = 3000) + @Scheduled(fixedDelay = 300) public void plcHomeEdgTask() { PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; String requestWord = plcParameterObject.getPlcParameter("requestWord").getValue(); @@ -90,7 +90,6 @@ String confirmationWrodValue = plcParameterObject.getPlcParameter("confirmationWord").getValue(); String confirmationWrodAddress = plcParameterObject.getPlcParameter("confirmationWord").getAddress(); String currentSlot = plcParameterObject.getPlcParameter("currentCell").getValue(); - log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{}锛岃幏鍙栧埌鐨勭‘璁ゅ瓧涓猴細{}锛岃幏鍙栧埌鐨勫嚭鐗囩姸鎬佸垎鍒负锛歡06:{}銆乬08:{}銆乬11:{}銆乬13:{},褰撳墠鏍煎瓙鍙蜂负锛歿}", @@ -162,7 +161,7 @@ if (CollectionUtils.isNotEmpty(list)) { log.info("鏈夌┖鏋跺瓙,灏嗘祦绋嬪崱涓庢灦瀛愬ソ缁戝畾锛屾墽琛岃繘鐗囦换鍔� 缁撴潫"); //缁戝畾娴佺▼鍗� - downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), glassInfo.getLayer(), list.get(0).getWorkstationId()); + downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getWorkstationId(), glassInfo.getLayer()); checkFlag = Boolean.TRUE; } } @@ -242,9 +241,14 @@ return Boolean.FALSE; } Boolean flag08 = "1".equals(out08Glassstate) ? Boolean.TRUE : Boolean.FALSE; - if (!generateTaskByShelf(glassStatus06, glassStatus11, flag08, glassStatus13, tempList, cageDetails, glassId)) { - return generateTaskByShelf(glassStatus06, glassStatus11, !flag08, glassStatus13, tempList, cageDetails, glassId); + if (!flag08) { + generateTaskByShelf(glassStatus06, glassStatus11, flag08, glassStatus13, tempList, cageDetails, glassId); + } else { + if (!generateTaskByShelf(glassStatus06, glassStatus11, flag08, glassStatus13, tempList, cageDetails, glassId)) { + return generateTaskByShelf(glassStatus06, glassStatus11, !flag08, glassStatus13, tempList, cageDetails, glassId); + } } + return Boolean.TRUE; } @@ -299,6 +303,8 @@ workList.addAll(Const.G06_WORK_STATION); } } + List<Integer> workStationAll = Arrays.asList(1, 2, 3, 4, 5, 6); + List<Integer> offWorkStationList = workStationAll.stream().filter(e -> !workList.contains(e)).collect(Collectors.toList()); List<DownStorageCageDetails> list = new ArrayList(); Boolean isEmptyShelf = Boolean.FALSE; //瀵圭鍐呯幓鐠冭繘琛岃繃婊わ紝浠呭嚭绗﹀悎閫昏緫鐨勭幓鐠� @@ -313,18 +319,32 @@ list = tempList.stream().filter(item -> item.getWidth() > maxWidth || item.getHeight() > maxHeight).collect(Collectors.toList()); } } else { + //鑾峰彇鍙惤鏋剁殑鐨勬灦瀛愪俊鎭紙鍖呮嫭绌烘灦瀛愶級 List<DownWorkstation> workstationsIsNotBind = downWorkstationList.stream().filter(item -> null == (item.getFlowCardId())).collect(Collectors.toList()); - Map<String, List<DownWorkstation>> listMap = downWorkstationList.stream().collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer())); + //灏嗘灦瀛愮殑娴佺▼鍗″彿鍙婂眰鏁颁綔涓簁ey if (CollectionUtils.isEmpty(workstationsIsNotBind)) { log.info("涓嶅瓨鍦ㄦ湭缁戝畾娴佺▼鍗℃灦瀛�"); //绛涢�夊嚭瀵瑰簲鏋跺瓙宸茬粦瀹氭祦绋嬪崱鍙笅鐗囩殑鐜荤拑 + Map<String, List<DownWorkstation>> listMap = downWorkstationList.stream() + .filter(item -> null != (item.getFlowCardId())).collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer())); list = tempList.stream().filter(item -> listMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList()); } else { - log.info("瀛樺湪鏈粦瀹氭祦绋嬪崱鏋跺瓙锛岀洿鎺ヨ幏鍙栫鍐呮墍鏈夌幓鐠�"); + log.info("瀛樺湪鏈粦瀹氭祦绋嬪崱鏋跺瓙锛岀洿鎺ヨ幏鍙栫鍐呮墍鏈夌幓鐠�,涓旀湭缁戝畾鏋跺瓙鐨勭幓鐠冧俊鎭�"); + //鑾峰彇绂佺敤鏋跺瓙鐨勬祦绋嬪彿锛屽皢绗煎唴缁戝畾鏋跺瓙涓旀灦瀛愯绂佺敤鐨勬祦绋嬪崱淇℃伅 + + List<DownWorkstation> downWorkstationOffList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>() + .and(i -> i.in(DownWorkstation::getWorkstationId, offWorkStationList).or().eq(DownWorkstation::getEnableState, Const.SLOT_OFF))); + //鑾峰彇琚鐢ㄧ殑娴佺▼鍗′俊鎭� + if (CollectionUtils.isEmpty(downWorkstationOffList)) { + list = tempList; + } else { + Map<String, List<DownWorkstation>> listOffMap = downWorkstationOffList.stream().filter(item -> null != (item.getFlowCardId())).collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer())); + list = tempList.stream().filter(item -> !listOffMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList()); + } isEmptyShelf = Boolean.TRUE; //todo:濡傛灉绂佺敤鏋跺瓙宸茬粦瀹氭祦绋嬪崱锛屽洜涓烘椂闂翠笉纭畾锛岀瀛愬唴鐨勭幓鐠冨彲閲嶆柊缁戝畾鏂版灦瀛� // list = tempList.stream().filter(item -> !listMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList()); - list = tempList; + } } } else { @@ -350,25 +370,27 @@ } } loop: - if (tempGlassId == null) { + if (StringUtils.isBlank(tempGlassId)) { //鑾峰彇姝e湪钀芥灦鐨勭粦瀹氭祦绋嬪崱鐨勪俊鎭�(娴佺▼鍗°�佸眰鏁般�佽惤鏋舵暟閲�) List<DownGlassInfoDTO> downGlassInfoDTOList = downGlassInfoService.queryWorkStationIsIn(Boolean.TRUE); List<String> downGlassFlowList = downGlassInfoDTOList.stream().map(item -> item.getFlowCardId() + ":" + item.getLayer()).collect(Collectors.toList()); if (CollectionUtils.isEmpty(downGlassFlowList)) { //鏋跺瓙閮芥湭缁戝畾娴佺▼鍗★紝鍑虹鍐呭瓙鏁伴噺鏈�澶氬昂瀵告渶澶х殑鐜荤拑id,鏃� 鍒欒繑鍥炴壂鎻忔壂鍒扮殑鐜荤拑id杩涜鍑虹墖 - tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId); + tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId, offWorkStationList); + isBind = Boolean.TRUE; break loop; } //灏嗙瀛愬唴鐨勭幓鐠冭繘琛岃繃婊わ紝浠呰幏鍙栨棤娉曡惤鏋剁殑娴佺▼鍗$幓鐠� - List<DownStorageCageDetails> noDownLoadList = list.stream().filter(item -> !downGlassFlowList.contains(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList()); + List<DownStorageCageDetails> noDownLoadList = list.stream().filter(item -> !downGlassFlowList.contains(item.getFlowCardId() + ":" + item.getLayer())) + .collect(Collectors.toList()); if (CollectionUtils.isNotEmpty(noDownLoadList)) { //鏄惁鏈夌┖鏋跺瓙 // List<DownWorkstation> emptyShelfList = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>() // .isNull(DownWorkstation::getFlowCardId)); if (isEmptyShelf) { //鏋跺瓙閮芥湭缁戝畾娴佺▼鍗★紝鍑虹鍐呭瓙鏁伴噺鏈�澶氬昂瀵告渶澶х殑鐜荤拑id,鏃� 鍒欒繑鍥炴壂鎻忔壂鍒扮殑鐜荤拑id杩涜鍑虹墖 - tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId); + tempGlassId = downStorageCageDetailsService.getGlassInfoMaxCount(glassId, offWorkStationList); isBind = Boolean.TRUE; break loop; } @@ -416,7 +438,7 @@ Map<String, List<DownStorageCageDetails>> singleLayerMap = list.stream().filter(item -> item.getTotalLayer() == 1) .collect(Collectors.groupingBy(item -> item.getFlowCardId() + item.getLayer(), Collectors.toList())); - if (tempGlassId == null) { + if (StringUtils.isBlank(tempGlassId)) { if (CollectionUtils.isNotEmpty(singleLayerMap)) { //鑾峰彇宸茶惤鏋舵祦绋嬪崱淇℃伅锛屾寜钀芥灦鏁伴噺鎺掑簭 for (DownGlassInfoDTO e : downGlassInfoDTOList) { @@ -430,35 +452,47 @@ } } } - if (tempGlassId == null) { + if (StringUtils.isBlank(tempGlassId)) { log.info("娌℃湁鎵惧埌鍙互涓嬬墖鐨勭殑鐜荤拑锛岀粨鏉熶换鍔�"); return Boolean.FALSE; } else { //鎸夌収鍑虹墖鐨勭幓鐠僫d鏇存柊绗煎唴鐨勭幓鐠冪姸鎬佷负宸插嚭鐗� - return generateDownGlassOutTask(tempGlassId, Const.GLASS_CACHE_TYPE_OUT, isBind, cageDetails); + return generateDownGlassOutTask(tempGlassId, Const.GLASS_CACHE_TYPE_OUT, isBind, cageDetails, workList); } } public Boolean generateDownGlassOutTask(String glassId, Integer taskType, Boolean - isBind, DownStorageCageDetails cageDetails) { + isBind, DownStorageCageDetails cageDetails, List<Integer> workList) { //鎸夌幓鐠僫d鑾峰彇鐜荤拑淇℃伅 DownStorageCageDetails downStorageCageDetails = null; if (glassId.equals(cageDetails.getGlassId())) { downStorageCageDetails = cageDetails; taskType = 3; + //灏嗕笅鐗囩幓鐠冨瓨鍏ョ瀛愯鎯呬俊鎭〃涓� + //灏嗕换鍔℃彃鍏ョ悊鐗囩璇︽儏琛� + downStorageCageDetails.setState(Const.GLASS_STATE_OUT); + downStorageCageDetailsService.save(downStorageCageDetails); } else { downStorageCageDetails = downStorageCageDetailsService.getOne(new LambdaQueryWrapper<DownStorageCageDetails>() .eq(DownStorageCageDetails::getGlassId, glassId).eq(DownStorageCageDetails::getState, Const.GLASS_STATE_IN)); + if (downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>() + .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT).eq(DownStorageCageDetails::getGlassId, glassId))) { + log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佹垚鍔�"); +// return Boolean.TRUE; + } else { + log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佸け璐�"); + return Boolean.FALSE; + } } Integer endCell = null; - if (!isBind) { + if (isBind) { //鑾峰彇绌烘灦瀛愪俊鎭紝灏嗙┖鏋跺瓙淇℃伅缁戝畾娴佺▼鍗� DownWorkstation emptyDownWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>() - .isNull(DownWorkstation::getFlowCardId).orderByDesc(DownWorkstation::getWorkstationId).last("limit 1")); + .isNull(DownWorkstation::getFlowCardId).in(DownWorkstation::getWorkstationId, workList).orderByDesc(DownWorkstation::getWorkstationId).last("limit 1")); if (null != emptyDownWorkstation) { log.info("鑾峰彇鍒扮┖鏋跺瓙淇℃伅锛岀粦瀹氭祦绋嬪崱"); - downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), downStorageCageDetails.getLayer(), emptyDownWorkstation.getWorkstationId()); + downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), emptyDownWorkstation.getWorkstationId(), downStorageCageDetails.getLayer()); endCell = emptyDownWorkstation.getWorkstationId(); } else { log.info("娌℃湁绌烘灦瀛愪俊鎭紝鏃犳硶缁戝畾娴佺▼鍗�"); @@ -468,14 +502,6 @@ DownWorkstation workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>() .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer())); endCell = workstation.getWorkstationId(); - } - //鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬� - if (downStorageCageDetailsService.update(new LambdaUpdateWrapper<DownStorageCageDetails>() - .set(DownStorageCageDetails::getState, Const.GLASS_STATE_OUT).eq(DownStorageCageDetails::getGlassId, glassId))) { - log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佹垚鍔�"); - } else { - log.info("鏇存柊璇︽儏琛ㄥ唴鐨勭姸鎬佸け璐�"); - return Boolean.FALSE; } //鏇存柊钀芥灦鐜荤拑鏁伴噺 if (endCell == 7) { -- Gitblit v1.8.0