From a5d862051462a5fcc2717b405896a6d424002e54 Mon Sep 17 00:00:00 2001
From: riku <risaku@163.com>
Date: 星期二, 22 十二月 2020 15:43:06 +0800
Subject: [PATCH] 1. 调整了数控实体的存储位置; 2. 新增数据表“媒体文件类型别名表”; 3. 修改任意拍模块,将图片分类改为根据场景类型动态生成,同时新增修改分类别名功能; 4. 优化子任务选择界面的任务排序方式,按照“待开始”、“执行中”、“未执行”的顺序进行排序;
---
app/src/main/java/cn/flightfeather/thirdapp/repository/ProblemRepository.kt | 153 +++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 148 insertions(+), 5 deletions(-)
diff --git a/app/src/main/java/cn/flightfeather/thirdapp/repository/ProblemRepository.kt b/app/src/main/java/cn/flightfeather/thirdapp/repository/ProblemRepository.kt
index 107a22c..95d70ed 100644
--- a/app/src/main/java/cn/flightfeather/thirdapp/repository/ProblemRepository.kt
+++ b/app/src/main/java/cn/flightfeather/thirdapp/repository/ProblemRepository.kt
@@ -1,16 +1,26 @@
package cn.flightfeather.thirdapp.repository
-import cn.flightfeather.thirdapp.bean.*
-import cn.flightfeather.thirdapp.common.net.ResponseBodyCallBack
-import cn.flightfeather.thirdapp.common.net.ResultCallBack
-import cn.flightfeather.thirdapp.common.net.ResultObserver
-import cn.flightfeather.thirdapp.common.net.RetrofitFactory
+import android.annotation.SuppressLint
+import android.os.Environment
+import cn.flightfeather.thirdapp.bean.entity.*
+import cn.flightfeather.thirdapp.bean.vo.ProblemlistVo
+import cn.flightfeather.thirdapp.common.net.*
import cn.flightfeather.thirdapp.httpservice.InspectionService
+import cn.flightfeather.thirdapp.httpservice.MediaFileService
+import cn.flightfeather.thirdapp.httpservice.ProblemListService
import cn.flightfeather.thirdapp.repository.dao.DomainDao
import cn.flightfeather.thirdapp.repository.dao.MediaFileDao
import cn.flightfeather.thirdapp.repository.dao.ProblemTypeDao
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.schedulers.Schedulers
import okhttp3.ResponseBody
+import retrofit2.Call
+import retrofit2.Callback
import retrofit2.Response
+import java.io.BufferedInputStream
+import java.io.File
+import java.io.FileOutputStream
+import java.io.IOException
/**
* @author riku
@@ -20,6 +30,7 @@
class ProblemRepository {
val retrofit = RetrofitFactory.instance.retrofit
+ val retrofitImage = RetrofitFactory.instance.retrofitImage
private val domainDao = DomainDao()
private val problemTypeDao = ProblemTypeDao()
private val mediaFileDao = MediaFileDao()
@@ -93,6 +104,14 @@
}
/**
+ * 鏇存柊闂
+ */
+ fun updateProblem(problem: ProblemlistVo, resultCallBack: ResultCallBack<ResponseBody>) {
+ retrofit.create(ProblemListService::class.java).updateProblemList(problem)
+ .enqueue(ResponseBodyCallBack(resultCallBack))
+ }
+
+ /**
* 鍥剧墖鏈湴缂撳瓨
*/
fun putMediaFileLocal(mediaFile: Mediafile, resultCallBack: ResultCallBack<Int>) {
@@ -111,4 +130,128 @@
})
}
+
+ /**
+ * 鑾峰彇鏈湴缂撳瓨鐨勫浘鐗�
+ */
+ fun getMediaFileLocal(problemGuid: String, resultCallBack: ResultCallBack<List<Mediafile>>) {
+ val dbService = mediaFileDao.getMediaFileByProblemId(problemGuid).map {
+ Response.success(it)
+ }
+
+ RetrofitFactory.executeResult(dbService, object : ResultObserver<List<Mediafile>>() {
+ override fun onSuccess(result: List<Mediafile>?) {
+ resultCallBack.onSuccess(result)
+ }
+
+ override fun onFailure(e: Throwable, isNetWorkError: Boolean) {
+ resultCallBack.onFailure()
+ }
+ })
+ }
+
+ /**
+ * 涓嬭浇闂鍥剧墖
+ */
+ fun downloadMediaFile(mediaFile: Mediafile, resultCallBack: ResultCallBack<File>) {
+ val url: String = mediaFile.extension1 + mediaFile.guid + ".jpg"
+ retrofitImage.create(MediaFileService::class.java).downloadImage(url)
+ .enqueue(object : Callback<ResponseBody> {
+ override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
+ resultCallBack.onFailure()
+ }
+
+ override fun onResponse(call: Call<ResponseBody>, response: Response<ResponseBody>) {
+ if (response.body() != null) {
+ val file = writeResponseBodyToDisk(mediaFile, response.body())
+ if (file?.exists() == true) {
+ resultCallBack.onSuccess(file)
+ } else {
+ resultCallBack.onFailure()
+ }
+ } else {
+ resultCallBack.onFailure()
+ }
+ }
+ })
+
+ }
+
+ /**
+ * 鍒犻櫎闂鍥剧墖
+ */
+ @SuppressLint("CheckResult")
+ fun deleteMediaFile(mediaFile: Mediafile, resultCallBack: ResultCallBack<Boolean>) {
+ if (mediaFile.remark == "鏈笂浼�") {
+ mediaFileDao.deleteMediaFile(mediaFile.guid)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe{
+ if (it) {
+ resultCallBack.onSuccess(it)
+ }
+ }
+ } else if (mediaFile.remark == "宸蹭笂浼�") {
+ retrofit.create(MediaFileService::class.java).deleteMediaFile(mediaFile.guid)
+ .enqueue(object : Callback<ResponseBody?> {
+ override fun onResponse(call: Call<ResponseBody?>, response: Response<ResponseBody?>) {
+ if (response.body() != null) {
+ mediaFileDao.deleteMediaFile(mediaFile.guid)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe{
+ if (it) {
+ resultCallBack.onSuccess(it)
+ }
+ }
+ } else if (response.errorBody() != null) {
+ resultCallBack.onFailure()
+ }
+ }
+
+ override fun onFailure(call: Call<ResponseBody?>, t: Throwable) {
+ resultCallBack.onFailure()
+ }
+ })
+ }
+ }
+
+ /**
+ * 鍒犻櫎闂
+ */
+ fun deleteProblem(problemId: String, resultCallBack: ResultCallBack2<Int>) {
+ retrofit.create(ProblemListService::class.java).deleteProblem(problemId)
+ .enqueue(ResponseBodyCallBack2(resultCallBack))
+ }
+
+ //灏嗕笅杞界殑鍥剧墖鍐欏叆纾佺洏
+ private fun writeResponseBodyToDisk(mediafile: Mediafile, body: ResponseBody?): File? {
+ if (body == null) {
+ return null
+ }
+ return try {
+ val `is` = body.byteStream()
+ var file = File(Environment.getExternalStorageDirectory(), mediafile.path + mediafile.description)
+ if (file.exists()) {
+ file.delete()
+ file = File(Environment.getExternalStorageDirectory(), mediafile.path + mediafile.description)
+ }
+ file.parentFile.mkdirs()
+ val fos = FileOutputStream(file)
+ val bis = BufferedInputStream(`is`)
+ val buffer = ByteArray(1024)
+ var len: Int
+ while (bis.read(buffer).also { len = it } != -1) {
+ fos.write(buffer, 0, len)
+ }
+ fos.flush()
+ fos.close()
+ bis.close()
+ `is`.close()
+ file
+ } catch (e: IOException) {
+ e.printStackTrace()
+ null
+ }
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3