From 5b432353697615ddedb375140341d51d4962f23f Mon Sep 17 00:00:00 2001 From: ludj Date: Tue, 14 Feb 2023 19:12:59 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E6=89=8B=E6=8C=81APP=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lms/nladmin-system/pom.xml | 7 --- .../rest/MobileAuthorizationController.java | 1 - .../org/nl/wms/pda/AppUpdateController.java | 48 +++++++++++++++++++ 3 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 lms/nladmin-system/src/main/java/org/nl/wms/pda/AppUpdateController.java diff --git a/lms/nladmin-system/pom.xml b/lms/nladmin-system/pom.xml index 7c5bfd82d..8579a3819 100644 --- a/lms/nladmin-system/pom.xml +++ b/lms/nladmin-system/pom.xml @@ -19,7 +19,6 @@ 1.8 1.16 2.9.2 - 1.2.70 1.1.22 2.5.0 1.3.1.Final @@ -241,12 +240,6 @@ 2.12.0 - - - com.alibaba - fastjson - ${fastjson.version} - diff --git a/lms/nladmin-system/src/main/java/org/nl/modules/security/rest/MobileAuthorizationController.java b/lms/nladmin-system/src/main/java/org/nl/modules/security/rest/MobileAuthorizationController.java index e1eb5d5dc..4c0b605da 100644 --- a/lms/nladmin-system/src/main/java/org/nl/modules/security/rest/MobileAuthorizationController.java +++ b/lms/nladmin-system/src/main/java/org/nl/modules/security/rest/MobileAuthorizationController.java @@ -20,7 +20,6 @@ import org.nl.system.service.secutiry.dto.AuthUserDto; import org.nl.system.service.user.ISysUserService; import org.nl.system.service.user.dao.SysUser; import org.nl.system.service.user.dto.CurrentUser; -import org.nl.system.service.user.dto.UserDto; import org.springframework.http.ResponseEntity; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/AppUpdateController.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/AppUpdateController.java new file mode 100644 index 000000000..7bc9843af --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/AppUpdateController.java @@ -0,0 +1,48 @@ +package org.nl.wms.pda; + +/** + * @author ldjun + * @version 1.0 + * @date 2023年02月14日 15:20 + * @desc desc + */ + +import cn.dev33.satoken.annotation.SaIgnore; +import com.alibaba.fastjson.JSONObject; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.modules.logging.annotation.Log; +import org.nl.modules.system.service.ParamService; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +/** + * + */ +@RestController +@RequiredArgsConstructor +@Api(tags = "任务管理") +@RequestMapping("/api/pda/update") +@Slf4j +public class AppUpdateController { + + private final ParamService paramService; + + @PostMapping + @Log("app更新") + @ApiOperation("app更新") + @SaIgnore + public ResponseEntity appUpdate() { + JSONObject obj=new JSONObject(); +// obj.put("versionName","1.0.1"); + String app_rul = paramService.findByCode("APP_URL").getValue(); + String app_version = paramService.findByCode("APP_VERSION").getValue(); +// obj.put("url","http://172.17.2.163:8080/apk/app.apk"); + obj.put("url",app_rul); + obj.put("versionName",app_version); + return new ResponseEntity<>(obj, HttpStatus.OK); + } +} From 430d6ce0078137f3ec3e94f976797f83436c18fa Mon Sep 17 00:00:00 2001 From: liuxy Date: Tue, 14 Feb 2023 20:13:19 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ProductInstorServiceImpl.java | 36 ++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java index 55d6459b3..a3c1372b0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/wms/pda/st/service/impl/ProductInstorServiceImpl.java @@ -288,18 +288,44 @@ public class ProductInstorServiceImpl implements ProductInstorService { throw new BadRequestException("未查询到该木箱对应的包装关系!"); } - String box_length = sub_jo.getString("box_length"); - String box_width = sub_jo.getString("box_width"); - String box_high = sub_jo.getString("box_high"); + String to_length = sub_jo.getString("box_length"); // 长 + String to_weight = sub_jo.getString("box_width"); // 宽 + String to_height = sub_jo.getString("box_high"); // 高 + String to_strap_times = "2"; // 捆扎次数 + String to_command = "4"; // 指令 JSONArray array = new JSONArray(); JSONObject jsonLength = new JSONObject(); jsonLength.put("device_code", point_code); - jsonLength.put("code", ""); - jsonLength.put("value", box_length); + jsonLength.put("code", "to_length"); + jsonLength.put("value", to_length); array.add(jsonLength); + JSONObject jsonWeight= new JSONObject(); + jsonWeight.put("device_code", point_code); + jsonWeight.put("code", "to_weight"); + jsonWeight.put("value", to_weight); + array.add(jsonWeight); + + JSONObject jsonHeight= new JSONObject(); + jsonHeight.put("device_code", point_code); + jsonHeight.put("code", "to_height"); + jsonHeight.put("value", to_height); + array.add(jsonHeight); + + JSONObject jsonStrap= new JSONObject(); + jsonStrap.put("device_code", point_code); + jsonStrap.put("code", "to_strap_times"); + jsonStrap.put("value", to_strap_times); + array.add(jsonStrap); + + JSONObject jsonCommand= new JSONObject(); + jsonCommand.put("device_code", point_code); + jsonCommand.put("code", "to_command"); + jsonCommand.put("value", to_command); + array.add(jsonCommand); + // 调用接口返回数据 WmsToAcsServiceImpl wmsToAcsServiceImpl = SpringContextHolder.getBean(WmsToAcsServiceImpl.class); wmsToAcsServiceImpl.action(array); From d2b31991657b2a7a595d38fce8db2c197cf5918e Mon Sep 17 00:00:00 2001 From: "USER-20220102CG\\noblelift" <546428999@qq.com> Date: Wed, 15 Feb 2023 09:27:16 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SiemensConveyorDeviceDriver.java | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) 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 65933128b..049adcd13 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 @@ -310,9 +310,10 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme JSONObject param = new JSONObject() {{ put("device_code", device_code); }}; - + logServer.deviceExecuteLog(this.device_code, "", "", "有货变无货请求LMS,参数:"+param); HttpResponse response = acsToWmsService.shipDeviceUpdate(param); if (response == null || response.getStatus() == 200) { + logServer.deviceExecuteLog(this.device_code, "", "", "有货变无货请求LMS,接口返回:"+response.body()); this.requiresShipDeviceUpdate = true; } } @@ -369,7 +370,6 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme public synchronized boolean finish_instruction() throws Exception { instructionService.finish(inst); -// requireSucess = false; return true; } @@ -383,12 +383,9 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme String to_param = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() + "." + param; - //String opcservcerid = this.getDevice().getOpc_server_id(); -//Server server = ReadUtil.getServer(opcservcerid); Map itemMap = new HashMap(); itemMap.put(to_param, Integer.parseInt(value)); -// itemMap.put(to_param, Integer.parseInt(value)); this.control(itemMap); logServer.deviceExecuteLog(device_code, "", "", "下发电气信号设备号:" + device_code + ",下发电气:" + to_param + ",下发电气值:" + value); } @@ -398,12 +395,8 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme } public void writing(int command) { - - //String opcservcerid = this.getDevice().getOpc_server_id(); -//Server server = ReadUtil.getServer(opcservcerid); Map itemMap = new HashMap(); this.control(itemMap); - } @Override @@ -459,9 +452,6 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme jo.put("task", task); jo.put("last_task", last_task); jo.put("task_code", task_code); - -// jo.put("barcode", barcode); -// jo.put("last_task", last_task); jo.put("inst_message", this.inst_message); jo.put("last_inst_message", this.last_inst_message); jo.put("isOnline", this.getIsonline()); @@ -486,8 +476,6 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme public void writing(List list) { -// String opcservcerid = this.getDevice().getOpc_server_id(); -// Server server = ReadUtil.getServer(opcservcerid); Map itemMap = new HashMap(); for (int i = 0; i < list.size(); i++) { Object ob = list.get(i); @@ -728,6 +716,7 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme applyLabelingAndBindingRequest.setDevice_code(start_point_code); applyLabelingAndBindingRequest.setType("1"); applyLabelingAndBindingRequest.setVehicle_code(vehicle_code); + logServer.deviceExecuteLog(this.device_code, "", "", "申请贴标,请求参数:"+JSON.toJSONString(applyLabelingAndBindingRequest)); ApplyLabelingAndBindingResponse applyLabelingAndBindingResponse = acsToWmsService.applyLabelingAndBindingRequest(applyLabelingAndBindingRequest); if (applyLabelingAndBindingResponse.getstatus() == 200) { @@ -741,8 +730,11 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme this.writing(list); message = "申请贴标下发电气信号成功"; requireApplyLabelingSuccess = true; + logServer.deviceExecuteLog(this.device_code, "", "", "申请贴标,返回参数:"+JSON.toJSONString(applyLabelingAndBindingResponse)); + } else { message = "申请贴标失败," + applyLabelingAndBindingResponse.getMessage(); + logServer.deviceExecuteLog(this.device_code, "", "", "申请贴标,返回参数:"+JSON.toJSONString(applyLabelingAndBindingResponse)); } } } @@ -787,6 +779,7 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme applyLabelingAndBindingRequest.setDevice_code(start_point_code); applyLabelingAndBindingRequest.setType("2"); applyLabelingAndBindingRequest.setVehicle_code(vehicle_code); + logServer.deviceExecuteLog(this.device_code, "", "", "申请捆扎,请求参数:"+JSON.toJSONString(applyLabelingAndBindingRequest)); ApplyLabelingAndBindingResponse applyLabelingAndBindingResponse = acsToWmsService.applyLabelingAndBindingRequest(applyLabelingAndBindingRequest); if (applyLabelingAndBindingResponse.getstatus() == 200) { if (ObjectUtil.isNotEmpty(applyLabelingAndBindingResponse.getData())) { @@ -819,15 +812,17 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme list.add(map5); this.writing(list); // this.writing(list); - + logServer.deviceExecuteLog(this.device_code, "", "", "申请捆扎,返回参数:"+JSON.toJSONString(applyLabelingAndBindingResponse)); message = "申请捆扎成功"; requireSucess = true; } else { message = "未返回尺寸信息"; + logServer.deviceExecuteLog(this.device_code, "", "", "申请捆扎,返回参数:"+JSON.toJSONString(applyLabelingAndBindingResponse)); } } else { message = applyLabelingAndBindingResponse.getMessage(); + logServer.deviceExecuteLog(this.device_code, "", "", "申请捆扎,返回参数:"+JSON.toJSONString(applyLabelingAndBindingResponse)); } } @@ -853,6 +848,8 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme apply.put("device_code", device_code); apply.put("type", "2"); String str = acsToWmsService.applyTaskToWms(apply); + logServer.deviceExecuteLog(this.device_code, "", "", "申请空盘入库,请求参数:"+JSON.toJSONString(apply)); + JSONObject jo = JSON.parseObject(str); if (ObjectUtil.isEmpty(jo)) { message = "申请空盘入库接口不通"; @@ -891,7 +888,10 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme apply.put("device_code", device_code); apply.put("type", "4"); apply.put("vehicle_code", instruction.getVehicle_code()); + String str = acsToWmsService.applyTaskToWms(apply); + logServer.deviceExecuteLog(this.device_code, "", "", "申请AGV任务,请求参数:"+apply); + JSONObject jo = JSON.parseObject(str); if (ObjectUtil.isEmpty(jo)) { message = "申请AGV搬运任务接口不通"; @@ -899,6 +899,7 @@ public class SiemensConveyorDeviceDriver extends AbstractOpcDeviceDriver impleme } else { if (jo.getInteger("status") == 200) { message = "申请AGV搬运任务成功"; + logServer.deviceExecuteLog(this.device_code, "", "", "申请AGV任务,返回参数:"+jo); requireSucess = true; } else { requireSucess = true; From cd09d0412b07bff398917ec01124206d658aaa38 Mon Sep 17 00:00:00 2001 From: gengby <858962040@qq.com> Date: Wed, 15 Feb 2023 09:39:39 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=85=89=E7=94=B5?= =?UTF-8?q?=E6=A3=80=E6=B5=8B=E9=A9=B1=E5=8A=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/device_driver/DriverTypeEnum.java | 4 +- .../ItemProtocol.java | 59 +++ ...PhotoelectricInspectionSiteDefination.java | 69 +++ ...otoelectricInspectionSiteDeviceDriver.java | 260 ++++++++++ .../driver/photoelectric_inspection_site.vue | 489 ++++++++++++++++++ 5 files changed, 880 insertions(+), 1 deletion(-) create mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/photoelectric_inspection_site/ItemProtocol.java create mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/photoelectric_inspection_site/PhotoelectricInspectionSiteDefination.java create mode 100644 acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/photoelectric_inspection_site/PhotoelectricInspectionSiteDeviceDriver.java create mode 100644 acs/nladmin-ui/src/views/acs/device/driver/photoelectric_inspection_site.vue diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java b/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java index edf03089c..8dc24067a 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java @@ -45,7 +45,9 @@ public enum DriverTypeEnum { SIEMENS_CONVEYOR_CKK(17, "siemens_conveyor_ckk", "西门子-输送机驱动-出库口", "conveyor"), - SIEMENS_ONEFLOOR_AGV_CONVEYOR(17, "siemens_onefloor_agv_conveyor", "西门子-1LAGV-输送机驱动", "conveyor"); + SIEMENS_ONEFLOOR_AGV_CONVEYOR(17, "siemens_onefloor_agv_conveyor", "西门子-1LAGV-输送机驱动", "conveyor"), + + PHOTOELECTRIC_INSPECTION_SITE(19, "photoelectric_inspection_site", "光电-检测站点", "conveyor"); //驱动索引 diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/photoelectric_inspection_site/ItemProtocol.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/photoelectric_inspection_site/ItemProtocol.java new file mode 100644 index 000000000..818671211 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/photoelectric_inspection_site/ItemProtocol.java @@ -0,0 +1,59 @@ +package org.nl.acs.device_driver.basedriver.photoelectric_inspection_site; + +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; + +import java.util.ArrayList; +import java.util.List; + +@Slf4j +@Data +public class ItemProtocol { + + public static String item_move = "move"; + + + private PhotoelectricInspectionSiteDeviceDriver driver; + + public ItemProtocol(PhotoelectricInspectionSiteDeviceDriver driver) { + this.driver = driver; + } + + public int getMove() { + return this.getOpcIntegerValue(item_move); + } + + //是否有货 + public int hasGoods(int move) { + return move; + } + + Boolean isonline; + + public int getOpcIntegerValue(String protocol) { + Integer value = this.driver.getIntegeregerValue(protocol); + if (value == null) { + // log.error(this.getDriver().getDeviceCode() + ":protocol " + protocol + " 信号同步异常!"); + setIsonline(false); + } else { + setIsonline(true); + return value; + } + return 0; + + } + + public static List getReadableItemDtos() { + ArrayList list = new ArrayList(); + list.add(new ItemDto(item_move, "光电开关信号", "DB600.B2")); + return list; + } + + public static List getWriteableItemDtos() { + ArrayList list = new ArrayList(); + return list; + } + +} + diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/photoelectric_inspection_site/PhotoelectricInspectionSiteDefination.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/photoelectric_inspection_site/PhotoelectricInspectionSiteDefination.java new file mode 100644 index 000000000..d0884bb3e --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/photoelectric_inspection_site/PhotoelectricInspectionSiteDefination.java @@ -0,0 +1,69 @@ +package org.nl.acs.device_driver.basedriver.photoelectric_inspection_site; + +import org.nl.acs.device.device_driver.standard_inspect.ItemDto; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.defination.OpcDeviceDriverDefination; +import org.nl.acs.opc.Device; +import org.nl.acs.opc.DeviceType; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.LinkedList; +import java.util.List; + +/** + * 光电-检测站点驱动定义 + * 说明:该站点为光电-检测站点 + */ +@Service +public class PhotoelectricInspectionSiteDefination implements OpcDeviceDriverDefination { + @Override + public String getDriverCode() { + return "photoelectric_inspection_site"; + } + + @Override + public String getDriverName() { + return "光电-检测站点"; + } + + @Override + public String getDriverDescription() { + return "光电-检测站点"; + } + + @Override + public DeviceDriver getDriverInstance(Device device) { + return (new PhotoelectricInspectionSiteDeviceDriver()).setDevice(device).setDriverDefination(this); + + } + + @Override + public Class getDeviceDriverType() { + return PhotoelectricInspectionSiteDeviceDriver.class; + } + + @Override + public List getFitDeviceTypes() { + List types = new LinkedList(); + types.add(DeviceType.conveyor); + return types; + } + + @Override + public List getReadableItemDtos() { + return getReadableItemDtos2(); + } + + public static List getReadableItemDtos2() { + List list = new ArrayList(); + list.add(new ItemDto(ItemProtocol.item_move, "光电开关信号", "DB600.B2")); + return list; + } + + @Override + public List getWriteableItemDtos() { + return ItemProtocol.getWriteableItemDtos(); + } + +} diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/photoelectric_inspection_site/PhotoelectricInspectionSiteDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/photoelectric_inspection_site/PhotoelectricInspectionSiteDeviceDriver.java new file mode 100644 index 000000000..ac4726bb5 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/photoelectric_inspection_site/PhotoelectricInspectionSiteDeviceDriver.java @@ -0,0 +1,260 @@ +package org.nl.acs.device_driver.basedriver.photoelectric_inspection_site; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import lombok.Data; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.service.DeviceService; +import org.nl.acs.device_driver.DeviceDriver; +import org.nl.acs.device_driver.RouteableDeviceDriver; +import org.nl.acs.device_driver.driver.AbstractOpcDeviceDriver; +import org.nl.acs.device_driver.driver.ExecutableDeviceDriver; +import org.nl.acs.instruction.service.InstructionService; +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.opc.DeviceAppService; +import org.nl.acs.opc.DeviceAppServiceImpl; +import org.nl.acs.opc.WcsConfig; +import org.nl.acs.route.service.RouteLineService; +import org.nl.acs.route.service.dto.RouteLineDto; +import org.nl.acs.task.service.TaskService; +import org.nl.acs.task.service.dto.TaskDto; +import org.nl.modules.system.util.CodeUtil; +import org.nl.modules.wql.core.bean.WQLObject; +import org.nl.modules.wql.util.SpringContextHolder; +import org.openscada.opc.lib.da.Server; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 光电-检测站点 + */ +@Slf4j +@Data +@RequiredArgsConstructor +public class PhotoelectricInspectionSiteDeviceDriver extends AbstractOpcDeviceDriver implements DeviceDriver, ExecutableDeviceDriver, RouteableDeviceDriver , DeviceStageMonitor { + protected ItemProtocol itemProtocol = new ItemProtocol(this); + @Autowired + InstructionService instructionService = SpringContextHolder.getBean("instructionServiceImpl"); + @Autowired + DeviceService deviceservice = SpringContextHolder.getBean("deviceServiceImpl"); + @Autowired + RouteLineService routelineserver = SpringContextHolder.getBean("routeLineServiceImpl"); + @Autowired + TaskService taskserver = SpringContextHolder.getBean("taskServiceImpl"); + @Autowired + DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); + String container; + String container_type_desc; + String last_container_type_desc; + String last_container; + //放货准备锁 + String putReadyLock = null; + //有货标记 + protected boolean has_goods_tag = false; + + + int move = 0; + int last_move = 0; + + Boolean isonline = true; + int hasGoods = 0; + String message = null; + Boolean iserror = false; + + + boolean hasVehicle = false; + boolean isReady = false; + protected int instruction_num = 0; + protected int instruction_num_truth = 0; + boolean isFold = false; + private String assemble_check_tag; + + protected String current_stage_instruction_message; + protected String last_stage_instruction_message; + Integer heartbeat_tag; + private Date instruction_require_time = new Date(); + private Date instruction_finished_time = new Date(); + + private int instruction_require_time_out; + boolean requireSucess = false; + + private int instruction_finished_time_out; + + int branchProtocol = 0; + //备注 + String remark; + //数量 + String qty; + //物料 + String material; + //批次 + String batch; + //当前指令 + Instruction inst = null; + //上次指令 + Instruction last_inst = null; + String device_code; + //触摸屏手动触发任务 + private Boolean is_has_task = false; + + //申请搬运任务 + private Boolean apply_handling = false; + //申请物料 + private Boolean apply_material = false; + + //暂定 0就绪 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 + int flag; + + String devicecode; + + @Override + public Device getDevice() { + return this.device; + } + + + @Override + public void execute() { + String message = null; + try { + device_code = this.getDeviceCode(); + move = this.itemProtocol.getMove(); + if (move != last_move) { + logServer.deviceExecuteLog(this.device_code, "", "", "信号move:" + last_move + "->" + move); + } + + } catch (Exception var17) { + return; + } + + if (!this.itemProtocol.getIsonline()) { + this.setIsonline(false); + this.setIserror(true); + message = "信号量同步异常"; + //未联机 + } else { + this.setIsonline(true); + this.setIserror(false); + message = ""; + Instruction instruction = null; + List toInstructions; + } + last_move = move; + } + + + + protected void thingToNothing() { + log.debug("从有货到无货 清理数据"); + this.set_last_container(container, container_type_desc); + } + + public void set_last_container(String barcode, String type_desc) { + this.set_last_container(barcode); + this.set_last_container_type_desc(type_desc); + } + + public void set_last_container(String barcode) { + } + + public void set_last_container_type_desc(String type) { + } + + public boolean exe_business() { + return true; + } + + + + public void executing(Server server, Map itemMap) { + this.control(itemMap); + } + + + + public boolean instruction_require(String container_code) { + return instruction_require(container_code, WcsConfig.task_container_type_default_desc); + } + + /** + * 请求指令 + * + * @param container_code + * @param container_type + */ + public synchronized boolean instruction_require(String container_code, String container_type) { + 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 false; + } else { + this.instruction_require_time = date; + TaskDto dto = new TaskDto(); + String now = DateUtil.now(); + dto.setTask_id(IdUtil.simpleUUID()); + dto.setCreate_by(this.getDevice().getDevice_code()); + dto.setUpdate_by(this.getDevice().getDevice_code()); + dto.setStart_point_code(this.getDevice().getDevice_code()); + dto.setVehicle_code(container_code); + dto.setVehicle_type(container_type); + + String taskcode = CodeUtil.getNewCode("TASK_NO"); + dto.setTask_code("-" + taskcode); + dto.setTask_status("0"); + dto.setPriority("101"); + RouteLineDto jo = routelineserver.findByCode(this.getDevice().getDevice_code()); + String next_device_codecode = jo.getNext_device_code(); + if (StrUtil.isEmpty(next_device_codecode)) { + throw new RuntimeException("该设备未找到对应路由"); + } + dto.setNext_point_code(next_device_codecode); + dto.setUpdate_time(now); + dto.setCreate_time(now); + + WQLObject wo = WQLObject.getWQLObject("acs_task"); + JSONObject json = (JSONObject) JSONObject.toJSON(dto); + + wo.insert(json); + requireSucess = false; + return true; + } + } + + @Override + public JSONObject getDeviceStatusName() { + JSONObject jo = new JSONObject(); + String move = ""; + + + if (this.getMove() == 0) { + move = "无货"; + jo.put("hasGoods", false); + } else if (this.getMove() == 1) { + move = "有货"; + jo.put("hasGoods", true); + } else if (this.getMove() == 2) { + move = "有托盘有货"; + jo.put("hasGoods", true); + } + jo.put("device_name", this.getDevice().getDevice_name()); + jo.put("move", move); + jo.put("isOnline", this.getIsonline()); + jo.put("isError", this.getIserror()); + return jo; + } + + @Override + public void setDeviceStatus(JSONObject data) { + + } +} diff --git a/acs/nladmin-ui/src/views/acs/device/driver/photoelectric_inspection_site.vue b/acs/nladmin-ui/src/views/acs/device/driver/photoelectric_inspection_site.vue new file mode 100644 index 000000000..2e7e4761d --- /dev/null +++ b/acs/nladmin-ui/src/views/acs/device/driver/photoelectric_inspection_site.vue @@ -0,0 +1,489 @@ + + + + + From f4f88c818e6e3aa2925d095c0ca618718addab73 Mon Sep 17 00:00:00 2001 From: "USER-20220102CG\\noblelift" <546428999@qq.com> Date: Wed, 15 Feb 2023 11:56:12 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wms/service/impl/WmsToAcsServiceImpl.java | 29 +++++++++++-------- .../acs/device/driver/siemens_conveyor.vue | 4 +-- acs/nladmin-ui/src/views/loki/view/index.vue | 1 + 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index c6618e197..d3a0193e7 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -16,6 +16,7 @@ import org.nl.acs.device_driver.basedriver.empty_vehicle_stacking_position.Empty import org.nl.acs.device_driver.basedriver.hongxiang_conveyor.HongXiangStationDeviceDriver; import org.nl.acs.device_driver.basedriver.hongxiang_device.HongXiangConveyorDeviceDriver; import org.nl.acs.device_driver.basedriver.plug_pull_device_site.PlugPullDeviceSiteDeviceDriver; +import org.nl.acs.device_driver.basedriver.siemens_conveyor.SiemensConveyorDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_conveyor_control_with_scanner.StandardCoveyorControlWithScannerDeviceDriver; import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDefination; import org.nl.acs.device_driver.basedriver.standard_ordinary_site.StandardOrdinarySiteDeviceDriver; @@ -585,6 +586,22 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { if (StrUtil.isEmpty(route_plan_code)) { route_plan_code = "normal"; } + Device device = deviceAppService.findDeviceByCode(next_device_code); + SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; + if(device.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { + siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) device.getDeviceDriver(); + if (ObjectUtil.equal("true", siemensConveyorDeviceDriver.getExtraValue().get("inspect_in_stock"))) { + if(siemensConveyorDeviceDriver.getMove() == 1) + { + JSONObject json = new JSONObject(); + json.put("task_code", task_code); + json.put("ext_task_id", ext_task_id); + json.put("message", "终点有货无法生成任务"); + errArr.add(json); + continue; + } + } + } if( StrUtil.equals(task_type,"5") && taskService.querySameDeviceReadyTask(start_device_code,next_device_code,"0") > 1){ JSONObject json = new JSONObject(); @@ -665,18 +682,6 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { try { // task_type=7 则是立库任务需要下刻下发 if (StrUtil.equals(task_dto.getTask_type(), "7")) { -// taskService.create(task_dto); -// try{ -// taskService.createInst(task_dto.getTask_id()); -// } catch (Exception e) { -// e.printStackTrace(); -// JSONObject json = new JSONObject(); -// json.put("task_code", task_code); -// json.put("ext_task_id", ext_task_id); -// json.put("message", "创建指令失败:"+e.getMessage()); -// errArr.add(json); -// } - //创建临时指令 不创建、不生成 //等立库反馈成功才能创建任务和指令 Instruction inst = taskService.createTemporaryInst(task_dto); diff --git a/acs/nladmin-ui/src/views/acs/device/driver/siemens_conveyor.vue b/acs/nladmin-ui/src/views/acs/device/driver/siemens_conveyor.vue index 7ecfb7dfb..8e0c06cea 100644 --- a/acs/nladmin-ui/src/views/acs/device/driver/siemens_conveyor.vue +++ b/acs/nladmin-ui/src/views/acs/device/driver/siemens_conveyor.vue @@ -67,7 +67,7 @@ - + @@ -305,7 +305,7 @@ export default { data1: [], data2: [], form: { - inspect_in_stocck: true, + inspect_in_stock: true, ignore_pickup_check: true, ignore_release_check: true, apply_task: true, diff --git a/acs/nladmin-ui/src/views/loki/view/index.vue b/acs/nladmin-ui/src/views/loki/view/index.vue index bd5fac428..dd97033c9 100644 --- a/acs/nladmin-ui/src/views/loki/view/index.vue +++ b/acs/nladmin-ui/src/views/loki/view/index.vue @@ -8,6 +8,7 @@ v-model="labelAndValue" :options="labelsOptions" placeholder="请选择标签" + checkStrictly @change="queryData" /> From 3a1f0805c7125212ae0adc53c2d623fb075f2714 Mon Sep 17 00:00:00 2001 From: "USER-20220102CG\\noblelift" <546428999@qq.com> Date: Wed, 15 Feb 2023 15:23:13 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SlitTwoManipulatorDeviceDriver.java | 2 +- .../wms/service/impl/WmsToAcsServiceImpl.java | 46 ++++++++++--------- 2 files changed, 26 insertions(+), 22 deletions(-) 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 810ed1f88..329dfc7f2 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 @@ -527,7 +527,7 @@ public class SlitTwoManipulatorDeviceDriver extends AbstractOpcDeviceDriver impl this.setNow_steps_type3(9); } } else { - log.warn("后工位放货位有货,放货位:{},mode:{},move:{}", next_device_code, mode, move); +// log.warn("后工位放货位有货,放货位:{},mode:{},move:{}", next_device_code, mode, move); if (this.getNow_steps_type1() == 4 || this.getNow_steps_type3() == 8) { feedMessage = "前工位未放货原因-->"; if (mode != 2) { diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java index d3a0193e7..840ed5c5e 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/WmsToAcsServiceImpl.java @@ -586,31 +586,35 @@ public class WmsToAcsServiceImpl implements WmsToAcsService { if (StrUtil.isEmpty(route_plan_code)) { route_plan_code = "normal"; } - Device device = deviceAppService.findDeviceByCode(next_device_code); - SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; - if(device.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { - siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) device.getDeviceDriver(); - if (ObjectUtil.equal("true", siemensConveyorDeviceDriver.getExtraValue().get("inspect_in_stock"))) { - if(siemensConveyorDeviceDriver.getMove() == 1) - { - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", "终点有货无法生成任务"); - errArr.add(json); - continue; + + if(StrUtil.equals(task_type,"5")){ + Device device = deviceAppService.findDeviceByCode(next_device_code); + SiemensConveyorDeviceDriver siemensConveyorDeviceDriver; + if(device.getDeviceDriver() instanceof SiemensConveyorDeviceDriver) { + siemensConveyorDeviceDriver = (SiemensConveyorDeviceDriver) device.getDeviceDriver(); + if (ObjectUtil.equal("true", siemensConveyorDeviceDriver.getExtraValue().get("inspect_in_stock"))) { + if(siemensConveyorDeviceDriver.getMove() == 1) + { + JSONObject json = new JSONObject(); + json.put("task_code", task_code); + json.put("ext_task_id", ext_task_id); + json.put("message", "终点有货无法生成任务"); + errArr.add(json); + continue; + } } } + + if( taskService.querySameDeviceReadyTask(start_device_code,next_device_code,"0") > 1){ + JSONObject json = new JSONObject(); + json.put("task_code", task_code); + json.put("ext_task_id", ext_task_id); + json.put("message", "已存在相同的起点终点未执行的输送任务"); + errArr.add(json); + continue; + } } - if( StrUtil.equals(task_type,"5") && taskService.querySameDeviceReadyTask(start_device_code,next_device_code,"0") > 1){ - JSONObject json = new JSONObject(); - json.put("task_code", task_code); - json.put("ext_task_id", ext_task_id); - json.put("message", "已存在相同的起点终点未执行的输送任务"); - errArr.add(json); - continue; - } TaskDto taskDto = taskService.findByCodeFromCache(task_code); if (taskDto != null) { JSONObject json = new JSONObject();