diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java index 5a265278..2575add0 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/HailiangOldLetteringPackageDeviceDriver.java @@ -9,8 +9,11 @@ import org.nl.acs.acsEnum.WorkerOrderEnum; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver; import org.nl.acs.device_driver.basedriver.hailiang_one.IssuedDeviceOrderInfo; +import org.nl.acs.device_driver.basedriver.hailiang_one.MonitoringLargeScreenData; import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.history.ErrorUtil; import org.nl.acs.history.service.DeviceErrorLogService; import org.nl.acs.history.service.dto.DeviceErrorLogDto; @@ -19,8 +22,10 @@ import org.nl.acs.instruction.service.dto.Instruction; import org.nl.acs.log.service.DeviceExecuteLogService; import org.nl.acs.monitor.DeviceStageMonitor; import org.nl.acs.opc.Device; +import org.nl.acs.order.service.ProduceshiftorderService; import org.nl.acs.order.service.dto.EalingOrderDto; import org.nl.acs.order.service.dto.ProduceshiftorderDto; +import org.nl.modules.lucene.service.LuceneExecuteLogService; import org.nl.modules.wql.util.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; @@ -37,9 +42,15 @@ import java.util.Map; public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver, DeviceStageMonitor, IssuedDeviceOrderInfo { protected ItemProtocol itemProtocol = new ItemProtocol(this); + @Autowired + AcsToWmsService acsToWmsService = SpringContextHolder.getBean(AcsToWmsServiceImpl.class); + @Autowired DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); @Autowired + ProduceshiftorderService produceshiftorderService = SpringContextHolder.getBean(ProduceshiftorderService.class); + @Autowired DeviceErrorLogService deviceErrorLogService = SpringContextHolder.getBean(DeviceErrorLogServiceImpl.class); + LuceneExecuteLogService luceneExecuteLogService = SpringContextHolder.getBean("luceneExecuteLogServiceImpl"); int heartbeat = 0; @@ -47,12 +58,16 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr int error = 0; int task = 0; int move = 0; + int order = 0; + int finish = 0; String barcode,last_barcode; int last_heartbeat = 0; int last_mode = 0; int last_error = 0; int last_task = 0; + int last_finish = 0; + int last_order = 0; Boolean isonline = true; @@ -77,7 +92,8 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr device_code = this.getDeviceCode(); mode = this.itemProtocol.getMode(); error = this.itemProtocol.getError(); - + order = this.itemProtocol.getOrder(); + finish = this.itemProtocol.getOrder_finish(); if (mode != last_mode) { logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记"); } @@ -92,7 +108,33 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr } logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error + "复位请求标记"); } + if (finish != last_finish) { + if (mode == 2 && finish == 1) { + MonitoringLargeScreenData.orderData.put(String.valueOf(order), -1); + } + logServer.deviceExecuteLog(this.device_code, "", "", "信号finish:" + last_finish + "->" + finish); + } + // 修改工单状态为生产中 + if (mode == 2 && order > 0) { + ProduceshiftorderDto pdto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); + if (pdto != null) { + if (pdto.getOrder_status().equals(WorkerOrderEnum.READY.getCode())) { + pdto.setOrder_status(WorkerOrderEnum.PRODUCTING.getCode()); + produceshiftorderService.update(pdto); + } + } + } + + //修改工单状态为自动完成 + if (mode == 2 && finish != last_finish && finish == 1 && order > 0) { + ProduceshiftorderDto pdto = produceshiftorderService.findByCodeFromCache(String.valueOf(order)); + if (pdto != null) { + if (pdto.getOrder_status().equals(WorkerOrderEnum.PRODUCTING.getCode())) { + produceshiftorderService.finished(pdto); + } + } + } } catch (Exception var17) { var17.printStackTrace(); @@ -117,6 +159,9 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr last_mode = mode; last_error = error; last_task = task; + last_finish = finish; + last_order = order; + } @@ -141,24 +186,30 @@ public class HailiangOldLetteringPackageDeviceDriver extends AbstractOpcDeviceDr @Override public void issuedOrderInfo(ProduceshiftorderDto dto) { - EalingOrderDto ealingOrderDto = dto.getEalingOrderDto(); - if (ealingOrderDto != null) { - String is_foreward = ealingOrderDto.getIs_foreward(); + if (dto != null) { Map map = new HashMap<>(); - map.put("to_qty", dto.getQty()); + map.put("to_clear", "1"); + map.put("to_order_qty", String.valueOf(dto.getQty())); map.put("to_order", dto.getOrder_code()); - map.put("item_to_bz_qty", dto.getPackage_qty()); - map.put("item_to_box_qty", dto.getBox_num()); + map.put("to_bz_qty", dto.getPackage_qty()); + map.put("to_box_qty", dto.getBox_num()); map.put("to_one_box_qty", dto.getOne_box_package_qty()); map.put("to_one_bag_qty", dto.getOne_package_qty()); - map.put("to_one_box_qty", dto.getOne_box_package_qty()); this.writing(map); } } @Override public void issuedOrderFinish(String autoFinish) { - + Map map = new HashMap<>(); + if (StrUtil.equals(autoFinish, WorkerOrderEnum.FORCEFINISH.getCode())) { + map.put("to_finished", "1"); + } else { + map.put("to_confirm_finished", "1"); + } + //map.put("to_order", "0"); + //map.put("to_clear", "1"); + this.writing(map); } @Override diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java index f0e9d9b2..9562df72 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_lettering_package_device/ItemProtocol.java @@ -26,6 +26,7 @@ public class ItemProtocol { public static String item_kz_qty = "kz_qty"; public static String item_ds_qty = "ds_qty"; public static String item_bz_qty = "bz_qty"; + public static String item_bz_box_qty = "bz_box_qty"; public static String item_order_finish = "order_finish"; public static String item_order_compulsion_finish = "order_compulsion_finish"; public static String item_order = "order"; @@ -91,6 +92,10 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_bz_qty); } + public int getBz_box_qty() { + return this.getOpcIntegerValue(item_bz_box_qty); + } + public int getError() { return this.getOpcIntegerValue(item_error); } @@ -111,6 +116,10 @@ public class ItemProtocol { return this.getOpcIntegerValue(item_order); } + public int getOrder_finish() { + return this.getOpcIntegerValue(item_order_finish); + } + //是否有货 public int hasGoods(int move) { @@ -157,12 +166,13 @@ public class ItemProtocol { list.add(new ItemDto(item_kz_error, "刻字机报警信号", "DB600.W18")); list.add(new ItemDto(item_ds_error, "点数机报警信号", "DB600.W20")); list.add(new ItemDto(item_bz_error, "包装机报警信号", "DB600.W22")); - list.add(new ItemDto(item_kz_qty, "刻字数量", "DB600.W24")); - list.add(new ItemDto(item_ds_qty, "点数数量", "DB600.W26")); - list.add(new ItemDto(item_bz_qty, "包装数量", "DB600.W28")); - list.add(new ItemDto(item_order_finish, "工单完成", "DB600.W30")); - list.add(new ItemDto(item_order_compulsion_finish, "工单强制完成", "DB600.W32")); - list.add(new ItemDto(item_order, "工单号", "DB600.D34")); + list.add(new ItemDto(item_kz_qty, "刻字数量", "DB600.D24")); + list.add(new ItemDto(item_ds_qty, "点数数量", "DB600.D28")); + list.add(new ItemDto(item_bz_qty, "包装数量", "DB600.W32")); + list.add(new ItemDto(item_bz_box_qty, "包装箱数量", "DB600.W34")); + list.add(new ItemDto(item_order_finish, "工单完成", "DB600.W36")); + list.add(new ItemDto(item_order_compulsion_finish, "工单强制完成", "DB600.W38")); + list.add(new ItemDto(item_order, "工单号", "DB600.D40")); return list; } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java index 4b4ccaa7..64bb9c9c 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_package_ssx/HailiangLetteringPackageSsxDeviceDriver.java @@ -1,10 +1,13 @@ package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_package_ssx; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.acs.AcsConfig; import org.nl.acs.acsEnum.WorkerOrderEnum; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver; @@ -24,6 +27,7 @@ import org.nl.acs.order.service.dto.ProduceshiftorderDto; import org.nl.modules.wql.util.SpringContextHolder; import org.springframework.beans.factory.annotation.Autowired; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -45,6 +49,7 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr int heartbeat = 0; int mode = 0; + int action = 0; int error = 0; int task = 0; int move = 0; @@ -61,8 +66,8 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr Boolean isonline = true; String message = null; Boolean iserror = false; - - private int instruction_require_time_out; + private Date instruction_require_time = new Date(); + private int instruction_require_time_out = 3000; boolean requireSucess = false; private int instruction_finished_time_out; @@ -80,6 +85,7 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr device_code = this.getDeviceCode(); mode = this.itemProtocol.getMode(); move = this.itemProtocol.getMove(); + action = this.itemProtocol.getAction(); error = this.itemProtocol.getError(); task = this.itemProtocol.getTask(); barcode = this.itemProtocol.getBarcode(); @@ -88,11 +94,12 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode + "复位请求标记"); } if (move != last_move){ - if(to_command != 0){ + message = null; + requireSucess =false; + if(to_command != 0 && "true".equals(this.device.getExtraValue().get("open_scanner"))){ this.writing("to_command", "0"); this.writing("to_target", "0"); } - requireSucess =false; } if (error != last_error) { if (error != 0) { @@ -113,53 +120,16 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr logServer.deviceExecuteLog(this.device_code, "", "", "读取信号值时出现异常:" + var17); } - if (!this.itemProtocol.getIsonline()) { - //this.setIsonline(false); - //this.setIserror(true); - message = "信号量同步异常"; - //未联机 - } else if (mode == 0) { + if (mode == 0) { message = "未联机"; } else { - message = ""; Instruction instruction = null; List toInstructions; - if(move == 1 && error == 0 && barcode.length() > 0 && requireSucess == false ){ - //2305281100001 - if(barcode.trim().length() == 16){ - if(isNumeric(barcode.trim())){ - /** - * 工单为前9位 - * 第10位是否翻转 - * 第11位为前往巷道 - * 后5位为流水号 - */ - String order = barcode.trim().substring(0,9); - int isFlip = Integer.parseInt(barcode.trim().substring(9,10)); - int target = Integer.parseInt(barcode.trim().substring(10,11)); - if(isFlip>0 && target>0){ - this.writing("to_is_flip",String.valueOf(isFlip)); - this.writing("to_target", String.valueOf(target)); - this.writing("to_command","1"); - requireSucess = true; - } else { - message = "条码:"+ barcode + ",是否翻转:"+isFlip + "目标巷道:"+target; - } - - - } else { - message = "条码不为数字,无法解析"; - } - } else { - message = "条码长度不等于16,无法下发目标位置"; - } + if(action == 1 && move > 0 && error == 0 && barcode.length() > 0 && "true".equals(this.device.getExtraValue().get("open_scanner"))){ + applyTarget(barcode.trim()); } - - - - } last_mode = mode; last_move = move; @@ -169,6 +139,43 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr } + public synchronized void applyTarget(String barcode) { + Date date = new Date(); + if (date.getTime() - this.instruction_require_time.getTime() < (long) this.instruction_require_time_out) { + log.trace("触发时间因为小于{}毫秒,而被无视", this.instruction_require_time_out); + return; + } else { + //2305281100001 + if (barcode.trim().length() == 16) { + if (isNumeric(barcode.trim())) { + /** + * 工单为前9位 + * 第10位是否翻转 + * 第11位为前往巷道 + * 后5位为流水号 + */ + String order = barcode.trim().substring(0, 9); + int isFlip = Integer.parseInt(barcode.trim().substring(9, 10)); + int target = Integer.parseInt(barcode.trim().substring(10, 11)); + if (target > 0) { + this.writing("to_is_flip", String.valueOf(isFlip)); + this.writing("to_target", String.valueOf(target)); + this.writing("to_command", "1"); + requireSucess = true; + } else { + message = "条码:" + barcode + ",是否翻转:" + isFlip + "目标巷道:" + target; + } + + + } else { + message = "条码不为数字,无法解析"; + } + } else { + message = "条码长度不等于16,无法下发目标位置"; + } + } + } + @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); @@ -178,23 +185,23 @@ public class HailiangLetteringPackageSsxDeviceDriver extends AbstractOpcDeviceDr String move = ""; if (this.getMode() == 0) { mode = "未联机"; + jo.put("isOnline", false); } else if (this.getMode() == 1) { mode = "单机"; + jo.put("isOnline", false); } else if (this.getMode() == 2) { mode = "联机"; + jo.put("isOnline", true); } else if (this.getMode() == 3) { mode = "运行中"; + jo.put("isOnline", true); } if (this.getMove() == 0) { move = "无货"; jo.put("hasGoods", false); - } else if (this.getMove() == 1) { + } else if (this.getMove() > 0) { move = "有货"; jo.put("hasGoods", true); - } else if (this.getMove() == 2) { - move = "有托盘有货"; - jo.put("move", move); - jo.put("hasGoods", true); } jo.put("move", move); jo.put("mode", mode); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java index 7d5a0ea4..4f708bb2 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_palletizing_station/HailiangOldPalletizingStationDriver.java @@ -1,5 +1,7 @@ package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_palletizing_station; +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.Data; import lombok.RequiredArgsConstructor; @@ -22,6 +24,8 @@ import org.nl.acs.opc.DeviceAppService; import org.nl.acs.order.service.ProduceshiftorderService; import org.nl.acs.route.service.RouteLineService; import org.nl.acs.task.service.TaskService; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; import org.springframework.beans.factory.annotation.Autowired; @@ -56,7 +60,8 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver ProduceshiftorderService produceshiftorderService = SpringContextHolder.getBean(ProduceshiftorderService.class); @Autowired DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - + @Autowired + LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); Boolean isonline = true; int hasGoods = 0; String message = null; @@ -72,7 +77,8 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver private int instruction_require_time_out = 3000; //请求成功标记 Boolean requireSucess = false; - + JSONArray barcodeArr = new JSONArray(); + JSONArray last_barcodeArr = new JSONArray(); String device_code; //心跳 @@ -112,25 +118,17 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver error = this.itemProtocol.getError(); boxtype = this.itemProtocol.getBoxtype(); if (mode != last_mode) { - logServer.deviceItemValue(this.device_code, "mode", String.valueOf(mode)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号mode:" + last_mode + "->" + mode); + } - if (move != last_move) { - logServer.deviceItemValue(this.device_code, "move", String.valueOf(move)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); + + if(!ObjectUtil.equal(barcodeArr,last_barcodeArr)){ + lucene.deviceExecuteLog(new LuceneLogDto(this.device_code,"码垛工位当前最新条码:"+barcodeArr.toString())); } - if (number != last_number) { - logServer.deviceItemValue(this.device_code, "number", String.valueOf(number)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号number:" + last_number + "->" + number); - } - if (error != last_error) { - logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); - } - if (boxtype != last_boxtype) { - logServer.deviceItemValue(this.device_code, "boxtype", String.valueOf(boxtype)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号boxtype:" + last_boxtype + "->" + boxtype); + + if(number != last_number && number ==0 ){ + barcodeArr.clear(); } + } catch (Exception var17) { logServer.deviceExecuteLog(this.device_code, "", "", "读取信号出现异常:" + var17.getMessage()); return; @@ -157,6 +155,9 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver this.setIserror(false); } + last_mode = mode; + last_number = number; + last_barcodeArr = barcodeArr; } protected void executing(Instruction instruction) { @@ -180,6 +181,7 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver Map itemMap = new HashMap(); itemMap.put(to_param, Integer.parseInt(value)); ReadUtil.write(itemMap, server); + server.dispose(); } @@ -192,12 +194,16 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver String move = ""; if (this.getMode() == 0) { mode = "未联机"; + jo.put("isOnline", false); } else if (this.getMode() == 1) { mode = "单机"; + jo.put("isOnline", false); } else if (this.getMode() == 2) { mode = "联机"; + jo.put("isOnline", true); } else if (this.getMode() == 3) { mode = "运行中"; + jo.put("isOnline", true); } if (this.getMove() == 0) { move = "无货"; @@ -209,11 +215,16 @@ public class HailiangOldPalletizingStationDriver extends AbstractOpcDeviceDriver move = "有托盘有货"; jo.put("hasGoods", true); } + jo.put("move", move); + jo.put("mode", mode); + jo.put("number", this.itemProtocol.getNumber()); + jo.put("boxType", this.itemProtocol.getBoxtype()); jo.put("isOnline", this.getIsonline()); jo.put("isError", this.getIserror()); jo.put("error", ErrorUtil.getDictDetail("ssx_error_type", String.valueOf(error))); jo.put("isOnline", this.itemProtocol.getIsonline()); jo.put("message", message); + jo.put("barcodeArr",barcodeArr); return jo; } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java index 8cdd07cb..42727180 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_stacking_manipulator/HailiangOldStackingManipulatorDriver.java @@ -1,6 +1,7 @@ package org.nl.acs.device_driver.basedriver.hailiang_old.hailiang_old_stacking_manipulator; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -99,8 +100,6 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive Boolean singlePlacementRequireSuccess = false; //请求码垛完成标志 Boolean stackingRequireSuccess = false; - - JSONArray barcodeArr = new JSONArray(); //当前设备状态 01代表 关机, 02代表 开机, 03代表 生产中, 04代表 待机, 05代表 异常 int status_type = 0; //上次设备状态 @@ -162,25 +161,24 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive logServer.deviceItemValue(this.device_code, "error", String.valueOf(error)); logServer.deviceExecuteLog(this.device_code, "", "", "信号error:" + last_error + "->" + error); } - if (getStation != last_getStation) { - logServer.deviceItemValue(this.device_code, "getStation", String.valueOf(getStation)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号getStation:" + last_getStation + "->" + getStation); - } - if (putStation != last_putStation) { - logServer.deviceItemValue(this.device_code, "putStation", String.valueOf(putStation)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号putStation:" + last_putStation + "->" + putStation); - } - if (encoder_qty != last_encoder_qty) { - logServer.deviceItemValue(this.device_code, "encoder_qty", String.valueOf(encoder_qty)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号encoder_qty:" + last_encoder_qty + "->" + encoder_qty); - } - if (boxtype != last_boxtype) { - logServer.deviceItemValue(this.device_code, "boxtype", String.valueOf(boxtype)); - logServer.deviceExecuteLog(this.device_code, "", "", "信号boxtype:" + last_boxtype + "->" + boxtype); - } +// if (getStation != last_getStation) { +// logServer.deviceItemValue(this.device_code, "getStation", String.valueOf(getStation)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号getStation:" + last_getStation + "->" + getStation); +// } +// if (putStation != last_putStation) { +// logServer.deviceItemValue(this.device_code, "putStation", String.valueOf(putStation)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号putStation:" + last_putStation + "->" + putStation); +// } +// if (encoder_qty != last_encoder_qty) { +// logServer.deviceItemValue(this.device_code, "encoder_qty", String.valueOf(encoder_qty)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号encoder_qty:" + last_encoder_qty + "->" + encoder_qty); +// } +// if (boxtype != last_boxtype) { +// logServer.deviceItemValue(this.device_code, "boxtype", String.valueOf(boxtype)); +// logServer.deviceExecuteLog(this.device_code, "", "", "信号boxtype:" + last_boxtype + "->" + boxtype); +// } } catch (Exception var17) { logServer.deviceExecuteLog(this.device_code, "", "", "读取信号出现异常:" + var17.getMessage()); - return; } if (!this.itemProtocol.getIsonline()) { this.setIsonline(false); @@ -274,7 +272,7 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive } String order = barcode.trim().substring(0,9); ProduceshiftorderDto dto =produceshiftorderService.findByCodeFromCache(order); - if(Objects.isNull(dto)){ + if(ObjectUtil.isEmpty(dto)){ message = "获取托盘信息,工单号:" + order + "未找到对应工单"; return false; } @@ -302,7 +300,10 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive HailiangOldPalletizingStationDriver hailiangOldPalletizingStationDriver; if(device.getDeviceDriver() instanceof HailiangOldPalletizingStationDriver){ hailiangOldPalletizingStationDriver = (HailiangOldPalletizingStationDriver) device.getDeviceDriver(); - if(hailiangOldPalletizingStationDriver.getNumber() == 0 ){ + if(hailiangOldPalletizingStationDriver.getNumber() == 0 && + hailiangOldPalletizingStationDriver.getMode() == 2 && + hailiangOldPalletizingStationDriver.getMove()==1 && + hailiangOldPalletizingStationDriver.getBoxtype() ==0) { targetStation = putDeviceCodeList.get(i); lucene.deviceExecuteLog(new LuceneLogDto(this.device_code,"单次码垛完成,取货位:"+getDeviceCode+",条码:"+barcode +",未找到相同箱型放货位,分配空放货位:"+ putDeviceCodeList.get(i))); putIndex = i; @@ -362,19 +363,29 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive //暂时不反馈MES Device getDevice = deviceAppservice.findDeviceByCode(getDeviceCode); + Device putDevice = deviceAppservice.findDeviceByCode(putDeviceCode); HailiangLetteringPackageSsxDeviceDriver hailiangLetteringPackageSsxDeviceDriver; + HailiangOldPalletizingStationDriver hailiangOldPalletizingStationDriver; + String barcode = null; if(getDevice.getDeviceDriver() instanceof HailiangLetteringPackageSsxDeviceDriver ){ hailiangLetteringPackageSsxDeviceDriver = (HailiangLetteringPackageSsxDeviceDriver) getDevice.getDeviceDriver(); - String barcode = hailiangLetteringPackageSsxDeviceDriver.getLast_barcode(); - if(Objects.isNull(barcode)){ + barcode = hailiangLetteringPackageSsxDeviceDriver.getLast_barcode(); + if(ObjectUtil.isEmpty(barcode)){ message = "单次码垛完成,取货位:"+getDeviceCode+"条码为空"; return false; } lucene.deviceExecuteLog(new LuceneLogDto(this.device_code,"单次码垛完成,取货位:"+getDeviceCode+",条码:"+barcode)); - barcodeArr.add(barcode); + } + + if(putDevice.getDeviceDriver() instanceof HailiangOldPalletizingStationDriver ) { + hailiangOldPalletizingStationDriver = (HailiangOldPalletizingStationDriver) putDevice.getDeviceDriver(); + JSONArray arr = hailiangOldPalletizingStationDriver.getBarcodeArr(); + arr.add(barcode.trim()); + hailiangOldPalletizingStationDriver.setBarcodeArr(arr); } this.writing("to_feedback", "2"); + this.writing("to_boxType", "0"); this.setSinglePlacementRequireSuccess(true); } return true; @@ -393,22 +404,34 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive List putDeviceCodeList = this.getExtraDeviceCodes("link_put_device_code"); //根据kep读取到的放货工位的值 - 1 得到对应设备的下标,再根据下标获得对应设备的编码 String putDeviceCode = putDeviceCodeList.get(getPutStation() - 1).replace("\"", ""); + HailiangOldPalletizingStationDriver hailiangOldPalletizingStationDriver; + Device putDevice = deviceAppservice.findDeviceByCode(putDeviceCode); + JSONArray ja = null; + if(putDevice.getDeviceDriver() instanceof HailiangOldPalletizingStationDriver ) { + hailiangOldPalletizingStationDriver = (HailiangOldPalletizingStationDriver) putDevice.getDeviceDriver(); + ja = hailiangOldPalletizingStationDriver.getBarcodeArr(); + lucene.deviceExecuteLog(new LuceneLogDto(this.device_code,"码垛完成ja:"+ja.toString())); + } JSONObject map = new JSONObject(); map.put("device_code", putDeviceCode); map.put("encoder_qty", String.valueOf(getEncoder_qty())); map.put("boxtype", String.valueOf(getBoxtype())); - map.put("barcodeArr",barcodeArr); + map.put("barcodeArr", String.valueOf(ja)); map.put("id", IdUtil.simpleUUID()); - JSONObject resp = acsToWmsService.stackingCompleted(map); - int code = Integer.parseInt(resp.getString("code")); - String message = resp.getString("message"); - JSONObject data = resp.getJSONObject("data"); - if (code == 200) { - this.writing("to_feedback", "3"); - this.setStackingRequireSuccess(true); - } else { - log.warn("码垛完成反馈失败!设备号:{},原因{}", device_code, message); - } + lucene.deviceExecuteLog(new LuceneLogDto(this.device_code,"码垛完成反馈:"+map)); + +// JSONObject resp = acsToWmsService.stackingCompleted(map); +// int code = Integer.parseInt(resp.getString("code")); +// String message = resp.getString("message"); +// JSONObject data = resp.getJSONObject("data"); +// if (code == 200) { +// this.writing("to_feedback", "3"); +// this.setStackingRequireSuccess(true); +// } else { +// log.warn("码垛完成反馈失败!设备号:{},原因{}", device_code, message); +// } + this.writing("to_feedback", "3"); + this.setStackingRequireSuccess(true); } return true; } @@ -435,16 +458,18 @@ public class HailiangOldStackingManipulatorDriver extends AbstractOpcDeviceDrive Map itemMap = new HashMap(); itemMap.put(to_param, Integer.parseInt(value)); ReadUtil.write(itemMap, server); + server.disconnect(); } @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); jo.put("device_name", this.getDevice().getDevice_name()); - jo.put("mode", mode == 1 ? "联机" : "未联机"); + jo.put("mode", mode == 2 ? "联机" : "未联机"); jo.put("action", action); jo.put("error", ErrorUtil.getDictDetail("jxs_error_type", String.valueOf(error))); - jo.put("barcodeArr", barcodeArr); + jo.put("getStation", this.itemProtocol.getGetStation()); + jo.put("putStation", this.itemProtocol.getPutStation()); jo.put("isOnline", this.itemProtocol.getIsonline()); jo.put("message", message); return jo; diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDeviceDriver.java index 1b22675e..d5e27a8b 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_old/hailiang_old_unboxing_machine/HailiangOldUnboxingMachineDeviceDriver.java @@ -129,11 +129,12 @@ public class HailiangOldUnboxingMachineDeviceDriver extends AbstractOpcDeviceDri @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); + jo.put("device_code", this.getDevice().getDevice_code()); jo.put("device_name", this.getDevice().getDevice_name()); jo.put("mode", mode == 1 ? "联机" : "未联机"); jo.put("error", ErrorUtil.getDictDetail("unbox_error_type", String.valueOf(error))); jo.put("qty", qty); - jo.put("status", this.itemProtocol.getStatus()==1 ? "未知":"工作中"); + jo.put("status", this.itemProtocol.getStatus()== 0 ? "未知":"工作中"); jo.put("one_qty", this.itemProtocol.getOne_qty()); jo.put("two_qty", this.itemProtocol.getTwo_qty()); jo.put("three_qty", this.itemProtocol.getThree_qty()); diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java index 6782b258..ef24be19 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/hailiang_one/hailiang_ealing_machine/EalingMachineDeviceDriver.java @@ -246,6 +246,7 @@ public class EalingMachineDeviceDriver extends AbstractOpcDeviceDriver implement @Override public JSONObject getDeviceStatusName() { JSONObject jo = new JSONObject(); + jo.put("device_code", this.getDevice().getDevice_code()); jo.put("device_name", this.getDevice().getDevice_name()); jo.put("isOnline", this.itemProtocol.getIsonline()); return jo; diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java index b2680b73..7d1b2e28 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/device_driver/driver/AbstractOpcDeviceDriver.java @@ -13,6 +13,8 @@ import org.nl.acs.opc.WcsConfig; import org.nl.acs.udw.UnifiedDataAccessor; import org.nl.acs.udw.UnifiedDataAccessorFactory; import org.nl.acs.udw.UnifiedDataAppService; +import org.nl.modules.lucene.service.LuceneExecuteLogService; +import org.nl.modules.lucene.service.dto.LuceneLogDto; import org.nl.modules.wql.exception.WDKException; import org.nl.modules.wql.util.SpringContextHolder; import org.openscada.opc.lib.da.Server; @@ -144,6 +146,7 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc * @param value */ public void writing(String key, String value) { + LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); String opcServerId = this.getDevice().getOpc_server_id(); Server server = ReadUtil.getServer(opcServerId); @@ -151,6 +154,7 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc itemMap.put(getToParam() + key, value); ReadUtil.write(itemMap, server); server.disconnect(); + lucene.deviceExecuteLog(new LuceneLogDto(this.getDeviceCode(),"下发单个电气信号:" + key + ",下发电气信号值:" + value)); logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发单个电气信号:" + key + ",下发电气信号值:" + value); } @@ -162,6 +166,8 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc */ public void writing(Map map) { DeviceExecuteLogService logServer = SpringContextHolder.getBean("deviceExecuteLogServiceImpl"); + LuceneExecuteLogService lucene = SpringContextHolder.getBean(LuceneExecuteLogService.class); + Map itemMap = new HashMap(); map.forEach((key, value) -> { if (ObjectUtil.isNotEmpty(value)) { @@ -170,6 +176,7 @@ public class AbstractOpcDeviceDriver extends AbstractDeviceDriver implements Opc }); if (ObjectUtil.isNotEmpty(itemMap)) { this.control(itemMap); + lucene.deviceExecuteLog(new LuceneLogDto(this.getDeviceCode(),"下发多个电气信号:" + itemMap)); logServer.deviceExecuteLog(this.getDevice().getDevice_code(), "", "", "下发多个电气信号:" + itemMap); } } diff --git a/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java b/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java index 601d1cc9..7ea25f40 100644 --- a/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java +++ b/wcs/nladmin-system/src/main/java/org/nl/acs/opc/DeviceOpcProtocolRunable.java @@ -412,11 +412,14 @@ public class DeviceOpcProtocolRunable implements Runnable, DataCallback, ServerC Object obj = accessor_value.getValue(relate); sb.append("key:" + relate + "value:" + obj + ";"); } - lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); + if (!itemDto.getItem_code().endsWith("heartbeat")) { + lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); + } } else { - - lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); + if (!itemDto.getItem_code().endsWith("heartbeat")) { + lucene.deviceExecuteLog(new LuceneLogDto(itemDto.getOpc_server_code(), itemDto.getOpc_plc_code(), itemDto.getDevice_code(), itemDto.getItem_code().substring(itemDto.getItem_code().lastIndexOf(".")+1), String.valueOf(his), String.valueOf(value))); + } } } diff --git a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue index f6ab9efc..3130ac08 100644 --- a/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue +++ b/wcs/nladmin-ui/src/views/acs/device/driver/hailiang_old/hailiang_old_package_ssx_station.vue @@ -67,8 +67,8 @@ - - + + diff --git a/wcs/nladmin-ui/src/views/acs/monitor/device/index.vue b/wcs/nladmin-ui/src/views/acs/monitor/device/index.vue index 14249508..e69de29b 100644 --- a/wcs/nladmin-ui/src/views/acs/monitor/device/index.vue +++ b/wcs/nladmin-ui/src/views/acs/monitor/device/index.vue @@ -1,601 +0,0 @@ - - - - - diff --git a/wcs/nladmin-ui/src/views/acs/order/index.vue b/wcs/nladmin-ui/src/views/acs/order/index.vue index 047f7d4a..504b9dca 100644 --- a/wcs/nladmin-ui/src/views/acs/order/index.vue +++ b/wcs/nladmin-ui/src/views/acs/order/index.vue @@ -135,6 +135,27 @@ + + + + + + + + + + + + + + + + + + + + +