package com.basic.security.manager; import android.text.TextUtils; import com.basic.security.fragment.FaceListFragment; import com.basic.security.model.ModelAdapter; import com.basic.security.model.Org; import com.basic.security.model.Person; import com.basic.security.model.Visit; import com.basic.security.utils.FacePosition; import com.basic.security.utils.SocketUtil; import com.couchbase.lite.Ordering; import java.util.Date; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; public class VisitManager extends BaseManager { public static Map getLastVisitTimeMap = new HashMap<>(); static long getLastVisitTimeLastTime = 0; static List upLoadVisitRecordToESQueue = new LinkedList(); static String saveVisitRecordLastId = ""; static long saveVisitRecordLastTime = 0; //获取最后访问时间 public static String getLastVisitTime(String person_id) { String lastTime = getLastVisitTimeMap.get(person_id); // if (lastTime == null || (System.currentTimeMillis() - getLastVisitTimeLastTime > 3000)) { List visit_list = findList("select * from visit where person_id='" + person_id + "' order by visit_time desc limit 1"); if (visit_list.size() > 0) { lastTime = visit_list.get(0).getString("visit_time"); } else { lastTime = ""; } getLastVisitTimeMap.put(person_id, lastTime); getLastVisitTimeLastTime = System.currentTimeMillis(); // } return lastTime; } // public static String BASE_URL = "http://192.168.1.182:9200/"; // @POST("videopersons/perVideoPicture") //上传访问的人脸到FastDFS数据库 然后获取该图片在FastDFS库中的路径 然后调用后台接口 存储该人的数据到er-lang数据库 public static void upLoadVisitRecordToES(FacePosition facePosition) { // new Thread(){ // public void run() { // try { // class UpLoadVisitRecordToESHelper { // ModelAdapter savedPerson; // public void execute() { // findPerson(); // sendVisitRecordToES(); // } // public void findPerson() { // savedPerson = PersonManager.findById(facePosition.compareFeatureResult.personId); // } // public void sendVisitRecordToES() { // // ModelAdapter device = DeviceSettingManager.findById(DeviceManager.getDeviceId()); // String deviceName = ""; // String deviceAddress = ""; // if (device != null) { // deviceName = MutableDocumentUtil.getString(device, "name"); // deviceAddress = MutableDocumentUtil.getString(device, "address"); // } // RequestParams params = new RequestParams("http://192.168.1.182:9200/videopersons/perVideoPicture"); // long time = System.currentTimeMillis(); // String picPath = FastDFSUtil.upLoadVisitorPic(facePosition.faceJpgData, time); // params.addBodyParameter("personPicUrl", picPath); // params.addBodyParameter("picAddress", deviceAddress); // params.addBodyParameter("picDate", DateUtil.formatTime(time, "yyyy-MM-dd HH:mm:ss")); // params.addBodyParameter("picSmUrl", picPath); // params.addBodyParameter("indeviceid", DeviceManager.getDeviceId()); // params.addBodyParameter("idcard", MutableDocumentUtil.getString(savedPerson, "id_card_number")); // params.addBodyParameter("personId", savedPerson.getId()); // params.addBodyParameter("indevicename", deviceName); // x.http().post(params, new Callback.CommonCallback() { // public void onSuccess(Object result) { // System1.out.println("上传访问记录成功"); // } // public void onError(Throwable ex, boolean isOnCallback) {} // public void onCancelled(CancelledException cex) {} // public void onFinished() {} // }); // } // } //// new UpLoadVisitRecordToESHelper().execute(); // } catch (Exception e) { // e.printStackTrace(); // } // } // }.start(); } public static void saveVisitRecord(ModelAdapter person, String verify_result) { if (person == null) { return; } String person_id = person.getString(Person.id); long saveVisitRecordCurrentTime = System.currentTimeMillis(); if (person_id != null) { ModelAdapter visit = new ModelAdapter(); visit.setString("table", "visit"); String respondentId = person.getString(Person.respondent_ids); if (!TextUtils.isEmpty(respondentId)) { ModelAdapter respondent = PersonManager.findPersonById(respondentId); if (respondent != null && !TextUtils.isEmpty(respondent.getString(Person.id))) { visit.setString(Visit.target_id_number, respondent.getString(Person.id_card_number)); List identityNameByPersonId = PersonIdentityManager.findIdentityNameByPersonId(respondentId); if (identityNameByPersonId.size() != 0) { visit.setString(Visit.target_identity, TextUtils.join(",", identityNameByPersonId)); } else { visit.setString(Visit.target_identity, ""); } visit.setString(Visit.target_phone, respondent.getString(Person.phone)); String orgId = respondent.getString(Person.org_id); if (!TextUtils.isEmpty(orgId)) { try { String orgName = FaceListFragment.treeAdapter.treeNodeList.orgIdOrgMap.get(orgId).getString(Org.name); visit.setString(Visit.target_org_name, orgName); } catch (Exception e) { e.printStackTrace(); } } } } visit.setString(Visit.target_person_id, person.getString(Person.respondent_ids)); visit.setString(Visit.target_person_name, person.getString(Person.respondent_names)); String orgId = person.getString(Person.org_id); visit.setString(Visit.target_org_id, orgId); visit.setString("person_id", person_id); visit.setString("person_name", person.getString("name")); visit.setString("person_phone", person.getString("phone")); visit.setString("person_id_number", person.getString("id_card_number")); List identityNameByPersonId = PersonIdentityManager.findIdentityNameByPersonId(person_id); if (identityNameByPersonId.size() != 0) { visit.setString("person_type", TextUtils.join(",", identityNameByPersonId)); } else { visit.setString("person_type", ""); } visit.setString("visit_time", new Date().getTime() + ""); visit.setString("verify_result", verify_result); visit.setString("device_id", DeviceManager.getDeviceId()); ModelAdapter deviceSetting = DeviceManager.getDevice(); if (deviceSetting != null) { visit.setString("device_name", deviceSetting.getString("name")); } visit.setString("company_id", CompanyManager.getCompanyId()); save(visit); saveVisitRecordLastId = person_id; saveVisitRecordLastTime = saveVisitRecordCurrentTime; SocketUtil.rpcCallSaveVisit(visit); } } public static List queryVisitRecords(String selectIdentity, String key_word, boolean descend, long start_time, long end_time, int start, int count) { String sql = "select * from visit where visit_time >= '" + start_time + "' and visit_time <= '" + end_time + "'"; if (!TextUtils.isEmpty(key_word)) { sql += " and ( person_name like '%" + key_word + "%' or person_id_number like '%" + key_word + "%'or person_phone like '%" + key_word + "%' )"; } if (!"全部".equals(selectIdentity)) { sql += " and person_type like '%" + selectIdentity + "%'"; } Ordering[] orderings = new Ordering[1]; sql += " order by visit_time "; if (descend) { sql += " desc "; orderings[0] = Ordering.property("visit_time").descending();// 时间倒叙 } else { sql += " asc "; orderings[0] = Ordering.property("visit_time").ascending(); // 时间正序 } sql += " limit " + start + ", " + count; return findList(sql); } }