钉钉打卡,被覆盖代码处理

dev_dxf
dxfeng 11 months ago
parent 29871495be
commit 32f0266e80

@ -1,5 +1,6 @@
package com.engine.hrm.cmd.emmanager;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.engine.common.biz.AbstractCommonCommand;
@ -17,8 +18,6 @@ import weaver.conn.BatchRecordSet;
import weaver.conn.RecordSet;
import weaver.general.Util;
import com.engine.kq.biz.KQFormatData;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
@ -35,7 +34,7 @@ public class SynKqData4EMCmd extends AbstractCommonCommand<Map<String, Object>>
this.params = params;
}
// "checkindata": [{
// "checkindata": [{
// "userid" : "100",
// "checkin_type" : 1,
// "checkin_time" : "1492617610",
@ -63,16 +62,16 @@ public class SynKqData4EMCmd extends AbstractCommonCommand<Map<String, Object>>
RecordSet rs = new RecordSet();
BatchRecordSet bRs = new BatchRecordSet();
List<List<Object>> lsParam = new ArrayList<>();
List<List<Object>> lsParam_out = new ArrayList<>();
List<List<Object>> lsParam_out = new ArrayList<>();
List<Object> param = null;
List<Object> param_out = null;
List<Object> param_out = null;
List<List<Object>> lsDelParams = new ArrayList<>();
List<List<Object>> lsDelParams_out = new ArrayList<>();
List<List<Object>> lsDelParams_out = new ArrayList<>();
List<Object> delParams = null;
List<String> lsFormatData = new ArrayList<>();
List<String> lsFormatData_out = new ArrayList<>();
List<String> lsFormatData_out = new ArrayList<>();
List<List<Object>> lsFormatParams = new ArrayList<>();
List<Object> formatParams = null;
try {
@ -84,6 +83,12 @@ public class SynKqData4EMCmd extends AbstractCommonCommand<Map<String, Object>>
for (int i = 0; datas != null && i < datas.size(); i++) {
JSONObject data = datas.getJSONObject(i);
String userid = Util.null2String(data.getString("userid"));
//将checkin_time放在前面是用于userid为空的时候日志的打印便于定位云桥推送的问题数据因为刚刚肉眼看了1w+的数据量,乏了
String checkin_time = Util.null2String(data.getString("checkin_time"));
if(userid.length()==0){
writeLog("userid为空或者云桥推送数据有问题:checkin_time=="+checkin_time);
continue;
}
String signtype = Util.null2String(data.getString("checkin_type"));
boolean isOutSide = false; //是否是外勤打卡数据
String outsidesign = ""; //人员所在考勤组是否开启外勤签到转考勤
@ -92,7 +97,7 @@ public class SynKqData4EMCmd extends AbstractCommonCommand<Map<String, Object>>
if (kqGroupEntity != null) {
outsidesign = kqGroupEntity.getOutsidesign();
}
String checkin_time = Util.null2String(data.getString("checkin_time"));
if(checkin_time.length()==0)continue;
String[] tmpDateTime = Util.splitString(DateUtil.getFullDate(new Date(new Long(checkin_time)* 1000L))," ");
String signdate = tmpDateTime[0].trim();
@ -107,27 +112,34 @@ public class SynKqData4EMCmd extends AbstractCommonCommand<Map<String, Object>>
String wifiname = Util.null2String(data.getString("wifiname"));
String wifimac = Util.null2String(data.getString("wifimac"));
String notes = Util.null2String(data.getString("notes"));
String deviceId = Util.null2String(data.getString("deviceId"));
String deviceInfo = "";
if(!"".equals(deviceId)){
Map<String, Object> tmpdate = new HashMap<String, Object>();
tmpdate.put("deviceId",deviceId);
deviceInfo = JSONObject.toJSONString(tmpdate);
}
String exception_type = Util.null2String(data.getString("exception_type"));
String timeResult = Util.null2String(data.getString("timeResult"));
String locationResult = Util.null2String(data.getString("locationResult"));
String memo = "";//最近一直有云桥的同步报错的问题,先干掉;"wifiname:"+wifiname+"#wifimac:"+wifimac+"#notes:"+notes;
if("1".equals(cptype)){
//企业微信打卡
if(signtype.equalsIgnoreCase("3")) isOutSide = true;
//过滤异常数据
if(exception_type.length()>0&&(exception_type.indexOf("未打卡")>=0 || exception_type.indexOf("地点异常")>=0 || exception_type.indexOf("wifi异常")>=0)){
continue;
// continue;
}
}else if("2".equals(cptype)){
//钉钉打卡
// 有一个isLegal 字段是否合法如果timeResult和locationResult都是空则不合法无效打卡数据。
// 有一个isLegal 字段是否合法如果timeResult和locationResult都是空则不合法无效打卡数据。
// 如果是不合法打卡数据不传给OA
boolean notLegal = "".equalsIgnoreCase(timeResult) && "".equals(locationResult);
if(notLegal) {
continue;
}
// continue;
}
if("Outside".equals(locationResult)) isOutSide = true;
//过滤异常数据
if("NotSigned".equals(timeResult)) continue;
@ -151,9 +163,10 @@ public class SynKqData4EMCmd extends AbstractCommonCommand<Map<String, Object>>
param.add(longitude);
param.add(latitude);
param.add(memo);
param.add(deviceInfo);
lsParam.add(param);
String formatData = userid+"|"+signdate;
String formatData = userid+"|"+signdate+"|"+signtime;
if(!lsFormatData.contains(formatData)){
lsFormatData.add(formatData);
}
@ -171,7 +184,7 @@ public class SynKqData4EMCmd extends AbstractCommonCommand<Map<String, Object>>
param_out.add("1");
lsParam_out.add(param_out);
String formatData_out = userid+"|"+signdate;
String formatData_out = userid+"|"+signdate+"|"+signtime;
if(!lsFormatData_out.contains(formatData_out)){
lsFormatData_out.add(formatData_out);
}
@ -193,7 +206,7 @@ public class SynKqData4EMCmd extends AbstractCommonCommand<Map<String, Object>>
param_out.add("1");
lsParam_out.add(param_out);
String formatData_out = userid+"|"+signdate;
String formatData_out = userid+"|"+signdate+"|"+signtime;
if(!lsFormatData_out.contains(formatData_out)){
lsFormatData_out.add(formatData_out);
}
@ -210,9 +223,10 @@ public class SynKqData4EMCmd extends AbstractCommonCommand<Map<String, Object>>
param.add(longitude);
param.add(latitude);
param.add(memo);
param.add(deviceInfo);
lsParam.add(param);
String formatData = userid+"|"+signdate;
String formatData = userid+"|"+signdate+"|"+signtime;
if(!lsFormatData.contains(formatData)){
lsFormatData.add(formatData);
}
@ -239,6 +253,7 @@ public class SynKqData4EMCmd extends AbstractCommonCommand<Map<String, Object>>
delParams = new ArrayList<>();
delParams.add(formatData[0]);
delParams.add(formatData[1]);
delParams.add(formatData[2]);
lsDelParams.add(delParams);
String resourceId = formatData[0];
@ -255,28 +270,29 @@ public class SynKqData4EMCmd extends AbstractCommonCommand<Map<String, Object>>
overtimeMap.put(resourceId, overtimeList);
}
}
for(int i=0;lsFormatData_out!=null&&i<lsFormatData_out.size();i++){
for(int i=0;lsFormatData_out!=null&&i<lsFormatData_out.size();i++){
String[] formatData = Util.splitString(lsFormatData_out.get(i),"|");
delParams = new ArrayList<>();
delParams.add(formatData[0]);
delParams.add(formatData[1]);
delParams.add(formatData[2]);
lsDelParams_out.add(delParams);
//使用executeBatchSql删除不了暂时用这种方法
sql = " delete from mobile_sign where isImport='1' and operater ='"+formatData[0]+"' and operate_date = '"+formatData[1]+"'";
sql = " delete from mobile_sign where isImport='1' and operater ='"+formatData[0]+"' and operate_date = '"+formatData[1]+"' and operate_time='"+formatData[2]+"'";
rs.executeUpdate(sql);
}
//删除本次同步数据
sql = " delete from hrmschedulesign where (signfrom='EMSyn' or signfrom = 'EMSyn_out') and userid =? and signdate = ? ";
//删除本次同步数据
sql = " delete from hrmschedulesign where (signfrom='EMSyn' or signfrom = 'EMSyn_out') and userid =? and signdate = ? and signtime=? ";
bRs.executeBatchSql(sql, lsDelParams);
//插入同步数据
sql = " insert into hrmschedulesign (userid,userType,signtype,signdate,signtime,signfrom,isincom,addr,longitude,latitude,memo) " +
" values(?,?,?,?,?,?,?,?,?,?,?)";
sql = " insert into hrmschedulesign (userid,userType,signtype,signdate,signtime,signfrom,isincom,addr,longitude,latitude,memo,deviceInfo) " +
" values(?,?,?,?,?,?,?,?,?,?,?,?)";
bRs.executeBatchSql(sql, lsParam);
//插入外勤同步数据
//插入外勤同步数据
sql = " insert into mobile_sign (operater,operate_type,operate_date,operate_time,longitude,latitude,address,remark,isImport) " +
" values(?,?,?,?,?,?,?,?,?)";
bRs.executeBatchSql(sql, lsParam_out);

Loading…
Cancel
Save