using Model;
using Newtonsoft.Json.Linq;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;

namespace BLL
{
	public static class GetDataService
	{
		#region 培训计划提交后 按照培训任务 生成培训人员的培训教材明细
		/// <summary>
		/// 生成培训人员的培训教材明细
		/// </summary>
		/// <param name="taskId"></param>
		public static void CreateTrainingTaskItemByTaskId(string taskId)
		{
			using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
			{
				/////查找未生成教材明细的 培训任务
				var getTasks = from x in db.Training_Task
							   where x.States == Const.State_0 && (x.TaskId == taskId || taskId == null)
							   select x;
				if (getTasks.Count() > 0)
				{
					foreach (var item in getTasks)
					{
						var getPerson = db.SitePerson_Person.FirstOrDefault(e => e.PersonId == item.UserId);
						if (getPerson != null)
						{
							////获取计划下 人员培训教材明细
							var getDataList = db.Sp_GetTraining_TaskItemTraining(item.PlanId, getPerson.WorkPostId);
							foreach (var dataItem in getDataList)
							{
								Model.Training_TaskItem newTaskItem = new Model.Training_TaskItem
								{
									TaskId = item.TaskId,
									PlanId = item.PlanId,
									PersonId = item.UserId,
									TrainingItemCode = dataItem.TrainingItemCode,
									TrainingItemName = dataItem.TrainingItemName,
									AttachUrl = dataItem.AttachUrl,
								};

								var getTaskItem = db.Training_TaskItem.FirstOrDefault(x => x.TaskId == item.TaskId && x.TrainingItemName == newTaskItem.TrainingItemName && x.AttachUrl == newTaskItem.AttachUrl);
								if (getTaskItem == null)
								{
									newTaskItem.TaskItemId = SQLHelper.GetNewID();
									db.Training_TaskItem.InsertOnSubmit(newTaskItem);
									db.SubmitChanges();
								}
							}
						}

						////更新培训任务
						item.States = Const.State_1;
						db.SubmitChanges();
					}
				}
			}
		}
		#endregion

		#region 自动结束考试
		/// <summary>
		///  自动结束考试
		/// </summary>
		public static void UpdateTestPlanStates()
		{
			Model.SGGLDB db = Funs.DB;
			var getTestPlans = from x in db.Training_TestPlan
							   where x.States == Const.State_2 && x.TestEndTime.AddMinutes(x.Duration) < DateTime.Now
							   select x;
			if (getTestPlans.Count() > 0)
			{
				foreach (var item in getTestPlans)
				{
					APITestPlanService.SubmitTest(item);
					item.States = "3";
					db.SubmitChanges();
				}
			}

			var getTrainingTestRecords = from x in db.Training_TestRecord
										 where x.TestStartTime.Value.AddMinutes(x.Duration) < DateTime.Now
										 && (!x.TestEndTime.HasValue || !x.TestScores.HasValue)
										 select x;
			foreach (var itemRecord in getTrainingTestRecords)
			{
				itemRecord.TestEndTime = itemRecord.TestStartTime.Value.AddMinutes(itemRecord.Duration);
				itemRecord.TestScores = db.Training_TestRecordItem.Where(x => x.TestRecordId == itemRecord.TestRecordId).Sum(x => x.SubjectScore) ?? 0;
				TestRecordService.UpdateTestRecord(itemRecord);
			}
		}
		#endregion

		#region 自动结束考试-知识竞赛
		/// <summary>
		///  自动结束考试
		/// </summary>
		public static void UpdateServerTestPlanStates()
		{
			Model.SGGLDB db = Funs.DB;

			var getTrainingTestRecords = from x in db.Test_TestRecord
										 where x.TestStartTime.Value.AddMinutes(x.Duration.Value) < DateTime.Now
										 && (!x.TestEndTime.HasValue || !x.TestScores.HasValue)
										 select x;
			foreach (var itemRecord in getTrainingTestRecords)
			{
				itemRecord.TestEndTime = itemRecord.TestStartTime.Value.AddMinutes(itemRecord.Duration.Value);
				itemRecord.TestScores = db.Test_TestRecordItem.Where(x => x.TestRecordId == itemRecord.TestRecordId).Sum(x => x.SubjectScore) ?? 0;
				db.SubmitChanges();
			}
		}
		#endregion

