|
|
@@ -68,7 +68,7 @@ public class FaceSocket {
|
|
|
|
|
|
public FaceSocket() {
|
|
|
// 启动定时任务
|
|
|
- //System.out.println("启动获取考勤数据定时任务前");
|
|
|
+ System.out.println("启动获取考勤数据定时任务前");
|
|
|
scheduler.scheduleAtFixedRate(this::sendPeriodicRequests, 0, 5, TimeUnit.MINUTES); // 每5分钟发送一次请求
|
|
|
}
|
|
|
|
|
|
@@ -128,7 +128,7 @@ public class FaceSocket {
|
|
|
return;
|
|
|
}
|
|
|
String msgType = json.getString("msgType");
|
|
|
- if(!UPLOADRECORD.equals(msgType)) {
|
|
|
+ if(!UPLOADRECORD.equals(msgType) && !GetRecordByPasstime.equals(msgType)) {
|
|
|
System.out.println("收到消息:"+message);
|
|
|
}
|
|
|
switch (msgType) {
|
|
|
@@ -164,13 +164,33 @@ public class FaceSocket {
|
|
|
faceRec.setSerialNo(json.getString("deviceNo"));
|
|
|
FileUtil.convertBase64ToImage(faceRec.getFace(), "face", "jpg");
|
|
|
faceRec.setPersonCode(id);
|
|
|
- faceRec.setCreateTime(new Date());
|
|
|
+ //faceRec.setCreateTime(new Date());
|
|
|
+ String passTime = json.getString("passTime");
|
|
|
+ Date passTimeDate = DateUtil.stringToDate(passTime, Constant.DATETIME_FORMATE);
|
|
|
+ faceRec.setCreateTime(passTimeDate);
|
|
|
try {
|
|
|
- System.out.println(faceRec.getPersonName() + "打卡,"+faceRec);
|
|
|
- recordService.add(faceRec);
|
|
|
- if(!json.getString("name").contains("陌生人")) {
|
|
|
- attendanceRecordService.insertFaceRecord(faceRec);
|
|
|
- }
|
|
|
+ for(String key:uidTableMap.keySet()){
|
|
|
+ Map<String,String> params = new HashMap<String,String>();
|
|
|
+ params.put("msgType","uploadRecordResp");
|
|
|
+ params.put("msgID", json.getString("msgID"));
|
|
|
+ params.put("deviceNo", json.getString("deviceNo"));
|
|
|
+ params.put("errorCode","100");
|
|
|
+ params.put("controlState", "");
|
|
|
+ params.put("msg", "");
|
|
|
+ Session sess = uidTableMap.get(key);
|
|
|
+ if(sess.isOpen()) {
|
|
|
+ sess.getBasicRemote().sendText(StringUtil.findJsonStr(params));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ System.out.println(faceRec.getPersonName() + "打卡,"+faceRec);
|
|
|
+ String searchDate = DateUtil.dateToString(passTimeDate,Constant.DATETIME_SHOR_FORMATE);
|
|
|
+ List<FaceRecord> faceRecords = recordService.query(faceRec.getSerialNo(), searchDate, 0, faceRec.getPersonName());
|
|
|
+ if(faceRecords == null || faceRecords.size()==0){
|
|
|
+ recordService.add(faceRec);
|
|
|
+ if(!json.getString("name").contains("陌生人")) {
|
|
|
+ attendanceRecordService.insertFaceRecord(faceRec);
|
|
|
+ }
|
|
|
+ }
|
|
|
} catch (Exception e) {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
@@ -380,10 +400,8 @@ public class FaceSocket {
|
|
|
}
|
|
|
|
|
|
private void sendPeriodicRequests() {
|
|
|
- try {
|
|
|
- //System.out.println("考勤数据定时任务执行中");
|
|
|
- for(String key:uidTableMap.keySet()){
|
|
|
- //System.out.println("考勤数据准备发送onlineGetRecordPasstimeList");
|
|
|
+ try {
|
|
|
+ for(String key:uidTableMap.keySet()){
|
|
|
String msgID = StringUtil.getSeq().toString(); // 生成msgID
|
|
|
// 获取5分钟前的时间
|
|
|
Calendar calendar = Calendar.getInstance();
|
|
|
@@ -394,9 +412,7 @@ public class FaceSocket {
|
|
|
|
|
|
// 获取当前时间
|
|
|
Date currentDate = new Date();
|
|
|
- String currentDateStr = DateUtil.dateToString(currentDate, Constant.DATETIME_LONG_FORMATE);
|
|
|
-
|
|
|
- //requestMsgIDToTimestamp.put(msgID, timestamp); // 存储请求时间戳
|
|
|
+ String currentDateStr = DateUtil.dateToString(currentDate, Constant.DATETIME_LONG_FORMATE);
|
|
|
JSONObject request = new JSONObject();
|
|
|
request.put("msgType", "onlineGetRecordPasstimeList");
|
|
|
request.put("msgID", msgID);
|
|
|
@@ -407,48 +423,32 @@ public class FaceSocket {
|
|
|
request.put("idNumber", "");
|
|
|
//request.put("snapTimeStart", null);
|
|
|
//request.put("snapTimeEnd", null);
|
|
|
- //request.put("idNumber", null);
|
|
|
- System.out.println(request.toJSONString());
|
|
|
+ //request.put("idNumber", null);
|
|
|
Session sess = uidTableMap.get(key);
|
|
|
if(sess.isOpen()) {
|
|
|
- //System.out.println("考勤数据发送onlineGetRecordPasstimeList");
|
|
|
sess.getBasicRemote().sendText(request.toJSONString());
|
|
|
}
|
|
|
- }
|
|
|
- //sendRecordByPasstimeRequest("20250124111919000");
|
|
|
+ }
|
|
|
}catch(Exception ex) {
|
|
|
- //System.out.println("考勤数据发送onlineGetRecordPasstimeList错误");
|
|
|
ex.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void handlePasstimeListResp(JSONObject json) {
|
|
|
- /*String msgID = json.getString("msgID");
|
|
|
- Long requestTimestamp = requestMsgIDToTimestamp.remove(msgID);
|
|
|
- if (requestTimestamp == null || System.currentTimeMillis() - requestTimestamp > 5 * 60 * 1000) { // 请求已过时(例如,5分钟内未响应)
|
|
|
- return;
|
|
|
- }*/
|
|
|
- //System.out.println("考勤数据接收onlineGetRecordPasstimeListResp");
|
|
|
- JSONArray passtimeList = json.getJSONArray("passtimeList");
|
|
|
- //System.out.println(passtimeList);
|
|
|
- for (Object passTimeObj : passtimeList) {
|
|
|
- //System.out.println("循环考勤时间");
|
|
|
- String passTime = (String) passTimeObj;
|
|
|
- //System.out.println(passTime);
|
|
|
+ private void handlePasstimeListResp(JSONObject json) {
|
|
|
+ JSONArray passtimeList = json.getJSONArray("passtimeList");
|
|
|
+ for (Object passTimeObj : passtimeList) {
|
|
|
+ String passTime = (String) passTimeObj;
|
|
|
sendRecordByPasstimeRequest(passTime);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
private void sendRecordByPasstimeRequest(String passTime) {
|
|
|
- try {
|
|
|
- //System.out.println("考勤数据准备发送onlineGetRecordByPasstime 111111");
|
|
|
- for(String key:uidTableMap.keySet()){
|
|
|
- //System.out.println("考勤数据准备发送onlineGetRecordByPasstime 22222");
|
|
|
+ try {
|
|
|
+ for(String key:uidTableMap.keySet()){
|
|
|
JSONObject request = new JSONObject();
|
|
|
request.put("msgType", "onlineGetRecordByPasstime");
|
|
|
request.put("msgID", StringUtil.getSeq().toString());
|
|
|
request.put("passTime", passTime);
|
|
|
- System.out.println(request.toJSONString());
|
|
|
Session sess = uidTableMap.get(key);
|
|
|
if(sess.isOpen()) {
|
|
|
sess.getBasicRemote().sendText(request.toJSONString());
|
|
|
@@ -461,44 +461,36 @@ public class FaceSocket {
|
|
|
|
|
|
private void handleRecordByPasstimeResp(JSONObject json) {
|
|
|
// 处理响应数据
|
|
|
- new Thread() {
|
|
|
- @Override
|
|
|
- public void run() {
|
|
|
- //System.out.println("考勤数据接收onlineGetRecordByPasstimeResp");
|
|
|
- recordService =(RecordService)SpringUtil.getApplicationContext().getBean("recordService");
|
|
|
- attendanceRecordService =(AttendanceRecordService)SpringUtil.getApplicationContext().getBean("attendanceRecordService");
|
|
|
- FaceRecord faceRec = new FaceRecord();
|
|
|
- String id = json.getString("idNumber");
|
|
|
- faceRec.setPersonName(json.getString("name"));
|
|
|
- faceRec.setFace(json.getString("recognitionPhoto"));
|
|
|
- faceRec.setAccessType("onlineGetRecordByPasstimeResp");
|
|
|
- faceRec.setCardType(0);
|
|
|
- faceRec.setDetail(json.getString("comparePoint"));
|
|
|
- faceRec.setPass(json.getInteger("compareResult"));
|
|
|
- faceRec.setSerialNo(json.getString("deviceNo"));
|
|
|
- FileUtil.convertBase64ToImage(faceRec.getFace(), "face", "jpg");
|
|
|
- faceRec.setPersonCode(id);
|
|
|
-
|
|
|
- String passTime = json.getString("passTime");
|
|
|
- Date passTimeDate = DateUtil.stringToDate(passTime, Constant.DATETIME_FORMATE);
|
|
|
- faceRec.setCreateTime(passTimeDate);
|
|
|
- try {
|
|
|
- String searchDate = DateUtil.dateToString(passTimeDate,Constant.DATETIME_SHOR_FORMATE);
|
|
|
- List<FaceRecord> faceRecords = recordService.query(faceRec.getSerialNo(), searchDate, 0, faceRec.getPersonName());
|
|
|
- if(faceRecords == null || faceRecords.size()==0){
|
|
|
- //System.out.println("OA中无当前考勤数据");
|
|
|
- recordService.add(faceRec);
|
|
|
- if(!json.getString("name").contains("陌生人")) {
|
|
|
- attendanceRecordService.insertFaceRecord(faceRec);
|
|
|
- }
|
|
|
- }else{
|
|
|
- //System.out.println("OA中存在当前考勤数据");
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
+ System.out.println("考勤数据接收onlineGetRecordByPasstimeResp");
|
|
|
+ recordService =(RecordService)SpringUtil.getApplicationContext().getBean("recordService");
|
|
|
+ attendanceRecordService =(AttendanceRecordService)SpringUtil.getApplicationContext().getBean("attendanceRecordService");
|
|
|
+ FaceRecord faceRec = new FaceRecord();
|
|
|
+ String id = json.getString("idNumber");
|
|
|
+ faceRec.setPersonName(json.getString("name"));
|
|
|
+ faceRec.setFace(json.getString("recognitionPhoto"));
|
|
|
+ faceRec.setAccessType("onlineGetRecordByPasstimeResp");
|
|
|
+ faceRec.setCardType(0);
|
|
|
+ faceRec.setDetail(json.getString("comparePoint"));
|
|
|
+ faceRec.setPass(json.getInteger("compareResult"));
|
|
|
+ faceRec.setSerialNo(json.getString("deviceNo"));
|
|
|
+ FileUtil.convertBase64ToImage(faceRec.getFace(), "face", "jpg");
|
|
|
+ faceRec.setPersonCode(id);
|
|
|
+
|
|
|
+ String passTime = json.getString("passTime");
|
|
|
+ Date passTimeDate = DateUtil.stringToDate(passTime, Constant.DATETIME_FORMATE);
|
|
|
+ faceRec.setCreateTime(passTimeDate);
|
|
|
+ try {
|
|
|
+ String searchDate = DateUtil.dateToString(passTimeDate,Constant.DATETIME_SHOR_FORMATE);
|
|
|
+ List<FaceRecord> faceRecords = recordService.query(faceRec.getSerialNo(), searchDate, 0, faceRec.getPersonName());
|
|
|
+ if(faceRecords == null || faceRecords.size()==0){
|
|
|
+ recordService.add(faceRec);
|
|
|
+ if(!json.getString("name").contains("陌生人")) {
|
|
|
+ attendanceRecordService.insertFaceRecord(faceRec);
|
|
|
+ }
|
|
|
}
|
|
|
- };
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
public static void main(String[] args) {
|