Browse Source

1.新增各种情况签到选择

JaycePC 2 weeks ago
parent
commit
7b5e698521

+ 60 - 10
app/src/main/java/core/ui/activity/BaseSignActivity.kt

@@ -1,12 +1,14 @@
 package core.ui.activity
 
 import android.content.Intent
+import android.os.AsyncTask
 import android.os.Bundle
 import android.util.Log
 import androidx.viewbinding.ViewBinding
 import com.blankj.utilcode.util.LogUtils
 import core.util.ifNullOrEmpty
 import http.client.ApiRepository
+import http.client.HttpTool
 import http.exception.NetException
 import http.vo.request.CommonSignInReq
 import http.vo.response.SignFaceVo
@@ -14,7 +16,7 @@ import http.vo.response.SignInCheckResp
 import org.greenrobot.eventbus.EventBus
 import xn.xxp.app.LabApp
 import xn.xxp.home.auth.AuthType
-import xn.xxp.home.auth.PickSignTypeDialog
+import xn.xxp.home.auth.PickSignCheckDialog
 import xn.xxp.home.auth.ResultEnum
 import xn.xxp.home.auth.SafetyCheckResultDialog
 import xn.xxp.home.auth.SignType
@@ -42,22 +44,39 @@ abstract class BaseSignActivity<VB : ViewBinding> : BaseCountDownActivity<VB>()
 
     protected fun dispatchSignIn(authType: AuthType) {
         LabApp.userVo ?: return
-
+        LogUtils.json("登录用户", LabApp.userVo)
+        // 一类人员:巡查签到
         if ("1" == LabApp.userVo?.pageType) {
-            // 一类人员:巡查签到
-            dispatchPatrolSign(authType)
+            if (LabApp.userVo?.isBigDev == true) {
+                PickSignCheckDialog(this, false, true, true) { type ->
+                    if (SignType.PATROL.code == type) {
+                        dispatchPatrolSign(authType)
+                    } else if (SignType.BIG_DEV.code == type) {
+                        dispatchBigDevSign(authType)
+                    }
+                }.show()
+            } else {
+                dispatchPatrolSign(authType)
+            }
         } else {
-            if ("1" == LabApp.userVo?.isDutyUser) {
-                // 值班人员:选择巡查签到/准入签到
-                PickSignTypeDialog(this) { type ->
+            if (LabApp.userVo?.isDutyUser == "1" || LabApp.userVo?.isBigDev == true) {
+                PickSignCheckDialog(
+                    this,
+                    LabApp.userVo?.pageType == "2",
+                    LabApp.userVo?.isDutyUser == "1",
+                    LabApp.userVo?.isBigDev == true
+                ) { type ->
                     if (SignType.PATROL.code == type) {
                         dispatchPatrolSign(authType)
-                    } else {
+                    } else if (SignType.ACCESS.code == type) {
                         dispatchAccessSign(authType)
+                    } else if (SignType.BIG_DEV.code == type) {
+                        dispatchBigDevSign(authType)
                     }
                 }.show()
-            } else {
-                // 其它人员:准入签到
+            }
+            // 其它人员:准入签到
+            else {
                 dispatchAccessSign(authType)
             }
         }
@@ -108,6 +127,36 @@ abstract class BaseSignActivity<VB : ViewBinding> : BaseCountDownActivity<VB>()
         }
     }
 
+    /**
+     * 大仪
+     */
+    private fun dispatchBigDevSign(authType: AuthType) {
+        showLoading("签到中...")
+        AsyncTask.execute {
+            val response = HttpTool.bigDevSignIn(labConfig.labId.toString(), LabApp.userVo.userId)
+            runOnUiThread {
+                dismissLoading()
+                if (response.isSuccessful) {
+                    EventBus.getDefault().post(OnlineUserEvent())
+                    SafetyCheckResultDialog(
+                        this,
+                        ResultEnum.SUCCESS,
+                        "签到成功",
+                        1500
+                    ).apply {
+                        setCancelable(false)
+                        setOnDismissListener { onSignInFinish(true, authType) }
+                        show()
+                    }
+                } else {
+                    LogUtils.e(response.message)
+                    showToast(response.message)
+                }
+            }
+
+        }
+    }
+
     // 准入签到检测
     private fun accessSignCheck(param: CommonSignInReq, callback: (result: SignFaceVo) -> Unit) {
         showLoading("请稍等...")
@@ -162,6 +211,7 @@ abstract class BaseSignActivity<VB : ViewBinding> : BaseCountDownActivity<VB>()
     }
 
     private fun callSignApi(signType: SignType, param: CommonSignInReq, authType: AuthType) {
+        LogUtils.d(signType, param, authType)
         showLoading("签到中...")
         val disposable = ApiRepository.commonSignIn(signType.code, param)
             .subscribe({

+ 4 - 2
app/src/main/java/http/client/ApiRepository.kt

@@ -1,5 +1,6 @@
 package http.client
 
+import com.blankj.utilcode.util.LogUtils
 import http.client.factory.RetrofitFactory
 import http.exception.NetException
 import http.vo.request.*
@@ -203,10 +204,11 @@ object ApiRepository {
     fun hazardBookList(): Observable<List<HazardBook>> {
         return mLibClient.hazardBookList().schedulers()
     }
+
     /**
      * 一体机查询危化品
      */
-    fun hazardBookList(id:String): Observable<List<HazardBook>> {
+    fun hazardBookList(id: String): Observable<List<HazardBook>> {
         return mLibClient.hazardBookList(id).schedulers()
     }
 
@@ -546,7 +548,7 @@ object ApiRepository {
      *   #signInCheck(true, labId, userId)
      *   #jumpFaceSignIn(code)
      *
-     * @param signType 1-准入签到 2-巡查签到
+     * @param signType 1-准入签到 2-巡查签到 3-大仪签到
      */
     fun commonSignIn(signType: Int, param: CommonSignInReq): Observable<Boolean> {
         return if (2 == signType) {

+ 5 - 0
app/src/main/java/http/client/HttpTool.java

@@ -88,6 +88,11 @@ public final class HttpTool {
         return OkHttpUtils.getSync(deviceConfig.getBaseUrl() + "terminal/device/aio/heartbeat?deviceNo=" + devId);
     }
 
+    public static Response bigDevSignIn(String labId, String userId) throws IOException {
+        DeviceConfig deviceConfig = RoomTool.getInstance().deviceConfigDao().getDeviceConfig();
+        return OkHttpUtils.getSync(deviceConfig.getBaseUrl() + "terminal/lab/onemachine/daYiSignIn?labId=" + labId + "&userId=" + userId);
+    }
+
 
     /**
      * 设备状态

+ 2 - 1
app/src/main/java/http/client/retrofit/LabRetrofit.kt

@@ -277,10 +277,11 @@ open class LabRetrofit : LabClient {
         return apiService.hazardBookList()
             .map(this::recordsConvert)
     }
+
     /**
      * 一体机查询危化品 查询
      */
-     fun hazardBookList(id:String): Observable<List<HazardBook>> {
+    fun hazardBookList(id: String): Observable<List<HazardBook>> {
         return apiService.hazardBookList(id)
             .map(this::recordsConvert)
     }

+ 4 - 0
app/src/main/java/http/vo/response/UserVo.java

@@ -16,6 +16,7 @@ public class UserVo implements Parcelable {
     public String pageType; // 人员分类 1-1类页面  2-2类页面
     public String isWhite;
     public String isDutyUser; // 是否值班人员 1-是 0-不是
+    public boolean isBigDev;// 是否处于大仪预约时段
 
     public UserVo() {
     }
@@ -27,6 +28,7 @@ public class UserVo implements Parcelable {
         pageType = in.readString();
         isWhite = in.readString();
         isDutyUser = in.readString();
+        isBigDev = in.readBoolean();
     }
 
     @Override
@@ -37,6 +39,7 @@ public class UserVo implements Parcelable {
         dest.writeString(pageType);
         dest.writeString(isWhite);
         dest.writeString(isDutyUser);
+        dest.writeBoolean(isBigDev);
     }
 
     @Override
@@ -65,6 +68,7 @@ public class UserVo implements Parcelable {
                 ", pageType='" + pageType + '\'' +
                 ", isWhite='" + isWhite + '\'' +
                 ", isDutyUser='" + isDutyUser + '\'' +
+                ", isBigDev=" + isBigDev +
                 '}';
     }
 }

+ 1 - 0
app/src/main/java/xn/xxp/app/InitActivity.java

@@ -37,6 +37,7 @@ import http.client.HttpTool;
 import http.vo.response.LaboratoryVo;
 import io.reactivex.rxjava3.functions.Consumer;
 import xn.xxp.HomeActivity;
+import xn.xxp.home.auth.PickSignCheckDialog;
 import xn.xxp.home.setting.SettingActivity;
 import xn.xxp.room.bean.DeviceConfig;
 import xn.xxp.room.bean.LabConfig;

+ 4 - 4
app/src/main/java/xn/xxp/app/SyncFaceTool.java

@@ -64,9 +64,9 @@ public enum SyncFaceTool {
 
     @WorkerThread
     public void doWork() {
-        if (AppUtils.isAppDebug()) {
-            SyncFaceDeBugTool.INSTANCE.doWork();
-        } else {
+//        if (AppUtils.isAppDebug()) {
+//            SyncFaceDeBugTool.INSTANCE.doWork();
+//        } else {
             if (ThreadUtils.isMainThread()) {
                 LogUtils.e("该方法必须在子线程调用");
                 return;
@@ -132,7 +132,7 @@ public enum SyncFaceTool {
                 }
             }
             isSyncFace = false;
-        }
+//        }
     }
 
     private List<Pair<String, String>> getLabFaceList() {

+ 103 - 0
app/src/main/java/xn/xxp/home/auth/PickSignCheckDialog.java

@@ -0,0 +1,103 @@
+package xn.xxp.home.auth;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.os.Bundle;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+
+import androidx.annotation.NonNull;
+
+import com.blankj.utilcode.util.ClickUtils;
+
+import xn.xxp.R;
+import xn.xxp.databinding.DialogPickSignCheckBinding;
+
+public class PickSignCheckDialog extends Dialog {
+
+    private final OnSignTypeSelectedListener listener;
+    private DialogPickSignCheckBinding binding;
+    private boolean admission;
+    private boolean inspection;
+    private boolean bigDev;
+
+    /**
+     * @param admission  准入
+     * @param inspection 巡查
+     * @param bigDev     大仪
+     */
+    public PickSignCheckDialog(@NonNull Context context, boolean admission, boolean inspection, boolean bigDev, OnSignTypeSelectedListener listener) {
+        super(context, R.style.AlertDialogStyle);
+        this.listener = listener;
+        this.admission = admission;
+        this.inspection = inspection;
+        this.bigDev = bigDev;
+    }
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        binding = DialogPickSignCheckBinding.inflate(LayoutInflater.from(getContext()));
+        setContentView(binding.getRoot());
+        initWindowConfig();
+        initViews();
+    }
+
+    private void initWindowConfig() {
+        if (getWindow() != null) {
+            getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_PANEL);
+            getWindow().setLayout(
+                    ViewGroup.LayoutParams.MATCH_PARENT,
+                    ViewGroup.LayoutParams.MATCH_PARENT
+            );
+        }
+    }
+
+    private void initViews() {
+        binding.close.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+            @Override
+            public void onDebouncingClick(View v) {
+                dismiss();
+            }
+        });
+        if (admission) {
+            binding.admissionRL.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+                @Override
+                public void onDebouncingClick(View v) {
+                    dismiss();
+                    listener.onSignTypeSelected(SignType.ACCESS.getCode());
+                }
+            });
+        } else {
+            binding.admissionRL.setVisibility(View.GONE);
+        }
+        if (inspection) {
+            binding.inspectionRL.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+                @Override
+                public void onDebouncingClick(View v) {
+                    dismiss();
+                    listener.onSignTypeSelected(SignType.PATROL.getCode());
+                }
+            });
+        } else {
+            binding.inspectionRL.setVisibility(View.GONE);
+        }
+        if (bigDev) {
+            binding.bigDevRL.setOnClickListener(new ClickUtils.OnDebouncingClickListener() {
+                @Override
+                public void onDebouncingClick(View v) {
+                    dismiss();
+                    listener.onSignTypeSelected(SignType.BIG_DEV.getCode());
+                }
+            });
+        } else {
+            binding.bigDevRL.setVisibility(View.GONE);
+        }
+    }
+
+    public interface OnSignTypeSelectedListener {
+        void onSignTypeSelected(int type);
+    }
+}

+ 0 - 56
app/src/main/java/xn/xxp/home/auth/PickSignTypeDialog.kt

@@ -1,56 +0,0 @@
-package xn.xxp.home.auth
-
-import android.app.Dialog
-import android.content.Context
-import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.ViewGroup
-import android.view.WindowManager
-import xn.xxp.R
-import xn.xxp.databinding.DialogPickSignTypeBinding
-
-/**
- * 选择签到类型
- *
- * @author ReiChin_
- */
-class PickSignTypeDialog(
-    context: Context,
-    private val listener: (type: Int) -> Unit
-) :
-    Dialog(context, R.style.AlertDialogStyle) {
-
-    private val viewBinding: DialogPickSignTypeBinding by lazy {
-        DialogPickSignTypeBinding.inflate(LayoutInflater.from(context))
-    }
-
-    override fun onCreate(savedInstanceState: Bundle?) {
-        super.onCreate(savedInstanceState)
-        setContentView(viewBinding.root)
-        initWindowConfig()
-        initViews()
-    }
-
-    private fun initWindowConfig() {
-        window?.apply {
-            setType(WindowManager.LayoutParams.TYPE_APPLICATION_PANEL)
-            setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
-        }
-    }
-
-    private fun initViews() {
-        viewBinding.close.setOnClickListener {
-            dismiss()
-        }
-
-        viewBinding.patrolSign.setOnClickListener {
-            dismiss()
-            listener.invoke(SignType.PATROL.code)
-        }
-        viewBinding.accessSign.setOnClickListener {
-            dismiss()
-            listener.invoke(SignType.ACCESS.code)
-        }
-    }
-
-}

+ 2 - 1
app/src/main/java/xn/xxp/home/auth/SignType.kt

@@ -8,6 +8,7 @@ package xn.xxp.home.auth
 enum class SignType(val code: Int, val desc: String) {
 
     ACCESS(1, "准入签到"),
-    PATROL(2, "巡查签到")
+    PATROL(2, "巡查签到"),
+    BIG_DEV(3, "大仪预约")
 
 }

+ 2 - 2
app/src/main/java/xn/xxp/home/auth/fragment/CardAuthFragment.java

@@ -60,8 +60,8 @@ public class CardAuthFragment extends RcBaseFragment<FragmentAuthCardBinding> {
     }
 
     @Override
-    public void onDestroy() {
+    public void onStop() {
+        super.onStop();
         InfoUtilApi.unregisterSwingCard(swingCardCallback);
-        super.onDestroy();
     }
 }

+ 3 - 3
app/src/main/java/xn/xxp/home/auth/fragment/LzFaceAuthFragment.java

@@ -46,7 +46,6 @@ import xn.xxp.home.auth.ChoiceAuthActivity;
 import xn.xxp.room.RoomTool;
 import xn.xxp.room.bean.Face;
 import xn.xxp.room.bean.LabConfig;
-import xn.xxp.room.dao.LabConfigDao;
 
 /**
  * 览众人脸识别
@@ -107,11 +106,12 @@ public class LzFaceAuthFragment extends RcBaseFragment<FragmentAuthLzFaceBinding
         super.onPause();
     }
 
+
     @Override
-    public void onDestroyView() {
+    public void onStop() {
+        super.onStop();
         ThreadUtils.cancel(faceTask);
         ThreadUtils.cancel(labUserTask);
-        super.onDestroyView();
         EventBus.getDefault().unregister(this);
         FaceUtils.getInstance().destroy();
         LogUtils.d("览众释放");

+ 10 - 3
app/src/main/java/xn/xxp/home/auth/fragment/QrAuthFragment.java

@@ -159,13 +159,20 @@ public class QrAuthFragment extends RcBaseFragment<FragmentAuthQrBinding> {
     }
 
     @Override
-    public void onDestroyView() {
+    public void onStop() {
+        super.onStop();
         if (null != qrTimer) {
             qrTimer.cancel();
-            qrTimer = null;
         }
-        super.onDestroyView();
+    }
 
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        if (null != qrTimer) {
+            qrTimer.cancel();
+            qrTimer = null;
+        }
     }
 
     private Bitmap createQrCode(String url) {

+ 5 - 0
app/src/main/res/drawable/shape_rect_round_11_solid_0183fa.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="11dp" />
+    <solid android:color="#330183fa" />
+</shape>

+ 5 - 0
app/src/main/res/drawable/shape_rect_round_11_solid_0f9c27.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="11dp" />
+    <solid android:color="#330f9c27" />
+</shape>

+ 5 - 0
app/src/main/res/drawable/shape_rect_round_11_solid_ff8c00.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="11dp" />
+    <solid android:color="#33ff8c00" />
+</shape>

+ 119 - 0
app/src/main/res/layout/dialog_pick_sign_check.xml

@@ -0,0 +1,119 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="#B3000000"
+    android:orientation="vertical"
+    tools:ignore="PxUsage">
+
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="520px"
+        android:layout_gravity="center_horizontal"
+        android:layout_marginTop="197px"
+        android:background="@drawable/shape_rect_round_11_solid_white"
+        android:orientation="vertical">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginTop="39px"
+            android:text="请选择签到类型"
+            android:textColor="#333333"
+            android:textSize="42px" />
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_marginTop="53px"
+            android:orientation="horizontal"
+            android:paddingHorizontal="100px">
+
+            <RelativeLayout
+                android:id="@+id/admissionRL"
+                android:layout_width="353px"
+                android:layout_height="320px"
+                android:layout_marginHorizontal="32px"
+                android:background="@drawable/shape_rect_round_11_solid_0183fa">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerHorizontal="true"
+                    android:layout_marginTop="36px"
+                    android:src="@mipmap/dialog_sign_check_admission" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentBottom="true"
+                    android:layout_centerHorizontal="true"
+                    android:layout_marginBottom="24px"
+                    android:text="准入签到"
+                    android:textColor="#0183fa"
+                    android:textSize="42px" />
+            </RelativeLayout>
+
+            <RelativeLayout
+                android:id="@+id/inspectionRL"
+                android:layout_width="353px"
+                android:layout_height="320px"
+                android:layout_marginHorizontal="32px"
+                android:background="@drawable/shape_rect_round_11_solid_ff8c00">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerHorizontal="true"
+                    android:layout_marginTop="36px"
+                    android:src="@mipmap/dialog_sign_check_inspection" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentBottom="true"
+                    android:layout_centerHorizontal="true"
+                    android:layout_marginBottom="24px"
+                    android:text="巡查签到"
+                    android:textColor="#ff8c00"
+                    android:textSize="42px" />
+            </RelativeLayout>
+
+            <RelativeLayout
+                android:id="@+id/bigDevRL"
+                android:layout_width="353px"
+                android:layout_height="320px"
+                android:layout_marginHorizontal="32px"
+                android:background="@drawable/shape_rect_round_11_solid_0f9c27">
+
+                <ImageView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerHorizontal="true"
+                    android:layout_marginTop="36px"
+                    android:src="@mipmap/dialog_sign_check_big_dev" />
+
+                <TextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentBottom="true"
+                    android:layout_centerHorizontal="true"
+                    android:layout_marginBottom="24px"
+                    android:text="大仪预约"
+                    android:textColor="#0f9c27"
+                    android:textSize="42px" />
+            </RelativeLayout>
+
+        </LinearLayout>
+    </LinearLayout>
+
+    <ImageView
+        android:id="@+id/close"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_horizontal"
+        android:src="@mipmap/dialog_sign_check_close" />
+
+</LinearLayout>

BIN
app/src/main/res/mipmap-xhdpi/dialog_sign_check_admission.webp


BIN
app/src/main/res/mipmap-xhdpi/dialog_sign_check_big_dev.webp


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


BIN
app/src/main/res/mipmap-xhdpi/dialog_sign_check_inspection.webp