diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java index 3b2c9030b..d50af98ea 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java @@ -1,30 +1,22 @@ package org.nl.acs.agv.server.impl; -import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.AcsConfig; import org.nl.acs.agv.server.NDCAgvService; import org.nl.acs.agv.server.dto.AgvDto; import org.nl.acs.auto.run.OneNDCSocketConnectionAutoRun; -import org.nl.acs.auto.run.TwoNDC2SocketConnectionAutoRun; import org.nl.acs.auto.run.TwoNDCSocketConnectionAutoRun; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device.service.impl.DeviceServiceImpl; import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.log.LokiLog; import org.nl.acs.log.LokiLogType; import org.nl.acs.log.service.DeviceExecuteLogService; -import org.nl.acs.opc.Device; import org.nl.acs.opc.DeviceAppService; import org.nl.acs.opc.DeviceAppServiceImpl; -import org.nl.acs.opc.DeviceType; -import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.service.ParamService; import org.nl.modules.system.util.CodeUtil; import org.nl.modules.wql.util.SpringContextHolder; @@ -32,7 +24,6 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import java.util.HashMap; -import java.util.List; import java.util.Map; @Slf4j @@ -80,10 +71,7 @@ public class NDCAgvServiceImpl implements NDCAgvService { OneNDCSocketConnectionAutoRun.write(b); } else if (StrUtil.equals(inst.getAgv_system_type(), "2")) { TwoNDCSocketConnectionAutoRun.write(b); - } else if (StrUtil.equals(inst.getAgv_system_type(), "3")) { - TwoNDC2SocketConnectionAutoRun.write(b); } - System.out.println("下发删除agv指令数据:" + Bytes2HexString(b)); } @@ -198,8 +186,6 @@ public class NDCAgvServiceImpl implements NDCAgvService { if (StrUtil.equals(agv_system_type, "2")) { TwoNDCSocketConnectionAutoRun.write(b); - } else if (StrUtil.equals(agv_system_type, "3")) { - TwoNDC2SocketConnectionAutoRun.write(b); } } else { @@ -394,8 +380,6 @@ public class NDCAgvServiceImpl implements NDCAgvService { OneNDCSocketConnectionAutoRun.write(b); } else if (StrUtil.equals(agv_system, "2")) { TwoNDCSocketConnectionAutoRun.write(b); - } else if (StrUtil.equals(agv_system, "3")) { - TwoNDC2SocketConnectionAutoRun.write(b); } } catch (Exception e) { e.getMessage(); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/auto/run/HeartbeatOfflineCheckerAutoRun.java b/acs/nladmin-system/src/main/java/org/nl/acs/auto/run/HeartbeatOfflineCheckerAutoRun.java new file mode 100644 index 000000000..1002f9862 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/acs/auto/run/HeartbeatOfflineCheckerAutoRun.java @@ -0,0 +1,55 @@ +package org.nl.acs.auto.run; + +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.heartbeat.service.HeartbeatUnifiedService; +import org.nl.acs.heartbeat.service.impl.HeartbeatUnifiedServiceimpl; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.instruction.service.impl.InstructionServiceImpl; +import org.nl.acs.opc.ThreadUtl; +import org.nl.modules.wql.util.SpringContextHolder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Date; + +@Slf4j +@Component +public class HeartbeatOfflineCheckerAutoRun extends AbstractAutoRunnable { + @Autowired + AutoRunService autoRunService; + + private int recordTimeOut = 10000; + private Date recordTime; + int offline_loop_time_millions = 1000; + boolean heartbeat_no_use =false; + public HeartbeatOfflineCheckerAutoRun() { + this.recordTime = new Date((new Date()).getTime() - (long)this.recordTimeOut); + } + + public String getCode() { + return HeartbeatOfflineCheckerAutoRun.class.getSimpleName(); + } + + public String getName() { + return "在线监听器"; + } + + public void autoRun() { + InstructionService instructionService = SpringContextHolder.getBean(InstructionServiceImpl.class); + HeartbeatUnifiedService heartbeatUnifiedService = SpringContextHolder.getBean(HeartbeatUnifiedServiceimpl.class); + + for(; !heartbeat_no_use; ThreadUtl.sleep((long)offline_loop_time_millions)) { + try { + heartbeatUnifiedService.offlineChecker(); + } catch (Exception var3) { + Date date = new Date(); + if (date.getTime() - this.recordTime.getTime() < (long)this.recordTimeOut) { + return; + } + + this.recordTime = date; + } + } + + } +} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/auto/run/TwoNDC2SocketConnectionAutoRun.java b/acs/nladmin-system/src/main/java/org/nl/acs/auto/run/TwoNDC2SocketConnectionAutoRun.java deleted file mode 100644 index 762948e80..000000000 --- a/acs/nladmin-system/src/main/java/org/nl/acs/auto/run/TwoNDC2SocketConnectionAutoRun.java +++ /dev/null @@ -1,251 +0,0 @@ -package org.nl.acs.auto.run; - -import cn.hutool.core.util.ObjectUtil; -import cn.hutool.core.util.StrUtil; -import lombok.extern.slf4j.Slf4j; -import org.nl.acs.AcsConfig; -import org.nl.acs.agv.server.NDCAgvService; -import org.nl.acs.device.service.DeviceService; -import org.nl.acs.device_driver.basedriver.agv.ndctwo.AgvNdcTwoDeviceDriver; -import org.nl.acs.ext.wms.service.AcsToWmsService; -import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; -import org.nl.acs.instruction.service.InstructionService; -import org.nl.acs.instruction.service.dto.Instruction; -import org.nl.acs.instruction.service.impl.InstructionServiceImpl; -import org.nl.acs.opc.Device; -import org.nl.acs.opc.DeviceAppService; -import org.nl.modules.system.service.ParamService; -import org.nl.modules.system.service.impl.ParamServiceImpl; -import org.nl.modules.wql.util.SpringContextHolder; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; - -import java.io.DataInputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.net.Socket; -import java.util.Date; - -import static org.nl.acs.agv.server.impl.NDCAgvServiceImpl.Bytes2HexString; - - -@Slf4j -@Component -public class TwoNDC2SocketConnectionAutoRun extends AbstractAutoRunnable { - - Socket s; - String ip = "192.168.46.225"; - int port = 1234; - static DataOutputStream dos; - static DataInputStream dis; - private int recordTimeOut = 10000; - private Date recordTime; - String[] ERROR = new String[]{ - "货叉尖部传感器触发", "S300传感器触发", "载货状态改变", "急停按钮触发", "触边开关出发", "需要复位", - "停在充电位", "取货失败", "放货失败", "轮子打滑", "没有动作码不能进入站点", "取货时有货", "丢失定位", - "抬叉停止"}; - boolean bConnected = true; - - boolean isReConnect = false; - - @Autowired - ParamService paramService; - @Autowired - AutoRunService autoRunService; - - - public TwoNDC2SocketConnectionAutoRun() { - this.recordTime = new Date((new Date()).getTime() - (long) this.recordTimeOut); - } - - public String getCode() { - return TwoNDC2SocketConnectionAutoRun.class.getSimpleName(); - } - - public String getName() { - return "2楼2区域AGV系统"; - } - - public void autoRun() { - - try { - System.out.println("2楼2区域AGV系统链接开始"); - ParamService paramService = SpringContextHolder.getBean(ParamServiceImpl.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); - ip = paramService.findByCode(AcsConfig.AGVURL22).getValue(); - port = Integer.parseInt(paramService.findByCode(AcsConfig.AGVPORT22).getValue()); - byte[] b = new byte[1028]; - s = new Socket(ip, port); - System.out.println("2楼2区域AGV链接成功"); - dos = new DataOutputStream(s.getOutputStream()); - dis = new DataInputStream(s.getInputStream()); - - while (bConnected) { - int count = dis.read(b); - - if (count == -1) { - break; - } - - int[] arr = new int[count]; - StringBuffer bs = new StringBuffer(); - - for (int i = 0; i < count; i++) { - int temp = b[i]; - if (temp < 0) - temp += 256; - arr[i] = temp; - StringBuffer bs1 = new StringBuffer("0"); - bs.append(temp < 16 ? bs1.append(Integer.toHexString(temp)) : Integer.toHexString(temp)); - } - - System.out.println("收到请求参数:" + bs); - boolean flag = false; - if (arr[8] * 256 + arr[9] == 0x73) { - byte[] data = null; - System.out.println("接收agv上报信息:" + bs); - //执行阶段 - int phase = arr[16] * 256 + arr[17]; - // agv任务号 - int index = arr[12] * 256 + arr[13]; - //任务号 - int ikey = arr[26] * 256 + arr[27]; - //站点号 - int agvaddr = arr[18] * 256 + arr[19]; - //车号 - int carno = arr[20]; - Instruction inst = null; - if (ikey != 0) { - inst = instructionService.findByCodeFromCache(String.valueOf(ikey)); - } - log.info("接收agv上报信息:" + bs); - log.info("接收agv上报信息:" + "phase--" + phase + " index--" + index + " ikey--" + ikey + " agvaddr--" + agvaddr + " Car--" + carno); - Device device = null; - String device_code = null; - String old_device_code = null; - String emptyNum = null; - if (agvaddr != 0) { - old_device_code = deviceService.queryDeviceCodeByAddress(agvaddr); - if (StrUtil.contains(old_device_code, "-")) { - String[] point = old_device_code.split("-"); - device_code = point[0]; - } else if (StrUtil.contains(old_device_code, ".")) { - String[] point = old_device_code.split("\\."); - device_code = point[0]; - emptyNum = point[1]; - } else { - device_code = old_device_code; - } - device = deviceAppService.findDeviceByCode(device_code); - } - - AgvNdcTwoDeviceDriver agvNdcTwoDeviceDriver; - //开始任务 - if (phase == 0x01) { - if (!ObjectUtil.isEmpty(inst)) { - inst.setInstruction_status("1"); - inst.setAgv_jobno(String.valueOf(index)); - inst.setSend_status("1"); - instructionService.update(inst); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); - } - flag = true; - } - //任务完毕 - //(无车id及状态) - else if (phase == 0x14) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - String agvcar = inst.getCarno(); - Device agvDevice = deviceAppService.findDeviceByCode(agvcar); - if (agvDevice != null) { - if (agvDevice.getDeviceDriver() instanceof AgvNdcTwoDeviceDriver) { - agvNdcTwoDeviceDriver = (AgvNdcTwoDeviceDriver) agvDevice.getDeviceDriver(); - agvNdcTwoDeviceDriver.setInstruction(null); - } - } - inst.setInstruction_status("2"); - instructionService.finish(inst); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); - } - //请求删除任务 - //(需要WCS反馈) - else if (phase == 0x30) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - data = ndcAgvService.sendAgvTwoModeInst(0x8F, index, 0); - } - //任务删除确认 - //(需要WCS反馈) - else if (phase == 0xFF) { - if (ObjectUtil.isEmpty(inst)) { - log.info("未找到指令号{}对应的指令", ikey); - break; - } - instructionService.cancelNOSendAgv(inst.getInstruction_id()); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); - } else { - //上报异常信息 - //(不需要WCS反馈) - if (phase == 0x67 || phase == 0x71 || phase == 0x72 || phase == 0x73 || phase == 0x74 || phase == 0x75) { - device = deviceAppService.findDeviceByCode(Integer.toString(arr[18] * 256 + arr[19])); - } else { - device = deviceAppService.findDeviceByCode(Integer.toString(arr[20])); - } - if (device.getDeviceDriver() instanceof AgvNdcTwoDeviceDriver) { - agvNdcTwoDeviceDriver = (AgvNdcTwoDeviceDriver) device.getDeviceDriver(); - agvNdcTwoDeviceDriver.processSocket(arr); - } - } - if (!ObjectUtil.isEmpty(data)) { - write(data); - } - - } else { - System.out.println("agv上报不是0073类型动作,不处理"); - } - } - - } catch (Exception e) { - - - } finally { - - - } - - } - - - @Override - public void stop() { - super.after(); - try { - s.close(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - - public static void write(byte[] b) { - try { - log.info("下发agv数据:" + Bytes2HexString(b)); - System.out.println("下发agv数据:" + Bytes2HexString(b)); - dos.write(b); - dos.flush(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } -} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java b/acs/nladmin-system/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java index 804100ff7..d0cdafe04 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java @@ -206,20 +206,23 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable { log.info(agvaddr + "对应设备号为空!"); return; } - if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { - standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - - try { - standardAutodoorDeviceDriver.writing("to_open", "1"); - standardAutodoorDeviceDriver.writing("to_close", "0"); - } catch (Exception e) { - log.info("下发电气信号失败:" + e.getMessage()); - e.printStackTrace(); - } - if (standardAutodoorDeviceDriver.getOpen() == 1) { - log.info("下发开门信号值为:{},下发关门信号值为:{}", standardAutodoorDeviceDriver.getToOpen(), standardAutodoorDeviceDriver.getToClose()); - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); + if(ObjectUtil.isNotEmpty(device)) { + if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { + standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); + try { + standardAutodoorDeviceDriver.writing("to_open", "1"); + standardAutodoorDeviceDriver.writing("to_close", "0"); + } catch (Exception e) { + log.info("下发电气信号失败:" + e.getMessage()); + e.printStackTrace(); + } + if (standardAutodoorDeviceDriver.getOpen() == 1) { + log.info("下发开门信号值为:{},下发关门信号值为:{}", standardAutodoorDeviceDriver.getToOpen(), standardAutodoorDeviceDriver.getToClose()); + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); + } } + } else { + log.info(agvaddr + "对应设备号为空!"); } } else if (phase == 0x51) { @@ -227,17 +230,20 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable { log.info(agvaddr + "对应设备号为空!"); return; } - if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { - standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); - try { - standardAutodoorDeviceDriver.writing("to_close", "1"); - standardAutodoorDeviceDriver.writing("to_open", "0"); - } catch (Exception e) { - log.info("下发电气信号失败:" + e.getMessage()); - e.printStackTrace(); + if(ObjectUtil.isNotEmpty(device)){ + if (device.getDeviceDriver() instanceof StandardAutodoorDeviceDriver) { + standardAutodoorDeviceDriver = (StandardAutodoorDeviceDriver) device.getDeviceDriver(); + try { + standardAutodoorDeviceDriver.writing("to_close", "1"); + standardAutodoorDeviceDriver.writing("to_open", "0"); + } catch (Exception e) { + log.info("下发电气信号失败:" + e.getMessage()); + e.printStackTrace(); + } + data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); } - data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); - + } else { + log.info(device_code + "对应设备号为空!"); } } else { diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device.xls b/acs/nladmin-system/src/main/java/org/nl/acs/device.xls index 1c3db516e..dedf580ea 100644 Binary files a/acs/nladmin-system/src/main/java/org/nl/acs/device.xls and b/acs/nladmin-system/src/main/java/org/nl/acs/device.xls differ diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndctwo/AgvNdcTwoDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndctwo/AgvNdcTwoDeviceDriver.java index 2a65667b1..6a6118704 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndctwo/AgvNdcTwoDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndctwo/AgvNdcTwoDeviceDriver.java @@ -7,12 +7,10 @@ import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.agv.server.NDCAgvService; -import org.nl.acs.auto.run.TwoNDC2SocketConnectionAutoRun; import org.nl.acs.auto.run.TwoNDCSocketConnectionAutoRun; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.FeedLmsRealFailed; -import org.nl.acs.device_driver.basedriver.agv.utils.OneAgvPhase; import org.nl.acs.device_driver.basedriver.agv.utils.TwoAgvPhase; import org.nl.acs.device_driver.basedriver.photoelectric_inspection_site.PhotoelectricInspectionSiteDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_autodoor.StandardAutodoorDeviceDriver; @@ -719,8 +717,6 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + phase + "反馈:" + Bytes2HexString(data)); if (StrUtil.equals(inst.getAgv_system_type(), "2")) { TwoNDCSocketConnectionAutoRun.write(data); - } else if (StrUtil.equals(inst.getAgv_system_type(), "3")) { - TwoNDC2SocketConnectionAutoRun.write(data); } } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/OvenGantryManipulatorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/OvenGantryManipulatorDeviceDriver.java index 40008724b..ef881798a 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/OvenGantryManipulatorDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/oven_manipulator/OvenGantryManipulatorDeviceDriver.java @@ -104,7 +104,8 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i int hasGoods = 0; String message = null; Boolean iserror = false; - + private Date instruction_update_time = new Date(); + private int instruction_update_time_out = 1000; Integer heartbeat_tag; private Date instruction_require_time = new Date(); @@ -213,274 +214,9 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i logServer.deviceExecuteLog(this.device_code, "", "", "信号task:" + last_task + "->" + task); } - //更改任务状态 - if (task > 0) { - //inst_message - Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task)); - if (inst1 != null) { - if (StrUtil.equals(inst1.getInstruction_status(), "0")) { - inst1.setInstruction_status("1"); - inst1.setExecute_device_code(this.device_code); - instructionService.update(inst1); - } - } - } + update_instruction_status(); - //申请取货 - if (mode == 3 && action == 1 && move == 0 && task > 0) { - Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task)); - if (ObjectUtil.isNotEmpty(inst2)) { - String start_device_code = inst2.getStart_device_code(); - Device device = deviceAppService.findDeviceByCode(start_device_code); - HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; - if (device.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) device.getDeviceDriver(); - //hongXiangConveyorDeviceDriver.writing("to_open_door", "1"); - int mode = hongXiangConveyorDeviceDriver.getMode(); - int door = hongXiangConveyorDeviceDriver.getDoor(); - int action = hongXiangConveyorDeviceDriver.getAction(); - int error1 = hongXiangConveyorDeviceDriver.getError1(); - int move = hongXiangConveyorDeviceDriver.getMove(); - if (mode == 1 && door == 1 && action == 1 && error1 == 0 && move == 1) { - if (this.getNow_steps_type() == 2) { - this.writing("to_command", "2"); - this.setNow_steps_type(3); - } else { - //logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为下发电气信号(now_steps_type!=2)"); - } - } else { - if (this.getNow_steps_type() == 2) { - feedMessage = "烘箱:" + hongXiangConveyorDeviceDriver.getDevice_code(); - if (mode != 1) { - feedMessage = feedMessage + "工作模式(mode)信号未联机,"; - } - if (door != 1) { - feedMessage = feedMessage + "门状态(door)信号未开门,"; - } - if (action != 1) { - feedMessage = feedMessage + "允许取放(action)信号未允许取放,"; - } - if (move != 1) { - feedMessage = feedMessage + "取货位光电信号(move)不应该为无货状态,"; - } - if (error1 != 0) { - feedMessage = feedMessage + "故障(error1)信号出现故障,故障值:" + error1 + "。"; - } - } - } - } else { - if (this.getNow_steps_type() == 2) { - this.writing("to_command", "2"); - this.setNow_steps_type(3); - } else { - //logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为下发电气信号(now_steps_type!=2)\")"); - } - } - } - } else { - if (this.getNow_steps_type() == 2) { - feedMessage = "行架机械手:"; - if (mode != 3) { - feedMessage = feedMessage + "工作模式(mode)不为运行中状态,"; - } - if (action != 1) { - feedMessage = feedMessage + "动作信号(action)不为取货中状态,"; - } - if (move != 0) { - feedMessage = feedMessage + "光电信号(move)不为无货状态,"; - } - if (task == 0) { - feedMessage = feedMessage + "当前上报任务号(task)不应该为0。"; - } - } - } - //取货完成关闭烘箱门 - if (mode == 3 && action == 2 && move == 1 && task > 0) { - Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task)); - if (ObjectUtil.isNotEmpty(inst2)) { - String start_device_code = inst2.getStart_device_code(); - Device device = deviceAppService.findDeviceByCode(start_device_code); - HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; - if (device.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) device.getDeviceDriver(); - hongXiangConveyorDeviceDriver.writing("to_close_door", "1"); - } - if (this.getNow_steps_type() == 3) { - this.writing("to_command", "3"); - this.setNow_steps_type(4); - } else { - //logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为允许取货(now_steps_type!=3)"); - } - } - } else { - if (this.getNow_steps_type() == 3) { - feedMessage = "行架机械手:"; - if (mode != 3) { - feedMessage = feedMessage + "工作模式(mode)不为运行中状态,"; - } - if (action != 2) { - feedMessage = feedMessage + "动作信号(action)不为取货完成状态,"; - } - if (move != 1) { - feedMessage = feedMessage + "光电信号(move)不为有货状态,"; - } - if (task == 0) { - feedMessage = feedMessage + "当前上报任务号(task)不应该为0。"; - } - } - } - - //申请放货 - if (mode == 3 && action == 3 && move == 1 && task > 0) { - Instruction instructionDto = instructionService.findByCodeFromCache(String.valueOf(task)); - String next_device_code = instructionDto.getNext_device_code(); - Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); - HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; - PhotoelectricInspectionSiteDeviceDriver photoelectricInspectionSiteDeviceDriver; - if (nextDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) nextDevice.getDeviceDriver(); - //hongXiangConveyorDeviceDriver.writing("to_open_door", "1"); - int mode = hongXiangConveyorDeviceDriver.getMode(); - int door = hongXiangConveyorDeviceDriver.getDoor(); - int action = hongXiangConveyorDeviceDriver.getAction(); - int error1 = hongXiangConveyorDeviceDriver.getError1(); - int move = hongXiangConveyorDeviceDriver.getMove(); - if (mode == 1 && door == 1 && action == 1 && error1 == 0 && move == 0) { - if (this.getNow_steps_type() == 4) { - this.writing("to_command", "4"); - this.setNow_steps_type(5); - } else { - feedMessage = "未反馈电气信号原因:当前步骤不为允许放货(now_steps_type!=4)"; - //logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为允许放货(now_steps_type!=4)"); - } - } else { - if (this.getNow_steps_type() == 4) { - feedMessage = "烘箱:" + hongXiangConveyorDeviceDriver.getDevice_code(); - if (mode != 1) { - feedMessage = feedMessage + "工作模式(mode)信号未联机,"; - } - if (door != 1) { - feedMessage = feedMessage + "门状态(door)信号未开门,"; - } - if (action != 1) { - feedMessage = feedMessage + "允许取放(action)信号未允许取放,"; - } - if (move != 0) { - feedMessage = feedMessage + "放货位光电信号不应该为有货状态"; - } - if (error1 != 0) { - feedMessage = feedMessage + "故障(error1)信号出现故障。"; - } - } - } - } else { - if (this.getNow_steps_type() == 4) { - this.writing("to_command", "4"); - this.setNow_steps_type(5); - } else { - //logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为允许放货(now_steps_type!=4)"); - } - - } - } else { - if (this.getNow_steps_type() == 4) { - feedMessage = "行架机械手:"; - if (mode != 3) { - feedMessage = feedMessage + "工作模式(mode)不为运行中状态,"; - } - if (action != 3) { - feedMessage = feedMessage + "动作信号(action)不为放货中状态,"; - } - if (move != 1) { - feedMessage = feedMessage + "光电信号(move)不为有货状态,"; - } - if (task == 0) { - feedMessage = feedMessage + "当前上报任务号(task)不应该为0。"; - } - } - } - - //放货完成 - if (mode == 3 && action == 4 && move == 0 && task > 0) { - Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task)); - if (inst2 != null) { - if (StrUtil.equals(inst2.getInstruction_status(), "1")) { - - TaskDto taskDto = taskserver.findByCode(inst2.getTask_code()); - - String next_device_code = inst2.getNext_device_code(); - //String start_device_code = taskDto.getStart_device_code(); - //Device startDevice = deviceAppService.findDeviceByCode(start_device_code); - Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); - HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; - StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; - LampThreecolorDeviceDriver lampThreecolorDeviceDriver; -// if (startDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { -// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) startDevice.getDeviceDriver(); -// hongXiangConveyorDeviceDriver.writing("to_close_door", "1"); -// } - if (nextDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { - hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) nextDevice.getDeviceDriver(); - hongXiangConveyorDeviceDriver.writing("to_close_door", "1"); - if (StrUtil.isNotEmpty(taskDto.getOven_time())) { - //下发烘箱时间 - int time = Integer.parseInt(taskDto.getOven_time()); - int hours = (time % (60 * 60 * 24)) / (60 * 60); - int minutes = (time % (60 * 60)) / 60; - hongXiangConveyorDeviceDriver.writing("to_time_house", String.valueOf(hours)); - hongXiangConveyorDeviceDriver.writing("to_time_min", String.valueOf(minutes)); - } - } - - if (nextDevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { - standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) nextDevice.getDeviceDriver(); -// hongXiangConveyorDeviceDriver.writing("to_close_door", "1"); - - if (!StrUtil.startWith(taskDto.getTask_code(), "-")) { - if (ObjectUtil.isNotEmpty(nextDevice.getExtraValue().get("link_three_lamp"))) { - String lamp = nextDevice.getExtraValue().get("link_three_lamp").toString(); - Device lampDevice = deviceAppService.findDeviceByCode(lamp); - if (ObjectUtil.isEmpty(lampDevice)) { - return; - } - if (lampDevice.getDeviceDriver() instanceof LampThreecolorDeviceDriver) { - lampThreecolorDeviceDriver = (LampThreecolorDeviceDriver) lampDevice.getDeviceDriver(); - logServer.deviceExecuteLog(lampDevice.getDeviceDriver().getDeviceCode(), "", "", "下发报警灯" + lamp + "报警信号"); - lampThreecolorDeviceDriver.writing("to_command", "1"); - } - } - } - - } - this.writing("to_command", "5"); - this.setNow_steps_type(6); - this.setNow_steps_type(0); - try { - finish_instruction(inst2); - } catch (Exception e) { - e.printStackTrace(); - } - feedMessage = ""; - } - } - } else { - if (this.getNow_steps_type() == 5) { - feedMessage = "行架机械手:"; - if (mode != 3) { - feedMessage = feedMessage + "工作模式(mode)不为运行中状态,"; - } - if (action != 4) { - feedMessage = feedMessage + "动作信号(action)不为放货完成状态,"; - } - if (move != 0) { - feedMessage = feedMessage + "光电信号(move)不为无货状态,"; - } - if (task == 0) { - feedMessage = feedMessage + "当前上报任务号(task)不应该为0。"; - } - } - } } catch (Exception var17) { var17.printStackTrace(); @@ -1036,4 +772,282 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i // // } + public synchronized void update_instruction_status() throws Exception { + Date date = new Date(); + if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out); + + } else { + this.instruction_update_time = date; + //更改任务状态 + if (task > 0) { + //inst_message + Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task)); + if (inst1 != null) { + if (StrUtil.equals(inst1.getInstruction_status(), "0")) { + inst1.setInstruction_status("1"); + inst1.setExecute_device_code(this.device_code); + instructionService.update(inst1); + } + } + } + + //申请取货 + if (mode == 3 && action == 1 && move == 0 && task > 0) { + Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task)); + if (ObjectUtil.isNotEmpty(inst2)) { + String start_device_code = inst2.getStart_device_code(); + Device device = deviceAppService.findDeviceByCode(start_device_code); + HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; + if (device.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { + hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) device.getDeviceDriver(); + //hongXiangConveyorDeviceDriver.writing("to_open_door", "1"); + int mode = hongXiangConveyorDeviceDriver.getMode(); + int door = hongXiangConveyorDeviceDriver.getDoor(); + int action = hongXiangConveyorDeviceDriver.getAction(); + int error1 = hongXiangConveyorDeviceDriver.getError1(); + int move = hongXiangConveyorDeviceDriver.getMove(); + if (mode == 1 && door == 1 && action == 1 && error1 == 0 && move == 1) { + if (this.getNow_steps_type() == 2) { + this.writing("to_command", "2"); + this.setNow_steps_type(3); + } else { + //logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为下发电气信号(now_steps_type!=2)"); + } + } else { + if (this.getNow_steps_type() == 2) { + feedMessage = "烘箱:" + hongXiangConveyorDeviceDriver.getDevice_code(); + if (mode != 1) { + feedMessage = feedMessage + "工作模式(mode)信号未联机,"; + } + if (door != 1) { + feedMessage = feedMessage + "门状态(door)信号未开门,"; + } + if (action != 1) { + feedMessage = feedMessage + "允许取放(action)信号未允许取放,"; + } + if (move != 1) { + feedMessage = feedMessage + "取货位光电信号(move)不应该为无货状态,"; + } + if (error1 != 0) { + feedMessage = feedMessage + "故障(error1)信号出现故障,故障值:" + error1 + "。"; + } + } + } + } else { + if (this.getNow_steps_type() == 2) { + this.writing("to_command", "2"); + this.setNow_steps_type(3); + } else { + //logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为下发电气信号(now_steps_type!=2)\")"); + } + } + } + } else { + if (this.getNow_steps_type() == 2) { + feedMessage = "行架机械手:"; + if (mode != 3) { + feedMessage = feedMessage + "工作模式(mode)不为运行中状态,"; + } + if (action != 1) { + feedMessage = feedMessage + "动作信号(action)不为取货中状态,"; + } + if (move != 0) { + feedMessage = feedMessage + "光电信号(move)不为无货状态,"; + } + if (task == 0) { + feedMessage = feedMessage + "当前上报任务号(task)不应该为0。"; + } + } + } + + //取货完成关闭烘箱门 + if (mode == 3 && action == 2 && move == 1 && task > 0) { + Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task)); + if (ObjectUtil.isNotEmpty(inst2)) { + String start_device_code = inst2.getStart_device_code(); + Device device = deviceAppService.findDeviceByCode(start_device_code); + HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; + if (device.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { + hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) device.getDeviceDriver(); + hongXiangConveyorDeviceDriver.writing("to_close_door", "1"); + } + if (this.getNow_steps_type() == 3) { + this.writing("to_command", "3"); + this.setNow_steps_type(4); + } else { + //logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为允许取货(now_steps_type!=3)"); + } + } + } else { + if (this.getNow_steps_type() == 3) { + feedMessage = "行架机械手:"; + if (mode != 3) { + feedMessage = feedMessage + "工作模式(mode)不为运行中状态,"; + } + if (action != 2) { + feedMessage = feedMessage + "动作信号(action)不为取货完成状态,"; + } + if (move != 1) { + feedMessage = feedMessage + "光电信号(move)不为有货状态,"; + } + if (task == 0) { + feedMessage = feedMessage + "当前上报任务号(task)不应该为0。"; + } + } + } + + //申请放货 + if (mode == 3 && action == 3 && move == 1 && task > 0) { + Instruction instructionDto = instructionService.findByCodeFromCache(String.valueOf(task)); + String next_device_code = instructionDto.getNext_device_code(); + Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); + HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; + PhotoelectricInspectionSiteDeviceDriver photoelectricInspectionSiteDeviceDriver; + if (nextDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { + hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) nextDevice.getDeviceDriver(); + //hongXiangConveyorDeviceDriver.writing("to_open_door", "1"); + int mode = hongXiangConveyorDeviceDriver.getMode(); + int door = hongXiangConveyorDeviceDriver.getDoor(); + int action = hongXiangConveyorDeviceDriver.getAction(); + int error1 = hongXiangConveyorDeviceDriver.getError1(); + int move = hongXiangConveyorDeviceDriver.getMove(); + if (mode == 1 && door == 1 && action == 1 && error1 == 0 && move == 0) { + if (this.getNow_steps_type() == 4) { + this.writing("to_command", "4"); + this.setNow_steps_type(5); + } else { + feedMessage = "未反馈电气信号原因:当前步骤不为允许放货(now_steps_type!=4)"; + //logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为允许放货(now_steps_type!=4)"); + } + } else { + if (this.getNow_steps_type() == 4) { + feedMessage = "烘箱:" + hongXiangConveyorDeviceDriver.getDevice_code(); + if (mode != 1) { + feedMessage = feedMessage + "工作模式(mode)信号未联机,"; + } + if (door != 1) { + feedMessage = feedMessage + "门状态(door)信号未开门,"; + } + if (action != 1) { + feedMessage = feedMessage + "允许取放(action)信号未允许取放,"; + } + if (move != 0) { + feedMessage = feedMessage + "放货位光电信号不应该为有货状态"; + } + if (error1 != 0) { + feedMessage = feedMessage + "故障(error1)信号出现故障。"; + } + } + } + } else { + if (this.getNow_steps_type() == 4) { + this.writing("to_command", "4"); + this.setNow_steps_type(5); + } else { + //logServer.deviceExecuteLog(this.device_code, "", "", "未反馈电气信号原因:当前步骤不为允许放货(now_steps_type!=4)"); + } + + } + } else { + if (this.getNow_steps_type() == 4) { + feedMessage = "行架机械手:"; + if (mode != 3) { + feedMessage = feedMessage + "工作模式(mode)不为运行中状态,"; + } + if (action != 3) { + feedMessage = feedMessage + "动作信号(action)不为放货中状态,"; + } + if (move != 1) { + feedMessage = feedMessage + "光电信号(move)不为有货状态,"; + } + if (task == 0) { + feedMessage = feedMessage + "当前上报任务号(task)不应该为0。"; + } + } + } + + //放货完成 + if (mode == 3 && action == 4 && move == 0 && task > 0) { + Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task)); + if (inst2 != null) { + if (StrUtil.equals(inst2.getInstruction_status(), "1")) { + + TaskDto taskDto = taskserver.findByCode(inst2.getTask_code()); + + String next_device_code = inst2.getNext_device_code(); + //String start_device_code = taskDto.getStart_device_code(); + //Device startDevice = deviceAppService.findDeviceByCode(start_device_code); + Device nextDevice = deviceAppService.findDeviceByCode(next_device_code); + HongXiangConveyorDeviceDriver hongXiangConveyorDeviceDriver; + StandardInspectSiteDeviceDriver standardInspectSiteDeviceDriver; + LampThreecolorDeviceDriver lampThreecolorDeviceDriver; +// if (startDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { +// hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) startDevice.getDeviceDriver(); +// hongXiangConveyorDeviceDriver.writing("to_close_door", "1"); +// } + if (nextDevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { + hongXiangConveyorDeviceDriver = (HongXiangConveyorDeviceDriver) nextDevice.getDeviceDriver(); + hongXiangConveyorDeviceDriver.writing("to_close_door", "1"); + if (StrUtil.isNotEmpty(taskDto.getOven_time())) { + //下发烘箱时间 + int time = Integer.parseInt(taskDto.getOven_time()); + int hours = (time % (60 * 60 * 24)) / (60 * 60); + int minutes = (time % (60 * 60)) / 60; + hongXiangConveyorDeviceDriver.writing("to_time_house", String.valueOf(hours)); + hongXiangConveyorDeviceDriver.writing("to_time_min", String.valueOf(minutes)); + } + } + + if (nextDevice.getDeviceDriver() instanceof StandardInspectSiteDeviceDriver) { + standardInspectSiteDeviceDriver = (StandardInspectSiteDeviceDriver) nextDevice.getDeviceDriver(); +// hongXiangConveyorDeviceDriver.writing("to_close_door", "1"); + + if (!StrUtil.startWith(taskDto.getTask_code(), "-")) { + if (ObjectUtil.isNotEmpty(nextDevice.getExtraValue().get("link_three_lamp"))) { + String lamp = nextDevice.getExtraValue().get("link_three_lamp").toString(); + Device lampDevice = deviceAppService.findDeviceByCode(lamp); + if (ObjectUtil.isEmpty(lampDevice)) { + return; + } + if (lampDevice.getDeviceDriver() instanceof LampThreecolorDeviceDriver) { + lampThreecolorDeviceDriver = (LampThreecolorDeviceDriver) lampDevice.getDeviceDriver(); + logServer.deviceExecuteLog(lampDevice.getDeviceDriver().getDeviceCode(), "", "", "下发报警灯" + lamp + "报警信号"); + lampThreecolorDeviceDriver.writing("to_command", "1"); + } + } + } + + } + this.writing("to_command", "5"); + this.setNow_steps_type(6); + this.setNow_steps_type(0); + try { + finish_instruction(inst2); + } catch (Exception e) { + e.printStackTrace(); + } + feedMessage = ""; + } + } + } else { + if (this.getNow_steps_type() == 5) { + feedMessage = "行架机械手:"; + if (mode != 3) { + feedMessage = feedMessage + "工作模式(mode)不为运行中状态,"; + } + if (action != 4) { + feedMessage = feedMessage + "动作信号(action)不为放货完成状态,"; + } + if (move != 0) { + feedMessage = feedMessage + "光电信号(move)不为无货状态,"; + } + if (task == 0) { + feedMessage = feedMessage + "当前上报任务号(task)不应该为0。"; + } + } + } + } + } + } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java index c7d71642b..00cf54db9 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor/SiemensConveyorDeviceDriver.java @@ -131,6 +131,9 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme String hand_barcode = null; Integer heartbeat_tag; + private Date instruction_update_time = new Date(); + private int instruction_update_time_out = 500; + private Date instruction_require_time = new Date(); private Date require_apply_labeling_time = new Date(); private Date require_apply_strangulation_time = new Date(); @@ -268,33 +271,7 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme if (move != 0 && task > 0) { // logServer.deviceExecuteLog(device_code, "", "", "输送线任务开始反馈任务状态,指令号:" + task); //inst_message - inst = instructionService.findByCodeFromCache(String.valueOf(task)); - if (inst != null) { - inst_message = "当前指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code() + " 载具号:" + inst.getVehicle_code(); - vehicle_code = inst.getVehicle_code(); - task_code = inst.getTask_code(); - if (StrUtil.equals(inst.getInstruction_status(), "0") && StrUtil.equals(this.getDeviceCode(), inst.getStart_device_code())) { - inst.setInstruction_status("1"); - inst.setExecute_device_code(this.device_code); - instructionService.update(inst); - logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈执行中状态,反馈成功,指令号:" + task + ",载具号:"+ inst.getVehicle_code()); - } - if (StrUtil.equals(inst.getInstruction_status(), "1")) { - if (StrUtil.equals(this.getDeviceCode(), inst.getNext_device_code())) { - vehicle_code = inst.getVehicle_code(); - inst.setExecute_device_code(this.device_code); - finish_instruction(); - logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈完成状态,反馈成功,指令号:" + task + ",载具号:"+ inst.getVehicle_code()); - } else { - - - } - - } - } else { -// message = "输送线任务反馈状态,查询不到指令号:" + task +"指令已完成"; - inst_message = null; - } + update_instruction_status(); } } catch (Exception var17) { @@ -648,7 +625,7 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme map3.put("value", "1"); list.add(map3); this.writing(list); - + requireSucess = true; while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task").toString() , inst.getInstruction_code())) { this.writing(list); @@ -659,6 +636,7 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme e.printStackTrace(); } if(ObjectUtil.isEmpty(instructionService.findByTaskcodeAndStatus(taskdto.getTask_code()))){ + requireSucess = false; return false; } } @@ -770,6 +748,7 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme map3.put("value", "1"); list.add(map3); this.writing(list); + requireSucess = true; while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task").toString() , instdto.getInstruction_code())) { this.writing(list); @@ -780,6 +759,7 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme e.printStackTrace(); } if(ObjectUtil.isEmpty(taskserver.findByCode(taskdto.getTask_code()))){ + requireSucess = false; return false; } } @@ -818,6 +798,7 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme map3.put("value", "1"); list.add(map3); this.writing(list); + requireSucess = true; while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task").toString() , inst.getInstruction_code())) { this.writing(list); @@ -828,6 +809,7 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme e.printStackTrace(); } if(ObjectUtil.isEmpty(instructionService.findByDeviceCodeFromCache(this.device_code))){ + requireSucess = false; return false; } } @@ -1110,4 +1092,42 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme } } + /** + * 更新指令状态 + */ + public synchronized void update_instruction_status() throws Exception { + Date date = new Date(); + if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out); + + } else { + this.instruction_update_time = date; + inst = instructionService.findByCodeFromCache(String.valueOf(task)); + if (inst != null) { + inst_message = "当前指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code() + " 载具号:" + inst.getVehicle_code(); + vehicle_code = inst.getVehicle_code(); + task_code = inst.getTask_code(); + if (StrUtil.equals(inst.getInstruction_status(), "0") && StrUtil.equals(this.getDeviceCode(), inst.getStart_device_code())) { + inst.setInstruction_status("1"); + inst.setExecute_device_code(this.device_code); + instructionService.update(inst); + logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈执行中状态,反馈成功,指令号:" + task + ",载具号:"+ inst.getVehicle_code()); + } + if (StrUtil.equals(inst.getInstruction_status(), "1") || StrUtil.equals(inst.getInstruction_status(), "0") ) { + if (StrUtil.equals(this.getDeviceCode(), inst.getNext_device_code())) { + vehicle_code = inst.getVehicle_code(); + inst.setExecute_device_code(this.device_code); + finish_instruction(); + logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈完成状态,反馈成功,指令号:" + task + ",载具号:"+ inst.getVehicle_code()); + } else { + + } + } + } else { +// message = "输送线任务反馈状态,查询不到指令号:" + task +"指令已完成"; + inst_message = null; + } + + } + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDeviceDriver.java index a86490157..fd8675851 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_ckk/SiemensConveyorCkkDeviceDriver.java @@ -106,6 +106,9 @@ public class SiemensConveyorCkkDeviceDriver extends AbstractOpcDeviceDriver impl String hand_barcode = null; String barcode = null; + private Date instruction_update_time = new Date(); + private int instruction_update_time_out = 500; + Integer heartbeat_tag; private Date instruction_require_time = new Date(); private Date require_apply_labeling_time = new Date(); @@ -222,30 +225,10 @@ public class SiemensConveyorCkkDeviceDriver extends AbstractOpcDeviceDriver impl if (move != 0 && task > 0) { - inst = instructionService.findByCodeFromCache(String.valueOf(task)); - if (inst != null) { - inst_message = "当前指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code() + " 载具号:" + inst.getVehicle_code(); - vehicle_code = inst.getVehicle_code(); - task_code = inst.getTask_code(); - if (StrUtil.equals(inst.getInstruction_status(), "0") && StrUtil.equals(this.getDeviceCode(), inst.getStart_device_code())) { - inst.setInstruction_status("1"); - inst.setExecute_device_code(this.device_code); - instructionService.update(inst); - logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈执行中状态,反馈成功,指令号:" + task + ",载具号:"+ inst.getVehicle_code()); - } - if (StrUtil.equals(inst.getInstruction_status(), "1")) { - if (!StrUtil.equals(inst.getExecute_code(), this.device_code)) { - inst.setExecute_device_code(this.device_code); - instructionService.update(inst); - } - } - } else { -// logServer.deviceExecuteLog(device_code, "", "", "输送线任务开始反馈任务状态,反馈失败,查询不到指令号:" + task); -// message = "输送线任务反馈状态,查询不到指令号:" + task +"指令已完成"; - inst_message = null; - } + update_instruction_status(); } + } catch (Exception var17) { var17.printStackTrace(); inst_message = var17.getMessage(); @@ -522,6 +505,39 @@ public class SiemensConveyorCkkDeviceDriver extends AbstractOpcDeviceDriver impl } + /** + * 更新指令状态 + */ + public synchronized void update_instruction_status() throws Exception { + Date date = new Date(); + if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out); + + } else { + this.instruction_update_time = date; + inst = instructionService.findByCodeFromCache(String.valueOf(task)); + if (inst != null) { + inst_message = "当前指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code() + " 载具号:" + inst.getVehicle_code(); + vehicle_code = inst.getVehicle_code(); + task_code = inst.getTask_code(); + if (StrUtil.equals(inst.getInstruction_status(), "0") && StrUtil.equals(this.getDeviceCode(), inst.getStart_device_code())) { + inst.setInstruction_status("1"); + inst.setExecute_device_code(this.device_code); + instructionService.update(inst); + logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈执行中状态,反馈成功,指令号:" + task); + } + if (StrUtil.equals(inst.getInstruction_status(), "1")) { + if (!StrUtil.equals(inst.getExecute_code(), this.device_code)) { + inst.setExecute_device_code(this.device_code); + instructionService.update(inst); + } + } + } else { + inst_message = null; + } + } + } + /** * 请求指令 @@ -585,16 +601,6 @@ public class SiemensConveyorCkkDeviceDriver extends AbstractOpcDeviceDriver impl map3.put("value", "1"); list.add(map3); this.writing(list); - while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task").toString() - , inst.getInstruction_code())) { - this.writing(list); - logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发信号"); - try { - Thread.sleep(500); - } catch (InterruptedException e) { - e.printStackTrace(); - } - } return true; } try { @@ -621,7 +627,7 @@ public class SiemensConveyorCkkDeviceDriver extends AbstractOpcDeviceDriver impl } catch (Exception e) { e.printStackTrace(); } - logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈完成状态,反馈成功,指令号:" + task + ",载具号:"+ inst.getVehicle_code()); + logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈完成状态,反馈成功,指令号:" + task); } } } else { @@ -658,34 +664,18 @@ public class SiemensConveyorCkkDeviceDriver extends AbstractOpcDeviceDriver impl list.add(map); Map map2 = new HashMap(); map2.put("code", "to_task"); - map2.put("value", "0"); + map2.put("value", inst.getInstruction_code()); list.add(map2); Map map3 = new HashMap(); map3.put("code", "to_command"); map3.put("value", "1"); list.add(map3); - Map map4 = new HashMap(); - map2.put("code", "to_task"); - map2.put("value", inst.getInstruction_code()); - list.add(map4); this.writing(list); -// if (task != Integer.parseInt(inst.getInstruction_code())) { -// this.writing(list); -// message = "重新下发电气信号"; -// logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发电气信号"); -// } - - while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task").toString() - , inst.getInstruction_code())) { + if (task != Integer.parseInt(inst.getInstruction_code())) { this.writing(list); - logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发信号"); - try { - Thread.sleep(500); - } catch (InterruptedException e) { - e.printStackTrace(); - } + message = "重新下发电气信号"; + logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发电气信号"); } - message = "下发电气任务号成功"; requireSucess = true; return true; @@ -781,31 +771,17 @@ public class SiemensConveyorCkkDeviceDriver extends AbstractOpcDeviceDriver impl list.add(map); Map map2 = new HashMap(); map2.put("code", "to_task"); - map2.put("value", "0"); + map2.put("value", instdto.getInstruction_code()); list.add(map2); Map map3 = new HashMap(); map3.put("code", "to_command"); map3.put("value", "1"); list.add(map3); - Map map4 = new HashMap(); - map2.put("code", "to_task"); - map2.put("value", inst.getInstruction_code()); - list.add(map4); this.writing(list); -// if (task != Integer.parseInt(inst.getInstruction_code())) { -// this.writing(list); -// message = "重新下发电气信号"; -// logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发电气信号"); -// } - while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task").toString() - , inst.getInstruction_code())) { + if (task != Integer.parseInt(inst.getInstruction_code())) { this.writing(list); - logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发信号"); - try { - Thread.sleep(500); - } catch (InterruptedException e) { - e.printStackTrace(); - } + message = "重新下发电气信号"; + logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发电气信号"); } } else { //如果不存在则直接找对应指令 @@ -831,10 +807,8 @@ public class SiemensConveyorCkkDeviceDriver extends AbstractOpcDeviceDriver impl map3.put("value", "1"); list.add(map3); this.writing(list); -// if (task != Integer.parseInt(inst.getInstruction_code())) { -// this.writing(list); -// logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发电气信号"); -// } + // while true + requireSucess = true; while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task").toString() , inst.getInstruction_code())) { this.writing(list); @@ -844,8 +818,15 @@ public class SiemensConveyorCkkDeviceDriver extends AbstractOpcDeviceDriver impl } catch (InterruptedException e) { e.printStackTrace(); } + if(ObjectUtil.isEmpty(inst.getInstruction_code())){ + requireSucess = false; + return false; + } } + + message = "下发电气任务号成功"; requireSucess = true; + } return true; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDeviceDriver.java index 2b9e5897f..400413818 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/siemens_conveyor_labeling/SiemensConveyorLabelingDeviceDriver.java @@ -110,7 +110,8 @@ public class SiemensConveyorLabelingDeviceDriver extends AbstractOpcDeviceDriver int hasGoods = 0; String message = null; Boolean iserror = false; - + private Date instruction_update_time = new Date(); + private int instruction_update_time_out = 500; Integer heartbeat_tag; private Date instruction_require_time = new Date(); private Date require_apply_labeling_time = new Date(); @@ -129,6 +130,7 @@ public class SiemensConveyorLabelingDeviceDriver extends AbstractOpcDeviceDriver private String error_type = "ssx_error_type"; int branchProtocol = 0; String inst_message; + String task_code = null; // 当前指令 @@ -205,36 +207,7 @@ public class SiemensConveyorLabelingDeviceDriver extends AbstractOpcDeviceDriver } if (mode == 2 && move != 0 && task > 0) { - logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈任务状态,指令号:" + task); - // inst_message - inst = instructionService.findByCodeFromCache(String.valueOf(task)); - if (inst != null) { - inst_message = - "指令号:" - + inst.getInstruction_code() - + " " - + inst.getStart_point_code() - + "->" - + inst.getNext_point_code() - + " 载具号:" - + inst.getVehicle_code(); - if (StrUtil.equals(inst.getInstruction_status(), "1") - && StrUtil.equals(this.getDeviceCode(), inst.getNext_device_code())) { - vehicle_code = inst.getVehicle_code(); - finish_instruction(); - logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈完成状态,反馈成功,指令号:" + task); - } else if (StrUtil.equals(inst.getInstruction_status(), "0") - && StrUtil.equals(this.getDeviceCode(), inst.getStart_device_code())) { - inst.setInstruction_status("1"); - instructionService.update(inst); - logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈执行中状态,反馈成功,指令号:" + task); - } else { - logServer.deviceExecuteLog( - device_code, "", "", "入库输送线任务开始反馈执行中状态,反馈失败任务状态不为就绪或者执行中状态,指令号:" + task); - } - } else { -// logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈任务状态,反馈失败,查询不到指令号:" + task); - } + update_instruction_status(); } } catch (Exception var17) { @@ -965,4 +938,43 @@ public class SiemensConveyorLabelingDeviceDriver extends AbstractOpcDeviceDriver } } } + + /** + * 更新指令状态 + */ + public synchronized void update_instruction_status() throws Exception { + Date date = new Date(); + if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out); + + } else { + this.instruction_update_time = date; + inst = instructionService.findByCodeFromCache(String.valueOf(task)); + if (inst != null) { + inst_message = "当前指令号:" + inst.getInstruction_code() + " " + inst.getStart_point_code() + "->" + inst.getNext_point_code() + " 载具号:" + inst.getVehicle_code(); + vehicle_code = inst.getVehicle_code(); + task_code = inst.getTask_code(); + if (StrUtil.equals(inst.getInstruction_status(), "0") && StrUtil.equals(this.getDeviceCode(), inst.getStart_device_code())) { + inst.setInstruction_status("1"); + inst.setExecute_device_code(this.device_code); + instructionService.update(inst); + logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈执行中状态,反馈成功,指令号:" + task + ",载具号:"+ inst.getVehicle_code()); + } + if (StrUtil.equals(inst.getInstruction_status(), "1")) { + if (StrUtil.equals(this.getDeviceCode(), inst.getNext_device_code())) { + vehicle_code = inst.getVehicle_code(); + inst.setExecute_device_code(this.device_code); + finish_instruction(); + logServer.deviceExecuteLog(device_code, "", "", "入库输送线任务开始反馈完成状态,反馈成功,指令号:" + task + ",载具号:"+ inst.getVehicle_code()); + } else { + + } + } + } else { +// message = "输送线任务反馈状态,查询不到指令号:" + task +"指令已完成"; + inst_message = null; + } + + } + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/SlitTwoManipulatorDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/SlitTwoManipulatorDeviceDriver.java index 4bfaf5f26..32fd2cdf5 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/SlitTwoManipulatorDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/slit_two_manipulator/SlitTwoManipulatorDeviceDriver.java @@ -69,7 +69,8 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl private String error_type = "fqhj_error_type"; Instruction cache_inst = null; String inst_type = null; - + private Date instruction_update_time = new Date(); + private int instruction_update_time_out = 500; //工作模式 int mode = 0; int last_mode = 0; @@ -159,6 +160,9 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl private Date instruction_write_time = new Date(); + private int apply_task_time_out = 1000; + private Date apply_task_time = new Date(); + String notCreateTaskMessage = ""; String notCreateInstMessage = ""; @@ -287,416 +291,7 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl logServer.deviceExecuteLog(this.device_code, "", "", "信号task2:" + last_task2 + "->" + task2); } - //单任务 前工位任务更新指令状态 - if (task1 > 0 && type == 1) { - Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); - if (inst1 != null) { - if (StrUtil.equals(inst1.getInstruction_status(), "0")) { - //当前执行步骤为更新任务状态 - inst1.setInstruction_status("1"); - inst1.setExecute_device_code(this.getDevice_code()); - instructionService.update(inst1); - } - } - } - - //单任务 后工位任务更新指令状态 - if (task2 > 0 && type == 2) { - //inst_message - Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task2)); - if (inst2 != null) { - if (StrUtil.equals(inst2.getInstruction_status(), "0")) { - //当前指令更新状态 - now_steps_type2 = 1; - inst2.setInstruction_status("1"); - inst2.setExecute_device_code(this.device_code); - instructionService.update(inst2); - } - } - } - - //双任务更新指令状态 - if (task2 > 0 && task1 > 0 && type == 3) { - //inst_message - Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task1)); - if (inst2 != null) { - if (StrUtil.equals(inst2.getInstruction_status(), "0")) { - //当前指令更新状态 - inst2.setInstruction_status("1"); - inst2.setExecute_device_code(this.device_code); - instructionService.update(inst2); - } - } - } - - //双任务/单任务 后工位取空时判断动作信号,并反馈 - if (mode == 3 && action2 == 1 && move2 == 0 && task2 > 0) { - Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task2)); - String start_device_code = inst1.getStart_device_code(); - Device startDevice = deviceAppservice.findDeviceByCode(start_device_code); - if (ObjectUtil.isEmpty(startDevice)) { - feedMessage = "后工位取货位:" + start_device_code + "为空!"; - logServer.deviceExecuteLog(this.getDeviceCode(), "", "", "后工位取货位:" + start_device_code + "为空!"); - throw new BadRequestException("后工位取货位:" + start_device_code + "为空!"); - } - SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; - if (startDevice.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { - siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) startDevice.getDeviceDriver(); - int move = siemensConveyorDeviceDriver.getMove(); - int mode = siemensConveyorDeviceDriver.getMode(); - if (mode == 2 && move == 1) { - if (to_command2 != 2) { - this.writing("to_command2", "2"); - } - if (type == 2) { - this.setNow_steps_type2(3); - } else if (type == 3) { - this.setNow_steps_type3(3); - } - } else { - log.warn("后工位取货位无货,取货位:{},mode:{},move:{}", start_device_code, mode, move); - if (this.getNow_steps_type2() == 2 || this.getNow_steps_type3() == 2) { - feedMessage = "后工位未取货原因-->取货位:" + siemensConveyorDeviceDriver.getDevice_code(); - if (mode != 2) { - feedMessage += "工作模式不为待机(mode != 2),"; - } - if (move != 1) { - feedMessage += "光电信号不应该为无货状态(move != 1)"; - } - } - } - } - } else { - if (this.getNow_steps_type2() == 2 || this.getNow_steps_type3() == 2) { - feedMessage = "后工位未取货原因-->"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action2 != 1) { - feedMessage += "后工位动作信号不为取货中(action2 != 1),"; - } - if (move2 != 0) { - feedMessage += "后工位光电信号应该为0(move2 != 0),"; - } - if (task2 == 0) { - feedMessage += "后工位没有任务号(task2 == 0)"; - } - } - } - - //单任务/或双任务 后工位收到取货完成信号并反馈 - if (mode == 3 && action2 == 2 && move2 == 1 && task2 > 0) { - if (to_command2 != 3) { - this.writing("to_command2", "3"); - } - if (type == 2) { - this.setNow_steps_type2(4); - } - if (type == 3) { - this.setNow_steps_type3(4); - } - } else { - if (this.getNow_steps_type2() == 3 || this.getNow_steps_type3() == 3) { - feedMessage = "后工位取货完成后未反馈原因-->"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action2 != 2) { - feedMessage += "后工位动作信号未取货完成(action2 != 2),"; - } - if (move2 == 0) { - feedMessage += "后工位光电信号不应该为0(move2 == 0),"; - } - if (task2 == 0) { - feedMessage += "后工位没有任务号(task2 == 0)"; - } - } - } - - //单任务/双任务 前工位取货时判断动作信号并反馈 - if (mode == 3 && action1 == 1 && move1 == 0 && task1 > 0) { - if (to_command1 != 2) { - this.writing("to_command1", "2"); - } - if (type == 1) { - this.setNow_steps_type1(3); - } else if (type == 3) { - this.setNow_steps_type3(5); - } - } else { - if (this.getNow_steps_type1() == 2 || this.getNow_steps_type3() == 4) { - feedMessage = "前工位未取货原因:"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action1 != 1) { - feedMessage += "前工位动作信号不为取货中(action2 != 1),"; - } - if (move1 != 0) { - feedMessage += "前工位光电信号应该为0(move2 != 0),"; - } - if (task1 == 0) { - feedMessage += "前工位没有任务号(task2 == 0)"; - } - } - } - - //单任务/双任务 前工位取货完成并反馈 - if (mode == 3 && action1 == 2 && move1 == 1 && task1 > 0) { - if (to_command1 != 3) { - this.writing("to_command1", "3"); - } - if (type == 1) { - this.setNow_steps_type1(4); - } - if (type == 3) { - this.setNow_steps_type3(6); - } - } else { - if (this.getNow_steps_type1() == 3 || this.getNow_steps_type3() == 5) { - feedMessage = "前工位取货完成后未反馈原因"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action1 != 2) { - feedMessage += "前工位动作信号未取货完成(action2 != 2),"; - } - if (move1 == 0) { - feedMessage += "前工位光电信号不应该为无货状态(move2 == 0),"; - } - if (task1 == 0) { - feedMessage += "前工位没有任务号(task2 == 0)"; - } - } - } - - - //单任务/双任务 后工位放货时判断信号并反馈 - if (mode == 3 && action2 == 3 && move2 == 1 && task2 > 0) { - if (to_command2 != 4) { - this.writing("to_command2", "4"); - } - if (type == 2) { - this.setNow_steps_type2(5); - } else if (type == 3) { - this.setNow_steps_type3(7); - } - } else { - if (this.getNow_steps_type2() == 4 || this.getNow_steps_type3() == 6) { - feedMessage = "后工位未放货原因-->"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action2 != 3) { - feedMessage += "后工位动作信号不为放货中(action2 != 3),"; - } - if (move2 == 0) { - feedMessage += "后工位光电信号为不应该为0(move2 == 0),"; - } - if (task2 == 0) { - feedMessage += "后工位没有任务号(task2 == 0)"; - } - } - } - - //单任务 后工位放货完成 任务完成 - if (mode == 3 && action2 == 4 && move2 == 0 && task2 > 0 && type == 2) { - //inst_message - Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task2)); - if (inst2 != null) { - if (StrUtil.equals(inst2.getInstruction_status(), "1")) { - if (to_command2 != 5) { - this.writing("to_command2", "5"); - } - this.setNow_steps_type2(6); - this.setNow_steps_type2(0); - finish_instruction(inst2); - } - } - } else { - if (this.getNow_steps_type2() == 5) { - feedMessage = "单任务后工位放货完成后未反馈原因-->"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action2 != 4) { - feedMessage += "后工位动作信号未放货完成(action2 != 4),"; - } - if (move2 != 0) { - feedMessage += "后工位光电信号应该为无货状态(move2 != 0),"; - } - if (task2 == 0) { - feedMessage += "后工位没有任务号(task2 == 0),"; - } - if (type != 2) { - feedMessage += "不是后工位单任务(type != 2)"; - } - } - } - - //双任务 后工位反馈任务完成 并反馈 - if (mode == 3 && action2 == 4 && move2 == 0 && task1 > 0 && task2 > 0 && type == 3) { - if (to_command2 != 5) { - this.writing("to_command2", "5"); - } - this.setNow_steps_type3(8); - } else { - if (this.getNow_steps_type3() == 7) { - feedMessage = "双任务后工位放货完成后未反馈原因-->"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action2 != 4) { - feedMessage += "后工位动作信号未放货完成(action2 != 4),"; - } - if (move2 != 0) { - feedMessage += "后工位光电信号不应该为有货状态(move2 != 0),"; - } - if (task1 == 0) { - feedMessage += "前工位没有任务号(task1 == 0),"; - } - if (task2 == 0) { - feedMessage += "后工位没有任务号(task2 == 0),"; - } - if (type != 3) { - feedMessage += "不是双任务(type != 3)"; - } - } - } - - //单任务/双任务 前工位放货时判断放货位光电信号 - if (mode == 3 && action1 == 3 && move1 == 1 && task1 > 0) { - Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); - String next_device_code = ""; - if (type == 1) { - next_device_code = inst1.getNext_device_code(); - } else if (type == 3) { - next_device_code = inst1.getNext_device_code2(); - } - Device nextDevice = deviceAppservice.findDeviceByCode(next_device_code); - if (ObjectUtil.isEmpty(nextDevice)) { - feedMessage = "前工位放货位:" + next_device_code + "为空!"; - throw new BadRequestException("前工位放货位:" + next_device_code + "为空!"); - } - SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; - if (nextDevice.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { - siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) nextDevice.getDeviceDriver(); - int move = siemensConveyorDeviceDriver.getMove(); - int mode = siemensConveyorDeviceDriver.getMode(); - if (move == 1 && mode == 2) { - if (to_command1 != 4) { - this.writing("to_command1", "4"); - } - if (type == 1) { - this.setNow_steps_type1(5); - } else if (type == 3) { - this.setNow_steps_type3(9); - } - } else { -// log.warn("后工位放货位有货,放货位:{},mode:{},move:{}", next_device_code, mode, move); - if (this.getNow_steps_type1() == 4 || this.getNow_steps_type3() == 8) { - feedMessage = "前工位未放货原因-->"; - if (mode != 2) { - feedMessage += "前工位放货位工作模式不为待机状态(mode != 2),"; - } - if (move == 0) { - feedMessage += "前工位放货位不应该为无货状态(move == 0)"; - } - } - } - } - } else { - if (this.getNow_steps_type1() == 4 || this.getNow_steps_type3() == 8) { - feedMessage = "前工位未放货原因-->"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action1 != 3) { - feedMessage += "前工位动作信号不为放货中(action1 != 3),"; - } - if (move1 == 0) { - feedMessage += "前工位光电信号不应为无货状态(move1 == 0),"; - } - if (task1 == 0) { - feedMessage += "前工位没有任务号(task1 == 0),"; - } - } - } - - - //单任务前工位放货完成 任务完成 - if (mode == 3 && action1 == 4 && move1 == 0 && task1 > 0 && type == 1) { - //inst_message - Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); - if (inst1 != null) { - if (StrUtil.equals(inst1.getInstruction_status(), "1")) { - if (to_command1 != 5) { - this.writing("to_command1", "5"); - } - this.setNow_steps_type1(6); - this.setNow_steps_type1(0); - this.finish_instruction(inst1); - } - } - } else { - if (this.getNow_steps_type1() == 5) { - feedMessage = "单任务前工位放货完成后未反馈原因-->"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action1 != 4) { - feedMessage += "前工位动作信号未放货完成(action1 != 4),"; - } - if (move1 != 0) { - feedMessage += "前工位光电信号为不应为有货状态(move1 != 0),"; - } - if (task1 == 0) { - feedMessage += "前工位没有任务号(task1 == 0),"; - } - if (type != 1) { - feedMessage += "不为前工位单任务(type != 1)"; - } - } - } - - - //双工位 任务完成 前工位反馈4 - if (mode == 3 && action1 == 4 && move1 == 0 && task1 > 0 && task2 > 0 && type == 3) { - //inst_message - Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); - if (inst1 != null) { - if (StrUtil.equals(inst1.getInstruction_status(), "1")) { - if (to_command1 != 5) { - this.writing("to_command1", "5"); - } - this.setNow_steps_type3(10); - this.setNow_steps_type3(0); - this.finish_instruction(inst1); - } - } - } else { - if (this.getNow_steps_type3() == 9) { - feedMessage = "双任务前工位放货完成后未反馈原因-->"; - if (mode != 3) { - feedMessage += "行架工作模式不为运行中(mode != 3),"; - } - if (action1 != 4) { - feedMessage += "前工位动作信号未放货完成(action1 != 4),"; - } - if (move1 != 0) { - feedMessage += "前工位光电信号为不应为有货状态(move1 != 0),"; - } - if (task1 == 0) { - feedMessage += "前工位没有任务(task1 == 0),"; - } - if (task2 == 0) { - feedMessage += "后工位没有任务号(task2 == 0),"; - } - if (type != 3) { - feedMessage += "不是双任务(type != 3)"; - } - } - } + update_instruction_status(); task_check(); @@ -724,33 +319,8 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl case 2: //申请任务 if (mode == 2 && move1 == 0 && move2 == 0 && action1 == 0 && action2 == 0 && task1 == 0 && task2 == 0 && !requireSucess) { - //获取关联设备驱动信息 判断关联设备是否禁用 - String link_device_code = String.valueOf(this.getDevice().getExtraValue().get("link_device_code")); - Device device = deviceAppservice.findDeviceByCode(link_device_code); - SlitTwoManipulatorDeviceDriver slitTwoManipulatorDeviceDriver; - if (device.getDeviceDriver() instanceof SlitTwoManipulatorDeviceDriver) { - slitTwoManipulatorDeviceDriver = (SlitTwoManipulatorDeviceDriver) device.getDeviceDriver(); - //如果禁用 - if (slitTwoManipulatorDeviceDriver.getIs_disable() == 1) { - boolean flag = false; - try { - //就去走关联设备异常取放货工位的任务 任务生成成功返回true 就不会走下面正常生成任务的逻辑 - flag = instruction_require2(); - } catch (Exception e) { - flag = false; - } - if (flag) { - break; - } - } - } - //没有生成异常取放货工位的任务 就生成正常关联取放货工位的任务 - boolean res = instruction_require(); - if (res) { - feedMessage = ""; - notCreateInstMessage = ""; - notCreateTaskMessage = ""; - } + apply_task(); + } else { if (!requireSucess) { @@ -836,6 +406,44 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl return true; } + public synchronized boolean apply_task() { + Date date = new Date(); + if (date.getTime() - this.apply_task_time.getTime() < (long) this.apply_task_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.apply_task_time); + return false; + } else { + this.apply_task_time = date; + //获取关联设备驱动信息 判断关联设备是否禁用 + String link_device_code = String.valueOf(this.getDevice().getExtraValue().get("link_device_code")); + Device device = deviceAppservice.findDeviceByCode(link_device_code); + SlitTwoManipulatorDeviceDriver slitTwoManipulatorDeviceDriver; + if (device.getDeviceDriver() instanceof SlitTwoManipulatorDeviceDriver) { + slitTwoManipulatorDeviceDriver = (SlitTwoManipulatorDeviceDriver) device.getDeviceDriver(); + //如果禁用 + if (slitTwoManipulatorDeviceDriver.getIs_disable() == 1) { + boolean flag = false; + try { + //就去走关联设备异常取放货工位的任务 任务生成成功返回true 就不会走下面正常生成任务的逻辑 + flag = instruction_require2(); + } catch (Exception e) { + flag = false; + } + if (flag) { + return false; + } + } + } + //没有生成异常取放货工位的任务 就生成正常关联取放货工位的任务 + boolean res = instruction_require(); + if (res) { + feedMessage = ""; + notCreateInstMessage = ""; + notCreateTaskMessage = ""; + } + return true; + } + } + //关联设备异常申请任务 public synchronized boolean instruction_require2() { @@ -1601,4 +1209,427 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl jo.put("fault_type", error_type); return jo; } + + /** + * 更新指令状态 + */ + public synchronized void update_instruction_status() throws Exception { + Date date = new Date(); + if (date.getTime() - this.instruction_update_time.getTime() < (long) this.instruction_update_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_update_time_out); + + } else { + this.instruction_update_time = date; + //单任务 前工位任务更新指令状态 + if (task1 > 0 && type == 1) { + Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); + if (inst1 != null) { + if (StrUtil.equals(inst1.getInstruction_status(), "0")) { + //当前执行步骤为更新任务状态 + inst1.setInstruction_status("1"); + inst1.setExecute_device_code(this.getDevice_code()); + instructionService.update(inst1); + } + } + } + + //单任务 后工位任务更新指令状态 + if (task2 > 0 && type == 2) { + //inst_message + Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task2)); + if (inst2 != null) { + if (StrUtil.equals(inst2.getInstruction_status(), "0")) { + //当前指令更新状态 + now_steps_type2 = 1; + inst2.setInstruction_status("1"); + inst2.setExecute_device_code(this.device_code); + instructionService.update(inst2); + } + } + } + + //双任务更新指令状态 + if (task2 > 0 && task1 > 0 && type == 3) { + //inst_message + Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task1)); + if (inst2 != null) { + if (StrUtil.equals(inst2.getInstruction_status(), "0")) { + //当前指令更新状态 + inst2.setInstruction_status("1"); + inst2.setExecute_device_code(this.device_code); + instructionService.update(inst2); + } + } + } + + //双任务/单任务 后工位取空时判断动作信号,并反馈 + if (mode == 3 && action2 == 1 && move2 == 0 && task2 > 0) { + Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task2)); + String start_device_code = inst1.getStart_device_code(); + Device startDevice = deviceAppservice.findDeviceByCode(start_device_code); + if (ObjectUtil.isEmpty(startDevice)) { + feedMessage = "后工位取货位:" + start_device_code + "为空!"; + logServer.deviceExecuteLog(this.getDeviceCode(), "", "", "后工位取货位:" + start_device_code + "为空!"); + throw new BadRequestException("后工位取货位:" + start_device_code + "为空!"); + } + SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; + if (startDevice.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { + siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) startDevice.getDeviceDriver(); + int move = siemensConveyorDeviceDriver.getMove(); + int mode = siemensConveyorDeviceDriver.getMode(); + if (mode == 2 && move == 1) { + if (to_command2 != 2) { + this.writing("to_command2", "2"); + } + if (type == 2) { + this.setNow_steps_type2(3); + } else if (type == 3) { + this.setNow_steps_type3(3); + } + } else { + log.warn("后工位取货位无货,取货位:{},mode:{},move:{}", start_device_code, mode, move); + if (this.getNow_steps_type2() == 2 || this.getNow_steps_type3() == 2) { + feedMessage = "后工位未取货原因-->取货位:" + siemensConveyorDeviceDriver.getDevice_code(); + if (mode != 2) { + feedMessage += "工作模式不为待机(mode != 2),"; + } + if (move != 1) { + feedMessage += "光电信号不应该为无货状态(move != 1)"; + } + } + } + } + } else { + if (this.getNow_steps_type2() == 2 || this.getNow_steps_type3() == 2) { + feedMessage = "后工位未取货原因-->"; + if (mode != 3) { + feedMessage += "行架工作模式不为运行中(mode != 3),"; + } + if (action2 != 1) { + feedMessage += "后工位动作信号不为取货中(action2 != 1),"; + } + if (move2 != 0) { + feedMessage += "后工位光电信号应该为0(move2 != 0),"; + } + if (task2 == 0) { + feedMessage += "后工位没有任务号(task2 == 0)"; + } + } + } + + //单任务/或双任务 后工位收到取货完成信号并反馈 + if (mode == 3 && action2 == 2 && move2 == 1 && task2 > 0) { + if (to_command2 != 3) { + this.writing("to_command2", "3"); + } + if (type == 2) { + this.setNow_steps_type2(4); + } + if (type == 3) { + this.setNow_steps_type3(4); + } + } else { + if (this.getNow_steps_type2() == 3 || this.getNow_steps_type3() == 3) { + feedMessage = "后工位取货完成后未反馈原因-->"; + if (mode != 3) { + feedMessage += "行架工作模式不为运行中(mode != 3),"; + } + if (action2 != 2) { + feedMessage += "后工位动作信号未取货完成(action2 != 2),"; + } + if (move2 == 0) { + feedMessage += "后工位光电信号不应该为0(move2 == 0),"; + } + if (task2 == 0) { + feedMessage += "后工位没有任务号(task2 == 0)"; + } + } + } + + //单任务/双任务 前工位取货时判断动作信号并反馈 + if (mode == 3 && action1 == 1 && move1 == 0 && task1 > 0) { + if (to_command1 != 2) { + this.writing("to_command1", "2"); + } + if (type == 1) { + this.setNow_steps_type1(3); + } else if (type == 3) { + this.setNow_steps_type3(5); + } + } else { + if (this.getNow_steps_type1() == 2 || this.getNow_steps_type3() == 4) { + feedMessage = "前工位未取货原因:"; + if (mode != 3) { + feedMessage += "行架工作模式不为运行中(mode != 3),"; + } + if (action1 != 1) { + feedMessage += "前工位动作信号不为取货中(action2 != 1),"; + } + if (move1 != 0) { + feedMessage += "前工位光电信号应该为0(move2 != 0),"; + } + if (task1 == 0) { + feedMessage += "前工位没有任务号(task2 == 0)"; + } + } + } + + //单任务/双任务 前工位取货完成并反馈 + if (mode == 3 && action1 == 2 && move1 == 1 && task1 > 0) { + if (to_command1 != 3) { + this.writing("to_command1", "3"); + } + if (type == 1) { + this.setNow_steps_type1(4); + } + if (type == 3) { + this.setNow_steps_type3(6); + } + } else { + if (this.getNow_steps_type1() == 3 || this.getNow_steps_type3() == 5) { + feedMessage = "前工位取货完成后未反馈原因"; + if (mode != 3) { + feedMessage += "行架工作模式不为运行中(mode != 3),"; + } + if (action1 != 2) { + feedMessage += "前工位动作信号未取货完成(action2 != 2),"; + } + if (move1 == 0) { + feedMessage += "前工位光电信号不应该为无货状态(move2 == 0),"; + } + if (task1 == 0) { + feedMessage += "前工位没有任务号(task2 == 0)"; + } + } + } + + + //单任务/双任务 后工位放货时判断信号并反馈 + if (mode == 3 && action2 == 3 && move2 == 1 && task2 > 0) { + if (to_command2 != 4) { + this.writing("to_command2", "4"); + } + if (type == 2) { + this.setNow_steps_type2(5); + } else if (type == 3) { + this.setNow_steps_type3(7); + } + } else { + if (this.getNow_steps_type2() == 4 || this.getNow_steps_type3() == 6) { + feedMessage = "后工位未放货原因-->"; + if (mode != 3) { + feedMessage += "行架工作模式不为运行中(mode != 3),"; + } + if (action2 != 3) { + feedMessage += "后工位动作信号不为放货中(action2 != 3),"; + } + if (move2 == 0) { + feedMessage += "后工位光电信号为不应该为0(move2 == 0),"; + } + if (task2 == 0) { + feedMessage += "后工位没有任务号(task2 == 0)"; + } + } + } + + //单任务 后工位放货完成 任务完成 + if (mode == 3 && action2 == 4 && move2 == 0 && task2 > 0 && type == 2) { + //inst_message + Instruction inst2 = instructionService.findByCodeFromCache(String.valueOf(task2)); + if (inst2 != null) { + if (StrUtil.equals(inst2.getInstruction_status(), "1")) { + if (to_command2 != 5) { + this.writing("to_command2", "5"); + } + this.setNow_steps_type2(6); + this.setNow_steps_type2(0); + finish_instruction(inst2); + } + } + } else { + if (this.getNow_steps_type2() == 5) { + feedMessage = "单任务后工位放货完成后未反馈原因-->"; + if (mode != 3) { + feedMessage += "行架工作模式不为运行中(mode != 3),"; + } + if (action2 != 4) { + feedMessage += "后工位动作信号未放货完成(action2 != 4),"; + } + if (move2 != 0) { + feedMessage += "后工位光电信号应该为无货状态(move2 != 0),"; + } + if (task2 == 0) { + feedMessage += "后工位没有任务号(task2 == 0),"; + } + if (type != 2) { + feedMessage += "不是后工位单任务(type != 2)"; + } + } + } + + //双任务 后工位反馈任务完成 并反馈 + if (mode == 3 && action2 == 4 && move2 == 0 && task1 > 0 && task2 > 0 && type == 3) { + if (to_command2 != 5) { + this.writing("to_command2", "5"); + } + this.setNow_steps_type3(8); + } else { + if (this.getNow_steps_type3() == 7) { + feedMessage = "双任务后工位放货完成后未反馈原因-->"; + if (mode != 3) { + feedMessage += "行架工作模式不为运行中(mode != 3),"; + } + if (action2 != 4) { + feedMessage += "后工位动作信号未放货完成(action2 != 4),"; + } + if (move2 != 0) { + feedMessage += "后工位光电信号不应该为有货状态(move2 != 0),"; + } + if (task1 == 0) { + feedMessage += "前工位没有任务号(task1 == 0),"; + } + if (task2 == 0) { + feedMessage += "后工位没有任务号(task2 == 0),"; + } + if (type != 3) { + feedMessage += "不是双任务(type != 3)"; + } + } + } + + //单任务/双任务 前工位放货时判断放货位光电信号 + if (mode == 3 && action1 == 3 && move1 == 1 && task1 > 0) { + Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); + String next_device_code = ""; + if (type == 1) { + next_device_code = inst1.getNext_device_code(); + } else if (type == 3) { + next_device_code = inst1.getNext_device_code2(); + } + Device nextDevice = deviceAppservice.findDeviceByCode(next_device_code); + if (ObjectUtil.isEmpty(nextDevice)) { + feedMessage = "前工位放货位:" + next_device_code + "为空!"; + throw new BadRequestException("前工位放货位:" + next_device_code + "为空!"); + } + SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; + if (nextDevice.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { + siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) nextDevice.getDeviceDriver(); + int move = siemensConveyorDeviceDriver.getMove(); + int mode = siemensConveyorDeviceDriver.getMode(); + if (move == 1 && mode == 2) { + if (to_command1 != 4) { + this.writing("to_command1", "4"); + } + if (type == 1) { + this.setNow_steps_type1(5); + } else if (type == 3) { + this.setNow_steps_type3(9); + } + } else { +// log.warn("后工位放货位有货,放货位:{},mode:{},move:{}", next_device_code, mode, move); + if (this.getNow_steps_type1() == 4 || this.getNow_steps_type3() == 8) { + feedMessage = "前工位未放货原因-->"; + if (mode != 2) { + feedMessage += "前工位放货位工作模式不为待机状态(mode != 2),"; + } + if (move == 0) { + feedMessage += "前工位放货位不应该为无货状态(move == 0)"; + } + } + } + } + } else { + if (this.getNow_steps_type1() == 4 || this.getNow_steps_type3() == 8) { + feedMessage = "前工位未放货原因-->"; + if (mode != 3) { + feedMessage += "行架工作模式不为运行中(mode != 3),"; + } + if (action1 != 3) { + feedMessage += "前工位动作信号不为放货中(action1 != 3),"; + } + if (move1 == 0) { + feedMessage += "前工位光电信号不应为无货状态(move1 == 0),"; + } + if (task1 == 0) { + feedMessage += "前工位没有任务号(task1 == 0),"; + } + } + } + + + //单任务前工位放货完成 任务完成 + if (mode == 3 && action1 == 4 && move1 == 0 && task1 > 0 && type == 1) { + //inst_message + Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); + if (inst1 != null) { + if (StrUtil.equals(inst1.getInstruction_status(), "1")) { + if (to_command1 != 5) { + this.writing("to_command1", "5"); + } + this.setNow_steps_type1(6); + this.setNow_steps_type1(0); + this.finish_instruction(inst1); + } + } + } else { + if (this.getNow_steps_type1() == 5) { + feedMessage = "单任务前工位放货完成后未反馈原因-->"; + if (mode != 3) { + feedMessage += "行架工作模式不为运行中(mode != 3),"; + } + if (action1 != 4) { + feedMessage += "前工位动作信号未放货完成(action1 != 4),"; + } + if (move1 != 0) { + feedMessage += "前工位光电信号为不应为有货状态(move1 != 0),"; + } + if (task1 == 0) { + feedMessage += "前工位没有任务号(task1 == 0),"; + } + if (type != 1) { + feedMessage += "不为前工位单任务(type != 1)"; + } + } + } + + + //双工位 任务完成 前工位反馈4 + if (mode == 3 && action1 == 4 && move1 == 0 && task1 > 0 && task2 > 0 && type == 3) { + //inst_message + Instruction inst1 = instructionService.findByCodeFromCache(String.valueOf(task1)); + if (inst1 != null) { + if (StrUtil.equals(inst1.getInstruction_status(), "1")) { + if (to_command1 != 5) { + this.writing("to_command1", "5"); + } + this.setNow_steps_type3(10); + this.setNow_steps_type3(0); + this.finish_instruction(inst1); + } + } + } else { + if (this.getNow_steps_type3() == 9) { + feedMessage = "双任务前工位放货完成后未反馈原因-->"; + if (mode != 3) { + feedMessage += "行架工作模式不为运行中(mode != 3),"; + } + if (action1 != 4) { + feedMessage += "前工位动作信号未放货完成(action1 != 4),"; + } + if (move1 != 0) { + feedMessage += "前工位光电信号为不应为有货状态(move1 != 0),"; + } + if (task1 == 0) { + feedMessage += "前工位没有任务(task1 == 0),"; + } + if (task2 == 0) { + feedMessage += "后工位没有任务号(task2 == 0),"; + } + if (type != 3) { + feedMessage += "不是双任务(type != 3)"; + } + } + } + } + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control_with_scanner/StandardCoveyorControlWithScannerDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control_with_scanner/StandardCoveyorControlWithScannerDeviceDriver.java index 62f636378..e80392e3c 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control_with_scanner/StandardCoveyorControlWithScannerDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/standard_conveyor_control_with_scanner/StandardCoveyorControlWithScannerDeviceDriver.java @@ -530,6 +530,22 @@ public class StandardCoveyorControlWithScannerDeviceDriver extends AbstractOpcDe message = "下发电气任务号成功"; requireSucess = true; applySucess = true; + while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task").toString() + , instdto.getInstruction_code())) { + this.writing(list); + logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发信号"); + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + if(ObjectUtil.isEmpty(instdto.getInstruction_code())){ + requireSucess = false; + applySucess = false; + return false; + } + } + } else { message = "任务号:" + task.getTask_code() + "未找到指令"; } @@ -602,6 +618,21 @@ public class StandardCoveyorControlWithScannerDeviceDriver extends AbstractOpcDe + "已存在对应任务,下发电气信号"); requireSucess = true; applySucess = true; + while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task").toString() + , instdto.getInstruction_code())) { + this.writing(list); + logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发信号"); + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + if(ObjectUtil.isEmpty(instdto.getInstruction_code())){ + requireSucess = false; + applySucess = false; + return false; + } + } } else { message = "任务号:" + taskdto.getTask_code() + "未找到指令"; } @@ -647,6 +678,21 @@ public class StandardCoveyorControlWithScannerDeviceDriver extends AbstractOpcDe message = "下发电气任务号成功"; requireSucess = true; applySucess = true; + while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task").toString() + , instdto.getInstruction_code())) { + this.writing(list); + logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发信号"); + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + if(ObjectUtil.isEmpty(instdto.getInstruction_code())){ + requireSucess = false; + applySucess = false; + return false; + } + } return true; } else { logServer.deviceExecuteLog(this.device_code, "", "", "申请任务时该载具号" + container_code @@ -776,6 +822,21 @@ public class StandardCoveyorControlWithScannerDeviceDriver extends AbstractOpcDe // } requireSucess = true; applySucess = true; + while (!StrUtil.equals(this.getOpcValueAccessor().getValue(this.getOpcServer() + "." + this.getOpcPlc() + "." + this.getDevice_code() + ".task").toString() + , instdto.getInstruction_code())) { + this.writing(list); + logServer.deviceExecuteLog(device_code, "", "", inst.getInstruction_code() + "再次下发信号"); + try { + Thread.sleep(500); + } catch (InterruptedException e) { + e.printStackTrace(); + } + if(ObjectUtil.isEmpty(instdto.getInstruction_code())){ + requireSucess = false; + applySucess = false; + return false; + } + } } else { if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { message = "申请任务中..."; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/LiKuToAcsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/LiKuToAcsServiceImpl.java index 79701f989..c851ddd68 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/LiKuToAcsServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/LiKuToAcsServiceImpl.java @@ -65,7 +65,7 @@ public class LiKuToAcsServiceImpl implements LiKuToAcsService { String inst_code = requestParam.getOrderId(); String status = requestParam.getState(); String carNo = requestParam.getRobotId(); - Instruction inst = instructionService.findByCodeFromCache(inst_code); + Instruction inst = instructionService.findByCode(inst_code); if (ObjectUtil.isEmpty(inst)) { InStoreReportResponse inStoreReportResponse = new InStoreReportResponse(); inStoreReportResponse.setOrderId(inst_code); @@ -77,7 +77,18 @@ public class LiKuToAcsServiceImpl implements LiKuToAcsService { log.info("入库任务状态反馈-----输出参数{}", result); return RespUtil.getResp(result.toString(), new InStoreReportResponse()); } - TaskDto task = taskService.findByCodeFromCache(inst.getTask_code()); + if (!StrUtil.equals(inst.getInstruction_status(),"0") && !StrUtil.equals(inst.getInstruction_status(),"1")) { + InStoreReportResponse inStoreReportResponse = new InStoreReportResponse(); + inStoreReportResponse.setOrderId(inst_code); + JSONObject result = new JSONObject(); + result.put("result", "false"); + result.put("code", "0"); + result.put("comment", "未找到未完成的对应指令"); + result.put("data", inStoreReportResponse ); + log.info("入库任务状态反馈-----输出参数{}", result); + return RespUtil.getResp(result.toString(), new InStoreReportResponse()); + } + TaskDto task = taskService.findByCode(inst.getTask_code()); if (ObjectUtil.isEmpty(task)) { InStoreReportResponse inStoreReportResponse = new InStoreReportResponse(); inStoreReportResponse.setOrderId(inst_code); @@ -89,6 +100,17 @@ public class LiKuToAcsServiceImpl implements LiKuToAcsService { log.info("入库任务状态反馈-----输出参数{}", result); return RespUtil.getResp(result.toString(), new InStoreReportResponse()); } + if (!StrUtil.equals(task.getTask_status(),"0") && !StrUtil.equals(task.getTask_status(),"1")) { + InStoreReportResponse inStoreReportResponse = new InStoreReportResponse(); + inStoreReportResponse.setOrderId(inst_code); + JSONObject result = new JSONObject(); + result.put("result", "false"); + result.put("code", "0"); + result.put("comment", "未找到未完成的对应任务"); + result.put("data", inStoreReportResponse ); + log.info("入库任务状态反馈-----输出参数{}", result); + return RespUtil.getResp(result.toString(), new InStoreReportResponse()); + } // 1 已接收 2 开始执行 3执行完成 4 5 取消 if(StrUtil.equals(status,"1") || StrUtil.equals(status,"2") ){ task.setTask_status("1"); @@ -127,7 +149,7 @@ public class LiKuToAcsServiceImpl implements LiKuToAcsService { String inst_code = requestParam.getOrderId(); String status = requestParam.getState(); String carNo = requestParam.getRobotId(); - Instruction inst = instructionService.findByCodeFromCache(inst_code); + Instruction inst = instructionService.findByCode(inst_code); if (ObjectUtil.isEmpty(inst)) { OutStoreReportResponse outStoreReportResponse = new OutStoreReportResponse(); outStoreReportResponse.setOrderId(inst_code); @@ -139,7 +161,18 @@ public class LiKuToAcsServiceImpl implements LiKuToAcsService { log.info("出库任务状态反馈-----输出参数{}", result); return RespUtil.getResp(result.toString(), new OutStoreReportResponse()); } - TaskDto task = taskService.findByCodeFromCache(inst.getTask_code()); + if (!StrUtil.equals(inst.getInstruction_status(),"0") && !StrUtil.equals(inst.getInstruction_status(),"1")) { + OutStoreReportResponse outStoreReportResponse = new OutStoreReportResponse(); + outStoreReportResponse.setOrderId(inst_code); + JSONObject result = new JSONObject(); + result.put("result", "false"); + result.put("code", "0"); + result.put("comment", "未找到对应未完成的指令"); + result.put("data", outStoreReportResponse ); + log.info("出库任务状态反馈-----输出参数{}", result); + return RespUtil.getResp(result.toString(), new OutStoreReportResponse()); + } + TaskDto task = taskService.findByCode(inst.getTask_code()); if (ObjectUtil.isEmpty(task)) { OutStoreReportResponse outStoreReportResponse = new OutStoreReportResponse(); outStoreReportResponse.setOrderId(inst_code); @@ -151,6 +184,17 @@ public class LiKuToAcsServiceImpl implements LiKuToAcsService { log.info("出库任务状态反馈-----输出参数{}", result); return RespUtil.getResp(result.toString(), new OutStoreReportResponse()); } + if (!StrUtil.equals(task.getTask_status(),"0") && !StrUtil.equals(task.getTask_status(),"1")) { + OutStoreReportResponse outStoreReportResponse = new OutStoreReportResponse(); + outStoreReportResponse.setOrderId(inst_code); + JSONObject result = new JSONObject(); + result.put("result", "false"); + result.put("code", "0"); + result.put("comment", "未找到未完成的对应任务"); + result.put("data", outStoreReportResponse ); + log.info("出库任务状态反馈-----输出参数{}", result); + return RespUtil.getResp(result.toString(), new OutStoreReportResponse()); + } // 1 已接收 2 开始执行 3执行完成 4 阻挡 5 空洞 if(StrUtil.equals(status,"1") || StrUtil.equals(status,"2") ){ task.setTask_status("1"); @@ -210,7 +254,7 @@ public class LiKuToAcsServiceImpl implements LiKuToAcsService { String inst_code = requestParam.getOrderId(); String status = requestParam.getState(); String carNo = requestParam.getRobotId(); - Instruction inst = instructionService.findByCodeFromCache(inst_code); + Instruction inst = instructionService.findByCode(inst_code); if (ObjectUtil.isEmpty(inst)) { MoveStoreReportResponse moveStoreReportResponse = new MoveStoreReportResponse(); moveStoreReportResponse.setOrderId(inst_code); @@ -222,7 +266,18 @@ public class LiKuToAcsServiceImpl implements LiKuToAcsService { log.info("移库任务状态反馈-----输出参数{}", result); return RespUtil.getResp(result.toString(), new MoveStoreReportResponse()); } - TaskDto task = taskService.findByCodeFromCache(inst.getTask_code()); + if (!StrUtil.equals(inst.getInstruction_status(),"0") && !StrUtil.equals(inst.getInstruction_status(),"1")) { + MoveStoreReportResponse moveStoreReportResponse = new MoveStoreReportResponse(); + moveStoreReportResponse.setOrderId(inst_code); + JSONObject result = new JSONObject(); + result.put("result", "false"); + result.put("code", "0"); + result.put("comment", "未找到未完成的对应指令"); + result.put("data", moveStoreReportResponse ); + log.info("移库任务状态反馈-----输出参数{}", result); + return RespUtil.getResp(result.toString(), new MoveStoreReportResponse()); + } + TaskDto task = taskService.findByCode(inst.getTask_code()); if (ObjectUtil.isEmpty(task)) { MoveStoreReportResponse moveStoreReportResponse = new MoveStoreReportResponse(); moveStoreReportResponse.setOrderId(inst_code); @@ -233,7 +288,19 @@ public class LiKuToAcsServiceImpl implements LiKuToAcsService { result.put("data", moveStoreReportResponse ); log.info("移库任务状态反馈-----输出参数{}", result); return RespUtil.getResp(result.toString(), new MoveStoreReportResponse()); - } // 1 已接收 2 开始执行 3执行完成 4 阻挡 5 空洞 + } + if (!StrUtil.equals(task.getTask_status(),"0") && !StrUtil.equals(task.getTask_status(),"1")) { + MoveStoreReportResponse moveStoreReportResponse = new MoveStoreReportResponse(); + moveStoreReportResponse.setOrderId(inst_code); + JSONObject result = new JSONObject(); + result.put("result", "false"); + result.put("code", "0"); + result.put("comment", "未找到未完成的对应任务"); + result.put("data", moveStoreReportResponse ); + log.info("移库任务状态反馈-----输出参数{}", result); + return RespUtil.getResp(result.toString(), new MoveStoreReportResponse()); + } + // 1 已接收 2 开始执行 3执行完成 4 阻挡 5 空洞 if(StrUtil.equals(status,"1") || StrUtil.equals(status,"2") ){ task.setTask_status("1"); taskService.update(task); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/dto/HeartbeatManageDto.java b/acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/dto/HeartbeatManageDto.java index bd6e46a72..3953c6cfa 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/dto/HeartbeatManageDto.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/dto/HeartbeatManageDto.java @@ -5,7 +5,7 @@ import org.nl.acs.heartbeat.enums.HeartbeatType; import java.util.Date; -public class HeartbeatManageDto extends Dto { +public class HeartbeatManageDto { private static final long serialVersionUID = 1L; private String resource_code; private String resource_name; @@ -14,6 +14,7 @@ public class HeartbeatManageDto extends Dto { private Date online_datetime; private Date offline_datetime; private Date lastreceivetime; + private String id; public HeartbeatManageDto() { } @@ -25,6 +26,10 @@ public class HeartbeatManageDto extends Dto { } + public String getId() { + return this.id; + } + public String getResource_code() { return this.resource_code; } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/service/HeartbeatUnifiedService.java b/acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/service/HeartbeatUnifiedService.java index d2f2f9244..1880620b4 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/service/HeartbeatUnifiedService.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/service/HeartbeatUnifiedService.java @@ -3,6 +3,7 @@ package org.nl.acs.heartbeat.service; import org.nl.acs.heartbeat.HeartbeatEvent; import org.nl.acs.heartbeat.dto.HeartbeatManageDto; +import org.springframework.stereotype.Service; import java.util.List; import java.util.UUID; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/service_impl/HeartbeatManageServiceimpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/service/impl/HeartbeatManageServiceimpl.java similarity index 72% rename from acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/service_impl/HeartbeatManageServiceimpl.java rename to acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/service/impl/HeartbeatManageServiceimpl.java index 7557f971c..75f71933c 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/service_impl/HeartbeatManageServiceimpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/service/impl/HeartbeatManageServiceimpl.java @@ -1,16 +1,19 @@ -package org.nl.acs.heartbeat.service_impl; +package org.nl.acs.heartbeat.service.impl; +import com.alibaba.fastjson.JSONArray; import org.nl.acs.heartbeat.domain.HeartbeatDomain; import org.nl.acs.heartbeat.dto.HeartbeatManageDto; import org.nl.acs.heartbeat.service.HeartbeatManageService; +import org.nl.acs.instruction.service.dto.Instruction; +import org.nl.modules.wql.core.bean.WQLObject; +import org.springframework.stereotype.Service; import java.util.List; import java.util.UUID; +@Service public class HeartbeatManageServiceimpl implements HeartbeatManageService { - public HeartbeatManageServiceimpl() { - } // public PageResult queryAllHeartbeat(PageQuery pageQuery) { // return this.heartbeatRespository.queryPagedByColumn(pageQuery, HeartbeatManageDto.class); @@ -40,7 +43,10 @@ public class HeartbeatManageServiceimpl implements HeartbeatManageService { } public List queryAllActive() { - return null; + WQLObject wo = WQLObject.getWQLObject("acs_heartbeat"); + JSONArray arr = wo.query().getResultJSONArray(0); + List list = arr.toJavaList(HeartbeatManageDto.class); + return list; } public HeartbeatManageDto queryById(UUID id) { diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/service_impl/HeartbeatUnifiedServiceimpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/service/impl/HeartbeatUnifiedServiceimpl.java similarity index 96% rename from acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/service_impl/HeartbeatUnifiedServiceimpl.java rename to acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/service/impl/HeartbeatUnifiedServiceimpl.java index 42ec13dd8..1d683cdcb 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/service_impl/HeartbeatUnifiedServiceimpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/heartbeat/service/impl/HeartbeatUnifiedServiceimpl.java @@ -1,4 +1,4 @@ -package org.nl.acs.heartbeat.service_impl; +package org.nl.acs.heartbeat.service.impl; import cn.hutool.core.util.ObjectUtil; @@ -12,23 +12,22 @@ import org.nl.acs.heartbeat.service.HeartbeatManageService; import org.nl.acs.heartbeat.service.HeartbeatUnifiedService; import org.nl.modules.wql.util.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; import java.util.*; +@Service public class HeartbeatUnifiedServiceimpl implements HeartbeatUnifiedService, ApplicationAutoInitial { private List heartbeats = new ArrayList(); + @Autowired private HeartbeatManageService heartbeatManageService; - public HeartbeatUnifiedServiceimpl() { - } @Override public void autoInitial() throws Exception { - heartbeatManageService = SpringContextHolder.getBean("heartbeatManageServiceImpl"); - this.reload(); Iterator iterator = this.heartbeats.iterator(); diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/dto/Instruction.java b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/dto/Instruction.java index 3efb4757f..4b00b062a 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/dto/Instruction.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/dto/Instruction.java @@ -10,5 +10,14 @@ public class Instruction extends InstructionDto { public Instruction() { } + @Override + public String toString(){ + return "task_code:" + this.getTask_code() + + ",inst_code:" + this.getInstruction_code() + + ",inst_type" + this.getInstruction_type() + + ",start_device_code:" + this.getStart_device_code() + + ",next_device_code:" +this.getNext_device_code() + + ",status:"+ this.getInstruction_status(); + } } \ No newline at end of file diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index eecf4d54f..3b7ce544c 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -414,9 +414,14 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu WQLObject wo = WQLObject.getWQLObject("acs_instruction"); JSONObject json = (JSONObject) JSONObject.toJSON(dto); - wo.insert(json); - instructions.add(dto); + + try{ + instructions.add(dto); + log.warn("指令添加到指令列表:"+dto.toString()); + } catch (Exception e){ + log.warn("指令添加到指令列表异常:" + dto.toString() +e.getMessage()); + } } @Override @@ -530,7 +535,12 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu JSONObject json = (JSONObject) JSONObject.toJSON(dto); wo.insert(json); - instructions.add(dto); + try{ + instructions.add(dto); + log.warn("指令添加到指令列表:"+dto.toString()); + } catch (Exception e){ + log.warn("指令添加到指令列表异常:"+e.getMessage()); + } } @@ -645,7 +655,12 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu JSONObject json = (JSONObject) JSONObject.toJSON(dto); wo.insert(json); - instructions.add(dto); + try{ + instructions.add(dto); + log.warn("指令添加到指令列表:"+dto.toString()); + } catch (Exception e){ + log.warn("指令添加到指令列表异常:" + dto.toString() +e.getMessage()); + } } @@ -732,7 +747,12 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu // agvService.addOrderSequences(dto); // } // } - instructions.add(dto); + try{ + instructions.add(dto); + log.warn("指令添加到指令列表:"+dto.toString()); + } catch (Exception e){ + log.warn("指令添加到指令列表异常:" + dto.toString() +e.getMessage()); + } } @Override @@ -747,7 +767,13 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu wo.update(json); removeByCodeFromCache(dto.getInstruction_code()); - instructions.add(dto); + try{ + instructions.add(dto); + log.warn("指令添加到指令列表:"+dto.toString()); + } catch (Exception e){ + log.warn("指令添加到指令列表异常:" + dto.toString() +e.getMessage()); + } + // this.reload(); } @@ -1580,9 +1606,18 @@ public class InstructionServiceImpl implements InstructionService, ApplicationAu @Override public boolean removeByCodeFromCache(String code) { CopyOnWriteArrayList instructions = (CopyOnWriteArrayList) this.instructions; - instructions.removeIf((inst) -> { - return inst.getInstruction_code().equals(code); - }); + + try{ + instructions.removeIf((inst) -> { + if(StrUtil.equals(inst.getInstruction_code(),code)){ + log.warn("指令移除指令列表:"+inst.toString()); + } + return inst.getInstruction_code().equals(code); + }); + } catch (Exception e){ + log.warn("指令移除指令列表列表异常:" + e.getMessage()); + } + // while (iterator.hasNext()) { // Instruction instruction = iterator.next(); // if (instruction.getInstruction_code().equals(code)) { diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java index d0b770e86..08625ef06 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java @@ -1,6 +1,7 @@ package org.nl.acs.opc; import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import lombok.extern.slf4j.Slf4j; import org.nl.acs.udw.UnifiedDataAccessor; @@ -191,8 +192,9 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC if (true) { this.logItemChanged(itemId, accessor_value, value, itemDto); } - - accessor_value.setValue(itemId, value); +// if(!ObjectUtil.isEmpty(value)){ + accessor_value.setValue(itemId, value); +// } } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java index af3bd6d92..7c5875db1 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/dto/TaskDto.java @@ -307,4 +307,13 @@ public class TaskDto implements Serializable { */ private String next_height = "0"; + + @Override + public String toString(){ + return "task_code:" + this.getTask_code() + + ",task_type" + this.getTask_type() + + ",start_device_code:" + this.getStart_device_code() + + ",next_device_code:" +this.getNext_device_code() + + ",status:"+ this.getTask_status(); + } } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 63921aec5..ab4cabfed 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -520,8 +520,15 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { JSONObject json = (JSONObject) JSONObject.toJSON(dto); wo.insert(json); - synchronized (TaskServiceImpl.class) { +// synchronized (TaskServiceImpl.class) { +// tasks.add(dto); +// } + + try{ tasks.add(dto); + log.warn("任务添加到任务列表:"+dto.toString()); + } catch (Exception e){ + log.warn("任务添加到任务列表异常:"+ dto.toString() +e.getMessage()); } } @@ -673,7 +680,12 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { removeByCodeFromCache(entity.getTask_code()); if (StrUtil.equals(dto.getTask_status(), "0") || StrUtil.equals(dto.getTask_status(), "1")) { - tasks.add(dto); + try{ + tasks.add(dto); + log.warn("任务添加到任务列表:"+dto.toString()); + } catch (Exception e){ + log.warn("任务添加到任务列表异常:"+ dto.toString() +e.getMessage()); + } } // 判断是否为WMS下发的任务,如果是反馈任务状态给WMS String hasWms = paramService.findByCode(AcsConfig.HASWMS).getValue(); @@ -1296,9 +1308,18 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { @Override public boolean removeByCodeFromCache(String code) { CopyOnWriteArrayList taskDtos = (CopyOnWriteArrayList) this.tasks; - taskDtos.removeIf((task) -> { - return task.getTask_code().equals(code); - }); + try{ + + taskDtos.removeIf((task) -> { + if(StrUtil.equals(task.getTask_code(),code)){ + log.warn("任务移除任务列表成功:"+task.toString()); + } + return task.getTask_code().equals(code); + }); + } catch (Exception e){ + log.warn("指令移除任务列表异常:"+e.getMessage()); + } + return true; } @@ -1525,7 +1546,12 @@ public class TaskServiceImpl implements TaskService, ApplicationAutoInitial { @Override public void updateByCodeFromCache(TaskDto dto) { removeByCodeFromCache(dto.getTask_code()); - tasks.add(dto); + try{ + tasks.add(dto); + log.warn("任务添加到任务列表:"+dto.toString()); + } catch (Exception e){ + log.warn("任务添加到任务列表异常:"+ dto.toString() +e.getMessage()); + } } @Override diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryLKDeviceStatus.java b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryLKDeviceStatus.java index 30d5003d1..a5f716e49 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryLKDeviceStatus.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/QueryLKDeviceStatus.java @@ -78,10 +78,10 @@ public class QueryLKDeviceStatus { deviceStatusDeviceDriver.setAlarm(deviceStatusData.getAlarm()); deviceStatusDeviceDriver.setTask_id(deviceStatusData.getTaskId()); deviceStatusDeviceDriver.setIsonline(true); - if(!"0".equals(deviceStatusData.getAlarm())) { - deviceStatusDeviceDriver.setIserror(true); - }else{ + if("0".equals(deviceStatusData.getAlarm())||ObjectUtil.isEmpty(deviceStatusData.getAlarm())) { deviceStatusDeviceDriver.setIserror(false); + }else{ + deviceStatusDeviceDriver.setIserror(true); } if(!"0".equals(deviceStatusData.getLoad())) { deviceStatusDeviceDriver.setHasGoods(true); diff --git a/acs/nladmin-system/src/main/resources/config/application-dev.yml b/acs/nladmin-system/src/main/resources/config/application-dev.yml index f57637425..7a0351aed 100644 --- a/acs/nladmin-system/src/main/resources/config/application-dev.yml +++ b/acs/nladmin-system/src/main/resources/config/application-dev.yml @@ -13,11 +13,11 @@ spring: driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy # url: jdbc:log4jdbc:mysql://${DB_HOST:10.1.3.91}:${DB_PORT:3306}/${DB_NAME:acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true # url: jdbc:log4jdbc:mysql://${DB_HOST:192.168.81.252}:${DB_PORT:3306}/${DB_NAME:lzhl_one_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true - url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl_one_wcs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true + url: jdbc:log4jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:lzhl_a1_acs}?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false&useOldAliasMetadataBehavior=true&allowPublicKeyRetrieval=true username: ${DB_USER:root} # password: ${DB_PWD:P@ssw0rd} # password: ${DB_PWD:Root.123456} - password: ${DB_PWD:password} + password: ${DB_PWD:123456} # 初始连接数 initial-size: 5 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls index 7c97e93ff..643fb06f8 100644 Binary files a/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls and b/lms/nladmin-system/src/main/java/org/nl/wms/basedata/st/wql/stivt.xls differ diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/OutChargeServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/OutChargeServiceImpl.java index a41b4ebe5..0d9975339 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/OutChargeServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/service/impl/OutChargeServiceImpl.java @@ -6,6 +6,7 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.map.MapUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -57,6 +58,7 @@ public class OutChargeServiceImpl implements OutChargeService { HashMap map = new HashMap<>(); map.put("flag", "15"); map.put("bill_status", MapUtil.getStr(whereJson, "bill_status")); + map.put("bill_type", MapUtil.getStr(whereJson, "bill_type")); map.put("stor_id", MapUtil.getStr(whereJson, "stor_id")); if (ObjectUtil.isNotEmpty(bill_code)) map.put("bill_code", bill_code + "%"); if (ObjectUtil.isNotEmpty(vehicle_code)) map.put("vehicle_code", vehicle_code + "%"); @@ -171,11 +173,14 @@ public class OutChargeServiceImpl implements OutChargeService { //插入分配表 dis_wql.insert(dis_row); - //将包装关系中对应的记录状态改为包装 HashMap map = new HashMap<>(); map.put("status", "1"); - WQLObject.getWQLObject("PDM_BI_SubPackageRelation").update(map, "package_box_SN = '" + dis_row.getString("box_no") + "' AND status = '3'"); + if (StrUtil.equals(mst_jo.getString("bill_type"), "1001")) { + WQLObject.getWQLObject("PDM_BI_SubPackageRelation").update(map, "package_box_SN = '" + dis_row.getString("box_no") + "' AND status = '3'"); + } else { + WQLObject.getWQLObject("PDM_BI_SubPackageRelation").update(map, "package_box_SN = '" + dis_row.getString("box_no") + "'"); + } } } diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql index f0b1aaaab..4f02dbfb1 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/inbill/wql/QST_IVT_RAWASSISTISTOR.wql @@ -623,7 +623,7 @@ AND ios.bill_status = '99' AND - ios.bill_type = '1001' + ios.bill_type in ('1001','1009') AND ios.stor_id in 输入.in_stor_id diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/HandMoveStorAcsTask.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/HandMoveStorAcsTask.java index 688a762ac..74df2cc45 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/HandMoveStorAcsTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/instor/task/HandMoveStorAcsTask.java @@ -57,6 +57,7 @@ public class HandMoveStorAcsTask extends AbstractAcsTask { .next_device_code(json.getString("point_code2")) .vehicle_code(json.getString("vehicle_code")) .priority(json.getString("priority")) + .class_type(json.getString("task_type")) .dtl_type(String.valueOf(dtl_type)) .remark(json.getString("remark")) .build(); diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java index 159fb6d2d..b30807b5d 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/outbill/service/impl/CheckOutBillServiceImpl.java @@ -5025,7 +5025,13 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { mapFL.put("material_spec", material_spec); // mapFL.put("qty_unit_name", "KG"); mapFL.put("box_no", sub_box_no); - mapFL.put("qty", NumberUtil.round(json.getString("qty"), 2).doubleValue()); + mapFL.put("qty", NumberUtil.round(json.getString("qty"), 2).doubleValue()); // 净重 + if (ObjectUtil.isNotEmpty(jsonSub.getString("real_weight"))) { + mapFL.put("real_weight", NumberUtil.round(jsonSub.getString("real_weight"), 2).doubleValue()); // 毛重 + } else { + mapFL.put("real_weight", NumberUtil.round(jsonSub.getString("box_weight"), 2).doubleValue()); // 毛重 + } + flData.add(mapFL); all_qty = NumberUtil.add(String.valueOf(all_qty), json.getString("qty")).doubleValue(); } @@ -5079,6 +5085,11 @@ public class CheckOutBillServiceImpl implements CheckOutBillService { // mapFL.put("qty_unit_name", "KG"); mapFL.put("box_no", sub_box_no); mapFL.put("qty", NumberUtil.round(json.getString("qty"), 2).doubleValue()); + if (ObjectUtil.isNotEmpty(jsonSub.getString("real_weight"))) { + mapFL.put("real_weight", NumberUtil.round(jsonSub.getString("real_weight"), 2).doubleValue()); // 毛重 + } else { + mapFL.put("real_weight", NumberUtil.round(jsonSub.getString("box_weight"), 2).doubleValue()); // 毛重 + } flData.add(mapFL); // 计算合计重量 diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java index 92baef6fa..9ed35917b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/st/returns/service/impl/InAndOutRetrunServiceImpl.java @@ -462,6 +462,9 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { paramSapMst.put("ZACTION", "P"); paramSapMst.put("BUDAT", jo_mst.getString("biz_date")); paramSapMst.put("ZZYGYF", jo_mst.getString("estimated_freight")); + paramSapMst.put("ZZYZFY", jo_mst.getString("run_freight")); + paramSapMst.put("ZZXCFY", jo_mst.getString("unload_freight")); + paramSapMst.put("ZZQTFY", jo_mst.getString("other_freight")); paramSapMst.put("ZZYFGY", jo_mst.getString("trans_code")); JSONArray paramDtlArr = new JSONArray(); @@ -1045,6 +1048,9 @@ public class InAndOutRetrunServiceImpl implements InAndOutReturnService { paramSapMst.put("ZACTION", "P"); paramSapMst.put("BUDAT", jo_mst.getString("biz_date")); paramSapMst.put("ZZYGYF", jo_mst.getString("estimated_freight")); + paramSapMst.put("ZZYZFY", jo_mst.getString("run_freight")); + paramSapMst.put("ZZXCFY", jo_mst.getString("unload_freight")); + paramSapMst.put("ZZQTFY", jo_mst.getString("other_freight")); paramSapMst.put("ZZYFGY", jo_mst.getString("trans_code")); JSONArray paramDtlArr = new JSONArray(); diff --git a/lms/nladmin-ui/src/views/wms/st/incharge/index.vue b/lms/nladmin-ui/src/views/wms/st/incharge/index.vue index 332710212..6c4575a24 100644 --- a/lms/nladmin-ui/src/views/wms/st/incharge/index.vue +++ b/lms/nladmin-ui/src/views/wms/st/incharge/index.vue @@ -79,6 +79,7 @@ > + + + + + + + + + + + + + + + + + + diff --git a/lms/nladmin-ui/src/views/wms/st/outcharge/index.vue b/lms/nladmin-ui/src/views/wms/st/outcharge/index.vue index 645318a3d..a148bdf45 100644 --- a/lms/nladmin-ui/src/views/wms/st/outcharge/index.vue +++ b/lms/nladmin-ui/src/views/wms/st/outcharge/index.vue @@ -78,6 +78,7 @@ >