json对象:
public class AttendanceDataRequest
{
public PageData page { get; set; } = new PageData();
public List<SearchData> filters { get; set; } = new List<SearchData>();
}
public class PageData
{
public int index { get; set; } = 100;
public int size { get; set; } = 1;
}
public class SearchData
{
public string field { get; set; }
public string value { get; set; }
}
public class GetPageData
{
public int index { get; set; }//页码
public int size { get; set; }//每页显示记录条数
public int count { get; set; }//共多少页
}
返回对象类:
public class AttendanceDataResponse
{
public int code { get; set; }
public string msg { get; set; }
public int recordCount { get; set; }//总记录数
public GetPageData page { get; set; }
public List<AttendanceDataDetailResponse> data { get; set; }
}
public class AttendanceDataDetailResponse
{
public string empCode { get; set; }//人员编号
public string empId { get; set; }//人员id
public string checkTime { get; set; }//打卡时间
public string checkAddr { get; set; }//打卡地址
}
调用接口方法:
public static string DSKQDataSync(AttendanceDataRequest model)
{
string msg = "";
int totalCount = 0;
int total = 0;
string dataJson = string.Empty;
try
{
model.page.size = 2000;
totalCount = model.page.size;
do
{
dataJson = Newtonsoft.Json.JsonConvert.SerializeObject(model);
string url = HttpApiRequest.GetDataByCode("DaShiSyncDomain");
var res = HttpApiRequest.Post<AttendanceDataResponse>(url+DaShiDataApi.CheckRecordsSearch, dataJson);
if (res.code == 0)
{
totalCount = res.data.Count;//总条数
Dictionary<string, int> dicUser = GetUserInfo();
int i = 0;
foreach (var item in res.data)
{
string empId = item.empCode;
int userId = dicUser.ContainsKey(empId) ? dicUser[empId].Parse<int>() : 0;
if (userId == 0) continue;
DateTime wkTime = item.checkTime.Parse<DateTime>();
int ex = provider.Query<HR_KQ_T_Origin>().Where(o => o.FK_UserID == userId && o.dWKTime == wkTime).Count();
if (ex > 0) continue;
HR_KQ_T_Origin origin = new HR_KQ_T_Origin();
origin.FK_MachineID = "-1";
origin.FK_WorkNo = empId;
origin.dWKTime = wkTime;
origin.sUserHostAddress = item.checkAddr;
origin.FK_UserID = userId;
origin.bNeedAnalysis = false;
provider.Query<HR_KQ_T_Origin>().Insert(origin);
i++;
}
total += i;
}
else
{
msg = string.Format("考勤数据同步失败参数:{0};错误消息:{1}", dataJson, res.msg);
addLog(msg, 0);
}
model.page.index++;
} while (model.page.size <= totalCount);
if (total > 0)
{
addLog(string.Format("考勤数据同步成功:同步考勤记录{0}条。", total), 0);
}
msg = "考勤数据同步成功。";
}
catch (Exception ex)
{
msg = "考勤数据同步异常,参数:"+dataJson+"错误信息:" + ex.Message;
addLog(msg, 0);
}
return msg;
}
接口调用处理:
AttendanceDataRequest data = new AttendanceDataRequest();
data.page.index = 1;
data.page.size = 2000;
List<SearchData> filters = new List<SearchData>();
SearchData searchData = new SearchData();
searchData.field = "minCheckTime";
searchData.value = FormatDate(dFDate.ToString("yyyy-MM-dd HH:mm:ss"));
filters.Add(searchData);
searchData = new SearchData();
searchData.field = "maxCheckTime";
searchData.value = FormatDate(dTDate.ToString("yyyy-MM-dd HH:mm:ss"));
filters.Add(searchData);
data.filters = filters;