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 5c11575..9ccda62 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 @@ -9,9 +9,9 @@ import com.alibaba.fastjson.JSONObject; * https://blog.csdn.net/moneyshi/article/details/82978073 */ public enum DriverTypeEnum { - ORDINARY_SITE(1, "standard_ordinary_site", "普通站点", "conveyor"), + ORDINARY_SITE(1, "standard_ordinary_site", "普通站点", "station"), - INSPECT_SITE(2, "standard_inspect_site", "检测站点", "conveyor"), + INSPECT_SITE(2, "standard_inspect_site", "检测站点", "station"), STORAGE(3, "standard_storage", "标准版-货架", "storage"), diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java index 56e0905..bcc8e8c 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java @@ -81,6 +81,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic String error_message = ""; String device_status = "UNKNOWN"; String message = ""; + Instruction inst; public synchronized void processSocket(int[] arr) { device_code = this.getDeviceCode(); @@ -119,10 +120,16 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic //分配 车id //(不需要WCS反馈) if (phase == 0x02) { + if (ObjectUtil.isEmpty(inst)) { + log.info("未找到编号{}对应的指令", ikey); + logServer.deviceExecuteLog(this.device_code, "", "", "未找到关联编号对应的指令" + ikey); + return; + } inst.setCarno(String.valueOf(carno)); instructionService.update(inst); logServer.deviceExecuteLog(this.device_code, "", "", "agvphase:" + "反馈:" + data); this.device_status = "EXECUTING"; + this.inst = inst; //到达取货点 //(需要WCS反馈) @@ -825,6 +832,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic if (flag) { this.device_status = "IDLE"; + this.inst = 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 2d5c601..8d712e3 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 @@ -6,11 +6,9 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; -import com.sun.org.apache.bcel.internal.generic.IF_ACMPEQ; import lombok.Data; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.nl.acs.device.device_driver.standard_inspect.ReadUtil; import org.nl.acs.device.service.DeviceService; import org.nl.acs.device_driver.DeviceDriver; import org.nl.acs.device_driver.RouteableDeviceDriver; diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index cb7c101..40dfbc9 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -266,18 +266,14 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { String methods_url = addressDto.getMethods_url(); String url = wmsUrl + methods_url; HttpResponse result = null; - log.info("feedbackAgv----请求参数{}", from); - try { +// log.info("feedAgvTaskStatus - 请求参数 {}", param); result = HttpRequest.post(url) .body(String.valueOf(from)) .execute(); - System.out.println(result); - log.info("feedbackAgv----返回参数{}", result); +// log.info("feedAgvTaskStatus - 返回参数 {}", response.body()); } catch (Exception e) { - String msg = e.getMessage(); - //网络不通 - //System.out.println(msg); + } return result; } @@ -537,16 +533,17 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { public HttpResponse shipDeviceUpdate(JSONObject param) { try { MDC.put(log_file_type, log_type); -// log.info("shipDeviceUpdate-----输入参数{}", param); if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), "1")) { String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue(); AddressDto addressDto = addressService.findByCode("shipDeviceUpdate"); String methods_url = addressDto.getMethods_url(); String url = wmsUrl + methods_url; +// log.info("feedAgvTaskStatus - 请求参数 {}", param); return HttpRequest .post(url) .body(param.toString()) .execute(); +// log.info("feedAgvTaskStatus - 返回参数 {}", response.body()); } } catch (Throwable ignored) { @@ -571,7 +568,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { .post(url) .body(from.toString()) .execute(); -// log.info("feedAgvTaskStatus - 返回参数 {}", response.body()); +// log.info("feedAgvTaskStatus - 返回参数 {}", response.body()); return JSONObject.parseObject(response.body()); } } catch (Throwable ignored) { @@ -610,5 +607,4 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { return resp; } - } diff --git a/acs/nladmin-system/src/main/java/org/nl/acs/test/rest/TestController.java b/acs/nladmin-system/src/main/java/org/nl/acs/test/rest/TestController.java index 50d710c..a560027 100644 --- a/acs/nladmin-system/src/main/java/org/nl/acs/test/rest/TestController.java +++ b/acs/nladmin-system/src/main/java/org/nl/acs/test/rest/TestController.java @@ -2,6 +2,7 @@ package org.nl.acs.test.rest; +import cn.dev33.satoken.annotation.SaIgnore; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.RequiredArgsConstructor; @@ -10,10 +11,7 @@ import org.nl.acs.test.service.TestService; import org.nl.modules.logging.annotation.Log; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import java.io.IOException; import java.util.Map; @@ -27,17 +25,18 @@ import java.util.Map; @Api(tags = "任务管理") @RequestMapping("/api/test") @Slf4j +@SaIgnore public class TestController { private final TestService testService; @Log("test1") @ApiOperation("test1") - @PostMapping("/test1") + @GetMapping("/test1") //@PreAuthorize("@el.check('task:add')") public ResponseEntity test1() throws IOException { testService.test1(); - return new ResponseEntity<>(HttpStatus.CREATED); + return new ResponseEntity<>("success", HttpStatus.OK); } @Log("test2") diff --git a/acs/nladmin-system/src/main/java/org/nl/config/TomcatHttpConfig.java b/acs/nladmin-system/src/main/java/org/nl/config/TomcatHttpConfig.java new file mode 100644 index 0000000..23b069d --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/config/TomcatHttpConfig.java @@ -0,0 +1,54 @@ +//package org.nl.config; +// +//import org.apache.catalina.Context; +//import org.apache.catalina.connector.Connector; +//import org.apache.tomcat.util.descriptor.web.SecurityCollection; +//import org.apache.tomcat.util.descriptor.web.SecurityConstraint; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +// +//@Configuration +//public class TomcatHttpConfig { +// +// @Value("${server.http-port}") +// Integer httpPort; +// +// @Value("${server.port}") +// Integer httpsPort; +// +// /** +// * 配置内置的servlet容器工厂为tomcat. +// */ +// @Bean +// public TomcatServletWebServerFactory servletContainer() { +// TomcatServletWebServerFactory tomcatServletWebServerFactory = new TomcatServletWebServerFactory() { +// @Override +// protected void postProcessContext(Context context) { +// SecurityConstraint constraint = new SecurityConstraint(); +// constraint.setUserConstraint("CONFIDENTIAL"); +// SecurityCollection collection = new SecurityCollection(); +// collection.addPattern("/*"); +// constraint.addCollection(collection); +// context.addConstraint(constraint); +// } +// }; +// +// tomcatServletWebServerFactory.addAdditionalTomcatConnectors(initiateHttpConnector()); +// tomcatServletWebServerFactory.addConnectorCustomizers(connector -> connector.setProperty("relaxedQueryChars", "[]{}")); +// return tomcatServletWebServerFactory; +// } +// +// /** +// * 配置一个http连接信息. +// */ +// private Connector initiateHttpConnector() { +// Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol"); +// connector.setScheme("http"); +// connector.setPort(httpPort); +// connector.setSecure(false); +// connector.setRedirectPort(httpsPort); +// return connector; +// } +//} \ No newline at end of file diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoFeedbackAGVInfo.java b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoFeedbackAGVInfo.java new file mode 100644 index 0000000..afde4a7 --- /dev/null +++ b/acs/nladmin-system/src/main/java/org/nl/modules/quartz/task/AutoFeedbackAGVInfo.java @@ -0,0 +1,56 @@ +package org.nl.modules.quartz.task; + +import cn.hutool.core.util.ObjectUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device_driver.basedriver.agv.ndcone.AgvNdcOneDeviceDriver; +import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; +import org.nl.acs.opc.Device; +import org.nl.acs.opc.DeviceAppService; +import org.nl.acs.opc.DeviceType; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * 百济神州 + * 自动反馈 AGV 信息 + * + * @author zhangjiangwei + */ +@AllArgsConstructor +@Slf4j +@Component("autoFeedbackAGVInfo") +public class AutoFeedbackAGVInfo { + + private final DeviceAppService deviceAppService; + + private final AcsToWmsServiceImpl acsToWmsService; + + /** + * 自动收集 AGV 信息请求 WMS + */ + public void run() { + List agvList = deviceAppService.findDevice(DeviceType.agv); + JSONArray param = new JSONArray(); + + agvList.forEach(d -> { + if (d.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) { + AgvNdcOneDeviceDriver driver = (AgvNdcOneDeviceDriver) d.getDeviceDriver(); + JSONObject agvInfo = new JSONObject(); + agvInfo.put("device_code", "AGV" + driver.getDevice_code()); + agvInfo.put("device_status", driver.getDevice_status()); + agvInfo.put("energyLevel", driver.getElectric_qty()); + agvInfo.put("transportOrder", ObjectUtil.isNotEmpty(driver.getInst()) ? driver.getInst().getTask_code() : null); + agvInfo.put("positionX", driver.getX()); + agvInfo.put("positionY", driver.getY()); + agvInfo.put("positionAngle", driver.getAngle()); + param.add(agvInfo); + } + }); + + acsToWmsService.feedbackAgv(param); + } +} diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/system/service/DictService.java b/acs/nladmin-system/src/main/java/org/nl/modules/system/service/DictService.java index 76a0011..3f30eea 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/system/service/DictService.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/system/service/DictService.java @@ -73,4 +73,6 @@ public interface DictService { * @throws IOException / */ void download(List queryAll, HttpServletResponse response) throws IOException; + + List queryAll(); } \ No newline at end of file diff --git a/acs/nladmin-system/src/main/java/org/nl/modules/system/service/impl/DictServiceImpl.java b/acs/nladmin-system/src/main/java/org/nl/modules/system/service/impl/DictServiceImpl.java index 4b938b4..dda1783 100644 --- a/acs/nladmin-system/src/main/java/org/nl/modules/system/service/impl/DictServiceImpl.java +++ b/acs/nladmin-system/src/main/java/org/nl/modules/system/service/impl/DictServiceImpl.java @@ -119,4 +119,9 @@ public class DictServiceImpl implements DictService { public void delCaches(Dict dict){ redisUtils.del("dict::name:" + dict.getName()); } + + @Override + public List queryAll() { + return dictRepository.findAll(); + } } diff --git a/acs/nladmin-system/src/main/resources/client.p12 b/acs/nladmin-system/src/main/resources/client.p12 new file mode 100644 index 0000000..18e58df Binary files /dev/null and b/acs/nladmin-system/src/main/resources/client.p12 differ 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 e9a67a5..d74c8c2 100644 --- a/acs/nladmin-system/src/main/resources/config/application-dev.yml +++ b/acs/nladmin-system/src/main/resources/config/application-dev.yml @@ -1,10 +1,21 @@ server: port: 8010 + http-port: 8011 tomcat: accept-count: 1000 max-connections: 10000 max-threads: 800 min-spare-threads: 100 + ssl: + key-store: classpath:server.p12 + key-store-password: 123456 + key-store-type: PKCS12 + key-alias: server + trust-store: classpath:server.p12 + trust-store-password: 123456 + trust-store-type: JKS + trust-store-provider: SUN + client-auth: need #配置数据源 spring: datasource: @@ -13,11 +24,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:wzgj_acs}?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:bjsz_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/acs/nladmin-system/src/main/resources/server.p12 b/acs/nladmin-system/src/main/resources/server.p12 new file mode 100644 index 0000000..c26fba1 Binary files /dev/null and b/acs/nladmin-system/src/main/resources/server.p12 differ diff --git a/acs/nladmin-ui/.env.development b/acs/nladmin-ui/.env.development index 809e77f..f786a09 100644 --- a/acs/nladmin-ui/.env.development +++ b/acs/nladmin-ui/.env.development @@ -1,7 +1,7 @@ ENV = 'development' # 接口地址 -VUE_APP_BASE_API = 'http://localhost:8010' +VUE_APP_BASE_API = 'https://localhost:8010' VUE_APP_WS_API = 'ws://localhost:8010' # 是否启用 babel-plugin-dynamic-import-node插件 diff --git a/acs/nladmin-ui/src/views/acs/device/driver/fold_disc_site.vue b/acs/nladmin-ui/src/views/acs/device/driver/fold_disc_site.vue new file mode 100644 index 0000000..ccff38f --- /dev/null +++ b/acs/nladmin-ui/src/views/acs/device/driver/fold_disc_site.vue @@ -0,0 +1,516 @@ + + + + + diff --git a/acs/nladmin-ui/src/views/acs/device/driver/standard_autodoor.vue b/acs/nladmin-ui/src/views/acs/device/driver/standard_autodoor.vue new file mode 100644 index 0000000..41e2f46 --- /dev/null +++ b/acs/nladmin-ui/src/views/acs/device/driver/standard_autodoor.vue @@ -0,0 +1,352 @@ + + + + +