Selaa lähdekoodia

<修改服务器ip,优化tcp>

weizhengliang 4 vuotta sitten
vanhempi
commit
bc59eaf163

+ 1 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/api/UrlManager.kt

@@ -58,7 +58,7 @@ private class DevUrlManager : UrlManager{
 
     override val buyer: String
 //        get() = "http://192.168.1.112:8005/"
-    get() = "http://47.106.200.55:8006/"
+    get() = "http://172.28.100.100:8006/"
 //        get() = String.format(base,"buyer")
 
     override val basic: String

+ 2 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/contract/nursehome/CallRecordsFragmentContract.kt

@@ -7,6 +7,7 @@ import com.wdkl.ncs.android.middleware.model.dos.CallingHistoryDO
 import com.wdkl.ncs.android.middleware.model.vo.CallingHistoryVO
 import com.wdkl.ncs.android.middleware.model.vo.EventVO
 import com.wdkl.ncs.android.middleware.model.vo.FramePartVO
+import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
 import org.json.JSONArray
 
 /**
@@ -31,7 +32,7 @@ interface CallRecordsFragmentContract {
          * @From   HomeFragmentContract.View
          * @Note   展示七巧板数据
          */
-        fun renderFloor(data : ArrayList<CallingHistoryVO>)
+        fun renderFloor(data : ArrayList<InteractionVO>)
 
         /**
          * 显示事件数据

+ 21 - 2
middleware/src/main/code/com/wdkl/ncs/android/middleware/logic/presenter/nursehome/CallRecordsFragmentPresenter.kt

@@ -64,7 +64,26 @@ class CallRecordsFragmentPresenter @Inject constructor() :RxPresenter<CallRecord
 
         override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
             providerView().complete()
-            providerView().renderFloor(result as ArrayList<CallingHistoryVO>)
+            providerView().renderFloor(result as ArrayList<InteractionVO>)
+        }
+
+        override fun onErrorWithConnection(error: ExceptionHandle.ResponeThrowable, connectionQuality: ConnectionQuality) {
+            providerView().onError(error.customMessage)
+        }
+
+        override fun attachSubscribe(var1: Disposable) {
+            addDisposable(var1)
+        }
+    }
+
+    private val observer2 = object : ConnectionObserver<Any>() {
+        override fun onStartWithConnection() {
+            providerView()
+        }
+
+        override fun onNextWithConnection(result: Any, connectionQuality: ConnectionQuality) {
+            providerView().complete()
+            providerView().showEventdata(result as EventVO)
         }
 
         override fun onErrorWithConnection(error: ExceptionHandle.ResponeThrowable, connectionQuality: ConnectionQuality) {
@@ -157,7 +176,7 @@ class CallRecordsFragmentPresenter @Inject constructor() :RxPresenter<CallRecord
             return@map eventVO
         }
                 .compose(ThreadFromUtils.defaultSchedulers())
-                .subscribe(observer)
+                .subscribe(observer2)
 
     }
 

+ 6 - 7
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/TcpClient.java

@@ -2,15 +2,13 @@ package com.wdkl.ncs.android.middleware.tcp;
 
 import android.util.Log;
 
+import com.wdkl.ncs.android.component.nursehome.common.Constants;
+
 import java.util.Scanner;
 import java.util.concurrent.TimeUnit;
 
 import io.netty.bootstrap.Bootstrap;
-import io.netty.channel.Channel;
-import io.netty.channel.ChannelFuture;
-import io.netty.channel.ChannelFutureListener;
-import io.netty.channel.ChannelInitializer;
-import io.netty.channel.ChannelOption;
+import io.netty.channel.*;
 import io.netty.channel.nio.NioEventLoopGroup;
 import io.netty.channel.socket.SocketChannel;
 import io.netty.channel.socket.nio.NioSocketChannel;
@@ -63,7 +61,8 @@ public class TcpClient {
                         // LengthFieldPrepender是一个编码器,主要是在响应字节数据前面添加字节长度字段
                         socketChannel.pipeline().addLast(new LengthFieldPrepender(2));
                         //心跳包应当小于服务器间隔
-                        socketChannel.pipeline().addLast(new IdleStateHandler(0, 9, 0, TimeUnit.SECONDS));
+//                        socketChannel.pipeline().addLast(new IdleStateHandler(0, hbSeconds, 0, TimeUnit.SECONDS));
+                        socketChannel.pipeline().addLast(new IdleStateHandler(hbSeconds+1, hbSeconds, 0, TimeUnit.SECONDS));
                         socketChannel.pipeline().addLast(new StringDecoder(CharsetUtil.UTF_8));
                         socketChannel.pipeline().addLast(new StringEncoder(CharsetUtil.UTF_8));
                         socketChannel.pipeline().addLast(tcpClientHandler);
@@ -98,7 +97,7 @@ public class TcpClient {
                                 System.out.println("TcpClient 重试" + (retryTimes - 1) + "次,结束");
                                 workGroup.shutdownGracefully();
                                 //todo: 从API获取新的serverIP和serverPort,全新连接
-                                //TcpClient.getInstance().init();
+                                TcpClient.getInstance().init(Constants.Companion.getTcp_ip(), Integer.parseInt(Constants.Companion.getTcp_port()), Integer.parseInt(Constants.Companion.getReader_idle_time()));
                                 return;
                             }
                             doConnect();

+ 31 - 19
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/TcpClientHandler.java

@@ -1,5 +1,7 @@
 package com.wdkl.ncs.android.middleware.tcp;
 
+import android.util.Log;
+
 import com.wdkl.ncs.android.component.nursehome.common.Constants;
 import com.wdkl.ncs.android.middleware.tcp.channel.DeviceChannel;
 import com.wdkl.ncs.android.middleware.tcp.channel.DeviceUtil;
@@ -18,6 +20,8 @@ import io.netty.util.ReferenceCountUtil;
 
 @ChannelHandler.Sharable
 public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
+    private String TAG = TcpClientHandler.class.getSimpleName();
+
     ChannelHandlerContext ctx;
     //重连间隔
     private static Integer retrySeconds = 5;
@@ -53,23 +57,31 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
     @Override
     protected void channelRead0(ChannelHandlerContext ctx, String source) throws Exception {
         System.out.println("TcpClientHandler from server ===> " + source);
-        TcpModel tcpModel = TcpModel.getModelByJson(source);
-
-        TcpModel responseTcpModel = DeviceChannel.handleTcpReceived(tcpModel);
-        if (responseTcpModel!=null){
-            ctx.writeAndFlush(responseTcpModel.toJson());
+        if (source.equals("1")) {
+            Log.e(TAG, "收到服务器返回的心跳" + "source " + source);
         } else {
-            ReferenceCountUtil.release(source);
+            TcpModel tcpModel = TcpModel.getModelByJson(source);
+
+            TcpModel responseTcpModel = DeviceChannel.handleTcpReceived(tcpModel);
+            if (responseTcpModel != null) {
+                ctx.writeAndFlush(responseTcpModel.toJson());
+            } else {
+                ReferenceCountUtil.release(source);
+            }
         }
     }
 
     //写心跳包。没有消息发送时,每间隔一定时间会由此方法向服务端发送心跳
     @Override
     public void userEventTriggered(ChannelHandlerContext ctx, Object evt) throws Exception {
-        if (evt instanceof IdleStateEvent){
-            IdleStateEvent event = (IdleStateEvent)evt;
-            if (event.state()== IdleState.WRITER_IDLE){
+        if (evt instanceof IdleStateEvent) {
+            IdleStateEvent event = (IdleStateEvent) evt;
+            if (event.state() == IdleState.WRITER_IDLE) {
                 ctx.writeAndFlush("0");
+                //读心跳包超时执行
+            }else if (event.state() == IdleState.READER_IDLE) {
+                Log.i(TAG, "TcpClientHandler ===> pong from server failed");
+                ctx.close();
             }
         }
     }
@@ -83,8 +95,8 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
     }
 
     //发送消息,不直接调用些方法,调用TcpClient中的发送消息
-    public void sendMsg(String msg){
-        if (ctx==null){
+    public void sendMsg(String msg) {
+        if (ctx == null) {
             System.out.println("ctx is null");
             /*try {
                 Thread.sleep(1000);
@@ -98,19 +110,19 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
     }
 
     //已经连接上,中途失去连接时的处理
-    private void reConnect(final ChannelHandlerContext ctx){
-        if (totalRetryTimes>100){
+    private void reConnect(final ChannelHandlerContext ctx) {
+        if (totalRetryTimes > 100) {
             //todo: 存储数据库,并告警
         }
-        if (connected && (TcpClient.getInstance().channel != null && TcpClient.getInstance().channel.isActive())){
+        if (connected && (TcpClient.getInstance().channel != null && TcpClient.getInstance().channel.isActive())) {
             return;
         }
         totalRetryTimes++;
-        System.out.println("TcpClientHandler 总计连接次数:"+totalRetryTimes);
+        System.out.println("TcpClientHandler 总计连接次数:" + totalRetryTimes);
         retryTimes++;
-        if (retryTimes>30){
+        if (retryTimes > 30) {
             //超时3次,其它处理
-            System.out.println("TcpClientHandler 重新连接"+(retryTimes-1)+"次,结束");
+            System.out.println("TcpClientHandler 重新连接" + (retryTimes - 1) + "次,结束");
             retryTimes = 0;
             //todo: 从API获取新的serverIP和serverPort,全新连接
             //TcpClient.getInstance().init();
@@ -120,10 +132,10 @@ public class TcpClientHandler extends SimpleChannelInboundHandler<String> {
         ctx.channel().eventLoop().schedule(new Runnable() {
             @Override
             public void run() {
-                System.out.println("TcpClientHandler 重新连接,第"+retryTimes+"次");
+                System.out.println("TcpClientHandler 重新连接,第" + retryTimes + "次");
                 TcpClient.getInstance().doConnect();
                 reConnect(ctx);
             }
-        },retrySeconds*retryTimes, TimeUnit.SECONDS);
+        }, retrySeconds * retryTimes, TimeUnit.SECONDS);
     }
 }

+ 2 - 0
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/DeviceChannel.java

@@ -3,7 +3,9 @@ package com.wdkl.ncs.android.middleware.tcp.channel;
 import android.util.Log;
 
 import com.google.gson.Gson;
+import com.wdkl.ncs.android.middleware.logic.contract.nursehome.CallRecordsFragmentContract;
 import com.wdkl.ncs.android.middleware.model.vo.InteractionVO;
+import com.wdkl.ncs.android.middleware.tcp.TcpClient;
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel;
 import com.wdkl.ncs.android.middleware.tcp.enums.TcpAction;
 import com.wdkl.ncs.android.middleware.utils.MessageEvent;

+ 8 - 8
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/channel/VoiceUtil.java

@@ -14,7 +14,7 @@ public class VoiceUtil {
         return tcpModel;
     }
 
-    public static TcpModel voiceAccept(Integer fromId, Integer toId, Integer InteractionId){
+    public static TcpModel voiceAccept(Integer fromId, Integer toId,Integer InteractionId){
         TcpModel tcpModel = new TcpModel();
         tcpModel.setType(TcpType.VOICE);
         tcpModel.setAction(TcpAction.VoiceAction.ACCEPT);
@@ -24,7 +24,7 @@ public class VoiceUtil {
         return tcpModel;
     }
 
-    public static TcpModel voiceReject(Integer fromId, Integer toId, Integer InteractionId){
+    public static TcpModel voiceReject(Integer fromId, Integer toId,Integer InteractionId){
         TcpModel tcpModel = new TcpModel();
         tcpModel.setType(TcpType.VOICE);
         tcpModel.setAction(TcpAction.VoiceAction.REJECT);
@@ -34,7 +34,7 @@ public class VoiceUtil {
         return tcpModel;
     }
 
-    public static TcpModel voiceCalling(Integer fromId, Integer toId, Integer InteractionId){
+    public static TcpModel voiceCalling(Integer fromId, Integer toId,Integer InteractionId){
         TcpModel tcpModel = new TcpModel();
         tcpModel.setType(TcpType.VOICE);
         tcpModel.setAction(TcpAction.VoiceAction.CALLING);
@@ -44,7 +44,7 @@ public class VoiceUtil {
         return tcpModel;
     }
 
-    public static TcpModel voiceCancel(Integer fromId, Integer toId, Integer InteractionId){
+    public static TcpModel voiceCancel(Integer fromId, Integer toId,Integer InteractionId){
         TcpModel tcpModel = new TcpModel();
         tcpModel.setType(TcpType.VOICE);
         tcpModel.setAction(TcpAction.VoiceAction.CANCEL);
@@ -53,7 +53,7 @@ public class VoiceUtil {
         return tcpModel;
     }
 
-    public static TcpModel voiceHandoff(Integer fromId, Integer toId, Integer InteractionId){
+    public static TcpModel voiceHandoff(Integer fromId, Integer toId,Integer InteractionId){
         TcpModel tcpModel = new TcpModel();
         tcpModel.setType(TcpType.VOICE);
         tcpModel.setAction(TcpAction.VoiceAction.HANDOFF);
@@ -63,7 +63,7 @@ public class VoiceUtil {
         return tcpModel;
     }
 
-    public static TcpModel voiceSuccess(Integer fromId, Integer toId, Integer InteractionId){
+    public static TcpModel voiceSuccess(Integer fromId, Integer toId,Integer InteractionId){
         TcpModel tcpModel = new TcpModel();
         tcpModel.setType(TcpType.VOICE);
         tcpModel.setAction(TcpAction.VoiceAction.SUCCESS);
@@ -73,7 +73,7 @@ public class VoiceUtil {
         return tcpModel;
     }
 
-    public static TcpModel voiceFailed(Integer fromId, Integer toId, Integer InteractionId){
+    public static TcpModel voiceFailed(Integer fromId, Integer toId,Integer InteractionId){
         TcpModel tcpModel = new TcpModel();
         tcpModel.setType(TcpType.VOICE);
         tcpModel.setAction(TcpAction.VoiceAction.FAILED);
@@ -83,7 +83,7 @@ public class VoiceUtil {
         return tcpModel;
     }
 
-    public static TcpModel voiceTransfer(Integer fromId, Integer toId, Integer InteractionId){
+    public static TcpModel voiceTransfer(Integer fromId, Integer toId,Integer InteractionId){
         TcpModel tcpModel = new TcpModel();
         tcpModel.setType(TcpType.VOICE);
         tcpModel.setAction(TcpAction.VoiceAction.TRANSFER);

+ 1 - 1
middleware/src/main/code/com/wdkl/ncs/android/middleware/tcp/dto/TcpModel.java

@@ -203,7 +203,7 @@ public class TcpModel implements Serializable {
         //数据反转
         String dataString = dTcpModel.getData().toString();
         JSONObject dataJSON = JSON.parseObject(dataString);
-        DeviceDO dDeviceDO = JSON.parseObject(dataJSON.getString("device"), DeviceDO.class);
+        DeviceDO dDeviceDO = JSON.parseObject(dataJSON.getString("device"),DeviceDO.class);
 
         System.out.println("json de show === " + dTcpModel.action + " -- " + dDeviceDO.getEthMac());
     }

+ 1 - 1
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/activity/NurseHomeActivity.kt

@@ -96,7 +96,7 @@ class NurseHomeActivity  : BaseActivity<NurseHomeActivityPresenter, ActivityNurs
         currentFragmentThree = callRecordsFragment
         supportFragmentManager.beginTransaction().add(R.id.left_framlyout, callRecordsFragment, "").commit()
 
-        presenter.loadData(0)
+        //presenter.loadData(0)
 
         if (Build.VERSION.SDK_INT >= 23) {
             if (!Settings.canDrawOverlays(this)) {

+ 12 - 4
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/adapter/CallRecordsItemAdapter.kt

@@ -11,11 +11,12 @@ import com.wdkl.ncs.android.lib.adapter.BaseDelegateAdapter
 import com.wdkl.ncs.android.lib.utils.BaseRecyclerViewHolder
 import com.wdkl.ncs.android.middleware.model.dos.CallingHistoryDO
 import com.wdkl.ncs.android.middleware.model.vo.CallingHistoryVO
+import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
 
 /**
  * 呼叫记录适配器
  */
-class CallRecordsItemAdapter(val data:ArrayList<CallingHistoryVO>) : BaseDelegateAdapter<BaseRecyclerViewHolder<AdapterCallRecordsItemBinding>,CallingHistoryVO>(){
+class CallRecordsItemAdapter(val data:ArrayList<InteractionVO>) : BaseDelegateAdapter<BaseRecyclerViewHolder<AdapterCallRecordsItemBinding>,InteractionVO>(){
      var TAG = CallRecordsItemAdapter::class.java.getSimpleName()
 
     /**
@@ -53,10 +54,17 @@ class CallRecordsItemAdapter(val data:ArrayList<CallingHistoryVO>) : BaseDelegat
      * 绑定数据
      */
     override fun onBindViewHolder(holder: BaseRecyclerViewHolder<AdapterCallRecordsItemBinding>?, position: Int) {
-        holder?.bind {
-            binding ->
+        holder?.bind { binding ->
             val itemData = getItem(position)
-            binding.nameTv.text = itemData.customer_name
+
+            //判断是呼入还是呼出 1 分机到主机 2主机到分机
+            if (itemData.actionDirectionType == 1) {
+                binding.sickbedTv.text = itemData.toFrameFullName
+                binding.nameTv.text = itemData.toMemberName
+            } else if (itemData.actionDirectionType == 2 || itemData.actionDirectionType == 3) {
+                binding.sickbedTv.text = itemData.fromFrameFullName
+                binding.nameTv.text = itemData.fromMemberName
+            }
         }
     }
 

+ 4 - 3
nursehome/src/main/java/com/wdkl/ncs/android/component/nursehome/fragment/CallRecordsFragment.kt

@@ -20,6 +20,7 @@ import com.wdkl.ncs.android.middleware.logic.presenter.nursehome.CallRecordsFrag
 import com.wdkl.ncs.android.middleware.model.vo.CallingHistoryVO
 import com.wdkl.ncs.android.middleware.model.vo.EventVO
 import com.wdkl.ncs.android.middleware.model.vo.FrameBedVO
+import com.wdkl.ncs.android.middleware.model.vo.InteractionVO
 import com.wdkl.ncs.android.middleware.tcp.dto.TcpModel
 import com.wdkl.ncs.android.middleware.utils.MessageEvent
 import kotlinx.android.synthetic.main.fragment_call_records.*
@@ -143,8 +144,8 @@ class CallRecordsFragment: BaseFragment<CallRecordsFragmentPresenter, FragmentCa
         mViewDataBinding.otherLinlyout.setOnClickListener(this)
         //Item监听
         adapter.setOnItemClickListener { data, position ->
-            showMessage(data.customer_name)
-            mListener?.displayPersondalInformation(data)
+            //showMessage(data.customer_name)
+            //mListener?.displayPersondalInformation(data)
         }
 //        configRefresh()
     }
@@ -188,7 +189,7 @@ class CallRecordsFragment: BaseFragment<CallRecordsFragmentPresenter, FragmentCa
      * @Note   渲染楼层
      * @param  data  数据
      */
-    override fun renderFloor(data: ArrayList<CallingHistoryVO>) {
+    override fun renderFloor(data: ArrayList<InteractionVO>) {
         Log.e("TAG","CallRecordsFragment走了。。。"+data.size)
 
 //        var listData = arrayListOf<FrameDO>()

BIN
resource/src/main/res/mipmap-hdpi/launcher.png


BIN
resource/src/main/res/mipmap-mdpi/launcher.png


BIN
resource/src/main/res/mipmap-xhdpi/launcher.png


BIN
resource/src/main/res/mipmap-xxhdpi/launcher.png


BIN
resource/src/main/res/mipmap-xxxhdpi/launcher.png


+ 1 - 1
settings.gradle

@@ -1 +1 @@
-include ':app', ':common', ':welcome', ':home', ':resource', ':middleware', ':shop', ':setting', ':extra', ':hello', ':nursehome', ':starRTC', ':testdemo', ':AmDemo_R'
+include ':app', ':common', ':welcome', ':home', ':resource', ':middleware', ':shop', ':setting', ':extra', ':hello', ':nursehome', ':starRTC', ':AmDemo_R'