		#region 自动校正出入场人数及工时
		/// <summary>
		///  自动校正出入场人数及工时
		/// </summary>
		public static void CorrectingPersonInOutNumber(string projectId)
		{
			using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
			{
				var getProjects = (from x in db.Base_Project
								   where x.ProjectState == null || x.ProjectState == Const.ProjectState_1
								   orderby x.ProjectCode descending
								   select x).ToList();
				if (!string.IsNullOrEmpty(projectId))
				{
					getProjects = getProjects.Where(x => x.ProjectId == projectId).ToList();
				}
				foreach (var projectItem in getProjects)
				{
					var getAllPersonInOutList = from x in db.SitePerson_PersonInOut
												where x.ProjectId == projectItem.ProjectId && x.ChangeTime <= DateTime.Now
												select x;
					if (getAllPersonInOutList.Count() > 0)
					{
						#region 现场当前人员数
						int SitePersonNum = 0;
						var getDayAll = from x in db.SitePerson_PersonInOutNow
										where x.ChangeTime.Value.Year == DateTime.Now.Year && x.ChangeTime.Value.Month == DateTime.Now.Month
										&& x.ChangeTime.Value.Day == DateTime.Now.Day
										select x;
						if (getDayAll.Count() > 0)
						{
							var getInMaxs = from x in getDayAll
											group x by x.PersonId into g
											select new { g.First().PersonId, ChangeTime = g.Max(x => x.ChangeTime) };
							if (getInMaxs.Count() > 0)
							{
								SitePersonNum = (from x in getInMaxs
												 join y in getDayAll on new { x.PersonId, x.ChangeTime } equals new { y.PersonId, y.ChangeTime }
												 where y.IsIn == true
												 select y).Count();
							}
						}
						#endregion

						#region 获取工时                  
						int SafeHours = 0;
						var getPersonOutTimes = from x in getAllPersonInOutList
												where x.IsIn == false
												select x;
						var getInLists = getAllPersonInOutList.Where(x => x.IsIn == true);
						//// 查找当前项目 最新的人工时数量记录
						var getMaxInOutDate = db.SitePerson_PersonInOutNumber.Where(x => x.ProjectId == projectItem.ProjectId).OrderByDescending(x => x.InOutDate).FirstOrDefault();
						if (getMaxInOutDate != null)
						{
							SafeHours = (getMaxInOutDate.WorkHours ?? 0) * 60;
							getPersonOutTimes = from x in getPersonOutTimes
												where x.ChangeTime > getMaxInOutDate.InOutDate
												select x;
							if (getPersonOutTimes.Count() > 0)
							{
								getInLists = from x in getInLists
											 where x.ChangeTime > getMaxInOutDate.InOutDate
											 select x;
							}
						}

						if (getPersonOutTimes.Count() > 0)
						{
							List<string> personIdList = new List<string>();
							foreach (var item in getPersonOutTimes)
							{
								var getMaxInTime = getInLists.Where(x => x.ChangeTime < item.ChangeTime
											&& x.PersonId == item.PersonId && x.ChangeTime.Value.AddDays(1) >= item.ChangeTime).Max(x => x.ChangeTime);
								if (getMaxInTime.HasValue)
								{
									SafeHours += Convert.ToInt32((item.ChangeTime - getMaxInTime).Value.TotalMinutes);
								}
								else
								{
									personIdList.Add(item.PersonId);
								}
							}
							if (personIdList.Count() > 0)
							{
								SafeHours += (personIdList.Distinct().Count() * 8 * 60);
							}
						}
						#endregion

						SafeHours = Convert.ToInt32(SafeHours * 1.0 / 60);
						var getPersonInOutNumber = db.SitePerson_PersonInOutNumber.FirstOrDefault(x => x.ProjectId == projectItem.ProjectId
																			&& x.InOutDate.Year == DateTime.Now.Year
																			&& x.InOutDate.Month == DateTime.Now.Month
																			&& x.InOutDate.Day == DateTime.Now.Day);
						if (getPersonInOutNumber == null)
						{
							Model.SitePerson_PersonInOutNumber newNum = new Model.SitePerson_PersonInOutNumber
							{
								PersonInOutNumberId = SQLHelper.GetNewID(),
								ProjectId = projectItem.ProjectId,
								InOutDate = DateTime.Now,
								PersonNum = SitePersonNum,
								WorkHours = SafeHours,
							};

							db.SitePerson_PersonInOutNumber.InsertOnSubmit(newNum);
							db.SubmitChanges();
						}
						else
						{
							getPersonInOutNumber.InOutDate = DateTime.Now;
							getPersonInOutNumber.PersonNum = SitePersonNum;
							getPersonInOutNumber.WorkHours = SafeHours;
							db.SubmitChanges();
						}
					}
				}
			}
		}
		#endregion

