ソースを参照

删除冗余文件;接入新增指纹录入-指纹图片转成dat存储、系统用户登录-指纹验证登录dat接口

Frankensteinly 8 ヶ月 前
コミット
a32e5ed3d3

BIN
app/src/main/assets/map.png


+ 15 - 0
app/src/main/java/com/grkj/iscs/model/UrlConsts.kt

@@ -201,4 +201,19 @@ object UrlConsts {
      * 获取地图参数详细信息
      */
     const val MAP_INFO = "/iscs/map/selectIsMapById"
+
+    /**
+     * 查询地图点位数据-分页
+     */
+    const val MAP_POINT_PAGE = "/iscs/map-point/getIsMapPointPage"
+
+    /**
+     * 新增指纹录入-指纹图片转成dat存储
+     */
+    const val INSERT_FINGER = "/system/user/characteristic/insertUserFingerprintDat"
+
+    /**
+     * 系统用户登录-指纹验证登录dat
+     */
+    const val LOGIN_FINGERPRINT = "/loginByFingerprintDat"
 }

+ 7 - 0
app/src/main/java/com/grkj/iscs/model/vo/FileStreamReqParam.kt

@@ -0,0 +1,7 @@
+package com.grkj.iscs.model.vo
+
+data class FileStreamReqParam(
+    val name: String,
+    val content: ByteArray,
+    val fileName: String
+)

+ 8 - 0
app/src/main/java/com/grkj/iscs/model/vo/finger/LoginFingerprintRespVO.kt

@@ -0,0 +1,8 @@
+package com.grkj.iscs.model.vo.finger
+
+data class LoginFingerprintRespVO(
+    val msg: String?,
+    val code: Int?,
+    val nickName: String?,
+    val token: String?
+)

+ 38 - 0
app/src/main/java/com/grkj/iscs/model/vo/map/MapPointPageRespVO.kt

@@ -0,0 +1,38 @@
+package com.grkj.iscs.model.vo.map
+
+data class MapPointPageRespVO(
+    val current: Int,
+    val optimizeCountSql: Boolean,
+    val orders: List<Any>,
+    val pages: Int,
+    val records: List<Record>,
+    val searchCount: Boolean,
+    val size: Int,
+    val total: Int
+) {
+    data class Record(
+        val id: Long?,
+
+        val mapId: Long?,
+
+        val mapName: String?,
+
+        val mapType: String?,
+
+        val entityId: Long?,
+
+        val entityName: String?,
+
+        val x: String?,
+
+        val y: String?,
+
+        val delFlag: String?,
+
+        val pointIcon: String?,
+
+        val pointPicture: String?,
+
+        val pointNfc: String?
+    )
+}

+ 43 - 0
app/src/main/java/com/grkj/iscs/util/CommonUtils.kt

@@ -6,11 +6,17 @@ import android.Manifest.permission.BLUETOOTH_ADVERTISE
 import android.Manifest.permission.BLUETOOTH_CONNECT
 import android.Manifest.permission.BLUETOOTH_SCAN
 import android.content.Context
+import android.graphics.Bitmap
 import android.os.Build
+import android.os.Environment
 import androidx.appcompat.app.AppCompatActivity
 import com.grkj.iscs.MyApplication
 import com.grkj.iscs.model.Constants.PERMISSION_REQUEST_CODE
 import pub.devrel.easypermissions.EasyPermissions
+import java.io.ByteArrayOutputStream
+import java.io.File
+import java.io.FileOutputStream
+import java.io.IOException
 import java.text.SimpleDateFormat
 import java.util.Locale
 
@@ -82,4 +88,41 @@ object CommonUtils {
     fun isValidHex(hexString: String): Boolean {
         return hexRegex.matches(hexString)
     }
+
+    fun bitmapToFile(bitmap: Bitmap, fileName: String): File? {
+        // 创建一个临时文件
+        val storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
+        if (!storageDir.exists()) {
+            storageDir.mkdirs()
+        }
+
+        val file = File(storageDir, fileName)
+
+        return try {
+            // 创建文件输出流
+            val fos = FileOutputStream(file)
+
+            // 将 Bitmap 压缩并写入文件
+            bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos)
+
+            // 刷新并关闭输出流
+            fos.flush()
+            fos.close()
+
+            file
+        } catch (e: IOException) {
+            e.printStackTrace()
+            null
+        }
+    }
+
+    fun bitmapToByteArray(bitmap: Bitmap, format: Bitmap.CompressFormat = Bitmap.CompressFormat.PNG, quality: Int = 100): ByteArray {
+        val stream = ByteArrayOutputStream()
+
+        // 将 Bitmap 压缩并写入到 ByteArrayOutputStream 中
+        bitmap.compress(format, quality, stream)
+
+        // 获取字节数组
+        return stream.toByteArray()
+    }
 }

+ 65 - 0
app/src/main/java/com/grkj/iscs/util/NetApi.kt

@@ -4,14 +4,17 @@ import com.grkj.iscs.BusinessManager
 import com.grkj.iscs.MyApplication
 import com.grkj.iscs.model.Token
 import com.grkj.iscs.model.UrlConsts
+import com.grkj.iscs.model.vo.FileStreamReqParam
 import com.grkj.iscs.model.vo.card.CardInfoRespVO
 import com.grkj.iscs.model.vo.dept.DeptListRespVO
+import com.grkj.iscs.model.vo.finger.LoginFingerprintRespVO
 import com.grkj.iscs.model.vo.key.KeyInfoRespVO
 import com.grkj.iscs.model.vo.lock.LockInfoRespVO
 import com.grkj.iscs.model.vo.lock.LockTakeUpdateReqVO
 import com.grkj.iscs.model.vo.machinery.MachineryDetailRespVO
 import com.grkj.iscs.model.vo.machinery.MachineryPageRespVO
 import com.grkj.iscs.model.vo.map.MapInfoRespVO
