/// <summary> ///处理学员学习操作表 /// </summary> internal static void Deal3() { BasicClass basic = new BasicClass(); while (true) { //获取学习操作表中的项目编号 DataTable dt_project = basic.GetLearnProjectCode(); if (dt_project != null && dt_project.Rows.Count > 0) { for (int i = 0; i < dt_project.Rows.Count; i++) { string projectCode = dt_project.Rows[i].IsNull("ProjectCode") ? string.Empty : dt_project.Rows[i]["ProjectCode"].ToString(); if (!string.IsNullOrEmpty(projectCode)) { //获取该项目下的学习记录 DataTable dt_learn = basic.GetLearnRecords(projectCode); if (dt_learn != null && dt_learn.Rows.Count > 0) { //拼接学习记录Json long timeStamp = basic.GetTimeStamp(DateTime.Now); string learnJson = string.Empty; StringBuilder sb = new StringBuilder(); for (int j = 0; j < dt_learn.Rows.Count; j++) { string studentNo = dt_learn.Rows[j].IsNull("StudentNo") ? string.Empty : dt_learn.Rows[j]["StudentNo"].ToString(); string startTime = dt_learn.Rows[j].IsNull("StartTime") ? string.Empty : basic.GetTimeStamp(Convert.ToDateTime(dt_learn.Rows[j]["StartTime"])).ToString(); string endTime = dt_learn.Rows[j].IsNull("EndTime") ? string.Empty : basic.GetTimeStamp(Convert.ToDateTime(dt_learn.Rows[j]["EndTime"])).ToString(); string learnTime = dt_learn.Rows[j].IsNull("LearnTime") ? string.Empty : dt_learn.Rows[j]["LearnTime"].ToString(); int classId = dt_learn.Rows[j].IsNull("ClassId") ? 0 : Convert.ToInt32(dt_learn.Rows[j]["ClassId"]); if (!string.IsNullOrEmpty(studentNo) && !string.IsNullOrEmpty(startTime) && !string.IsNullOrEmpty(endTime) && !string.IsNullOrEmpty(learnTime)) { sb.Append("{\"StudentNo\":\"" + studentNo + "\",\"StartTime\":\"" + startTime + "\",\"EndTime\":\"" + endTime + "\",\"LearnTime\":\"" + learnTime + "\",\"ClassId\":\"" + classId.ToString() + "\"},"); } } if (sb.Length > 0) { learnJson = sb.Remove(sb.Length - 1, 1).ToString(); } string jsonStr = "{\"TimeStamp\":\"" + timeStamp.ToString() + "\",\"Records\":[" + learnJson + "]}"; string aeskey = string.Empty; string aesiv = string.Empty; string aesString = basic.GetAesKeyByProjectCode(projectCode); if (aesString.Contains(",")) { aeskey = aesString.Split(',')[0]; aesiv = aesString.Split(',')[1]; } string encryption = string.Empty; if (!string.IsNullOrEmpty(aeskey) && !string.IsNullOrEmpty(aesiv)) { encryption = basic.Encrypt(jsonStr, aeskey, aesiv); } //调用接口 string result = basic.PostData(ConfigurationManager.AppSettings["ReformInterface"].ToString() + "/StudySubmit", projectCode, encryption); if (!string.IsNullOrEmpty(result)) { var submitRecordResult = basic.JsonStr2Obj <SubmitRecordResult>(result); if (submitRecordResult != null) { if (submitRecordResult.Success.Count > 0) { //提交成功的记录 var sucList = submitRecordResult.Success; int sucNumber = 0; string sucMessage = string.Empty; foreach (var item in sucList) { sucNumber = item.number; sucMessage = item.msg; if (sucNumber >= 0) { basic.UpdateLearnRecordStatus(Convert.ToInt32(dt_learn.Rows[sucNumber]["Id"]), sucMessage, Convert.ToInt32(dt_learn.Rows[sucNumber].IsNull("SendTimes") ? 0 : dt_learn.Rows[sucNumber]["SendTimes"])); } } } if (submitRecordResult.Failed.Count >= 0) { //提交失败的记录 var failList = submitRecordResult.Failed; int failNumber = 0; string failMessage = string.Empty; foreach (var item in failList) { failNumber = item.number; failMessage = item.msg; if (failNumber > 0) { basic.UpdateLearnRecordStatus(Convert.ToInt32(dt_learn.Rows[failNumber]["Id"]), failMessage, Convert.ToInt32(dt_learn.Rows[failNumber].IsNull("SendTimes") ? 0 : dt_learn.Rows[failNumber]["SendTimes"])); } } } } } } } } } //休眠一小时 Thread.Sleep(1000 * 60 * Convert.ToInt32(ConfigurationManager.AppSettings["deal3_sleep"])); } }