hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/controller/HollowGlassOutRelationInfoController.java
@@ -29,6 +29,11 @@ public Result<HollowGlassOutRelationInfo> receiveTask(String flowCardId, int cell, int totalPairQuantity) { return Result.success(hollowGlassOutRelationInfoService.receiveTask(flowCardId, cell, totalPairQuantity)); } @ApiOperation("强制出片") @PostMapping("/forceOutGlass") public Result<HollowGlassOutRelationInfo> forceOutGlass(String flowCardId, int cell, int totalPairQuantity) { return Result.success(hollowGlassOutRelationInfoService.forceOutGlass(flowCardId, cell, totalPairQuantity)); } } hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/entity/HollowGlassOutRelationInfo.java
@@ -43,6 +43,11 @@ * 已完成配对数量 */ private Integer pairQuantity; /** * 是否强制 */ private Integer isForce; /** * /*创建时间 */ @@ -55,3 +60,4 @@ } hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/service/HollowGlassOutRelationInfoService.java
@@ -12,5 +12,7 @@ public interface HollowGlassOutRelationInfoService extends IService<HollowGlassOutRelationInfo> { HollowGlassOutRelationInfo receiveTask(String flowCardId, int cell, int totalPairQuantity); HollowGlassOutRelationInfo forceOutGlass(String flowCardId, int cell, int totalPairQuantity); } hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassOutRelationInfoServiceImpl.java
@@ -5,13 +5,21 @@ import com.mes.common.config.Const; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.service.GlassInfoService; import com.mes.hollow.entity.HollowBigStorageCageDetails; import com.mes.hollow.entity.HollowGlassOutRelationInfo; import com.mes.hollow.mapper.HollowGlassOutRelationInfoMapper; import com.mes.hollow.service.HollowBigStorageCageDetailsService; import com.mes.hollow.service.HollowGlassOutRelationInfoService; import com.mes.hollowqueue.entity.HollowGlassQueueInfo; import com.mes.hollowqueue.service.HollowGlassQueueInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; /** * (HollowGlassOutRelationInfo)表服务实现类 @@ -25,9 +33,23 @@ @Resource GlassInfoService glassInfoService; @Resource HollowBigStorageCageDetailsService hollowBigStorageCageDetailsService; @Resource HollowGlassQueueInfoService hollowGlassQueueInfoService; @Override public HollowGlassOutRelationInfo receiveTask(String flowCardId, int cell, int totalPairQuantity) { return childrenTask(flowCardId,cell,totalPairQuantity,0); } @Override public HollowGlassOutRelationInfo forceOutGlass(String flowCardId, int cell, int totalPairQuantity) { return childrenTask(flowCardId,cell,totalPairQuantity,1); } private HollowGlassOutRelationInfo childrenTask(String flowCardId, int cell, int totalPairQuantity,int isForce) { GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getFlowCardId, flowCardId).last("limit 1")); HollowGlassOutRelationInfo info = new HollowGlassOutRelationInfo(); if (null == glassInfo) { @@ -36,11 +58,29 @@ } info.setFlowCardId(flowCardId); info.setCell(cell); info.setIsForce(isForce); info.setTotalLayer(glassInfo.getTotalLayer()); info.setTotalLayer(glassInfo.getTotalLayer()); info.setState(Const.HOLLOW_FLOW_CARD_NEW); info.setState(Const.HOLLOW_FLOW_CARD_START); info.setTotalPairQuantity(totalPairQuantity); this.save(info); List<HollowBigStorageCageDetails> hollowBigStorageCageDetailsList = hollowBigStorageCageDetailsService.queryOutGlassList(flowCardId, cell); int isPairCount = glassInfo.getTotalLayer() * totalPairQuantity; List<HollowGlassQueueInfo> hollowQueues = new ArrayList<>(); loop: for (HollowBigStorageCageDetails queue : hollowBigStorageCageDetailsList) { HollowGlassQueueInfo queueInfo = new HollowGlassQueueInfo(); BeanUtils.copyProperties(queue, queueInfo); queueInfo.setState(Const.TEMPERING_NEW); queueInfo.setCell(cell); hollowQueues.add(queueInfo); if (queue.getIsPair() == 1){ isPairCount -=1; if (isPairCount == 0){ break loop; } } } hollowGlassQueueInfoService.saveBatch(hollowQueues); return info; } } hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollow/service/impl/HollowGlassRelationInfoServiceImpl.java
@@ -85,7 +85,7 @@ ); } HollowBigStorageCageDetails hollowDetails = hollowBigStorageCageDetailsService.getOne(new LambdaQueryWrapper<HollowBigStorageCageDetails>() .eq(HollowBigStorageCageDetails::getSlot, relationInfoOne.getVirtualSlot()).in(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL_ZERO) .eq(HollowBigStorageCageDetails::getVirtualSlot, relationInfoOne.getVirtualSlot()).in(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN_ALL_ZERO) .orderByDesc(HollowBigStorageCageDetails::getSequence).last("limit 1")); HollowBigStorageCage storageCage = null; if (null == hollowDetails) { @@ -97,8 +97,8 @@ return storageDTO; } HollowGlassRelationInfo relationInfoBefore = hollowGlassRelationInfoService.getOne(new LambdaQueryWrapper<HollowGlassRelationInfo>() .eq(HollowGlassRelationInfo::getEngineerId, relationInfoOne.getEngineerId()) .eq(HollowGlassRelationInfo::getTemperingLayoutId, relationInfoOne.getTemperingLayoutId()) .eq(HollowGlassRelationInfo::getFlowCardId, relationInfoOne.getFlowCardId()) .eq(HollowGlassRelationInfo::getLayer, relationInfoOne.getLayer()) .eq(HollowGlassRelationInfo::getVirtualSlot, relationInfoOne.getVirtualSlot()) .eq(HollowGlassRelationInfo::getSlotSequence, relationInfoOne.getSlotSequence() - 1)); if (null == relationInfoBefore) { hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollowqueue/controller/HollowGlassQueueInfoController.java
@@ -23,14 +23,6 @@ @Resource HollowGlassQueueInfoService hollowGlassQueueInfoService; @ApiOperation("强制出片") @PostMapping("/forceOutGlass") public Result<String> forceOutGlass(String flowCardId, int cell, int totalPairQuantity) { hollowGlassQueueInfoService.forceOutGlass(flowCardId, cell, totalPairQuantity); return Result.success("success"); } @ApiOperation("按照线路查询正在出片的玻璃队列") @PostMapping("/queryHollowGlassQueueInfo") public Result<List<HollowGlassQueueInfo>> queryHollowGlassQueueInfo(int cell) { hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollowqueue/service/HollowGlassQueueInfoService.java
@@ -13,8 +13,6 @@ */ public interface HollowGlassQueueInfoService extends IService<HollowGlassQueueInfo> { void forceOutGlass(String flowCardId, int cell, int totalPairQuantity); List<HollowGlassQueueInfo> queryHollowGlassQueueInfo(int cell); } hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/hollowqueue/service/impl/HollowGlassQueueInfoServiceImpl.java
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.mes.common.config.Const; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.service.GlassInfoService; import com.mes.hollow.entity.HollowBigStorageCageDetails; import com.mes.hollow.entity.HollowGlassOutRelationInfo; import com.mes.hollow.service.HollowBigStorageCageDetailsService; @@ -11,10 +13,12 @@ import com.mes.hollowqueue.entity.HollowGlassQueueInfo; import com.mes.hollowqueue.mapper.HollowGlassQueueInfoMapper; import com.mes.hollowqueue.service.HollowGlassQueueInfoService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -25,32 +29,14 @@ * @since 2024-11-30 10:19:56 */ @Service @Slf4j public class HollowGlassQueueInfoServiceImpl extends ServiceImpl<HollowGlassQueueInfoMapper, HollowGlassQueueInfo> implements HollowGlassQueueInfoService { @Resource HollowBigStorageCageDetailsService hollowBigStorageCageDetailsService; @Resource HollowGlassOutRelationInfoService hollowGlassOutRelationInfoService; @Override public void forceOutGlass(String flowCardId, int cell, int totalPairQuantity) { hollowGlassOutRelationInfoService.receiveTask(flowCardId, cell, totalPairQuantity); hollowGlassOutRelationInfoService.update(new LambdaUpdateWrapper<HollowGlassOutRelationInfo>() .eq(HollowGlassOutRelationInfo::getFlowCardId, flowCardId) .set(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START) ); List<HollowBigStorageCageDetails> hollowBigStorageCageDetailsList = hollowBigStorageCageDetailsService.queryOutGlassList(flowCardId, cell); List<HollowGlassQueueInfo> hollowQueues = hollowBigStorageCageDetailsList.stream().map(queue -> { HollowGlassQueueInfo queueInfo = new HollowGlassQueueInfo(); BeanUtils.copyProperties(queue, queueInfo); queueInfo.setState(Const.TEMPERING_NEW); queueInfo.setCell(cell); return queueInfo; }).collect(Collectors.toList()); this.saveBatch(hollowQueues); } @Override public List<HollowGlassQueueInfo> queryHollowGlassQueueInfo(int cell) { HollowGlassOutRelationInfo one = hollowGlassOutRelationInfoService.getOne(new LambdaUpdateWrapper<HollowGlassOutRelationInfo>() hangzhoumesParent/moduleService/howllowGlassModule/src/main/java/com/mes/job/OpcPlcStorageCageHollowTask.java
@@ -270,7 +270,7 @@ if (CollectionUtil.isNotEmpty(unFinishHollowQueueList)) { log.info("有正在出片的中空任务"); Integer isPair = unFinishHollowQueueList.get(0).getIsPair(); hollowOutGlassByIsPair(unFinishHollowQueueList, hollowGlassOutRelationInfo.getCell(), isPair, hollowGlassOutRelationInfo.getTotalLayer()); hollowOutGlassByIsPair(unFinishHollowQueueList, hollowGlassOutRelationInfo.getCell(), isPair, hollowGlassOutRelationInfo.getTotalLayer(),hollowGlassOutRelationInfo.getIsForce()); Date endDate = new Date(); log.info("大理片笼出片任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime()); return; @@ -281,45 +281,63 @@ .eq(HollowGlassOutRelationInfo::getCell, hollowGlassOutRelationInfo.getCell()) .set(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_SUCCESS)); } if (redisUtil.getCacheObject("hollowSwitch")) { List<HollowGlassOutRelationInfo> HollowGlassOutRelationInfoList = hollowGlassOutRelationInfoService .list(new LambdaQueryWrapper<HollowGlassOutRelationInfo>() .eq(HollowGlassOutRelationInfo::getCell, cell) .eq(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_NEW)); for (HollowGlassOutRelationInfo e : HollowGlassOutRelationInfoList) { //中空优先:获取理片笼 玻璃小片 破损表 数量 判断笼内版图是否到齐 List<FlowCardGlassInfoDTO> flowCardGlassInfoDTO = hollowBigStorageCageDetailsService.hollowIsAll(e.getFlowCardId(), e.getTotalLayer(), Boolean.TRUE); if (CollectionUtil.isNotEmpty(flowCardGlassInfoDTO)) { //玻璃到齐包括已出片的 //到齐,将玻璃小片数据存入中空小片表,逻辑生成出片任务 结束 for (FlowCardGlassInfoDTO item : flowCardGlassInfoDTO) { List<HollowBigStorageCageDetails> hollowBigStorageCageDetailsList = hollowBigStorageCageDetailsService.queryOutGlassList(item.getFlowCardId(), cell); int finalCell = cell; List<HollowGlassQueueInfo> hollowQueues = hollowBigStorageCageDetailsList.stream().map(queue -> { HollowGlassQueueInfo queueInfo = new HollowGlassQueueInfo(); BeanUtils.copyProperties(queue, queueInfo); queueInfo.setState(Const.TEMPERING_NEW); queueInfo.setCell(finalCell); return queueInfo; }).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(hollowQueues)) { hollowGlassQueueInfoService.saveBatch(hollowQueues); Integer isPair = hollowQueues.get(0).getIsPair(); hollowOutGlassByIsPair(hollowQueues, cell, isPair, e.getTotalLayer()); //将中空任务状态改为开始 hollowGlassOutRelationInfoService.update(new LambdaUpdateWrapper<HollowGlassOutRelationInfo>() .eq(HollowGlassOutRelationInfo::getFlowCardId, e.getFlowCardId()) .eq(HollowGlassOutRelationInfo::getCell, cell) .set(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START)); Date endDate = new Date(); log.info("大理片笼出片任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime()); return; } } } } } // if (redisUtil.getCacheObject("hollowSwitch")) { // List<HollowGlassOutRelationInfo> HollowGlassOutRelationInfoList = hollowGlassOutRelationInfoService // .list(new LambdaQueryWrapper<HollowGlassOutRelationInfo>() // .eq(HollowGlassOutRelationInfo::getCell, cell) // .eq(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_NEW)); // for (HollowGlassOutRelationInfo e : HollowGlassOutRelationInfoList) { // //中空优先:获取理片笼 玻璃小片 破损表 数量 判断笼内版图是否到齐 // List<FlowCardGlassInfoDTO> flowCardGlassInfoDTO = hollowBigStorageCageDetailsService.hollowIsAll(e.getFlowCardId(), e.getTotalLayer(), Boolean.TRUE); // if (CollectionUtil.isNotEmpty(flowCardGlassInfoDTO)) { // //玻璃到齐包括已出片的 // //到齐,将玻璃小片数据存入中空小片表,逻辑生成出片任务 结束 // for (FlowCardGlassInfoDTO item : flowCardGlassInfoDTO) { // List<HollowBigStorageCageDetails> hollowBigStorageCageDetailsList = hollowBigStorageCageDetailsService.queryOutGlassList(item.getFlowCardId(), cell); // int finalCell = cell; // List<HollowGlassQueueInfo> hollowQueues = hollowBigStorageCageDetailsList.stream().map(queue -> { // HollowGlassQueueInfo queueInfo = new HollowGlassQueueInfo(); // BeanUtils.copyProperties(queue, queueInfo); // queueInfo.setState(Const.TEMPERING_NEW); // queueInfo.setCell(finalCell); // return queueInfo; // }).collect(Collectors.toList()); // // List<HollowBigStorageCageDetails> hollowBigStorageCageDetailsList = hollowBigStorageCageDetailsService.queryOutGlassList(flowCardId, cell); // int isPairCount = glassInfo.getTotalLayer() * e.getTotalLayer(); // List<HollowGlassQueueInfo> hollowQueues = new ArrayList<>(); // loop: // for (HollowBigStorageCageDetails queue : hollowBigStorageCageDetailsList) { // HollowGlassQueueInfo queueInfo = new HollowGlassQueueInfo(); // BeanUtils.copyProperties(queue, queueInfo); // queueInfo.setState(Const.TEMPERING_NEW); // queueInfo.setCell(cell); // hollowQueues.add(queueInfo); // if (queue.getIsPair() == 1){ // isPairCount -=1; // if (isPairCount == 0){ // break loop; // } // } // } // // if (CollectionUtil.isNotEmpty(hollowQueues)) { // hollowGlassQueueInfoService.saveBatch(hollowQueues); // Integer isPair = hollowQueues.get(0).getIsPair(); // hollowOutGlassByIsPair(hollowQueues, cell, isPair, e.getTotalLayer()); // //将中空任务状态改为开始 // hollowGlassOutRelationInfoService.update(new LambdaUpdateWrapper<HollowGlassOutRelationInfo>() // .eq(HollowGlassOutRelationInfo::getFlowCardId, e.getFlowCardId()) // .eq(HollowGlassOutRelationInfo::getCell, cell) // .set(HollowGlassOutRelationInfo::getState, Const.HOLLOW_FLOW_CARD_START)); // Date endDate = new Date(); // log.info("大理片笼出片任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime()); // return; // } // } // } // } // } } // redisUtil.setCacheObject("dispatchHollowSwitch",true); //是否存在需要内部调度的格子:执行内部调度任务 @@ -345,7 +363,7 @@ int targetSlot = item.getSlot(); list = hollowBigStorageCageDetailsService.list(new LambdaQueryWrapper<HollowBigStorageCageDetails>() .eq(HollowBigStorageCageDetails::getState, Const.GLASS_STATE_IN).eq(HollowBigStorageCageDetails::getSlot, startSlot)); hollowOutGlassByIsPair(list, targetSlot, 0, 0); hollowOutGlassByIsPair(list, targetSlot, 0, 0,1); List<Integer> slotList = new ArrayList<>(); slotList.add(targetSlot); updateSlotRemainBySlots(slotList); @@ -534,8 +552,11 @@ // 空执行 } } //更新数量 // hollowGlassOutRelationInfoService.update // 重置任务表数据 bigStorageCageTaskService.updateOutTaskMessage(BIG_STORAGE_CAGE_OUT_TWO_TASK); //清空启动状态 //向opc发送启动信号 miloService.writeToOpcWord(generateReadWriteEntity("DLP2B.DLP2B.MesReply", 0)); @@ -643,7 +664,7 @@ } private <T extends HollowBigStorageCageBaseInfo> Boolean hollowOutGlassByIsPair(List<T> list, int targetSlot, int isPair, int totalLayer) { private <T extends HollowBigStorageCageBaseInfo> Boolean hollowOutGlassByIsPair(List<T> list, int targetSlot, int isPair, int totalLayer,int isForce) { List<T> resultList = new ArrayList<>(); int taskType = Const.BIG_STORAGE_AFTER_OUT; int taskState = Const.GLASS_STATE_OUT_ING; @@ -652,12 +673,12 @@ resultList.add(t); } } if (isPair == 0) { if (isPair == 0 && isForce!=1) { taskType = Const.BIG_STORAGE_AFTER_DISPATCH; taskState = Const.GLASS_STATE_SCHEDULE_ING; totalLayer = 0; } return computeOutGlassInfo(resultList, BIG_STORAGE_CAGE_OUT_TWO_TASK, targetSlot, taskState, taskType, totalLayer); return computeOutGlassInfo(resultList, BIG_STORAGE_CAGE_OUT_TWO_TASK, targetSlot, taskState, taskType, totalLayer,isForce); } /** @@ -668,7 +689,7 @@ * @param totalLayer * @return */ private <T extends HollowBigStorageCageBaseInfo> Boolean computeOutGlassInfo(List<T> list, String tableName, int targetSlot, int state, int taskType, int totalLayer) { private <T extends HollowBigStorageCageBaseInfo> Boolean computeOutGlassInfo(List<T> list, String tableName, int targetSlot, int state, int taskType, int totalLayer,int isForce) { //任务数据:获取车子存放玻璃最大数量,玻璃间隔 List<BigStorageCageTask> tempList = new ArrayList<>(); List<T> tempTList = new ArrayList<>(); @@ -687,14 +708,17 @@ Assert.isFalse(CollectionUtil.isEmpty(tempList), "未获取出片数据,结束出片任务"); log.info("获取出片任务数据{}条,执行保存", tempList.size()); List<BigStorageCageTask> bigStorageCageTaskList = tempList; if (taskType == Const.BIG_STORAGE_AFTER_OUT) { if (tempList.size() <= totalLayer) { bigStorageCageTaskList = tempList; } else { int remainCount = tempList.size() % totalLayer; // tempList.subList(0,) if (1!= isForce){ if (taskType == Const.BIG_STORAGE_AFTER_OUT) { if (tempList.size() <= totalLayer) { bigStorageCageTaskList = tempList; } else { int remainCount = tempList.size() % totalLayer; bigStorageCageTaskList = tempList.subList(0,tempList.size() - remainCount); } } } List<String> glassIds = bigStorageCageTaskList.stream().map(BigStorageCageTask::getGlassId).collect(Collectors.toList()); int glassCount = bigStorageCageTaskList.size(); //生成出片任务条数不足6补全