drew преди 6 години
родител
ревизия
1c8a4860ac

+ 125 - 2
app/src/main/assets/mockData/RoomMeetings.json

@@ -29,8 +29,131 @@
                 "beginDate": "2020-01-14",
                 "beginTime": 1578973500000,
                 "endTime": 1578975300000,
-                "beginTimeStr": "2020-01-14 11:45:00",
-                "endTimeStr": "2020-01-16 12:15:00",
+                "beginTimeStr": "2020-01-15 11:45:00",
+                "endTimeStr": "2020-01-15 12:15:00",
+                "createUser": {
+                    "userId": "002332",
+                    "userName": "魏巍"
+                },
+                "attendees": [],
+                "room": {
+                    "uuid": "a406396e-1c25-434a-a575-38e0cb2de8fe",
+                    "roomNo": "ZZ001041085-0-1-3",
+                    "roomName": "财富管理室",
+                    "siteCode": "ZZ001041085",
+                    "siteName": null,
+                    "branchDeptCode": "ZZ001041107",
+                    "branchDeptName": "上海分公司",
+                    "remark": null,
+                    "deviceCode": null,
+                    "devicePassword": null,
+                    "capacity": null,
+                    "provideService": null,
+                    "roomBizNum": null,
+                    "function": null,
+                    "spaceType": null,
+                    "spaceDesc": null,
+                    "state": null
+                },
+                "meetingPurpose": "洽谈、会议",
+                "welcomeText": "熊先生",
+                "attendeeNum": "2",
+                "meetingService": "茶水服务、无线投屏",
+                "remind": false
+            },
+            {
+                "uuid": "f2e7ef94-aff6-4e04-93c4-fd2328b351ef",
+                "createTime": 1578980611878,
+                "subject": "测试3",
+                "description": null,
+                "status": "NEW",
+                "beginDate": "2020-01-14",
+                "beginTime": 1578973500000,
+                "endTime": 1578975300000,
+                "beginTimeStr": "2020-01-15 13:15:00",
+                "endTimeStr": "2020-01-15 14:15:00",
+                "createUser": {
+                    "userId": "002332",
+                    "userName": "魏巍"
+                },
+                "attendees": [],
+                "room": {
+                    "uuid": "a406396e-1c25-434a-a575-38e0cb2de8fe",
+                    "roomNo": "ZZ001041085-0-1-3",
+                    "roomName": "财富管理室",
+                    "siteCode": "ZZ001041085",
+                    "siteName": null,
+                    "branchDeptCode": "ZZ001041107",
+                    "branchDeptName": "上海分公司",
+                    "remark": null,
+                    "deviceCode": null,
+                    "devicePassword": null,
+                    "capacity": null,
+                    "provideService": null,
+                    "roomBizNum": null,
+                    "function": null,
+                    "spaceType": null,
+                    "spaceDesc": null,
+                    "state": null
+                },
+                "meetingPurpose": "洽谈、会议",
+                "welcomeText": "王先生",
+                "attendeeNum": "2",
+                "meetingService": "茶水服务、无线投屏",
+                "remind": false
+            },
+            {
+                "uuid": "f2e7ef94-aff6-4e04-93c4-fd2328b351ef",
+                "createTime": 1578980611878,
+                "subject": "测试3",
+                "description": null,
+                "status": "NEW",
+                "beginDate": "2020-01-14",
+                "beginTime": 1578973500000,
+                "endTime": 1578975300000,
+                "beginTimeStr": "2020-01-15 12:45:00",
+                "endTimeStr": "2020-01-15 13:15:00",
+                "createUser": {
+                    "userId": "002332",
+                    "userName": "魏巍"
+                },
+                "attendees": [],
+                "room": {
+                    "uuid": "a406396e-1c25-434a-a575-38e0cb2de8fe",
+                    "roomNo": "ZZ001041085-0-1-3",
+                    "roomName": "财富管理室",
+                    "siteCode": "ZZ001041085",
+                    "siteName": null,
+                    "branchDeptCode": "ZZ001041107",
+                    "branchDeptName": "上海分公司",
+                    "remark": null,
+                    "deviceCode": null,
+                    "devicePassword": null,
+                    "capacity": null,
+                    "provideService": null,
+                    "roomBizNum": null,
+                    "function": null,
+                    "spaceType": null,
+                    "spaceDesc": null,
+                    "state": null
+                },
+                "meetingPurpose": "洽谈、会议",
+                "welcomeText": "王先生",
+                "attendeeNum": "2",
+                "meetingService": "茶水服务、无线投屏",
+                "remind": false
+            },
+            {
+                "uuid": "f2e7ef94-aff6-4e04-93c4-fd2328b351ef",
+                "createTime": 1578980611878,
+                "subject": "测试3",
+                "description": null,
+                "status": "NEW",
+                "beginDate": "2020-01-14",
+                "beginTime": 1578973500000,
+                "endTime": 1578975300000,
+                "beginTimeStr": "2020-01-15 09:45:00",
+                "endTimeStr": "2020-01-15 10:15:00",
                 "createUser": {
                     "userId": "002332",
                     "userName": "魏巍"

+ 1 - 1
app/src/main/java/com/ht/gate/DoorService.java

@@ -67,7 +67,7 @@ public class DoorService extends Service {
             Log.d(TAG, "socket opened");
         } catch (Exception e) {
             e.printStackTrace();
-            Toast.makeText(this, "门禁地址设置错误", Toast.LENGTH_SHORT).show();
+            //Toast.makeText(this, "门禁地址设置错误", Toast.LENGTH_SHORT).show();
         }
     }
 

+ 20 - 1
app/src/main/java/com/ht/gate/MainActivity.java

@@ -18,6 +18,10 @@ import android.util.TypedValue;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.animation.Animation;
+import android.view.animation.LinearInterpolator;
+import android.view.animation.RotateAnimation;
+import android.widget.ImageView;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
@@ -59,6 +63,9 @@ public class MainActivity extends AppCompatActivity {
     RelativeLayout rlMeetings;
     @BindView(R.id.rv_meetings)
     RecyclerView rvMeetings;
+    @BindView(R.id.iv_arrow)
+    ImageView ivArrow;
+    private MyLinearLayoutManager layoutManager;
     private MeetingAdapter adapter;
     private DoorService.DoorBinder mDoorBinder;
 
@@ -151,7 +158,9 @@ public class MainActivity extends AppCompatActivity {
         });
         bindService(new Intent(this, DoorService.class), connection, BIND_AUTO_CREATE);
         adapter = new MeetingAdapter(this);
-        rvMeetings.setLayoutManager(new LinearLayoutManager(this));
+        layoutManager = new MyLinearLayoutManager(this);
+        layoutManager.setCanScroll(false);
+        rvMeetings.setLayoutManager(layoutManager);
         rvMeetings.setAdapter(adapter);
         ((MyApplication) getApplication()).updateMeetings();
     }
