src/main/java/com/zy/asrs/controller/TVController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/NoLiftOutServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/TransportLiftOutServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/model/protocol/StaProtocol.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/impl/FyDevpThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/sql/20250419211417.nb3 | 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/sql/20250425082153.nb3 | 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/TVController.java
@@ -23,6 +23,7 @@ import com.zy.common.model.SearchLocParam; import com.zy.common.service.CommonService; import com.zy.common.utils.HttpHandler; import com.zy.common.utils.RedisUtil; import com.zy.core.cache.SlaveConnection; import com.zy.core.enums.SlaveType; import com.zy.core.model.LedSlave; @@ -33,6 +34,7 @@ import com.zy.core.thread.LedThread; import com.zy.core.thread.ShuttleThread; import com.zy.core.thread.impl.NormalLedThread; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; @@ -47,6 +49,7 @@ /** * Created by vincent on 2020/11/16 */ @Slf4j @RestController @RequestMapping("/monitor") public class TVController { @@ -66,6 +69,9 @@ private SlaveProperties slaveProperties; @Autowired private BasShuttleErrService basShuttleErrService; @Autowired private RedisUtil redisUtil; @Value("${asrs.wmsUrl}") private String wmsUrl; @@ -225,94 +231,40 @@ */ @GetMapping("/led") public R monitorLed(@RequestParam("ledId") Integer ledId) { int dev_no = 1012; int dev_no1 = 1011; int dev_no2 = 1012; int dev_no3 = 1015; if (ledId == 1) { dev_no = 1012; dev_no1 = 1011; dev_no2 = 1012; } else if (ledId == 2) { dev_no = 1014; dev_no1 = 1013; dev_no2 = 1015; dev_no3 = 1015; } else if (ledId == 3) { dev_no = 1022; dev_no1 = 1021; dev_no2 = 1022; dev_no3 = 1023; } else if (ledId == 4) { dev_no = 1025; dev_no1 = 1024; dev_no2 = 1025; dev_no3 = 1026; } BasDevp basDevp = basDevpService.selectOne(new EntityWrapper<BasDevp>().eq("dev_no", dev_no)); if (Cools.isEmpty(basDevp)) { return R.ok(); Object o1 = redisUtil.get("LED_" + dev_no1); Object o2 = redisUtil.get("LED_" + dev_no2); Object o3 = redisUtil.get("LED_" + dev_no3); if (o1 != null) { log.info("电视机显示1:{}", JSONObject.toJSONString(o1)); return R.ok().add(o1); } else if (o2 != null) { log.info("电视机显示2:{}", JSONObject.toJSONString(o2)); return R.ok().add(o2); } else if (o3 != null) { log.info("电视机显示3:{}", JSONObject.toJSONString(o3)); return R.ok().add(o3); } WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("wms_wrk_no", basDevp.getWrkNo())); if (Cools.isEmpty(wrkMast)) { return R.ok(); } List<LedCommand> commands = new ArrayList<>(); return R.ok(); // 组装命令 LedCommand ledCommand = new LedCommand(); ledCommand.setWorkNo(wrkMast.getWmsWrkNo()); ledCommand.setIoType(wrkMast.getIoType()); // 出库模式 switch (wrkMast.getIoType()) { case 1: ledCommand.setTitle("全板入库"); break; case 10: ledCommand.setTitle("空板入库"); break; case 101: ledCommand.setTitle("全板出库"); break; case 103: ledCommand.setTitle("拣料出库"); break; case 104: ledCommand.setTitle("并板出库"); break; case 107: ledCommand.setTitle("盘点出库"); break; case 110: ledCommand.setTitle("空板出库"); ledCommand.setEmptyMk(true); break; case 53: ledCommand.setTitle("拣料入库"); break; case 57: ledCommand.setTitle("盘点入库"); break; case 54: ledCommand.setTitle("并板入库"); break; default: break; } ledCommand.setSourceLocNo(wrkMast.getSourceLocNo()); ledCommand.setLocNo(wrkMast.getLocNo()); ledCommand.setStaNo(wrkMast.getStaNo()); if (wrkMast.getIoType() != 110 && wrkMast.getIoType() != 10) { Map<String, Object> param = new HashMap<>(); param.put("taskNo", wrkMast.getWmsWrkNo()); param.put("sta", wrkMast.getStaNo()); String response = null; try { response = new HttpHandler.Builder() .setUri(wmsUrl) .setPath("/rpc/led/getTask2") .setJson(JSON.toJSONString(param)) .build() .doPost(); } catch (IOException e) { e.printStackTrace(); } JSONObject jsonObject = JSON.parseObject(response); Integer code = jsonObject.getInteger("code"); if (code.equals(200)) { String data = jsonObject.getString("data"); List<LedCommand> wrkDetls = JSONArray.parseArray(data, LedCommand.class); commands.addAll(wrkDetls); } } return R.ok().add(commands); } /** @@ -381,6 +333,9 @@ continue; } HashMap<String, Object> map = new HashMap<>(); if (Cools.isEmpty(shuttleProtocol.getErrorCode())) { continue; } int i = Integer.parseInt(shuttleProtocol.getErrorCode()); if (i > 0) { BasShuttleErr basShuttleErr = basShuttleErrService.queryByCode(i); src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -1,8 +1,10 @@ package com.zy.asrs.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.core.common.Cools; import com.zy.asrs.domain.enums.NotifyMsgType; import com.zy.asrs.entity.*; import com.zy.asrs.service.*; @@ -20,14 +22,8 @@ import com.zy.core.cache.SlaveConnection; import com.zy.core.dispatcher.ShuttleDispatchUtils; import com.zy.core.enums.*; import com.zy.core.model.DevpSlave; import com.zy.core.model.LiftSlave; import com.zy.core.model.ShuttleSlave; import com.zy.core.model.Task; import com.zy.core.model.command.LiftAssignCommand; import com.zy.core.model.command.LiftCommand; import com.zy.core.model.command.ShuttleAssignCommand; import com.zy.core.model.command.ShuttleCommand; import com.zy.core.model.*; import com.zy.core.model.command.*; import com.zy.core.model.protocol.ForkLiftStaProtocol; import com.zy.core.model.protocol.LiftProtocol; import com.zy.core.model.protocol.ShuttleProtocol; @@ -38,12 +34,15 @@ import com.zy.core.thread.LiftThread; import com.zy.core.thread.ShuttleThread; import com.zy.core.thread.impl.FyDevpThread; import com.zy.core.thread.impl.NormalLedThread; import com.zy.system.service.ConfigService; import io.swagger.models.auth.In; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.IOException; import java.util.*; /** @@ -200,15 +199,8 @@ } // 退回 if (back) { if (!staProtocol.isLoading()) { continue; } if (!staProtocol.isPakMk()) { continue; } // led 异常显示 if (ledThread != null) { MessageQueue.offer(SlaveType.Led, inSta.getLed(), new Task(3, errMsg)); ledThread.error(errMsg); } } @@ -216,6 +208,9 @@ // 判断是否满足入库条件 if (staProtocol.isAutoing() && staProtocol.isLoading() && isInEnable(devpThread, inSta.getStaNo()) && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) && staProtocol.isPakMk()) { String barcode = staProtocol.getBarcode(); if (Cools.isEmpty(barcode) || "?".endsWith(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) { continue; } // 判断重复工作档 WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("source_sta_no", inSta.getStaNo()).eq("barcode", barcode)); if (wrkMast != null && wrkMast.getWrkSts() == WrkStsType.NEW_INBOUND.sts) { @@ -303,6 +298,34 @@ } else { staProtocol = staProtocol.clone(); } LedThread ledThread = (LedThread) SlaveConnection.get(SlaveType.Led, inSta.getLed()); String errMsg = ""; boolean back = false; if (!back && staProtocol.isBackErr()) { errMsg = "超宽异常"; back = true; } if (!back && staProtocol.isHighErr()) { errMsg = "超高异常"; back = true; } if (!back && staProtocol.isRightErr()) { errMsg = "超长异常"; back = true; } if (!back && staProtocol.isWeightErr()) { errMsg = "超重"; back = true; } // 退回 if (back) { // led 异常显示 if (ledThread != null) { ledThread.error(errMsg); } } Short workNo = staProtocol.getWorkNo(); if (staProtocol.isAutoing() && staProtocol.isLoading() && isInEnable(devpThread, inSta.getStaNo()) && !staProtocol.isEmptyMk() && (workNo == 0 || (workNo >= 9990 && workNo <= 9999)) && staProtocol.isPakMk()) { String barcode = staProtocol.getBarcode(); @@ -395,6 +418,8 @@ wrkMast.setModiTime(new Date()); if (!wrkMastService.updateById(wrkMast)) { News.info("{}任务,更新工作档失败", wrkMast.getWrkNo()); } else { setLedData(Integer.parseInt(wrkMast.getWmsWrkNo()), wrkMast.getStaNo()); } } } @@ -510,12 +535,39 @@ wrkMast.setModiTime(new Date()); wrkMast.setShuttleNo(null); wrkMastService.updateById(wrkMast); setLedData(Integer.parseInt(wrkMast.getWmsWrkNo()), wrkMast.getStaNo()); } } } } } private void setLedData(Integer wrkNo, Integer staNo) { try { Map<String, Object> param = new HashMap<>(); param.put("taskNo", wrkNo); String response = null; response = new HttpHandler.Builder() .setUri(wmsUrl) .setPath("/rpc/led/getTask2") .setJson(JSON.toJSONString(param)) .build() .doPost(); JSONObject jsonObject = JSON.parseObject(response); Integer code = jsonObject.getInteger("code"); if (code.equals(200)) { String data = jsonObject.getString("data"); List<LedCommand> wrkDetls = JSONArray.parseArray(data, LedCommand.class); redisUtil.set("LED_" + staNo, wrkDetls, 30); log.info("电视机数据设置:{},{}", staNo, data); } else { log.info("电视机数据设置异常:{},{}", wrkNo, response); } } catch (Exception e) { e.printStackTrace(); } } /** * 初始化实时地图 @@ -915,16 +967,22 @@ ledThread.error(errMsg); } } if (!staProtocol.isAutoing()) { News.info("{}任务,{}站点,不在自动状态", wrkMast.getWrkNo(), staProtocol.getSiteId()); return false; } String barcode = staProtocol.getBarcode(); if (!staProtocol.isLoading()) { News.info("{}任务,{}站点,无托盘", wrkMast.getWrkNo(), staProtocol.getSiteId()); return false; } if (wrkMast.getSourceStaNo() != 1031) { if (!staProtocol.isAutoing()) { News.info("{}任务,{}站点,不在自动状态", wrkMast.getWrkNo(), staProtocol.getSiteId()); return false; } if (Cools.isEmpty(barcode) || "?".endsWith(barcode) || "NG".endsWith(barcode) || "NoRead".equals(barcode) || "00000000".equals(barcode)) { return false; } if (!staProtocol.getBarcode().equals(wrkMast.getBarcode())) { News.info("{}任务,{}站点,托盘码不匹配,站点托盘码:{},任务托盘码:{}", wrkMast.getWrkNo(), staProtocol.getSiteId(), staProtocol.getBarcode(), wrkMast.getBarcode()); return false; @@ -956,6 +1014,7 @@ wrkMast.setSystemMsg("");//清空消息 wrkMast.setModiTime(now); if (wrkMastService.updateById(wrkMast)) { setLedData(Integer.parseInt(wrkMast.getWmsWrkNo()), wrkMast.getStaNo()); return false; } return false; @@ -1035,7 +1094,7 @@ return false; } } else if (sourceStaNo == 1012) { if (staProtocol.getWorkNo().intValue() != wrkMast.getWrkNo()) { if (staProtocol.getFinishWorkNo().intValue() != wrkMast.getWrkNo()) { News.info("{}任务,{}站点,任务号不一致", wrkMast.getWrkNo(), staProtocol.getSiteId()); return false; } @@ -1052,7 +1111,7 @@ } else if (wrkMast.getSourceStaNo() == 1032) { locNo = "0200308"; } boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleS(wrkMast.getWrkNo(), locNo, wrkMast.getLocNo(), "TRANSPORT_LIFT"); boolean dispatchShuttle = shuttleDispatchUtils.searchDispatchShuttleNoLift(wrkMast.getWrkNo(), locNo, wrkMast.getLocNo(), "TRANSPORT_LIFT"); if (!dispatchShuttle) { News.info("{}任务,调度小车失败", wrkMast.getWrkNo()); return false; @@ -1281,12 +1340,12 @@ //获取提升机命令 List<LiftCommand> liftCommands = liftThread.getPalletOutCommand(wrkMast.getWrkNo(), sourceLev, wrkMast.getStaNo()); LiftCommand liftCommand = liftCommands.get(0); if (wrkMast.getStaNo() == 1031) { liftCommand.setTaskNo(wrkMast.getWrkNo()); } else { int deviceWrk = commonService.getWorkNo(8);//生成提升机设备工作号 liftCommand.setTaskNo(deviceWrk);//更换随机任务号 } // if (wrkMast.getMainWrkNo() != null) { liftCommand.setTaskNo(wrkMast.getWrkNo()); // } else { // int deviceWrk = commonService.getWorkNo(8);//生成提升机设备工作号 // liftCommand.setTaskNo(deviceWrk);//更换随机任务号 // } ArrayList<LiftCommand> commands = new ArrayList<>(); commands.add(liftCommand); @@ -1304,6 +1363,7 @@ wrkMast.setModiTime(now); if (wrkMastService.updateById(wrkMast)) { setLedData(Integer.parseInt(wrkMast.getWmsWrkNo()), wrkMast.getStaNo()); //下发任务 liftAction.assignWork(wrkMast.getLiftNo(), assignCommand); return false; @@ -2263,6 +2323,10 @@ * 入出库模式切换函数 */ public synchronized void ioConvert() { for (LedSlave led : slaveProperties.getLed()) { NormalLedThread ledThread = (NormalLedThread) SlaveConnection.get(SlaveType.Led, led.getId()); ledThread.reset(); } try { // 根据输送线plc遍历 FyDevpThread devpThread = (FyDevpThread) SlaveConnection.get(SlaveType.Devp, 1); src/main/java/com/zy/asrs/service/impl/NoLiftInServiceImpl.java
@@ -489,7 +489,7 @@ assignCommand.setAuto(true);//自动模式 //获取小车到提升机行走命令 List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.DFX.id, assignCommand, shuttleThread); if (commands == null) { News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}小车,路径计算失败", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; @@ -861,7 +861,7 @@ assignCommand.setLocNo(wrkMast.getLocNo());//目标库位 List<ShuttleCommand> commands = new ArrayList<>(); Integer mapType = NavigationMapType.NORMAL.id; Integer mapType = NavigationMapType.DFX.id; List<ShuttleCommand> moveCommands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), wrkMast.getLocNo(), mapType, assignCommand, shuttleThread); if (moveCommands == null) { src/main/java/com/zy/asrs/service/impl/NoLiftOutServiceImpl.java
@@ -465,7 +465,7 @@ assignCommand.setAuto(true);//自动模式 //获取小车到提升机行走命令 List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.NORMAL.id, assignCommand, shuttleThread); List<ShuttleCommand> commands = shuttleOperaUtils.getStartToTargetCommands(shuttleProtocol.getCurrentLocNo(), liftThread.getLiftLocNo(Utils.getLev(shuttleProtocol.getCurrentLocNo())), NavigationMapType.DFX.id, assignCommand, shuttleThread); if (commands == null) { News.taskInfo(wrkMast.getWrkNo(), "{}任务,{}小车,路径计算失败", wrkMast.getWrkNo(), shuttleProtocol.getShuttleNo()); return false; src/main/java/com/zy/asrs/service/impl/TransportLiftOutServiceImpl.java
@@ -542,19 +542,19 @@ //去待机位 String locNo = Utils.getLocNo(Utils.getRow(liftStandByLocNo) + 1, Utils.getBay(liftStandByLocNo) - 1, Utils.getLev(liftStandByLocNo)); //防止另一辆车占用待机位 try{ try { if (shuttleProtocol.getShuttleNo() == 2) { ShuttleThread shuttleThread1 = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, 1); if (locNo.equals(shuttleThread1.getStatus().getCurrentLocNo())) { locNo = Utils.getLocNo(Utils.getRow(liftStandByLocNo) + 2, Utils.getBay(liftStandByLocNo) - 1, Utils.getLev(liftStandByLocNo)); locNo = Utils.getLocNo(Utils.getRow(liftStandByLocNo) - 1, Utils.getBay(liftStandByLocNo) - 1, Utils.getLev(liftStandByLocNo)); } } else { ShuttleThread shuttleThread2 = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, 2); if (locNo.equals(shuttleThread2.getStatus().getCurrentLocNo())) { locNo = Utils.getLocNo(Utils.getRow(liftStandByLocNo) + 2, Utils.getBay(liftStandByLocNo) - 1, Utils.getLev(liftStandByLocNo)); locNo = Utils.getLocNo(Utils.getRow(liftStandByLocNo) - 1, Utils.getBay(liftStandByLocNo) - 1, Utils.getLev(liftStandByLocNo)); } } }catch (Exception e){ } catch (Exception e) { } //获取小车到提升机待机行走命令 src/main/java/com/zy/core/dispatcher/ShuttleDispatchUtils.java
@@ -30,6 +30,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.rmi.CORBA.Util; import java.util.*; /** @@ -251,7 +252,7 @@ if (wrkMast1 != null) { wrkMast1.setShuttleNo(shuttleProtocol.getShuttleNo()); wrkMastService.updateById(wrkMast1); sameLev.add(0,shuttleThread); sameLev.add(0, shuttleThread); //return true; } break; @@ -364,7 +365,8 @@ */ public boolean searchDispatchShuttleNoLift(Integer wrkNo, String sourceLocNo, String locNo, String flag) { ArrayList<ShuttleThread> diffLev = new ArrayList<>();//不同楼层的穿梭车 int lev1 = 0; boolean tongLev = false; for (ShuttleSlave shuttle : slaveProperties.getShuttle()) { //获取四向穿梭车线程 ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttle.getId()); @@ -388,9 +390,16 @@ } } diffLev.add(shuttleThread); if (lev1 != 0) { if (lev1 == Utils.getLev(shuttleProtocol.getCurrentLocNo())) { tongLev = true; } } else { lev1 = Utils.getLev(shuttleProtocol.getCurrentLocNo()); } } //寻找离任务楼层最近的穿梭车(不考虑跨楼层小车移动距离) // if (!diffLev.isEmpty()) { Map<Integer, ShuttleThread> diffShuttles = new TreeMap<>();//自然排序小车Map //获取任务 @@ -422,19 +431,38 @@ //当前穿梭车库位号 String currentLocNo = shuttleProtocol.getCurrentLocNo(); int currentLev = Utils.getLev(currentLocNo); if (wrkMast1.getIoType() == 101 && currentLocNo.equals(locNo)) { //车辆当前位置已经是目标库位,调度该车 //给工作档绑定小车号 diffShuttles.put(-1, shuttleThread); diffShuttles.put(-2, shuttleThread); } else { // if (tongLev && diffLev.size() >= 2) { // //当前穿梭车线程到目标地点距离 // List<NavigateNode> currentShuttlePath = navigateUtils.calc(currentLocNo, locNo, NavigationMapType.NORMAL.id, Utils.getShuttlePoints(shuttleProtocol.getShuttleNo(), Utils.getLev(currentLocNo)), null);//搜索空闲穿梭车,使用正常通道地图 // if (currentShuttlePath == null) { // continue; // } // Integer currentAllDistance = navigateUtils.getOriginPathAllDistance(currentShuttlePath);//计算当前路径行走总距离 // diffShuttles.put(currentAllDistance, shuttleThread); // } else { //ABS(目标楼层 - 当前楼层) 得到差距,取最小差值 int currentValue = Math.abs(lev - currentLev); if (diffShuttles.get(currentValue) != null) { diffShuttles.put(currentValue + 1, shuttleThread); try { List<NavigateNode> currentShuttlePath = navigateUtils.calc(currentLocNo, locNo, NavigationMapType.NORMAL.id, Utils.getShuttlePoints(shuttleProtocol.getShuttleNo(), Utils.getLev(currentLocNo)), null);//搜索空闲穿梭车,使用正常通道地图 if (currentShuttlePath == null) { continue; } Integer currentAllDistance = navigateUtils.getOriginPathAllDistance(currentShuttlePath);//计算当前路径行走总距离 diffShuttles.put(currentAllDistance, shuttleThread); diffShuttles.put(currentValue - 1, shuttleThread); } catch (Exception e) { diffShuttles.put(currentValue + 1, shuttleThread); } } else { diffShuttles.put(currentValue, shuttleThread); } // } } } src/main/java/com/zy/core/model/protocol/StaProtocol.java
@@ -110,6 +110,7 @@ basDevp.setAutoing(autoing ? "Y" : "N"); basDevp.setLoading(loading ? "Y" : "N"); basDevp.setInEnable(inEnable ? "Y" : "N"); basDevp.setWrkNo1(finishWorkNo.intValue()); if (siteId == 105 || siteId == 205 || siteId == 346) { basDevp.setOutEnable(outInModel == 2 ? "Y" : "N"); } else { src/main/java/com/zy/core/thread/impl/FyDevpThread.java
@@ -204,11 +204,7 @@ BasDevp sqlModel = staProtocol.toSqlModel(); stations.add(sqlModel); //暂时写入数据库 BasDevp basDevp = basConveyorStaService.selectById(sta); if (basDevp == null) { basConveyorStaService.insert(sqlModel); } } if (!stations.isEmpty()) { if (null != basConveyorStaService && !basConveyorStaService.updateBatchById(stations)) { src/main/resources/sql/20250419211417.nb3Binary files differ
src/main/resources/sql/20250425082153.nb3Binary files differ