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 = 120;
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组件
/// 事件参数
private static void AddData(object sender, ElapsedEventArgs e)
{
try
{
var getDataList = (from x in Funs.DB.Sys_DataExchange where x.IsUpdate == false select x).Take(200).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();
JArray arr = JArray.Parse(obj["Data"].ToString());
string projectId = string.Empty;
////根据传值项目主键
var getProjectByFromProjectId = Funs.DB.Base_Project.FirstOrDefault(x => x.FromProjectId == fromprojectId);
if (getProjectByFromProjectId != null)
{
projectId = getProjectByFromProjectId.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) && 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);
}
}
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) && getUnit == null)
{
Model.Bo_Sheng_Unit newUnit = new Model.Bo_Sheng_Unit
{
ID = getID,
ProjectId = projectId,
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);
}
}
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) && 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);
}
}
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) && 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);
}
}
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) && getExam == null)
{
Model.Bo_Sheng_Exam newTrainTest = new Model.Bo_Sheng_Exam
{
ID = getID,
ProjectId = projectId,
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);
}
}
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) && getPersonTrainRecord == null)
{
Model.Bo_Sheng_PersonTrainRecord newRecord = new Model.Bo_Sheng_PersonTrainRecord
{
ID = getID,
ProjectId = projectId,
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);
}
}
if (insertPersonTrainRecords.Count() > 0)
{
db.Bo_Sheng_PersonTrainRecord.InsertAllOnSubmit(insertPersonTrainRecords);
db.SubmitChanges();
}
}
catch (Exception ex)
{
isOk = false;
ErrLogInfo.WriteLog("博晟-人员培训记录同步", ex);
}
return isOk;
}
}
#endregion
}
}