wuyouming666
2024-06-18 ef2f5051979a188b0922e3c30908bedca1cc7c74
hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/DownCacheGlassTask.java
@@ -1,6 +1,7 @@
package com.mes.job;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.mes.common.config.Const;
import com.mes.downglassinfo.entity.DownGlassInfo;
import com.mes.downglassinfo.entity.DownGlassTask;
import com.mes.downglassinfo.service.DownGlassInfoService;
@@ -80,7 +81,7 @@
//        String glassIdeValue = plcParameterObject.getPlcParameter("A05_scanning_ID").getValue();
//        String confirmationWrodValue = plcParameterObject.getPlcParameter("MES_confirmation_word").getValue();
//        String outGlassstate = plcParameterObject.getPlcParameter("A09_glass_status").getValue();
//        String confirmationWrodAddress = plcParameterObject.getPlcParameter("MES_confirmation_word").getAddress();
//        String MESSendingWord = plcParameterObject.getPlcParameter("MES_confirmation_word").getAddress();
        // String G06RobotTaskRequestWord = plcParameterObject.getPlcParameter("G06RobotTaskRequestWord").getAddress();
@@ -88,7 +89,7 @@
        String glassIdeValue = "NG24041101C002-2-6-1-6";
        String confirmationWrodValue = "1";
        String outGlassstate = "1";
        String confirmationWrodAddress = "1";
        String MESSendingWord = "1";
        String G11RobotTaskRequestWord = "0";
        String G06RobotTaskRequestWord = "0";
        String G13RobotTaskRequestWord = "0";
