sceneGrpcServer.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. package com.fdkk.fdkkmeta.grpcService;
  2. import cn.hutool.core.bean.BeanUtil;
  3. import cn.hutool.core.util.ArrayUtil;
  4. import com.alibaba.fastjson.JSON;
  5. import com.alibaba.fastjson.JSONArray;
  6. import com.fdkk.fdkkmeta.config.MetaConfig;
  7. import com.fdkk.fdkkmeta.domain.dto.RouteDto;
  8. import com.fdkk.fdkkmeta.domain.po.PointPO;
  9. import com.fdkk.fdkkmeta.grpc.*;
  10. import com.fdkk.fdkkmeta.util.ProtoJsonUtils;
  11. import com.fdkk.fdkkmeta.util.kesar.GetRoute;
  12. import com.google.protobuf.Message;
  13. import com.googlecode.protobuf.format.JsonFormat;
  14. import io.grpc.stub.StreamObserver;
  15. import lombok.extern.slf4j.Slf4j;
  16. import net.devh.boot.grpc.server.service.GrpcService;
  17. import org.json.JSONObject;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import java.io.File;
  20. import java.io.IOException;
  21. /**
  22. * @author Xiewj
  23. * @date 2022/5/9
  24. */
  25. @GrpcService
  26. @Slf4j
  27. public class sceneGrpcServer extends SceneGrpcServiceGrpc.SceneGrpcServiceImplBase {
  28. @Autowired
  29. MetaConfig metaConfig;
  30. /***
  31. * 回复 案例
  32. * SceneReply res = SceneReply.newBuilder().setRes(id+","+name).build();
  33. * responseObserver.onNext(res);
  34. */
  35. @Override
  36. public void getRoute(RouteRequest request, StreamObserver<RouteReply> responseObserver) {
  37. // grpc服务端获取调用端请求参数
  38. String sceneCode = request.getSceneCode();
  39. Point sLocation = request.getSLocation();
  40. Point eLocation = request.getELocation();
  41. RouteDto po=new RouteDto();
  42. PointPO s=new PointPO();
  43. s.setX(Double.parseDouble(sLocation.getX()));
  44. s.setY(Double.parseDouble(sLocation.getY()));
  45. s.setZ(Double.parseDouble(sLocation.getY()));
  46. PointPO e=new PointPO();
  47. e.setX(Double.parseDouble(eLocation.getX()));
  48. e.setY(Double.parseDouble(eLocation.getY()));
  49. e.setZ(Double.parseDouble(eLocation.getY()));
  50. po.setE_location(e);
  51. po.setS_location(s);
  52. po.setSceneCode(sceneCode);
  53. JSONArray maps = GetRoute.getRoute(metaConfig.getFreespacePath()+ File.separator +"target_freespace.json", po);
  54. // 这里可以有自己的业务代码,只需要按照porto中的返回类型返回参数即可
  55. RouteReply.Builder builder = RouteReply.newBuilder();
  56. if (ArrayUtil.isNotEmpty(maps)) {
  57. for (int i = 0; i < maps.size(); i++) {
  58. RouteArray.Builder addInBuilder = builder.addInBuilder();
  59. ProtoJsonUtils.toProtoBean(addInBuilder, maps.get(i).toString());
  60. }
  61. }
  62. responseObserver.onNext(builder.build());
  63. responseObserver.onCompleted();
  64. }
  65. @Override
  66. public void init(InitRequest request, StreamObserver<NormalReply> responseObserver) {
  67. try {
  68. log.info("进入{}",request);
  69. // responseObserver.onNext(res);
  70. // responseObserver.onCompleted();
  71. // log.info("回复{}",res);
  72. }
  73. catch(Exception e) {
  74. e.printStackTrace();
  75. }
  76. }
  77. @Override
  78. public void rotate(RotateRequest request, StreamObserver<NormalReply> responseObserver) {
  79. try {
  80. log.info("进入{}",request);
  81. // responseObserver.onNext(res);
  82. // responseObserver.onCompleted();
  83. // log.info("回复{}",res);
  84. }
  85. catch(Exception e) {
  86. e.printStackTrace();
  87. }
  88. }
  89. @Override
  90. public void moveStart(StartMoveRequest request, StreamObserver<NormalReply> responseObserver) {
  91. try {
  92. /*
  93. * 1.从user表里获得当前人物所在的breakPoint_id
  94. * 2.根据breakPoint_id,从breakpoints表里获得对应的起始坐标
  95. * 3.根据request中的clicking_action里的clicking_point(目的地)以及当前起始坐标计算出路径
  96. * 4.返回整个路径的一段
  97. *
  98. * */
  99. log.info("进入{}",request);
  100. // responseObserver.onNext(res);
  101. // responseObserver.onCompleted();
  102. // log.info("回复{}",res);
  103. }
  104. catch(Exception e) {
  105. e.printStackTrace();
  106. }
  107. }
  108. @Override
  109. public void moveProcess(MoveNextNeighborRequest request, StreamObserver<MoveReply> responseObserver) {
  110. try {
  111. log.info("进入{}",request);
  112. // responseObserver.onNext(res);
  113. // responseObserver.onCompleted();
  114. // log.info("回复{}",res);
  115. }
  116. catch(Exception e) {
  117. e.printStackTrace();
  118. }
  119. }
  120. @Override
  121. public void getBreakPoint(BreakPointRequest request, StreamObserver<BreakPointReply> responseObserver) {
  122. try {
  123. log.info("进入{}",request);
  124. // responseObserver.onNext(res);
  125. // responseObserver.onCompleted();
  126. // log.info("回复{}",res);
  127. }
  128. catch(Exception e) {
  129. e.printStackTrace();
  130. }
  131. }
  132. //操作杆
  133. @Override
  134. public void joystick(JoystickRequest request, StreamObserver<NormalReply> responseObserver) {
  135. try {
  136. log.info("进入{}",request);
  137. // responseObserver.onNext(res);
  138. // responseObserver.onCompleted();
  139. // log.info("回复{}",res);
  140. }
  141. catch(Exception e) {
  142. e.printStackTrace();
  143. }
  144. }
  145. }