		#region 自动批量生成人员二维码
		/// <summary>
		///  自动批量生成人员二维码
		/// </summary>
		public static void CreateQRCode()
		{
			using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
			{
				var getPersons = from x in db.SitePerson_Person
								 where x.IdentityCard != null && x.QRCodeAttachUrl == null
								 select x;
				if (getPersons.Count() > 0)
				{
					foreach (var item in getPersons)
					{
						string url = CreateQRCodeService.CreateCode_Simple("person$" + item.IdentityCard);
						if (!string.IsNullOrEmpty(url))
						{
							item.QRCodeAttachUrl = url;
							db.SubmitChanges();
						}
					}
				}
			}
		}
		#endregion

		#region 自动 出场人员 自动离场
		/// <summary>
		///  自动校正出入场人数及工时
		/// </summary>
		public static void SitePersonjAutomaticOut()
		{
			using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
			{
				var getPersons = from x in db.SitePerson_Person
								 where x.OutTime < DateTime.Now && x.IsUsed == true
								 select x;
				if (getPersons.Count() > 0)
				{
					foreach (var item in getPersons)
					{
						item.IsUsed = false;
						item.ExchangeTime2 = null;
						db.SubmitChanges();
					}
				}
			}
		}
		#endregion

		#region 定时推送待办 订阅服务内容
		/// <summary>
		/// 定时推送待办 订阅服务内容
		/// </summary>
		public static void SendSubscribeMessage()
		{
			try
			{
				string miniprogram_state = ConfigurationManager.AppSettings["miniprogram_state"];
				if (!string.IsNullOrEmpty(miniprogram_state) && miniprogram_state == "formal")
				{
					//// 获取所有待办事项
					var getToItems = from x in Funs.DB.View_APP_GetToDoItems select x;
					if (getToItems.Count() > 0)
					{
						//// 获取施工中的项目
						var getProjects = ProjectService.GetProjectWorkList();
						foreach (var item in getProjects)
						{
							////获取当前项目下的待办
							var getPItems = getToItems.Where(x => x.ProjectId == item.ProjectId);
							if (getPItems.Count() > 0)
							{
								foreach (var itemP in getPItems)
								{
									//"项目【" + item.ProjectCode + "】上有" + itemP.Counts.ToString() + "条待办事件,需要您处理!"
									APICommonService.SendSubscribeMessage(itemP.UserId, "项目" + item.ProjectCode + "有待办", "施工信息管理", string.Format("{0:yyyy-MM-dd HH:mm:ss}", DateTime.Now));
								}
							}
						}
					}
				}
			}
			catch (Exception ex)
			{ }
		}

		#endregion