@@ -168,6 +177,15 @@ public class MainActivity extends AppCompatActivity {
         int dp108 = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 108, getResources().getDisplayMetrics());
         layoutParams.height = layoutParams.height < dp108 ? dp108 : dp36;
         rlMeetings.setLayoutParams(layoutParams);
+
+        layoutManager.setCanScroll(!(layoutParams.height < dp108));
+
+        Animation animation = new RotateAnimation(layoutParams.height < dp108 ? 180 : 0, layoutParams.height < dp108 ? 0 : 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
+        animation.setFillAfter(true);
+        animation.setDuration(200);
+        animation.setInterpolator(new LinearInterpolator());
+        animation.setRepeatCount(0);
+        ivArrow.startAnimation(animation);
     }
 
     @Subscribe(threadMode = ThreadMode.MAIN)
@@ -251,6 +269,7 @@ public class MainActivity extends AppCompatActivity {
             tvRoomName.setText(MyApplication.roomInfo.getRoomName());
             tvRoomNum.setText(MyApplication.roomInfo.getRoomBizNum());
         }
+        updateMeetings();
         updateStatus();
     }
 

+ 17 - 0
app/src/main/java/com/ht/gate/MyApplication.java

@@ -18,6 +18,7 @@ import org.greenrobot.eventbus.EventBus;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.List;
 import java.util.Locale;
