diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/AcsConfig.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/AcsConfig.java index 536cdf8..323311d 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/AcsConfig.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/AcsConfig.java @@ -8,109 +8,60 @@ public interface AcsConfig { /** * 指令下发agv */ - String FORKAGV = "forkagv"; - /** - * 单工指令下发agv - */ - String ONEFORKAGV = "oneforkagv"; - /** - * 同一站点运行最大任务数 - */ - String ONEPOINTMAXTASK = "onePointMaxTask"; - /** - * 同一任务创建最大指令数 - */ - String MAXINSTNUMBER = "maxInstNumber"; + String FORK_AGV = "fork_agv"; + /** * 创建任务检查 */ - String CREATETASKCHECK = "createTaskCheck"; - /** - * 撤销任务检查 - */ - String CANCELTASKCHECK = "cancelTaskCheck"; + String CREATE_TASK_CHECK = "create_task_check"; + /** * 一楼agv系统接口地址 */ - String AGVURL = "agvurl"; + String AGV_URL = "agv_url"; + /** - * AGV系统端口 + * NDC AGV URL */ - String AGVPORT = "agvport"; + String NDC_AGV_URL = "ndc_agv_url"; + /** - * 二楼1区agv系统接口地址 + * NDC AGV PORT */ - String AGVURL2 = "agvurl2"; - /** - * 二楼1区AGV系统端口 - */ - String AGVPORT2 = "agvport2"; - /** - * 二楼2区agv系统接口地址 - */ - String AGVURL22 = "agvurl22"; - /** - * 二楼2区AGV系统端口 - */ - String AGVPORT22 = "agvport22"; + String NDC_AGV_PORT = "ndc_agv_port"; + /** * 指定AGV系统 */ - String AGVTYPE = "agvType"; + String AGV_TYPE = "agv_type"; + /** * WMS系统接口地址 */ - String WMSURL = "wmsurl"; - /** - * WCS系统接口地址 - */ - String WCSURL = "wcsurl"; + String WMS_URL = "wms_url"; - String HASOTHERSYSTEM = "hasOtherSystem"; - - String ERPURL = "erpurl"; /** * 是否存在wms系统 */ - String HASWMS = "hasWms"; - /** - * lucene日志索引目录 - */ - String LUCENEURL = "luceneUrl"; - /** - * 路由选择 - */ - String ROUTE = "route"; - /** - * 忽略取放货校验 - */ - String IGNOREHASGOODS = "ignoreHasGoods"; + String HAS_WMS = "has_wms"; + /** * 项目类型 */ - String BUSINESSTYPE = "businessType"; - /** - * 海亮贴标设备ip - */ - String LETTERINGURL = "letteringUrl"; - /** - * 海亮贴标设备 - */ - String LETTERINGPORT = "letteringPort"; + String BUSINESS_TYPE = "business_type"; + /** * NDC断线重连reconnection */ - String NDC_RECONNECTION = "NDC_reconnection"; + String NDC_RECONNECTION = "ndc_reconnection"; + /** - * 自动清理日志保留时间 + * 海柔AGV URL */ - String AutoCleanDays = "AutoCleanDays"; + String HR_URL = "hr_url"; + /** - * 最大任务下发时间 + * 是否有海柔AGV系统 */ - String MAXSENDTASKTIME = "maxSendTaskTime"; - /** - * 指令下发立库 - */ - String INSTSENDLK = "instSendLk"; + String HAS_HR = "has_hr"; } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/QueryAGVStatus.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/QueryAGVStatus.java index 8834a5e..6db44de 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/QueryAGVStatus.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/QueryAGVStatus.java @@ -25,15 +25,14 @@ public class QueryAGVStatus { InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); List allInstFromCache = instructionService.findAllInstFromCache(); - if(CollUtil.isEmpty(allInstFromCache) || allInstFromCache.size() < 1){ + if (CollUtil.isEmpty(allInstFromCache) || allInstFromCache.size() < 1) { return; } for (Instruction instruction : allInstFromCache) { if ("4".equals(instruction.getInstruction_type())) { - String agvurl =paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); JSONObject param = new JSONObject(); - agvurl = agvurl + ":" + agvport + "/" + instruction.getInstruction_code(); + agvurl = agvurl + ":/" + instruction.getInstruction_code(); log.info("根据运单号查询运单状态的请求:{}", agvurl); HttpResponse result = HttpRequest.get(agvurl) .timeout(20000)//超时,毫秒 @@ -41,7 +40,7 @@ public class QueryAGVStatus { log.info("根据运单号查询运单状态的请求反馈:{}", result); String body = result.body(); JSONObject json = JSONObject.parseObject(body); - if(result.getStatus() == 200 && json.getString("id").equals(instruction.getInstruction_code())){ + if (result.getStatus() == 200 && json.getString("id").equals(instruction.getInstruction_code())) { // 已创建=CREATED, // 待分配=TOBEDISPATCHED, // 正在执行=RUNNING, diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java index 433cdc6..e5cc95a 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/XianGongAgvService.java @@ -1,8 +1,8 @@ package org.nl.acs.agv.server; -import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import org.nl.acs.agv.server.dto.AgvDto; +import org.nl.acs.ext.UnifiedResponse; import org.nl.acs.instruction.domain.Instruction; import java.util.Map; @@ -13,11 +13,116 @@ import java.util.Map; * @Date: 2022-08-15 */ public interface XianGongAgvService { + /** - * 查询所有AGV + * 下发叉车运单 + * + * @param dto * @return */ - Map findAllAgvFromCache(); + public UnifiedResponse sendOrderSequencesToForklift(Instruction dto); + + /** + * 下发运单序列 + * + * @param inst + * @return + * @throws Exception + */ + public UnifiedResponse sendOrderSequencesToXZ(Instruction inst); + + /** + * 追加运单 + * + * @param inst + * @return + * @throws Exception + */ + public UnifiedResponse addOrderSequences(Instruction inst); + + /** + * @param reqParam + * @param + * @return + * @throws Exception + */ + public UnifiedResponse markComplete(JSONObject reqParam); + + /** + * 查询AGV状态 + * + * @return + */ + public UnifiedResponse queryXZAgvDeviceStatus(String vehicles, Class type); + + /** + * @param type + * @param + * @return + */ + public UnifiedResponse queryXZAgvInstStatus(Class type); + + + /** + * 根据运单号查询运单状态 + * + * @param type + * @param + * @return + */ + public UnifiedResponse queryXZAgvInstStatusByCode(String instCode, Class type); + + + /** + * 删除先知任务 + * + * @param instCode + * @return + */ + public UnifiedResponse deleteXZAgvInst(String instCode); + + + /** + * 查询场景中指定机器人信息 + */ + public UnifiedResponse getRobotInfo(String robotCode, Class type); + + + /** + * 占用互斥组 + * + * @param reqParam + * @param + * @return + */ + public UnifiedResponse getBlockGroup(JSONObject reqParam); + + /** + * 查询互斥组状态 + * + * @param reqParam + * @param + * @return + */ + public UnifiedResponse blockGroupStatus(JSONObject reqParam); + + + /** + * 释放互斥组 + * + * @param reqParam + * @param + * @return + */ + public UnifiedResponse releaseBlockGroup(JSONObject reqParam); + + + /** + * 查询所有AGV + * + * @return + */ + public Map findAllAgvFromCache(); /** * 查询自动门状态 @@ -30,72 +135,26 @@ public interface XianGongAgvService { /** * 先工agv 等待点请求 * AGV->ACS + * * @param param * @return */ public String waitPointRequest(String param); - /** - * acs->agv - * 关闭运单系列 - * - * @param code - * @return - * @throws Exception - */ - public HttpResponse markComplete(String code) throws Exception; - - /** - * 查询AGV状态 - * - * @return - */ - public HttpResponse queryXZAgvDeviceStatus(); - - /** - * 查询AGV任务状态 - * @param instCode - * @return - */ - public HttpResponse queryXZAgvInstStatus(String instCode); - - /** - * 删除先知任务 - * - * @param instCode - * @return - */ - public HttpResponse deleteXZAgvInst(String instCode); - - - /** - * 下发运单序列 - * - * @param inst - * @return - * @throws Exception - */ - public HttpResponse sendOrderSequencesToXZ(Instruction inst) throws Exception; - - /** - * 追加运单 - * @param inst - * @return - * @throws Exception - */ - public HttpResponse addOrderSequences(Instruction inst) throws Exception; /** * 组织json数据 + * * @param inst * @return * @throws Exception */ - public String sendOrderSequencesParam(Instruction inst) throws Exception; + public String sendOrderSequencesParam(Instruction inst); /** * 创建 + * * @param inst * @param type * @return @@ -104,21 +163,9 @@ public interface XianGongAgvService { /** * 请求取货放货 + * * @param requestParam * @return */ - JSONObject xgAGVWaitPointRequest(JSONObject requestParam); - - - /** - * 查询场景中指定机器人信息 - */ - HttpResponse getRobotInfo(String robotCode); - - /** - * 下发叉车运单 - * @param dto - * @return - */ - HttpResponse sendOrderSequencesToForklift(Instruction dto); + public JSONObject xgAGVWaitPointRequest(JSONObject requestParam); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/AgvServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/AgvServiceImpl.java index 5bc9565..c1e1bd1 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/AgvServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/AgvServiceImpl.java @@ -63,7 +63,7 @@ public class AgvServiceImpl implements AgvService { @Override public String requestOpenOrCloseDoor(String device_code, String param) { log.info("AGV请求开关门参数,设备:{},参数:{}", device_code, param); - int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESSTYPE).getValue()); + int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESS_TYPE).getValue()); switch (type) { case 4: //acsToWmsService.applyOpenOrCloseDoor(device_code, param); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/MagicAgvServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/MagicAgvServiceImpl.java index b6580dd..5e98dba 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/MagicAgvServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/MagicAgvServiceImpl.java @@ -47,7 +47,6 @@ public class MagicAgvServiceImpl implements MagicAgvService { private final AcsToWmsService acsToWmsService; - Map AGVDeviceStatus = new HashMap(); /** * 进入离开等待 @@ -110,8 +109,6 @@ public class MagicAgvServiceImpl implements MagicAgvService { private static final int DELIVERY_COMPLETE_FOUR = 4; - - @Override public HttpResponse sendAgvInstToMagic(String instcode) throws Exception { InstructionService instructionService = SpringContextHolder.getBean(InstructionService.class); @@ -120,14 +117,13 @@ public class MagicAgvServiceImpl implements MagicAgvService { return result; } - + @Override public HttpResponse queryAgvInstStatus(String instCode) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); - agvurl = agvurl + ":" + agvport + "/v1/transportOrders/" + instCode; + agvurl = agvurl + "/v1/transportOrders/" + instCode; HttpResponse result = HttpRequest.get(agvurl) //超时,毫秒 @@ -141,7 +137,7 @@ public class MagicAgvServiceImpl implements MagicAgvService { } - + @Override public HttpResponse sendAgvInstToMagic(Instruction inst) throws Exception { @@ -215,11 +211,10 @@ public class MagicAgvServiceImpl implements MagicAgvService { } - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); - agvurl = agvurl + ":" + agvport + "/v1/transportOrders/" + instno; + agvurl = agvurl + "/v1/transportOrders/" + instno; log.info("下发agv指令参数:{}", orderjo.toString()); @@ -318,7 +313,7 @@ public class MagicAgvServiceImpl implements MagicAgvService { properties.add(pro2); destinationOrder.put("properties", properties); } - //Spin转动 + //Spin转动 } else if (CommonFinalParam.TWO.equals(propertiesType)) { JSONArray properties = new JSONArray(); JSONObject pro1 = new JSONObject(); @@ -363,13 +358,12 @@ public class MagicAgvServiceImpl implements MagicAgvService { return destinationOrder; } - + @Override public HttpResponse queryMagicAgvDeviceStatus() { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - agvurl = agvurl + ":" + agvport + "/v1/vehicles"; + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + agvurl = agvurl + "/v1/vehicles"; HttpResponse result = HttpRequest.get(agvurl) //超时,毫秒 .timeout(20000) @@ -411,14 +405,13 @@ public class MagicAgvServiceImpl implements MagicAgvService { } - + @Override public HttpResponse deleteAgvInst(String instCode) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); - agvurl = agvurl + ":" + agvport + "/v1/transportOrders/" + instCode + "/withdrawal"; + agvurl = agvurl + "/v1/transportOrders/" + instCode + "/withdrawal"; log.info("删除agv指令请求agvurl:{}", agvurl); HttpResponse result = null; @@ -440,6 +433,7 @@ public class MagicAgvServiceImpl implements MagicAgvService { /** * 1请求取货 2取货完成 3请求放货 4放货完成 5取货完成离开 6放货完成离开 7请求进入区域 8请求离开区域 + * * @param jobno * @param type * @param address @@ -447,7 +441,7 @@ public class MagicAgvServiceImpl implements MagicAgvService { * @param processingVehicle * @return */ - + @Override public synchronized String process(String jobno, String type, String address, String action, String processingVehicle) { log.info("查询到AGV请求参数,jobno:{},address:{}", jobno + ",address:" + address + ",type:" + type + ",action:" + action); @@ -593,10 +587,9 @@ public class MagicAgvServiceImpl implements MagicAgvService { log.info("反馈AGV请求数据:{}", requestjo); System.out.println("back agv:" + requestjo); - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); - agvurl = agvurl + ":" + agvport + "/v1/transportOrders/" + jobno + "/interact"; + agvurl = agvurl + "/v1/transportOrders/" + jobno + "/interact"; HttpResponse result = HttpRequest.post(agvurl) .body(String.valueOf(requestjo)) @@ -609,7 +602,7 @@ public class MagicAgvServiceImpl implements MagicAgvService { } - + @Override public String requestAck(String address) { log.info("AGV请求离开参数:{}", address); @@ -685,14 +678,13 @@ public class MagicAgvServiceImpl implements MagicAgvService { } - + @Override public HttpResponse pause() throws Exception { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); - agvurl = agvurl + ":" + agvport + "/v1/vehicles/pause"; + agvurl = agvurl + "/v1/vehicles/pause"; log.info("暂停所有agv请求:{}", agvurl); HttpResponse result = HttpRequest.post(agvurl) @@ -713,14 +705,12 @@ public class MagicAgvServiceImpl implements MagicAgvService { } - @Override public HttpResponse pause(String device_code) throws Exception { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); - agvurl = agvurl + ":" + agvport + "/v1/vehicles/" + device_code + "/pause"; + agvurl = agvurl + "/v1/vehicles/" + device_code + "/pause"; log.info("暂停{} agv请求:{}", device_code, agvurl); HttpResponse result = HttpRequest.post(agvurl) @@ -737,14 +727,12 @@ public class MagicAgvServiceImpl implements MagicAgvService { } - @Override public HttpResponse resume() throws Exception { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); - agvurl = agvurl + ":" + agvport + "/v1/vehicles/resume"; + agvurl = agvurl + "/v1/vehicles/resume"; log.info("恢复所有agv请求:{}", agvurl); HttpResponse result = HttpRequest.post(agvurl) @@ -766,14 +754,13 @@ public class MagicAgvServiceImpl implements MagicAgvService { } - + @Override public HttpResponse resume(String device_code) throws Exception { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); - agvurl = agvurl + ":" + agvport + "/v1/vehicles/" + device_code + "/resume"; + agvurl = agvurl + "/v1/vehicles/" + device_code + "/resume"; log.info("恢复{} agv请求:{}", device_code, agvurl); HttpResponse result = HttpRequest.post(agvurl) @@ -788,15 +775,15 @@ public class MagicAgvServiceImpl implements MagicAgvService { } } - + @Override public String queryDoorStatus(String device) { log.info("AGV查询自动门状态,参数:{}", device); - int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESSTYPE).getValue()); + int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESS_TYPE).getValue()); switch (type) { case 4: - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASOTHERSYSTEM).getValue(), CommonFinalParam.ONE)) { - // String result = acsToWmsService.queryDoorsStatus().body(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.HAS_WMS).getValue(), CommonFinalParam.ONE)) { + // String result = acsToWmsService.queryDoorsStatus().body(); String result = null; JSONArray ja = JSONArray.parseArray(result); log.info("AGV查询自动门状态,反馈:{}", ja.toString()); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java index e507cd4..bc4763e 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/NDCAgvServiceImpl.java @@ -42,7 +42,7 @@ public class NDCAgvServiceImpl implements NDCAgvService { @Override public void deleteAgvInstToNDC(Instruction inst) throws Exception { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { int index = Integer.parseInt(inst.getAgv_jobno()); byte indexhigh = (byte) IntToHexHigh(index); @@ -79,7 +79,7 @@ public class NDCAgvServiceImpl implements NDCAgvService { log.info("sendAgvInstToNDC 指令下发NDC:" + "inst_code:" + inst.getInstruction_code() + ",agv_system_type:" + agv_system_type + ",agv_inst_type:" + inst.getAgv_inst_type() + ",priority:" + inst.getPriority() + ",startAddress:" + inst.getStart_point_code() + ",nextAddress:" + inst.getNext_point_code()); - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { String instcode = inst.getInstruction_code(); int type = Integer.parseInt(inst.getInstruction_type()); int priority = Integer.parseInt(inst.getPriority()) + 128; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java index f067779..1edb4ec 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/XianGongAgvServiceImpl.java @@ -3,8 +3,6 @@ package org.nl.acs.agv.server.impl; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; @@ -14,18 +12,16 @@ import org.nl.acs.agv.AgvUtil; import org.nl.acs.agv.AgvWaitUtil; import org.nl.acs.agv.server.XianGongAgvService; import org.nl.acs.agv.server.dto.AgvDto; -import org.nl.acs.angle.service.IAcsPointAngleService; import org.nl.acs.common.base.CommonFinalParam; import org.nl.acs.device.device.domain.Device; -import org.nl.acs.ext.wms.service.AcsToWmsService; +import org.nl.acs.ext.UnifiedResponse; +import org.nl.acs.ext.xg.XgHttpUtil; import org.nl.acs.instruction.domain.Instruction; import org.nl.acs.instruction.service.InstructionService; import org.nl.acs.device.device.service.DeviceAppService; import org.nl.acs.device.device.enums.DeviceType; import org.nl.common.exception.BadRequestException; import org.nl.config.language.LangProcess; -import org.nl.config.lucene.service.LuceneExecuteLogService; -import org.nl.config.lucene.service.dto.LuceneLogDto; import org.nl.system.service.param.ISysParamService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -43,30 +39,116 @@ import java.util.Map; @Service @RequiredArgsConstructor public class XianGongAgvServiceImpl implements XianGongAgvService { - private final DeviceAppService deviceAppService; - private final ISysParamService paramService; - private final AcsToWmsService acsToWmsService; @Autowired - private IAcsPointAngleService acsPointAngleService; - + private DeviceAppService deviceAppService; + @Autowired + private ISysParamService paramService; @Autowired private InstructionService instructionService; - - @Autowired - private LuceneExecuteLogService luceneExecuteLogService; - @Autowired private AgvWaitUtil agvWaitUtil; + @Autowired + private XgHttpUtil xgHttpUtil; - Map AGVDeviceStatus = new HashMap(); + @Value("${agvToAcs.addr}") + private String addr; + + private Map AGVDeviceStatus = new HashMap(); private static final String JACKLOAD_THREE = "3"; private static final String FOUR = "4"; private static final String WAIT_FIVE = "5"; - @Value("${agvToAcs.addr}") - private String addr; + + @Override + public UnifiedResponse sendOrderSequencesToXZ(Instruction inst) { + JSONObject reqParam = new JSONObject(); + reqParam.put("id", inst.getInstruction_code()); + reqParam.put("complete", true); + reqParam.put("blocks", createBlocksData(inst)); + reqParam.put("priority", inst.getPriority()); + String path = "/setOrder"; + return xgHttpUtil.sendPostRequest(path, reqParam); + } + + @Override + public UnifiedResponse sendOrderSequencesToForklift(Instruction inst) { + JSONObject reqParam = new JSONObject(); + reqParam.put("id", inst.getInstruction_code()); + reqParam.put("complete", true); + reqParam.put("blocks", createBlocksForklift(inst)); + reqParam.put("priority", inst.getPriority()); + String path = "/setOrder"; + return xgHttpUtil.sendPostRequest(path, reqParam); + } + + @Override + public UnifiedResponse markComplete(JSONObject reqParam) { + String path = "/markComplete"; + return xgHttpUtil.sendPostRequest(path, reqParam); + } + + + @Override + public UnifiedResponse queryXZAgvDeviceStatus(String vehicles, Class type) { + String path = "/robotsStatus" + vehicles == null ? "" : "vehicles = " + vehicles; + return xgHttpUtil.sendGetRequest(path, type); + } + + + @Override + public UnifiedResponse queryXZAgvInstStatus(Class type) { + String path = "/orders?page=1&size=80&orderBy=createTime&orderMethod=descending"; + return xgHttpUtil.sendGetRequest(path, type); + } + + @Override + public UnifiedResponse queryXZAgvInstStatusByCode(String instCode, Class type) { + String path = "/orderDetails/" + instCode; + return xgHttpUtil.sendGetRequest(path, type); + } + + + @Override + public UnifiedResponse deleteXZAgvInst(String instCode) { + //String path = "/api/route/transportOrders/" + instCode + "/withdrawal"; + String path = "/terminate"; + JSONObject reqParam = new JSONObject(); + reqParam.put("id", instCode); + return xgHttpUtil.sendPostRequest(path, reqParam); + } + + @Override + public UnifiedResponse addOrderSequences(Instruction inst) { + JSONObject addOrder = createOrederData(inst, CommonFinalParam.ONE); + String path = "/api/route/transportOrders/" + inst.getInstruction_code(); + return xgHttpUtil.sendPostRequest(path, addOrder); + } + + @Override + public UnifiedResponse getRobotInfo(String robotCode, Class type) { + String path = "/robotsStatus?vehicles=" + robotCode; + return xgHttpUtil.sendGetRequest(path, type); + } + + @Override + public UnifiedResponse getBlockGroup(JSONObject reqParam) { + String path = "/getBlockGroup"; + return xgHttpUtil.sendPostRequest(path, reqParam); + } + + @Override + public UnifiedResponse releaseBlockGroup(JSONObject reqParam) { + String path = "/releaseBlockGroup"; + return xgHttpUtil.sendPostRequest(path, reqParam); + } + + @Override + public UnifiedResponse blockGroupStatus(JSONObject reqParam) { + String path = "/blockGroupStatus"; + return xgHttpUtil.sendPostRequest(path, reqParam); + } @Override @@ -113,179 +195,6 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { } - - @Override - public HttpResponse markComplete(String code) throws Exception { - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/api/route/orderSequences/" + code + "/markComplete"; - log.info("关闭agv运单序列请求:{}", agvurl); - - HttpResponse result = HttpRequest.post(agvurl) - //.body(String.valueOf(orderjo))//表单内容 - //超时,毫秒 - .timeout(20000) - .execute(); - log.info("关闭agv运单序列请求反馈:{}", result); - - return result; - } else { - return null; - } - - - } - - - @Override - public HttpResponse queryXZAgvDeviceStatus() { - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - String agvurl1 = agvurl + ":" + agvport + "/api/route/vehicles"; - String agvurl2 = agvurl + ":" + agvport + "/api/route/vehicleDetails"; - - HttpResponse result = HttpRequest.get(agvurl1) - //超时,毫秒 - .timeout(20000) - .execute(); - - - HttpResponse result2 = HttpRequest.get(agvurl2) - //超时,毫秒 - .timeout(20000) - .execute(); - - System.out.println("查询agv状态数据:" + result.body()); - if (result.getStatus() == CommonFinalParam.STATUS_OPEN) { - JSONArray ja = (JSONArray) JSONArray.parse(result.body()); - - for (int i = 0; i < ja.size(); i++) { - JSONObject jo = (JSONObject) ja.get(i); - String name = jo.getString("name"); - String state = jo.getString("state"); - String energyLevel = jo.getString("energyLevel"); - String transportOrder = jo.getString("transportOrder"); - JSONObject detailjo = (JSONObject) JSONObject.parse(result2.body()); - JSONObject item = (JSONObject) detailjo.get(name); - String x = item.getString("x"); - String y = item.getString("y"); - String angle = item.getString("angle"); - AgvDto dto = new AgvDto(); - dto.setName(name); - dto.setEnergyLevel(energyLevel); - dto.setState(state); - dto.setTransportOrder(transportOrder); - dto.setPositionAngle(angle); - dto.setPositionX(x); - dto.setPositionY(y); - if (AGVDeviceStatus.containsKey(name)) { - AGVDeviceStatus.remove(name); - AGVDeviceStatus.put(name, dto); - } else { - AGVDeviceStatus.put(name, dto); - } - } - } - return result; - } else { - return null; - } - - - } - - - @Override - public HttpResponse queryXZAgvInstStatus(String instCode) { - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/api/route/transportOrders/" + instCode; - - HttpResponse result = HttpRequest.get(agvurl) - //超时,毫秒 - .timeout(20000) - .execute(); - System.out.println("查询agv指令数据:" + result.body()); - - return result; - } else { - - return null; - } - } - - - @Override - public HttpResponse deleteXZAgvInst(String instCode) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/api/route/transportOrders/" + instCode + "/withdrawal"; - log.info("删除agv指令请求agvurl:{}", agvurl); - HttpResponse result = HttpRequest.post(agvurl) - //超时,毫秒 - .timeout(20000) - .execute(); - log.info("删除agv指令请求反馈:{}", result); - return result; - } else { - return null; - } - } - - - @Override - public HttpResponse sendOrderSequencesToXZ(Instruction inst) throws Exception { - com.alibaba.fastjson.JSONObject jo = new com.alibaba.fastjson.JSONObject(); - jo.put("id", inst.getInstruction_code()); - //运单封口,true=创建运单之后不可添加动作块;false=创建运单可以添加动作块 - jo.put("complete", true); - //动作块 - jo.put("blocks", createBlocksData(inst)); - //运单优先级 - jo.put("priority", inst.getPriority()); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code("下发诺宝运单") - .content("任务号:"+inst.getTask_code()+",指令号:"+inst.getInstruction_code()+",下发agv订单序列参数:"+jo) - .build(); - luceneExecuteLogService.deviceExecuteLog(logDto); - log.info("任务号:{},指令号{},下发agv订单序列参数:{}", inst.getTask_code(), inst.getInstruction_code(), jo); - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/setOrder"; - - log.info(agvurl); - HttpResponse result = HttpRequest.post(agvurl) - //表单内容 - .body(String.valueOf(jo)) - //超时,毫秒 - .timeout(20000) - .execute(); - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code("诺宝运单响应") - .content("任务号:"+inst.getTask_code()+",指令号:"+inst.getInstruction_code()+",下发诺宝订单序列反馈参数:"+jo) - .build(); - luceneExecuteLogService.deviceExecuteLog(logDto1); - log.info("任务号:{},指令号{},状态{},下发agv订单序列反馈:{}", inst.getTask_code(), inst.getInstruction_code(), result.getStatus(), result.body()); - - return result; - } else { - return null; - } - } /** * 下发动作块信号 @@ -321,10 +230,11 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { /** * 下发取货信号 + * * @param ja - * @param pointCode 起始点位 + * @param pointCode 起始点位 * @param device_code 起始设备 - * @param instCode 指令号 + * @param instCode 指令号 */ public void sendStartDeviceOrder(JSONArray ja, String pointCode, String device_code, String instCode) { Device startDevice = deviceAppService.findDeviceByCode(device_code); @@ -388,10 +298,11 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { /** * 下发放货信号 + * * @param ja - * @param device_code 起始设备 - * @param instCode 指令号 - * @param pointCode 终点点位 + * @param device_code 起始设备 + * @param instCode 指令号 + * @param pointCode 终点点位 * @param nextDeviceCode 终点设备 */ public void sendEndDeviceOrder(JSONArray ja, String device_code, String instCode, String pointCode, String nextDeviceCode) { @@ -464,36 +375,9 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { } } - + @Override - public HttpResponse addOrderSequences(Instruction inst) throws Exception { - JSONObject orderjo = createOrederData(inst, CommonFinalParam.ONE); - log.info("指令号:{},追加agv订单序列参数:{}", inst.getInstruction_code(), orderjo.toString()); - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/api/route/transportOrders/" + inst.getInstruction_code(); - - HttpResponse result = HttpRequest.post(agvurl) - //表单内容 - .body(String.valueOf(orderjo)) - //超时,毫秒 - .timeout(20000) - .execute(); - log.info(agvurl); - log.info("任务号:{},指令号{},状态{},追加agv订单序列参数:{}", inst.getTask_code(), inst.getInstruction_code(), result.getStatus(), result.body()); - - return result; - } else { - return null; - } - } - - - @Override - public String sendOrderSequencesParam(Instruction inst) throws Exception { + public String sendOrderSequencesParam(Instruction inst) { JSONObject jo = new JSONObject(); jo.put("intendedVehicle", ""); jo.put("category", "Park"); @@ -509,7 +393,7 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { return jo.toString(); } - + @Override public JSONObject createOrederData(Instruction inst, String inst_type) { String inst_code = inst.getInstruction_code(); @@ -535,7 +419,7 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { orderjo.put("deadline", AgvUtil.getNextDay(1)); orderjo.put("category", ""); //拼接起点子任务动作,待完善,动作码需要从数据库取值 - int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESSTYPE).getValue()); + int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESS_TYPE).getValue()); switch (type) { case 3: @@ -646,14 +530,14 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { return destinationOrder; } - + @Override public String queryDoorStatus(String device) { log.info("AGV查询自动门状态,参数:{}", device); - int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESSTYPE).getValue()); + int type = Integer.parseInt(paramService.findByCode(AcsConfig.BUSINESS_TYPE).getValue()); switch (type) { case 4: - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASOTHERSYSTEM).getValue(), CommonFinalParam.ONE)) { + if (StrUtil.equals(paramService.findByCode(AcsConfig.HAS_WMS).getValue(), CommonFinalParam.ONE)) { //String result = acsToWmsService.queryDoorsStatus().body(); String result = null; JSONArray ja = JSONArray.parseArray(result); @@ -737,69 +621,10 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { throw new BadRequestException("请求失败,IN OUT 站点错误!"); } - @Override - public HttpResponse getRobotInfo(String robotCode) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), "1")) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/" + " robotsStatus?vehicles=" + robotCode; - log.info("根据指定机器人查询状态的请求:{}", agvurl); - HttpResponse result = HttpRequest.get(agvurl) - .timeout(20000)//超时,毫秒 - .execute(); - log.info("根据指定机器人查询状态的请求反馈:{}", result); - return result; - } else { - return null; - } - } - - @Override - public HttpResponse sendOrderSequencesToForklift(Instruction inst) { - com.alibaba.fastjson.JSONObject jo = new com.alibaba.fastjson.JSONObject(); - jo.put("id", inst.getInstruction_code()); - //运单封口,true=创建运单之后不可添加动作块;false=创建运单可以添加动作块 - jo.put("complete", true); - //动作块 - jo.put("blocks", createBlocksForklift(inst)); - //运单优先级 - jo.put("priority", inst.getPriority()); - LuceneLogDto logDto = LuceneLogDto.builder() - .device_code("下发叉车运单") - .content("任务号:"+inst.getTask_code()+",指令号:"+inst.getInstruction_code()+",下发叉车订单序列参数:"+jo) - .build(); - luceneExecuteLogService.deviceExecuteLog(logDto); - log.info("任务号:{},指令号{},下发agv订单序列参数:{}", inst.getTask_code(), inst.getInstruction_code(), jo); - - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - - agvurl = agvurl + ":" + agvport + "/setOrder"; - - log.info(agvurl); - HttpResponse result = HttpRequest.post(agvurl) - //表单内容 - .body(String.valueOf(jo)) - //超时,毫秒 - .timeout(20000) - .execute(); - LuceneLogDto logDto1 = LuceneLogDto.builder() - .device_code("叉车运单响应") - .content("任务号:"+inst.getTask_code()+",指令号:"+inst.getInstruction_code()+",下发叉车订单序列反馈参数:"+jo) - .build(); - luceneExecuteLogService.deviceExecuteLog(logDto1); - log.info("任务号:{},指令号{},状态{},下发agv叉车订单序列反馈:{}", inst.getTask_code(), inst.getInstruction_code(), result.getStatus(), result.body()); - - return result; - } else { - return null; - } - } /** * 叉车运单动作块 + * * @param inst * @return */ @@ -927,8 +752,6 @@ public class XianGongAgvServiceImpl implements XianGongAgvService { jo5.put("script_args", script_args5); ja.add(jo5); } - - return ja; } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java index fd2ff6f..2383c4e 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/agv/server/impl/ZheDaAgvServiceImpl.java @@ -46,19 +46,19 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { /** * 取货的进入前等待和离开等待 */ - private static final String ENTRY_REQUIRED = "EntryRequired"; - private static final String ENTRYREQUIRED = "entryRequired"; - private static final String PAUSE_ON_STATION = "PauseOnStation"; + private static final String ENTRY_REQUIRED = "EntryRequired"; + private static final String ENTRYREQUIRED = "entryRequired"; + private static final String PAUSE_ON_STATION = "PauseOnStation"; /** * 等待点等待 */ - private static final String WAIT = "Wait"; + private static final String WAIT = "Wait"; /** * 放货的进入前等待和离开等待 */ - private static final String UNLOAD = "Unload"; + private static final String UNLOAD = "Unload"; + - @Override public HttpResponse sendAgvInstToAgv(Instruction inst) throws Exception { JSONObject jo = new JSONObject(); @@ -91,18 +91,16 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { jo.put("destinations", destinations); - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvurl2 = paramService.findByCode(AcsConfig.AGVURL2).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); - String agvport2 = paramService.findByCode(AcsConfig.AGVPORT2).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); + String agvurl2 = paramService.findByCode(AcsConfig.AGV_URL).getValue(); //不同楼层下发不同的agv系统 if (CommonFinalParam.ONE.equals(task_type)) { - agvurl = agvurl + ":" + agvport + "/v1/transportOrders/" + inst.getInstruction_code(); + agvurl = agvurl + "/v1/transportOrders/" + inst.getInstruction_code(); } else { - agvurl = agvurl2 + ":" + agvport2 + "/v1/transportOrders/" + inst.getInstruction_code(); + agvurl = agvurl2 + "/v1/transportOrders/" + inst.getInstruction_code(); } log.info("下发agv任务请求:{}", agvurl); @@ -121,25 +119,23 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { /** * ZDAGV + * * @param type * @return */ - + @Override public HttpResponse queryAgvInstStatus(String type) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { String agvurl = ""; - String agvport = ""; if (CommonFinalParam.ONE.equals(type)) { - agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); } if (CommonFinalParam.TWO.equals(type)) { - agvurl = paramService.findByCode(AcsConfig.AGVURL2).getValue(); - agvport = paramService.findByCode(AcsConfig.AGVPORT2).getValue(); + agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); } - agvurl = agvurl + ":" + agvport + "/v1/transportOrders"; + agvurl = agvurl + "/v1/transportOrders"; HttpResponse result = HttpRequest.get(agvurl) //超时,毫秒 .timeout(20000) @@ -162,7 +158,7 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { * @param processingVehicle * @return */ - + @Override public synchronized String process(String jobno, String type, String address, String action, String processingVehicle) { log.info("查询到AGV请求参数,jobno:{},address:{}", jobno + ",address:" + address + ",type:" + type + ",action:" + action); @@ -196,8 +192,6 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { if (PAUSE_ON_STATION.equals(type)) { - - } } //等待点等待 @@ -242,10 +236,9 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { jo.put("destinations", destinations); - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); - String url = agvurl + ":" + agvport + "/addDestinations"; + String url = agvurl + "/addDestinations"; log.info("下发agv任务请求:{}", url); HttpResponse result = HttpRequest.post(url) @@ -260,7 +253,7 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { JSONObject complete = new JSONObject(); complete.put("task_code", inst.getInstruction_code()); - String url2 = agvurl + ":" + agvport + "markComplete"; + String url2 = agvurl + "/markComplete"; log.info("下发agv任务请求:{}", url2); HttpResponse result2 = HttpRequest.post(url2) @@ -293,13 +286,12 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { log.info("反馈AGV请求数据:{}", requestjo); System.out.println("back agv:" + requestjo); - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); if (FOUR.equals(inst.getInstruction_type())) { - agvurl = paramService.findByCode(AcsConfig.AGVURL2).getValue(); + agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); } - agvurl = agvurl + ":" + agvport + "/v1/transportOrders/" + jobno + "/interact"; + agvurl = agvurl + "/v1/transportOrders/" + jobno + "/interact"; HttpResponse result = HttpRequest.post(agvurl) .body(String.valueOf(requestjo)) @@ -311,15 +303,14 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { } - + @Override public HttpResponse markComplete(String code) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.FORKAGV).getValue(), CommonFinalParam.ONE)) { - String agvurl = paramService.findByCode(AcsConfig.AGVURL).getValue(); - String agvport = paramService.findByCode(AcsConfig.AGVPORT).getValue(); + if (StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { + String agvurl = paramService.findByCode(AcsConfig.AGV_URL).getValue(); - agvurl = agvurl + ":" + agvport + "/v1/" + code + "/markComplete"; + agvurl = agvurl + "/v1/" + code + "/markComplete"; log.info("关闭agv运单序列请求:{}", agvurl); HttpResponse result = HttpRequest.post(agvurl) @@ -348,7 +339,7 @@ public class ZheDaAgvServiceImpl implements ZheDaAgvService { * demo:destination("cz14", "JackUnload", "3", "") * @return */ - + public static JSONObject destination(String locationName, String operation, String propertiesType, String pro) { //新增业务订单 JSONObject destinationOrder = new JSONObject(); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java index 6cb5fdc..b975cbf 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/OneNDCSocketConnectionAutoRun.java @@ -32,6 +32,7 @@ import java.util.Date; import java.util.List; import static org.nl.acs.agv.server.impl.NDCAgvServiceImpl.Bytes2HexString; + /** * Demo class * @@ -68,10 +69,12 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { public OneNDCSocketConnectionAutoRun() { this.recordTime = new Date((new Date()).getTime() - (long) this.recordTimeOut); } + @Override public String getCode() { return OneNDCSocketConnectionAutoRun.class.getSimpleName(); } + @Override public String getName() { return "NDC在线连接"; @@ -87,8 +90,8 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { DeviceAppService deviceAppService = SpringContextHolder.getBean(DeviceAppService.class); DeviceService deviceService = SpringContextHolder.getBean(DeviceService.class); DeviceExecuteLogService logServer = SpringContextHolder.getBean(DeviceExecuteLogService.class); - ip = paramService.findByCode(AcsConfig.AGVURL2).getValue(); - port = Integer.parseInt(paramService.findByCode(AcsConfig.AGVPORT2).getValue()); + ip = paramService.findByCode(AcsConfig.NDC_AGV_URL).getValue(); + port = Integer.parseInt(paramService.findByCode(AcsConfig.NDC_AGV_PORT).getValue()); try { @@ -126,9 +129,9 @@ public class OneNDCSocketConnectionAutoRun extends AbstractAutoRunnable { 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]; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java index c05e7e7..e6c313b 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/auto/run/TwoNDCSocketConnectionAutoRun.java @@ -88,8 +88,8 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable { try { System.out.println("2楼1区域AGV系统链接开始"); - ip = paramService.findByCode(AcsConfig.AGVURL).getValue(); - port = Integer.parseInt(paramService.findByCode(AcsConfig.AGVPORT).getValue()); + ip = paramService.findByCode(AcsConfig.NDC_AGV_URL).getValue(); + port = Integer.parseInt(paramService.findByCode(AcsConfig.NDC_AGV_PORT).getValue()); // byte[] b = new byte[1024]; // s = new Socket(ip, port); // System.out.println("2楼1区域Agv链接成功"); @@ -196,7 +196,7 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable { if (agvDevice.getDeviceDriver() instanceof AgvNdcTwoDeviceDriver) { agvNdcTwoDeviceDriver = (AgvNdcTwoDeviceDriver) agvDevice.getDeviceDriver(); agvNdcTwoDeviceDriver.setInstruction(null); - }else if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) { + } else if (device.getDeviceDriver() instanceof AgvNdcOneDeviceDriver) { agvNdcOneDeviceDriver = (AgvNdcOneDeviceDriver) device.getDeviceDriver(); agvNdcOneDeviceDriver.setInstruction(null); } @@ -239,7 +239,7 @@ public class TwoNDCSocketConnectionAutoRun extends AbstractAutoRunnable { log.info("下发电气信号失败:" + e.getMessage()); e.printStackTrace(); } - if (standardAutodoorDeviceDriver.getOpen() == 1 && standardAutodoorDeviceDriver.getToOpen() == 1 ) { + if (standardAutodoorDeviceDriver.getOpen() == 1 && standardAutodoorDeviceDriver.getToOpen() == 1) { log.info("下发开门信号值为:{},下发关门信号值为:{}", standardAutodoorDeviceDriver.getToOpen(), standardAutodoorDeviceDriver.getToClose()); data = ndcAgvService.sendAgvTwoModeInst(phase, index, 0); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/device/service/impl/DeviceAssignedServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/device/service/impl/DeviceAssignedServiceImpl.java index f4025cf..0863413 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/device/service/impl/DeviceAssignedServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/device/service/impl/DeviceAssignedServiceImpl.java @@ -19,6 +19,7 @@ import org.nl.acs.common.base.PageInfo; import org.nl.acs.common.base.QueryHelpMybatisPlus; import org.nl.acs.common.base.service.impl.CommonServiceImpl; import org.nl.acs.utils.ConvertUtil; +import org.nl.common.exception.BadRequestException; import org.nl.common.utils.FileUtil; import org.nl.acs.utils.PageUtil; import org.nl.common.utils.SecurityUtils; @@ -138,6 +139,13 @@ public class DeviceAssignedServiceImpl extends CommonServiceImpl lqw = new LambdaQueryWrapper<>(); + lqw.eq(DeviceAssigned::getDevice_code, device_code) + .and(la -> la.eq(DeviceAssigned::getTask_nextDevice_code, task_nextdevice.toString())); + List existList = this.list(lqw); + if (existList.size() > 0) { + throw new BadRequestException("已存在该平均分配原则!"); + } String now = DateUtil.now(); param.put("assigned_id", IdUtil.simpleUUID()); param.put("device_code", device_code); @@ -186,6 +194,14 @@ public class DeviceAssignedServiceImpl extends CommonServiceImpl lqw = new LambdaQueryWrapper<>(); + lqw.eq(DeviceAssigned::getDevice_code, device_code) + .and(la -> la.eq(DeviceAssigned::getTask_nextDevice_code, task_nextdevice.toString())) + .and(la -> la.ne(DeviceAssigned::getAssigned_id, assigned_id)); + List existList = this.list(lqw); + if (existList.size() > 0) { + throw new BadRequestException("已存在该平均分配原则!"); + } deviceAssignedMapper.updateById(storageCell); } @@ -244,4 +260,30 @@ public class DeviceAssignedServiceImpl extends CommonServiceImpl queryAssignedRoute(String device_code, String task_nextDeice_code) { + List oldList = new LambdaQueryChainWrapper<>(deviceAssignedMapper) + .eq(DeviceAssigned::getDevice_code, device_code) + .list(); + List newList = new ArrayList<>(); + Optional + .ofNullable(oldList) + .orElse(new ArrayList<>()) + .stream() + .forEach(olDeviceAssigned -> { + Arrays.stream((olDeviceAssigned.getTask_nextDevice_code() == null ? "" : olDeviceAssigned.getTask_nextDevice_code()).split(",")) + .forEach(task_next_device_code -> { + if (task_next_device_code.equals(task_nextDeice_code)) { + DeviceAssigned deviceAssigned = new DeviceAssigned(); + deviceAssigned.setAssigned_id(olDeviceAssigned.getAssigned_id()); + deviceAssigned.setDevice_code(olDeviceAssigned.getDevice_code()); + deviceAssigned.setInst_nextDevice_code(olDeviceAssigned.getInst_nextDevice_code()); + deviceAssigned.setTask_nextDevice_code(task_nextDeice_code); + deviceAssigned.setParam(olDeviceAssigned.getParam()); + newList.add(deviceAssigned); + } + }); + }); + return ConvertUtil.convertList(newList, DeviceAssignedDto.class); + } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/agv/xg_agv_car/XgAgvCarDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/agv/xg_agv_car/XgAgvCarDeviceDriver.java index fb9d036..6d11bca 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/agv/xg_agv_car/XgAgvCarDeviceDriver.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/agv/xg_agv_car/XgAgvCarDeviceDriver.java @@ -14,6 +14,7 @@ import org.nl.acs.device.driver.DeviceDriver; import org.nl.acs.device.driver.RouteableDeviceDriver; import org.nl.acs.device.driver.AbstractDeviceDriver; import org.nl.acs.device.driver.ExecutableDeviceDriver; +import org.nl.acs.ext.UnifiedResponse; import org.nl.acs.ext.wms.service.AcsToWmsService; import org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl; import org.nl.acs.instruction.domain.Instruction; @@ -212,9 +213,9 @@ public class XgAgvCarDeviceDriver extends AbstractDeviceDriver implements Device * 获取机器人信息 */ private void getAgvStatus() { - HttpResponse robotInfo = xianGongAgvService.getRobotInfo(this.getDevice().getDevice_name()); - if (robotInfo.getStatus() == 200) { - JSONObject jsonObject = JSONObject.parseObject(robotInfo.body()); + UnifiedResponse resp = xianGongAgvService.getRobotInfo(this.getDevice().getDevice_name(), JSONObject.class); + if (resp.isSuccess()) { + JSONObject jsonObject = resp.getData(); String report = jsonObject.getString("report"); //core出错标识 is_error = jsonObject.getBooleanValue("is_error"); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/conveyor/standard_conveyor_control_with_plcscanner/StandardCoveyorControlWithPlcScannerDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/conveyor/standard_conveyor_control_with_plcscanner/StandardCoveyorControlWithPlcScannerDeviceDriver.java index 0519d59..9c3869e 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/conveyor/standard_conveyor_control_with_plcscanner/StandardCoveyorControlWithPlcScannerDeviceDriver.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/conveyor/standard_conveyor_control_with_plcscanner/StandardCoveyorControlWithPlcScannerDeviceDriver.java @@ -839,7 +839,7 @@ public class StandardCoveyorControlWithPlcScannerDeviceDriver extends AbstractOp requireSucess = true; applySucess = true; } else { - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), CommonFinalParam.ONE)) { + if (StrUtil.equals(paramService.findByCode(AcsConfig.HAS_WMS).getValue(), CommonFinalParam.ONE)) { //String str = acsToWmsService.applyTaskToWms(this.getDeviceCode(), container_code, height, 0); JSONObject jo = JSON.parseObject(str); if (ObjectUtil.isEmpty(jo)) { diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/conveyor/standard_conveyor_control_with_scanner/StandardCoveyorControlWithScannerDeviceDriver.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/conveyor/standard_conveyor_control_with_scanner/StandardCoveyorControlWithScannerDeviceDriver.java index 419ef38..d8d7f81 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/conveyor/standard_conveyor_control_with_scanner/StandardCoveyorControlWithScannerDeviceDriver.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/driver/conveyor/standard_conveyor_control_with_scanner/StandardCoveyorControlWithScannerDeviceDriver.java @@ -703,7 +703,7 @@ public class StandardCoveyorControlWithScannerDeviceDriver extends AbstractOpcDe requireSucess = true; applySucess = true; } else { - if (StrUtil.equals(paramService.findByCode(AcsConfig.HASWMS).getValue(), CommonFinalParam.ONE)) { + if (StrUtil.equals(paramService.findByCode(AcsConfig.HAS_WMS).getValue(), CommonFinalParam.ONE)) { message = "申请任务中..."; JSONObject apply = new JSONObject(); apply.put("vehicle_code", container_code); diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/LmsHttpUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/LmsHttpUtil.java deleted file mode 100644 index ed09d0a..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/LmsHttpUtil.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.nl.acs.ext; - -import cn.hutool.http.HttpRequest; -import com.alibaba.fastjson.JSON; -import org.nl.config.SpringContextHolder; -import org.nl.config.lucene.service.LuceneExecuteLogService; -import org.nl.config.lucene.service.dto.LuceneLogDto; - -/** - * @Description TODO - * @Author Gengby - * @Date 2024/4/22 - */ -public class LmsHttpUtil { - - private static final RequestAdapter LMS_REQUEST_ADAPTER = new LmsRequestAdapter(); - private static final ResponseAdapter LMS_RESPONSE_ADAPTER = new LmsResponseAdapter(); - - public static UnifiedResponse sendPostRequest(String path, W requestParam, Class type) { - String url = LMS_REQUEST_ADAPTER.getUrl() + path; - LuceneExecuteLogService logService = SpringContextHolder.getBean(LuceneExecuteLogService.class); - try { - String body = HttpRequest - .post(url) - .setConnectionTimeout(5000) - .body(JSON.toJSONString(requestParam)) - .execute() - .body(); - LuceneLogDto luceneLogDto = new LuceneLogDto(url, requestParam.toString(), body, "200", body); - logService.interfaceExecuteLog(luceneLogDto); - return LMS_RESPONSE_ADAPTER.adapt(body, type); - } catch (Exception e) { - LuceneLogDto luceneLogDto = new LuceneLogDto(url, requestParam.toString(), e.getMessage(), "400", e.getMessage()); - logService.interfaceExecuteLog(luceneLogDto); - return new UnifiedResponse<>(false, e.getMessage()); - } - } - - - public static UnifiedResponse sendGetRequest(String path, W requestParam, Class type) { - String url = LMS_REQUEST_ADAPTER.getUrl() + path; - LuceneExecuteLogService logService = SpringContextHolder.getBean(LuceneExecuteLogService.class); - try { - String body = HttpRequest - .get(LMS_REQUEST_ADAPTER.getUrl() + path) - .setConnectionTimeout(5000) - .body(JSON.toJSONString(requestParam)) - .execute() - .body(); - LuceneLogDto luceneLogDto = new LuceneLogDto(url, requestParam.toString(), body, "200", body); - logService.interfaceExecuteLog(luceneLogDto); - return LMS_RESPONSE_ADAPTER.adapt(body, type); - } catch (Exception e) { - LuceneLogDto luceneLogDto = new LuceneLogDto(url, requestParam.toString(), e.getMessage(), "400", e.getMessage()); - logService.interfaceExecuteLog(luceneLogDto); - return new UnifiedResponse<>(false, e.getMessage()); - } - } - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/MesHttpUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/MesHttpUtil.java deleted file mode 100644 index 6d55fd6..0000000 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/MesHttpUtil.java +++ /dev/null @@ -1,60 +0,0 @@ -package org.nl.acs.ext; - -import cn.hutool.http.HttpRequest; -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import org.nl.config.SpringContextHolder; -import org.nl.config.lucene.service.LuceneExecuteLogService; -import org.nl.config.lucene.service.dto.LuceneLogDto; - -/** - * @Description TODO - * @Author Gengby - * @Date 2024/4/22 - */ -public class MesHttpUtil { - - private static final RequestAdapter MES_REQUEST_ADAPTER = new MesRequestAdapter(); - private static final ResponseAdapter MES_RESPONSE_ADAPTER = new MesResponseAdapter(); - - public static UnifiedResponse sendPostRequest(String path, W requestParam, Class type) { - String url = MES_REQUEST_ADAPTER.getUrl() + path; - LuceneExecuteLogService logService = SpringContextHolder.getBean(LuceneExecuteLogService.class); - try { - String body = HttpRequest - .post(MES_REQUEST_ADAPTER.getUrl() + path) - .setConnectionTimeout(5000) - .body(JSON.toJSONString(requestParam)) - .execute() - .body(); - LuceneLogDto luceneLogDto = new LuceneLogDto(url, requestParam.toString(), body, JSONObject.parseObject(body).getString("code"), body); - logService.interfaceExecuteLog(luceneLogDto); - return MES_RESPONSE_ADAPTER.adapt(body, type); - } catch (Exception e) { - LuceneLogDto luceneLogDto = new LuceneLogDto(url, requestParam.toString(), e.getMessage(), "400", e.getMessage()); - logService.interfaceExecuteLog(luceneLogDto); - return new UnifiedResponse<>(false, e.getMessage()); - } - } - - public static UnifiedResponse sendGetRequest(String path, W requestParam, Class type) { - String url = MES_REQUEST_ADAPTER.getUrl() + path; - LuceneExecuteLogService logService = SpringContextHolder.getBean(LuceneExecuteLogService.class); - try { - String body = HttpRequest - .get(MES_REQUEST_ADAPTER.getUrl() + path) - .setConnectionTimeout(5000) - .body(JSON.toJSONString(requestParam)) - .execute() - .body(); - LuceneLogDto luceneLogDto = new LuceneLogDto(url, requestParam.toString(), body, JSONObject.parseObject(body).getString("code"), body); - logService.interfaceExecuteLog(luceneLogDto); - return MES_RESPONSE_ADAPTER.adapt(body, type); - } catch (Exception e) { - LuceneLogDto luceneLogDto = new LuceneLogDto(url, requestParam.toString(), e.getMessage(), "400", e.getMessage()); - logService.interfaceExecuteLog(luceneLogDto); - return new UnifiedResponse<>(false, e.getMessage()); - } - } - -} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/UnifiedResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/UnifiedResponse.java index 97365c2..d920da5 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/UnifiedResponse.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/UnifiedResponse.java @@ -12,6 +12,7 @@ public class UnifiedResponse { this.data = data; } + public UnifiedResponse(boolean success, String message) { this.success = success; this.message = message; diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/OthersHttpUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/OthersHttpUtil.java new file mode 100644 index 0000000..aadebec --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/OthersHttpUtil.java @@ -0,0 +1,134 @@ +package org.nl.acs.ext.hr; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSON; +import org.nl.acs.AcsConfig; +import org.nl.acs.common.base.CommonFinalParam; +import org.nl.acs.ext.RequestAdapter; +import org.nl.acs.ext.ResponseAdapter; +import org.nl.acs.ext.UnifiedResponse; +import org.nl.acs.ext.log.ToOthersInterfaceLog; +import org.nl.system.service.param.ISysParamService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/4/22 + */ +@Component +public class OthersHttpUtil { + + private static final RequestAdapter REQUEST_ADAPTER = new OthersRequestAdapter(); + private static final ResponseAdapter RESPONSE_ADAPTER = new OthersResponseAdapter(); + + @Autowired + private ISysParamService paramService; + + @ToOthersInterfaceLog("ACS->HR") + public UnifiedResponse sendPostRequest(String path, W requestParam, Class type) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_HR).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .body(JSON.toJSONString(requestParam)) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, type); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->HR") + public UnifiedResponse sendPostRequest(String path, W requestParam) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_HR).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .body(JSON.toJSONString(requestParam)) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, null); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->HR") + public UnifiedResponse sendPostRequest(String path, Class type) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_HR).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, type); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->HR") + public UnifiedResponse sendPostRequest(String path) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_HR).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, null); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->HR") + public UnifiedResponse sendGetRequest(String path, Class type) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_HR).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .get(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, type); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->HR") + public UnifiedResponse sendGetRequest(String path) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_HR).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .get(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, null); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/MesRequestAdapter.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/OthersRequestAdapter.java similarity index 63% rename from nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/MesRequestAdapter.java rename to nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/OthersRequestAdapter.java index 7244ed0..3ed125b 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/MesRequestAdapter.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/OthersRequestAdapter.java @@ -1,6 +1,7 @@ -package org.nl.acs.ext; +package org.nl.acs.ext.hr; import org.nl.acs.AcsConfig; +import org.nl.acs.ext.RequestAdapter; import org.nl.config.SpringContextHolder; import org.nl.system.service.param.ISysParamService; @@ -10,11 +11,11 @@ import org.nl.system.service.param.ISysParamService; * @Author Gengby * @Date 2024/4/22 */ -public class MesRequestAdapter implements RequestAdapter{ +public class OthersRequestAdapter implements RequestAdapter { @Override public String getUrl() { ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); - return paramService.findByCode(AcsConfig.WMSURL).getValue(); + return paramService.findByCode(AcsConfig.HR_URL).getValue(); } } \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/MesResponseAdapter.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/OthersResponseAdapter.java similarity index 79% rename from nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/MesResponseAdapter.java rename to nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/OthersResponseAdapter.java index 69e8f3f..d6075e9 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/MesResponseAdapter.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/OthersResponseAdapter.java @@ -1,14 +1,16 @@ -package org.nl.acs.ext; +package org.nl.acs.ext.hr; import com.alibaba.fastjson.JSONObject; +import org.nl.acs.ext.ResponseAdapter; +import org.nl.acs.ext.UnifiedResponse; /** * @Description TODO * @Author Gengby * @Date 2024/4/22 */ -public class MesResponseAdapter implements ResponseAdapter { +public class OthersResponseAdapter implements ResponseAdapter { @Override public UnifiedResponse adapt(String responseBody, Class type) { diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/AbnormarReportingRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/AbnormarReportingRequest.java new file mode 100644 index 0000000..6bd0bd4 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/AbnormarReportingRequest.java @@ -0,0 +1,44 @@ +package org.nl.acs.ext.hr.data.req; + +import lombok.Data; + +@Data +public class AbnormarReportingRequest { + /** + * 事件类型 + * location_abnormal:⼯作位异常 + * robot_abnormal:机器⼈异常 + */ + public String eventType; + /** + * 机器⼈编码 + * + */ + public String robotCode; + /** + * 容器编码 + */ + public String containerCode; + /** + * ⼯作位编码 + */ + public String locationCode; + /** + * ⼯作站编码 + */ + public String stationCode; + /** + * 描述信息 + * 异常原因/挂起原因等 + */ + public String message; + /** + * 解决⽅案 + *系统建议的解决⽅案 + */ + public String solution; + /** + * 更新时间 + */ + public Long updateTime; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/CancelRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/CancelRequest.java new file mode 100644 index 0000000..a444f59 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/CancelRequest.java @@ -0,0 +1,14 @@ +package org.nl.acs.ext.hr.data.req; + +import lombok.Data; + +import java.util.List; + +@Data +public class CancelRequest { + /** + * 任务编码 + * 业务任务和系统任务都可取消 + */ + public List taskCodes; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/ContainerArrivedRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/ContainerArrivedRequest.java new file mode 100644 index 0000000..9d0b92f --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/ContainerArrivedRequest.java @@ -0,0 +1,21 @@ +package org.nl.acs.ext.hr.data.req; + +import lombok.Data; + +@Data +public class ContainerArrivedRequest { + /** + * 输送线节点编码 + * + */ + public String slotCode; + /** + * 容器编码 + * 输送线有读码器可以识别或已知料⾝份时,该字段传料箱编码;否则空 + */ + public String containerCode; + /** + * 容器属性 + */ + public Object containerAttribute; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/CreateRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/CreateRequest.java new file mode 100644 index 0000000..d962902 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/CreateRequest.java @@ -0,0 +1,58 @@ +package org.nl.acs.ext.hr.data.req; + +import lombok.Data; +import org.nl.acs.ext.hr.service.dto.AGVTask; + +import java.util.List; + +@Data +public class CreateRequest { + /** + * 任务类型 + * tote_outbound:容器出库 + * tote_relocation:容器移库 + * tote_inbound:容器⼊库 + * tote_check:容器盘库 + * tote_carry:容器搬运 + */ + public String taskType; + +// /** +// * 业务类型 +// *当任务类型是出库时,可选填业务类型 +// * pick_outbound:拣选出库 +// * count_outbound:盘点出库 +// * empty_outbound:空箱出库 +// * reorg_outbound:理货出库 +// */ +// public String businessType; + +// /** +// * 任务组号 +// * 任务组,若不传则系统⾃动⽣成? +// */ +// public String taskGroupCode; + + /** + * 组优先级 + * 0代表不区分优先级;从1开始,数值越 + * ⼤,优先级越⾼;系统会优先执⾏⾼优 + * 先级组的任务 + */ + public Integer groupPriority; + + /** + * 任务 + * + */ + public List tasks; + /** + * 机器⼈编码 + * 指定机器⼈执⾏任务: + * 只有下发指令集任务的时候会有⽤,如 + * 果下发指令集任务不指定机器⼈,系统 + * 将⾃动指定⼀台空闲机器⼈ + */ + public String robotCode; + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/LoadContainerFinishRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/LoadContainerFinishRequest.java new file mode 100644 index 0000000..7ef7059 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/LoadContainerFinishRequest.java @@ -0,0 +1,15 @@ +package org.nl.acs.ext.hr.data.req; + +import lombok.Data; + +@Data +public class LoadContainerFinishRequest { + /** + * 输送线节点编码 + */ + public String slotCode; + /** + * 容器编码 + */ + public String containerCode; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/LocationQueryRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/LocationQueryRequest.java new file mode 100644 index 0000000..3832e66 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/LocationQueryRequest.java @@ -0,0 +1,27 @@ +package org.nl.acs.ext.hr.data.req; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class LocationQueryRequest { + /** + * ⼯作位编码 + * 可传多个⼯作位,若不传则查全部 + * 若多个字段均填写,则互为且关系 + */ + public Map> locationCodes ; + /** + * 容器编码 + * 查看容器下的所有⼯作位 + */ + public String containerCode; + /** + * ⼯作位类型编码 + * 可传多个⼯作位,若不传则查全部 + * 若多个字段均填写,则互为且关系 + */ + public Map> locationTypeCodes ; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/MoveContainerRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/MoveContainerRequest.java new file mode 100644 index 0000000..4b0dc01 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/MoveContainerRequest.java @@ -0,0 +1,23 @@ +package org.nl.acs.ext.hr.data.req; + +import lombok.Data; + +@Data +public class MoveContainerRequest { + /** + * 输送线节点编码 + */ + public String slotCode; + /** + * 容器编码 + */ + public String containerCode; + /** + * 流动⽅向 + * 拣选位 + * 100:向前流动,离开拣选位(只有 + * ⼀个流向的话,可以不传,默认向流) + * 200:空箱取出 + */ + public String direction; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/QueryConveyorRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/QueryConveyorRequest.java new file mode 100644 index 0000000..f79f3fa --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/QueryConveyorRequest.java @@ -0,0 +1,12 @@ +package org.nl.acs.ext.hr.data.req; + +import lombok.Data; + +@Data +public class QueryConveyorRequest { + /** + * 输送线编码 + * 根据输送线编码列表查询状态 + */ + public String conveyorCodes; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/QueryNodeReaderRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/QueryNodeReaderRequest.java new file mode 100644 index 0000000..15065da --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/QueryNodeReaderRequest.java @@ -0,0 +1,5 @@ +package org.nl.acs.ext.hr.data.req; + +public class QueryNodeReaderRequest { + public String slotCode; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/RobotQueryRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/RobotQueryRequest.java new file mode 100644 index 0000000..47c82cc --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/RobotQueryRequest.java @@ -0,0 +1,17 @@ +package org.nl.acs.ext.hr.data.req; + +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Data +public class RobotQueryRequest { + /** + * 机器⼈编码 + * 可传多个,若不传则查全部 + */ + public Map> robotCodes ; + + //public List robotCodes; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/TaskstatusReportingRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/TaskstatusReportingRequest.java new file mode 100644 index 0000000..38f3f18 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/TaskstatusReportingRequest.java @@ -0,0 +1,52 @@ +package org.nl.acs.ext.hr.data.req; + +import lombok.Data; + +@Data +public class TaskstatusReportingRequest { + /** + * 任务号 + *业务任务号 + */ + public String taskCode; + /** + * 上报事件类型 + * task:上报任务状态 + * tote_load:上报取箱状态 + * tote_unload:上报放箱状态 + * robot_reach:机器⼈到达⼯作站 + * weight:称重事件回调 + * rfid:RFID识别事件回调 + */ + public String eventType; + /** + * 状态 + * success: + * fail:失败 + * cancel:取消 + * suspend:挂起 + */ + public String status; + /** + * 机器⼈编码 + * + */ + public String robotCode; + /** + * 容器编码 + */ + public String containerCode; + /** + * ⼯作位编码 + */ + public String locationCode; + /** + * ⼯作站编码 + */ + public String stationCode; + /** + * 描述信息 + * 异常原因/挂起原因等 + */ + public String message; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/UnloadContainerFinishRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/UnloadContainerFinishRequest.java new file mode 100644 index 0000000..ef90b37 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/UnloadContainerFinishRequest.java @@ -0,0 +1,19 @@ +package org.nl.acs.ext.hr.data.req; + +import lombok.Data; + +@Data +public class UnloadContainerFinishRequest { + /** + * 输送线节点编码 + */ + public String slotCode; + /** + * 容器编码 + */ + public String containerCode; + /** + * 容器属性 + */ + public String containerAttribute; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/UnloadContainerReqRequest.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/UnloadContainerReqRequest.java new file mode 100644 index 0000000..a7b8641 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/req/UnloadContainerReqRequest.java @@ -0,0 +1,15 @@ +package org.nl.acs.ext.hr.data.req; + +import lombok.Data; + +@Data +public class UnloadContainerReqRequest { + /** + * 输送线节点编码 + */ + public String slotCode; + /** + * 容器编码 + */ + public String containerCode; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/AbnormarReportingResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/AbnormarReportingResponse.java new file mode 100644 index 0000000..fa7d86e --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/AbnormarReportingResponse.java @@ -0,0 +1,7 @@ +package org.nl.acs.ext.hr.data.resp; + +import lombok.Data; + +@Data +public class AbnormarReportingResponse { +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/BaseResponseData.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/BaseResponseData.java new file mode 100644 index 0000000..72c0112 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/BaseResponseData.java @@ -0,0 +1,16 @@ +package org.nl.acs.ext.hr.data.resp; + +import lombok.Data; + +/** + + * + * @author: zjj by + * @createDate: 2023/6/26 + */ +@Data +public class BaseResponseData { + public Integer code; + public String msg; + public String data; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/CancelResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/CancelResponse.java new file mode 100644 index 0000000..5d216fd --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/CancelResponse.java @@ -0,0 +1,7 @@ +package org.nl.acs.ext.hr.data.resp; + +import lombok.Data; + +@Data +public class CancelResponse extends BaseResponseData{ +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/ContainerArrivedResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/ContainerArrivedResponse.java new file mode 100644 index 0000000..98d5cc7 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/ContainerArrivedResponse.java @@ -0,0 +1,14 @@ +package org.nl.acs.ext.hr.data.resp; + +import lombok.Data; + +@Data +public class ContainerArrivedResponse extends BaseResponseData{ + /** + * 流动⽅向 + * 回库⼝: + * 100:流向上料⼝ + * 200:等待 + */ + public String direction; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/CreateResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/CreateResponse.java new file mode 100644 index 0000000..902745c --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/CreateResponse.java @@ -0,0 +1,8 @@ +package org.nl.acs.ext.hr.data.resp; + +import lombok.Data; + +@Data +public class CreateResponse extends BaseResponseData { + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/LoadContainerFinishResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/LoadContainerFinishResponse.java new file mode 100644 index 0000000..11c17c4 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/LoadContainerFinishResponse.java @@ -0,0 +1,8 @@ +package org.nl.acs.ext.hr.data.resp; + +import lombok.Data; + +@Data +public class LoadContainerFinishResponse { + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/LocationQueryResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/LocationQueryResponse.java new file mode 100644 index 0000000..6305ca2 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/LocationQueryResponse.java @@ -0,0 +1,13 @@ +package org.nl.acs.ext.hr.data.resp; + +import lombok.Data; +import org.nl.acs.ext.hr.service.dto.Datas; + +@Data +public class LocationQueryResponse { + String msg; + + String code; + + Datas datas; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/MoveContainerResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/MoveContainerResponse.java new file mode 100644 index 0000000..b3074ad --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/MoveContainerResponse.java @@ -0,0 +1,9 @@ +package org.nl.acs.ext.hr.data.resp; + +import lombok.Data; +import lombok.ToString; + +@Data +@ToString +public class MoveContainerResponse { +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/QueryConveyorResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/QueryConveyorResponse.java new file mode 100644 index 0000000..d246a0b --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/QueryConveyorResponse.java @@ -0,0 +1,14 @@ +package org.nl.acs.ext.hr.data.resp; + +import lombok.Data; +import org.nl.acs.ext.hr.service.dto.Conveyors; + +import java.util.List; + +@Data +public class QueryConveyorResponse { + /** + * + */ + public List conveyors; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/QueryNodeReaderResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/QueryNodeReaderResponse.java new file mode 100644 index 0000000..04f9ff2 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/QueryNodeReaderResponse.java @@ -0,0 +1,41 @@ +package org.nl.acs.ext.hr.data.resp; + +import lombok.Data; + +@Data +public class QueryNodeReaderResponse { + /** + * 容器编码 + */ + public String barcode; + /** + * 容器⾼度 + */ + public Long height; + /** + * 容器长度 + */ + public Long length; + /** + * 容器宽度 + */ + public Long width; + /** + * 容器重量 + */ + public Long weight; + /** + * 容器材料 + * 1.料箱2.纸箱 + */ + public Long material; + /** + * 容器朝向 + */ + public String orientation; + /** + * 容器材料 + * 料箱上⼆维码信息 + */ + public String qrCode; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/RobotQueryResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/RobotQueryResponse.java new file mode 100644 index 0000000..1013838 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/RobotQueryResponse.java @@ -0,0 +1,19 @@ +package org.nl.acs.ext.hr.data.resp; + +import lombok.Data; +import org.nl.acs.ext.hr.service.dto.Datas; + +@Data +public class RobotQueryResponse { + String msg; + + String code; + + Datas datas; +// /** +// * 任务 +// * +// */ +// public List robots; +} + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/TaskstatusReportingResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/TaskstatusReportingResponse.java new file mode 100644 index 0000000..8321228 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/TaskstatusReportingResponse.java @@ -0,0 +1,8 @@ +package org.nl.acs.ext.hr.data.resp; + +import lombok.Data; + +@Data +public class TaskstatusReportingResponse { + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/UnloadContainerFinishResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/UnloadContainerFinishResponse.java new file mode 100644 index 0000000..331be01 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/UnloadContainerFinishResponse.java @@ -0,0 +1,7 @@ +package org.nl.acs.ext.hr.data.resp; + +import lombok.Data; + +@Data +public class UnloadContainerFinishResponse { +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/UnloadContainerReqResponse.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/UnloadContainerReqResponse.java new file mode 100644 index 0000000..277a895 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/data/resp/UnloadContainerReqResponse.java @@ -0,0 +1,11 @@ +package org.nl.acs.ext.hr.data.resp; + +import lombok.Data; + +@Data +public class UnloadContainerReqResponse { + /** + * 允许放箱 + */ + public Boolean allow; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/rest/AcsToHrController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/rest/AcsToHrController.java new file mode 100644 index 0000000..573cbf9 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/rest/AcsToHrController.java @@ -0,0 +1,50 @@ +package org.nl.acs.ext.hr.rest; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.ext.hr.data.req.*; +import org.nl.acs.ext.hr.data.resp.*; +import org.nl.acs.ext.hr.service.AcsToHrService; +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; + +/** + * @author ludj + * @date 2021-07-21 + **/ +@RestController +@RequiredArgsConstructor +@RequestMapping("/task") +@Slf4j +public class AcsToHrController { + private final AcsToHrService acsToLiKuService; + + @PostMapping("/containerArrived") + public ResponseEntity containerArrived(@RequestBody ContainerArrivedRequest requestParam) throws Exception { + return new ResponseEntity<>(acsToLiKuService.containerArrived(requestParam, ContainerArrivedResponse.class), HttpStatus.OK); + } + + @PostMapping("/create") + public ResponseEntity create(@RequestBody CreateRequest requestParam) throws Exception { + return new ResponseEntity<>(acsToLiKuService.create(requestParam, CreateResponse.class), HttpStatus.OK); + } + + @PostMapping("/cancel") + public ResponseEntity cancel(@RequestBody CancelRequest requestParam) throws Exception { + return new ResponseEntity<>(acsToLiKuService.cancel(requestParam, CancelResponse.class), HttpStatus.OK); + } + + @PostMapping("/robot/query") + public ResponseEntity robotQuery(@RequestBody RobotQueryRequest requestParam) throws Exception { + return new ResponseEntity<>(acsToLiKuService.robotQuery(requestParam, RobotQueryResponse.class), HttpStatus.OK); + } + + @PostMapping("/location/query") + public ResponseEntity locationQuery(@RequestBody LocationQueryRequest requestParam) throws Exception { + return new ResponseEntity<>(acsToLiKuService.locationQuery(requestParam, LocationQueryResponse.class), HttpStatus.OK); + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/rest/HrToACSController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/rest/HrToACSController.java new file mode 100644 index 0000000..d210b1a --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/rest/HrToACSController.java @@ -0,0 +1,82 @@ +package org.nl.acs.ext.hr.rest; + +import cn.dev33.satoken.annotation.SaIgnore; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.ext.hr.data.req.*; +import org.nl.acs.ext.hr.service.HrToAcsService; +import org.nl.acs.ext.log.OthersToInterfaceLog; +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; + +/** + * @author wangs + * @date 2021-07-21 + **/ +@RestController +@RequiredArgsConstructor +@RequestMapping("/task") +@Slf4j +public class HrToACSController { + private final HrToAcsService liKuToAcsService; + + @SaIgnore + @PostMapping("/queryConveyor") + @OthersToInterfaceLog("HR->ACS") + public ResponseEntity queryConveyor(@RequestBody QueryConveyorRequest requestParam) throws Exception { + return new ResponseEntity<>(liKuToAcsService.queryConveyor(requestParam), HttpStatus.OK); + } + + @SaIgnore + @PostMapping("/queryNodeReader") + @OthersToInterfaceLog("HR->ACS") + public ResponseEntity queryNodeReader(@RequestBody QueryNodeReaderRequest requestParam) throws Exception { + return new ResponseEntity<>(liKuToAcsService.queryNodeReader(requestParam), HttpStatus.OK); + } + + @SaIgnore + @PostMapping("/loadContainerFinish") + @OthersToInterfaceLog("HR->ACS") + public ResponseEntity loadContainerFinish(@RequestBody LoadContainerFinishRequest requestParam) throws Exception { + return new ResponseEntity<>(liKuToAcsService.loadContainerFinish(requestParam), HttpStatus.OK); + } + + @SaIgnore + @PostMapping("/unloadContainerReq") + @OthersToInterfaceLog("HR->ACS") + public ResponseEntity unloadContainerReq(@RequestBody UnloadContainerReqRequest requestParam) throws Exception { + return new ResponseEntity<>(liKuToAcsService.unloadContainerReq(requestParam), HttpStatus.OK); + } + + @SaIgnore + @PostMapping("/unloadContainerFinish") + @OthersToInterfaceLog("HR->ACS") + public ResponseEntity unloadContainerFinish(@RequestBody UnloadContainerFinishRequest requestParam) throws Exception { + return new ResponseEntity<>(liKuToAcsService.unloadContainerFinish(requestParam), HttpStatus.OK); + } + + @SaIgnore + @PostMapping("/moveContainer") + @OthersToInterfaceLog("HR->ACS") + public ResponseEntity moveContainer(@RequestBody MoveContainerRequest requestParam) throws Exception { + return new ResponseEntity<>(liKuToAcsService.moveContainer(requestParam), HttpStatus.OK); + } + + @SaIgnore + @PostMapping("/taskstatusreporting") + @OthersToInterfaceLog("HR->ACS") + public ResponseEntity taskstatusreporting(@RequestBody TaskstatusReportingRequest requestParam) throws Exception { + return new ResponseEntity<>(liKuToAcsService.taskstatusreporting(requestParam), HttpStatus.OK); + } + + @SaIgnore + @PostMapping("/abnormalreporting") + @OthersToInterfaceLog("HR->ACS") + public ResponseEntity abnormalreporting(@RequestBody AbnormarReportingRequest requestParam) throws Exception { + return new ResponseEntity<>(liKuToAcsService.abnormalreporting(requestParam), HttpStatus.OK); + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/AcsToHrService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/AcsToHrService.java new file mode 100644 index 0000000..6ff10f9 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/AcsToHrService.java @@ -0,0 +1,58 @@ +package org.nl.acs.ext.hr.service; + +import org.nl.acs.ext.UnifiedResponse; +import org.nl.acs.ext.hr.data.req.*; + +/** + * @author onepiece + */ +public interface AcsToHrService { + + /** + * 容器到达通知 + * + * @param type 响应类型 + * @param requestParam + * @return + */ + public UnifiedResponse containerArrived(ContainerArrivedRequest requestParam, Class type); + + /** + * 任务下发请求 + * + * @param type 响应类型 + * @param requestParam + * @return + */ + public UnifiedResponse create(CreateRequest requestParam, Class type); + + /** + * 任务取消请求 + * + * @param type 响应类型 + * @param requestParam + * @return + */ + public UnifiedResponse cancel(CancelRequest requestParam, Class type); + + /** + * 机器⼈查询接⼝ + * + * @param type 响应类型 + * @param requestParam + * @return + */ + public UnifiedResponse robotQuery(RobotQueryRequest requestParam, Class type); + + + /** + * ⼯作位查询接⼝ + * + * @param type 响应类型 + * @param requestParam + * @return + */ + public UnifiedResponse locationQuery(LocationQueryRequest requestParam, Class type); + +} + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/HrToAcsService.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/HrToAcsService.java new file mode 100644 index 0000000..39d4929 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/HrToAcsService.java @@ -0,0 +1,77 @@ +package org.nl.acs.ext.hr.service; + +import com.alibaba.fastjson.JSONObject; +import org.nl.acs.ext.hr.data.req.*; + + +/** + * @author onepiece + */ +public interface HrToAcsService { + + /** + * 查询输送线料箱状态 + * + * @param requestParam + * @return + */ + public JSONObject queryConveyor(QueryConveyorRequest requestParam) throws Exception; + + /** + * 查询输送线点位状态 + * + * @param requestParam + * @return + */ + public JSONObject queryNodeReader(QueryNodeReaderRequest requestParam) throws Exception; + + /** + * 取容器完成通知 + * + * @param requestParam + * @return + */ + public JSONObject loadContainerFinish(LoadContainerFinishRequest requestParam) throws Exception; + + + /** + * 放容器请求 + * + * @param requestParam + * @return + */ + public JSONObject unloadContainerReq(UnloadContainerReqRequest requestParam) throws Exception; + + /** + * 放容器完成通知 + * + * @param requestParam + * @return + */ + public JSONObject unloadContainerFinish(UnloadContainerFinishRequest requestParam) throws Exception; + + /** + * 容器流动请求 + * + * @param requestParam + * @return + */ + public JSONObject moveContainer(MoveContainerRequest requestParam) throws Exception; + + /** + * 任务状态上报 + * + * @param requestParam + * @return + */ + public JSONObject taskstatusreporting(TaskstatusReportingRequest requestParam) throws Exception; + + /** + * 异常上报 + * + * @param requestParam + * @return + */ + public JSONObject abnormalreporting(AbnormarReportingRequest requestParam) throws Exception; + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/AGVTask.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/AGVTask.java new file mode 100644 index 0000000..aad101d --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/AGVTask.java @@ -0,0 +1,23 @@ +package org.nl.acs.ext.hr.service.dto; + +import lombok.Data; + +@Data +public class AGVTask { + /** + * 业务任务号 + * + */ + public String taskCode; + /** + * 任务优先级 + * 0代表不区分优先级;从1开始,数 + * 值越⼤,优先级越⾼;系统会优先 + * 分配优先级⾼的任务 + */ + public String taskPriority; + /** + * 任务描述 + */ + public TaskDescribe taskDescribe; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/CarryTaskDescribe.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/CarryTaskDescribe.java new file mode 100644 index 0000000..405e86b --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/CarryTaskDescribe.java @@ -0,0 +1,29 @@ +package org.nl.acs.ext.hr.service.dto; + +import lombok.Data; + +@Data +public class CarryTaskDescribe extends TaskDescribe { + /** + * 容器编码 + * 容器和⼯作位⼆选⼀,优先取容器code,容器 + * 不存在则⾃动创建 + */ + String containerCode; + /** + * 起始⼯作位 + * 适⽤于缓存货架场景,若填写,系统可以校验容 + * 器和库位是否匹配 + */ + String fromLocationCode; + /** + * ⽬标⼯作位 + * 若没有填写,则系统会随机找⼀个允许放的库位 + */ + public String toLocationCode; + /** + * 容器型号 + * 默认为“CT_KUBOT_STANDARD“ + */ + String containerType; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/CheckTaskDescribe.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/CheckTaskDescribe.java new file mode 100644 index 0000000..b502752 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/CheckTaskDescribe.java @@ -0,0 +1,20 @@ +package org.nl.acs.ext.hr.service.dto; + +import lombok.Data; + +@Data +public class CheckTaskDescribe extends TaskDescribe { + /** + * 容器编码 + */ + public String containerCode; + /** + * ⽬标⼯作位 + * 即要进⾏盘库的⽬标库位 + */ + public String locationCode; + /** + * 盘库类型 + */ + public String checkType; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/Conveyors.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/Conveyors.java new file mode 100644 index 0000000..771f609 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/Conveyors.java @@ -0,0 +1,17 @@ +package org.nl.acs.ext.hr.service.dto; + +import lombok.Data; + +import java.util.List; + +@Data +public class Conveyors { + /** + * 输送线编码 + */ + public String code; + /** + * + */ + public List nodeStates; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/Datas.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/Datas.java new file mode 100644 index 0000000..0c201f0 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/Datas.java @@ -0,0 +1,11 @@ +package org.nl.acs.ext.hr.service.dto; + +import lombok.Data; + +import java.util.List; + +@Data +public class Datas { + List robots; + List locations; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/InTaskDescribe.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/InTaskDescribe.java new file mode 100644 index 0000000..1e19791 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/InTaskDescribe.java @@ -0,0 +1,29 @@ +package org.nl.acs.ext.hr.service.dto; + +import lombok.Data; + +@Data +public class InTaskDescribe extends TaskDescribe { + /** + * 容器编码 + */ + String containerCode; + /** + * 起始⼯作位 + * 适⽤于缓存货架场景,若填写,系统可以校验容 + * 器和库位是否匹配 + */ + String fromLocationCode; + /** + * ⽬标⼯作位 + * 若没有填写,则系统会随机找⼀个允许放的库位 + */ + public String locationCode; + /** + * 容器型号 + * 必须指定⼀个型号才能⼊库 + */ + String containerType; + + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/Locations.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/Locations.java new file mode 100644 index 0000000..7a71013 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/Locations.java @@ -0,0 +1,31 @@ +package org.nl.acs.ext.hr.service.dto; + +public class Locations { + /** + * ⼯作位编码 + */ + public String locationCode; + /** + * ⼯作位类型 + */ + public String locationTypeCode; + /** + * ⼯作站编码 + * 若为⼯作位不会具有⼯作站编码 + */ + public String pointCode; + /** + * 坐标x + * 机器⼈实际坐标xmm + */ + public Long positionX; + /** + * 坐标y + * 机器⼈实际坐标ymm + */ + public Long positionY; + /** + * 机器⼈⻆度 + */ + public Integer theta; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/NodeStates.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/NodeStates.java new file mode 100644 index 0000000..8bcd212 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/NodeStates.java @@ -0,0 +1,31 @@ +package org.nl.acs.ext.hr.service.dto; + +import lombok.Data; + +@Data +public class NodeStates { + /** + * 输送线上的位置编码 + */ + public String slotCode; + /** + * 是否有箱 + * 有箱则为true,否则为false + */ + public Boolean hasContainer; + /** + * 最近⼀次读取箱⼦状 + * 态的时间 + */ + public Long lastReadTime; + /** + * 最后⼀次上报料箱到 + * 达的时间 + */ + public Long lastReportTime; + /** + * 最后⼀次有箱⼦的时 + * 间 + */ + public Long lastHasContainerTime; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/OutTaskDescribe.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/OutTaskDescribe.java new file mode 100644 index 0000000..b51e4ae --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/OutTaskDescribe.java @@ -0,0 +1,30 @@ +package org.nl.acs.ext.hr.service.dto; + +import lombok.Data; + +import java.util.List; + +/** + * 出库任务类型 + */ +@Data +public class OutTaskDescribe extends TaskDescribe { + /** + * 容器编码 + * 容器和⼯作位⼆选⼀,优先取容器 + * code + */ + String containerCode; + /** + * 起始⼯作位 + */ + String fromLocationCode; + /** + * ⽬标⼯作站编码 + * ⽀持传多个⼯作站,系统均衡分配 + */ + List toStationCode ; + + + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/RelocationTaskDescribe.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/RelocationTaskDescribe.java new file mode 100644 index 0000000..a0f4fba --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/RelocationTaskDescribe.java @@ -0,0 +1,23 @@ +package org.nl.acs.ext.hr.service.dto; + +import lombok.Data; + +@Data +public class RelocationTaskDescribe extends TaskDescribe { + /** + * 容器编码 + *fromLocationCode未指定时必填 + */ + public String containerCode; + /** + * 起始⼯作位 + * 即容器所在源库位,containerCode未 + * 指定时必填 + */ + public String fromLocationCode; + /** + * 任务描述⽬标⼯作位 + * 即给容器指定的⽬标库位 + */ + public String toLocationCode; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/Robots.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/Robots.java new file mode 100644 index 0000000..940c048 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/Robots.java @@ -0,0 +1,90 @@ +package org.nl.acs.ext.hr.service.dto; + +import lombok.Data; + +import java.util.List; + +@Data +public class Robots { + /** + * 编码 + */ + public String robotCode; + /** + * 型号 + */ + public String robotTypeCode; + /** + * 节点编码 + * 机器⼈当前所处节点 + */ + public String pointCode; + /** + * 坐标x + * 机器⼈实际坐标xmm + */ + public Long positionX; + /** + * 坐标y + * 机器⼈实际坐标ymm + */ + public Long positionY; + /** + * 机器⼈⻆度 + */ + public Integer theta; + /** + * 货叉⾼度 + */ + public Long forkHeight; + /** + * 货叉⻓度 + */ + public Long forkLength; + /** + * 货叉相对机 + * 器⼈⻆度 + */ + public Integer forkTheta; + /** + * ⼯作站编码 + * 当机器⼈在⼯作站⼯作时会具有 + */ + public String stationCode; + /** + * ⼯作位编码 + * 当机器⼈控制权在⼯作位上时会具有 + */ + public String locationCode; + /** + * 机器⼈状态 + * UNAVAILABLE =杀机器⼈后,在场外 + * 的状态 + * UNKNOWN =未知,待初始化 + * ERROR =错误(机器⼈状态更新超时) + * IDLE =空闲 + * EXECUTING =执⾏任务中 + * AWAITING =原地等待 + */ + public String state; + /** + * 机器⼈硬件状态 + * ROBOT_READY_TO_INIT? =机器⼈启动 + * 以后的初始状态,等待初始化指令 + * ROBOT_IDLE? =空闲状态,等待任务指 + * 令(MOVE、BIN_OP) + * ROBOT_RUNNING? =运⾏状态(正在执 + * ⾏任务) + * ROBOT_ABNORMAL? =异常状态(内部 + * 故障,或者执⾏任务过程中发⽣异常需 + * 要处理) + * ROBOT_RECOVERY? =恢复状态 + * ROBOT_PAUSED? =暂停状态 + */ + public String hardwareState; + /** + * 背篓描述 + */ + public List trays; + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/TaskDescribe.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/TaskDescribe.java new file mode 100644 index 0000000..ee63490 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/TaskDescribe.java @@ -0,0 +1,8 @@ +package org.nl.acs.ext.hr.service.dto; + +import lombok.Data; + +@Data +public class TaskDescribe { + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/Tray.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/Tray.java new file mode 100644 index 0000000..dd4af08 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/dto/Tray.java @@ -0,0 +1,28 @@ +package org.nl.acs.ext.hr.service.dto; + +import lombok.Data; + +import java.util.List; + +@Data +public class Tray { + /** + * 背篓序号 + * 货叉标识64 + */ + public Integer trayLevel; + /** + * 容器编码 + * 若背篓为空则为空 + */ + public String containerCode; + /** + * 业务任务 + */ + public List taskCodes; + /** + * 位置编码 + * 格式为机器⼈id#背篓序号 + */ + public String positionCode; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/enums/HrTaskTypeEnum.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/enums/HrTaskTypeEnum.java new file mode 100644 index 0000000..875ae9a --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/enums/HrTaskTypeEnum.java @@ -0,0 +1,25 @@ +package org.nl.acs.ext.hr.service.enums; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/7/8 + */ +@Getter +@AllArgsConstructor +public enum HrTaskTypeEnum { + + TOTE_OUTBOUND("1", "容器出库", "tote_outbound"), + TOTE_RELOCATION("2", "容器移库", "tote_relocation"), + TOTE_INBOUND("3", "容器入库", "tote_inbound"), + TOTE_CHECK("4", "容器盘库", "tote_check"), + TOTE_CARRY("5", "容器搬运", "tote_carry"), + TOTE_ACTION("6", "指令集任务", "tote_action"); + + private String code; + private String desc; + private String ext; +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/impl/AcsToHrServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/impl/AcsToHrServiceImpl.java new file mode 100644 index 0000000..e1f8909 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/impl/AcsToHrServiceImpl.java @@ -0,0 +1,63 @@ +package org.nl.acs.ext.hr.service.impl; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.address.service.AddressService; +import org.nl.acs.address.service.dto.AddressDto; +import org.nl.acs.ext.hr.OthersHttpUtil; +import org.nl.acs.ext.UnifiedResponse; +import org.nl.acs.ext.hr.data.req.*; +import org.nl.acs.ext.hr.service.AcsToHrService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + + +/** + * @author onepiece + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class AcsToHrServiceImpl implements AcsToHrService { + + @Autowired + private AddressService addressService; + @Autowired + private OthersHttpUtil othersHttpUtil; + + @Override + public UnifiedResponse containerArrived(ContainerArrivedRequest requestParam, Class type) { + // String path = ""; + AddressDto addressDto = addressService.findByCode("containerArrived"); + return othersHttpUtil.sendPostRequest(addressDto.getMethods_url(), requestParam, type); + } + + @Override + public UnifiedResponse create(CreateRequest requestParam, Class type) { + // String path = ""; + AddressDto addressDto = addressService.findByCode("createLikuTask"); + return othersHttpUtil.sendPostRequest(addressDto.getMethods_url(), requestParam, type); + } + + @Override + public UnifiedResponse cancel(CancelRequest requestParam, Class type) { + // String path = ""; + AddressDto addressDto = addressService.findByCode("cancelLikuTask"); + return othersHttpUtil.sendPostRequest(addressDto.getMethods_url(), requestParam, type); + } + + @Override + public UnifiedResponse robotQuery(RobotQueryRequest requestParam, Class type) { + // String path = ""; + AddressDto addressDto = addressService.findByCode("robotQuery"); + return othersHttpUtil.sendPostRequest(addressDto.getMethods_url(), requestParam, type); + } + + @Override + public UnifiedResponse locationQuery(LocationQueryRequest requestParam, Class type) { + // String path = ""; + AddressDto addressDto = addressService.findByCode("locationQuery"); + return othersHttpUtil.sendPostRequest(addressDto.getMethods_url(), requestParam, type); + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/impl/HrToAcsServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/impl/HrToAcsServiceImpl.java new file mode 100644 index 0000000..2d558cc --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/hr/service/impl/HrToAcsServiceImpl.java @@ -0,0 +1,300 @@ +package org.nl.acs.ext.hr.service.impl; + +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.nl.acs.device.device.domain.Device; +import org.nl.acs.device.device.service.DeviceAppService; +import org.nl.acs.device.driver.conveyor.appearance_inspection_scannner_conveyor.AppearanceInspectionScannerConveyorDeviceDriver; +import org.nl.acs.ext.hr.data.req.*; +import org.nl.acs.ext.hr.data.resp.*; +import org.nl.acs.ext.hr.service.HrToAcsService; +import org.nl.acs.ext.hr.service.dto.Conveyors; +import org.nl.acs.ext.hr.service.dto.NodeStates; +import org.nl.acs.ext.wms.IpUtil; +import org.nl.acs.instruction.domain.Instruction; +import org.nl.acs.instruction.service.InstructionService; +import org.nl.acs.task.service.TaskService; +import org.nl.acs.task.service.dto.TaskDto; +import org.nl.config.lucene.service.LuceneExecuteLogService; +import org.nl.config.lucene.service.dto.LuceneLogDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 海柔AGV接口 + * + * @author: wangs + * @createDate: 2022/11/24 + */ +@Service +@RequiredArgsConstructor +@Slf4j +public class HrToAcsServiceImpl implements HrToAcsService { + + @Autowired + private TaskService taskService; + @Autowired + private InstructionService instructionService; + @Autowired + private DeviceAppService deviceAppService; + + + @Override + public JSONObject queryConveyor(QueryConveyorRequest requestParam) throws Exception { + log.info("查询输送线料箱状态-----输入参数{}", JSON.toJSONString(requestParam)); + JSONObject result = new JSONObject(); + try { + String conveyorCodes = requestParam.getConveyorCodes(); + NodeStates nodeStates = new NodeStates(); + List list2 = new ArrayList<>(); + Conveyors conveyors = new Conveyors(); + Device device = deviceAppService.findDeviceByCode(conveyorCodes); + QueryConveyorResponse queryConveyorResponse = new QueryConveyorResponse(); + if (device != null && device.getDeviceDriver() instanceof AppearanceInspectionScannerConveyorDeviceDriver) { + AppearanceInspectionScannerConveyorDeviceDriver appearanceInspectionScannerConveyorDeviceDriver = (AppearanceInspectionScannerConveyorDeviceDriver) device.getDeviceDriver(); + if (!ObjectUtil.isEmpty(device.getDevice_code())) { + conveyors.setCode(device.getDevice_code()); + } + if (appearanceInspectionScannerConveyorDeviceDriver.getMove() == 1) { + nodeStates.setHasContainer(true); + } else { + nodeStates.setHasContainer(false); + } + } + list2.add(nodeStates); + conveyors.setNodeStates(list2); + List list = new ArrayList<>(); + list.add(conveyors); + queryConveyorResponse.setConveyors(list); + result.put("code", "0"); + result.put("msg", "success"); + result.put("data", queryConveyorResponse); + } catch (Exception e) { + result.put("code", "1"); + result.put("msg", "fail"); + result.put("data", new JSONObject()); + log.info("查询输送线料箱状态--------------:输出参数{}", JSON.toJSONString(result)); + } + log.info("查询输送线料箱状态,响应参数:{}", JSON.toJSONString(result)); + return result; + } + + @Override + public JSONObject queryNodeReader(QueryNodeReaderRequest requestParam) throws Exception { + log.info("查询输送线点位状态-----输入参数{}", JSON.toJSONString(requestParam)); + String slotCode = requestParam.slotCode; + QueryNodeReaderResponse queryNodeReaderResponse = new QueryNodeReaderResponse(); + JSONObject result = new JSONObject(); + result.put("code", "0"); + result.put("msg", "success"); + result.put("data", queryNodeReaderResponse); + log.info("查询输送线点位状态-----输出参数{}", result); + return result; + } + + @Override + public JSONObject loadContainerFinish(LoadContainerFinishRequest requestParam) throws Exception { + log.info("取容器完成通知-----输入参数{}", JSON.toJSONString(requestParam)); + JSONObject result = new JSONObject(); + try { + String slotCode = requestParam.slotCode; + String containerCode = requestParam.containerCode; +// LoadContainerFinishResponse loadContainerFinishResponse = new LoadContainerFinishResponse(); + Device device = deviceAppService.findDeviceByCode(slotCode); + if (device != null && device.getDeviceDriver() instanceof AppearanceInspectionScannerConveyorDeviceDriver) { + AppearanceInspectionScannerConveyorDeviceDriver appearanceInspectionScannerConveyorDeviceDriver = (AppearanceInspectionScannerConveyorDeviceDriver) device.getDeviceDriver(); + //下发输送线电气取货完成 + appearanceInspectionScannerConveyorDeviceDriver.writing("to_command", "2"); +// JSONObject json = (JSONObject) JSONObject.toJSON(loadContainerFinishResponse); + result.put("code", "0"); + result.put("msg", "success"); + result.put("data", new JSONObject()); + } + } catch (Exception e) { + result.put("code", "1"); + result.put("msg", "fail"); + result.put("data", new JSONObject()); + log.info("取容器完成通知--------------:输出参数{}", JSON.toJSONString(result)); + } + log.info("取容器完成通知-----输出参数{}", JSON.toJSONString(result)); + return result; + } + + @Override + public JSONObject unloadContainerReq(UnloadContainerReqRequest requestParam) throws Exception { + log.info("放容器请求-----输入参数{}", JSON.toJSONString(requestParam)); + UnloadContainerReqResponse unloadContainerReqResponse = new UnloadContainerReqResponse(); + JSONObject result = new JSONObject(); + try { + String slotCode = requestParam.slotCode; + String containerCode = requestParam.containerCode; + Device device = deviceAppService.findDeviceByCode(slotCode); + if (device != null && device.getDeviceDriver() instanceof AppearanceInspectionScannerConveyorDeviceDriver) { + AppearanceInspectionScannerConveyorDeviceDriver appearanceInspectionScannerConveyorDeviceDriver = (AppearanceInspectionScannerConveyorDeviceDriver) device.getDeviceDriver(); + if (appearanceInspectionScannerConveyorDeviceDriver.getAction() == 2) { + unloadContainerReqResponse.setAllow(true); + } else { + unloadContainerReqResponse.setAllow(false); + } + } + result.put("code", "0"); + result.put("msg", "success"); + result.put("data", unloadContainerReqResponse); + } catch (Exception e) { + result.put("code", "1"); + result.put("msg", "fail"); + result.put("data", new JSONObject()); + log.info("放容器请求--------------:输出参数{}", JSON.toJSONString(result)); + } + log.info("放容器请求-----输出参数{}", JSON.toJSONString(result)); + return result; + } + + @Override + public JSONObject unloadContainerFinish(UnloadContainerFinishRequest requestParam) throws Exception { + log.info("放容器完成通知-----输入参数{}", JSON.toJSONString(requestParam)); + String slotCode = requestParam.slotCode; + String containerCode = requestParam.containerCode; + String containerAttribute = requestParam.containerAttribute; + UnloadContainerFinishResponse unloadContainerFinishResponse = new UnloadContainerFinishResponse(); + JSONObject result = new JSONObject(); + JSONObject json = (JSONObject) JSONObject.toJSON(unloadContainerFinishResponse); + result.put("code", "0"); + result.put("msg", "success"); + result.put("data", json); + log.info("放容器完成通知-----输出参数{}", result); + return result; + } + + @Override + public JSONObject moveContainer(MoveContainerRequest requestParam) throws Exception { + log.info("容器流动请求-----输入参数{}", JSON.toJSONString(requestParam)); + String slotCode = requestParam.slotCode; + String containerCode = requestParam.containerCode; + String direction = requestParam.direction; + MoveContainerResponse moveContainerResponse = new MoveContainerResponse(); + JSONObject result = new JSONObject(); + JSONObject json = (JSONObject) JSONObject.toJSON(moveContainerResponse); + result.put("code", "0"); + result.put("msg", "success"); + result.put("data", json); + log.info("容器流动请求-----输出参数{}", result); + return result; + } + + @Override + public JSONObject taskstatusreporting(TaskstatusReportingRequest requestParam) throws Exception { + try { + log.info("任务状态上报-----输入参数{}", JSON.toJSONString(requestParam)); + String inst_id = requestParam.getTaskCode(); + String eventType = requestParam.getEventType(); + String status = requestParam.getStatus(); + String carNo = requestParam.getRobotCode(); + Instruction inst = (Instruction) instructionService.findById(inst_id); + if (ObjectUtil.isEmpty(inst)) { + TaskstatusReportingResponse taskstatusReportingResponse = new TaskstatusReportingResponse(); + JSONObject result = new JSONObject(); + result.put("result", "false"); + result.put("code", "0"); + result.put("comment", "未找到对应指令"); + result.put("data", taskstatusReportingResponse); + log.info("任务状态上报-----输出参数{}", result); + return result; + } + if (!StrUtil.equals(inst.getInstruction_status(), "0") && !StrUtil.equals(inst.getInstruction_status(), "1")) { + TaskstatusReportingResponse taskstatusReportingResponse = new TaskstatusReportingResponse(); + JSONObject result = new JSONObject(); + result.put("result", "false"); + result.put("code", "0"); + result.put("comment", "未找到对应未完成的指令"); + result.put("data", taskstatusReportingResponse); + log.info("任务状态上报-----输出参数{}", result); + return result; + } + TaskDto task = taskService.findByCode(inst.getTask_code()); + if (ObjectUtil.isEmpty(task)) { + TaskstatusReportingResponse taskstatusReportingResponse = new TaskstatusReportingResponse(); + JSONObject result = new JSONObject(); + result.put("result", "false"); + result.put("code", "0"); + result.put("comment", "未找到对应任务"); + result.put("data", taskstatusReportingResponse); + log.info("任务状态上报-----输出参数{}", result); + return result; + } + + /** + * eventType + * task:上报任务状态 + * tote_load:上报取箱状态 + * tote_unload:上报放箱状态 + * robot_reach:机器⼈到达⼯作站 + * weight:称重事件回调 + * rfid:RFID识别事件回调 + */ + + /** + * status + * success:成功 + * fail:失败 + * cancel:取消 + * suspend:挂起 + */ + + if (StrUtil.equals(inst.getInstruction_status(), "0")) { + inst.setInstruction_status("1"); + inst.setCarno(carNo); + } + + if (StrUtil.equals(eventType, "task")) { + if (StrUtil.equals(status, "success")) { + if (!StrUtil.equals(task.getTask_status(), "0") && !StrUtil.equals(task.getTask_status(), "1")) { + TaskstatusReportingResponse taskstatusReportingResponse = new TaskstatusReportingResponse(); + JSONObject result = new JSONObject(); + result.put("result", "false"); + result.put("code", "0"); + result.put("comment", "未找到未完成的对应任务"); + result.put("data", taskstatusReportingResponse); + log.info("任务状态上报-----输出参数{}", result); + return result; + } + instructionService.finish(inst.getInstruction_id()); + } else if (StrUtil.equals(status, "fail") || StrUtil.equals(status, "cancel")) { + instructionService.cancel(inst.getInstruction_id()); + } else if (StrUtil.equals(status, "suspend")) { + + } + } else if (StrUtil.equals(eventType, "tote_load")) { + inst.setExecute_code("2"); + instructionService.update(inst); + } else if (StrUtil.equals(eventType, "tote_unload")) { + inst.setExecute_code("4"); + instructionService.update(inst); + } + + TaskstatusReportingResponse taskstatusReportingResponse = new TaskstatusReportingResponse(); + JSONObject json = (JSONObject) JSONObject.toJSON(taskstatusReportingResponse); + JSONObject result = new JSONObject(); + result.put("code", "0"); + result.put("msg", "success"); + result.put("data", json); + log.info("任务状态上报反馈-----输出参数{}", result); + return result; + } finally { + } + } + + @Override + public JSONObject abnormalreporting(AbnormarReportingRequest requestParam) throws Exception { + return null; + } +} + + diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/log/OtherToInterfaceLogAspect.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/log/OtherToInterfaceLogAspect.java new file mode 100644 index 0000000..0ce6ede --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/log/OtherToInterfaceLogAspect.java @@ -0,0 +1,93 @@ +package org.nl.acs.ext.log; + +import com.alibaba.fastjson.JSON; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.MethodSignature; +import org.nl.acs.ext.wms.IpUtil; +import org.nl.config.lucene.service.LuceneExecuteLogService; +import org.nl.config.lucene.service.dto.LuceneLogDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.*; + +import java.lang.reflect.Method; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/7/8 + */ +@Aspect +@Component +public class OtherToInterfaceLogAspect { + + @Autowired + private LuceneExecuteLogService logService; + + @Around("@annotation(org.nl.acs.ext.log.OthersToInterfaceLog)") + public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable { + long startTime = System.currentTimeMillis(); + + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + Method method = signature.getMethod(); + + Class targetClass = joinPoint.getTarget().getClass(); + RequestMapping classRequestMapping = targetClass.getAnnotation(RequestMapping.class); + String classUrlValue = classRequestMapping != null ? String.join(",", classRequestMapping.value()) : "No Class Annotation"; + + String methodUrlValue = ""; + if (method.isAnnotationPresent(GetMapping.class)) { + GetMapping getMapping = method.getAnnotation(GetMapping.class); + methodUrlValue = String.join(",", getMapping.value()); + } else if (method.isAnnotationPresent(PostMapping.class)) { + PostMapping postMapping = method.getAnnotation(PostMapping.class); + methodUrlValue = String.join(",", postMapping.value()); + } else if (method.isAnnotationPresent(PutMapping.class)) { + PutMapping putMapping = method.getAnnotation(PutMapping.class); + methodUrlValue = String.join(",", putMapping.value()); + } else if (method.isAnnotationPresent(DeleteMapping.class)) { + DeleteMapping deleteMapping = method.getAnnotation(DeleteMapping.class); + methodUrlValue = String.join(",", deleteMapping.value()); + } else if (method.isAnnotationPresent(RequestMapping.class)) { + RequestMapping methodRequestMapping = method.getAnnotation(RequestMapping.class); + methodUrlValue = String.join(",", methodRequestMapping.value()); + } + String request_direction = ""; + if (method.isAnnotationPresent(OthersToInterfaceLog.class)) { + OthersToInterfaceLog interfaceLog = method.getAnnotation(OthersToInterfaceLog.class); + request_direction = interfaceLog.value(); + } + + String methodName = joinPoint.getSignature().getName(); + Object[] args = joinPoint.getArgs(); + + LuceneLogDto logDto = + LuceneLogDto.builder() + .logType("接口日志") + .request_url(IpUtil.localIP() + classUrlValue + methodUrlValue) + .request_direction(request_direction) + .request_param(JSON.toJSONString(args)) + .method(methodName) + .content("开始请求") + .build(); + logService.interfaceExecuteLog(logDto); + + Object result = joinPoint.proceed(); + + logDto = + LuceneLogDto.builder() + .logType("接口日志") + .request_url(IpUtil.localIP() + classUrlValue + methodUrlValue) + .request_direction(request_direction) + .request_param(JSON.toJSONString(args)) + .method(methodName) + .response_param(JSON.toJSONString(result)) + .executeTime(System.currentTimeMillis() - startTime) + .content("响应请求") + .build(); + logService.interfaceExecuteLog(logDto); + return result; + } +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/log/OthersToInterfaceLog.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/log/OthersToInterfaceLog.java new file mode 100644 index 0000000..6c4afbb --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/log/OthersToInterfaceLog.java @@ -0,0 +1,12 @@ +package org.nl.acs.ext.log; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface OthersToInterfaceLog { + String value() default ""; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/log/ToOtherInterfaceLogAspect.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/log/ToOtherInterfaceLogAspect.java new file mode 100644 index 0000000..4eef7cf --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/log/ToOtherInterfaceLogAspect.java @@ -0,0 +1,123 @@ +package org.nl.acs.ext.log; + +import com.alibaba.fastjson.JSON; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.reflect.MethodSignature; +import org.nl.config.lucene.service.LuceneExecuteLogService; +import org.nl.config.lucene.service.dto.LuceneLogDto; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.util.ReflectionUtils; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/7/8 + */ +@Aspect +@Component +public class ToOtherInterfaceLogAspect { + + private static final ConcurrentMap, Field> fieldCache = new ConcurrentHashMap<>(); + private static final ConcurrentMap, Method> methodCache = new ConcurrentHashMap<>(); + + @Autowired + private LuceneExecuteLogService logService; + + @Around("@annotation(org.nl.acs.ext.log.ToOthersInterfaceLog)") + public Object logAround(ProceedingJoinPoint joinPoint) throws Throwable { + long startTime = System.currentTimeMillis(); + + MethodSignature signature = (MethodSignature) joinPoint.getSignature(); + Method method = signature.getMethod(); + + + String request_direction = ""; + if (method.isAnnotationPresent(ToOthersInterfaceLog.class)) { + ToOthersInterfaceLog interfaceLog = method.getAnnotation(ToOthersInterfaceLog.class); + request_direction = interfaceLog.value(); + } + String methodName = joinPoint.getSignature().getName(); + Object[] args = joinPoint.getArgs(); + Object url = ""; + Object requesr_param = ""; + if (args.length > 1) { + url = args[0]; + requesr_param = args[1]; + } + + Class targetClass = joinPoint.getTarget().getClass(); + + Object ipPort = ""; + try { + Field requestAdapterField = fieldCache.computeIfAbsent(targetClass, clazz -> { + try { + Field field = clazz.getDeclaredField("REQUEST_ADAPTER"); + ReflectionUtils.makeAccessible(field); + return field; + } catch (NoSuchFieldException e) { + throw new RuntimeException(e); + } + }); + + Object requestAdapterObject = requestAdapterField.get(null); + + Method getUrlMethod = methodCache.computeIfAbsent(requestAdapterObject.getClass(), clazz -> { + try { + Method m = clazz.getDeclaredMethod("getUrl"); + ReflectionUtils.makeAccessible(m); + return m; + } catch (NoSuchMethodException e) { + throw new RuntimeException(e); + } + }); + + ipPort = getUrlMethod.invoke(requestAdapterObject); + } catch (Exception e) { + LuceneLogDto logDto = + LuceneLogDto.builder() + .logType("接口日志") + .request_url(ipPort + String.valueOf(url)) + .request_direction(request_direction) + .request_param(JSON.toJSONString(requesr_param)) + .method(methodName) + .content("开始请求,获取url失败," + e.getMessage()) + .build(); + logService.interfaceExecuteLog(logDto); + } + + LuceneLogDto logDto = + LuceneLogDto.builder() + .logType("接口日志") + .request_url(ipPort + String.valueOf(url)) + .request_direction(request_direction) + .request_param(JSON.toJSONString(requesr_param)) + .method(methodName) + .content("开始请求") + .build(); + logService.interfaceExecuteLog(logDto); + + Object result = joinPoint.proceed(); + + logDto = + LuceneLogDto.builder() + .logType("接口日志") + .request_url(ipPort + String.valueOf(url)) + .request_direction(request_direction) + .request_param(JSON.toJSONString(requesr_param)) + .method(methodName) + .response_param(JSON.toJSONString(result)) + .executeTime(System.currentTimeMillis() - startTime) + .content("响应请求") + .build(); + logService.interfaceExecuteLog(logDto); + return result; + } +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/log/ToOthersInterfaceLog.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/log/ToOthersInterfaceLog.java new file mode 100644 index 0000000..76b74b3 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/log/ToOthersInterfaceLog.java @@ -0,0 +1,12 @@ +package org.nl.acs.ext.log; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface ToOthersInterfaceLog { + String value() default ""; +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsHttpUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsHttpUtil.java new file mode 100644 index 0000000..77daa78 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsHttpUtil.java @@ -0,0 +1,134 @@ +package org.nl.acs.ext.wms; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSON; +import org.nl.acs.AcsConfig; +import org.nl.acs.common.base.CommonFinalParam; +import org.nl.acs.ext.RequestAdapter; +import org.nl.acs.ext.ResponseAdapter; +import org.nl.acs.ext.UnifiedResponse; +import org.nl.acs.ext.log.ToOthersInterfaceLog; +import org.nl.system.service.param.ISysParamService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/4/22 + */ +@Component +public class LmsHttpUtil { + + private static final RequestAdapter REQUEST_ADAPTER = new LmsRequestAdapter(); + private static final ResponseAdapter RESPONSE_ADAPTER = new LmsResponseAdapter(); + + @Autowired + private ISysParamService paramService; + + @ToOthersInterfaceLog("ACS->WMS") + public UnifiedResponse sendPostRequest(String path, W requestParam, Class type) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_WMS).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .body(JSON.toJSONString(requestParam)) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, type); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->WMS") + public UnifiedResponse sendPostRequest(String path, W requestParam) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_WMS).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .body(JSON.toJSONString(requestParam)) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, null); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->WMS") + public UnifiedResponse sendPostRequest(String path, Class type) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_WMS).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, type); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->WMS") + public UnifiedResponse sendPostRequest(String path) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_WMS).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, null); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->WMS") + public UnifiedResponse sendGetRequest(String path, Class type) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_WMS).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .get(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, type); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->WMS") + public UnifiedResponse sendGetRequest(String path) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.HAS_WMS).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .get(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, null); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/LmsRequestAdapter.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsRequestAdapter.java similarity index 74% rename from nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/LmsRequestAdapter.java rename to nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsRequestAdapter.java index 69bfd7e..8246839 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/LmsRequestAdapter.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsRequestAdapter.java @@ -1,7 +1,8 @@ -package org.nl.acs.ext; +package org.nl.acs.ext.wms; import org.nl.acs.AcsConfig; +import org.nl.acs.ext.RequestAdapter; import org.nl.config.SpringContextHolder; import org.nl.system.service.param.ISysParamService; @@ -14,6 +15,6 @@ public class LmsRequestAdapter implements RequestAdapter { @Override public String getUrl() { ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); - return paramService.findByCode(AcsConfig.WMSURL).getValue(); + return paramService.findByCode(AcsConfig.WMS_URL).getValue(); } } \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/LmsResponseAdapter.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsResponseAdapter.java similarity index 89% rename from nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/LmsResponseAdapter.java rename to nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsResponseAdapter.java index 1943bea..bceebf1 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/LmsResponseAdapter.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsResponseAdapter.java @@ -1,6 +1,8 @@ -package org.nl.acs.ext; +package org.nl.acs.ext.wms; import com.alibaba.fastjson.JSONObject; +import org.nl.acs.ext.ResponseAdapter; +import org.nl.acs.ext.UnifiedResponse; /** * @Description TODO diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java index fb6fcfc..c92c635 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/WmsToAcsController.java @@ -5,6 +5,7 @@ package org.nl.acs.ext.wms.rest; import cn.dev33.satoken.annotation.SaIgnore; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.nl.acs.ext.log.OthersToInterfaceLog; import org.nl.acs.ext.wms.data.req.CommonRequest; import org.nl.acs.ext.wms.service.GateWayService; import org.springframework.beans.factory.annotation.Autowired; @@ -31,6 +32,7 @@ public class WmsToAcsController { @PostMapping("/apply") @SaIgnore + @OthersToInterfaceLog("WMS->ACS") public ResponseEntity apply(@RequestBody CommonRequest request) { return new ResponseEntity<>(gateWayService.apply(request), HttpStatus.OK); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java index 163fcdb..e49944e 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java @@ -4,7 +4,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.nl.acs.address.service.AddressService; import org.nl.acs.address.service.dto.AddressDto; -import org.nl.acs.ext.LmsHttpUtil; +import org.nl.acs.ext.wms.LmsHttpUtil; import org.nl.acs.ext.UnifiedResponse; import org.nl.acs.ext.wms.data.req.CommonRequest; import org.nl.acs.ext.wms.service.AcsToWmsService; @@ -18,17 +18,19 @@ import org.springframework.stereotype.Service; public class AcsToWmsServiceImpl implements AcsToWmsService { @Autowired private AddressService addressService; + @Autowired + private LmsHttpUtil lmsHttpUtil; @Override public UnifiedResponse apply(CommonRequest request) { AddressDto addressDto = addressService.findByCode("apply"); - return LmsHttpUtil.sendPostRequest(addressDto.getMethods_url(), request, null); + return lmsHttpUtil.sendPostRequest(addressDto.getMethods_url(), request); } @Override public UnifiedResponse apply(CommonRequest request, Class type) { AddressDto addressDto = addressService.findByCode("apply"); - return LmsHttpUtil.sendPostRequest(addressDto.getMethods_url(), request, type); + return lmsHttpUtil.sendPostRequest(addressDto.getMethods_url(), request, type); } } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/xg/XgHttpUtil.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/xg/XgHttpUtil.java new file mode 100644 index 0000000..84c7697 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/xg/XgHttpUtil.java @@ -0,0 +1,136 @@ +package org.nl.acs.ext.xg; + +import cn.hutool.core.util.StrUtil; +import cn.hutool.http.HttpRequest; +import com.alibaba.fastjson.JSON; +import org.nl.acs.AcsConfig; +import org.nl.acs.common.base.CommonFinalParam; +import org.nl.acs.ext.RequestAdapter; +import org.nl.acs.ext.ResponseAdapter; +import org.nl.acs.ext.UnifiedResponse; +import org.nl.acs.ext.log.ToOthersInterfaceLog; +import org.nl.system.service.param.ISysParamService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/4/22 + */ +@Component +public class XgHttpUtil { + + private static final RequestAdapter REQUEST_ADAPTER = new XgRequestAdapter(); + private static final ResponseAdapter RESPONSE_ADAPTER = new XgResponseAdapter(); + + @Autowired + private ISysParamService paramService; + + @ToOthersInterfaceLog("ACS->AGV") + public UnifiedResponse sendPostRequest(String path, W requestParam, Class type) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .body(JSON.toJSONString(requestParam)) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, type); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->AGV") + public UnifiedResponse sendPostRequest(String path, W requestParam) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .body(JSON.toJSONString(requestParam)) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, null); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->AGV") + public UnifiedResponse sendPostRequest(String path, Class type) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, type); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + + @ToOthersInterfaceLog("ACS->AGV") + public UnifiedResponse sendPostRequest(String path) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .post(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, null); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + + @ToOthersInterfaceLog("ACS->AGV") + public UnifiedResponse sendGetRequest(String path, Class type) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .get(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, type); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + + @ToOthersInterfaceLog("ACS->AGV") + public UnifiedResponse sendGetRequest(String path) { + if (!StrUtil.equals(paramService.findByCode(AcsConfig.FORK_AGV).getValue(), CommonFinalParam.ONE)) { + return new UnifiedResponse<>(false, "未开启连接该系统!"); + } + try { + String body = HttpRequest + .get(REQUEST_ADAPTER.getUrl() + path) + .setConnectionTimeout(5000) + .execute() + .body(); + return RESPONSE_ADAPTER.adapt(body, null); + } catch (Exception e) { + return new UnifiedResponse<>(false, e.getMessage()); + } + } + +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/xg/XgRequestAdapter.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/xg/XgRequestAdapter.java new file mode 100644 index 0000000..2679fb4 --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/xg/XgRequestAdapter.java @@ -0,0 +1,21 @@ +package org.nl.acs.ext.xg; + +import org.nl.acs.AcsConfig; +import org.nl.acs.ext.RequestAdapter; +import org.nl.config.SpringContextHolder; +import org.nl.system.service.param.ISysParamService; + + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/4/22 + */ +public class XgRequestAdapter implements RequestAdapter { + @Override + public String getUrl() { + ISysParamService paramService = SpringContextHolder.getBean(ISysParamService.class); + return paramService.findByCode(AcsConfig.AGV_URL).getValue(); + } + +} \ No newline at end of file diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/xg/XgResponseAdapter.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/xg/XgResponseAdapter.java new file mode 100644 index 0000000..f0aa34f --- /dev/null +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/xg/XgResponseAdapter.java @@ -0,0 +1,44 @@ +package org.nl.acs.ext.xg; + + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import org.nl.acs.ext.ResponseAdapter; +import org.nl.acs.ext.UnifiedResponse; + +/** + * @Description TODO + * @Author Gengby + * @Date 2024/4/22 + */ +public class XgResponseAdapter implements ResponseAdapter { + + @Override + public UnifiedResponse adapt(String responseBody, Class type) { + responseBody = responseBody.trim(); + if (responseBody.startsWith("{") && responseBody.endsWith("}")) { + JSONObject resp = JSON.parseObject(responseBody); + String message = resp.containsKey("msg") ? resp.getString("msg") : ""; + if (resp.containsKey("code") && resp.getInteger("code") != 0) { + return new UnifiedResponse<>(false, message); + } else { + if (type != null) { + T data = JSONObject.toJavaObject(resp, type); + return new UnifiedResponse<>(true, message, data); + } + return new UnifiedResponse<>(true, message, (T) resp); + } + } else if (responseBody.startsWith("[") && responseBody.endsWith("]")) { + JSONArray resp = JSON.parseArray(responseBody); + if (type != null) { + T data = JSONObject.toJavaObject(resp, type); + return new UnifiedResponse<>(true, "success", data); + } else { + return new UnifiedResponse<>(true, "success", (T) resp); + } + } else { + return new UnifiedResponse<>(false, "failed,响应数据为空!"); + } + } +} diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java index cb73562..779f3ff 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/instruction/service/impl/InstructionServiceImpl.java @@ -31,6 +31,7 @@ import org.nl.acs.device.device.service.impl.DeviceServiceImpl; import org.nl.acs.device.driver.DeviceDriverDefination; import org.nl.acs.device.driver.conveyor.standard_conveyor_control_with_scanner.StandardCoveyorControlWithScannerDeviceDriver; import org.nl.acs.device.driver.conveyor.standard_inspect_site.StandardInspectSiteDeviceDriver; +import org.nl.acs.ext.UnifiedResponse; import org.nl.acs.instruction.domain.InstructionMybatis; import org.nl.acs.instruction.enums.InstructionStatusEnum; import org.nl.acs.instruction.service.dto.InstructionDto; @@ -484,20 +485,17 @@ public class InstructionServiceImpl extends CommonServiceImpl resp = xiangGongAgvService.addOrderSequences(dto); + if (!resp.isSuccess()) { dto.setSend_status("2"); } else { dto.setSend_status("1"); } - //仙工叉车 } else { - //创建运单序列 - HttpResponse response = xiangGongAgvService.sendOrderSequencesToXZ(dto); - if (ObjectUtils.isEmpty(response) || response.getStatus() != 200) { + UnifiedResponse resp = xiangGongAgvService.sendOrderSequencesToXZ(dto); + if (!resp.isSuccess()) { dto.setSend_status("2"); } else { dto.setSend_status("1"); @@ -1068,20 +1066,20 @@ public class InstructionServiceImpl extends CommonServiceImpl currentNoY = noY == null ? Collections.emptySet() : new HashSet<>(Arrays.asList(noY.split(","))); return Optional.ofNullable(this.instructions) .orElse(new CopyOnWriteArrayList<>()) diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index 26e507f..cf0b10f 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -355,7 +355,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme == 0) { throw new BadRequestException(dto.getStart_point_code() + "->" + dto.getNext_point_code() + " " + LangProcess.msg("route_isNull")); } - String createTaskCheck = paramService.findByCode(AcsConfig.CREATETASKCHECK).getValue(); + String createTaskCheck = paramService.findByCode(AcsConfig.CREATE_TASK_CHECK).getValue(); DeviceService deviceService = SpringContextHolder.getBean(DeviceServiceImpl.class); DeviceAppService appService = SpringContextHolder.getBean(DeviceAppServiceImpl.class); Device nextdevice = appService.findDeviceByCode(next_device_code); @@ -1249,7 +1249,7 @@ public class TaskServiceImpl extends CommonServiceImpl impleme private void feedWmsTaskStatus(TaskDto taskDto) { // 判断是否为WMS下发的任务,如果是反馈任务状态给WMS TaskDto entity = this.findById(taskDto.getTask_id()); - String hasWms = paramService.findByCode(AcsConfig.HASWMS).getValue(); + String hasWms = paramService.findByCode(AcsConfig.HAS_WMS).getValue(); if (!StrUtil.startWith(taskDto.getTask_code(), CommonFinalParam.HYPHEN_) && StrUtil.equals(hasWms, CommonFinalParam.ONE)) { JSONObject param = new JSONObject(); param.put("taskCode", entity.getTask_code()); @@ -1281,9 +1281,11 @@ public class TaskServiceImpl extends CommonServiceImpl impleme String type = shortPathsList.get(0).getType(); // != 0 为agv任务 if (!StrUtil.equals(type, "0")) { - if (StrUtil.equals(paramService.findByCode(AcsConfig.AGVTYPE).getValue(), "3")) { + if (StrUtil.equals(paramService.findByCode(AcsConfig.AGV_TYPE).getValue(), "3")) { try { - agvService.markComplete(taskDto.getTask_code()); + JSONObject reqParam = new JSONObject(); + reqParam.put("id",taskDto.getTask_code()); + agvService.markComplete(reqParam); } catch (Exception e) { log.error("关闭运单异常,原因:{}", e.getMessage()); } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/config/LuceneAppender.java b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/config/LuceneAppender.java index e926526..366fd19 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/config/LuceneAppender.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/config/LuceneAppender.java @@ -107,6 +107,12 @@ public class LuceneAppender extends AppenderBase { if (ObjectUtil.isNotEmpty(luceneLogDto.getDeviceLogType())) { document.add(new StringField("deviceLogType", luceneLogDto.getDeviceLogType(), Field.Store.YES)); } + if (ObjectUtil.isNotEmpty(luceneLogDto.getRequest_direction())) { + document.add(new StringField("request_direction", luceneLogDto.getRequest_direction(), Field.Store.YES)); + } + if (ObjectUtil.isNotEmpty(luceneLogDto.getExecuteTime())) { + document.add(new StringField("executeTime", luceneLogDto.getExecuteTime() + "", Field.Store.YES)); + } document.add(new StringField("logType", luceneLogDto.getLogType(), Field.Store.YES)); document.add(new StringField("logTime", DateUtil.format(new DateTime(), "yyyy-MM-dd HH:mm:ss.SSS"), Field.Store.YES)); document.add(new NumericDocValuesField("logTime",System.currentTimeMillis()));//排序 diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/dto/LuceneLogDto.java b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/dto/LuceneLogDto.java index e09a16d..601b66c 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/dto/LuceneLogDto.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/dto/LuceneLogDto.java @@ -12,76 +12,61 @@ import org.nl.config.lucene.enums.DeviceLogTypeEnum; @AllArgsConstructor public class LuceneLogDto { - /* 日志标识 */ - private String log_uuid; - /*日志类型*/ + /** + * 日志类型 + */ private String logType; - /*设备编号*/ + + /** + * 设备编号 + */ private String device_code; - /*内容详情*/ + + /** + * 内容详情 + */ private String content; - /* 任务编码 */ - private String task_code; - - /* 指令编码 */ - private String instruct_code; - - /* 任务标识 */ - private String task_id; - - /* 载具号 */ - private String vehicle_code; - - /* 备注 */ - private String remark; - - /* 方法 */ + /** + * 方法 + */ private String method; - /* 请求参数 */ + /** + * 请求参数 + */ private String request_param; - /* 响应参数 */ + /** + * 响应参数 + */ private String response_param; - /* 请求地址 */ + /** + * 请求路径 + */ private String request_url; - /* 状态码 */ + + /** + * 状态码 + */ private String status_code; - /* 是否删除 1:是;0:否 */ - private String is_delete; - - /* 创建者 */ - private String create_by; - - /* 创建时间 YYYY-MM-DD hh:mm:ss */ - private String create_time; - - /* 修改者 */ - private String update_by; - - /* 修改时间 */ - private String update_time; - + /** + * 设备日志类型 + */ private String deviceLogType; + /** + * 请求方向 + */ + private String request_direction; - public LuceneLogDto(final String opc_server_code, final String opc_plc_code, - final String device_code, final String to_home, final String last_home, - final String home) { - super(); - this.device_code = device_code; - this.content = "信号 [" - + opc_server_code + "." - + opc_plc_code + "." - + device_code + "." - + to_home + "] 发生变更 " - + last_home + " -> " - + home; - } + /** + * 执行时间 + */ + private long executeTime; public LuceneLogDto(final String device_code, final String remark) { @@ -103,14 +88,4 @@ public class LuceneLogDto { + "] - " + remark; } - - public LuceneLogDto(final String request_url, final String request_param, final String response_param, final String status_code,final String remark) { - super(); - this.request_url = request_url; - this.request_param = request_param; - this.response_param = response_param; - this.status_code = status_code; - this.content = remark; - } - } diff --git a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/impl/LuceneServiceImpl.java b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/impl/LuceneServiceImpl.java index 301fc3d..23b7a09 100644 --- a/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/impl/LuceneServiceImpl.java +++ b/nladmin-system/nlsso-server/src/main/java/org/nl/config/lucene/service/impl/LuceneServiceImpl.java @@ -29,9 +29,6 @@ import java.util.*; @Slf4j public class LuceneServiceImpl implements LuceneService { - //日志索引目录 - - @Override public Map getAll(Map whereJson, Pageable page) { //获取要查询的路径,也就是索引所在的位置 @@ -84,35 +81,18 @@ public class LuceneServiceImpl implements LuceneService { Query termQuery = new TermQuery(new Term("method", (String) whereJson.get("method"))); booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); } - if (whereJson.get("task_code") != null) { - Query termQuery = new TermQuery(new Term("task_code", (String) whereJson.get("task_code"))); - booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); - } - if (whereJson.get("instruct_code") != null) { - Query termQuery = new TermQuery(new Term("instruct_code", (String) whereJson.get("instruct_code"))); - booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); - } if (whereJson.get("request_url") != null) { Query termQuery = new TermQuery(new Term("request_url", (String) whereJson.get("request_url"))); booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); } -// if (whereJson.get("status_code") != null){ -// Query termQuery = new TermQuery(new Term("status_code", (String) whereJson.get("status_code"))); -// booleanQueryBuilder.add(termQuery,BooleanClause.Occur.MUST); -// } -// if (whereJson.get("requestparam") != null){ -// WildcardQuery query = new WildcardQuery(new Term("requestparam", "*"+(String) whereJson.get("requestparam")+"*")); -// booleanQueryBuilder.add(query,BooleanClause.Occur.MUST); -// } -// if (whereJson.get("responseparam") != null){ -// WildcardQuery query = new WildcardQuery(new Term("responseparam", "*"+(String) whereJson.get("responseparam")+"*")); -// booleanQueryBuilder.add(query,BooleanClause.Occur.MUST); -// } + if (whereJson.get("request_direction") != null) { + Query termQuery = new TermQuery(new Term("request_direction", (String) whereJson.get("request_direction"))); + booleanQueryBuilder.add(termQuery, BooleanClause.Occur.MUST); + } if (whereJson.get("blurry") != null) { WildcardQuery query = new WildcardQuery(new Term("fieldContent", "*" + (String) whereJson.get("blurry") + "*")); booleanQueryBuilder.add(query, BooleanClause.Occur.MUST); } - TopFieldCollector collector = TopFieldCollector.create(new Sort(new SortField("logTime", SortField.Type.LONG, true)), 20000, 0); searcher.search(booleanQueryBuilder.build(), collector); TopDocs topDocs = collector.topDocs(pageNum * pageSize, pageSize); @@ -126,14 +106,14 @@ public class LuceneServiceImpl implements LuceneService { object.put("content", doc.get("fieldContent")); object.put("device_code", doc.get("device_code")); object.put("deviceLogType", doc.get("deviceLogType")); - object.put("task_code", doc.get("task_code")); - object.put("instruct_code", doc.get("instruct_code")); object.put("logTime", doc.get("logTime")); object.put("method", doc.get("method")); object.put("request_url", doc.get("request_url")); object.put("status_code", doc.get("status_code")); object.put("request_param", doc.get("request_param")); object.put("response_param", doc.get("response_param")); + object.put("request_direction", doc.get("request_direction")); + object.put("executeTime", doc.get("executeTime")); if (doc.get("fieldContent") != null) { list.add(object); } diff --git a/nladmin-system/nlsso-server/src/main/resources/config/application-dev2.yml b/nladmin-system/nlsso-server/src/main/resources/config/application-dev2.yml index 3f614cf..0924d44 100644 --- a/nladmin-system/nlsso-server/src/main/resources/config/application-dev2.yml +++ b/nladmin-system/nlsso-server/src/main/resources/config/application-dev2.yml @@ -3,7 +3,7 @@ server: #配置数据源 spring: messages: - basename: language/login/login,language/error/error,language/buss/buss + basename: language/login/login,language/error/error,language/buss/buss,language/task/task,language/monitor/one_device/one_device,language/monitor/two_device/two_device,language/monitor/universal/universal datasource: druid: db-type: com.alibaba.druid.pool.DruidDataSource @@ -80,7 +80,7 @@ spring: username: root password: 123456 cleanSession: true - url: 10.211.55.3 + url: 192.168.81.251 clientId: hs_mqtt21 topics: - HS/# diff --git a/nladmin-ui/src/views/monitor/interface/index.vue b/nladmin-ui/src/views/monitor/interface/index.vue index 23d6f8c..2644cd6 100644 --- a/nladmin-ui/src/views/monitor/interface/index.vue +++ b/nladmin-ui/src/views/monitor/interface/index.vue @@ -22,6 +22,11 @@ label="请求路径" show-overflow-tooltip /> + + diff --git a/nladmin-ui/src/views/monitor/interface/search.vue b/nladmin-ui/src/views/monitor/interface/search.vue index 25e24de..7b35e26 100644 --- a/nladmin-ui/src/views/monitor/interface/search.vue +++ b/nladmin-ui/src/views/monitor/interface/search.vue @@ -1,6 +1,22 @@