		#region 关闭超期未关闭作业许可
		/// <summary>
		/// 关闭超期未关闭作业许可
		/// </summary>
		public static void CloseLicenseData()
		{
			using (Model.SGGLDB db = new Model.SGGLDB(Funs.ConnString))
			{
				////动火作业
				//var getFireWorks = from x in db.License_FireWork
				//                  where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
				//                  select new Model.LicenseDataItem
				//                  {
				//                      LicenseId = x.FireWorkId,
				//                      MenuId = Const.ProjectFireWorkMenuId,
				//                      ProjectId = x.ProjectId,
				//                      CloseManId = x.ApplyManId,
				//                      CloseReasons = "到期自动作废。",               
				//                      States = Const.State_C,
				//                  };
				//foreach (var itemFire in getFireWorks)
				//{
				//    APILicenseDataService.SaveLicenseData(itemFire);
				//}
				var getFireWorks = from x in db.License_FireWork
								   where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
								   select x;
				foreach (var itemFire in getFireWorks)
				{
					itemFire.CloseReasons = "到期自动关闭";
					itemFire.States = Const.State_3;
				}


				////高处作业票
				//var getHeightWorks = from x in db.License_HeightWork
				//                     where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
				//                     select new Model.LicenseDataItem
				//                     {
				//                         LicenseId = x.HeightWorkId,
				//                         MenuId = Const.ProjectHeightWorkMenuId,
				//                         ProjectId = x.ProjectId,
				//                         CloseManId = x.ApplyManId,
				//                         CloseReasons = "到期自动作废。",                                    
				//                         States = Const.State_C,
				//                     };
				//foreach (var itemHeightWork in getHeightWorks)
				//{
				//    APILicenseDataService.SaveLicenseData(itemHeightWork);
				//}

				var getHeightWorks = from x in db.License_HeightWork
									 where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
									 select x;
				foreach (var itemHeightWork in getHeightWorks)
				{
					itemHeightWork.States = Const.State_3;
					itemHeightWork.CloseReasons = "到期自动关闭";

					//itemHeightWork.CloseReasons = "到期自动作废";
					//itemHeightWork.States = Const.State_C; 

				}

				////受限空间作业票
				//var getLimitedSpaces = from x in db.License_LimitedSpace
				//                       where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
				//                       select new Model.LicenseDataItem
				//                       {
				//                           LicenseId = x.LimitedSpaceId,
				//                           MenuId = Const.ProjectLimitedSpaceMenuId,
				//                           ProjectId = x.ProjectId,
				//                           CloseManId = x.ApplyManId,
				//                           CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
				//                           CloseReasons = "到期自动作废。",
				//                           CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
				//                           States = Const.State_C,
				//                       };
				//foreach (var itemLimitedSpace in getLimitedSpaces)
				//{
				//    APILicenseDataService.SaveLicenseData(itemLimitedSpace);
				//}
				var getLimitedSpaces = from x in db.License_LimitedSpace
									   where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
									   select x;
				foreach (var itemLimitedSpace in getLimitedSpaces)
				{
					//itemLimitedSpace.CloseReasons = "到期自动作废";
					//itemLimitedSpace.States = Const.State_C;
					itemLimitedSpace.States = Const.State_3;
					itemLimitedSpace.CloseReasons = "到期自动关闭";

				}

				////射线作业票
				//var getRadialWorks = from x in db.License_RadialWork
				//                     where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
				//                     select new Model.LicenseDataItem
				//                     {
				//                         LicenseId = x.RadialWorkId,
				//                         MenuId = Const.ProjectRadialWorkMenuId,
				//                         ProjectId = x.ProjectId,
				//                         CloseManId = x.ApplyManId,
				//                         CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
				//                         CloseReasons = "到期自动作废。",
				//                         CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
				//                         States = Const.State_C,
				//                     };
				//foreach (var itemRadialWork in getRadialWorks)
				//{
				//    APILicenseDataService.SaveLicenseData(itemRadialWork);
				//}

				var getRadialWorks = from x in db.License_RadialWork
									 where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
									 select x;
				foreach (var itemRadialWork in getRadialWorks)
				{
					//itemRadialWork.CloseReasons = "到期自动作废";
					//itemRadialWork.States = Const.State_C;
					itemRadialWork.States = Const.State_3;
					itemRadialWork.CloseReasons = "到期自动关闭";

				}

				////断路(占道)作业票
				//var getOpenCircuits = from x in db.License_OpenCircuit
				//                      where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
				//                      select new Model.LicenseDataItem
				//                      {
				//                          LicenseId = x.OpenCircuitId,
				//                          MenuId = Const.ProjectOpenCircuitMenuId,
				//                          ProjectId = x.ProjectId,
				//                          CloseManId = x.ApplyManId,
				//                          CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
				//                          CloseReasons = "到期自动作废。",
				//                          CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
				//                          States = Const.State_C,
				//                      };
				//foreach (var itemOpenCircuit in getOpenCircuits)
				//{
				//    APILicenseDataService.SaveLicenseData(itemOpenCircuit);
				//}
				var getOpenCircuits = from x in db.License_OpenCircuit
									  where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
									  select x;
				foreach (var itemOpenCircuit in getOpenCircuits)
				{
					//itemOpenCircuit.CloseReasons = "到期自动作废";
					//itemOpenCircuit.States = Const.State_C;
					itemOpenCircuit.States = Const.State_3;
					itemOpenCircuit.CloseReasons = "到期自动关闭";

				}

				////动土作业票
				//var getBreakGrounds = from x in db.License_BreakGround
				//                      where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
				//                      select new Model.LicenseDataItem
				//                      {
				//                          LicenseId = x.BreakGroundId,
				//                          MenuId = Const.ProjectBreakGroundMenuId,
				//                          ProjectId = x.ProjectId,
				//                          CloseManId = x.ApplyManId,
				//                          CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
				//                          CloseReasons = "到期自动作废。",
				//                          CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
				//                          States = Const.State_C,
				//                      };
				//foreach (var itemBreakGround in getBreakGrounds)
				//{
				//    APILicenseDataService.SaveLicenseData(itemBreakGround);
				//}
				var getBreakGrounds = from x in db.License_BreakGround
									  where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
									  select x;
				foreach (var itemBreakGround in getBreakGrounds)
				{
					//itemBreakGround.CloseReasons = "到期自动作废";
					//itemBreakGround.States = Const.State_C;
					itemBreakGround.States = Const.State_3;
					itemBreakGround.CloseReasons = "到期自动关闭";

				}

				////夜间施工作业票
				//var getNightWorks = from x in db.License_NightWork
				//                    where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
				//                    select new Model.LicenseDataItem
				//                    {
				//                        LicenseId = x.NightWorkId,
				//                        MenuId = Const.ProjectNightWorkMenuId,
				//                        ProjectId = x.ProjectId,
				//                        CloseManId = x.ApplyManId,
				//                        CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
				//                        CloseReasons = "到期自动作废。",
				//                        CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
				//                        States = Const.State_C,
				//                    };
				//foreach (var itemNightWork in getNightWorks)
				//{
				//    APILicenseDataService.SaveLicenseData(itemNightWork);
				//}
				var getNightWorks = from x in db.License_NightWork
									where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
									select x;
				foreach (var itemNightWork in getNightWorks)
				{
					//itemNightWork.CloseReasons = "到期自动作废";
					//itemNightWork.States = Const.State_C;
					itemNightWork.States = Const.State_3;
					itemNightWork.CloseReasons = "到期自动关闭";

				}

				////吊装作业票
				//var getLiftingWorks = from x in db.License_LiftingWork
				//                      where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
				//                      select new Model.LicenseDataItem
				//                      {
				//                          LicenseId = x.LiftingWorkId,
				//                          MenuId = Const.ProjectLiftingWorkMenuId,
				//                          ProjectId = x.ProjectId,
				//                          CloseManId = x.ApplyManId,
				//                          CloseManName = db.Sys_User.First(u => u.UserId == x.CloseManId).UserName,
				//                          CloseReasons = "到期自动作废。",
				//                          CloseTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.ValidityEndTime),
				//                          States = Const.State_C,
				//                      };
				//foreach (var itemLiftingWork in getLiftingWorks)
				//{
				//    APILicenseDataService.SaveLicenseData(itemLiftingWork);
				//}

				var getLiftingWorks = from x in db.License_LiftingWork
									  where x.States == Const.State_2 && x.ValidityEndTime <= DateTime.Now
									  select x;
				foreach (var itemLiftingWork in getLiftingWorks)
				{
					//itemLiftingWork.CloseReasons = "到期自动作废";
					//itemLiftingWork.States = Const.State_C;
					itemLiftingWork.States = Const.State_3;
					itemLiftingWork.CloseReasons = "到期自动关闭";

				}


				////作业票【定稿】
				//var getLicenseManagers = from x in db.License_LicenseManager
				//                         where x.WorkStates == Const.State_2 && x.EndDate <= DateTime.Now
				//                         select new Model.LicenseDataItem
				//                         {
				//                             LicenseId = x.LicenseManagerId,
				//                             MenuId = Const.ProjectLicenseManagerMenuId,
				//                             ProjectId = x.ProjectId,
				//                             LicenseCode = x.LicenseManagerCode,
				//                             ApplyUnitId = x.UnitId,
				//                             ApplyManName = x.ApplicantMan,
				//                             WorkAreaIds = x.WorkAreaId,
				//                             ApplyManId = x.CompileMan,
				//                             ApplyDate = string.Format("{0:yyyy-MM-dd HH:mm}", x.CompileDate),
				//                             ValidityEndTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.EndDate),
				//                             ValidityStartTime = string.Format("{0:yyyy-MM-dd HH:mm}", x.StartDate),
				//                             States = Const.State_3,
				//                         };
				//foreach (var itemLicenseManager in getLicenseManagers)
				//{
				//    APILicenseDataService.SaveLicenseData(itemLicenseManager);
				//}

				var getLicenseManagers = from x in db.License_LicenseManager
										 where x.WorkStates == Const.State_2 && x.EndDate <= DateTime.Now
										 select x;
				foreach (var itemLicenseManager in getLicenseManagers)
				{
					//itemLicenseManager.CloseReasons = "到期自动作废";
					//itemLicenseManager.States = Const.State_C;
					itemLicenseManager.States = Const.State_3;

				}

				db.SubmitChanges();
			}
		}
		#endregion

