xuxiuxi
2017-08-01 8dd085f78e4bcfbc89ede104108cd03053183865
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
package cn.com.basic.face.service.sqlite;
 
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
 
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
 
import cn.com.basic.face.base.BaseApplication;
import cn.com.basic.face.base.MainActivity;
import cn.com.basic.face.discern.entity.OfflineSurveillance;
import cn.com.basic.face.discern.query.item.SurveillanceQueryItem;
import cn.com.basic.face.discern.query.item.UnknownQueryItem;
import cn.com.basic.face.util.FileUtil;
 
public class SurveillanceDao {
 
    public static SurveillanceDao instance = new SurveillanceDao();
    public static SurveillanceDao getInstance() {
        return instance;
    }
    //companyId
    //offline_           (headPicture, cameraInOrOut, createTime, visitId)
    public void saveOfflineUnknownToLocal(final List<SurveillanceQueryItem> bitmapList, final byte[] rawData, final String cameraInOrOut) {
        if (bitmapList == null || bitmapList.size() == 0) {
            return;
        }
        SQLiteDatabase db = null;
        try {
            String rawDataFileName = UUID.randomUUID().toString() + "";
            FileUtil.writeToFile(rawDataFileName, rawData);
            String headPicture = "";
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            String createTime = sdf.format(new Date());
            String surveillanceId = UUID.randomUUID().toString();
            String deviceId = BaseApplication.getInstance().getAndroidDevice().getDeviceId();
            MainActivity.getInstance().db.execSQL(
                    "insert into offline_surveillance(surveillance_id,device_id,raw_data_path, camera_in_or_out, create_time,device_company_id) values('" +
                            surveillanceId + "','" +
                            deviceId + "','" +
                            rawDataFileName + "','" +
                            cameraInOrOut + "','" +
                            createTime + "','" +
                            BaseApplication.getInstance().getAndroidDevice().getCompanyId() + "'" +")"
            );
 
        } catch (Exception e) {
            e.printStackTrace();
        }
 
        //人员注册可以选择本地图片
        //同步临时表
 
        //同步访客登记表
 
        //删除本地文件(循环删除)
    }
 
    public UnknownQueryItem readOfflineUnknownFromLocal() {
        UnknownQueryItem item = null;
        Cursor c = MainActivity.getInstance().db.rawQuery("select raw_data_path,camera_in_or_out,create_time from offline_surveillance order by create_time limit 1", new String[]{});
        if (c.moveToFirst()) {
            item = new UnknownQueryItem();
            item.setRawDataPath(c.getString(c.getColumnIndex("raw_data_path")));
            item.setCameraInOrOut(c.getString(c.getColumnIndex("camera_in_or_out")));
            item.setCreateTime(c.getString(c.getColumnIndex("create_time")));
        }
        return item;
    }
 
    public void removeLocalSqliteRecord(UnknownQueryItem item) {
        try {
            File file = FileUtil.getFile(item.getRawDataPath());
            if (file.exists()) {
                file.delete();
            }
            MainActivity.getInstance().db.execSQL("delete from offline_surveillance where raw_data_path='"+item.getRawDataPath()+"'");
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
 
    public boolean hasMoreOfflineSurveillance() {
        boolean hasMore = false;
        String sql = "select count(*) from offline_surveillance order by create_time ";
        Cursor c = MainActivity.getInstance().db.rawQuery(sql, new String[]{});
        if (c.moveToFirst()) {
            hasMore = c.getInt(0) > 0;
        }
        return hasMore;
    }
 
    /**
     * 加载OfflineSurllance表
     * @return
     */
    public List<OfflineSurveillance>  getSurveillanceList(){
        String sql="select surveillance_id,raw_data_path,camera_in_or_out,create_time,device_id from offline_surveillance limit 0, 10";
        List<OfflineSurveillance> list=new ArrayList<OfflineSurveillance>();
        OfflineSurveillance result=null;
        Cursor c =MainActivity.getInstance().db.rawQuery(sql,new String[]{});
        String deviceCompanyId = BaseApplication.getInstance().getAndroidDevice().getCompanyId();
        String deviceId = BaseApplication.getInstance().getAndroidDevice().getDeviceId();
        while (c.moveToNext()) {
            result=new OfflineSurveillance();
            result.setDeviceCompanyId(deviceCompanyId);
            result.setDeviceId(deviceId);
            result.setCameraInOrOut(c.getString(c.getColumnIndex("camera_in_or_out")));
            result.setCreateTime(c.getString(c.getColumnIndex("create_time")));
            result.setRawDataPath(c.getString(c.getColumnIndex("raw_data_path")));
            result.setSurveillanceId(c.getString(c.getColumnIndex("surveillance_id")));
            list.add(result);
        }
        return  list;
    }
 
    //删除已上传给服务器的数据
    public void delSurllanceList(List<OfflineSurveillance> list){
        for (OfflineSurveillance item : list) {
            String sql="delete from offline_surveillance where 1=1 and surveillance_id='"+item.getSurveillanceId()+"'";
            MainActivity.getInstance().db.execSQL(sql);
        }
    }
 
    //获取未同步数据总数
    public int  getSynDataCount(){
        String sql="select count(*) from offline_surveillance";
        Cursor c =MainActivity.getInstance().db.rawQuery(sql,new String[]{});
        c.moveToFirst();
        return c.getInt(0);
    }
}