wu
2024-12-18 041d9bd56e7e761af3df78a39e9c8f629868f360
Merge branch 'master' of http://10.153.19.25:10101/r/HangZhouMes
12个文件已修改
142 ■■■■■ 已修改文件
hangzhoumesParent/JsonFile/PlcCacheGlass.json 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java 41 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/JsonFile/PlcCacheGlass.json
@@ -59,6 +59,13 @@
          "addressLenght":"2",
          "ratio":"1",
          "unit":""
       }
       },
     {
       "codeId": "A09_glass_status",
       "addressIndex": "76",
       "addressLenght": "2",
       "ratio": "1",
       "unit": ""
     }
   ]
}
hangzhoumesParent/common/servicebase/src/main/java/com/mes/common/config/Const.java
@@ -30,18 +30,18 @@
     * A09出片目标位置  d02卧转立 钢化出片    3001
     * A10出片目标位置  d05卧转立 人工出片    3002
     */
//    public static final Integer TEMPERING_OUT_TARGET_POSITION = 3001;
//    public static final Integer ARTIFICIAL_OUT_TARGET_POSITION = 3002;
//    public static final List<Integer> OUT_TARGET_POSITION_ALL = Arrays.asList(3001, 3002);
    public static final Integer TEMPERING_OUT_TARGET_POSITION = 3001;
    public static final Integer ARTIFICIAL_OUT_TARGET_POSITION = 3002;
    public static final List<Integer> OUT_TARGET_POSITION_ALL = Arrays.asList(3001, 3002);
    /**
     * 义乌磨边线
     * A09出片目标位置  d02卧转立 钢化出片    930
     * A10出片目标位置  d05卧转立 人工出片    931
     */
    public static final Integer TEMPERING_OUT_TARGET_POSITION = 930;
    public static final Integer ARTIFICIAL_OUT_TARGET_POSITION = 931;
    public static final List<Integer> OUT_TARGET_POSITION_ALL = Arrays.asList(930, 931);
//    /**
//     * 义乌磨边线
//     * A09出片目标位置  d02卧转立 钢化出片    930
//     * A10出片目标位置  d05卧转立 人工出片    931
//     */
//    public static final Integer TEMPERING_OUT_TARGET_POSITION = 930;
//    public static final Integer ARTIFICIAL_OUT_TARGET_POSITION = 931;
//    public static final List<Integer> OUT_TARGET_POSITION_ALL = Arrays.asList(930, 931);
    /**
     * 卧式理片笼详情表玻璃状态
hangzhoumesParent/common/servicebase/src/main/java/com/mes/glassinfo/entity/GlassInfo.java
@@ -148,7 +148,7 @@
    /**
     * 预排格子
     */
    private Integer Slot;
    private Integer targetSlot;
    /**
     * 打标属性
     */
