From 4f966da6047cdcd9c53e254c1f1c7bdd70af0b34 Mon Sep 17 00:00:00 2001 From: zhoushihao <zsh19950802@163.com> Date: 星期一, 21 四月 2025 10:08:18 +0800 Subject: [PATCH] 1、卧式理片笼配置参数由配置yml文件改为数据库配置表获取 2、磨边后参数改造,解决plc查询数据异常问题 3、大理片笼配置参数由配置yml文件改为数据库配置表获取 4、钢化配置参数由配置yml文件改为数据库配置表获取 5、配置参数常量类配置修改,提供获取配置参数的方法 --- hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/opccallback/BigStorageStartCallback.java | 1642 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 821 insertions(+), 821 deletions(-) diff --git a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/opccallback/BigStorageStartCallback.java b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/opccallback/BigStorageStartCallback.java index a539b6d..e5803fb 100644 --- a/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/opccallback/BigStorageStartCallback.java +++ b/hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/opccallback/BigStorageStartCallback.java @@ -1,823 +1,823 @@ -package com.mes.job.opccallback; - -import cn.hutool.core.lang.Assert; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.github.yulichang.toolkit.JoinWrappers; -import com.github.yulichang.wrapper.MPJLambdaWrapper; -import com.kangaroohy.milo.runner.subscription.SubscriptionCallback; -import com.mes.base.entity.BigStorageCageBaseInfo; -import com.mes.bigstorage.entity.BigStorageCage; -import com.mes.bigstorage.entity.BigStorageCageDetails; -import com.mes.bigstorage.entity.dto.BigStorageDTO; -import com.mes.bigstorage.entity.dto.SlotSequenceDTO; -import com.mes.bigstorage.entity.dto.TemperingLayoutDTO; -import com.mes.bigstorage.service.BigStorageCageDetailsService; -import com.mes.bigstorage.service.BigStorageCageService; -import com.mes.bigstoragetask.entity.BigStorageCageFeedTask; -import com.mes.bigstoragetask.entity.BigStorageCageOutTask; -import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService; -import com.mes.bigstoragetask.service.BigStorageCageOutTaskService; -import com.mes.common.S7object; -import com.mes.common.config.Const; -import com.mes.damage.entity.Damage; -import com.mes.damage.service.DamageService; -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.entity.TemperingGlassInfo; -import com.mes.temperingglass.service.TemperingGlassInfoService; -import com.mes.tools.S7control; -import com.mes.utils.RedisUtil; -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.stereotype.Service; - -import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -/** - * @Author : zhoush - * @Date: 2024/10/28 21:22 - * @Description: - */ -@Service -@Slf4j -public class BigStorageStartCallback implements SubscriptionCallback { - - - @Resource - private BigStorageCageService bigStorageCageService; - @Resource - private BigStorageCageDetailsService bigStorageCageDetailsService; - @Resource - private GlassInfoService glassInfoService; - @Resource - private BigStorageCageFeedTaskService bigStorageCageFeedTaskService; - @Resource - private BigStorageCageOutTaskService bigStorageCageOutTaskService; - @Resource - private EdgGlassTaskInfoService edgGlassTaskInfoService; - @Resource - private TemperingGlassInfoService temperingGlassInfoService; - @Resource - private DamageService damageService; - - @Resource - private RedisUtil redisUtil; - - private static final String REQUEST_WORD = "1"; - - @Value("${mes.sequence.order}") - private boolean sequenceOrder; - - @Value("${mes.carWidth}") - private Integer carWidth; - - @Value("${mes.slotWidth}") - private Integer slotWidth; - - @Value("${mes.inCarMaxSize}") - private Integer inCarMaxSize; - - @Value("${mes.outCarMaxSize}") - private Integer outCarMaxSize; - - @Value("${mes.glassGap}") - private Integer glassGap; - - @Value("${mes.xMaxSize}") - private Integer xMaxSize; - - - private String d01GlassId = ""; - private String d04GlassId = ""; - - @Override - public void onSubscribe(String identifier, Object value) { - //todo:鑾峰彇浠诲姟鍒楄〃 - String tableName = ""; - //todo:鎸夌収琛ㄦ槑鑾峰彇浼嶄俊鎭� - List<BigStorageCageFeedTask> tasks = new ArrayList<>(); - if (CollectionUtils.isEmpty(tasks)) { - log.info("鍗ц浆绔嬩笂娌℃湁鐜荤拑"); - //todo 涓庡崸杞珛浜や簰锛屽皢璇锋眰瀛楀ぇ杞﹁姹傚彉涓�0锛岀‘淇濊闃呬换鍔″彲鍐嶆鎵ц - return; - } - List<String> glassIds = tasks.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList()); - List<GlassInfo> glassInfos = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassIds)); - computeIsTemperingTargetByLine(glassInfos, tasks); - } - - - // @Scheduled(fixedDelay = 10000) - public void plcToHomeEdgOutTask() { - String mesToPLCAddress = ""; - List<BigStorageCageOutTask> outingList = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>() - .eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_NEW)); - if (CollectionUtils.isNotEmpty(outingList)) { - log.info("鏈夋鍦ㄦ墽琛屽嚭鐗囩殑浠诲姟锛岀粨鏉熷綋鍓嶅嚭鐗囩嚎绋�"); - return; - } - if (redisUtil.getCacheObject("temperingSwitch")) { - //鏄惁鏈夋鍦ㄩ挗鍖栫殑鐜荤拑 - List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.selectJoinList(TemperingGlassInfo.class, new MPJLambdaWrapper<TemperingGlassInfo>() - .selectAll(TemperingGlassInfo.class) - .leftJoin(BigStorageCageOutTask.class, BigStorageCageOutTask::getGlassId, TemperingGlassInfo::getGlassId) - .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW) - .isNull(BigStorageCageOutTask::getGlassId) - .orderBy(Boolean.TRUE, sequenceOrder, TemperingGlassInfo::getTemperingFeedSequence)); - if (CollectionUtils.isNotEmpty(temperingGlassInfoList)) { - log.info("鏈夋鍦ㄥ嚭鐗囩殑閽㈠寲浠诲姟"); - computeOutMoreGlassInfo(temperingGlassInfoList, Boolean.TRUE, mesToPLCAddress); - return; - } - //鏄惁鏈変汉宸ヤ笅鐗囦换鍔� 鏈夌洿鎺ュ嚭 -// List<BigStorageCageDetails> artificialList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>() -// .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL).orderByDesc(BigStorageCageDetails::getWidth)); - List<BigStorageCageDetails> artificialList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>() - .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL) - .orderByAsc(BigStorageCageDetails::getSlot) - .orderByDesc(BigStorageCageDetails::getId)); - if (CollectionUtils.isNotEmpty(artificialList)) { - computeOutMoreGlassInfo(artificialList, Boolean.FALSE, mesToPLCAddress); - return; - } - //閽㈠寲浼樺厛锛氳幏鍙栫悊鐗囩 鐜荤拑灏忕墖 鐮存崯琛� 鏁伴噺 鍒ゆ柇绗煎唴鐗堝浘鏄惁鍒伴綈 - List<TemperingLayoutDTO> temperingLayoutDTOList = bigStorageCageDetailsService.temperingIsAll(); - if (CollectionUtils.isNotEmpty(temperingLayoutDTOList)) { - //鐜荤拑鍒伴綈鍖呮嫭宸插嚭鐗囩殑 - //鍒伴綈锛屽皢鐜荤拑灏忕墖鏁版嵁瀛樺叆閽㈠寲灏忕墖琛紝閫昏緫鐢熸垚鍑虹墖浠诲姟 缁撴潫 - for (TemperingLayoutDTO item : temperingLayoutDTOList) { - if (redisUtil.getCacheObject("temperingengineerId").equals(item.getEngineerId())) { - List<TemperingGlassInfo> temperingGlassInfos = glassInfoService.selectJoinList(TemperingGlassInfo.class, JoinWrappers.lambda(GlassInfo.class) - .selectAll(GlassInfo.class) - .select("-1 as state") - .selectAs(BigStorageCageDetails::getSlot, TemperingGlassInfo::getSlot) - .innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId) - .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN) - .eq(GlassInfo::getTemperingLayoutId, item.getTemperingLayoutId()) - .eq(GlassInfo::getEngineerId, item.getEngineerId()) - .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence)); - if (CollectionUtils.isNotEmpty(temperingGlassInfos)) { - temperingGlassInfoService.saveBatch(temperingGlassInfos); - computeOutMoreGlassInfo(temperingGlassInfoList, Boolean.TRUE, mesToPLCAddress); - return; - } - } - } - } - } - //鎵ц鍐呴儴璋冨害浠诲姟 - List<TemperingLayoutDTO> temperingOccupySlotList = bigStorageCageDetailsService.queryTemperingOccupySlot(); - if (CollectionUtils.isNotEmpty(temperingOccupySlotList)) { - loop: - for (TemperingLayoutDTO temperingOccupySlot : temperingOccupySlotList) { - List<SlotSequenceDTO> slotSequenceList = bigStorageCageDetailsService.queryGlassMaxAndMin(temperingOccupySlot.getEngineerId(), temperingOccupySlot.getTemperingLayoutId()); - for (int i = 0; i < slotSequenceList.size() - 1; i++) { - SlotSequenceDTO first = slotSequenceList.get(i); - SlotSequenceDTO second = slotSequenceList.get(i + 1); - int slotWidth = carWidth - first.getRemainWidth() - glassGap; - if (first.getMinSequence() == second.getMaxSequence() + 1 - && second.getRemainWidth() > slotWidth && slotWidth >= 0) { - List<BigStorageCageDetails> list = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>() - .eq(BigStorageCageDetails::getSlot, first.getSlot()).eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN) - .orderBy(Boolean.TRUE, sequenceOrder, BigStorageCageDetails::getTemperingFeedSequence)); - if (CollectionUtils.isNotEmpty(list)) { - List<BigStorageCageOutTask> outTasks = new ArrayList<>(); - int serialNumber = 1; - for (BigStorageCageDetails item : list) { - outTasks.add(new BigStorageCageOutTask(item.getGlassId(), first.getSlot(), second.getSlot(), - item.getWidth() * 10, item.getHeight() * 10, 1, serialNumber++, Const.BIG_STORAGE_OUT_NEW, new Date())); - } - //鏂板璋冨害浠诲姟 - bigStorageCageOutTaskService.saveBatch(outTasks); - //鏇存柊鐞嗙墖绗艰鎯呰〃璋冨害鐨勫悗鐨勭幓鐠冧綅缃俊鎭細鐢熸垚浠诲姟鍚庡厛灏嗙幓鐠冩牸瀛愪綅缃繘琛岃皟鏁达紝鐜荤拑鐘舵�佹敼涓鸿皟搴︿腑锛屾柊澧炶皟搴﹀畬鎴愪换鍔★紝澶勭悊璋冨害瀹屾垚鍚庣幓鐠冪姸鎬佹敼涓�100. - List<String> glassList = list.stream().map(BigStorageCageDetails::getGlassId).collect(Collectors.toList()); - bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>().set(BigStorageCageDetails::getState, Const.GLASS_STATE_SCHEDULE_ING) - .set(BigStorageCageBaseInfo::getSlot, second.getSlot()).in(BigStorageCageDetails::getGlassId, glassList)); - //涓ゆ鏇存柊绗煎瓙鐨勫墿浣欏昂瀵革細绗竴娆¢槻姝㈡湁鐜荤拑缁х画杩涜皟搴﹀悗鐨勭瀛愶紝绗簩娆℃洿鏂帮細璁$畻鏍煎瓙鐨勫疄闄呭昂瀵� - // 浠呮洿鏂拌皟搴﹀悗鐨勬牸瀛愪俊鎭細璧峰鏍煎瓙瀹屾垚鍚庢洿鏂帮細闃叉璋冨害鍑虹墖杩囩▼涓湁鏂扮幓鐠冭繘鍏ワ紝 -// todo:涓存椂瑙e喅鎶ラ敊 -// updateSlotRemainBySlots(Arrays.asList(second.getSlot())); - break loop; - } - } - } - } -// //鍚憄lc鍐欏叆纭瀛� -// int returnData = 0; -// int count = 1; -// while (returnData == 0) { -// log.info("宸插悜plc绗瑊}娆¢�佸崗璁�", count); -// S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1); -// returnData = S7object.getinstance().plccontrol.readWord(mesToPLCAddress, 1).get(0); -// log.info("宸插悜plc绗瑊}娆″彂閫佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, mesToPLCAddress, returnData); +//package com.mes.job.opccallback; +// +//import cn.hutool.core.lang.Assert; +//import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +//import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +//import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +//import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +//import com.github.yulichang.toolkit.JoinWrappers; +//import com.github.yulichang.wrapper.MPJLambdaWrapper; +//import com.kangaroohy.milo.runner.subscription.SubscriptionCallback; +//import com.mes.base.entity.BigStorageCageBaseInfo; +//import com.mes.bigstorage.entity.BigStorageCage; +//import com.mes.bigstorage.entity.BigStorageCageDetails; +//import com.mes.bigstorage.entity.dto.BigStorageDTO; +//import com.mes.bigstorage.entity.dto.SlotSequenceDTO; +//import com.mes.bigstorage.entity.dto.TemperingLayoutDTO; +//import com.mes.bigstorage.service.BigStorageCageDetailsService; +//import com.mes.bigstorage.service.BigStorageCageService; +//import com.mes.bigstoragetask.entity.BigStorageCageFeedTask; +//import com.mes.bigstoragetask.entity.BigStorageCageOutTask; +//import com.mes.bigstoragetask.service.BigStorageCageFeedTaskService; +//import com.mes.bigstoragetask.service.BigStorageCageOutTaskService; +//import com.mes.common.S7object; +//import com.mes.common.config.Const; +//import com.mes.damage.entity.Damage; +//import com.mes.damage.service.DamageService; +//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.entity.TemperingGlassInfo; +//import com.mes.temperingglass.service.TemperingGlassInfoService; +//import com.mes.tools.S7control; +//import com.mes.utils.RedisUtil; +//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.stereotype.Service; +// +//import javax.annotation.Resource; +//import java.util.ArrayList; +//import java.util.Date; +//import java.util.List; +//import java.util.Map; +//import java.util.stream.Collectors; +// +///** +// * @Author : zhoush +// * @Date: 2024/10/28 21:22 +// * @Description: +// */ +//@Service +//@Slf4j +//public class BigStorageStartCallback implements SubscriptionCallback { +// +// +// @Resource +// private BigStorageCageService bigStorageCageService; +// @Resource +// private BigStorageCageDetailsService bigStorageCageDetailsService; +// @Resource +// private GlassInfoService glassInfoService; +// @Resource +// private BigStorageCageFeedTaskService bigStorageCageFeedTaskService; +// @Resource +// private BigStorageCageOutTaskService bigStorageCageOutTaskService; +// @Resource +// private EdgGlassTaskInfoService edgGlassTaskInfoService; +// @Resource +// private TemperingGlassInfoService temperingGlassInfoService; +// @Resource +// private DamageService damageService; +// +// @Resource +// private RedisUtil redisUtil; +// +// private static final String REQUEST_WORD = "1"; +// +// @Value("${mes.sequence.order}") +// private boolean sequenceOrder; +// +// @Value("${mes.carWidth}") +// private Integer carWidth; +// +// @Value("${mes.slotWidth}") +// private Integer slotWidth; +// +// @Value("${mes.inCarMaxSize}") +// private Integer inCarMaxSize; +// +// @Value("${mes.outCarMaxSize}") +// private Integer outCarMaxSize; +// +// @Value("${mes.glassGap}") +// private Integer glassGap; +// +// @Value("${mes.xMaxSize}") +// private Integer xMaxSize; +// +// +// private String d01GlassId = ""; +// private String d04GlassId = ""; +// +// @Override +// public void onSubscribe(String identifier, Object value) { +// //todo:鑾峰彇浠诲姟鍒楄〃 +// String tableName = ""; +// //todo:鎸夌収琛ㄦ槑鑾峰彇浼嶄俊鎭� +// List<BigStorageCageFeedTask> tasks = new ArrayList<>(); +// if (CollectionUtils.isEmpty(tasks)) { +// log.info("鍗ц浆绔嬩笂娌℃湁鐜荤拑"); +// //todo 涓庡崸杞珛浜や簰锛屽皢璇锋眰瀛楀ぇ杞﹁姹傚彉涓�0锛岀‘淇濊闃呬换鍔″彲鍐嶆鎵ц +// return; +// } +// List<String> glassIds = tasks.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList()); +// List<GlassInfo> glassInfos = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassIds)); +// computeIsTemperingTargetByLine(glassInfos, tasks); +// } +// +// +// // @Scheduled(fixedDelay = 10000) +// public void plcToHomeEdgOutTask() { +// String mesToPLCAddress = ""; +// List<BigStorageCageOutTask> outingList = bigStorageCageOutTaskService.list(new LambdaQueryWrapper<BigStorageCageOutTask>() +// .eq(BigStorageCageOutTask::getTaskState, Const.BIG_STORAGE_OUT_NEW)); +// if (CollectionUtils.isNotEmpty(outingList)) { +// log.info("鏈夋鍦ㄦ墽琛屽嚭鐗囩殑浠诲姟锛岀粨鏉熷綋鍓嶅嚭鐗囩嚎绋�"); +// return; +// } +// if (redisUtil.getCacheObject("temperingSwitch")) { +// //鏄惁鏈夋鍦ㄩ挗鍖栫殑鐜荤拑 +// List<TemperingGlassInfo> temperingGlassInfoList = temperingGlassInfoService.selectJoinList(TemperingGlassInfo.class, new MPJLambdaWrapper<TemperingGlassInfo>() +// .selectAll(TemperingGlassInfo.class) +// .leftJoin(BigStorageCageOutTask.class, BigStorageCageOutTask::getGlassId, TemperingGlassInfo::getGlassId) +// .eq(TemperingGlassInfo::getState, Const.TEMPERING_NEW) +// .isNull(BigStorageCageOutTask::getGlassId) +// .orderBy(Boolean.TRUE, sequenceOrder, TemperingGlassInfo::getTemperingFeedSequence)); +// if (CollectionUtils.isNotEmpty(temperingGlassInfoList)) { +// log.info("鏈夋鍦ㄥ嚭鐗囩殑閽㈠寲浠诲姟"); +// computeOutMoreGlassInfo(temperingGlassInfoList, Boolean.TRUE, mesToPLCAddress); +// return; // } - return; - } - } - - - /** - * 纭瀛楁竻绌� - */ -// @Scheduled(fixedDelay = 300) - public void confirmClear() { - PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; - String d01ToMES = plcParameterObject.getPlcParameter("D01ToMES").getValue(); - String d04ToMES = plcParameterObject.getPlcParameter("D04ToMES").getValue(); - String mesD01Address = plcParameterObject.getPlcParameter("MESToD01").getAddress(); - String mesD04Address = plcParameterObject.getPlcParameter("MESToD04").getAddress(); - String d03ToMES = plcParameterObject.getPlcParameter("D03ToMES").getValue(); - String d05ToMES = plcParameterObject.getPlcParameter("D05ToMES").getValue(); - String mesD03Address = plcParameterObject.getPlcParameter("MESToD03").getAddress(); - String mesD05Address = plcParameterObject.getPlcParameter("MESToD05").getAddress(); - if (!REQUEST_WORD.equals(d01ToMES)) { - S7object.getinstance().plccontrol.writeWord(mesD01Address, 0); - } - if (!REQUEST_WORD.equals(d04ToMES)) { - S7object.getinstance().plccontrol.writeWord(mesD04Address, 0); - } - if (!REQUEST_WORD.equals(d03ToMES)) { - S7object.getinstance().plccontrol.writeWord(mesD03Address, 0); - } - if (!REQUEST_WORD.equals(d05ToMES)) { - S7object.getinstance().plccontrol.writeWord(mesD05Address, 0); - } - } - - /** - * 杩涚墖鐘舵�佷慨鏀� - */ -// @Scheduled(fixedDelay = 300) - public void feedStatusUpdate() { - PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; - List<String> glassIds1 = new ArrayList<>(); - List<String> glassIds2 = new ArrayList<>(); - for (int i = 1; i <= 6; i++) { - String line1GlassId = plcParameterObject.getPlcParameter("D03ID" + i).getValue(); - if (StringUtils.isNotEmpty(line1GlassId)) { - glassIds1.add(line1GlassId); - } - String line2GlassId = plcParameterObject.getPlcParameter("D05ID" + i).getValue(); - if (StringUtils.isNotEmpty(line2GlassId)) { - glassIds2.add(line2GlassId); - } - } - List<BigStorageCageFeedTask> bigStorageCageFeedTasks1 = bigStorageCageFeedTaskService.list( - new LambdaQueryWrapper<BigStorageCageFeedTask>() - .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_NEW) - .eq(BigStorageCageFeedTask::getLine, Const.A09_OUT_TARGET_POSITION) - ); - List<BigStorageCageFeedTask> bigStorageCageFeedTasks2 = bigStorageCageFeedTaskService.list( - new LambdaQueryWrapper<BigStorageCageFeedTask>() - .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_NEW) - .eq(BigStorageCageFeedTask::getLine, Const.A10_OUT_TARGET_POSITION) - ); - if (CollectionUtils.isNotEmpty(bigStorageCageFeedTasks1) && CollectionUtils.isNotEmpty(glassIds1)) { - List<String> matchingIds1 = bigStorageCageFeedTasks1.stream() - .map(BigStorageCageFeedTask::getGlassId) - .filter(glassIds1::contains) - .distinct() - .collect(Collectors.toList()); - bigStorageCageFeedTaskService.update( - new LambdaUpdateWrapper<BigStorageCageFeedTask>() - .in(BigStorageCageFeedTask::getGlassId, matchingIds1) - .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) - .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) - ); - } - if (CollectionUtils.isNotEmpty(bigStorageCageFeedTasks2) && CollectionUtils.isNotEmpty(glassIds2)) { - List<String> matchingIds2 = bigStorageCageFeedTasks2.stream() - .map(BigStorageCageFeedTask::getGlassId) - .filter(glassIds2::contains) - .distinct() - .collect(Collectors.toList()); - bigStorageCageFeedTaskService.update( - new LambdaUpdateWrapper<BigStorageCageFeedTask>() - .in(BigStorageCageFeedTask::getGlassId, matchingIds2) - .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) - .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) - ); - } - if (CollectionUtils.isEmpty(glassIds1)) { - bigStorageCageFeedTaskService.update( - new LambdaUpdateWrapper<BigStorageCageFeedTask>() - .eq(BigStorageCageFeedTask::getLine, Const.A09_OUT_TARGET_POSITION) - .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) - .gt(BigStorageCageFeedTask::getTargetSlot, 0) - .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) - .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_CAR) - ); - } - if (CollectionUtils.isEmpty(glassIds2)) { - bigStorageCageFeedTaskService.update( - new LambdaUpdateWrapper<BigStorageCageFeedTask>() - .eq(BigStorageCageFeedTask::getLine, Const.A10_OUT_TARGET_POSITION) - .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) - .gt(BigStorageCageFeedTask::getTargetSlot, 0) - .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) - .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_CAR) - ); - } - } - - /** - * 鎸夌収鐜荤拑id鍒ゆ柇鐜荤拑鐘舵�佸強鍗ц浆绔嬫槸鍚﹀彲鐩存帴鍚姩 - */ - public Boolean judgeGlassTypeStatus(String glassId, Integer line, String mesAddress) { - //鍒ゆ柇姝ょ幓鐠冩槸鍦ㄧ鍐呮垨宸茬敓鎴愯繘鐗囦换鍔� - BigStorageCageFeedTask bigStorageCageFeedTask = bigStorageCageFeedTaskService.getOne( - new LambdaQueryWrapper<BigStorageCageFeedTask>() - .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) - .eq(BigStorageCageFeedTask::getGlassId, glassId) - ); - BigStorageCageDetails bigStorageCageDetails = bigStorageCageDetailsService.getOne( - new LambdaQueryWrapper<BigStorageCageDetails>() - .eq(BigStorageCageDetails::getGlassId, glassId) - .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_IN) - ); - if (bigStorageCageFeedTask != null || bigStorageCageDetails != null) { - log.info("姝ょ幓鐠冨瓨浠诲姟鎴栧凡鍦ㄧ鍐�"); - return Boolean.TRUE; - } - //1銆佽幏鍙栦换鍔¤〃涓浉閭荤幓鐠� - List<EdgGlassTaskInfo> edgGlassTaskInfoList; - edgGlassTaskInfoList = edgGlassTaskInfoService.list(new LambdaQueryWrapper<EdgGlassTaskInfo>() - .eq(EdgGlassTaskInfo::getLine, line) - .apply("time >= (select time from edg_glass_task_info where line='" + line + "' and glass_id = '" + glassId + "' and deleted = 0)") - .orderByAsc(EdgGlassTaskInfo::getCreateTime)); - if (edgGlassTaskInfoList.size() == 0) { - edgGlassTaskInfoList = edgGlassTaskInfoService.list(new QueryWrapper<EdgGlassTaskInfo>() - .select("Top 1 *") - .eq("glass_id", glassId) - ); - log.info("鍦ㄥ昂瀵歌〃涓幏鍙栫幓鐠冧俊鎭瘂}", edgGlassTaskInfoList); - if (edgGlassTaskInfoList.size() == 0) { - GlassInfo glassInfo = glassInfoService.getOne( - new LambdaQueryWrapper<GlassInfo>() - .eq(GlassInfo::getGlassId, glassId) - ); - EdgGlassTaskInfo edgGlassTaskInfo = new EdgGlassTaskInfo(); - BeanUtils.copyProperties(glassInfo, edgGlassTaskInfo); - edgGlassTaskInfo.setWidth((int) glassInfo.getWidth()); - edgGlassTaskInfo.setHeight((int) glassInfo.getHeight()); - edgGlassTaskInfoList.add(edgGlassTaskInfo); - log.info("鍦ㄧ幓鐠冧俊鎭〃涓幏鍙栫幓鐠冧俊鎭瘂}", edgGlassTaskInfoList); - } - } - Assert.isFalse(CollectionUtils.isEmpty(edgGlassTaskInfoList), "璇嗗埆鐜荤拑淇℃伅鏈嚭鐜板湪灏哄琛ㄤ腑,鑾峰彇鐩搁偦涓ゅ潡鐜荤拑澶辫触"); - //2銆佽幏鍙栧崸杞珛鍓╀綑瀹藉害 - BigStorageDTO sitToUpRemainWidth = bigStorageCageFeedTaskService.querySitToUpRemainWidth(line); - Integer remainWidth; - Integer glassCount; - if (0 == sitToUpRemainWidth.getGlassCount()) { - remainWidth = carWidth; - glassCount = 0; - } else { - remainWidth = sitToUpRemainWidth.getWidth(); - glassCount = sitToUpRemainWidth.getGlassCount(); - } - - 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, heightFirst); - } else { - if (glassCount < inCarMaxSize + 1) { - addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst, heightFirst); - } else { - return Boolean.FALSE; - } - } - } 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, heightFirst); - } else { - if (glassCount < inCarMaxSize + 1) { - addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst, heightFirst); - } else { - return Boolean.FALSE; - } - } - } else { - if (glassCount < inCarMaxSize + 1) { - addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst, heightFirst); - } else { - return Boolean.FALSE; - } - } - } else { - flag = Boolean.FALSE; - } - } - //鍚憄lc鍙戦�佽繘鐗囩‘璁� - if (flag) { - //鍚憄lc鍐欏叆纭瀛� - PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; - int returnData = 1; - int count = 1; - while (returnData != 0) { - S7object.getinstance().plccontrol.writeWord(mesAddress, 1); - - if (Const.A10_OUT_TARGET_POSITION.equals(line)) { - returnData = Integer.parseInt(plcParameterObject.getPlcParameter("D04ToMES").getValue()); - } else { - returnData = Integer.parseInt(plcParameterObject.getPlcParameter("D01ToMES").getValue()); - } -// returnData = S7object.getinstance().plccontrol.readWord(mesAddress, 1).get(0); - log.info("杩涘崸杞珛绗瑊}娆″彂閫佺‘璁ゅ瓧瀹屾垚锛屽湴鍧�涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, mesAddress, 1); - } - } - //璁板綍鏃犳硶鏀句笅鐜荤拑锛屽悗缁垽鏂惎鍔� - return flag; - } - - /** - * 娣诲姞浠诲姟淇℃伅 - */ - 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()); - //鍒犻櫎鐞嗙墖绗艰〃鎷胯蛋/鐮存崯鏁版嵁鏁版嵁 - damageService.deleteByGlassId(glassId); - Damage damage = new Damage(); - damage.setGlassId(glassId); - damage.setWorkingProcedure("纾ㄨ竟"); - damage.setLine(line); - damage.setType(1); - damage.setRemark("杩涘ぇ鐞嗙墖"); - damageService.insertDamage(damage); - return bigStorageCageFeedTaskService.save(bigStorageCageFeedTask); - } - - /** - * 鑾峰彇闇�瑕佸惎鍔ㄧ殑绾胯矾锛氫袱鏉$嚎閮藉彲鍚姩 鑾峰彇绗竴鐗囩幓鐠冪増鍥緄d鏈�灏� 鐗堝簭鏈�澶х殑绾胯矾 - * - * @return 闇�瑕佸惎鍔ㄧ殑绾胯矾 - */ - public Integer getStartLine() { - List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>() - .inSql(BigStorageCageFeedTask::getId, "select min(id) from big_storage_cage_feed_task where task_state = 2" + - "and (target_slot = 0 or target_slot is null) group by line")); - Assert.isFalse(CollectionUtils.isEmpty(taskList), "鍗ц浆绔嬩袱鏉$嚎閮芥病鏈夌幓鐠冭繘鐗囦换鍔�"); - Map<String, Integer> taskMap = taskList.stream().collect(Collectors.toMap(BigStorageCageFeedTask::getGlassId, - BigStorageCageFeedTask::getLine)); - GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>() - .in(GlassInfo::getGlassId, taskMap.keySet()) - .orderByAsc(GlassInfo::getTemperingLayoutId) - .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence) - .last("limit 1")); - return taskMap.get(glassInfo.getGlassId()); - } - - /** - * 璁$畻浠诲姟琛ㄨ繘鐗囩嚎璺殑鐩爣鏍煎瓙锛屽苟鍚姩浠诲姟 - */ - public boolean computeTargetByLine(Integer line) { - //1銆佽幏鍙栦换鍔¤〃涓殑鎵�鏈夌幓鐠冿紙鎸囧畾绾胯矾涓斿凡缁忚繘鍗ц浆绔嬪畬鎴愶級 - List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>() - .eq(BigStorageCageFeedTask::getLine, line) - .and(e -> e.isNull(BigStorageCageFeedTask::getTargetSlot).or().eq(BigStorageCageFeedTask::getTargetSlot, Const.OUT_TARGET_POSITION_ZERO)) - .in(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP_ALL) - .orderByAsc(BigStorageCageFeedTask::getId)); - //2銆佸幓绗煎瓙鍐呮煡鎵炬槸鍚﹀彲浠ョ户缁瓨鏀剧殑绗煎瓙 - List<String> glassIds = taskList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList()); - List<GlassInfo> glassInfos = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassIds)); - return computeIsTemperingTargetByLine(glassInfos, taskList); - } - - /** - * 鏄惁閽㈠寲鐜荤拑杩涚鐩爣浣嶇疆 - * - * @param glassInfos 褰撴潯绾垮崸杞珛鎵�鏈夌幓鐠� - * @param taskList 褰撴潯绾垮崸杞珛鎵�鏈変换鍔� - */ - private boolean computeIsTemperingTargetByLine(List<GlassInfo> glassInfos, List<BigStorageCageFeedTask> taskList) { - //1銆佸皢鐜荤拑淇℃伅闆嗗悎杞负glassid涓簁ey鐨刴ap - Map<String, GlassInfo> glassInfoMap = glassInfos.stream() - .collect(Collectors.toMap(GlassInfo::getGlassId, p -> p)); - for (BigStorageCageFeedTask e : taskList) { - GlassInfo info = glassInfoMap.get(e.getGlassId()); - if (info == null) { - continue; - } - BigStorageCageDetails cageDetails = new BigStorageCageDetails(); - BeanUtils.copyProperties(info, cageDetails); - //todo:2銆佽幏鍙栫洰鏍囨牸瀛愪俊鎭� - BigStorageDTO bigStorageDTO = bigStorageCageDetailsService.queryTargetSlotByTempering(info); - //3銆佷复鏃舵洿鏂版牸瀛愮殑鍓╀綑灏哄锛氶槻姝㈢浉閭荤幓鐠冭繘鍚屼竴鏍煎瓙閫犳垚鍓╀綑灏哄涓嶈冻锛岀幓鐠冭秺鐣岀殑鎯呭喌锛屼换鍔″畬鎴愬悗鍐嶆鏇存柊澶х悊鐗囩琛ㄥ墿浣欏搴︼紙鎸夌収绗煎唴鐜荤拑鏁伴噺鏇存柊澶х悊鐗囩鍓╀綑灏哄锛� - bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - Math.max(info.getWidth(), info.getHeight()) - glassGap) - .eq(BigStorageCage::getSlot, bigStorageDTO.getSlot())); - //4銆佹洿鏂拌繘鐗囦换鍔¤〃锛岀洰鏍囨牸瀛愬強鐘舵�侊紙鐘舵�佹敼涓�2 鐢垫皵鎵埌鑷澶勭悊锛� 閬囧埌闂锛氭棤娉曟壒閲忔洿鏂帮紝鎵归噺鏇存柊鏃犳硶璧版寚瀹氫粠搴� - e.setTargetSlot(bigStorageDTO.getSlot()); - bigStorageCageFeedTaskService.updateById(e); - - //5銆佸皢杩涚墖淇℃伅瀛樺叆澶х悊鐗囩璇︽儏琛� - cageDetails.setSlot(bigStorageDTO.getSlot()); - cageDetails.setState(Const.GLASS_STATE_NEW); - cageDetails.setDeviceId(bigStorageDTO.getDeviceId()); - cageDetails.setGap(glassGap); - bigStorageCageDetailsService.save(cageDetails); - - } - return Boolean.TRUE; - } - - private void sendTaskListToPLC(List<BigStorageCageFeedTask> taskList, Integer line) { - log.info("閫佺墖浠诲姟鍙戦�佽繘鐗囩幓鐠冧俊鎭�"); - S7control s7control = S7object.getinstance().plccontrol; - PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject; - String mesD03Address = plcMesObject.getPlcParameter("MESToD03").getAddress(); - String mesD05Address = plcMesObject.getPlcParameter("MESToD05").getAddress(); - String outLine = line.equals(Const.A09_OUT_TARGET_POSITION) ? mesD03Address : mesD05Address; - for (int i = 1; i <= taskList.size(); i++) { - s7control.writeWord(plcMesObject.getPlcParameter("StartAddToImport" + i).getAddress(), taskList.get(i - 1).getLine()); - s7control.writeWord(plcMesObject.getPlcParameter("TargetAddToImport" + i).getAddress(), taskList.get(i - 1).getTargetSlot()); - log.info("鍚憄lc鍙戦�佺{}鐗囩幓鐠冨凡瀹屾垚,璧峰浣嶇疆鏄瘂}锛岀洰鏍囦綅缃槸", i, taskList.get(i - 1).getLine(), taskList.get(i - 1).getTargetSlot()); - } - int returnData = 1; - int count = 1; - while (returnData != 0) { - s7control.writeWord(outLine, 2); - if (line.equals(Const.A09_OUT_TARGET_POSITION)) { - returnData = Integer.parseInt(plcMesObject.getPlcParameter("D03ToMES").getValue()); - } else { - returnData = Integer.parseInt(plcMesObject.getPlcParameter("D05ToMES").getValue()); - } -// returnData = s7control.readWord(outLine, 1).get(0); - log.info("宸插悜plc绗瑊}娆″彂閫佽繘鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, outLine, 2); - } - } - - /** - * 鍑虹墖涓�娆′粎鐢熸垚涓�杞︾幓鐠� - * - * @param list - * @param isTempering - * @param mesToPLCAddress - * @param <T> - * @return - */ - private <T extends BigStorageCageBaseInfo> Boolean computeOutGlassInfo(List<T> list, Boolean isTempering, String mesToPLCAddress) { - //浠诲姟鏁版嵁 鑾峰彇杞﹀瓙瀛樻斁鐜荤拑鏈�澶ф暟閲� 鐜荤拑闂撮殧 - List<BigStorageCageOutTask> bigStorageCageOutTaskList = new ArrayList<>(); - //鎵撹溅鍓╀綑灏哄 - Integer remainWidth = carWidth; - int maxX = 0; - for (T e : list) { - if (bigStorageCageOutTaskList.size() >= outCarMaxSize || Math.max((int) e.getWidth(), (int) e.getHeight()) > remainWidth) { - break; - } - remainWidth = remainWidth - Math.max((int) e.getWidth(), (int) e.getHeight()) - glassGap; - if (isTempering) { - int minLength = Math.min((int) e.getWidth(), (int) e.getHeight()); - if (maxX + minLength <= xMaxSize) { - bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.TEMPERING_OUT_TARGET_POSITION, - e.getWidth() * 10, e.getHeight() * 10, 0, 0, 1, new Date())); -// maxX = Math.max(maxX, e.getXCoordinate()); - } else { - break; - } - - } else { - bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.ARTIFICIAL_OUT_TARGET_POSITION, - e.getWidth() * 10, e.getHeight(), 0, 0, 1, new Date())); - } - } - Assert.isFalse(CollectionUtils.isEmpty(bigStorageCageOutTaskList), "鏈幏鍙栧嚭鐗囨暟鎹紝缁撴潫鍑虹墖浠诲姟"); - log.info("鑾峰彇鍑虹墖浠诲姟鏁版嵁{}鏉★紝鎵ц淇濆瓨", bigStorageCageOutTaskList.size()); - bigStorageCageOutTaskService.saveBatch(bigStorageCageOutTaskList); - List<String> glassIds = bigStorageCageOutTaskList.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList()); - log.info("灏嗗嚭鐗囩幓鐠儃}鐜荤拑鐘舵�佹敼涓哄凡鍑虹墖", glassIds); - bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>() - .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING) - .in(BigStorageCageDetails::getGlassId, glassIds)); - int returnData = 0; - int count = 1; - while (returnData == 0) { - S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1); - returnData = S7object.getinstance().plccontrol.readWord(mesToPLCAddress, 1).get(0); - log.info("宸插悜plc绗瑊}娆″彂閫佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, mesToPLCAddress, returnData); - } - return Boolean.TRUE; - } - - /** - * 鍑虹墖涓�娆$敓鎴愪竴鐐夌幓鐠� - * - * @param list - * @param isTempering - * @param mesToPLCAddress - * @param <T> - * @return - */ - public <T extends BigStorageCageBaseInfo> Boolean computeOutMoreGlassInfo(List<T> list, Boolean isTempering, String mesToPLCAddress) { - //浠诲姟鏁版嵁 鑾峰彇杞﹀瓙瀛樻斁鐜荤拑鏈�澶ф暟閲� 鐜荤拑闂撮殧 - List<BigStorageCageOutTask> bigStorageCageOutTaskList = new ArrayList<>(); - //鎵撹溅鍓╀綑灏哄 - Integer remainWidth = carWidth; - int trainNumber = 1; - int serialNumber = 1; - int maxX = 0; - for (T e : list) { - int maxLength = Math.max((int) e.getWidth(), (int) e.getHeight()); - if (serialNumber > outCarMaxSize || maxLength > remainWidth) { - remainWidth = carWidth; - trainNumber = trainNumber + 1; - serialNumber = 1; - maxX = 0; - } - remainWidth = remainWidth - maxLength - glassGap; - if (isTempering) { - int minLength = Math.min((int) e.getWidth(), (int) e.getHeight()); - if (maxX + minLength <= xMaxSize) { - bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.TEMPERING_OUT_TARGET_POSITION, - e.getWidth() * 10, e.getHeight() * 10, trainNumber, serialNumber++, 1, new Date())); -// maxX = Math.max(maxX, e.getXCoordinate()); - } else { - remainWidth = carWidth - maxLength - glassGap; - trainNumber = trainNumber + 1; - serialNumber = 1; -// maxX = e.getXCoordinate(); - bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.TEMPERING_OUT_TARGET_POSITION, - e.getWidth() * 10, e.getHeight(), trainNumber, serialNumber++, 1, new Date())); - } - } else { - bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.ARTIFICIAL_OUT_TARGET_POSITION, - e.getWidth() * 10, e.getHeight(), trainNumber, serialNumber++, 1, new Date())); - } - } - Assert.isFalse(CollectionUtils.isEmpty(bigStorageCageOutTaskList), "鏈幏鍙栧嚭鐗囨暟鎹紝缁撴潫鍑虹墖浠诲姟"); - log.info("鑾峰彇鍑虹墖浠诲姟鏁版嵁{}鏉★紝鎵ц淇濆瓨", bigStorageCageOutTaskList.size()); - for (BigStorageCageOutTask bigStorageCageOutTask : bigStorageCageOutTaskList - ) { - bigStorageCageOutTaskService.save(bigStorageCageOutTask); - } +// //鏄惁鏈変汉宸ヤ笅鐗囦换鍔� 鏈夌洿鎺ュ嚭 +//// List<BigStorageCageDetails> artificialList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>() +//// .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL).orderByDesc(BigStorageCageDetails::getWidth)); +// List<BigStorageCageDetails> artificialList = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>() +// .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_ARTIFICIAL) +// .orderByAsc(BigStorageCageDetails::getSlot) +// .orderByDesc(BigStorageCageDetails::getId)); +// if (CollectionUtils.isNotEmpty(artificialList)) { +// computeOutMoreGlassInfo(artificialList, Boolean.FALSE, mesToPLCAddress); +// return; +// } +// //閽㈠寲浼樺厛锛氳幏鍙栫悊鐗囩 鐜荤拑灏忕墖 鐮存崯琛� 鏁伴噺 鍒ゆ柇绗煎唴鐗堝浘鏄惁鍒伴綈 +// List<TemperingLayoutDTO> temperingLayoutDTOList = bigStorageCageDetailsService.temperingIsAll(); +// if (CollectionUtils.isNotEmpty(temperingLayoutDTOList)) { +// //鐜荤拑鍒伴綈鍖呮嫭宸插嚭鐗囩殑 +// //鍒伴綈锛屽皢鐜荤拑灏忕墖鏁版嵁瀛樺叆閽㈠寲灏忕墖琛紝閫昏緫鐢熸垚鍑虹墖浠诲姟 缁撴潫 +// for (TemperingLayoutDTO item : temperingLayoutDTOList) { +// if (redisUtil.getCacheObject("temperingengineerId").equals(item.getEngineerId())) { +// List<TemperingGlassInfo> temperingGlassInfos = glassInfoService.selectJoinList(TemperingGlassInfo.class, JoinWrappers.lambda(GlassInfo.class) +// .selectAll(GlassInfo.class) +// .select("-1 as state") +// .selectAs(BigStorageCageDetails::getSlot, TemperingGlassInfo::getSlot) +// .innerJoin(BigStorageCageDetails.class, BigStorageCageDetails::getGlassId, GlassInfo::getGlassId) +// .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN) +// .eq(GlassInfo::getTemperingLayoutId, item.getTemperingLayoutId()) +// .eq(GlassInfo::getEngineerId, item.getEngineerId()) +// .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence)); +// if (CollectionUtils.isNotEmpty(temperingGlassInfos)) { +// temperingGlassInfoService.saveBatch(temperingGlassInfos); +// computeOutMoreGlassInfo(temperingGlassInfoList, Boolean.TRUE, mesToPLCAddress); +// return; +// } +// } +// } +// } +// } +// //鎵ц鍐呴儴璋冨害浠诲姟 +// List<TemperingLayoutDTO> temperingOccupySlotList = bigStorageCageDetailsService.queryTemperingOccupySlot(); +// if (CollectionUtils.isNotEmpty(temperingOccupySlotList)) { +// loop: +// for (TemperingLayoutDTO temperingOccupySlot : temperingOccupySlotList) { +// List<SlotSequenceDTO> slotSequenceList = bigStorageCageDetailsService.queryGlassMaxAndMin(temperingOccupySlot.getEngineerId(), temperingOccupySlot.getTemperingLayoutId()); +// for (int i = 0; i < slotSequenceList.size() - 1; i++) { +// SlotSequenceDTO first = slotSequenceList.get(i); +// SlotSequenceDTO second = slotSequenceList.get(i + 1); +// int slotWidth = carWidth - first.getRemainWidth() - glassGap; +// if (first.getMinSequence() == second.getMaxSequence() + 1 +// && second.getRemainWidth() > slotWidth && slotWidth >= 0) { +// List<BigStorageCageDetails> list = bigStorageCageDetailsService.list(new LambdaQueryWrapper<BigStorageCageDetails>() +// .eq(BigStorageCageDetails::getSlot, first.getSlot()).eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN) +// .orderBy(Boolean.TRUE, sequenceOrder, BigStorageCageDetails::getTemperingFeedSequence)); +// if (CollectionUtils.isNotEmpty(list)) { +// List<BigStorageCageOutTask> outTasks = new ArrayList<>(); +// int serialNumber = 1; +// for (BigStorageCageDetails item : list) { +// outTasks.add(new BigStorageCageOutTask(item.getGlassId(), first.getSlot(), second.getSlot(), +// item.getWidth() * 10, item.getHeight() * 10, 1, serialNumber++, Const.BIG_STORAGE_OUT_NEW, new Date())); +// } +// //鏂板璋冨害浠诲姟 +// bigStorageCageOutTaskService.saveBatch(outTasks); +// //鏇存柊鐞嗙墖绗艰鎯呰〃璋冨害鐨勫悗鐨勭幓鐠冧綅缃俊鎭細鐢熸垚浠诲姟鍚庡厛灏嗙幓鐠冩牸瀛愪綅缃繘琛岃皟鏁达紝鐜荤拑鐘舵�佹敼涓鸿皟搴︿腑锛屾柊澧炶皟搴﹀畬鎴愪换鍔★紝澶勭悊璋冨害瀹屾垚鍚庣幓鐠冪姸鎬佹敼涓�100. +// List<String> glassList = list.stream().map(BigStorageCageDetails::getGlassId).collect(Collectors.toList()); +// bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>().set(BigStorageCageDetails::getState, Const.GLASS_STATE_SCHEDULE_ING) +// .set(BigStorageCageBaseInfo::getSlot, second.getSlot()).in(BigStorageCageDetails::getGlassId, glassList)); +// //涓ゆ鏇存柊绗煎瓙鐨勫墿浣欏昂瀵革細绗竴娆¢槻姝㈡湁鐜荤拑缁х画杩涜皟搴﹀悗鐨勭瀛愶紝绗簩娆℃洿鏂帮細璁$畻鏍煎瓙鐨勫疄闄呭昂瀵� +// // 浠呮洿鏂拌皟搴﹀悗鐨勬牸瀛愪俊鎭細璧峰鏍煎瓙瀹屾垚鍚庢洿鏂帮細闃叉璋冨害鍑虹墖杩囩▼涓湁鏂扮幓鐠冭繘鍏ワ紝 +//// todo:涓存椂瑙e喅鎶ラ敊 +//// updateSlotRemainBySlots(Arrays.asList(second.getSlot())); +// break loop; +// } +// } +// } +// } +//// //鍚憄lc鍐欏叆纭瀛� +//// int returnData = 0; +//// int count = 1; +//// while (returnData == 0) { +//// log.info("宸插悜plc绗瑊}娆¢�佸崗璁�", count); +//// S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1); +//// returnData = S7object.getinstance().plccontrol.readWord(mesToPLCAddress, 1).get(0); +//// log.info("宸插悜plc绗瑊}娆″彂閫佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, mesToPLCAddress, returnData); +//// } +// return; +// } +// } +// +// +// /** +// * 纭瀛楁竻绌� +// */ +//// @Scheduled(fixedDelay = 300) +// public void confirmClear() { +// PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; +// String d01ToMES = plcParameterObject.getPlcParameter("D01ToMES").getValue(); +// String d04ToMES = plcParameterObject.getPlcParameter("D04ToMES").getValue(); +// String mesD01Address = plcParameterObject.getPlcParameter("MESToD01").getAddress(); +// String mesD04Address = plcParameterObject.getPlcParameter("MESToD04").getAddress(); +// String d03ToMES = plcParameterObject.getPlcParameter("D03ToMES").getValue(); +// String d05ToMES = plcParameterObject.getPlcParameter("D05ToMES").getValue(); +// String mesD03Address = plcParameterObject.getPlcParameter("MESToD03").getAddress(); +// String mesD05Address = plcParameterObject.getPlcParameter("MESToD05").getAddress(); +// if (!REQUEST_WORD.equals(d01ToMES)) { +// S7object.getinstance().plccontrol.writeWord(mesD01Address, 0); +// } +// if (!REQUEST_WORD.equals(d04ToMES)) { +// S7object.getinstance().plccontrol.writeWord(mesD04Address, 0); +// } +// if (!REQUEST_WORD.equals(d03ToMES)) { +// S7object.getinstance().plccontrol.writeWord(mesD03Address, 0); +// } +// if (!REQUEST_WORD.equals(d05ToMES)) { +// S7object.getinstance().plccontrol.writeWord(mesD05Address, 0); +// } +// } +// +// /** +// * 杩涚墖鐘舵�佷慨鏀� +// */ +//// @Scheduled(fixedDelay = 300) +// public void feedStatusUpdate() { +// PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; +// List<String> glassIds1 = new ArrayList<>(); +// List<String> glassIds2 = new ArrayList<>(); +// for (int i = 1; i <= 6; i++) { +// String line1GlassId = plcParameterObject.getPlcParameter("D03ID" + i).getValue(); +// if (StringUtils.isNotEmpty(line1GlassId)) { +// glassIds1.add(line1GlassId); +// } +// String line2GlassId = plcParameterObject.getPlcParameter("D05ID" + i).getValue(); +// if (StringUtils.isNotEmpty(line2GlassId)) { +// glassIds2.add(line2GlassId); +// } +// } +// List<BigStorageCageFeedTask> bigStorageCageFeedTasks1 = bigStorageCageFeedTaskService.list( +// new LambdaQueryWrapper<BigStorageCageFeedTask>() +// .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_NEW) +// .eq(BigStorageCageFeedTask::getLine, Const.A09_OUT_TARGET_POSITION) +// ); +// List<BigStorageCageFeedTask> bigStorageCageFeedTasks2 = bigStorageCageFeedTaskService.list( +// new LambdaQueryWrapper<BigStorageCageFeedTask>() +// .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_NEW) +// .eq(BigStorageCageFeedTask::getLine, Const.A10_OUT_TARGET_POSITION) +// ); +// if (CollectionUtils.isNotEmpty(bigStorageCageFeedTasks1) && CollectionUtils.isNotEmpty(glassIds1)) { +// List<String> matchingIds1 = bigStorageCageFeedTasks1.stream() +// .map(BigStorageCageFeedTask::getGlassId) +// .filter(glassIds1::contains) +// .distinct() +// .collect(Collectors.toList()); +// bigStorageCageFeedTaskService.update( +// new LambdaUpdateWrapper<BigStorageCageFeedTask>() +// .in(BigStorageCageFeedTask::getGlassId, matchingIds1) +// .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) +// .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) +// ); +// } +// if (CollectionUtils.isNotEmpty(bigStorageCageFeedTasks2) && CollectionUtils.isNotEmpty(glassIds2)) { +// List<String> matchingIds2 = bigStorageCageFeedTasks2.stream() +// .map(BigStorageCageFeedTask::getGlassId) +// .filter(glassIds2::contains) +// .distinct() +// .collect(Collectors.toList()); +// bigStorageCageFeedTaskService.update( +// new LambdaUpdateWrapper<BigStorageCageFeedTask>() +// .in(BigStorageCageFeedTask::getGlassId, matchingIds2) +// .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) +// .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) +// ); +// } +// if (CollectionUtils.isEmpty(glassIds1)) { +// bigStorageCageFeedTaskService.update( +// new LambdaUpdateWrapper<BigStorageCageFeedTask>() +// .eq(BigStorageCageFeedTask::getLine, Const.A09_OUT_TARGET_POSITION) +// .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) +// .gt(BigStorageCageFeedTask::getTargetSlot, 0) +// .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) +// .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_CAR) +// ); +// } +// if (CollectionUtils.isEmpty(glassIds2)) { +// bigStorageCageFeedTaskService.update( +// new LambdaUpdateWrapper<BigStorageCageFeedTask>() +// .eq(BigStorageCageFeedTask::getLine, Const.A10_OUT_TARGET_POSITION) +// .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) +// .gt(BigStorageCageFeedTask::getTargetSlot, 0) +// .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) +// .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_CAR) +// ); +// } +// } +// +// /** +// * 鎸夌収鐜荤拑id鍒ゆ柇鐜荤拑鐘舵�佸強鍗ц浆绔嬫槸鍚﹀彲鐩存帴鍚姩 +// */ +// public Boolean judgeGlassTypeStatus(String glassId, Integer line, String mesAddress) { +// //鍒ゆ柇姝ょ幓鐠冩槸鍦ㄧ鍐呮垨宸茬敓鎴愯繘鐗囦换鍔� +// BigStorageCageFeedTask bigStorageCageFeedTask = bigStorageCageFeedTaskService.getOne( +// new LambdaQueryWrapper<BigStorageCageFeedTask>() +// .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) +// .eq(BigStorageCageFeedTask::getGlassId, glassId) +// ); +// BigStorageCageDetails bigStorageCageDetails = bigStorageCageDetailsService.getOne( +// new LambdaQueryWrapper<BigStorageCageDetails>() +// .eq(BigStorageCageDetails::getGlassId, glassId) +// .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_IN) +// ); +// if (bigStorageCageFeedTask != null || bigStorageCageDetails != null) { +// log.info("姝ょ幓鐠冨瓨浠诲姟鎴栧凡鍦ㄧ鍐�"); +// return Boolean.TRUE; +// } +// //1銆佽幏鍙栦换鍔¤〃涓浉閭荤幓鐠� +// List<EdgGlassTaskInfo> edgGlassTaskInfoList; +// edgGlassTaskInfoList = edgGlassTaskInfoService.list(new LambdaQueryWrapper<EdgGlassTaskInfo>() +// .eq(EdgGlassTaskInfo::getLine, line) +// .apply("time >= (select time from edg_glass_task_info where line='" + line + "' and glass_id = '" + glassId + "' and deleted = 0)") +// .orderByAsc(EdgGlassTaskInfo::getCreateTime)); +// if (edgGlassTaskInfoList.size() == 0) { +// edgGlassTaskInfoList = edgGlassTaskInfoService.list(new QueryWrapper<EdgGlassTaskInfo>() +// .select("Top 1 *") +// .eq("glass_id", glassId) +// ); +// log.info("鍦ㄥ昂瀵歌〃涓幏鍙栫幓鐠冧俊鎭瘂}", edgGlassTaskInfoList); +// if (edgGlassTaskInfoList.size() == 0) { +// GlassInfo glassInfo = glassInfoService.getOne( +// new LambdaQueryWrapper<GlassInfo>() +// .eq(GlassInfo::getGlassId, glassId) +// ); +// EdgGlassTaskInfo edgGlassTaskInfo = new EdgGlassTaskInfo(); +// BeanUtils.copyProperties(glassInfo, edgGlassTaskInfo); +// edgGlassTaskInfo.setWidth((int) glassInfo.getWidth()); +// edgGlassTaskInfo.setHeight((int) glassInfo.getHeight()); +// edgGlassTaskInfoList.add(edgGlassTaskInfo); +// log.info("鍦ㄧ幓鐠冧俊鎭〃涓幏鍙栫幓鐠冧俊鎭瘂}", edgGlassTaskInfoList); +// } +// } +// Assert.isFalse(CollectionUtils.isEmpty(edgGlassTaskInfoList), "璇嗗埆鐜荤拑淇℃伅鏈嚭鐜板湪灏哄琛ㄤ腑,鑾峰彇鐩搁偦涓ゅ潡鐜荤拑澶辫触"); +// //2銆佽幏鍙栧崸杞珛鍓╀綑瀹藉害 +// BigStorageDTO sitToUpRemainWidth = bigStorageCageFeedTaskService.querySitToUpRemainWidth(line); +// Integer remainWidth; +// Integer glassCount; +// if (0 == sitToUpRemainWidth.getGlassCount()) { +// remainWidth = carWidth; +// glassCount = 0; +// } else { +// remainWidth = sitToUpRemainWidth.getWidth(); +// glassCount = sitToUpRemainWidth.getGlassCount(); +// } +// +// 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, heightFirst); +// } else { +// if (glassCount < inCarMaxSize + 1) { +// addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst, heightFirst); +// } else { +// return Boolean.FALSE; +// } +// } +// } 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, heightFirst); +// } else { +// if (glassCount < inCarMaxSize + 1) { +// addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst, heightFirst); +// } else { +// return Boolean.FALSE; +// } +// } +// } else { +// if (glassCount < inCarMaxSize + 1) { +// addFeedTask(glassId, line, Const.BIG_STORAGE_IN_RUN, widthFirst, heightFirst); +// } else { +// return Boolean.FALSE; +// } +// } +// } else { +// flag = Boolean.FALSE; +// } +// } +// //鍚憄lc鍙戦�佽繘鐗囩‘璁� +// if (flag) { +// //鍚憄lc鍐欏叆纭瀛� +// PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; +// int returnData = 1; +// int count = 1; +// while (returnData != 0) { +// S7object.getinstance().plccontrol.writeWord(mesAddress, 1); +// +// if (Const.A10_OUT_TARGET_POSITION.equals(line)) { +// returnData = Integer.parseInt(plcParameterObject.getPlcParameter("D04ToMES").getValue()); +// } else { +// returnData = Integer.parseInt(plcParameterObject.getPlcParameter("D01ToMES").getValue()); +// } +//// returnData = S7object.getinstance().plccontrol.readWord(mesAddress, 1).get(0); +// log.info("杩涘崸杞珛绗瑊}娆″彂閫佺‘璁ゅ瓧瀹屾垚锛屽湴鍧�涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, mesAddress, 1); +// } +// } +// //璁板綍鏃犳硶鏀句笅鐜荤拑锛屽悗缁垽鏂惎鍔� +// return flag; +// } +// +// /** +// * 娣诲姞浠诲姟淇℃伅 +// */ +// 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()); +// //鍒犻櫎鐞嗙墖绗艰〃鎷胯蛋/鐮存崯鏁版嵁鏁版嵁 +// damageService.deleteByGlassId(glassId); +// Damage damage = new Damage(); +// damage.setGlassId(glassId); +// damage.setWorkingProcedure("纾ㄨ竟"); +// damage.setLine(line); +// damage.setType(1); +// damage.setRemark("杩涘ぇ鐞嗙墖"); +// damageService.insertDamage(damage); +// return bigStorageCageFeedTaskService.save(bigStorageCageFeedTask); +// } +// +// /** +// * 鑾峰彇闇�瑕佸惎鍔ㄧ殑绾胯矾锛氫袱鏉$嚎閮藉彲鍚姩 鑾峰彇绗竴鐗囩幓鐠冪増鍥緄d鏈�灏� 鐗堝簭鏈�澶х殑绾胯矾 +// * +// * @return 闇�瑕佸惎鍔ㄧ殑绾胯矾 +// */ +// public Integer getStartLine() { +// List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>() +// .inSql(BigStorageCageFeedTask::getId, "select min(id) from big_storage_cage_feed_task where task_state = 2" + +// "and (target_slot = 0 or target_slot is null) group by line")); +// Assert.isFalse(CollectionUtils.isEmpty(taskList), "鍗ц浆绔嬩袱鏉$嚎閮芥病鏈夌幓鐠冭繘鐗囦换鍔�"); +// Map<String, Integer> taskMap = taskList.stream().collect(Collectors.toMap(BigStorageCageFeedTask::getGlassId, +// BigStorageCageFeedTask::getLine)); +// GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>() +// .in(GlassInfo::getGlassId, taskMap.keySet()) +// .orderByAsc(GlassInfo::getTemperingLayoutId) +// .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence) +// .last("limit 1")); +// return taskMap.get(glassInfo.getGlassId()); +// } +// +// /** +// * 璁$畻浠诲姟琛ㄨ繘鐗囩嚎璺殑鐩爣鏍煎瓙锛屽苟鍚姩浠诲姟 +// */ +// public boolean computeTargetByLine(Integer line) { +// //1銆佽幏鍙栦换鍔¤〃涓殑鎵�鏈夌幓鐠冿紙鎸囧畾绾胯矾涓斿凡缁忚繘鍗ц浆绔嬪畬鎴愶級 +// List<BigStorageCageFeedTask> taskList = bigStorageCageFeedTaskService.list(new LambdaQueryWrapper<BigStorageCageFeedTask>() +// .eq(BigStorageCageFeedTask::getLine, line) +// .and(e -> e.isNull(BigStorageCageFeedTask::getTargetSlot).or().eq(BigStorageCageFeedTask::getTargetSlot, Const.OUT_TARGET_POSITION_ZERO)) +// .in(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP_ALL) +// .orderByAsc(BigStorageCageFeedTask::getId)); +// //2銆佸幓绗煎瓙鍐呮煡鎵炬槸鍚﹀彲浠ョ户缁瓨鏀剧殑绗煎瓙 +// List<String> glassIds = taskList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList()); +// List<GlassInfo> glassInfos = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>().in(GlassInfo::getGlassId, glassIds)); +// return computeIsTemperingTargetByLine(glassInfos, taskList); +// } +// +// /** +// * 鏄惁閽㈠寲鐜荤拑杩涚鐩爣浣嶇疆 +// * +// * @param glassInfos 褰撴潯绾垮崸杞珛鎵�鏈夌幓鐠� +// * @param taskList 褰撴潯绾垮崸杞珛鎵�鏈変换鍔� +// */ +// private boolean computeIsTemperingTargetByLine(List<GlassInfo> glassInfos, List<BigStorageCageFeedTask> taskList) { +// //1銆佸皢鐜荤拑淇℃伅闆嗗悎杞负glassid涓簁ey鐨刴ap +// Map<String, GlassInfo> glassInfoMap = glassInfos.stream() +// .collect(Collectors.toMap(GlassInfo::getGlassId, p -> p)); +// for (BigStorageCageFeedTask e : taskList) { +// GlassInfo info = glassInfoMap.get(e.getGlassId()); +// if (info == null) { +// continue; +// } +// BigStorageCageDetails cageDetails = new BigStorageCageDetails(); +// BeanUtils.copyProperties(info, cageDetails); +// //todo:2銆佽幏鍙栫洰鏍囨牸瀛愪俊鎭� +// BigStorageDTO bigStorageDTO = bigStorageCageDetailsService.queryTargetSlotByTempering(info); +// //3銆佷复鏃舵洿鏂版牸瀛愮殑鍓╀綑灏哄锛氶槻姝㈢浉閭荤幓鐠冭繘鍚屼竴鏍煎瓙閫犳垚鍓╀綑灏哄涓嶈冻锛岀幓鐠冭秺鐣岀殑鎯呭喌锛屼换鍔″畬鎴愬悗鍐嶆鏇存柊澶х悊鐗囩琛ㄥ墿浣欏搴︼紙鎸夌収绗煎唴鐜荤拑鏁伴噺鏇存柊澶х悊鐗囩鍓╀綑灏哄锛� +// bigStorageCageService.update(new LambdaUpdateWrapper<BigStorageCage>().set(BigStorageCage::getRemainWidth, bigStorageDTO.getWidth() - Math.max(info.getWidth(), info.getHeight()) - glassGap) +// .eq(BigStorageCage::getSlot, bigStorageDTO.getSlot())); +// //4銆佹洿鏂拌繘鐗囦换鍔¤〃锛岀洰鏍囨牸瀛愬強鐘舵�侊紙鐘舵�佹敼涓�2 鐢垫皵鎵埌鑷澶勭悊锛� 閬囧埌闂锛氭棤娉曟壒閲忔洿鏂帮紝鎵归噺鏇存柊鏃犳硶璧版寚瀹氫粠搴� +// e.setTargetSlot(bigStorageDTO.getSlot()); +// bigStorageCageFeedTaskService.updateById(e); +// +// //5銆佸皢杩涚墖淇℃伅瀛樺叆澶х悊鐗囩璇︽儏琛� +// cageDetails.setSlot(bigStorageDTO.getSlot()); +// cageDetails.setState(Const.GLASS_STATE_NEW); +// cageDetails.setDeviceId(bigStorageDTO.getDeviceId()); +// cageDetails.setGap(glassGap); +// bigStorageCageDetailsService.save(cageDetails); +// +// } +// return Boolean.TRUE; +// } +// +// private void sendTaskListToPLC(List<BigStorageCageFeedTask> taskList, Integer line) { +// log.info("閫佺墖浠诲姟鍙戦�佽繘鐗囩幓鐠冧俊鎭�"); +// S7control s7control = S7object.getinstance().plccontrol; +// PlcParameterObject plcMesObject = S7object.getinstance().PlcMesObject; +// String mesD03Address = plcMesObject.getPlcParameter("MESToD03").getAddress(); +// String mesD05Address = plcMesObject.getPlcParameter("MESToD05").getAddress(); +// String outLine = line.equals(Const.A09_OUT_TARGET_POSITION) ? mesD03Address : mesD05Address; +// for (int i = 1; i <= taskList.size(); i++) { +// s7control.writeWord(plcMesObject.getPlcParameter("StartAddToImport" + i).getAddress(), taskList.get(i - 1).getLine()); +// s7control.writeWord(plcMesObject.getPlcParameter("TargetAddToImport" + i).getAddress(), taskList.get(i - 1).getTargetSlot()); +// log.info("鍚憄lc鍙戦�佺{}鐗囩幓鐠冨凡瀹屾垚,璧峰浣嶇疆鏄瘂}锛岀洰鏍囦綅缃槸", i, taskList.get(i - 1).getLine(), taskList.get(i - 1).getTargetSlot()); +// } +// int returnData = 1; +// int count = 1; +// while (returnData != 0) { +// s7control.writeWord(outLine, 2); +// if (line.equals(Const.A09_OUT_TARGET_POSITION)) { +// returnData = Integer.parseInt(plcMesObject.getPlcParameter("D03ToMES").getValue()); +// } else { +// returnData = Integer.parseInt(plcMesObject.getPlcParameter("D05ToMES").getValue()); +// } +//// returnData = s7control.readWord(outLine, 1).get(0); +// log.info("宸插悜plc绗瑊}娆″彂閫佽繘鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, outLine, 2); +// } +// } +// +// /** +// * 鍑虹墖涓�娆′粎鐢熸垚涓�杞︾幓鐠� +// * +// * @param list +// * @param isTempering +// * @param mesToPLCAddress +// * @param <T> +// * @return +// */ +// private <T extends BigStorageCageBaseInfo> Boolean computeOutGlassInfo(List<T> list, Boolean isTempering, String mesToPLCAddress) { +// //浠诲姟鏁版嵁 鑾峰彇杞﹀瓙瀛樻斁鐜荤拑鏈�澶ф暟閲� 鐜荤拑闂撮殧 +// List<BigStorageCageOutTask> bigStorageCageOutTaskList = new ArrayList<>(); +// //鎵撹溅鍓╀綑灏哄 +// Integer remainWidth = carWidth; +// int maxX = 0; +// for (T e : list) { +// if (bigStorageCageOutTaskList.size() >= outCarMaxSize || Math.max((int) e.getWidth(), (int) e.getHeight()) > remainWidth) { +// break; +// } +// remainWidth = remainWidth - Math.max((int) e.getWidth(), (int) e.getHeight()) - glassGap; +// if (isTempering) { +// int minLength = Math.min((int) e.getWidth(), (int) e.getHeight()); +// if (maxX + minLength <= xMaxSize) { +// bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.TEMPERING_OUT_TARGET_POSITION, +// e.getWidth() * 10, e.getHeight() * 10, 0, 0, 1, new Date())); +//// maxX = Math.max(maxX, e.getXCoordinate()); +// } else { +// break; +// } +// +// } else { +// bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.ARTIFICIAL_OUT_TARGET_POSITION, +// e.getWidth() * 10, e.getHeight(), 0, 0, 1, new Date())); +// } +// } +// Assert.isFalse(CollectionUtils.isEmpty(bigStorageCageOutTaskList), "鏈幏鍙栧嚭鐗囨暟鎹紝缁撴潫鍑虹墖浠诲姟"); +// log.info("鑾峰彇鍑虹墖浠诲姟鏁版嵁{}鏉★紝鎵ц淇濆瓨", bigStorageCageOutTaskList.size()); // bigStorageCageOutTaskService.saveBatch(bigStorageCageOutTaskList); - List<String> glassIds = bigStorageCageOutTaskList.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList()); - log.info("灏嗗嚭鐗囩幓鐠儃}鐜荤拑鐘舵�佹敼涓哄凡鍑虹墖", glassIds); - bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>() - .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING) - .in(BigStorageCageDetails::getGlassId, glassIds) - .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT)); - - return Boolean.TRUE; - } - - private BigStorageDTO queryTargetSlotByTempering(GlassInfo glassInfo) { - - MPJLambdaWrapper<BigStorageCage> wrapper = new MPJLambdaWrapper<>(BigStorageCage.class) - .selectAll(BigStorageCage.class) - .leftJoin(BigStorageCageDetails.class, BigStorageCageDetails::getSlot, BigStorageCage::getSlot) - .eq(BigStorageCage::getEnableState, Const.SLOT_ON) - .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL_ZERO) - .eq(BigStorageCageDetails::getEngineerId, glassInfo.getEngineerId()) - .eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId()) - .gt(BigStorageCage::getRemainWidth, Math.max(glassInfo.getWidth(), glassInfo.getHeight())) - .last("limit 1"); - if (glassInfo.getTemperingLayoutId() == 0) { - wrapper.eq(BigStorageCageDetails::getFlowCardId, glassInfo.getFlowCardId()) - .eq(BigStorageCageDetails::getLayer, glassInfo.getLayer()); -// wrapper.eq(BigStorageCageDetails::getWidth, glassInfo.getWidth()).eq(BigStorageCageDetails::getHeight, glassInfo.getHeight()); - } else { - wrapper.eq(BigStorageCageDetails::getTemperingFeedSequence, glassInfo.getTemperingFeedSequence() + 1); - } - BigStorageCage bigStorageCage = bigStorageCageService.selectJoinOne(BigStorageCage.class, wrapper); - return null; - } - - // @Scheduled(fixedDelay = 300) - public void querySizeByEngineerTask() { - log.info("鏌ヨ缁撴灉锛歿}", querySizeByEngineer("P24072402", 1, 10, 8)); - log.info("鏌ヨ缁撴灉锛歿}", querySizeByEngineer("P24072402", 1, 5, 8)); - - } - - public BigStorageDTO querySizeByEngineer(String engineerId, int temperingLayoutId, int temperingFeedSequence, double thickness) { - BigStorageDTO bigStorageDTO = null; - BigStorageCage bigStorageCage = null; - //鑾峰彇绗煎唴褰撳墠鐗堝浘姣忎釜鏍煎瓙宸叉湁鐜荤拑鐨勬渶灏忕増搴� 鑾峰彇绗煎唴褰撳墠鐗堝浘鐨勬墍鏈夌幓鐠冧俊鎭� - List<BigStorageCageDetails> cageDetailsList = bigStorageCageDetailsService.list(new QueryWrapper<BigStorageCageDetails>() - .select("slot", "min(tempering_feed_sequence) as tempering_feed_sequence") - .eq("engineer_id", engineerId).eq("tempering_layout_id", temperingLayoutId) - .in("state", Const.GLASS_STATE_IN_ALL_ZERO).groupBy("slot").orderByAsc("min(tempering_feed_sequence)")); - if (CollectionUtils.isNotEmpty(cageDetailsList)) { - Integer minLength = cageDetailsList.stream().filter(e -> e.getTemperingFeedSequence() > temperingFeedSequence) - .mapToInt(BigStorageCageDetails::getTemperingFeedSequence).min().orElse(1000); - List<GlassInfo> infoList = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>() - .notInSql(GlassInfo::getGlassId, "select glass_id from damage where tempering_layout_id = " + temperingLayoutId + " and engineer_id = '" + engineerId + "'") - .eq(GlassInfo::getTemperingLayoutId, temperingLayoutId).eq(GlassInfo::getEngineerId, engineerId).orderByAsc(GlassInfo::getTemperingFeedSequence)); - int remainWidth = carWidth; - int trainNumber = 1; - int serialNumber = 0; - int min = 0; - int temp = infoList.get(0).getTemperingFeedSequence(); - int slot = 0; - int resultTrainNumber = 0; - for (GlassInfo e : infoList) { - int maxLength = Math.max((int) e.getWidth(), (int) e.getHeight()); - if (serialNumber >= outCarMaxSize || maxLength > remainWidth || e.getTemperingFeedSequence() >= minLength) { - if (resultTrainNumber != 0) { - min = temp; - break; - } - temp = e.getTemperingFeedSequence(); - remainWidth = carWidth; - trainNumber = trainNumber + 1; - serialNumber = 0; - } - if (temperingFeedSequence == e.getTemperingFeedSequence()) { - resultTrainNumber = trainNumber; - } - remainWidth = remainWidth - maxLength - glassGap > 0 ? remainWidth - maxLength - glassGap : 0; - serialNumber += 1; - log.info("{},{},{}", trainNumber, remainWidth, serialNumber); - if (e.getTemperingFeedSequence().equals(infoList.get(infoList.size() - 1).getTemperingFeedSequence())) { - min = temp; - } - } - for (BigStorageCageDetails item : cageDetailsList) { - if (min <= item.getTemperingFeedSequence() && item.getTemperingFeedSequence() < minLength) { - slot = item.getSlot(); - bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() - .eq(BigStorageCage::getSlot, slot).eq(BigStorageCage::getEnableState, Const.SLOT_ON)); - break; - } - } - } - - if (bigStorageCage != null) { - bigStorageDTO = new BigStorageDTO(); - bigStorageDTO.setWidth(bigStorageCage.getRemainWidth()); - bigStorageDTO.setSlot(bigStorageCage.getSlot()); - bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId()); - return bigStorageDTO; - } - - bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() - .eq(BigStorageCage::getEnableState, Const.SLOT_ON) - .eq(BigStorageCage::getRemainWidth, slotWidth).orderByAsc(BigStorageCage::getSlot) - .inSql(BigStorageCage::getDeviceId, - "select distinct device_id from big_storage_cage_details where engineer_id = '" + engineerId + "' and tempering_layout_id = " + temperingLayoutId) - .last("limit 1")); - if (null != bigStorageCage) { - log.info("鏍规嵁鐗堝浘id鎵惧埌绗煎瓙鍐呯殑鐩爣鏍煎瓙锛歿}", bigStorageCage.getSlot()); - bigStorageDTO = new BigStorageDTO(); - bigStorageDTO.setWidth(bigStorageCage.getRemainWidth()); - bigStorageDTO.setSlot(bigStorageCage.getSlot()); - bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId()); - return bigStorageDTO; - - } - - //鑾峰彇鐜荤拑鐨勫帤搴︼細閲嶆柊閫夌瀛愰渶瑕佹寜鐓х瀛愬彲鏀剧幓鐠冨帤搴﹁繘琛岄�夋嫨 鍥犱负瀛愭煡璇㈡帓搴忓涓籹ql鏃犲奖鍝嶏紝鎵�浠ュ厛鎵ц瀛愭煡璇㈣幏鍙栭『搴忥紝鐒跺悗涓�娆″幓鏌ヨ - List<Integer> deviceUsedList = bigStorageCageService.queryFreeDeviceByUsed(thickness); - for (Integer item : deviceUsedList) { - bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() - .eq(BigStorageCage::getRemainWidth, slotWidth).orderByAsc(BigStorageCage::getSlot) - .eq(BigStorageCage::getEnableState, Const.SLOT_ON) - .eq(BigStorageCage::getDeviceId, item) - .last("limit 1")); - if (null != bigStorageCage) { - log.info("鎸夌収瀛樼鐜荤拑鏍煎瓙鏁板崰鐢ㄦ渶灏戞柟寮忚幏鍙栦俊鎭牸瀛愪负锛歿}", bigStorageCage.getSlot()); - bigStorageDTO = new BigStorageDTO(); - bigStorageDTO.setWidth(bigStorageCage.getRemainWidth()); - bigStorageDTO.setSlot(bigStorageCage.getSlot()); - bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId()); - return bigStorageDTO; - } - } - Assert.isTrue(null != bigStorageCage, "娌℃湁绌轰綑鐨勭瀛愬瓨鏀剧幓鐠�"); - return bigStorageDTO; - } - -} +// List<String> glassIds = bigStorageCageOutTaskList.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList()); +// log.info("灏嗗嚭鐗囩幓鐠儃}鐜荤拑鐘舵�佹敼涓哄凡鍑虹墖", glassIds); +// bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>() +// .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING) +// .in(BigStorageCageDetails::getGlassId, glassIds)); +// int returnData = 0; +// int count = 1; +// while (returnData == 0) { +// S7object.getinstance().plccontrol.writeWord(mesToPLCAddress, 1); +// returnData = S7object.getinstance().plccontrol.readWord(mesToPLCAddress, 1).get(0); +// log.info("宸插悜plc绗瑊}娆″彂閫佸嚭鐗囦换鍔$‘璁わ紝鍦板潃涓猴細{},鍐欏叆鐨勫唴瀹逛负{}", count++, mesToPLCAddress, returnData); +// } +// return Boolean.TRUE; +// } +// +// /** +// * 鍑虹墖涓�娆$敓鎴愪竴鐐夌幓鐠� +// * +// * @param list +// * @param isTempering +// * @param mesToPLCAddress +// * @param <T> +// * @return +// */ +// public <T extends BigStorageCageBaseInfo> Boolean computeOutMoreGlassInfo(List<T> list, Boolean isTempering, String mesToPLCAddress) { +// //浠诲姟鏁版嵁 鑾峰彇杞﹀瓙瀛樻斁鐜荤拑鏈�澶ф暟閲� 鐜荤拑闂撮殧 +// List<BigStorageCageOutTask> bigStorageCageOutTaskList = new ArrayList<>(); +// //鎵撹溅鍓╀綑灏哄 +// Integer remainWidth = carWidth; +// int trainNumber = 1; +// int serialNumber = 1; +// int maxX = 0; +// for (T e : list) { +// int maxLength = Math.max((int) e.getWidth(), (int) e.getHeight()); +// if (serialNumber > outCarMaxSize || maxLength > remainWidth) { +// remainWidth = carWidth; +// trainNumber = trainNumber + 1; +// serialNumber = 1; +// maxX = 0; +// } +// remainWidth = remainWidth - maxLength - glassGap; +// if (isTempering) { +// int minLength = Math.min((int) e.getWidth(), (int) e.getHeight()); +// if (maxX + minLength <= xMaxSize) { +// bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.TEMPERING_OUT_TARGET_POSITION, +// e.getWidth() * 10, e.getHeight() * 10, trainNumber, serialNumber++, 1, new Date())); +//// maxX = Math.max(maxX, e.getXCoordinate()); +// } else { +// remainWidth = carWidth - maxLength - glassGap; +// trainNumber = trainNumber + 1; +// serialNumber = 1; +//// maxX = e.getXCoordinate(); +// bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.TEMPERING_OUT_TARGET_POSITION, +// e.getWidth() * 10, e.getHeight(), trainNumber, serialNumber++, 1, new Date())); +// } +// } else { +// bigStorageCageOutTaskList.add(new BigStorageCageOutTask(e.getGlassId(), e.getSlot(), Const.ARTIFICIAL_OUT_TARGET_POSITION, +// e.getWidth() * 10, e.getHeight(), trainNumber, serialNumber++, 1, new Date())); +// } +// } +// Assert.isFalse(CollectionUtils.isEmpty(bigStorageCageOutTaskList), "鏈幏鍙栧嚭鐗囨暟鎹紝缁撴潫鍑虹墖浠诲姟"); +// log.info("鑾峰彇鍑虹墖浠诲姟鏁版嵁{}鏉★紝鎵ц淇濆瓨", bigStorageCageOutTaskList.size()); +// for (BigStorageCageOutTask bigStorageCageOutTask : bigStorageCageOutTaskList +// ) { +// bigStorageCageOutTaskService.save(bigStorageCageOutTask); +// } +//// bigStorageCageOutTaskService.saveBatch(bigStorageCageOutTaskList); +// List<String> glassIds = bigStorageCageOutTaskList.stream().map(BigStorageCageOutTask::getGlassId).collect(Collectors.toList()); +// log.info("灏嗗嚭鐗囩幓鐠儃}鐜荤拑鐘舵�佹敼涓哄凡鍑虹墖", glassIds); +// bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>() +// .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING) +// .in(BigStorageCageDetails::getGlassId, glassIds) +// .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT)); +// +// return Boolean.TRUE; +// } +// +// private BigStorageDTO queryTargetSlotByTempering(GlassInfo glassInfo) { +// +// MPJLambdaWrapper<BigStorageCage> wrapper = new MPJLambdaWrapper<>(BigStorageCage.class) +// .selectAll(BigStorageCage.class) +// .leftJoin(BigStorageCageDetails.class, BigStorageCageDetails::getSlot, BigStorageCage::getSlot) +// .eq(BigStorageCage::getEnableState, Const.SLOT_ON) +// .in(BigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL_ZERO) +// .eq(BigStorageCageDetails::getEngineerId, glassInfo.getEngineerId()) +// .eq(BigStorageCageDetails::getTemperingLayoutId, glassInfo.getTemperingLayoutId()) +// .gt(BigStorageCage::getRemainWidth, Math.max(glassInfo.getWidth(), glassInfo.getHeight())) +// .last("limit 1"); +// if (glassInfo.getTemperingLayoutId() == 0) { +// wrapper.eq(BigStorageCageDetails::getFlowCardId, glassInfo.getFlowCardId()) +// .eq(BigStorageCageDetails::getLayer, glassInfo.getLayer()); +//// wrapper.eq(BigStorageCageDetails::getWidth, glassInfo.getWidth()).eq(BigStorageCageDetails::getHeight, glassInfo.getHeight()); +// } else { +// wrapper.eq(BigStorageCageDetails::getTemperingFeedSequence, glassInfo.getTemperingFeedSequence() + 1); +// } +// BigStorageCage bigStorageCage = bigStorageCageService.selectJoinOne(BigStorageCage.class, wrapper); +// return null; +// } +// +// // @Scheduled(fixedDelay = 300) +// public void querySizeByEngineerTask() { +// log.info("鏌ヨ缁撴灉锛歿}", querySizeByEngineer("P24072402", 1, 10, 8)); +// log.info("鏌ヨ缁撴灉锛歿}", querySizeByEngineer("P24072402", 1, 5, 8)); +// +// } +// +// public BigStorageDTO querySizeByEngineer(String engineerId, int temperingLayoutId, int temperingFeedSequence, double thickness) { +// BigStorageDTO bigStorageDTO = null; +// BigStorageCage bigStorageCage = null; +// //鑾峰彇绗煎唴褰撳墠鐗堝浘姣忎釜鏍煎瓙宸叉湁鐜荤拑鐨勬渶灏忕増搴� 鑾峰彇绗煎唴褰撳墠鐗堝浘鐨勬墍鏈夌幓鐠冧俊鎭� +// List<BigStorageCageDetails> cageDetailsList = bigStorageCageDetailsService.list(new QueryWrapper<BigStorageCageDetails>() +// .select("slot", "min(tempering_feed_sequence) as tempering_feed_sequence") +// .eq("engineer_id", engineerId).eq("tempering_layout_id", temperingLayoutId) +// .in("state", Const.GLASS_STATE_IN_ALL_ZERO).groupBy("slot").orderByAsc("min(tempering_feed_sequence)")); +// if (CollectionUtils.isNotEmpty(cageDetailsList)) { +// Integer minLength = cageDetailsList.stream().filter(e -> e.getTemperingFeedSequence() > temperingFeedSequence) +// .mapToInt(BigStorageCageDetails::getTemperingFeedSequence).min().orElse(1000); +// List<GlassInfo> infoList = glassInfoService.list(new LambdaQueryWrapper<GlassInfo>() +// .notInSql(GlassInfo::getGlassId, "select glass_id from damage where tempering_layout_id = " + temperingLayoutId + " and engineer_id = '" + engineerId + "'") +// .eq(GlassInfo::getTemperingLayoutId, temperingLayoutId).eq(GlassInfo::getEngineerId, engineerId).orderByAsc(GlassInfo::getTemperingFeedSequence)); +// int remainWidth = carWidth; +// int trainNumber = 1; +// int serialNumber = 0; +// int min = 0; +// int temp = infoList.get(0).getTemperingFeedSequence(); +// int slot = 0; +// int resultTrainNumber = 0; +// for (GlassInfo e : infoList) { +// int maxLength = Math.max((int) e.getWidth(), (int) e.getHeight()); +// if (serialNumber >= outCarMaxSize || maxLength > remainWidth || e.getTemperingFeedSequence() >= minLength) { +// if (resultTrainNumber != 0) { +// min = temp; +// break; +// } +// temp = e.getTemperingFeedSequence(); +// remainWidth = carWidth; +// trainNumber = trainNumber + 1; +// serialNumber = 0; +// } +// if (temperingFeedSequence == e.getTemperingFeedSequence()) { +// resultTrainNumber = trainNumber; +// } +// remainWidth = remainWidth - maxLength - glassGap > 0 ? remainWidth - maxLength - glassGap : 0; +// serialNumber += 1; +// log.info("{},{},{}", trainNumber, remainWidth, serialNumber); +// if (e.getTemperingFeedSequence().equals(infoList.get(infoList.size() - 1).getTemperingFeedSequence())) { +// min = temp; +// } +// } +// for (BigStorageCageDetails item : cageDetailsList) { +// if (min <= item.getTemperingFeedSequence() && item.getTemperingFeedSequence() < minLength) { +// slot = item.getSlot(); +// bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() +// .eq(BigStorageCage::getSlot, slot).eq(BigStorageCage::getEnableState, Const.SLOT_ON)); +// break; +// } +// } +// } +// +// if (bigStorageCage != null) { +// bigStorageDTO = new BigStorageDTO(); +// bigStorageDTO.setWidth(bigStorageCage.getRemainWidth()); +// bigStorageDTO.setSlot(bigStorageCage.getSlot()); +// bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId()); +// return bigStorageDTO; +// } +// +// bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() +// .eq(BigStorageCage::getEnableState, Const.SLOT_ON) +// .eq(BigStorageCage::getRemainWidth, slotWidth).orderByAsc(BigStorageCage::getSlot) +// .inSql(BigStorageCage::getDeviceId, +// "select distinct device_id from big_storage_cage_details where engineer_id = '" + engineerId + "' and tempering_layout_id = " + temperingLayoutId) +// .last("limit 1")); +// if (null != bigStorageCage) { +// log.info("鏍规嵁鐗堝浘id鎵惧埌绗煎瓙鍐呯殑鐩爣鏍煎瓙锛歿}", bigStorageCage.getSlot()); +// bigStorageDTO = new BigStorageDTO(); +// bigStorageDTO.setWidth(bigStorageCage.getRemainWidth()); +// bigStorageDTO.setSlot(bigStorageCage.getSlot()); +// bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId()); +// return bigStorageDTO; +// +// } +// +// //鑾峰彇鐜荤拑鐨勫帤搴︼細閲嶆柊閫夌瀛愰渶瑕佹寜鐓х瀛愬彲鏀剧幓鐠冨帤搴﹁繘琛岄�夋嫨 鍥犱负瀛愭煡璇㈡帓搴忓涓籹ql鏃犲奖鍝嶏紝鎵�浠ュ厛鎵ц瀛愭煡璇㈣幏鍙栭『搴忥紝鐒跺悗涓�娆″幓鏌ヨ +// List<Integer> deviceUsedList = bigStorageCageService.queryFreeDeviceByUsed(thickness); +// for (Integer item : deviceUsedList) { +// bigStorageCage = bigStorageCageService.getOne(new LambdaQueryWrapper<BigStorageCage>() +// .eq(BigStorageCage::getRemainWidth, slotWidth).orderByAsc(BigStorageCage::getSlot) +// .eq(BigStorageCage::getEnableState, Const.SLOT_ON) +// .eq(BigStorageCage::getDeviceId, item) +// .last("limit 1")); +// if (null != bigStorageCage) { +// log.info("鎸夌収瀛樼鐜荤拑鏍煎瓙鏁板崰鐢ㄦ渶灏戞柟寮忚幏鍙栦俊鎭牸瀛愪负锛歿}", bigStorageCage.getSlot()); +// bigStorageDTO = new BigStorageDTO(); +// bigStorageDTO.setWidth(bigStorageCage.getRemainWidth()); +// bigStorageDTO.setSlot(bigStorageCage.getSlot()); +// bigStorageDTO.setDeviceId(bigStorageCage.getDeviceId()); +// return bigStorageDTO; +// } +// } +// Assert.isTrue(null != bigStorageCage, "娌℃湁绌轰綑鐨勭瀛愬瓨鏀剧幓鐠�"); +// return bigStorageDTO; +// } +// +//} -- Gitblit v1.8.0