1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package safeluck.drive.evaluation.DB.rtktb
 
import android.content.Context
import android.text.TextUtils
import android.util.Log
import androidx.work.Worker
import androidx.work.WorkerParameters
import com.anyun.exam.lib.AYSdk
import com.anyun.exam.lib.MyLog
import com.google.gson.Gson
import org.json.JSONException
import org.json.JSONObject
import safeluck.drive.evaluation.DB.Constant
import safeluck.drive.evaluation.DB.WorkRoomDataBase
import safeluck.drive.evaluation.bean.ExamPlatformData
import safeluck.drive.evaluation.im.IMSClientBootstrap
import safeluck.drive.evaluation.platformMessage.PlatFormConstant
 
class RTKConfigUpdateWorker(context:Context, workerParams: WorkerParameters) :Worker(context, workerParams){
 
    val TAG:String = "RTKConfigUpdateWorker"
    private val gson = Gson()
 
    override fun doWork(): Result {
 
        var data = inputData.getString(Constant.RTK_CONFIG_UPDATE_JSON)
        MyLog.i(PlatFormConstant.RTK,"更新RTK_config imei phone sn="+data)
        var imei:String=""
        var phone:String=""
        var sn:String=""
        if (!TextUtils.isEmpty(data)){
            var jsonObject: JSONObject? = null
            jsonObject = JSONObject(data)
            sn = jsonObject.getString(Constant.RTK_CONFIG_SN)
            ExamPlatformData.getInstance().setPhone(sn);
            Log.i(TAG,"sn="+sn)
            imei = sn.substring(1)
            Log.i(TAG,"imei="+imei)
            /**
             * SN与电话号码的关系(以AYKJ-4为例):
            0311200200000011,前4位是设备编码,接下来4位是年月,后面8位是流水号;
            电话号码前2位固定13,第三位取SN的第4位,第4-7位取SN的年月,第8-11位取SN流水号的后4位;即13120020011
             */
            phone = sn
            Log.i(TAG,"phone="+phone)
            MyLog.i(PlatFormConstant.TAG,"重置TCP连接")
            IMSClientBootstrap.getInstance().resetConnect();
        }
        var rtkConfigDao = WorkRoomDataBase.getWorkRoomDataBase(applicationContext).rtkConfigDao.also {
            it.update(sn, imei, phone)
 
 
        }
 
        sendRtkConfigInfo(WorkRoomDataBase.getWorkRoomDataBase(applicationContext).rtkConfigDao._getRtkConfig())
        return Result.success()
    }
 
    private fun sendRtkConfigInfo(mRTKConfig: RTKConfig) {
        if (mRTKConfig != null) {
            var rtkjson = gson.toJson(mRTKConfig)
            //去除id字段
            var jsonObject: JSONObject? = null
            try {
                jsonObject = JSONObject(rtkjson)
            } catch (e: JSONException) {
                e.printStackTrace()
            }
            jsonObject!!.remove("_id")
            rtkjson = null
            rtkjson = jsonObject.toString()
            MyLog.i(TAG, "RTK配置信息:$rtkjson")
            AYSdk.getInstance().sendCmd(safeluck.drive.evaluation.Constant.PUSH_RTK_PLATFORM_INFO, rtkjson)
        } else {
            MyLog.d(TAG, "RTKConfig未取到数据")
        }
    }
 
}