hangzhoumesParent/common/servicebase/src/main/java/com/mes/temperingglass/entity/TemperingGlassInfo.java
@@ -1,6 +1,7 @@
package com.mes.temperingglass.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.mes.base.entity.BigStorageCageBaseInfo;
@@ -88,11 +89,24 @@
    private Integer state;
    /**
     * 格子
     */
    @TableField("Slot")
    @ApiModelProperty(value = "格子", position = 17)
    private Integer slot;
    /**
     * 工程id
     */
    @ApiModelProperty(value = "工程id", position = 17)
    @ApiModelProperty(value = "工程id", position = 18)
    private String engineerId;
    /**
     * 钢化类型
     */
    @ApiModelProperty(value = "钢化类型", position = 19)
    private Integer temperingType;
    @TableLogic
    private int deleted;
}
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/CacheGlassTask.java
@@ -211,8 +211,11 @@
                new LambdaQueryWrapper<GlassInfo>()
                        .eq(GlassInfo::getGlassId, glassId)
        );
        if (Math.max(feedGlassInfo.getWidth(), feedGlassInfo.getHeight()) > cacheWidth || Math.min(feedGlassInfo.getWidth(), feedGlassInfo.getHeight()) > cacheHeight) {
            log.info("1.1、玻璃超过卧式理片最大尺寸:{}", feedGlassInfo);
        if (Math.max(feedGlassInfo.getWidth(), feedGlassInfo.getHeight()) > cacheWidth ||
                Math.min(feedGlassInfo.getWidth(), feedGlassInfo.getHeight()) > cacheHeight
                || Math.min(feedGlassInfo.getWidth(), feedGlassInfo.getHeight()) < Integer.parseInt(minTwoFirstLength)
        ) {
            log.info("1.1、玻璃超过卧式理片尺寸范围:{}", feedGlassInfo);
            return;
        }
hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/job/OpcCacheGlassTask.java
@@ -89,12 +89,12 @@
//        miloService.subscriptionFromOpcUa(Arrays.asList("mes.WL2.edg_storage_device_two_task[1].task_state"), cacheGlassStartCallback);
//    }
    @Scheduled(fixedDelay = 1000)
//    @Scheduled(fixedDelay = 1000)
    public void startOneOpcTask() {
        startOneOpcTaskChild(EDG_STORAGE_DEVICE_ONE_TASK, 1);
    }
    @Scheduled(fixedDelay = 1000)
//    @Scheduled(fixedDelay = 1000)
    public void startTwoOpcTask() {
        startOneOpcTaskChild(EDG_STORAGE_DEVICE_TWO_TASK, 2);
    }
@@ -142,7 +142,7 @@
    }
    @Scheduled(fixedDelay = 1000)
//    @Scheduled(fixedDelay = 1000)
    public void edgOneOpcTask() throws Exception {
        EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(EDG_STORAGE_DEVICE_ONE_TASK);
        String glassId = task.getGlassId();
@@ -153,7 +153,7 @@
        edgTaskChild(glassId, 1);
    }
    @Scheduled(fixedDelay = 1000)
//    @Scheduled(fixedDelay = 1000)
    public void edgTwoOpcTask() throws Exception {
        EdgStorageDeviceTask task = edgStorageDeviceTaskService.queryTaskMessage(EDG_STORAGE_DEVICE_TWO_TASK);
        String glassId = task.getGlassId();
hangzhoumesParent/moduleService/CacheGlassModule/src/test/java/com/mes/CacheGlassModuleApplicationTest.java
@@ -74,7 +74,8 @@
    public void testChangeCellSize() {
//        String url=getClass().getResource("").getPath();
//        log.info("完整路径:{}", Arrays.asList(url));
        cacheGlassTask.queryChangeGlassInfo(Const.A09_OUT_TARGET_POSITION, "");
//        cacheGlassTask.queryChangeGlassInfo(Const.A09_OUT_TARGET_POSITION, "");
        cacheGlassTask.inTo("P24110503|26|2","","2");
    }
    @Test
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/bigstorage/service/impl/BigStorageCageDetailsServiceImpl.java
@@ -272,7 +272,7 @@
                new LambdaQueryWrapper<GlassInfo>()
                        .eq(GlassInfo::getEngineerId, glassInfo.getEngineerId())
                        .eq(GlassInfo::getTemperingLayoutId, glassInfo.getTemperingLayoutId())
                        .eq(GlassInfo::getSlot, glassInfo.getSlot())
                        .eq(GlassInfo::getTargetSlot, glassInfo.getTargetSlot())
        );
        List<String> glassIds = glassInfoList.stream().map(GlassInfo::getGlassId).collect(Collectors.toList());
        BigStorageDTO bigStorageDTO = null;
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)
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/resources/mapper/BigStorageCageFeedTaskMapper.xml
@@ -18,8 +18,10 @@
                   and deleted = 0
                   and (target_slot = 0 or target_slot is null)
                 group by line
                 HAVING  DATEDIFF(SECOND, max(create_time), GETDATE()) + 45>20 or SUM(case task_state when 2 then 1 else 0 end)>1
             ) t
        where t.total_count = t.real_count
        order by real_count desc,line desc
    </select>
    <select id="querySitToUpRemainWidth" resultMap="bigStorageDTO">
        SELECT CAST
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/test/java/com/mes/CacheVerticalGlassModuleApplicationTest.java
@@ -24,6 +24,7 @@
import com.mes.edgglasstask.service.EdgGlassTaskInfoService;
import com.mes.glassinfo.entity.GlassInfo;
import com.mes.glassinfo.service.GlassInfoService;
import com.mes.job.PlcSlicecage;
import com.mes.job.PlcStorageCageTask;
import com.mes.pp.entity.ReportingWork;
import com.mes.pp.entity.ReportingWorkDetail;
@@ -283,18 +284,20 @@
//                .eq(GlassInfo::getGlassId,"P24120801|1|2")
//        );
//        bigStorageCageDetailsService.queryTargetSlotByTempering(glassInfo);
        List<String> glassIdsCar=new ArrayList<>();
        glassIdsCar.add("P24120801|4|3");
        List<BigStorageCageFeedTask> bigStorageCageFeedTasks = bigStorageCageFeedTaskService.list(
                new LambdaQueryWrapper<BigStorageCageFeedTask>()
                        .in(BigStorageCageFeedTask::getGlassId, glassIdsCar)
                        .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP)
                        .eq(BigStorageCageFeedTask::getTargetSlot, 0)
        );
        if(CollectionUtils.isNotEmpty(bigStorageCageFeedTasks)){
            log.info("获取到的进片任务信息{}", bigStorageCageFeedTasks);
            plcStorageCageTask.computeTargetByLineCar(bigStorageCageFeedTasks.get(0).getLine(), glassIdsCar);
        }
