From 33308e16bbb153d9aac76fd703ec0f38ea7e344a Mon Sep 17 00:00:00 2001 From: wangfei <3597712270@qq.com> Date: 星期三, 09 十月 2024 15:47:59 +0800 Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes --- hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java | 119 ++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 105 insertions(+), 14 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 c324ce2..e96ddf0 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 @@ -30,6 +30,7 @@ import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.scheduling.annotation.Async; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; @@ -96,7 +97,6 @@ log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{}锛岃幏鍙栧埌鐨勭‘璁ゅ瓧涓猴細{}锛岃幏鍙栧埌鐨勫嚭鐗囩姸鎬佸垎鍒负锛歡06:{}銆乬08:{}銆乬11:{}銆乬13:{},褰撳墠鏍煎瓙鍙蜂负锛歿}", requestWord, glassIdeValue, confirmationWrodValue, out06Glassstate, out08Glassstate, out11Glassstate, out13Glassstate, currentSlot); - if ("0".equals(requestWord)) { if ("0".equals(confirmationWrodValue)) { log.info("2銆佽幏鍙栧埌鐨勮姹傚瓧涓�0锛屼笖纭瀛椾负0锛屼笉鎵ц浠诲姟"); @@ -131,10 +131,12 @@ @Scheduled(fixedDelay = 300) public void plcShelfFull() { List<DownWorkstation> list = downGlassInfoService.queryWorkStationIsFull(); + S7control s7control = S7object.getinstance().plccontrol; + PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject; if (CollectionUtils.isNotEmpty(list)) { - S7control s7control = S7object.getinstance().plccontrol; - PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject; s7control.writeWord(plcMesObject.getPlcParameter("alarm_signal").getAddress(), 1); + } else { + s7control.writeWord(plcMesObject.getPlcParameter("alarm_signal").getAddress(), 0); } } @@ -149,6 +151,20 @@ List<String> glassList = downGlassTaskList.stream().map(DownGlassTask::getGlassId).collect(Collectors.toList()); //灏嗕换鍔¤〃涓殑鏁版嵁鍒犻櫎 downGlassTaskService.remove(new LambdaQueryWrapper<DownGlassTask>().in(DownGlassTask::getTaskType, Const.GLASS_CACHE_TYPE_OUT_ALL).in(DownGlassTask::getGlassId, glassList)); + //娓呴櫎涓嬬墖鐜荤拑淇℃伅琛ㄦ暟鎹� + downGlassInfoService.remove(new LambdaQueryWrapper<DownGlassInfo>().in(DownGlassInfo::getGlassId, glassList)); + //涓嬬墖鏁伴噺-1 + for (DownGlassTask downGlassTask : downGlassTaskList + ) { + if (Const.GLASS_CACHE_TYPE_OUT_ALL.equals(downGlassTask.getTaskType())) { + downWorkstationService.update( + new LambdaUpdateWrapper<DownWorkstation>() + .setSql("racks_number = racks_number-1") + .eq(DownWorkstation::getWorkstationId, downGlassTask.getEndCell()) + ); + + } + } List<Damage> damageList = downGlassTaskList.stream().map(e -> { Damage damage = new Damage(); damage.setGlassId(e.getGlassId()); @@ -181,7 +197,10 @@ //鏇存柊宸ヤ綅鍏朵粬鐜荤拑淇℃伅鐨勬暟閲� QueryWrapper<Damage> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("process_id", downWorkstation.getFlowCardId()); - queryWrapper.eq("technology_number", downWorkstation.getLayer()); + queryWrapper.gt("type", 3); + if (downWorkstation.getLayer() != 0) { + queryWrapper.eq("technology_number", downWorkstation.getLayer()); + } int otherNumber = damageService.count(queryWrapper); downWorkstationService.update(new LambdaUpdateWrapper<DownWorkstation>().set(DownWorkstation::getOtherNumber, otherNumber) .eq(DownWorkstation::getWorkstationId, downWorkstation.getWorkstationId())); @@ -211,9 +230,16 @@ } else { log.info("璇ョ幓鐠冨昂瀵搁潪浜哄伐涓嬬墖"); //鑾峰彇璇ョ幓鐠冪殑娴佺▼鍗℃槸鍚﹀凡缁戝畾鏋跺瓙 - DownWorkstation one = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>() - .eq(DownWorkstation::getLayer, glassInfo.getLayer()) - .eq(DownWorkstation::getFlowCardId, glassInfo.getFlowCardId())); + DownWorkstation one; + if (glassInfo.getCombine() != 0) { + one = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>() + .eq(DownWorkstation::getFlowCardId, glassInfo.getFlowCardId())); + } else { + one = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>() + .eq(DownWorkstation::getLayer, glassInfo.getLayer()) + .eq(DownWorkstation::getFlowCardId, glassInfo.getFlowCardId())); + } + //鏄惁宸茬粡缁戝畾 true锛氬凡缁戝畾 false:鏈粦瀹� Boolean isBind = Boolean.FALSE; if (null != one) { @@ -228,7 +254,12 @@ if (CollectionUtils.isNotEmpty(list)) { log.info("鏈夌┖鏋跺瓙,灏嗘祦绋嬪崱涓庢灦瀛愬ソ缁戝畾锛屾墽琛岃繘鐗囦换鍔� 缁撴潫"); //缁戝畾娴佺▼鍗� - downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getWorkstationId(), glassInfo.getLayer()); + if (glassInfo.getCombine() == 0) { + downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getWorkstationId(), glassInfo.getLayer()); + } else { + downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getWorkstationId(), 0); + } +// downWorkstationService.updateFlowCardIdAndCount(glassInfo.getFlowCardId(), list.get(0).getId(), glassInfo.getLayer()); checkFlag = Boolean.TRUE; } } @@ -277,12 +308,18 @@ //灏嗕换鍔℃彃鍏ョ悊鐗囩璇︽儏琛� DownStorageCageDetails downStorageCageDetails = new DownStorageCageDetails(); BeanUtils.copyProperties(glassInfo, downStorageCageDetails); + //褰撻渶瑕佸悎骞惰惤鏋舵椂涓嶇粦瀹氬眰鍙� + if (glassInfo.getCombine() != 0) { + downStorageCageDetails.setLayer(0); + } downStorageCageDetails.setState(Const.GLASS_STATE_IN); downStorageCageDetails.setSlot(nearestEmpty.getSlot()); downStorageCageDetails.setDeviceId(nearestEmpty.getDeviceId()); downStorageCageDetailsService.save(downStorageCageDetails); // 鐢熸垚杩涚墖浠诲姟 initDownGlassTask(glassInfo, 0, nearestEmpty.getSlot(), Const.GLASS_CACHE_TYPE_IN); + //鍒犻櫎鐞嗙墖绗艰〃鎷胯蛋/鐮存崯鏁版嵁鏁版嵁 + damageService.deleteByGlassId(glassInfo.getGlassId()); } public Boolean outTo(String glassStatus06, String out08Glassstate, String glassStatus11, String @@ -299,6 +336,10 @@ if (StringUtils.isNotBlank(glassId)) { GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId)); BeanUtils.copyProperties(glassInfo, cageDetails); + //褰撻渶瑕佸悎骞惰惤鏋舵椂涓嶇粦瀹氬眰鍙� + if (glassInfo.getCombine() != 0) { + cageDetails.setLayer(0); + } //鑾峰彇褰撳墠绗煎瓙绌烘牸淇℃伅 DownStorageCage empty = downStorageCageService.selectCacheEmpty(Integer.parseInt(currentSlot), Boolean.TRUE); cageDetails.setSlot(empty.getSlot()); @@ -315,6 +356,7 @@ //2銆�08鍙扮┖闂诧紝鍏堣蛋鎵斿伐涓嬬墖鎴�2鍙锋満姊拌噦锛屾棤鐜荤拑鍑虹墖 鍦ㄨ蛋1鍙锋満姊拌噦 //鏈烘鑷傝绂佺敤鐨勬儏鍐典笅涓嶈兘缁х画鍚戠鐢ㄧ殑鏈烘鑷傛斁鐜荤拑 Boolean flag08 = "1".equals(out08Glassstate) ? Boolean.TRUE : Boolean.FALSE; + flag08 = true; if (!flag08) { generateTaskByShelf(glassStatus06, glassStatus11, flag08, glassStatus13, tempList, cageDetails, glassId); } else { @@ -367,11 +409,21 @@ List<Integer> workList = new ArrayList(); if (flag08) { if (!"2".equals(glassStatus11)) { - workList.addAll(Const.G11_WORK_STATION); + List<Integer> wroklistOne = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>() + .eq(DownWorkstation::getEnableState, Const.SLOT_ON).in(DownWorkstation::getWorkstationId, Const.G11_WORK_STATION)) + .stream() + .map(DownWorkstation::getWorkstationId) + .collect(Collectors.toList()); + workList.addAll(wroklistOne); } } else { if (!"2".equals(glassStatus06)) { - workList.addAll(Const.G06_WORK_STATION); + List<Integer> wroklistTwo = downWorkstationService.list(new LambdaQueryWrapper<DownWorkstation>() + .eq(DownWorkstation::getEnableState, Const.SLOT_ON).in(DownWorkstation::getWorkstationId, Const.G06_WORK_STATION)) + .stream() + .map(DownWorkstation::getWorkstationId) + .collect(Collectors.toList()); + workList.addAll(wroklistTwo); } } List<Integer> workStationAll = Arrays.asList(1, 2, 3, 4, 5, 6); @@ -405,6 +457,7 @@ Map<String, List<DownWorkstation>> listMap = downWorkstationList.stream() .filter(item -> StringUtils.isNotBlank(item.getFlowCardId())).collect(Collectors.groupingBy(item -> item.getFlowCardId() + ":" + item.getLayer())); //杩囨护绛涢�夎幏鍙栨灦瀛愪笂瀵瑰簲娴佺▼鍗�+灞傛暟鐨勭瀛愬唴鐨勭幓鐠冧俊鎭� + list = tempList.stream().filter(item -> listMap.containsKey(item.getFlowCardId() + ":" + item.getLayer())).collect(Collectors.toList()); if (CollectionUtils.isEmpty(list) && flag08 && !"2".equals(glassStatus13)) { list = tempList.stream().filter(item -> { @@ -580,15 +633,27 @@ if (null != emptyDownWorkstation) { log.info("鑾峰彇鍒扮┖鏋跺瓙淇℃伅锛岀粦瀹氭祦绋嬪崱"); downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), emptyDownWorkstation.getWorkstationId(), downStorageCageDetails.getLayer()); +// downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), emptyDownWorkstation.getId(), downStorageCageDetails.getLayer()); endCell = emptyDownWorkstation.getWorkstationId(); } else { + //todo:澧炲姞铏氭嫙宸ヤ綅,缁戝畾娴佺▼鍗� +// downWorkstationService.insertDownWorkstation(); +// endCell = Const.G13_WORK_STATION; +// downWorkstationService.updateFlowCardIdAndCount(downStorageCageDetails.getFlowCardId(), emptyDownWorkstation.getId(), downStorageCageDetails.getLayer()); log.info("娌℃湁绌烘灦瀛愪俊鎭紝鏃犳硶缁戝畾娴佺▼鍗�"); return Boolean.FALSE; } } else { - DownWorkstation workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>() - .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer())); - endCell = workstation.getWorkstationId(); + double firstLength = Math.max(downStorageCageDetails.getWidth(), downStorageCageDetails.getHeight()); + double secondLength = Math.min(downStorageCageDetails.getWidth(), downStorageCageDetails.getHeight()); + if (firstLength > maxWidth || secondLength > maxHeight) { + endCell = Const.G13_WORK_STATION; + } else { + DownWorkstation workstation; + workstation = downWorkstationService.getOne(new LambdaUpdateWrapper<DownWorkstation>() + .eq(DownWorkstation::getFlowCardId, downStorageCageDetails.getFlowCardId()).eq(DownWorkstation::getLayer, downStorageCageDetails.getLayer())); + endCell = workstation.getWorkstationId(); + } } //鏇存柊钀芥灦鐜荤拑鏁伴噺 if (endCell == Const.G13_WORK_STATION) { @@ -603,13 +668,31 @@ DownGlassInfo downGlassInfo = new DownGlassInfo(); BeanUtils.copyProperties(downStorageCageDetails, downGlassInfo); //钀芥灦鐗囧簭 - downGlassInfo.setSequence(downGlassInfoService.queryMaxSequence(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer())); + LambdaQueryWrapper<DownGlassInfo> wrapper = new LambdaQueryWrapper<DownGlassInfo>(); + wrapper.eq(DownGlassInfo::getFlowCardId, downGlassInfo.getFlowCardId()) + .orderByDesc(DownGlassInfo::getSequence) + .last("limit 1"); + if (downStorageCageDetails.getLayer() != 0) { + wrapper.eq(DownGlassInfo::getLayer, downGlassInfo.getLayer()); + } +// downGlassInfo.setSequence(downGlassInfoService.queryMaxSequence(downGlassInfo.getFlowCardId(), downGlassInfo.getLayer())); + int k = 0; + DownGlassInfo downGlassInfo1 = downGlassInfoService.getOne(wrapper); + if (downGlassInfo1 != null) { + k = 1; + } else { + k = 1; + } + downGlassInfo.setSequence(k); downGlassInfo.setWorkStationId(endCell); downGlassInfo.setGmtCreate(new Date()); downGlassInfoService.save(downGlassInfo); //鐢熸垚浠诲姟淇℃伅 GlassInfo glassInfo = new GlassInfo(); + downStorageCageDetails.setLayer(0); BeanUtils.copyProperties(downStorageCageDetails, glassInfo); + //鍒犻櫎鐞嗙墖绗艰〃鎷胯蛋/鐮存崯鏁版嵁鏁版嵁 + damageService.deleteByGlassId(glassInfo.getGlassId()); return initDownGlassTask(glassInfo, downStorageCageDetails.getSlot(), endCell, taskType); } @@ -627,6 +710,14 @@ downGlassTask.setTaskStatus(0); downGlassTask.setCreateTime(new Date()); downGlassTaskService.save(downGlassTask); + //娣诲姞鎶ュ伐鏁版嵁 + Damage damage = new Damage(); + damage.setGlassId(glassInfo.getGlassId()); + damage.setWorkingProcedure("閽㈠寲"); + damage.setLine(4001); + damage.setType(1); + damage.setRemark("閽㈠寲鍚庡崸寮忕悊鐗�"); + damageService.insertDamage(damage); //鍚憄lc鍙戦�佸懡浠� return sendMessageToPlc((int) glassInfo.getWidth(), (int) glassInfo.getHeight(), (int) glassInfo.getThickness(), startCell, endCell, taskType); -- Gitblit v1.8.0