zhoushihao
2024-06-12 28f2652b6f7f079327d0d23cadfa20da15e12359
大理片笼:fixbug按照玻璃id判断玻璃状态及卧转立是否可直接启动
2个文件已修改
213 ■■■■ 已修改文件
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java 208 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/edgglasstask/entity/EdgGlassTaskInfo.java
@@ -1,13 +1,12 @@
package com.mes.edgglasstask.entity;
import cn.hutool.core.date.DateTime;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import net.sf.jsqlparser.expression.DateTimeLiteralExpression;
import java.io.Serializable;
import java.util.Date;
/**
 * <p>
@@ -73,6 +72,6 @@
     * 线路
     */
    @ApiModelProperty(value = "时间", position = 9)
    private DateTime time;
    private Date time;
}
hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -8,7 +8,6 @@
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;
@@ -69,102 +68,101 @@
     * fixedRate : 上一个调用开始后再次调用的延时(不用等待上一次调用完成)
     * fixedDelay : 上一个调用结束后再次调用的延时
     */
    @Scheduled(fixedDelay = 5000)
    public void plcStorageCageTask() throws InterruptedException {
        PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
        try {
            String plcFeedGlassid = "";
            String plcFeedReqLine = "0";
            if ("1".equals(plcParameterObject.getPlcParameter("D01Request").getValue())) {
                plcFeedReqLine = "1";
                plcFeedGlassid = plcParameterObject.getPlcParameter("D01ID1").getValue();
            }
            if ("1".equals(plcParameterObject.getPlcParameter("D04Request").getValue())) {
                plcFeedReqLine = "2";
                plcFeedGlassid = plcParameterObject.getPlcParameter("D04ID1").getValue();
            }
            line1Time += 1;
            line2Time += 1;
            if (!("0".equals(plcFeedReqLine))) {
                log.info("1、Plc进片请求时");
                BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails();
                GlassInfo glassInfo = glassInfoService.getById(plcFeedGlassid);
                log.info("2、根据玻璃id获取玻璃信息" + glassInfo);
                if (bigStorageCageDetailsService.selectGetBoard(plcFeedReqLine) >= 0) {
                    BigStorageCageDetails slotInfo = bigStorageCageService.feedGlass(glassInfo, bigStorageCageDetails);
                    if (slotInfo != null) {
                        int taskType = edgGlassTaskInfoService.judgeTasktype(plcFeedReqLine);
                        log.info("3、查询任务表判断当前任务类型为上车等到还是上车启动" + taskType);
                        bigStorageCageFeedTaskService.addFeedTask(slotInfo, Integer.parseInt(plcFeedReqLine), taskType);
                        log.info("4、添加任务到任务表");
                        bigStorageCageFullAlarm = false;
                    } else {
                        bigStorageCageFullAlarm = true;
                    }
                } else {
                    log.info("当前玻璃宽度不够上车" + glassInfo);
                    if (!("1".equals(plcFeedReqLine))) {
                        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1);
                    } else {
                        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1);
                    }
                }
            } else {
                List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskService.querybigStorageCageFeedTask(1);
                log.info("5、查询任务表是否有已经完成的进片任务" + bigStorageCageFeedTaskList.size());
                for (BigStorageCageFeedTask bigStorageCageFeedTask : bigStorageCageFeedTaskList
                ) {
                    BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails();
                    bigStorageCageDetails.setId(bigStorageCageFeedTask.getId());
                    bigStorageCageDetails.setState(1);
                    bigStorageCageDetailsService.updateById(bigStorageCageDetails);
                    log.info("6、修改理片笼详情玻璃状态");
                    bigStorageCageFeedTaskService.removeById(bigStorageCageFeedTask);
                    log.info("7、删除已经完成的进片任务");
                }
                //启动阈值
                if (line1Time >= 300) {
                    if ("0".equals(plcParameterObject.getPlcParameter("D05Go").getValue())) {
                        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1);
                    }
                }
                if (line2Time >= 300) {
                    if ("0".equals(plcParameterObject.getPlcParameter("D02Go").getValue())) {
                        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1);
                    }
                }
            }
            //查询出片表是否有任务未完成的任务
            List<BigStorageCageOutTask> bigStorageCageOutTask = bigStorageCageOutTaskService.querybigStorageCageOutTask(0);
            if (bigStorageCageOutTask.size() == 0) {
                boolean result = bigStorageCageService.outGlass();
                log.info("8、没有未完成任务时调用出片接口");
                if (result == false) {
                    temperingGlassInfoService.schedulingTask();
                }
            }
            bigStorageCageOutTaskService.updateOutTask();
            log.info("9、根据任务表状态修改钢化小片表任务状态");
            //来不及送时直接走
            String line = Integer.toString(edgGlassTaskInfoService.startTask());
            if (!(line.equals(plcFeedReqLine))) {
                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1);
            } else {
                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
//    @Scheduled(fixedDelay = 5000)
//    public void plcStorageCageTask() throws InterruptedException {
//
//        PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
//        try {
//
//            String plcFeedGlassid = "";
//            String plcFeedReqLine = "0";
//            if ("1".equals(plcParameterObject.getPlcParameter("D01Request").getValue())) {
//                plcFeedReqLine = "1";
//                plcFeedGlassid = plcParameterObject.getPlcParameter("D01ID1").getValue();
//            }
//            if ("1".equals(plcParameterObject.getPlcParameter("D04Request").getValue())) {
//                plcFeedReqLine = "2";
//                plcFeedGlassid = plcParameterObject.getPlcParameter("D04ID1").getValue();
//            }
//            line1Time += 1;
//            line2Time += 1;
//
//            if (!("0".equals(plcFeedReqLine))) {
//                log.info("1、Plc进片请求时");
//                BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails();
//                GlassInfo glassInfo = glassInfoService.getById(plcFeedGlassid);
//                log.info("2、根据玻璃id获取玻璃信息" + glassInfo);
//                if (bigStorageCageDetailsService.selectGetBoard(plcFeedReqLine) >= 0) {
//                    BigStorageCageDetails slotInfo = bigStorageCageService.feedGlass(glassInfo, bigStorageCageDetails);
//                    if (slotInfo != null) {
//                        int taskType = edgGlassTaskInfoService.judgeTasktype(plcFeedReqLine);
//                        log.info("3、查询任务表判断当前任务类型为上车等到还是上车启动" + taskType);
//                        bigStorageCageFeedTaskService.addFeedTask(slotInfo, Integer.parseInt(plcFeedReqLine), taskType);
//                        log.info("4、添加任务到任务表");
//                        bigStorageCageFullAlarm = false;
//                    } else {
//                        bigStorageCageFullAlarm = true;
//                    }
//                } else {
//                    log.info("当前玻璃宽度不够上车" + glassInfo);
//                    if (!("1".equals(plcFeedReqLine))) {
//                        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1);
//                    } else {
//                        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1);
//                    }
//                }
//            } else {
//                List<BigStorageCageFeedTask> bigStorageCageFeedTaskList = bigStorageCageFeedTaskService.querybigStorageCageFeedTask(1);
//                log.info("5、查询任务表是否有已经完成的进片任务" + bigStorageCageFeedTaskList.size());
//                for (BigStorageCageFeedTask bigStorageCageFeedTask : bigStorageCageFeedTaskList
//                ) {
//                    BigStorageCageDetails bigStorageCageDetails = new BigStorageCageDetails();
//                    bigStorageCageDetails.setId(bigStorageCageFeedTask.getId());
//                    bigStorageCageDetails.setState(1);
//                    bigStorageCageDetailsService.updateById(bigStorageCageDetails);
//                    log.info("6、修改理片笼详情玻璃状态");
//                    bigStorageCageFeedTaskService.removeById(bigStorageCageFeedTask);
//                    log.info("7、删除已经完成的进片任务");
//                }
//                //启动阈值
//                if (line1Time >= 300) {
//                    if ("0".equals(plcParameterObject.getPlcParameter("D05Go").getValue())) {
//                        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1);
//                    }
//                }
//                if (line2Time >= 300) {
//                    if ("0".equals(plcParameterObject.getPlcParameter("D02Go").getValue())) {
//                        S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1);
//                    }
//                }
//            }
//
//            //查询出片表是否有任务未完成的任务
//            List<BigStorageCageOutTask> bigStorageCageOutTask = bigStorageCageOutTaskService.querybigStorageCageOutTask(0);
//            if (bigStorageCageOutTask.size() == 0) {
//                boolean result = bigStorageCageService.outGlass();
//                log.info("8、没有未完成任务时调用出片接口");
//                if (result == false) {
//                    temperingGlassInfoService.schedulingTask();
//                }
//            }
//            bigStorageCageOutTaskService.updateOutTask();
//            log.info("9、根据任务表状态修改钢化小片表任务状态");
//
//            //来不及送时直接走
//            String line = Integer.toString(edgGlassTaskInfoService.startTask());
//
//            if (!(line.equals(plcFeedReqLine))) {
//                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D02Go").getAddress(), 1);
//            } else {
//                S7object.getinstance().plccontrol.writetime(plcParameterObject.getPlcParameter("D05Go").getAddress(), 1);
//            }
//
//
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
    @Scheduled(fixedDelay = 5000)
    public void plcToHomeEdgScan() {
        PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject;
@@ -189,7 +187,7 @@
            flag01 = judgeGlassTypeStatus(d01ID1, Const.A09_OUT_TARGET_POSITION);
        }
        if ("1".equals(d04Request)) {
            flag04 = judgeGlassTypeStatus(d01ID1, Const.A10_OUT_TARGET_POSITION);
            flag04 = judgeGlassTypeStatus(d04ID1, Const.A10_OUT_TARGET_POSITION);
        }
        if (flag01 && flag04) {
            //比较最早一片任务的版图id及版序 求出卧转立的线路
@@ -264,16 +262,16 @@
     */
    public Boolean judgeGlassTypeStatus(String glassId, Integer line) {
        //1、获取任务表中相邻玻璃
        List<EdgGlassTaskInfo> edgGlassTaskInfoList = edgGlassTaskInfoService.list(new QueryWrapper<EdgGlassTaskInfo>()
                .eq("line", line)
                .gt("id", "select id from edg_glass_task_info where glass_id = " + glassId)
                .orderByAsc("id"));
        Assert.isTrue(CollectionUtils.isEmpty(edgGlassTaskInfoList), "识别玻璃信息未出现在尺寸表中,获取相邻两块玻璃失败");
        List<EdgGlassTaskInfo> edgGlassTaskInfoList = edgGlassTaskInfoService.list(new LambdaQueryWrapper<EdgGlassTaskInfo>()
                .eq(EdgGlassTaskInfo::getLine, line)
                .apply("time >= (select time from edg_glass_task_info where glass_id = '" + glassId + "')")
                .orderByAsc(EdgGlassTaskInfo::getTime));
        Assert.isFalse(CollectionUtils.isEmpty(edgGlassTaskInfoList), "识别玻璃信息未出现在尺寸表中,获取相邻两块玻璃失败");
        //2、获取卧转立剩余宽度
        Map<String, Object> map = bigStorageCageFeedTaskService.getMap(new QueryWrapper<BigStorageCageFeedTask>()
                .select("5000 - sum(width + 20) as remainWidth")
                .select("cast(5000 - sum(width + 20)  as INT)as remainWidth")
                .eq("line", line).eq("task_state", Const.BIG_STORAGE_IN_UP));
        Integer remainWidth = Integer.parseInt(map.get("remainWidth") + "");
        Integer remainWidth = null == map ? 5000 : Integer.parseInt(map.get("remainWidth") + "");
        //2、获取卧转立
        Integer widthFirst = edgGlassTaskInfoList.get(0).getWidth();
        if (edgGlassTaskInfoList.size() == 1) {