//        List<String> glassIdsCar=new ArrayList<>();
//        glassIdsCar.add("P24120801|4|3");
//        List<BigStorageCageFeedTask> bigStorageCageFeedTasks = bigStorageCageFeedTaskService.list(
//                new LambdaQueryWrapper<BigStorageCageFeedTask>()
//                        .in(BigStorageCageFeedTask::getGlassId, glassIdsCar)
//                        .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP)
//                        .eq(BigStorageCageFeedTask::getTargetSlot, 0)
//        );
//        if(CollectionUtils.isNotEmpty(bigStorageCageFeedTasks)){
//            log.info("获取到的进片任务信息{}", bigStorageCageFeedTasks);
//            plcStorageCageTask.computeTargetByLineCar(bigStorageCageFeedTasks.get(0).getLine(), glassIdsCar);
//        }
//        plcStorageCageTask.queryAndChangeGlass("P24111102|1|6");
        bigStorageCageDetailsService.selectFeedTask();
    }
    @Test
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownLoadCacheGlassTask.java
@@ -275,7 +275,8 @@
                    for (DownGlassInfoDTO e : downGlassInfoDTOList) {
                        List<GlassInfo> glassInfoList = e.getGlassInfoList();
                        List<GlassInfo> glassInfoTempList = glassInfoList.stream().filter(item -> item.getWidth() == glassInfo.getWidth() && item.getHeight() == glassInfo.getHeight()
                                && item.getThickness() == glassInfo.getThickness() && item.getFilmsid().equals(glassInfo.getFilmsid())).collect(Collectors.toList());
                                && item.getThickness() == glassInfo.getThickness() && item.getMarkIcon().equals(glassInfo.getMarkIcon())
                                && item.getFilmsid().equals(glassInfo.getFilmsid())).collect(Collectors.toList());
                        if (CollectionUtils.isNotEmpty(glassInfoTempList)) {
                            for (GlassInfo item : glassInfoTempList) {
                                //玻璃是否为多层:1、先获取当前流程卡落架最多的层数,如果为空,表明未绑定流程卡,未落架,然后按照是否可绑定架子决定是否替换。(可忽略不计,本校验仅在前一次调用起作用)