From 491510f698179cdf30fe0008b59f3cfb3917f77b Mon Sep 17 00:00:00 2001 From: zhoushihao <zsh19950802@163.com> Date: 星期三, 12 六月 2024 15:09:48 +0800 Subject: [PATCH] 1、卧式理片笼线程改造:初次改造提交 2、fixbug启动异常 --- hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 107 insertions(+), 1 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 63c5dbb..a850be6 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 @@ -2,6 +2,7 @@ import cn.hutool.core.lang.Assert; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.bigstorage.entity.BigStorageDTO; import com.mes.bigstorage.service.BigStorageCageDetailsService; @@ -13,18 +14,22 @@ import com.mes.common.S7object; import com.mes.common.config.Const; import com.mes.device.PlcParameterObject; +import com.mes.edgglasstask.entity.EdgGlassTaskInfo; import com.mes.edgglasstask.service.EdgGlassTaskInfoService; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.service.GlassInfoService; import com.mes.temperingglass.service.TemperingGlassInfoService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import javax.annotation.Resource; +import java.util.ArrayList; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicReference; @@ -161,6 +166,46 @@ } @Scheduled(fixedDelay = 5000) + public void plcToHomeEdgScan() { + PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; + String d01Request = plcParameterObject.getPlcParameter("D01Request").getValue(); + String d01ID1 = plcParameterObject.getPlcParameter("D01ID1").getValue(); + String d04Request = plcParameterObject.getPlcParameter("D04Request").getValue(); + String d04ID1 = plcParameterObject.getPlcParameter("D04ID1").getValue(); + log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧d01涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{};鑾峰彇鍒扮殑璇锋眰瀛梔04涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{};", + d01Request, d01ID1, d04Request, d04ID1); + if (!"1".equals(d01Request) && !"1".equals(d04Request)) { + log.info("涓ゆ潯绾挎湭鏀跺埌杩涚墖浠诲姟锛岀粨鏉熸湰娆℃壂鎻忚繘鍗ц浆绔嬩换鍔�"); + return; + } + // 0锛氫笉骞查 锛� 1锛氭潯浠舵弧瓒虫儏鍐典笅绔嬪嵆鍙戣溅 + String d02GoAdress = plcParameterObject.getPlcParameter("D02Go").getAddress(); + // 0锛氫笉骞查 锛� 1锛氭潯浠舵弧瓒虫儏鍐典笅绔嬪嵆鍙戣溅 + String d05GoAdress = plcParameterObject.getPlcParameter("D05Go").getAddress(); + Boolean flag01 = Boolean.FALSE; + Boolean flag04 = Boolean.FALSE; + //鎸夌収绾胯矾鍙婄幓鐠僫d鑾峰彇鐩搁偦涓ゅ潡鐜荤拑 鍗ц浆绔嬩笂鐨勭幓鐠� + if ("1".equals(d01Request)) { + flag01 = judgeGlassTypeStatus(d01ID1, Const.A09_OUT_TARGET_POSITION); + } + if ("1".equals(d04Request)) { + flag04 = judgeGlassTypeStatus(d01ID1, Const.A10_OUT_TARGET_POSITION); + } + if (flag01 && flag04) { + //姣旇緝鏈�鏃╀竴鐗囦换鍔$殑鐗堝浘id鍙婄増搴� 姹傚嚭鍗ц浆绔嬬殑绾胯矾 + Integer startLine = getStartLine(); + //璁$畻鐩爣鏍煎瓙锛屽彂閫佸惎鍔ㄤ换鍔� + computeTargetByLine(startLine, d02GoAdress, d05GoAdress); + } else if (flag01 || flag04) { + Integer startLine = flag01.equals(Boolean.TRUE) ? Const.A09_OUT_TARGET_POSITION : Const.A10_OUT_TARGET_POSITION; + //璁$畻鐩爣鏍煎瓙锛屽彂閫佸惎鍔ㄤ换鍔� + computeTargetByLine(startLine, d02GoAdress, d05GoAdress); + } else { + log.info("涓ゆ潯绾挎湭鏀跺埌杩涚墖浠诲姟锛岀粨鏉熸湰娆℃壂鎻忚繘鍗ц浆绔嬩换鍔�"); + } + } + + @Scheduled(fixedDelay = 5000) public void plcToHomeEdgFreeCarTask() { PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; String freeCar = plcParameterObject.getPlcParameter("freeCar").getValue(); @@ -170,7 +215,6 @@ } String d01Request = plcParameterObject.getPlcParameter("D01Request").getValue(); String d01ID1 = plcParameterObject.getPlcParameter("D01ID1").getValue(); -// 0锛氫笉骞查 锛� 1锛氭潯浠舵弧瓒虫儏鍐典笅绔嬪嵆鍙戣溅 String d04Request = plcParameterObject.getPlcParameter("D04Request").getValue(); String d04ID1 = plcParameterObject.getPlcParameter("D04ID1").getValue(); log.info("1銆佽幏鍙栧埌鐨勮姹傚瓧d01涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{};鑾峰彇鍒扮殑璇锋眰瀛梔04涓猴細{}锛岃幏鍙栧埌鐨勬壂鎻廔D涓猴細{};", @@ -216,6 +260,60 @@ } /** + * 鎸夌収鐜荤拑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), "璇嗗埆鐜荤拑淇℃伅鏈嚭鐜板湪灏哄琛ㄤ腑,鑾峰彇鐩搁偦涓ゅ潡鐜荤拑澶辫触"); + //2銆佽幏鍙栧崸杞珛鍓╀綑瀹藉害 + Map<String, Object> map = bigStorageCageFeedTaskService.getMap(new QueryWrapper<BigStorageCageFeedTask>() + .select("5000 - sum(width + 20) as remainWidth") + .eq("line", line).eq("task_state", Const.BIG_STORAGE_IN_UP)); + Integer remainWidth = Integer.parseInt(map.get("remainWidth") + ""); + //2銆佽幏鍙栧崸杞珛 + Integer widthFirst = edgGlassTaskInfoList.get(0).getWidth(); + if (edgGlassTaskInfoList.size() == 1) { + if (remainWidth >= widthFirst) { + addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthFirst); + return Boolean.FALSE; + } else { + //璁板綍鏃犳硶鏀句笅鐜荤拑锛屽悗缁垽鏂惎鍔� + return Boolean.TRUE; + } + } + Integer widthSecond = edgGlassTaskInfoList.get(1).getWidth(); + if (remainWidth >= widthFirst) { + if (remainWidth - widthFirst - Const.BIG_STORAGE_GAP >= widthSecond) { + addFeedTask(glassId, line, Const.BIG_STORAGE_IN_WAIT, widthSecond); + } else { + addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthSecond); + } + return Boolean.FALSE; + + } else { + return Boolean.TRUE; + } + } + + /** + * 娣诲姞浠诲姟淇℃伅 + */ + private Boolean addFeedTask(String glassId, Integer line, Integer taskType, Integer width) { + BigStorageCageFeedTask bigStorageCageFeedTask = new BigStorageCageFeedTask(); + bigStorageCageFeedTask.setGlassId(glassId); + bigStorageCageFeedTask.setTaskState(Const.BIG_STORAGE_REQUEST_IN); + bigStorageCageFeedTask.setLine(line); + bigStorageCageFeedTask.setTaskType(taskType); + bigStorageCageFeedTask.setWidth(width); + bigStorageCageFeedTask.setCreateTime(new Date()); + return bigStorageCageFeedTaskService.save(bigStorageCageFeedTask); + } + + /** * 鑾峰彇闇�瑕佸惎鍔ㄧ殑绾胯矾锛氫袱鏉$嚎閮藉彲鍚姩 鑾峰彇绗竴鐗囩幓鐠冪増鍥緄d鏈�灏� 鐗堝簭鏈�澶х殑绾胯矾 * * @return @@ -250,9 +348,12 @@ AtomicReference<Integer> temperingFeedSequenceTemp = new AtomicReference<>(0); 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<>(); taskList.stream().forEach(e -> { + BigStorageCageDetails cageDetails = new BigStorageCageDetails(); //鎸夌収鐗堝浘淇℃伅鑾峰彇杩涚墖绗煎瓙鏍煎瓙鍙� GlassInfo info = glassInfoMap.get(e.getGlassId()); + BeanUtils.copyProperties(info, cageDetails); if (temperingLayoutIdTemp.equals(info.getTemperingLayoutId()) && temperingFeedSequenceTemp.equals(info.getTemperingFeedSequence() + 1) && info.getWidth() <= bigStorageDTO.get().getWidth()) { @@ -261,11 +362,16 @@ bigStorageDTO.set(bigStorageCageDetailsService.queryTargetSlotByTempering(info)); } e.setTragetSlot(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); }); //3銆佹洿鏂拌繘鐗囦换鍔¤〃 boolean taskFlag = bigStorageCageFeedTaskService.updateBatchById(taskList); + //4銆佸湪璇︽儏琛ㄤ腑鍔犲叆杩涚墖鐜荤拑淇℃伅 + bigStorageCageDetailsService.saveBatch(bigStorageCageDetailsList); if (taskFlag) { String lineAddress = line.equals(Const.A09_OUT_TARGET_POSITION) ? d02GoAdress : d05GoAdress; S7object.getinstance().plccontrol.writeWord(lineAddress, (short) 1); -- Gitblit v1.8.0