Explorar o código

1.人脸同步前先清除底库
2.新增准入字段判断

JaycePC hai 2 semanas
pai
achega
f05ef5234b

+ 1 - 1
app/build.gradle

@@ -19,7 +19,7 @@ android {
         minSdk 31
         targetSdk 35
         versionCode 2
-        versionName "2.16"
+        versionName "2.19"
 
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
         room {

+ 7 - 2
app/src/main/java/core/ui/activity/BaseSignActivity.kt

@@ -48,7 +48,12 @@ abstract class BaseSignActivity<VB : ViewBinding> : BaseCountDownActivity<VB>()
         // 一类人员:巡查签到
         if ("1" == LabApp.userVo?.pageType) {
             if (LabApp.userVo?.isBigDev == true) {
-                PickSignCheckDialog(this, false, true, true) { type ->
+                PickSignCheckDialog(
+                    this,
+                    LabApp.userVo?.isAdmit == true,
+                    LabApp.userVo?.isDutyUser == "1",
+                    LabApp.userVo?.isBigDev == true
+                ) { type ->
                     if (SignType.PATROL.code == type) {
                         dispatchPatrolSign(authType)
                     } else if (SignType.BIG_DEV.code == type) {
@@ -62,7 +67,7 @@ abstract class BaseSignActivity<VB : ViewBinding> : BaseCountDownActivity<VB>()
             if (LabApp.userVo?.isDutyUser == "1" || LabApp.userVo?.isBigDev == true) {
                 PickSignCheckDialog(
                     this,
-                    LabApp.userVo?.pageType == "2",
+                    LabApp.userVo?.isAdmit == true,
                     LabApp.userVo?.isDutyUser == "1",
                     LabApp.userVo?.isBigDev == true
                 ) { type ->

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

@@ -17,6 +17,7 @@ public class UserVo implements Parcelable {
     public String isWhite;
     public String isDutyUser; // 是否值班人员 1-是 0-不是
     public boolean isBigDev;// 是否处于大仪预约时段
+    public boolean isAdmit;//  是否准入
 
     public UserVo() {
     }
@@ -29,6 +30,7 @@ public class UserVo implements Parcelable {
         isWhite = in.readString();
         isDutyUser = in.readString();
         isBigDev = in.readBoolean();
+        isAdmit = in.readBoolean();
     }
 
     @Override
@@ -40,6 +42,7 @@ public class UserVo implements Parcelable {
         dest.writeString(isWhite);
         dest.writeString(isDutyUser);
         dest.writeBoolean(isBigDev);
+        dest.writeBoolean(isAdmit);
     }
 
     @Override
@@ -69,6 +72,7 @@ public class UserVo implements Parcelable {
                 ", isWhite='" + isWhite + '\'' +
                 ", isDutyUser='" + isDutyUser + '\'' +
                 ", isBigDev=" + isBigDev +
+                ", isAdmit=" + isAdmit +
                 '}';
     }
 }

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

@@ -23,6 +23,7 @@ import com.hjq.permissions.OnPermissionCallback;
 import com.hjq.permissions.Permission;
 import com.hjq.permissions.XXPermissions;
 import com.kongzue.dialogx.dialogs.InputDialog;
+import com.njlz.face.FaceUtils;
 
 import org.json.JSONObject;
 
@@ -172,7 +173,7 @@ public class InitActivity extends BaseActivity<ActivityInitBinding> {
         ThreadUtils.executeByCached(new ThreadUtils.SimpleTask<Object>() {
             @Override
             public Object doInBackground() throws Throwable {
-                SyncFaceTool.INSTANCE.doWork();
+                SyncFaceTool.INSTANCE.doWork(true);
                 LogUtils.d("人脸同步结束");
                 return null;
             }

+ 64 - 58
app/src/main/java/xn/xxp/app/SyncFaceTool.java

@@ -63,75 +63,81 @@ public enum SyncFaceTool {
     }
 
     @WorkerThread
-    public void doWork() {
+    public void doWork(boolean isInit) {
 //        if (AppUtils.isAppDebug()) {
 //            SyncFaceDeBugTool.INSTANCE.doWork();
 //        } else {
-            if (ThreadUtils.isMainThread()) {
-                LogUtils.e("该方法必须在子线程调用");
-                return;
-            }
-            Activity topActivity = ActivityUtils.getTopActivity();
-            if (topActivity instanceof ChoiceAuthActivity) {
-                LogUtils.d("人脸识别中,不去同步人脸!");
-                return;
-            }
-            if (topActivity instanceof FaceListActivity) {
-                LogUtils.d("正在查阅底库,不去同步人脸!");
-                return;
-            }
-            if (isSyncFace) {
-                LogUtils.d("正在同步人脸");
-                return;
-            }
-            if (null == downloadManager) {
-                downloadManager = (DownloadManager) Utils.getApp().getApplicationContext().getSystemService(Context.DOWNLOAD_SERVICE);
+        if (ThreadUtils.isMainThread()) {
+            LogUtils.e("该方法必须在子线程调用");
+            return;
+        }
+        Activity topActivity = ActivityUtils.getTopActivity();
+        if (topActivity instanceof ChoiceAuthActivity) {
+            LogUtils.d("人脸识别中,不去同步人脸!");
+            return;
+        }
+        if (topActivity instanceof FaceListActivity) {
+            LogUtils.d("正在查阅底库,不去同步人脸!");
+            return;
+        }
+        if (isSyncFace) {
+            LogUtils.d("正在同步人脸");
+            return;
+        }
+        if (null == downloadManager) {
+            downloadManager = (DownloadManager) Utils.getApp().getApplicationContext().getSystemService(Context.DOWNLOAD_SERVICE);
+        }
+        // 初始化
+        isSyncFace = true;
+        try {
+            // 同步人脸
+            FaceUtils.getInstance().init(Utils.getApp());
+            FaceConfig faceConfig = FaceUtils.getInstance().getFaceConfig();
+            LogUtils.json("底库配置", faceConfig);
+            if (isInit) {
+                // 删除先前的底库
+                FaceUtils.getInstance().deleteAllFace();
+                FaceDao faceDao = RoomTool.getInstance().faceDao();
+                faceDao.clear();
             }
-            // 初始化
-            isSyncFace = true;
-            try {
-                // 同步人脸
-                FaceUtils.getInstance().init(Utils.getApp());
-                FaceConfig faceConfig = FaceUtils.getInstance().getFaceConfig();
-                LogUtils.json("底库配置", faceConfig);
-                EventBus.getDefault().register(this);
-                // http请求同步
-                List<Pair<String, String>> faceUrlList = getLabFaceList();
-                if (null != faceUrlList && !faceUrlList.isEmpty()) {
-                    // 下载人脸
-                    List<FaceBuildBean> faceBuildBeanList = downloadPicAndBuild(faceUrlList);
-                    LogUtils.json("需要变更的人脸", faceBuildBeanList);
+            EventBus.getDefault().register(this);
+            // http请求同步
+            List<Pair<String, String>> faceUrlList = getLabFaceList();
+            if (null != faceUrlList && !faceUrlList.isEmpty()) {
+                // 下载人脸
+                List<FaceBuildBean> faceBuildBeanList = downloadPicAndBuild(faceUrlList);
+                LogUtils.json("需要变更的人脸", faceBuildBeanList);
+                if (null != faceBuildBeanList && !faceBuildBeanList.isEmpty()) {
                     // 人脸建模
-                    if (null != faceBuildBeanList && !faceBuildBeanList.isEmpty()) {
-                        FaceUtils.getInstance().faceBuild(faceBuildBeanList);
-                        lastBuildTime = System.currentTimeMillis();
-                        // 等待人脸建模
-                        while (!isBuildFaceEnd) {
-                            Thread.sleep(10);
-                            if (System.currentTimeMillis() - lastBuildTime > 2000) {
-                                isBuildFaceEnd = true;
-                            }
+                    FaceUtils.getInstance().faceBuild(faceBuildBeanList);
+                    lastBuildTime = System.currentTimeMillis();
+                    // 等待人脸建模
+                    while (!isBuildFaceEnd) {
+                        Thread.sleep(10);
+                        if (System.currentTimeMillis() - lastBuildTime > 2000) {
+                            isBuildFaceEnd = true;
                         }
                     }
-                    LogUtils.json(RoomTool.getInstance().faceDao().getAll());
-                } else {
-                    LogUtils.d("不需要下载变更人脸");
                 }
-                // 删除本地多余的人脸
-                delRedundantFace();
-                LogUtils.d("底库", FaceUtils.getInstance().getAllFaceId());
+                LogUtils.json(RoomTool.getInstance().faceDao().getAll());
+            } else {
+                LogUtils.d("不需要下载变更人脸");
+            }
+            // 删除本地多余的人脸
+            delRedundantFace();
+            LogUtils.d("底库", FaceUtils.getInstance().getAllFaceId());
+        } catch (Exception e) {
+            LogUtils.e(Log.getStackTraceString(e));
+        } finally {
+            try {
+                // 销毁
+                EventBus.getDefault().unregister(this);
+                FaceUtils.getInstance().destroy();
             } catch (Exception e) {
                 LogUtils.e(Log.getStackTraceString(e));
-            } finally {
-                try {
-                    // 销毁
-                    EventBus.getDefault().unregister(this);
-                    FaceUtils.getInstance().destroy();
-                } catch (Exception e) {
-                    LogUtils.e(Log.getStackTraceString(e));
-                }
             }
-            isSyncFace = false;
+        }
+        isSyncFace = false;
 //        }
     }
 

+ 1 - 1
app/src/main/java/xn/xxp/receiver/TimeTickReceiver.java

@@ -22,7 +22,7 @@ public class TimeTickReceiver extends BroadcastReceiver {
         ThreadUtils.executeByCached(new ThreadUtils.SimpleTask<Object>() {
             @Override
             public Object doInBackground() throws Throwable {
-                SyncFaceTool.INSTANCE.doWork();
+                SyncFaceTool.INSTANCE.doWork(false);
                 return null;
             }