@@ -101,6 +102,22 @@ public class MyApplication extends Application {
                         public void onResponse(@NonNull Call<List<RoomMeetings>> call, @NonNull Response<List<RoomMeetings>> response) {
                             if (response.code() == 200) {
                                 todayMeetings = response.body();
+                                if (todayMeetings != null) {
+                                    for (RoomMeetings todayMeeting : todayMeetings) {
+                                        if (todayMeeting.getMeetings() != null) {
+                                            todayMeeting.getMeetings().sort((o1, o2) -> {
+                                                try {
+                                                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA);
+                                                    Date date1 = sdf.parse(o1.getBeginTimeStr());
+                                                    Date date2 = sdf.parse(o2.getBeginTimeStr());
+                                                    return date1.compareTo(date2);
+                                                } catch (Exception e) {
+                                                    return 0;
+                                                }
+                                            });
+                                        }
+                                    }
+                                }
                                 EventBus.getDefault().post(Constants.EVENT_MEETINGS);
                             } else {
                                 try {

+ 35 - 0
app/src/main/java/com/ht/gate/MyLinearLayoutManager.java

@@ -0,0 +1,35 @@
+package com.ht.gate;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import androidx.recyclerview.widget.LinearLayoutManager;
+
+public class MyLinearLayoutManager extends LinearLayoutManager {
+    private boolean canScroll = true;
+
+    public MyLinearLayoutManager(Context context) {
+        super(context);
+    }
+
+    public MyLinearLayoutManager(Context context, int orientation, boolean reverseLayout) {
+        super(context, orientation, reverseLayout);
+    }
+
+    public MyLinearLayoutManager(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    public boolean isCanScroll() {
+        return canScroll;
+    }
+
+    public void setCanScroll(boolean canScroll) {
+        this.canScroll = canScroll;
+    }
+
+    @Override
+    public boolean canScrollVertically() {
+        return canScroll;
+    }
+}

+ 1 - 1
app/src/main/java/com/ht/gate/SettingsActivity.java

@@ -80,7 +80,7 @@ public class SettingsActivity extends AppCompatActivity {
         Room room = Room.fromBase64(sharedPreferences.getString(Constants.PREF_ROOM_INFO, null));
         if (room != null) {
             tvTitle.setText(room.getRoomName() + room.getRoomBizNum());
-            tvSpaceId.setText(room.getRoomNo());
+            tvSpaceId.setText(room.getDeviceCode());
         }
         tvAddress.setText(sharedPreferences.getString(PREF_KEY_ADDRESS, ""));
     }

+ 48 - 8
app/src/main/java/com/ht/gate/WelcomeActivity.java

@@ -10,7 +10,6 @@ import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
 import android.content.ServiceConnection;
-import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
@@ -21,6 +20,10 @@ import android.util.TypedValue;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.view.animation.Animation;
+import android.view.animation.LinearInterpolator;
+import android.view.animation.RotateAnimation;
 import android.widget.ImageView;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
@@ -35,11 +38,9 @@ import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.ThreadMode;
 
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
-import java.util.Locale;
 import java.util.Timer;
 import java.util.TimerTask;
 
@@ -89,11 +90,15 @@ public class WelcomeActivity extends AppCompatActivity {
     RelativeLayout rlJobYear;
     @BindView(R.id.tv_job_year)
     TextView tvJobYear;
+    @BindView(R.id.iv_arrow)
+    ImageView ivArrow;
 
     private MeetingAdapter adapter;
     private DoorService.DoorBinder mDoorBinder;
     private Meeting meeting;
     private EmpInfo empInfo;
+    private Timer finishTimer;
+    private MyLinearLayoutManager layoutManager;
 
     private ServiceConnection connection = new ServiceConnection() {
         @Override
@@ -161,7 +166,9 @@ public class WelcomeActivity extends AppCompatActivity {
 
         bindService(new Intent(this, DoorService.class), connection, BIND_AUTO_CREATE);
         adapter = new MeetingAdapter(this);
-        rvMeetings.setLayoutManager(new LinearLayoutManager(this));
+        layoutManager = new MyLinearLayoutManager(this);
+        layoutManager.setCanScroll(false);
+        rvMeetings.setLayoutManager(layoutManager);
         rvMeetings.setAdapter(adapter);
 
         if (empInfo.getHalfBodyPhoto() != null) {
@@ -177,9 +184,12 @@ public class WelcomeActivity extends AppCompatActivity {
             } else if (meeting.getWelcomeText().length() <= 8) {
                 tvWelcome.setText("欢迎\n" + meeting.getWelcomeText());
                 tvWelcome.setTextSize(TypedValue.COMPLEX_UNIT_SP, 55);
-            } else {
+            } else if (meeting.getWelcomeText().length() <= 10) {
                 tvWelcome.setText("欢迎\n" + meeting.getWelcomeText());
                 tvWelcome.setTextSize(TypedValue.COMPLEX_UNIT_SP, 44);
+            } else {
+                tvWelcome.setText("欢迎\n" + meeting.getWelcomeText());
+                tvWelcome.setTextSize(TypedValue.COMPLEX_UNIT_SP, 33);
             }
         }
         tvAdviserName.setText(empInfo.getUserName());
@@ -199,19 +209,33 @@ public class WelcomeActivity extends AppCompatActivity {
             rlJobYear.setVisibility(View.GONE);
         } else {
             tvCertNo.setText("执业证书编号:" + empInfo.getCertifications().get(0).getCertificateNumber());
-            int year = (int) ((System.currentTimeMillis() - empInfo.getCertifications().get(0).getCertificateAcquisitionTime()) / 1000 / 60 / 60 / 24 / 365);
+            int year;
+            if (empInfo.getCertifications().get(0).getCertificateAcquisitionTime() == 0) {
+                year = 0;
+            } else {
+                year = (int) ((System.currentTimeMillis() - empInfo.getCertifications().get(0).getCertificateAcquisitionTime()) / 1000 / 60 / 60 / 24 / 365);
+            }
             if (year < 3) {
                 rlJobYear.setVisibility(View.GONE);
             } else {
                 tvJobYear.setText(year + "年");
             }
         }
+        scheduleFinish();
+    }
 
+    private void scheduleFinish() {
         try {
             Date endTime = Utils.parseDateTime(meeting.getEndTimeStr());
             endTime.setTime(endTime.getTime() + 60 * 1000);
-            Timer timer = new Timer();
-            timer.schedule(new TimerTask() {
+
+            if (finishTimer != null) {
+                finishTimer.cancel();
+                finishTimer = null;
+            }
+
+            finishTimer = new Timer();
+            finishTimer.schedule(new TimerTask() {
                 @Override
                 public void run() {
                     finish();
@@ -234,6 +258,15 @@ public class WelcomeActivity extends AppCompatActivity {
         int dp108 = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 108, getResources().getDisplayMetrics());
         layoutParams.height = layoutParams.height < dp108 ? dp108 : dp36;
         rlMeetings.setLayoutParams(layoutParams);
+
+        layoutManager.setCanScroll(!(layoutParams.height < dp108));
+
+        Animation animation = new RotateAnimation(layoutParams.height < dp108 ? 180 : 0, layoutParams.height < dp108 ? 0 : 180, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
+        animation.setFillAfter(true);
+        animation.setDuration(200);
+        animation.setInterpolator(new LinearInterpolator());
+        animation.setRepeatCount(0);
+        ivArrow.startAnimation(animation);
     }
 
     @Subscribe(threadMode = ThreadMode.MAIN)
@@ -248,6 +281,11 @@ public class WelcomeActivity extends AppCompatActivity {
     }
 
     private void updateMeetings() {
+        if (adapter.getItemCount() <= 1) {
+            ivArrow.setVisibility(View.GONE);
+        } else {
+            ivArrow.setVisibility(View.VISIBLE);
+        }
         if (MyApplication.todayMeetings.isEmpty()) {
             rlMeetings.setVisibility(View.GONE);
         } else {
@@ -285,6 +323,8 @@ public class WelcomeActivity extends AppCompatActivity {
         decorView.setSystemUiVisibility(uiOptions);
         tvRoomName.setText(MyApplication.roomInfo.getRoomName());
         tvRoomNum.setText(MyApplication.roomInfo.getRoomBizNum());
+        updateMeetings();
+        scheduleFinish();
         updateStatus();
     }
 

BIN
app/src/main/res/mipmap-xhdpi/icon_arrow.png


BIN
app/src/main/res/mipmap-xxhdpi/icon_arrow.png


BIN
app/src/main/res/mipmap-xxxhdpi/icon_arrow.png