From f0cb33e529228c5474d21a57234a237099819f6c Mon Sep 17 00:00:00 2001 From: zds <2388969634@qq.com> Date: Thu, 13 Mar 2025 12:56:58 +0800 Subject: [PATCH] =?UTF-8?q?opt:=E4=BC=98=E5=8C=96=E5=85=85=E7=94=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agv/server/impl/NDCAgvServiceImpl.java | 28 +++++----- .../run/OneNDCSocketConnectionAutoRun.java | 51 +++++++------------ .../agv/ndcone/AgvNdcOneDeviceDriver.java | 24 +++++++-- .../service/impl/InstructionServiceImpl.java | 2 +- .../system/service/dict/ISysDictService.java | 14 +++++ .../service/dict/impl/SysDictServiceImpl.java | 33 ++++++++++++ 6 files changed, 98 insertions(+), 54 deletions(-) diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java index 69f45bf..6efb414 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java @@ -1,5 +1,6 @@ package org.nl.acs.agv.server.impl; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -23,6 +24,7 @@ import org.nl.common.utils.CodeUtil; import org.nl.config.SpringContextHolder; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.HashMap; import java.util.List; @@ -197,24 +199,19 @@ public class NDCAgvServiceImpl implements NDCAgvService { } @Override + @Transactional(rollbackFor = Exception.class) public void charge(String carno) { //检查数据字典station为0的参数 //分配车辆 - List dictList= dictService.getDictByName("station"); + Dict dict = dictService.getDictByName3("station",carno,null); int satation=0; - Dict temp=new Dict(); - for(Dict dict : dictList){ - if ("1".equals(dict.getValue())&&carno.equals(dict.getPara2())){ - log.info("当前车辆{}已分配充电桩{},退出后续判断",carno,dict.getPara1()); - return; - } + if(ObjectUtil.isNotEmpty(dict)){ + log.info("当前车辆{}已分配充电桩{},退出后续判断",carno,dict.getPara1()); + return; } - for(Dict dict : dictList){ - if ("0".equals(dict.getValue())){ - satation = Integer.parseInt(dict.getPara1()); - temp=dict; - break; - } + Dict temp = dictService.getDictByName2("station"); + if(ObjectUtil.isNotEmpty(temp)){ + satation = Integer.parseInt(temp.getPara1()); } if(satation!=0){ String instcode =CodeUtil.getNewCode("INSTRUCT_NO"); @@ -238,7 +235,7 @@ public class NDCAgvServiceImpl implements NDCAgvService { (byte) 0X00, (byte) 0X0E, (byte) 0X00, (byte) 0X01, (byte) 0X00, (byte) 0X71, - (byte) 0X00, (byte) 0X0A, + (byte) 0X00, (byte) 0X08, (byte) 0X64, (byte) 0X80, (byte) 0X00, (byte) 0X01, (byte) ikeyhigh, (byte) ikeylow, @@ -255,7 +252,8 @@ public class NDCAgvServiceImpl implements NDCAgvService { } temp.setValue("1"); - temp.setPara2(String.valueOf(carno)); + temp.setPara2(carno); + temp.setPara3("下发充电"); dictService.updateDetail(temp); }else{ diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java index 65f0fe5..e265f5d 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java @@ -9,8 +9,6 @@ import org.nl.acs.device.domain.Device; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.basedriver.agv.ndcone.AgvNdcOneDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_autodoor.StandardAutodoorDeviceDriver; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.impl.InstructionServiceImpl; @@ -31,7 +29,6 @@ import java.io.DataOutputStream; import java.io.IOException; import java.net.Socket; import java.util.Date; -import java.util.List; import static org.nl.acs.agv.server.impl.NDCAgvServiceImpl.Bytes2HexString; @@ -81,7 +78,6 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { System.out.println("NDCAgv链接开始"); ISysParamService ISysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class); InstructionService instructionService = SpringContextHolder.getBean(InstructionServiceImpl.class); - AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); NDCAgvService NDCAgvService = SpringContextHolder.getBean(NDCAgvService.class); DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); @@ -131,16 +127,10 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { //车号 int carno = arr[20]; //充电桩站点号 - int station = arr[25]; - + int station=arr[25]; Instruction link_inst = null; Instruction inst = null; - List insts = null; boolean link_flag = false; - Device agv_device = null; - if (carno != 0) { - agv_device = deviceAppService.findDeviceByCode(String.valueOf(carno)); - } if (ikey != 0) { inst = instructionService.findByCodeFromCache(String.valueOf(ikey)); if (ObjectUtil.isEmpty(inst)) { @@ -151,7 +141,7 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { link_flag = true; } log.info("接收agv上报信息:" + bs); - log.info("接收agv上报信息:" + "phase--" + phase + " index--" + index + " ikey--" + ikey + " agvaddr--" + agvaddr + " carno--" + carno+" station--"+station); + log.info("接收agv上报信息:" + "phase--" + phase + " index--" + index + " ikey--" + ikey + " agvaddr--" + agvaddr + " carno--" + carno); Device device = null; String device_code = null; String old_device_code = null; @@ -244,24 +234,20 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { //(需要WCS反馈) }else if (phase == 0xFF) { - if (!ObjectUtil.isEmpty(inst)) { - if (!ObjectUtil.isEmpty(inst)) { - instructionService.cancelNOSendAgv(inst.getInstruction_id()); - taskService.cancel(inst.getTask_id()); - } + if (ObjectUtil.isNotEmpty(inst)) { + instructionService.cancelNOSendAgv(inst.getInstruction_id()); + taskService.cancel(inst.getTask_id()); } data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0); //充电任务下发成功上报 } else if (phase == 0x64){ log.info("AGV车号{}反馈充电任务下发成功,锁定充电桩{}",agvaddr,station); - List dictList= dictService.getDictByName("station"); - for(Dict dict : dictList){ - if (Integer.parseInt(dict.getPara1())==station){ - dict.setValue("1"); - dict.setPara2(String.valueOf(agvaddr)); - dictService.updateDetail(dict); - break; - } + Dict dict = dictService.getDictByName3("station",null,String.valueOf(station)); + if (ObjectUtil.isNotEmpty(dict)){ + dict.setValue("1"); + dict.setPara2(String.valueOf(agvaddr)); + dict.setPara3("下发成功"); + dictService.updateDetail(dict); } //充电成功 }else if (phase == 0x65){ @@ -269,14 +255,12 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { //充电取消上报 }else if (phase == 0x66){ log.info("AGV车号{}反馈充电任务已取消,释放充电桩{}",agvaddr,station); - List dictList= dictService.getDictByName("station"); - for(Dict dict : dictList){ - if (Integer.parseInt(dict.getPara1())==station){ - dict.setValue("0"); - dict.setPara2(""); - dictService.updateDetail(dict); - break; - } + Dict dict = dictService.getDictByName3("station",String.valueOf(agvaddr),String.valueOf(station)); + if (ObjectUtil.isNotEmpty(dict)){ + dict.setValue("0"); + dict.setPara2(""); + dict.setPara3(""); + dictService.updateDetail(dict); } } @@ -314,7 +298,6 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { } } catch (Exception e) { - System.out.println("OneAgv链接异常"); log.info("OneAgv链接异常"); log.error("agv连接出现异常:{}", e); logServer.deviceExecuteLog("1", "", "", "agv异常" + e.getMessage()); diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java index c708830..b754bba 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java @@ -35,9 +35,12 @@ import org.nl.acs.task.domain.Task; import org.nl.acs.task.service.TaskService; import org.nl.acs.task.service.dto.TaskDto; import org.nl.acs.task.service.impl.TaskServiceImpl; +import org.nl.system.service.dict.ISysDictService; +import org.nl.system.service.dict.dao.Dict; import org.nl.system.service.param.ISysParamService; import org.nl.config.SpringContextHolder; import org.nl.system.service.param.impl.SysParamServiceImpl; +import org.springframework.beans.factory.annotation.Autowired; import java.util.List; @@ -57,6 +60,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); + ISysDictService dictService = SpringContextHolder.getBean(ISysDictService.class); int agvaddr = 0; int agvaddr_copy = 0; int weight = 0; @@ -334,10 +338,22 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic log.info("接收agv上报信息,is_atuo_electric:" + is_atuo_electric); if("1".equals(is_atuo_electric)){ int electric = Integer.parseInt(paramService.findByCode(AcsConfig.ELECTRIC).getValue()); - if (electric_qty>0&&electric_qty < electric) { - log.info("当前车辆{}电量为{}低于{},开始判断是否需要充电!", this.device_code, electric_qty,electric); - NDCAgvService.charge(String.valueOf(this.agvaddr)); - isCharge =true; + if (electric_qty>0 && electric_qty < electric) { + log.info("当前车辆{}电量为{}低于{},开始判断是否需要充电!", this.agvaddr, electric_qty,electric); + //判断是否已下发充电任务 + Dict dict1 = dictService.getDictByName3("station",String.valueOf(this.agvaddr),null); + if(ObjectUtil.isNotEmpty(dict1)){ + log.info("当前车辆{}已分配充电桩{},退出后续判断",carno,dict1.getPara1()); + }else{ + //未下发,判断是否有空闲充电桩 + Dict dict = dictService.getDictByName2("station"); + if(ObjectUtil.isNotEmpty(dict)){ + NDCAgvService.charge(String.valueOf(this.agvaddr)); + isCharge =true; + }else{ + log.info("当前车辆{}电量为{}低于{},但无空闲充电桩!", this.agvaddr, electric_qty,electric); + } + } } } } else if (phase == 0x74) { diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index b7fbb05..439a25b 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -960,7 +960,7 @@ public class InstructionServiceImpl extends CommonServiceImpl { */ List getDictByName(String name); + /** + * 获取字典明细 + * @param name + * @return + */ + Dict getDictByName2(String name); + + /** + * 获取字典明细 + * @param name + * @return + */ + Dict getDictByName3(String name,String carno,String station); + /** * 添加字典明细 * @param resources diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dict/impl/SysDictServiceImpl.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dict/impl/SysDictServiceImpl.java index ae50dfb..bc055c2 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dict/impl/SysDictServiceImpl.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/system/service/dict/impl/SysDictServiceImpl.java @@ -124,6 +124,39 @@ public class SysDictServiceImpl extends ServiceImpl impleme return dictList; } + @Override + public Dict getDictByName2(String name) { + Dict dict = null; + List dictList = sysDictMapper.selectList( + new LambdaQueryWrapper() + .eq(Dict::getCode, name) + .eq(Dict::getValue, "0") + .and(slam -> slam.isNull(Dict::getPara2) + .or() + .eq(Dict::getPara2, "")) + ); + if (ObjectUtil.isNotEmpty(dictList) && dictList.size()>0){ + dict = dictList.get(0); + } + return dict; + } + + @Override + public Dict getDictByName3(String name,String carno,String station) { + Dict dict = null; + List dictList = sysDictMapper.selectList( + new LambdaQueryWrapper() + .eq(Dict::getCode, name) + .eq(ObjectUtil.isNotEmpty(carno),Dict::getPara2, carno) + .eq(ObjectUtil.isNotEmpty(station),Dict::getPara1, station) + .eq(Dict::getValue,"1") + ); + if (ObjectUtil.isNotEmpty(dictList) && dictList.size()>0){ + dict = dictList.get(0); + } + return dict; + } + @Override @Transactional(rollbackFor = Exception.class) public void createDetail(Dict dict) {