| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 | 
							- using iBemsDataService.Model;
 
- using Quartz;
 
- using System;
 
- using System.Collections;
 
- using System.Collections.Generic;
 
- using System.Linq;
 
- using System.Transactions;
 
- using System.Web;
 
- using System.Diagnostics;
 
- using DevExpress.Office.Utils;
 
- using System.Text;
 
- using System.Text.RegularExpressions;
 
- using iBemsDataService.Util;
 
- using iBemsDataService.Controllers.Bems.Formula;
 
- using iBemsDataService.Controllers.Bems.Common;
 
- namespace iBemsDataService.Controllers.Bems.ScheduledTask
 
- {
 
-     public class ControlBems : IJob
 
-     {
 
-         private iBemsEntities db = new iBemsEntities();
 
-         private static Regex regexParameter = new Regex(@"\b[A-Z]\b", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.IgnoreCase);
 
-         private static Regex regexFunction = new Regex(@"\$([\w]+).+\$", RegexOptions.Compiled | RegexOptions.Singleline | RegexOptions.IgnoreCase);
 
-         public double GetTempSetValue(int month, CmFacilityTempSet ft)
 
-         {
 
-             switch (month)
 
-             {
 
-                 case 1: return ft.T1;
 
-                 case 2: return ft.T2;
 
-                 case 3: return ft.T3;
 
-                 case 4: return ft.T4;
 
-                 case 5: return ft.T5;
 
-                 case 6: return ft.T6;
 
-                 case 7: return ft.T7;
 
-                 case 8: return ft.T8;
 
-                 case 9: return ft.T9;
 
-                 case 10: return ft.T10;
 
-                 case 11: return ft.T11;
 
-                 case 12: return ft.T12; 
 
-             }
 
-             return 0;
 
-         }
 
-         public CmFacility GetCmFacility(CmFacilityTempSet tempset)
 
-         {
 
-             var FTS = from f in db.CmFacility where f.SiteId == tempset.SiteId && f.FacilityCode == tempset.FacilityCode select f;
 
-             return (CmFacility)FTS.First();
 
-         }
 
-         public void Execute( IJobExecutionContext context )
 
-         {
 
-             var today = DateTime.Now;
 
-             //var tomorrow = today.AddDays( 1 );
 
-             //BemsFormulaController BFC = new BemsFormulaController();
 
-             using (var transaction = new TransactionScope())
 
-             {
 
-                 var site = from s in db.CmSite select s;
 
-                 List<CmSite> sitelist = site.ToList();
 
-                 foreach (CmSite s in sitelist)
 
-                 {
 
-                     if (s.IsControlSchedule == true && s.ScheduleCheckHour == today.Hour && today.Minute == 0)
 
-                     {
 
-                         var FTS = from f in db.CmFacilityTempSet where f.SiteId == s.SiteId select f;
 
-                         List<CmFacilityTempSet> list = FTS.ToList();
 
-                         foreach (CmFacilityTempSet ts in list)
 
-                         {
 
-                             CmFacility facility = GetCmFacility(ts);
 
-                             var queryFormula = from f in db.BemsFormula
 
-                                 where f.SiteId == ts.SiteId && f.FacilityTypeId == facility.FacilityTypeId && f.FacilityCode == ts.FacilityCode && f.FormulaId == 20
 
-                                 select f;
 
-                             if (queryFormula == null || queryFormula.Count() <= 0) continue;
 
-                             BemsFormula formula = (BemsFormula)queryFormula.First();
 
-                             ArrayList parameters = new ArrayList();
 
-                             MathCalculator calculator = new MathCalculator();
 
-                             if (false == calculator.Compile(formula.Formula))
 
-                             {
 
-                                 throw new Exception("Failed to compile formula: " + formula.Formula);
 
-                             }
 
-                             var match = regexParameter.Match(formula.Formula);
 
-                             if (match.Success)
 
-                             {
 
-                                 var queryParameters = db.BemsFormulaParameter.Where(x =>
 
-                                     x.SiteId == ts.SiteId && x.FacilityTypeId == facility.FacilityTypeId &&
 
-                                     x.FacilityCode == ts.FacilityCode && x.FormulaId == 20);
 
-                                 if (queryParameters.Any() == false)
 
-                                 {
 
-                                     //; throw new Exception(string.Format("Not Found 2222 Parameters: {0},{1},{2},{3}", ts.SiteId, 99, ts.FacilityCode, 20));
 
-                                     ;
 
-                                 }
 
-                                 foreach (var p in queryParameters)
 
-                                 {
 
-                                     var control = new BemsControlPointHistory
 
-                                     {
 
-                                         SiteId = ts.SiteId,
 
-                                         //FacilityTypeId = 99,
 
-                                         FacilityTypeId = facility.FacilityTypeId,
 
-                                         FacilityCode = p.ParameterFacilityCode,
 
-                                         PropertyId = p.ParameterPropertyId,
 
-                                         CreateDateTime = today,
 
-                                         ControlValue = GetTempSetValue(today.Month, ts),
 
-                                         WriteServiceName = null,
 
-                                         ActionDateTime = null
 
-                                     };
 
-                                     db.BemsControlPointHistory.Add(control);
 
-                                     db.SaveChanges();
 
-                                 }
 
-                             }
 
-                         }
 
-                     }
 
-                 }
 
-                 transaction.Complete();
 
-             }   
 
-         }
 
-         private void InsertWorkOrder( FmsWorkRequest workRequest , List<FmsWorkScheduleToFacility> facilities )
 
-         {
 
-             var workOrder = new FmsWorkOrder
 
-             {
 
-                 SiteId = workRequest.SiteId ,
 
-                 WorkRequestId = workRequest.WorkRequestId ,
 
-                 BusinessFieldId = workRequest.BusinessFieldId ,
 
-                 OrderUserId = workRequest.RequestUserId ,
 
-                 OrderDate = DateTime.Now.Date ,
 
-                 Title = workRequest.Title ,
 
-                 Content = workRequest.Content ,
 
-                 StartWorkDate = workRequest.StartWorkDate 
 
-             };
 
-             workOrder = db.FmsWorkOrder.Add( workOrder );
 
-             foreach( var f in facilities )
 
-             {
 
-                 db.FmsWorkOrderToFacility.Add( new FmsWorkOrderToFacility
 
-                 {
 
-                     SiteId = f.SiteId ,
 
-                     WorkRequestId = workOrder.WorkRequestId ,
 
-                     FacilityCode = f.FacilityCode
 
-                 } );
 
-             }
 
-             workRequest.WorkProgressId = (short)WorkProgress.WORK_STANDBY;
 
-             db.SaveChanges();
 
-         }
 
-     }
 
- }
 
 
  |