		/// <summary>
		/// 同步环境数据
		/// </summary>
		public static void SyncEnvironment()
		{
            ErrLogInfo.WriteLog("环境数据同步开始!");
            //营口 环境数据
            string returndata = APIGetHttpService.OutsideHttp("http://dust.0531yun.cn/api/getTokenByAcc?loginName=c230816zjyk&password=c230816zjyk", "GET", "application/json;charset=utf-8");
			if (!string.IsNullOrEmpty(returndata))
			{
				JObject obj = JObject.Parse(returndata);
				string code = obj["code"].ToString();
				if (code == "1000")
				{
					string token = obj["data"]["token"].ToString();
					Hashtable newToken = new Hashtable
						{
							{ "token", token }
						};
					returndata = APIGetHttpService.OutsideHttp("http://dust.0531yun.cn/api/data/getRealtimeData?deviceIds=40272703", "GET", "application/json;charset=utf-8", newToken);
					JObject obj1 = JObject.Parse(returndata);
					string code1 = obj1["code"].ToString();
					if (code1 == "1000")
					{/*
						    hum	float	湿度
							wd8	float	八风向
							lux	float	光照
							tsp	float	悬浮微粒
							no2	float	二氧化氮
							so2	float	二氧化硫
							noise	float	噪音
							wp	float	风力
							atm	float	大气压
							ws	float	风速
							tem	float	温度
							o3	float	臭氧
							pm10	float	Pm10
							co	float	一氧化碳
							pm25	float	Pm2.5
							wd360	float	风向						  
						  * */
						Environmental_EnvironmentalMonitoring environment = new Environmental_EnvironmentalMonitoring();
						environment.FileId = Guid.NewGuid().ToString();
						environment.CompileDate = DateTime.Now;
						environment.FileName = "平台同步";
						environment.States = "2";
						environment.UpdateDate = DateTime.Now;
						environment.Pm25 = Funs.GetNewDoubleOrZero(obj1["data"][0]["pm25"].ToString());
						environment.Pm10 = Funs.GetNewDoubleOrZero(obj1["data"][0]["pm10"].ToString());
						environment.Noise = Funs.GetNewDoubleOrZero(obj1["data"][0]["noise"].ToString());
						environment.Tem = Funs.GetNewDoubleOrZero(obj1["data"][0]["tem"].ToString());
						environment.Hum = Funs.GetNewDoubleOrZero(obj1["data"][0]["hum"].ToString());
						environment.Wp = Funs.GetNewDoubleOrZero(obj1["data"][0]["wp"].ToString());
						environment.Ws = Funs.GetNewDoubleOrZero(obj1["data"][0]["ws"].ToString());
						environment.Wd8 = Funs.GetNewDoubleOrZero(obj1["data"][0]["wd8"].ToString());
						environment.Wd360 = Funs.GetNewDoubleOrZero(obj1["data"][0]["wd360"].ToString());
						environment.Tsp = Funs.GetNewDoubleOrZero(obj1["data"][0]["tsp"].ToString());
						environment.Atm = Funs.GetNewDoubleOrZero(obj1["data"][0]["atm"].ToString());
						environment.Lux = Funs.GetNewDoubleOrZero(obj1["data"][0]["lux"].ToString());
						environment.Co = Funs.GetNewDoubleOrZero(obj1["data"][0]["co"].ToString());
						environment.So2 = Funs.GetNewDoubleOrZero(obj1["data"][0]["so2"].ToString());
						environment.No2 = Funs.GetNewDoubleOrZero(obj1["data"][0]["no2"].ToString());
						environment.O3 = Funs.GetNewDoubleOrZero(obj1["data"][0]["o3"].ToString());
						environment.DeviceId = obj1["data"][0]["deviceId"].ToString();
						environment.ProjectId = "8d9b15ef-d41d-4cb3-8699-7fc132103d6d";
						Funs.DB.Environmental_EnvironmentalMonitoring.InsertOnSubmit(environment);
						Funs.DB.SubmitChanges();
					}
				}
			}


			//古雷 环境数据
			returndata = APIGetHttpService.OutsideHttp("http://dust.0531yun.cn/api/getTokenByAcc?loginName=pcbpa2024&password=pcbpa2024", "GET", "application/json;charset=utf-8");
			if (!string.IsNullOrEmpty(returndata))
			{
				JObject obj = JObject.Parse(returndata);
				string code = obj["code"].ToString();
				if (code == "1000")
				{
					string token = obj["data"]["token"].ToString();
					Hashtable newToken = new Hashtable
						{
							{ "token", token }
						};
					returndata = APIGetHttpService.OutsideHttp("http://dust.0531yun.cn/api/data/getRealtimeData?deviceIds=40322866", "GET", "application/json;charset=utf-8", newToken);
					JObject obj1 = JObject.Parse(returndata);
					string code1 = obj1["code"].ToString();
					if (code1 == "1000")
					{/*
						    hum	float	湿度
							wd8	float	八风向
							lux	float	光照
							tsp	float	悬浮微粒
							no2	float	二氧化氮
							so2	float	二氧化硫
							noise	float	噪音
							wp	float	风力
							atm	float	大气压
							ws	float	风速
							tem	float	温度
							o3	float	臭氧
							pm10	float	Pm10
							co	float	一氧化碳
							pm25	float	Pm2.5
							wd360	float	风向						  
						  * */
						Environmental_EnvironmentalMonitoring environment = new Environmental_EnvironmentalMonitoring();
						environment.FileId = Guid.NewGuid().ToString();
						environment.CompileDate = DateTime.Now;
						environment.FileName = "平台同步";
						environment.States = "2";
						environment.UpdateDate = DateTime.Now;
						environment.Pm25 = Funs.GetNewDoubleOrZero(obj1["data"][0]["pm25"].ToString());
						environment.Pm10 = Funs.GetNewDoubleOrZero(obj1["data"][0]["pm10"].ToString());
						environment.Noise = Funs.GetNewDoubleOrZero(obj1["data"][0]["noise"].ToString());
						environment.Tem = Funs.GetNewDoubleOrZero(obj1["data"][0]["tem"].ToString());
						environment.Hum = Funs.GetNewDoubleOrZero(obj1["data"][0]["hum"].ToString());
						environment.Wp = Funs.GetNewDoubleOrZero(obj1["data"][0]["wp"].ToString());
						environment.Ws = Funs.GetNewDoubleOrZero(obj1["data"][0]["ws"].ToString());
						environment.Wd8 = Funs.GetNewDoubleOrZero(obj1["data"][0]["wd8"].ToString());
						environment.Wd360 = Funs.GetNewDoubleOrZero(obj1["data"][0]["wd360"].ToString());
						environment.Tsp = Funs.GetNewDoubleOrZero(obj1["data"][0]["tsp"].ToString());
						environment.Atm = Funs.GetNewDoubleOrZero(obj1["data"][0]["atm"].ToString());
						environment.Lux = Funs.GetNewDoubleOrZero(obj1["data"][0]["lux"].ToString());
						environment.Co = Funs.GetNewDoubleOrZero(obj1["data"][0]["co"].ToString());
						environment.So2 = Funs.GetNewDoubleOrZero(obj1["data"][0]["so2"].ToString());
						environment.No2 = Funs.GetNewDoubleOrZero(obj1["data"][0]["no2"].ToString());
						environment.O3 = Funs.GetNewDoubleOrZero(obj1["data"][0]["o3"].ToString());
						environment.DeviceId = obj1["data"][0]["deviceId"].ToString();
						environment.ProjectId = "f04b138b-6194-4380-88b5-f8410d7039fa";
						Funs.DB.Environmental_EnvironmentalMonitoring.InsertOnSubmit(environment);
						Funs.DB.SubmitChanges();
					}





				}
			}
            ErrLogInfo.WriteLog("环境数据同步结束!");
        }
    }
}