@@ -102,27 +103,27 @@
//                return;
//            }
//            log.info("2、获取到的请求字为0,将确认字改为0");
//            S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 0);
//            S7object.getinstance().plccontrol.WriteWord(MESSendingWord, (short) 0);
//            return;
//        }
//        if (!"0".equals(confirmationWrodValue)) {
//            log.info("2、获取到的请求字不为0,将确认字改为0");
//            S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 0);
//            S7object.getinstance().plccontrol.WriteWord(MESSendingWord, (short) 0);
//            return;
//        }
        if ("1".equals(taskRequestTypeValue)) {
            log.info("3、进片请求,且确认字为0,执行进片任务");
            inTo(glassIdeValue, confirmationWrodAddress);
            inTo(glassIdeValue, MESSendingWord);
        } else if ("2".equals(taskRequestTypeValue)) {
            log.info("3、出片请求,且确认字为0,执行进片任务");
            outTo(confirmationWrodAddress);
            outTo(MESSendingWord);
        } else if ("3".equals(taskRequestTypeValue)) {
            log.info("3、进片和出片都空闲,执行出片任务");
            if (outTo(confirmationWrodAddress)) {
                inTo(glassIdeValue, confirmationWrodAddress);
            if (outTo(MESSendingWord)) {
                inTo(glassIdeValue, MESSendingWord);
            }
@@ -142,10 +143,10 @@
     * 进片任务
     *
     * @param glassId
     * @param confirmationWrodAddress
     * @param MESSendingWord
     * @param
     */
    private void inTo(String glassId, String confirmationWrodAddress) {
    private void inTo(String glassId, String MESSendingWord) {
        log.info("1、按照玻璃id:{}获取玻璃小片信息", glassId);
        GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>().eq(GlassInfo::getGlassId, glassId));
        if (glassInfo == null) {
@@ -175,7 +176,7 @@
                log.info("6、将玻璃信息插入卧式理片笼,当前玻璃信息:{}", glassInfo);
                DownStorageCageDetails details = new DownStorageCageDetails();
                BeanUtils.copyProperties(glassInfo, details);
                details.setState(1);
                details.setState(Const.GLASS_STATE_IN);
                details.setGlassId(glassInfo.getGlassId());
                details.setSlot(item.getSlot());
                details.setDeviceId(item.getDeviceId());
@@ -191,77 +192,71 @@
        }
        log.info("9、发送确认字完成");
        //S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 1);
        //S7object.getinstance().plccontrol.WriteWord(MESSendingWord, (short) 1);
    }
    /**
     * 出片任务
     *
     * @param confirmationWrodAddress
     * @param MESSendingWord
     */
    private Boolean outTo(String confirmationWrodAddress) {
    private Boolean outTo(String MESSendingWord) {
        log.info("单片情况根据传入的料架号 查询符合按照版图id和片序出片,并且优先出满架的小片");
        List<DownStorageCageDetails> list = downStorageCageDetailsService.CacheOut1(1, 3);
        List<DownStorageCageDetails> list2 = downStorageCageDetailsService.CacheOut1(4, 6);
        List<DownStorageCageDetails> list1to3 = downStorageCageDetailsService.CacheOut1(1, 3);
        List<DownStorageCageDetails> list4to6 = downStorageCageDetailsService.CacheOut1(4, 6);
        List<DownStorageCageDetails> list1to6 = downStorageCageDetailsService.CacheOut1(1, 6);
        List<DownStorageCageDetails> list3 = downStorageCageDetailsService.CacheOut1(1, 6);
        DownStorageCageDetails selectedItem = null;
        String endCell = "";
        // 优先 超出尺寸优先人工出片 人工处理
        if (!list3.isEmpty()) {
            DownStorageCageDetails item3 = list3.get(0);
        if (!list1to6.isEmpty()) {
            DownStorageCageDetails item3 = list1to6.get(0);
            if (item3.getHeight() >= 2500 && item3.getWidth() >= 2660) {
                log.info("人工处理");
                String endcell = "7";
                DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(item3, "9", endcell, "2");
                downGlassTaskService.insertCacheTask(downGlassTask);
                // S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 2);
                return true;
            } else if (!list2.isEmpty() && !list3.isEmpty()) {
                selectedItem = item3;
                endCell = "7";
            } else if (!list4to6.isEmpty() && !list1to6.isEmpty()) {
                log.info("前后端都空闲 优先后端出片并且优先满架");
                DownStorageCageDetails item4 = list2.get(0);
                DownWorkstation downWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getFlowCardId, item4.getFlowCardId()));
                String endcell = String.valueOf(downWorkstation.getWorkstationId());
                DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(item4, "9", endcell, "2");
                downGlassTaskService.insertCacheTask(downGlassTask);
                //S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 2);
                return true;
            }
            // 按照版图id和片序符合前端出片
            else if (!list.isEmpty()) {
                log.info("前端出片");
                DownStorageCageDetails item = list.get(0);
                DownWorkstation downWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getFlowCardId, item.getFlowCardId()));
                String endcell = String.valueOf(downWorkstation.getWorkstationId());
                // 出到 G06
                DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(item, "9", endcell, "2");
                downGlassTaskService.insertCacheTask(downGlassTask);
                // S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 2);
                return true;
                // 按照版图id和片序符合后端出片
            } else if (!list2.isEmpty()) {
                log.info("后端出片");
                DownStorageCageDetails item2 = list2.get(0);
                DownWorkstation downWorkstation = downWorkstationService.getOne(new LambdaQueryWrapper<DownWorkstation>().eq(DownWorkstation::getFlowCardId, item2.getFlowCardId()));
                String endcell = String.valueOf(downWorkstation.getWorkstationId());
                // 出到 G11
                DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(item2, "9", endcell, "2");
                downGlassTaskService.insertCacheTask(downGlassTask);
                //  S7object.getinstance().plccontrol.WriteWord(confirmationWrodAddress, (short) 2);
                return true;
                selectedItem = list4to6.get(0);
            }
        }
        //如果同时前后端都空闲 优先后端出片并且优先满架
        // 按照版图id和片序符合前端出片
        if (selectedItem == null && !list1to3.isEmpty()) {
            log.info("前端出片");
            selectedItem = list1to3.get(0);
        }
        // 按照版图id和片序符合后端出片
        if (selectedItem == null && !list4to6.isEmpty()) {
            log.info("后端出片");
            selectedItem = list4to6.get(0);
        }
        if (selectedItem != null) {
            DownWorkstation downWorkstation = downWorkstationService.getOne(
                    new LambdaQueryWrapper<DownWorkstation>()
                            .eq(DownWorkstation::getFlowCardId, selectedItem.getFlowCardId())
            );
            endCell = String.valueOf(downWorkstation.getWorkstationId());
            if (endCell.isEmpty()) {
                endCell = "7";
            }
            DownGlassTask downGlassTask = downStorageCageService.createDownGlassTask(selectedItem, "9", endCell, "2");
            downGlassTaskService.insertCacheTask(downGlassTask);
            LambdaQueryWrapper<DownStorageCageDetails> wrapper = new LambdaQueryWrapper<>();
            wrapper.eq(DownStorageCageDetails::getGlassId, selectedItem.getGlassId());
            DownStorageCageDetails updateDetail = new DownStorageCageDetails();
            updateDetail.setState(Const.GLASS_STATE_OUT);
            downStorageCageDetailsService.update(updateDetail, wrapper);
            log.info("更新出片玻璃的状态为{}", Const.GLASS_STATE_OUT);
            // S7object.getinstance().plccontrol.WriteWord(MESSendingWord, (short) 2);
            return true;
        }
        // 返回结果
        return false;
@@ -291,6 +286,11 @@
                    DownWorkstation downWorkstation1 = downWorkstationService.selectByFlowCardId(downGlassInfo.getFlowCardId());
                    downWorkstationService.updateracksnumber(downGlassInfo.getFlowCardId(), downWorkstation1.getRacksnumber() + 1);
                    log.info("更新落架数量");
                    LambdaQueryWrapper<DownGlassTask> wrapper = new LambdaQueryWrapper<>();
                    wrapper.eq(DownGlassTask::getGlassId, newdownGlassInfo.getGlassId());
                    DownGlassTask updateDetail = new DownGlassTask();
                    updateDetail.setTaskStauts(2);
                    downGlassTaskService.update(updateDetail, wrapper);
                    sequence++; // 递增顺序字段值