UI-Project/src/views/Slicecage/slicecage.vue
@@ -6,7 +6,9 @@ import {computed, onBeforeUnmount, onMounted, onUnmounted, reactive, ref} from "vue"; import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService'; import {ElMessage, ElMessageBox} from 'element-plus' import PrintLabel from "@/views/UnLoadGlass/PrintCustomLabelSemi1.vue"; const dialogFormVisibleaDownGlasss = ref(false) const scanGlass = ref([]) const {t} = useI18n() let language = ref(localStorage.getItem('lang') || 'zh') const router = useRouter() @@ -141,6 +143,61 @@ if (page >= 1 && page <= totalPages.value) { currentPage.value = page; } } const printFlowCardId = ref('') const printLayer = ref('') const printGlassId = ref('') const dialogTableVisible1 = ref(false) const open1 = async (row) => { printFlowCardId.value = row.flowCardId; printLayer.value = row.layer printGlassId.value = row.glassId dialogTableVisible1.value = true; setTimeout(() => { printFlowCard1(); //dialogTableVisible1.value = false; }, 1000); } const printFlowCard1 = () => { // 需要打印的局部区域赋予"print-wrap"的id let el = document.getElementById("printFlowCard"); let doc = document; let body = doc.body || doc.getElementsByTagName("body")[0]; let printId = "print-" + Date.now(); // 创建无副作用的打印容器(因不确定页面的打印元素有无其它样式) let content = doc.createElement("div"); content.id = printId; // 样式控制与打印无关的元素隐藏 let style = doc.createElement("style"); style.innerHTML = "body>#" + printId + "{display:none}@media print{" + "@page {" + " size: auto; " + " margin: 2mm 2mm 2mm 2mm; " + " }body>:not(#" + printId + "){display:none !important}body>#" + printId + "{display:block;padding-top:1px}}"; // content.innerHTML = el.outerHTML; // // console.log("el.outerHTML", el.outerHTML); body.appendChild(style); // 与style元素设置的样式相配合 // 把打印内容的元素添加到body(作为body的子元素,可用body的子选择器 '>' 控制打印样式) body.appendChild(content); setTimeout(() => { window.print(); body.removeChild(content); body.removeChild(style); }, 20); } // 上一页和下一页方法 const prevPage = () => { @@ -703,6 +760,18 @@ const socketUrl = `ws://${WebSocketHost}:${host}/api/cacheVerticalGlass/api/talk/slicecage`; // 定义消息处理函数,更新 receivedData 变量 const handleMessage = (data) => { if (data.scanGlass != null) { scanGlass.value = data.scanGlass[0]; let width = scanGlass.value.width; let height = scanGlass.value.height; if (width < height) { scanGlass.value.width = height; scanGlass.value.height = width; } if (autoPrint.value == true && browser.value == true) { open1(scanGlass); } } //当前指定工程 if(data.bigStorageCageDetailsOutTask!=null){ temperingengineerId.value=data.temperingengineerId[0]; @@ -877,6 +946,7 @@ // console.log("关闭了") closeWebSocket(); }); </script> <template> @@ -887,6 +957,9 @@ <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="info" @click="handlezhiban">{{ $t('searchOrder.dutyinformation') }}</el-button> <el-button style="margin-top: 5px;margin-left: 10px;" id="searchButton" type="info" @click="dialogFormVisibles=true;fetchFlows()">非钢化流程卡查询</el-button> <el-switch style="margin-top: 5px;margin-left: 10px;" v-model="ganghua" class="mb-2" :inactive-text="$t('searchOrder.temperedswitch')" @change="handleChange" /> <el-button style="margin-top: 10px;margin-left: 10px;margin-bottom: 10px;" id="searchButton" type="primary" @click="dialogFormVisibleaDownGlasss = true">人工下片 </el-button> <el-card style="flex: 1;margin-left: 10px;margin-top: 5px;" v-loading="loading"> <div style="width: 98%; height: calc(100% - 35px); overflow-y: auto;max-height: 100px;"> <el-table height="100px" ref="table" @@ -897,9 +970,9 @@ <el-table-column prop="bigStorageCageOutTask.trainNumber" align="center" :label="$t('searchOrder.trips')" min-width="120" /> <el-table-column prop="bigStorageCageOutTask.serialNumber" align="center" :label="$t('searchOrder.number')" min-width="120" /> <el-table-column prop="bigStorageCageOutTask.taskState" align="center" :label="$t('searchOrder.taskstatus')" min-width="157"> <template #default="scope"> <el-tag type="success" >{{ scope.row.bigStorageCageOutTask.taskState==0? $t('searchOrder.filmenter') : $t('searchOrder.infilm') }}</el-tag> </template> <!-- <template #default="scope"> <el-tag type="success" >{{ scope.row.bigStorageCageOutTask.taskState==0? $t('searchOrder.filmenter') : $t('searchOrder.infilm') }}111</el-tag> </template> --> </el-table-column> <!-- <el-table-column prop="id" align="center" :label="$t('searchOrder.tabid')" min-width="150"/> --> <el-table-column prop="deviceId" align="center" :label="$t('searchOrder.tid')" min-width="100"/> @@ -1615,6 +1688,33 @@ </el-table-column> </el-table> </el-dialog> <el-dialog v-model="dialogFormVisibleaDownGlasss" top="2vh" width="97%" :title="$t('人工下片信息')"> <div style="display:flex;justify-content: space-around;"> <el-card style="display: flex; justify-content: center; align-items: center; width: 800px; height: 800px;position: relative;"> <div :style="{ width: scanGlass.width + 'px', height: scanGlass.height + 'px', backgroundColor: '#e1f3d8', transform: 'scale(' + 800 / (scanGlass.width > scanGlass.height ? scanGlass.width : scanGlass.height) + ')' }"> </div> <div style="font-size: 50px; text-align: center;position: absolute;top:0px;left:200px;"> <div>扫码枪当前玻璃信息</div> <div> <el-button type="primary" @click="open1(scanGlass)">打印标签</el-button> </div> <div>{{ scanGlass.flowCardId }}</div> <div>{{ scanGlass.layer }}</div> <div>{{ scanGlass.glassId }}</div> <div>{{ scanGlass.width }}</div> <div>{{ scanGlass.height }}</div> </div> </el-card> </div> </el-dialog> <el-dialog id="sizePrintCalrd1" v-model="dialogTableVisible1" destroy-on-close> <print-label id="printFlowCard" :printFlowCardId="printFlowCardId" :printLayer="printLayer" :printGlassId="printGlassId" style=""/> </el-dialog> </template> <style scoped> #dt { display:block; float:left;line-height: 20px;margin-left: 100px;} UI-Project/src/views/UnLoadGlass/loadmachinerack.vue
@@ -1,14 +1,18 @@ <script setup> import {onBeforeUnmount, onMounted, onUnmounted, reactive, ref} from "vue"; import {useRouter} from "vue-router" import {useI18n} from 'vue-i18n' import {ElMessage} from 'element-plus' import { onBeforeUnmount, onMounted, onUnmounted, reactive, ref } from "vue"; import { useRouter } from "vue-router" import { useI18n } from 'vue-i18n' import { ElMessage } from 'element-plus' import request from "@/utils/request"; import {closeWebSocket, initializeWebSocket} from '@/utils/WebSocketService'; import {host, WebSocketHost} from '@/utils/constants' import { closeWebSocket, initializeWebSocket } from '@/utils/WebSocketService'; import { host, WebSocketHost } from '@/utils/constants' import PrintFlow from "@/views/UnLoadGlass/PrintFlow.vue"; import Landingindication from "./Landingindication.vue"; import Landingindicationtwo from "./Landingindicationtwo.vue"; import PrintLabel from "@/views/UnLoadGlass/PrintCustomLabelSemi1.vue"; const router = useRouter() const {t} = useI18n() const { t } = useI18n() let language = ref(localStorage.getItem('lang') || 'zh') const printLoading = ref(true) const fullFlowCard = ref('') @@ -231,7 +235,7 @@ scanGlass.value.width = height; scanGlass.value.height = width; } if (autoPrint.value == true && browser.value == true) { if(autoPrint.value == true && browser.value == true){ open1(scanGlass); } } @@ -537,9 +541,7 @@ </div> <div style="font-size: 50px; text-align: center;position: absolute;top:0px;left:170px;"> <div>人工下片当前玻璃信息</div> <div> <el-button type="primary" @click="open1(takeGlass)">打印标签</el-button> </div> <div><el-button type="primary" @click="open1(takeGlass)" >打印标签</el-button></div> <div>{{ takeGlass.flowCardId }}</div> <div>{{ takeGlass.layer }}</div> <div>{{ takeGlass.glassId }}</div> @@ -555,9 +557,7 @@ </div> <div style="font-size: 50px; text-align: center;position: absolute;top:0px;left:200px;"> <div>扫码枪当前玻璃信息</div> <div> <el-button type="primary" @click="open1(scanGlass)">打印标签</el-button> </div> <div><el-button type="primary" @click="open1(scanGlass)" >打印标签</el-button></div> <div>{{ scanGlass.flowCardId }}</div> <div>{{ scanGlass.layer }}</div> <div>{{ scanGlass.glassId }}</div> @@ -629,8 +629,7 @@ style="width: 100%;height: 100%" /> </el-dialog> <el-dialog id="sizePrintCalrd1" v-model="dialogTableVisible1" destroy-on-close> <print-label id="printFlowCard" :printFlowCardId="printFlowCardId" :printLayer="printLayer" :printGlassId="printGlassId" style=""/> <print-label id="printFlowCard" :printFlowCardId="printFlowCardId" :printLayer="printLayer" :printGlassId="printGlassId" style="" /> </el-dialog> </template> hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/DamageService.java
@@ -18,8 +18,6 @@ */ public interface DamageService extends MPJBaseService<Damage> { List<Damage> selectDamage(String startTime, String endTime, int type, String workingProcedure); List<Damage> selectDamage(String startTime, String endTime, int type, int status, String workingProcedure); // List<Damage> selectDamage(String startTime, String endTime, int type, int status, String workingProcedure); hangzhoumesParent/common/servicebase/src/main/java/com/mes/damage/service/impl/DamageServiceImpl.java
@@ -53,10 +53,6 @@ @Resource WorkAssignmentMapper workAssignmentMapper; @Override public List<Damage> selectDamage(String startTime, String endTime, int type, String workingProcedure) { return null; } /** * 查询报工信息 @@ -174,14 +170,22 @@ */ @Override public void insertDamage(Damage damage) { List<Damage> damage1 = baseMapper.selectList( new LambdaQueryWrapper<Damage>() .ne(Damage::getType, Const.GLASS_STATE_DAMAGE) .ne(Damage::getType, Const.GLASS_STATE_TAKE) .eq(Damage::getLine, damage.getLine()) .eq(Damage::getWorkingProcedure, damage.getWorkingProcedure()) .eq(Damage::getGlassId, damage.getGlassId()) ); List<Damage> damage1 = null; if (Const.GLASS_STATE_DAMAGE.equals(damage.getType()) || Const.GLASS_STATE_TAKE.equals(damage.getType())) { damage1 = baseMapper.selectList( new LambdaQueryWrapper<Damage>() .in(Damage::getType, Const.GLASS_STATE_DAMAGE, Const.GLASS_STATE_TAKE) .eq(Damage::getGlassId, damage.getGlassId()) ); } else { damage1 = baseMapper.selectList( new LambdaQueryWrapper<Damage>() .notIn(Damage::getType, Const.GLASS_STATE_DAMAGE, Const.GLASS_STATE_TAKE) .eq(Damage::getLine, damage.getLine()) .eq(Damage::getWorkingProcedure, damage.getWorkingProcedure()) .eq(Damage::getGlassId, damage.getGlassId()) ); } if (damage1 == null || damage1.size() == 0) { LambdaQueryWrapper<GlassInfo> glassInfoSelectWrapper = new LambdaQueryWrapper<>(); glassInfoSelectWrapper.eq(GlassInfo::getGlassId, damage.getGlassId()); hangzhoumesParent/moduleService/CacheGlassModule/src/main/java/com/mes/edgstoragecage/service/impl/EdgStorageCageDetailsServiceImpl.java
@@ -334,39 +334,6 @@ } /** * 获取 工程下的钢化版图 * * @param current * @return */ @Override public List<List<Map<String, Object>>> selectTemperingTerritory(String current) { //此工程的所有优化数据 List<Map<String, Object>> resultCutTerritory = optimizeHeatDetailMapper.selectJoinMaps(JoinWrappers.lambda(OptimizeHeatDetail.class) .selectAll(OptimizeHeatDetail.class) .selectAs(OptimizeProject::getLoadWidth, "olWidth") .selectAs(OptimizeProject::getLoadLength, "olHeight") .leftJoin(OptimizeHeatLayout.class, on -> on .eq(OptimizeHeatLayout::getProjectNo, OptimizeHeatDetail::getProjectNo) .eq(OptimizeHeatLayout::getLayoutId, OptimizeHeatDetail::getLayoutId)) .leftJoin(OptimizeProject.class, on -> on .eq(OptimizeProject::getProjectNo, OptimizeHeatLayout::getProjectNo)) .eq(OptimizeHeatDetail::getProjectNo, current) ); Map<String, List<Map<String, Object>>> groupBy = resultCutTerritory.stream().collect(Collectors.groupingBy(item -> item.get("layout_id").toString())); // List<List<Map<String, Object>>> Result=groupBy.values().stream().collect(Collectors.toList()); List<List<Map<String, Object>>> result = new ArrayList<>(); for (int i = 1; i <= groupBy.keySet().size(); i++) { String key = i + ""; if (key != null) { result.add(groupBy.get(key)); } } return result; } /** * 查询笼内版图差值范围内的 此尺寸玻璃 如无则按照 钢化版图序号 以及玻璃序号 * * @param glassId hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcSlicecage.java
@@ -1,19 +1,27 @@ package com.mes.job; import cn.hutool.json.JSONObject; import cn.smallbun.screw.core.util.CollectionUtils; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.mes.bigstorage.entity.BigStorageCageDetails; import com.mes.bigstorage.service.BigStorageCageDetailsService; import com.mes.bigstorage.service.BigStorageCageService; import com.mes.common.utils.RedisUtil; import com.mes.glassinfo.entity.GlassInfo; import com.mes.glassinfo.service.GlassInfoService; import com.mes.temperingglass.entity.TemperingGlassInfo; import com.mes.temperingglass.service.TemperingGlassInfoService; import com.mes.tools.WebSocketServer; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.Socket; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -33,6 +41,14 @@ private TemperingGlassInfoService temperingGlassInfoService; @Resource private RedisUtil redisUtil; @Autowired private GlassInfoService glassInfoService; @Value("${mes.scan.ip}") private String scanIp; @Value("${mes.scan.port}") private Integer scanPort; private JSONObject jsonObject = new JSONObject(); @@ -67,6 +83,14 @@ temperingSwitch = redisUtil.getCacheObject("temperingSwitch"); } jsonObject.append("temperingSwitch", temperingSwitch); //打印开关 boolean autoPrint = false; if (redisUtil.getCacheObject("autoPrint") == null) { redisUtil.setCacheObject("autoPrint", false); } else { autoPrint = redisUtil.getCacheObject("autoPrint"); } jsonObject.append("autoPrint", autoPrint); //当前指定工程 String temperingengineerId = ""; @@ -144,4 +168,34 @@ } } @Scheduled(fixedDelay = Long.MAX_VALUE) public void scanCodeTask() { log.info("扫描任务已启动"); while (true) { JSONObject jsonObject = new JSONObject(); try (Socket socket = new Socket(scanIp, scanPort); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) { // 接收服务器响应 log.info("等待扫码中......"); String glassId = in.readLine(); log.info("扫描到的玻璃id:{}", glassId); List<WebSocketServer> sendwServer = WebSocketServer.sessionMap.get("slicecage"); if (CollectionUtils.isNotEmpty(sendwServer)) { //按照玻璃id获取玻璃信息返回给前端界面,具体需要哪些数据待确认 GlassInfo glassInfo = glassInfoService.getOne(new LambdaQueryWrapper<GlassInfo>() .eq(GlassInfo::getGlassId, glassId).last("limit 1")); if (null == glassInfo) { log.info("按照玻璃id:{},无法找到玻璃信息", glassId); } else { for (WebSocketServer webserver : sendwServer) { jsonObject.append("scanGlass", glassInfo); webserver.sendMessage(jsonObject.toString()); } } } } catch (Exception exception) { log.info("读取异常,原因为{}", exception.getMessage()); } } } } hangzhoumesParent/moduleService/CacheVerticalGlassModule/src/main/java/com/mes/job/PlcStorageCageTask.java
@@ -585,10 +585,10 @@ String d05ToMES = plcParameterObject.getPlcParameter("D05ToMES").getValue(); String mesD03Address = plcParameterObject.getPlcParameter("MESToD03").getAddress(); String mesD05Address = plcParameterObject.getPlcParameter("MESToD05").getAddress(); if(!REQUEST_WORD.equals(d01ToMES)){ if (!REQUEST_WORD.equals(d01ToMES)) { S7object.getinstance().plccontrol.writeWord(mesD01Address, 0); } if(!REQUEST_WORD.equals(d04ToMES)){ if (!REQUEST_WORD.equals(d04ToMES)) { S7object.getinstance().plccontrol.writeWord(mesD04Address, 0); } if (!REQUEST_WORD.equals(d03ToMES)) { @@ -598,29 +598,75 @@ S7object.getinstance().plccontrol.writeWord(mesD05Address, 0); } } /** * 进片状态修改 */ // @Scheduled(fixedDelay = 300) public void feedStatusUpdate() { List<String> glassIds1=null; List<String> glassIds2=null; List<BigStorageCageFeedTask> bigStorageCageFeedTasks1=bigStorageCageFeedTaskService.list( PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; List<String> glassIds1 = null; List<String> glassIds2 = null; for (int i = 1; i <= 2; i++) { String line1GlassId = plcParameterObject.getPlcParameter("D03ID" + i).getAddress(); if (StringUtils.isEmpty(line1GlassId)) { glassIds1.add(line1GlassId); } String line2GlassId = plcParameterObject.getPlcParameter("D05ID" + i).getAddress(); if (StringUtils.isEmpty(line2GlassId)) { glassIds1.add(line2GlassId); } } List<BigStorageCageFeedTask> bigStorageCageFeedTasks1 = bigStorageCageFeedTaskService.list( new LambdaQueryWrapper<BigStorageCageFeedTask>() .eq(BigStorageCageFeedTask::getTaskState,1) .eq(BigStorageCageFeedTask::getLine,Const.ARTIFICIAL_OUT_TARGET_POSITION) .eq(BigStorageCageFeedTask::getTaskState, 1) .eq(BigStorageCageFeedTask::getLine, Const.A09_OUT_TARGET_POSITION) ); List<BigStorageCageFeedTask> bigStorageCageFeedTasks2=bigStorageCageFeedTaskService.list( List<BigStorageCageFeedTask> bigStorageCageFeedTasks2 = bigStorageCageFeedTaskService.list( new LambdaQueryWrapper<BigStorageCageFeedTask>() .eq(BigStorageCageFeedTask::getTaskState,1) .eq(BigStorageCageFeedTask::getLine,Const.TEMPERING_OUT_TARGET_POSITION) .eq(BigStorageCageFeedTask::getTaskState, 1) .eq(BigStorageCageFeedTask::getLine, Const.A10_OUT_TARGET_POSITION) ); // if(CollectionUtils.isNotEmpty(bigStorageCageFeedTasks1)){ // // } // if(CollectionUtils.isNotEmpty(bigStorageCageFeedTasks1)){ // // } if (CollectionUtils.isNotEmpty(bigStorageCageFeedTasks1)) { List<String> matchingIds1 = bigStorageCageFeedTasks1.stream() .map(BigStorageCageFeedTask::getGlassId) .filter(glassIds1::contains) .distinct() .collect(Collectors.toList()); } if (CollectionUtils.isNotEmpty(bigStorageCageFeedTasks2)) { List<String> matchingIds2 = bigStorageCageFeedTasks2.stream() .map(BigStorageCageFeedTask::getGlassId) .filter(glassIds2::contains) .distinct() .collect(Collectors.toList()); } bigStorageCageFeedTaskService.update( new LambdaUpdateWrapper<BigStorageCageFeedTask>() .in(BigStorageCageFeedTask::getGlassId, glassIds1, glassIds2) .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) ); if (glassIds1 == null) { bigStorageCageFeedTaskService.update( new LambdaUpdateWrapper<BigStorageCageFeedTask>() .eq(BigStorageCageFeedTask::getLine,Const.A09_OUT_TARGET_POSITION) .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) .gt(BigStorageCageFeedTask::getTargetSlot, 0) .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_CAR) ); } if (glassIds1 == null) { bigStorageCageFeedTaskService.update( new LambdaUpdateWrapper<BigStorageCageFeedTask>() .eq(BigStorageCageFeedTask::getLine,Const.A10_OUT_TARGET_POSITION) .eq(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_UP) .gt(BigStorageCageFeedTask::getTargetSlot, 0) .lt(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_SLOT) .set(BigStorageCageFeedTask::getTaskState, Const.BIG_STORAGE_IN_CAR) ); } } /** @@ -713,11 +759,16 @@ //向plc写入确认字 int returnData = 0; int count = 1; while (returnData == 0) { while (returnData != 0) { S7object.getinstance().plccontrol.writeWord(mesAddress, 1); returnData = S7object.getinstance().plccontrol.readWord(mesAddress, 1).get(0); log.info("进卧转立第{}次发送确认字完成,地址为:{},写入的内容为{}", count++, mesAddress, returnData); PlcParameterObject plcParameterObject = S7object.getinstance().PlcMesObject; if (Const.A10_OUT_TARGET_POSITION.equals(line)) { returnData = Integer.parseInt(plcParameterObject.getPlcParameter("D04ToMES").getValue()); } else { returnData = Integer.parseInt(plcParameterObject.getPlcParameter("D01ToMES").getValue()); } // returnData = S7object.getinstance().plccontrol.readWord(mesAddress, 1).get(0); log.info("进卧转立第{}次发送确认字完成,地址为:{},写入的内容为{}", count++, mesAddress, 1); } } //记录无法放下玻璃,后续判断启动 @@ -837,10 +888,15 @@ } int returnData = 0; int count = 1; while (returnData == 0) { while (returnData != 0) { s7control.writeWord(outLine, 2); returnData = s7control.readWord(outLine, 1).get(0); log.info("已向plc第{}次发送进片任务确认,地址为:{},写入的内容为{}", count++, outLine, returnData); if (line.equals(Const.A09_OUT_TARGET_POSITION)) { returnData = Integer.parseInt(plcMesObject.getPlcParameter("MESToD03").getValue()); } else { returnData = Integer.parseInt(plcMesObject.getPlcParameter("MESToD05").getValue()); } // returnData = s7control.readWord(outLine, 1).get(0); log.info("已向plc第{}次发送进片任务确认,地址为:{},写入的内容为{}", count++, outLine, 2); } } @@ -953,7 +1009,8 @@ log.info("将出片玻璃{}玻璃状态改为已出片", glassIds); bigStorageCageDetailsService.update(new LambdaUpdateWrapper<BigStorageCageDetails>() .set(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT_ING) .in(BigStorageCageDetails::getGlassId, glassIds)); .in(BigStorageCageDetails::getGlassId, glassIds) .ne(BigStorageCageDetails::getState, Const.GLASS_STATE_OUT)); // int returnData = 0; // int count = 1; // while (returnData == 0) { hangzhoumesParent/moduleService/UnLoadGlassModule/src/main/java/com/mes/job/Downpush.java
@@ -158,7 +158,7 @@ jsonObject4.append("downGlassInfos", downGlassInfos); jsonObject4.append("engineerIdList", engineerIdList); //钢化开关 //打印开关 boolean autoPrint = false; if (redisUtil.getCacheObject("autoPrint") == null) { redisUtil.setCacheObject("autoPrint", false);