浏览代码

agv状态查询接口

yejian 3 年之前
父节点
当前提交
6f7c8f29fc

+ 12 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/externalApi/service/AgvHikOrderInfoService.java

@@ -36,5 +36,17 @@ public interface AgvHikOrderInfoService extends SuperCacheService<AgvHikOrderInf
      */
     AgvHikOrderInfo updateAgvOrderInfo(AgvHikOrderInfo agvHikOrderInfo);
 
+    /**
+     * 创建agv任务
+     * @param data
+     * @return
+     */
     R addHikTask(Map<String, String> data);
+
+    /**
+     * 查询agv状态
+     * @param data
+     * @return
+     */
+    R queryAgvStatus(Map<String, String> data);
 }

+ 102 - 0
imcs-admin-boot/imcs-business-biz/src/main/java/com/github/zuihou/business/externalApi/service/impl/AgvHikOrderInfoServiceImpl.java

@@ -30,11 +30,14 @@ import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.client.RestTemplate;
 
+import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -66,6 +69,25 @@ public class AgvHikOrderInfoServiceImpl extends SuperCacheServiceImpl<AgvHikOrde
         return CacheKey.USER;
     }
 
+    private static final List<String> agvWorkList = new ArrayList<String>(){
+        {
+            add("1");
+            add("2");
+            add("6");
+        }
+    };
+    private static final List<String> agvNoWorkList = new ArrayList<String>(){
+        {
+            add("4");
+        }
+    };
+    private static final List<String> agvchargingList = new ArrayList<String>(){
+        {
+            add("7");
+            add("9");
+        }
+    };
+
     @Override
     public IPage<AgvHikOrderInfo> pageList(IPage<AgvHikOrderInfo> page, String orderName, String orderNo, String partName, String partNo, String createTime, LbqWrapper<AgvHikOrderInfo> wrapper){
         return baseMapper.pageList(page,orderName,orderNo,partName, partNo,createTime, wrapper, new DataScope());
@@ -181,4 +203,84 @@ public class AgvHikOrderInfoServiceImpl extends SuperCacheServiceImpl<AgvHikOrde
         agvHikOrderDetailInfoService.save(agvOrderDetailInfo);
         return R.success();
     }
+
+    @Override
+    public R queryAgvStatus(Map<String, String> data){
+        JSONArray agvStatusArray = new JSONArray();
+        BaseContextHandler.setTenant(BizConstant.TENANT);
+        String agvStatusUrl = "";
+        if(null==redisTemplate.opsForValue().get(ParameterKey.GET_AGV_STATUS)){
+            agvStatusUrl = parameterService.getValue(ParameterKey.GET_AGV_STATUS, null);
+            if(StringUtils.isEmpty(agvStatusUrl)){
+                return R.fail("agv状态查询地址未配置");
+            }else{
+                redisTemplate.opsForValue().set(ParameterKey.GET_AGV_STATUS,agvStatusUrl);
+            }
+        }else{
+            agvStatusUrl = (String)redisTemplate.opsForValue().get(ParameterKey.GET_AGV_STATUS);
+        }
+
+        String reqCode = UniqueKeyGenerator.getUniqueKeyStartWithTimestamp(32);
+        String reqTime = DateUtil.format(Calendar.getInstance().getTime(), DatePattern.NORM_DATETIME_MS_PATTERN);
+        JSONObject jsonObject = new JSONObject();
+        jsonObject.put("reqCode",reqCode);
+        jsonObject.put("reqTime",reqTime);
+        HttpHeaders headers = new HttpHeaders();
+        headers.setContentType(MediaType.APPLICATION_JSON);
+        // TODO 后续联调真实对接
+//        HttpEntity<String> agvStatusRequest = new HttpEntity<String>(jsonObject.toJSONString(), headers);
+//        ResponseEntity<String> agvStatusEntity = restTemplate.postForEntity(agvStatusUrl, agvStatusRequest, String.class);
+//
+//        String retData = agvStatusEntity.getBody();
+        String retData = "{\n" +
+                "    \"code\": \"0\",\n" +
+                "    \"data\": [\n" +
+                "        {\n" +
+                "            \"robotCode\": \"10001\",\n" +
+                "            \"status\": \"1\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"robotCode\": \"10002\",\n" +
+                "            \"status\": \"2\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"robotCode\": \"10003\",\n" +
+                "            \"status\": \"4\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"robotCode\": \"10004\",\n" +
+                "            \"status\": \"5\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"robotCode\": \"10005\",\n" +
+                "            \"status\": \"7\"\n" +
+                "        }\n" +
+                "    ]\n" +
+                "}";
+        log.info("agvStatus = {}",retData);
+
+        JSONObject retObj = JSONObject.parseObject(retData);
+        if("0".equals(retObj.getString("code"))){
+            JSONArray retAgvStatusArray = retObj.getJSONArray("data");
+            for(int i = 0; i < retAgvStatusArray.size(); i++){
+                JSONObject agvStatus =  new JSONObject();
+                JSONObject retAgvStatus = retAgvStatusArray.getJSONObject(i);
+                agvStatus.put("robotCode",retAgvStatus.getString("robotCode"));
+                String taskStatus = retAgvStatus.getString("status");
+                if(agvWorkList.contains(taskStatus)){
+                    agvStatus.put("status","生产中");
+                }else if(agvNoWorkList.contains(taskStatus)){
+                    agvStatus.put("status","空闲");
+                }else if(agvchargingList.contains(taskStatus)){
+                    agvStatus.put("status","充电中");
+                }else{
+                    agvStatus.put("status","报警");
+                }
+                agvStatusArray.add(agvStatus);
+            }
+            return R.success(agvStatusArray.toJSONString());
+        }else{
+            return  R.fail("agv查询状态失败");
+        }
+    }
 }

+ 5 - 0
imcs-admin-boot/imcs-business-controller/src/main/java/com/github/zuihou/business/controller/externalApi/HikAgvControl.java

@@ -250,4 +250,9 @@ public class HikAgvControl extends SuperController<AgvHikOrderInfoService, Long,
     public R addHikTask(@RequestBody Map<String, String> data) {
         return baseService.addHikTask(data);
     }
+
+    @PostMapping("/queryAgvStatus")
+    public R queryAgvStatus(@RequestBody Map<String, String> data) {
+        return baseService.queryAgvStatus(data);
+    }
 }

+ 2 - 0
imcs-admin-boot/imcs-common/src/main/java/com/github/zuihou/common/constant/ParameterKey.java

@@ -52,6 +52,8 @@ public interface ParameterKey {
     String TODOWNGOODS = "toDownGoods";
     // AGV下达任务请求地址
     String ADDTASK = "add_task";
+    // agv状态
+    String GET_AGV_STATUS = "get_agv_status";
 
     // 结点任务完成回调地址
     String STATION_GA_SWITCH_FLAG = "stationGaSwitchFlag";