wu
2024-12-18 041d9bd56e7e761af3df78a39e9c8f629868f360
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -304,7 +304,7 @@
        log.info("大理片笼空车进片任务结束时间:{},共耗时:{}ms,结束扫码任务", endDate, endDate.getTime() - startDate.getTime());
    }
    @Scheduled(fixedDelay = 10000)
    @Scheduled(fixedDelay = 5000)
    public void plcToHomeEdgOutTask() {
        Date startDate = new Date();
        log.info("大理片笼出片任务开始执行时间:{}", startDate);
@@ -393,7 +393,7 @@
                                            + temperingOccupySlot.getEngineerId() + "' and tempering_layout_id = '" + temperingOccupySlot.getTemperingLayoutId() + "'")
                                    .orderBy(Boolean.TRUE, sequenceOrder, GlassInfo::getTemperingFeedSequence)
                    );
                    Map<Integer, List<GlassInfo>> listMap = glassInfos.stream().collect(Collectors.groupingBy(item -> item.getSlot()));
                    Map<Integer, List<GlassInfo>> listMap = glassInfos.stream().collect(Collectors.groupingBy(item -> item.getTargetSlot()));
                    for (Map.Entry<Integer, List<GlassInfo>> entry : listMap.entrySet()) {
                        List<GlassInfo> valueList = entry.getValue();
                        List<String> glassIds = valueList.stream().map(GlassInfo::getGlassId).collect(Collectors.toList());
@@ -427,9 +427,9 @@
                                                .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT));
                                        //两次更新笼子的剩余尺寸:第一次防止有玻璃继续进调度后的笼子,第二次更新:计算格子的实际尺寸
                                        // 仅更新调度后的格子信息:起始格子完成后更新:防止调度出片过程中有新玻璃进入,
                                        List<Integer> updateSlots = new ArrayList<>();
                                        updateSlots.add(bigStorageCageDetails.getSlot());
                                        updateSlotRemainBySlots(updateSlots);
//                                        List<Integer> updateSlots = new ArrayList<>();
//                                        updateSlots.add(bigStorageCageDetails.getSlot());
//                                        updateSlotRemainBySlots(updateSlots);
                                    }
                                }
                                break loop;
@@ -673,7 +673,10 @@
            bigStorageCageFeedTaskService.remove(new LambdaQueryWrapper<BigStorageCageFeedTask>().in(BigStorageCageFeedTask::getTaskState, Const.GLASS_STATE_DAMAGE_TAKE));
            //理片笼详情表数据状态更新
            bigStorageCageDetailsService.remove(new LambdaQueryWrapper<BigStorageCageDetails>()
                    .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_NEW).in(BigStorageCageDetails::getGlassId, inDamageTaskInfoList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList())));
//                    .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_NEW)
                    .and(e -> e.eq(BigStorageCageDetails::getState, Const.GLASS_STATE_NEW).or()
                            .eq(BigStorageCageDetails::getState, Const.GLASS_STATE_IN))
                    .in(BigStorageCageDetails::getGlassId, inDamageTaskInfoList.stream().map(BigStorageCageFeedTask::getGlassId).collect(Collectors.toList())));
            //将破损信息新增入破损表
            List<Integer> slotList = new ArrayList<>();
            for (BigStorageCageFeedTask bigStorageCageFeedTask : inDamageTaskInfoList) {
@@ -867,9 +870,20 @@
                            .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP)
                            .eq(BigStorageCageFeedTask::getTargetSlot, 0)
            );
            if(CollectionUtils.isNotEmpty(bigStorageCageFeedTasks)){
                log.info("获取到的进片任务信息{}", bigStorageCageFeedTasks);
            if (CollectionUtils.isNotEmpty(bigStorageCageFeedTasks)) {
                log.info("计算目标格子发送任务{}", bigStorageCageFeedTasks);
                computeTargetByLineCar(bigStorageCageFeedTasks.get(0).getLine(), glassIdsCar);
            } else {
                log.info("再次发送进片任务{}", bigStorageCageFeedTasks);
                List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskService.list(
                        new LambdaQueryWrapper<BigStorageCageFeedTask>()
                                .in(BigStorageCageFeedTask::getGlassId, glassIdsCar)
                                .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_CAR)
                                .gt(BigStorageCageFeedTask::getTargetSlot, 0)
                );
                if (CollectionUtils.isNotEmpty(bigStorageCageFeedTaskList)) {
                    sendTaskListToPLCCar(bigStorageCageFeedTaskList);
                }
            }
        }
@@ -1005,7 +1019,7 @@
                new LambdaQueryWrapper<GlassInfo>()
                        .eq(GlassInfo::getGlassId, glassId)
        );
        if (glassInfo.getSlot() == null) {
        if (glassInfo.getTargetSlot() == null) {
            List<GlassInfo> glassInfos = glassInfoService.list(
                    new LambdaQueryWrapper<GlassInfo>()
                            .eq(GlassInfo::getEngineerId, glassInfo.getEngineerId())
@@ -1025,7 +1039,7 @@
                glassInfoService.update(
                        new LambdaUpdateWrapper<GlassInfo>()
                                .eq(GlassInfo::getGlassId, bigStorageCageOutTask.getGlassId())
                                .set(GlassInfo::getSlot, bigStorageCageOutTask.getTrainNumber())
                                .set(GlassInfo::getTargetSlot, bigStorageCageOutTask.getTrainNumber())
                );
            }
        }
@@ -1123,11 +1137,11 @@
            if (info == null) {
                continue;
            }
            if(info.getSlot()==null){
            if (info.getTargetSlot() == null) {
                computeSlot(info.getGlassId());
                info=glassInfoService.getOne(
                info = glassInfoService.getOne(
                        new LambdaQueryWrapper<GlassInfo>()
                        .eq(GlassInfo::getGlassId,info.getGlassId())
                                .eq(GlassInfo::getGlassId, info.getGlassId())
                );
            }
            BigStorageCageDetails cageDetails = new BigStorageCageDetails();
@@ -1422,6 +1436,7 @@
                .eq(GlassInfo::getTotalLayer, glassInfo.getTotalLayer())
                .eq(GlassInfo::getLayer, glassInfo.getLayer())
                .eq(GlassInfo::getEngineerId, glassInfo.getEngineerId())
                .eq(GlassInfo::getMarkIcon, glassInfo.getMarkIcon())
                .notInSql(GlassInfo::getGlassId, "select distinct glass_id from big_storage_cage_details " +
                        "where state!=101 and engineer_id = '" + glassInfo.getEngineerId() + "' and width = " + glassInfo.getWidth() + " and height = " + glassInfo.getHeight())
                .orderByAsc(GlassInfo::getTemperingLayoutId)