using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Timers; namespace BLL { public class BOSHENGMonitorService { #region 启动监视器 系统启动5分钟 /// /// 监视组件 /// private static Timer messageTimer; /// /// 启动监视器,不一定能成功,根据系统设置决定对监视器执行的操作 系统启动5分钟 /// public static void StartMonitor() { int adTimeJ = 30; if (messageTimer != null) { messageTimer.Stop(); messageTimer.Dispose(); messageTimer = null; } if (adTimeJ > 0) { messageTimer = new Timer { AutoReset = true }; messageTimer.Elapsed += new ElapsedEventHandler(AddData); messageTimer.Interval = 1000 * 60 * adTimeJ;// 60000 * adTimeJ; messageTimer.Start(); } } /// /// 流程确认 定时执行 系统启动5分钟 /// /// Timer组件 /// 事件参数 public static void AddData(object sender, ElapsedEventArgs e) { try { var getDataList = (from x in Funs.DB.Sys_DataExchange where x.IsUpdate == false select x).Take(100).ToList(); if (getDataList.Count() > 0) { var getDataList0 = getDataList.Where(x => x.MessageText.Contains("\"Type\":0")).ToList(); var getDataList1 = getDataList.Where(x => x.MessageText.Contains("\"Type\":1")).ToList(); var getDataList2 = getDataList.Where(x => x.MessageText.Contains("\"Type\":2")).ToList(); var getDataList3 = getDataList.Where(x => x.MessageText.Contains("\"Type\":3")).ToList(); var getDataList4 = getDataList.Where(x => x.MessageText.Contains("\"Type\":4")).ToList(); var getDataList5 = getDataList.Where(x => x.MessageText.Contains("\"Type\":5")).ToList(); AddDataItem(getDataList1); AddDataItem(getDataList0); AddDataItem(getDataList2); AddDataItem(getDataList3); AddDataItem(getDataList4); AddDataItem(getDataList5); } } catch (Exception ex) { StartMonitor(); ErrLogInfo.WriteLog(ex, "博晟数据接口定时器", "RealNameMonitorService.AdUserInProcess"); } } #endregion #region 与博晟培训考试接口数据插入明细方法 /// /// 与博晟培训考试接口数据插入明细方法 /// /// private static void AddDataItem(List getDataExchange) { bool isOk = false; foreach (var item in getDataExchange) { JObject obj = JObject.Parse(item.MessageText); string type = obj["Type"].ToString(); string code = obj["Code"].ToString(); string fromprojectId = obj["DepartId"].ToString(); string OtherDepartId = obj["OtherDepartId"].ToString(); JArray arr = JArray.Parse(obj["Data"].ToString()); string projectId = string.Empty; ////根据传值项目主键 var getProjectByFromProjectId = Funs.DB.Base_Project.FirstOrDefault(x => x.FromProjectId == fromprojectId && x.ProjectCode== OtherDepartId); if (getProjectByFromProjectId != null) { projectId = getProjectByFromProjectId.ProjectId; } else { var getPByCode= Funs.DB.Base_Project.FirstOrDefault(x => x.ProjectCode == OtherDepartId); if (getPByCode != null) { getPByCode.FromProjectId = fromprojectId; Funs.DB.SubmitChanges(); projectId = getPByCode.ProjectId; } else { if (type == "1") { projectId = AddProject(arr); } } } if (!string.IsNullOrEmpty(projectId)) { var sysUser = BLL.UserService.GetUserByUserId(BLL.Const.sysglyId); if (sysUser != null) { sysUser.LoginProjectId = projectId; } if (type == "0") { isOk = AddPerson(projectId, arr, sysUser); } else if (type == "1") { isOk = AddUnit(projectId, arr, sysUser); } else if (type == "2") { isOk = AddTrainRecord(projectId, arr, sysUser); } else if (type == "3") { isOk = AddTrainRecordPerson(projectId, arr, sysUser); } else if (type == "4") { isOk = AddEduTrain_TrainTest(projectId, arr, sysUser); } else if (type == "5") { isOk = AddPersonTrainRecord(projectId, arr, sysUser); } if (isOk) ///更新数据接收状态 { item.IsUpdate = true; Funs.DB.SubmitChanges(); } } } } #endregion #region 插入信息-项目信息 /// /// 插入信息-项目信息 /// /// /// public static string AddProject(JArray arr) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { string projectId = string.Empty; try { foreach (var item in arr) { string fromUnitId = item["ID"].ToString(); string departName = item["DepartName"].ToString(); ///单位名称 string departSir = item["DepartSir"].ToString(); ///单位级别 0:非项目部 1:项目部级 2:项目部下级单位 if (!string.IsNullOrEmpty(fromUnitId) && !string.IsNullOrEmpty(departName) && departSir == "1") { var getProjectByFromProjectId = db.Base_Project.FirstOrDefault(x => x.FromProjectId == fromUnitId); if (getProjectByFromProjectId == null) { string projectCode = item["ProjectCode"].ToString(); var getProjectByProjectCode = db.Base_Project.FirstOrDefault(x => x.ProjectCode == projectCode); if (getProjectByProjectCode != null) { projectId = getProjectByProjectCode.ProjectId; getProjectByProjectCode.FromProjectId = fromUnitId; db.SubmitChanges(); } } } } } catch (Exception ex) { ErrLogInfo.WriteLog("博晟-项目同步", ex); } return projectId; } } #endregion #region 插入人员信息 /// /// 插入人员信息 0 /// /// /// public static bool AddPerson(string projectId, JArray arr, Model.Sys_User user) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { bool isOk = true; try { List insertPersons = new List(); foreach (var item in arr) { string getID = item["ID"].ToString(); var getPerson = db.Bo_Sheng_Person.FirstOrDefault(x => x.ID == getID); if (!string.IsNullOrEmpty(getID) ) { if (getPerson == null) { Model.Bo_Sheng_Person newPerson = new Model.Bo_Sheng_Person { ID = getID, ProjectId = projectId, CreateDate = Funs.GetNewDateTime(item["CreateDate"].ToString()), CreateUser = item["CreateUser"].ToString(), OperDate = Funs.GetNewDateTime(item["OperDate"].ToString()), OperUser = item["OperUser"].ToString(), DeleteUser = item["DeleteUser"].ToString(), DeleteDate = Funs.GetNewDateTime(item["DeleteDate"].ToString()), DeleteTag = item["DeleteTag"].ToString(), Name = item["Name"].ToString(), Sex = item["Sex"].ToString(), BirthDay = Funs.GetNewDateTime(item["BirthDay"].ToString()), Address = item["Address"].ToString(), Nation = item["Nation"].ToString(), IdentifyID = item["IdentifyID"].ToString(), Kind = item["Kind"].ToString(), Photo = item["Photo"].ToString(), Police = item["Police"].ToString(), ValidPeriodStart = item["ValidPeriodStart"].ToString(), ValidPeriodEnd = item["ValidPeriodEnd"].ToString(), Education = item["Education"].ToString(), Native = item["Native"].ToString(), Telephone = item["Telephone"].ToString(), MaritalStatus = item["MaritalStatus"].ToString(), BloodGroup = item["BloodGroup"].ToString(), RegisteredType = item["RegisteredType"].ToString(), Age = Funs.GetNewInt(item["Age"].ToString()), JobNumber = item["JobNumber"].ToString(), CardContent = item["CardContent"].ToString(), ContactTel = item["ContactTel"].ToString(), SecondContacts = item["SecondContacts"].ToString(), SecondContactsTel = item["SecondContactsTel"].ToString(), NewAddress = item["NewAddress"].ToString(), HealthCondition = item["HealthCondition"].ToString(), HealthFile = item["HealthFile"].ToString(), BuildArea = item["BuildArea"].ToString(), TraPrincipal = item["TraPrincipal"].ToString(), RegisterDate = Funs.GetNewDateTime(item["RegisterDate"].ToString()), CategoryType = item["CategoryType"].ToString(), Station = item["Station"].ToString(), Category = item["Category"].ToString(), CategoryLevel = item["CategoryLevel"].ToString(), EntranceDate = Funs.GetNewDateTime(item["EntranceDate"].ToString()), IsOut = item["IsOut"].ToString(), LeaveDate = Funs.GetNewDateTime(item["LeaveDate"].ToString()), IsBlackList = item["IsBlackList"].ToString(), AgreementId = item["AgreementId"].ToString(), HasInsurance = item["HasInsurance"].ToString(), DeviceNumber = item["DeviceNumber"].ToString(), IsActive = item["IsActive"].ToString(), DepartId = item["DepartId"].ToString(), DepartName = item["DepartName"].ToString(), OwnerDepartId = item["OwnerDepartId"].ToString(), UploadTime = Funs.GetNewDateTime(item["UploadTime"].ToString()), }; insertPersons.Add(newPerson); } else { getPerson.DeleteUser = item["DeleteUser"].ToString(); getPerson.DeleteDate = Funs.GetNewDateTime(item["DeleteDate"].ToString()); getPerson.DeleteTag = item["DeleteTag"].ToString(); db.SubmitChanges(); } } } if (insertPersons.Count() > 0) { db.Bo_Sheng_Person.InsertAllOnSubmit(insertPersons); db.SubmitChanges(); } } catch (Exception ex) { isOk = false; ErrLogInfo.WriteLog("博晟-人员信息同步", ex); } return isOk; } } #endregion #region 插入信息-单位信息 1 /// /// 插入信息-单位信息 1 /// /// /// public static bool AddUnit(string projectId, JArray arr, Model.Sys_User user) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { bool isOk = true; try { List insertUnits = new List(); foreach (var item in arr) { string getID = item["ID"].ToString(); var getUnit = db.Bo_Sheng_Unit.FirstOrDefault(x => x.ID == getID); if (!string.IsNullOrEmpty(getID)) { if (getUnit == null) { Model.Bo_Sheng_Unit newUnit = new Model.Bo_Sheng_Unit { ID = getID, ProjectId = projectId, DeleteTag = item["DeleteTag"].ToString(), ParentID = item["ParentID"].ToString(), DepartCode = item["DepartCode"].ToString(), ParentCode = item["ParentCode"].ToString(), DepartName = item["DepartName"].ToString(), DepartType = item["DepartType"].ToString(), DepartShortName = item["DepartShortName"].ToString(), DepartOrder = item["DepartOrder"].ToString(), State = item["State"].ToString(), DepartSir = item["DepartSir"].ToString(), IsEpiboly = item["IsEpiboly"].ToString(), Phone = item["Phone"].ToString(), Charge = item["Charge"].ToString(), Remark = item["Remark"].ToString(), OwnerDeptID = item["OwnerDeptID"].ToString(), CreateDate = Funs.GetNewDateTime(item["CreateDate"].ToString()), CreateUser = item["CreateUser"].ToString(), OperDate = Funs.GetNewDateTime(item["OperDate"].ToString()), OperUser = item["OperUser"].ToString(), }; insertUnits.Add(newUnit); } else { getUnit.DeleteTag = item["DeleteTag"].ToString(); db.SubmitChanges(); } } } if (insertUnits.Count() > 0) { db.Bo_Sheng_Unit.InsertAllOnSubmit(insertUnits); db.SubmitChanges(); } } catch (Exception ex) { isOk = false; ErrLogInfo.WriteLog("博晟-单位信息同步", ex); } return isOk; } } #endregion #region 插入培训记录 2 /// /// 插入培训记录 2 /// /// /// public static bool AddTrainRecord(string projectId, JArray arr, Model.Sys_User user) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { bool isOk = true; try { List insertTrains = new List(); foreach (var item in arr) { string getID = item["ID"].ToString(); var getTrain = db.Bo_Sheng_Train.FirstOrDefault(x => x.ID == getID); if (!string.IsNullOrEmpty(getID)) { if (getTrain == null) { Model.Bo_Sheng_Train newTrainRecord = new Model.Bo_Sheng_Train { ID = getID, ProjectId = projectId, DeleteUser = item["DeleteUser"].ToString(), DeleteDate = Funs.GetNewDateTime(item["DeleteDate"].ToString()), DeleteTag = item["DeleteTag"].ToString(), RecordName = item["RecordName"].ToString(), TrainType = item["TrainType"].ToString(), PaperMode = item["PaperMode"].ToString(), TrainMode = item["TrainMode"].ToString(), TrainPrincipal = item["TrainPrincipal"].ToString(), TrainStartDate = Funs.GetNewDateTime(item["TrainStartDate"].ToString()), TrainEndDate = Funs.GetNewDateTime(item["TrainEndDate"].ToString()), TrainContent = item["TrainContent"].ToString(), TrainDescript = item["TrainDescript"].ToString(), TrainPeriod = item["TrainPeriod"].ToString(), PersonCount = Funs.GetNewInt(item["PersonCount"].ToString()), PassedCount = Funs.GetNewInt(item["PassedCount"].ToString()), CoverImg = item["CoverImg"].ToString(), DemandID = item["DemandID"].ToString(), CourseCount = Funs.GetNewInt(item["CourseCount"].ToString()), CourseDuration = item["CourseDuration"].ToString(), Source = item["Source"].ToString(), Description = item["Description"].ToString(), DeviceNo = item["DeviceNo"].ToString(), OwnerDepartId = item["OwnerDepartId"].ToString(), UploadTime = Funs.GetNewDateTime(item["UploadTime"].ToString()), OwnerDeptName = item["OwnerDeptName"].ToString(), TrainDepart = item["TrainDepart"].ToString(), CreateDate = Funs.GetNewDateTime(item["CreateDate"].ToString()), CreateUser = item["CreateUser"].ToString(), OperDate = Funs.GetNewDateTime(item["OperDate"].ToString()), OperUser = item["OperUser"].ToString(), }; insertTrains.Add(newTrainRecord); } else { getTrain.DeleteUser = item["DeleteUser"].ToString(); getTrain.DeleteDate = Funs.GetNewDateTime(item["DeleteDate"].ToString()); getTrain.DeleteTag = item["DeleteTag"].ToString(); db.SubmitChanges(); } } } if (insertTrains.Count() > 0) { db.Bo_Sheng_Train.InsertAllOnSubmit(insertTrains); db.SubmitChanges(); } } catch (Exception ex) { isOk = false; ErrLogInfo.WriteLog("博晟-培训记录同步", ex); } return isOk; } } #endregion #region 插入培训人员 3 /// /// 插入培训人员 3 /// /// /// public static bool AddTrainRecordPerson(string projectId, JArray arr, Model.Sys_User user) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { bool isOk = true; try { List insertTrainPersons = new List(); foreach (var item in arr) { string getID = item["ID"].ToString(); var getTrainPerson = db.Bo_Sheng_TrainPerson.FirstOrDefault(x => x.ID == getID); if (!string.IsNullOrEmpty(getID)) { if (getTrainPerson == null) { Model.Bo_Sheng_TrainPerson newPerson = new Model.Bo_Sheng_TrainPerson { ID = getID, ProjectId = projectId, DeleteUser = item["DeleteUser"].ToString(), DeleteDate = Funs.GetNewDateTime(item["DeleteDate"].ToString()), DeleteTag = item["DeleteTag"].ToString(), EmpName = item["EmpName"].ToString(), IdentifyId = item["IdentifyId"].ToString(), Photo = item["Photo"].ToString(), Station = item["Station"].ToString(), Category = item["Category"].ToString(), CategoryName = item["CategoryName"].ToString(), RecordId = item["RecordId"].ToString(), SignName = item["SignName"].ToString(), DepartId = item["DepartId"].ToString(), DepartName = item["DepartName"].ToString(), SignInDate = Funs.GetNewDateTime(item["SignInDate"].ToString()), SignInType = item["SignInType"].ToString(), TrainPeriod = item["TrainPeriod"].ToString(), State = item["State"].ToString(), TotalScore = Funs.GetNewDecimal(item["TotalScore"].ToString()), PassScore = Funs.GetNewDecimal(item["PassScore"].ToString()), Score = Funs.GetNewDecimal(item["Score"].ToString()), IsPass = item["IsPass"].ToString(), GroupNo = item["GroupNo"].ToString(), ExamNo = item["ExamNo"].ToString(), ExamCount = Funs.GetNewInt(item["ExamCount"].ToString()), DeviceNo = item["DeviceNo"].ToString(), OwnerDepartId = item["OwnerDepartId"].ToString(), UploadTime = Funs.GetNewDateTime(item["UploadTime"].ToString()), Answers = item["Answers"].ToString(), CreateDate = Funs.GetNewDateTime(item["CreateDate"].ToString()), CreateUser = item["CreateUser"].ToString(), OperDate = Funs.GetNewDateTime(item["OperDate"].ToString()), OperUser = item["OperUser"].ToString(), }; insertTrainPersons.Add(newPerson); } else { getTrainPerson.DeleteUser = item["DeleteUser"].ToString(); getTrainPerson.DeleteDate = Funs.GetNewDateTime(item["DeleteDate"].ToString()); getTrainPerson.DeleteTag = item["DeleteTag"].ToString(); db.SubmitChanges(); } } } if (insertTrainPersons.Count() > 0) { db.Bo_Sheng_TrainPerson.InsertAllOnSubmit(insertTrainPersons); db.SubmitChanges(); } } catch (Exception ex) { isOk = false; ErrLogInfo.WriteLog("博晟-培训人员同步", ex); } return isOk; } } #endregion #region 插入试卷 4 /// /// 插入试卷 4 /// /// /// public static bool AddEduTrain_TrainTest(string projectId, JArray arr, Model.Sys_User user) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { bool isOk = true; try { List insertExams = new List(); foreach (var item in arr) { string getID = item["ID"].ToString(); var getExam = db.Bo_Sheng_Exam.FirstOrDefault(x => x.ID == getID); if (!string.IsNullOrEmpty(getID)) { if (getExam == null) { Model.Bo_Sheng_Exam newTrainTest = new Model.Bo_Sheng_Exam { ID = getID, ProjectId = projectId, DeleteTag = item["DeleteTag"].ToString(), RecordId = item["RecordId"].ToString(), ExamNo = item["ExamNo"].ToString(), GroupNo = item["GroupNo"].ToString(), CourseID = item["CourseID"].ToString(), COrder = Funs.GetNewInt(item["COrder"].ToString()), QsnCode = item["QsnCode"].ToString(), QsnId = item["QsnId"].ToString(), QsnContent = item["QsnContent"].ToString(), QsnFileName = item["QsnFileName"].ToString(), QsnAnswer = item["QsnAnswer"].ToString(), QsnCategory = item["QsnCategory"].ToString(), QsnKind = item["QsnKind"].ToString(), QsnImportant = item["QsnImportant"].ToString(), Description = item["Description"].ToString(), Analysis = item["Analysis"].ToString(), UploadTime = Funs.GetNewDateTime(item["UploadTime"].ToString()), }; insertExams.Add(newTrainTest); } else { getExam.DeleteTag = item["DeleteTag"].ToString(); db.SubmitChanges(); } } } if (insertExams.Count() > 0) { db.Bo_Sheng_Exam.InsertAllOnSubmit(insertExams); db.SubmitChanges(); } } catch (Exception ex) { isOk = false; ErrLogInfo.WriteLog("博晟-培训试卷同步", ex); } return isOk; } } #endregion #region 插入人员培训记录 5 /// /// 插入人员培训记录 5 /// /// /// public static bool AddPersonTrainRecord(string projectId, JArray arr, Model.Sys_User user) { using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString)) { bool isOk = true; try { List insertPersonTrainRecords = new List(); foreach (var item in arr) { string getID = item["ID"].ToString(); var getPersonTrainRecord = db.Bo_Sheng_PersonTrainRecord.FirstOrDefault(x => x.ID == getID); if (!string.IsNullOrEmpty(getID)) { if (getPersonTrainRecord == null) { Model.Bo_Sheng_PersonTrainRecord newRecord = new Model.Bo_Sheng_PersonTrainRecord { ID = getID, ProjectId = projectId, DeleteTag = item["DeleteTag"].ToString(), EmpName = item["EmpName"].ToString(), IdentifyId = item["IdentifyId"].ToString(), CategoryName = item["CategoryName"].ToString(), RecordId = item["RecordId"].ToString(), DepartId = item["DepartId"].ToString(), DepartName = item["DepartName"].ToString(), TrainPeriod = item["TrainPeriod"].ToString(), TotalScore = Funs.GetNewDecimal(item["TotalScore"].ToString()), PassScore = Funs.GetNewDecimal(item["PassScore"].ToString()), Score = Funs.GetNewDecimal(item["Score"].ToString()), IsPass = item["IsPass"].ToString(), GroupNo = item["GroupNo"].ToString(), ExamNo = item["ExamNo"].ToString(), ExamCount = item["ExamCount"].ToString(), DeviceNo = item["DeviceNo"].ToString(), OwnerDepartId = item["OwnerDepartId"].ToString(), Answers = item["Answers"].ToString(), RecordName = item["RecordName"].ToString(), TrainType = item["TrainType"].ToString(), PaperMode = item["PaperMode"].ToString(), TrainMode = item["TrainMode"].ToString(), TrainPrincipal = item["TrainPrincipal"].ToString(), TrainStartDate = Funs.GetNewDateTime(item["TrainStartDate"].ToString()), TrainEndDate = Funs.GetNewDateTime(item["TrainEndDate"].ToString()), TrainContent = item["TrainContent"].ToString(), TrainDescript = item["TrainDescript"].ToString(), }; insertPersonTrainRecords.Add(newRecord); } else { getPersonTrainRecord.DeleteTag = item["DeleteTag"].ToString(); db.SubmitChanges(); } } } if (insertPersonTrainRecords.Count() > 0) { db.Bo_Sheng_PersonTrainRecord.InsertAllOnSubmit(insertPersonTrainRecords); db.SubmitChanges(); } } catch (Exception ex) { isOk = false; ErrLogInfo.WriteLog("博晟-人员培训记录同步", ex); } return isOk; } } #endregion } }