+import com.grkj.iscs.model.vo.map.MapPointPageRespVO
 import com.grkj.iscs.model.vo.sop.SopInfoRespVO
 import com.grkj.iscs.model.vo.sop.SopPageRespVO
 import com.grkj.iscs.model.vo.ticket.LockPointUpdateReqVO
@@ -788,4 +791,66 @@ object NetApi {
             }, isGet = true, isAuth = true
         )
     }
+
+    /**
+     * 查询地图点位数据-分页
+     *
+     * @param mapId 机柜固定传1,物资柜固定传4
+     */
+    fun getMapPointPage(pages: Int, size: Int, mapId: Long, callBack: (MapPointPageRespVO?) -> Unit) {
+        NetHttpManager.getInstance().doRequestNet(
+            UrlConsts.MAP_POINT_PAGE,
+            false,
+            mapOf(
+                "pages" to pages,
+                "size" to size,
+                "mapId" to mapId
+            ),
+            { res, _, _ ->
+                res?.let {
+                    callBack.invoke(getRefBean(it))
+                }
+            }, isGet = true, isAuth = true
+        )
+    }
+
+    /**
+     * 新增指纹录入-指纹图片转成dat存储
+     */
+    fun insertFinger(userName: String, fileList: MutableList<FileStreamReqParam>?, callBack: (Boolean) -> Unit) {
+        NetHttpManager.getInstance().doRequestNet(
+            UrlConsts.INSERT_FINGER,
+            false,
+            mapOf(
+                "userName" to userName
+            ),
+            { res, _, _ ->
+                res?.let {
+                    callBack.invoke(true)
+                } ?: run {
+                    callBack.invoke(false)
+                }
+            }, isGet = false, isAuth = true, fileList = fileList
+        )
+    }
+
+    /**
+     * 系统用户登录-指纹验证登录dat
+     */
+    fun loginByFingerprint(fileList: MutableList<FileStreamReqParam>, callBack: (Boolean) -> Unit) {
+        NetHttpManager.getInstance().doRequestNet(
+            UrlConsts.LOGIN_FINGERPRINT,
+            false,
+            mapOf<String, String>(),
+            { res, _, _ ->
+                res?.let {
+                    val resp: LoginFingerprintRespVO? = it.toBean(LoginFingerprintRespVO::class.java)
+                    Token(resp?.token!!, 0).saveToSp(MyApplication.instance!!.applicationContext)
+                    callBack.invoke(true)
+                } ?: run {
+                    callBack.invoke(false)
+                }
+            }, isGet = false, isAuth = false, fileList = fileList
+       )
+    }
 }

+ 9 - 1
app/src/main/java/com/grkj/iscs/util/NetHttpManager.kt

@@ -18,6 +18,7 @@ import com.grkj.iscs.model.Constants.DEVICE_TYPE_PORTABLE
 import com.grkj.iscs.model.Token
 import com.grkj.iscs.model.UrlConsts
 import com.grkj.iscs.model.UrlConsts.LOGIN_CARD
+import com.grkj.iscs.model.vo.FileStreamReqParam
 import com.grkj.iscs.util.log.LogUtil
 import okhttp3.logging.HttpLoggingInterceptor
 import java.io.IOException
@@ -146,7 +147,8 @@ class NetHttpManager {
         bodyParas: Map<String, *>,
         callback: (HttpResult.Body?, String?, Int) -> Unit,
         isGet: Boolean, isAuth: Boolean,
-        mapperCallBack: ((Mapper) -> Unit)? = null
+        mapperCallBack: ((Mapper) -> Unit)? = null,
+        fileList: MutableList<FileStreamReqParam>? = null,
     ) {
         var httpTask = myHttp.async(urlStr).setOnException {
             evictHttpConnectPool(it)
@@ -211,9 +213,15 @@ class NetHttpManager {
 //            }
         if (isGet) {
             httpTask.addUrlPara(bodyParas)
+            fileList?.forEach {
+                httpTask.addFilePara(it.name, it.content, it.fileName)
+            }
             httpTask.get()
         } else {
             httpTask.addBodyPara(bodyParas)
+            fileList?.forEach {
+                httpTask.addFilePara(it.name, it.content, it.fileName)
+            }
             httpTask.post()
         }
     }

+ 0 - 1
app/src/main/java/com/grkj/iscs/view/activity/test/fingerprint/FingerPrintActivity.kt

@@ -388,7 +388,6 @@ class FingerPrintActivity : BaseActivity<ActivityFingerPrintBinding>() {
                 retVal = ZKFingerService.save(regTemp, strUid)
                 if (0 == retVal) {
                     val strFeature = Base64.encodeToString(regTemp, 0, ret, Base64.NO_WRAP)
-                    println("haha : $strFeature")
                     dbManager.insertUser(strUid, strFeature)
                     setResult("enroll succ")
                 } else {

+ 1 - 1
app/src/main/java/com/grkj/iscs/view/presenter/HomePresenter.kt

@@ -19,7 +19,7 @@ class HomePresenter : BasePresenter<IHomeView>() {
                                     BusinessManager.registerConnectListener(it) { isDone, bleBean ->
                                         if (isDone && bleBean != null) {
                                             Executor.delayOnMain(300) {
-                                                BusinessManager.getCurrentStatus(4, BusinessManager.getBleDeviceByMac(keyBean.mac)?.bleDevice!!)
+                                                BusinessManager.getCurrentStatus(4, bleBean.bleDevice)
                                             }
                                         }
                                     }