Explorar el Código

Merge branch 'master' of http://unque781.synology.me:3000/GSI/OHV

unque781 hace 6 años
padre
commit
0ce75caa8f
Se han modificado 25 ficheros con 370 adiciones y 264 borrados
  1. 1 0
      Dev/OHV/OHV.Common/OHV.Common.csproj
  2. 14 0
      Dev/OHV/OHV.Common/Shareds/ConstInt.cs
  3. 1 1
      Dev/OHV/OHV.Module.Interactivity/PopUp/ConfigViewModel.cs
  4. 4 1
      Dev/OHV/OHV.Module.Interactivity/PopUp/DriveServoViewModel.cs
  5. 6 6
      Dev/OHV/OHV.Module.Interactivity/PopUp/LockServoViewModel.cs
  6. 2 2
      Dev/OHV/OHV.Module.ListViews/SubViews/VehicleCommandInsertViewModel.cs
  7. 5 5
      Dev/OHV/OHV.Module.ListViews/Views/CommandListViewModel.cs
  8. 6 6
      Dev/OHV/OHV.Module.ListViews/Views/SubCommandListViewModel.cs
  9. 14 14
      Dev/OHV/OHV.Module.MainViews/Views/HistoryViewModel.cs
  10. 1 1
      Dev/OHV/OHV.Module.Status/VehicleStatusViewModel.cs
  11. 111 44
      Dev/OHV/OHV.SqliteDAL/DAL/AbstractDAL.cs
  12. 0 13
      Dev/OHV/OHV.SqliteDAL/DAL/AlarmDAL.cs
  13. 0 1
      Dev/OHV/OHV.SqliteDAL/OHV.SqliteDAL.csproj
  14. 5 2
      Dev/OHV/OHV.SqliteDAL/OHVDbInitializer.cs
  15. 23 21
      Dev/OHV/OHV.SqliteDAL/SqliteManager.cs
  16. 2 2
      Dev/OHV/OHV.Vehicle/Concept/D_MainWindowViewModel.cs
  17. 12 11
      Dev/OHV/VehicleControlSystem/ControlLayer/Clamp.cs
  18. 19 4
      Dev/OHV/VehicleControlSystem/ControlLayer/MQ/ZmqManager.cs
  19. 45 39
      Dev/OHV/VehicleControlSystem/ControlLayer/Motion/GSIDrive.cs
  20. 51 60
      Dev/OHV/VehicleControlSystem/ControlLayer/Vehicle.cs
  21. 2 2
      Dev/OHV/VehicleControlSystem/Managers/AutoManager.cs
  22. 10 8
      Dev/OHV/VehicleControlSystem/Managers/HostManager.cs
  23. 21 10
      Dev/OHV/VehicleControlSystem/Managers/RouteManager.cs
  24. 11 8
      Dev/OHV/VehicleControlSystem/Managers/Scheduler.cs
  25. 4 3
      Dev/OHV/VehicleControlSystem/VCSystem.cs

+ 1 - 0
Dev/OHV/OHV.Common/OHV.Common.csproj

@@ -110,6 +110,7 @@
     <Compile Include="Model\SubCmd.cs" />
     <Compile Include="Model\VehicleInfo.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Shareds\ConstInt.cs" />
     <Compile Include="Shareds\ConstString.cs" />
     <Compile Include="Shareds\SharedEnumType.cs" />
     <Compile Include="Shareds\RegionNames.cs" />

+ 14 - 0
Dev/OHV/OHV.Common/Shareds/ConstInt.cs

@@ -0,0 +1,14 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace OHV.Common.Shareds
+{
+    public class ConstInt
+    {
+        public const int EXECUTE_ERROR = -1;
+        public const int EXECUTE_SUCCESS = 0;
+    }
+}

+ 1 - 1
Dev/OHV/OHV.Module.Interactivity/PopUp/ConfigViewModel.cs

@@ -76,7 +76,7 @@ namespace OHV.Module.Interactivity.PopUp
 
         public void OnDialogOpened(IDialogParameters parameters)
         {
-            this.ConfigListProperty = sql.ConfigDal.All;
+            this.ConfigListProperty = sql.ConfigDal.GetAll().ToList();
         }
 
         private void CloseDialog(string parameter)

+ 4 - 1
Dev/OHV/OHV.Module.Interactivity/PopUp/DriveServoViewModel.cs

@@ -1,4 +1,5 @@
 using GSG.NET.Extensions;
+using GSG.NET.Utils;
 using OHV.Common.Events;
 using OHV.Common.Model;
 using OHV.Common.Shareds;
@@ -564,7 +565,9 @@ namespace OHV.Module.Interactivity.PopUp
                 var vcsMsg = new VCSMessageEventArgs() { Kind = VCSMessageEventArgs.eVCSMessageKind.ReqRouteManager };
                 this.eventAggregator.GetEvent<VCSMessagePubSubEvent>().Publish( vcsMsg );
 
-                this.RouteList = new ObservableCollection<Route>( sql.RouteDal.All );
+                var sT = SwUtils.CurrentTimeMillis;
+                this.RouteList = new ObservableCollection<Route>( sql.RouteDal.GetAll() );
+                Console.WriteLine( SwUtils.Elapsed( sT ) );
             } );
 
             await task;

+ 6 - 6
Dev/OHV/OHV.Module.Interactivity/PopUp/LockServoViewModel.cs

@@ -253,11 +253,11 @@ namespace OHV.Module.Interactivity.PopUp
             this.LeftAxisBrush = Brushes.Orange;
 
             List<AxisPositionData> positionList = null;
-            positionList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_LOCK );
+            positionList = sql.AxisPositionDataDAL.Get( x => x.Name.Equals( ConstString.TEACH_POSITION_LOCK ) ).ToList();
             this.TargetPosLockLeft = positionList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_LEFT ) ).Single().Value;
 
             //초기 Pos 선택
-            positionList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_LOCK );
+            positionList = sql.AxisPositionDataDAL.Get( x => x.Name.Equals( ConstString.TEACH_POSITION_LOCK ) ).ToList();
             this.TargetPosLockRight = positionList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_RIGHT ) ).Single().Value;
 
             this.SelectedPosition = ConstString.TEACH_POSITION_LOCK;
@@ -306,10 +306,10 @@ namespace OHV.Module.Interactivity.PopUp
                     switch ( this.SelectedPosition )
                     {
                         case ConstString.TEACH_POSITION_LOCK:
-                            dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_LOCK );
+                            dataList = sql.AxisPositionDataDAL.Get( x => x.Name.Equals( ConstString.TEACH_POSITION_LOCK ) ).ToList();
                             break;
                         case ConstString.TEACH_POSITION_UNLOCK:
-                            dataList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_UNLOCK );
+                            dataList = sql.AxisPositionDataDAL.Get( x => x.Name.Equals( ConstString.TEACH_POSITION_UNLOCK ) ).ToList();
                             break;
                     }
 
@@ -599,10 +599,10 @@ namespace OHV.Module.Interactivity.PopUp
             switch ( this.SelectedPosition )
             {
                 case ConstString.TEACH_POSITION_LOCK:
-                    positionList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_LOCK );
+                    positionList = sql.AxisPositionDataDAL.Get( x => x.Name.Equals( ConstString.TEACH_POSITION_LOCK ) ).ToList();
                     break;
                 case ConstString.TEACH_POSITION_UNLOCK:
-                    positionList = sql.AxisPositionDataDAL.GetKFromPostion( ConstString.TEACH_POSITION_UNLOCK );
+                    positionList = sql.AxisPositionDataDAL.Get( x => x.Name.Equals( ConstString.TEACH_POSITION_UNLOCK ) ).ToList();
                     break;
             }
             var sqlAxisLeft = positionList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_LEFT ) ).Single();

+ 2 - 2
Dev/OHV/OHV.Module.ListViews/SubViews/VehicleCommandInsertViewModel.cs

@@ -50,7 +50,7 @@ namespace OHV.Module.ListViews.SubViews
             this.eventAggregator = ea;
             this.sql = sql;
 
-            this.TargetIDList = sql.RouteDal.All.Select(x => x.Name).ToList();
+            this.TargetIDList = sql.RouteDal.GetAll().Select(x => x.Name).ToList();
             this.TargetIDList.Add("None");
 
             this.SaveCommand = new DelegateCommand(ExecuteSaveCommand);
@@ -66,7 +66,7 @@ namespace OHV.Module.ListViews.SubViews
         private void ExecuteSaveCommand()
         {
             Command cmd = new Command() { TargetID = TargetID, Type = SelectedCommandType };
-            sql.CommandDAL.Add(cmd);
+            sql.CommandDAL.Insert(cmd);
         }
 
     }

+ 5 - 5
Dev/OHV/OHV.Module.ListViews/Views/CommandListViewModel.cs

@@ -68,9 +68,9 @@ namespace OHV.Module.ListViews.Views
             this.eventAggregator = ea;
             this.messageController = msgController;
             this.sql = sql;
-            this.sql.CommandDAL.ChangedProperty += this.RefreshCommandLIst;
+            this.sql.CommandDAL.OnChangeTable += this.RefreshCommandLIst;
 
-            this.CommandList = new ObservableCollection<Command>(sql.CommandDAL.All);
+            this.CommandList = new ObservableCollection<Command>(sql.CommandDAL.GetAll());
 
             //this.TargetIDList = sql.RouteDal.All.Select(x => x.Name).ToList();
             this.TargetIDList = vCSystem.RouteManager.Equipments.Select( e => e.Name ).ToList();
@@ -90,12 +90,12 @@ namespace OHV.Module.ListViews.Views
 
         private void ExecuteDeleteCommand()
         {
-            List<Command> deleteList = new List<Command>();
+            List<string> deleteList = new List<string>();
             foreach (var item in this.CommandList)
             {
                 if (item.IsSelected)
                 {
-                    deleteList.Add(item);
+                    deleteList.Add(item.CommandID);
                 }
             }
 
@@ -137,7 +137,7 @@ namespace OHV.Module.ListViews.Views
             Application.Current.Dispatcher.Invoke(() =>
             {
                 this.CommandList.Clear();
-                this.CommandList.AddRange(sql.CommandDAL.All);
+                this.CommandList.AddRange(sql.CommandDAL.GetAll());
             });
         }
 

+ 6 - 6
Dev/OHV/OHV.Module.ListViews/Views/SubCommandListViewModel.cs

@@ -59,14 +59,14 @@ namespace OHV.Module.ListViews.Views
         {
             this.eventAggregator = ea;
             this.sql = sql;
-            this.sql.SubCmdDAL.ChangedProperty += SubCmdDAL_ChangedProperty;
+            this.sql.SubCmdDAL.OnChangeTable += SubCmdDAL_ChangedProperty;
 
-            this.SubCmdList = new ObservableCollection<SubCmd>(sql.SubCmdDAL.All);
+            this.SubCmdList = new ObservableCollection<SubCmd>(sql.SubCmdDAL.GetAll());
 
             this.DeleteCommand = new DelegateCommand(ExecuteDeleteCommand);
             this.AddCommand = new DelegateCommand( ExecuteAddCommand );
 
-            this.TargetIDList = sql.RouteDal.All.Select( x => x.Name ).ToList();
+            this.TargetIDList = sql.RouteDal.GetAll().Select( x => x.Name ).ToList();
             this.TargetIDList.Add( "None" );
 
             this.eventAggregator.GetEvent<VehicleSubCmdListChanged>().Unsubscribe(UICallbackCommunication);
@@ -107,12 +107,12 @@ namespace OHV.Module.ListViews.Views
 
         private void ExecuteDeleteCommand()
         {
-            List<SubCmd> deleteList = new List<SubCmd>();
+            List<string> deleteList = new List<string>();
             foreach (var item in this.SubCmdList)
             {
                 if (item.IsSelected)
                 {
-                    deleteList.Add(item);
+                    deleteList.Add(item.ID);
                 }
             }
             deleteList.ForEach(x => { this.sql.SubCmdDAL.Delete(x); });
@@ -125,7 +125,7 @@ namespace OHV.Module.ListViews.Views
             Application.Current.Dispatcher.Invoke(() =>
             {
                 this.SubCmdList.Clear();
-                this.SubCmdList.AddRange(sql.SubCmdDAL.All);
+                this.SubCmdList.AddRange(sql.SubCmdDAL.GetAll());
             });
         }
     }

+ 14 - 14
Dev/OHV/OHV.Module.MainViews/Views/HistoryViewModel.cs

@@ -28,40 +28,40 @@ namespace OHV.Module.MainViews.Views
         public HistoryViewModel( SqliteManager _sql )
         {
             this.sql = _sql;
-            this.AlarmResetCommand = new DelegateCommand( ExecuteAlarmResetCommand );
+            //this.AlarmResetCommand = new DelegateCommand( ExecuteAlarmResetCommand );
 
-            var ll = sql.HisAlarmDAL.All;
+            var ll = sql.HisAlarmDAL.GetAll();
             if ( ll == null )
                 this.AlarmList = new List<HisAlarm>();
             else
                 this.AlarmList = ll.OrderByDescending( x => x.OccurTime ).ToList();
 
-            this.sql.HisAlarmDAL.ChangedProperty += HisAlarmDAL_ChangedProperty;
+            this.sql.HisAlarmDAL.OnChangeTable += HisAlarmDAL_ChangedProperty;
         }
 
         private void HisAlarmDAL_ChangedProperty()
         {
             //TODO: AlarmList Null Exception 발생함.
-           if ( this.AlarmList.Count <= 0 )
+           if ( this.AlarmList == null )
                 return;
 
             this.AlarmList.Clear();
             this.AlarmList = null;
 
-            this.AlarmList = sql.HisAlarmDAL.All.OrderByDescending( x => x.OccurTime ).ToList();
+            this.AlarmList = sql.HisAlarmDAL.GetAll().OrderByDescending( x => x.OccurTime ).ToList();
         }
 
-        async private void ExecuteAlarmResetCommand( )
-        {
-            //Grid Refresh 대안 찾을것
-            //var backupList = this.AlarmList.ToList();
-            //this.AlarmList.Clear();
+        //async private void ExecuteAlarmResetCommand( )
+        //{
+        //    //Grid Refresh 대안 찾을것
+        //    //var backupList = this.AlarmList.ToList();
+        //    //this.AlarmList.Clear();
 
-            //await Task.Delay( 1000 );
+        //    //await Task.Delay( 1000 );
 
-            //var e = new ObservableCollection<Alarm>( backupList );
-            //this.AlarmList = e;
-        }
+        //    //var e = new ObservableCollection<Alarm>( backupList );
+        //    //this.AlarmList = e;
+        //}
 
         public void Init( ) 
         {

+ 1 - 1
Dev/OHV/OHV.Module.Status/VehicleStatusViewModel.cs

@@ -91,7 +91,7 @@ namespace OHV.Module.Status
 
             this.sqliteManager = sql;
 
-            this.VehicleCurrentTag = sql.VehicleInfoDAL.GetInfo().CurrentTag;
+            this.VehicleCurrentTag = sql.VehicleInfoDAL.GetAll().FirstOrDefault().CurrentTag;
         }
 
         private void DriveUICallBackCommunication( DriveControlEventArgs obj )

+ 111 - 44
Dev/OHV/OHV.SqliteDAL/DAL/AbstractDAL.cs

@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Generic;
 using System.Data.Entity;
+using System.Data.Entity.Core.Objects;
 using System.Linq;
 using System.Linq.Expressions;
 using System.Text;
@@ -11,10 +12,10 @@ namespace OHV.SqliteDAL.DAL
 {
     public interface IRepository<TEntity> where TEntity : class
     {
-        void Create(TEntity entity);
-        void Delete(TEntity entity);
-        void Delete(Guid id);
-        void Edit(TEntity entity);
+        void Create( TEntity entity );
+        void Delete( TEntity entity );
+        void Delete( Guid id );
+        void Edit( TEntity entity );
     }
 
     public class GenericDAL<T> where T : class
@@ -24,7 +25,7 @@ namespace OHV.SqliteDAL.DAL
 
         protected virtual void OnChangedProperty()
         {
-            ChangedProperty?.BeginInvoke(null, null);
+            ChangedProperty?.BeginInvoke( null, null );
         }
 
         public List<T> All
@@ -32,7 +33,7 @@ namespace OHV.SqliteDAL.DAL
             get
             {
                 List<T> ll = new List<T>();
-                using (var db = new OHVDbContext("OHVDb"))
+                using ( var db = new OHVDbContext( "OHVDb" ) )
                 {
                     ll = db.Set<T>().ToList();
                 }
@@ -44,7 +45,7 @@ namespace OHV.SqliteDAL.DAL
         {
             get
             {
-                using (var db = new OHVDbContext("OHVDb"))
+                using ( var db = new OHVDbContext( "OHVDb" ) )
                 {
                     return db.Set<T>().Count();
                 }
@@ -52,63 +53,63 @@ namespace OHV.SqliteDAL.DAL
 
         }
 
-        public T GetK(object key)
+        public T GetK( object key )
         {
-            using (var db = new OHVDbContext("OHVDb"))
+            using ( var db = new OHVDbContext( "OHVDb" ) )
             {
-                return db.Set<T>().Find(key);
+                return db.Set<T>().Find( key );
             }
         }
 
-        public List<T> ListN(Expression<Func<T, bool>> where)
+        public List<T> ListN( Expression<Func<T, bool>> where )
         {
-            using (var db = new OHVDbContext("OHVDb"))
+            using ( var db = new OHVDbContext( "OHVDb" ) )
             {
-                return db.Set<T>().Where(where).ToList();
+                return db.Set<T>().Where( where ).ToList();
             }
         }
 
-        public virtual bool HasK(object key)
+        public virtual bool HasK( object key )
         {
-            return GetK(key) == null ? false: true ;
+            return GetK( key ) == null ? false : true;
         }
 
-        public virtual bool HasN(Expression<Func<T, bool>> where)
+        public virtual bool HasN( Expression<Func<T, bool>> where )
         {
             List<T> ll = new List<T>();
-            using (var db = new OHVDbContext("OHVDb"))
+            using ( var db = new OHVDbContext( "OHVDb" ) )
             {
-                ll = db.Set<T>().Where(where).ToList();
+                ll = db.Set<T>().Where( where ).ToList();
             }
             return ll.Count > 0;
         }
 
-        public void Add(T entity)
+        public void Add( T entity )
         {
-            using (var db = new OHVDbContext("OHVDb"))
+            using ( var db = new OHVDbContext( "OHVDb" ) )
             {
-                db.Set<T>().Add(entity);
+                db.Set<T>().Add( entity );
                 db.SaveChanges();
             }
             OnChangedProperty();
         }
 
-        public void Delete(T entity)
+        public void Delete( T entity )
         {
-            using (var db = new OHVDbContext("OHVDb"))
+            using ( var db = new OHVDbContext( "OHVDb" ) )
             {
-                db.Entry(entity).State = EntityState.Deleted;
+                db.Entry( entity ).State = EntityState.Deleted;
                 //db.Set<T>().Remove(entity);
                 db.SaveChanges();
             }
             OnChangedProperty();
         }
 
-        public virtual void Update(T entity)
+        public virtual void Update( T entity )
         {
-            using (var db = new OHVDbContext("OHVDb"))
+            using ( var db = new OHVDbContext( "OHVDb" ) )
             {
-                db.Entry(entity).State = EntityState.Modified;
+                db.Entry( entity ).State = EntityState.Modified;
                 db.SaveChanges();
             }
             OnChangedProperty();
@@ -116,9 +117,9 @@ namespace OHV.SqliteDAL.DAL
 
         public void Clean()
         {
-            using (var db = new OHVDbContext("OHVDb"))
+            using ( var db = new OHVDbContext( "OHVDb" ) )
             {
-                db.Set<T>().RemoveRange(db.Set<T>());
+                db.Set<T>().RemoveRange( db.Set<T>() );
                 db.SaveChanges();
             }
             OnChangedProperty();
@@ -132,41 +133,107 @@ namespace OHV.SqliteDAL.DAL
         private OHVDbContext _context = null;
         private DbSet<T> table = null;
 
+        public event Action OnChangeTable;
+
+        object lockObj = new object();
+
+        public int Count { get => GetAll().Count(); }
+
+        public GenericRepository()
+        {
+            this._context = new OHVDbContext( "OHVDb" );
+            this.table = this._context.Set<T>();
+        }
+
+        public GenericRepository( OHVDbContext dbContext )
+        {
+            this._context = dbContext;
+            this.table = _context.Set<T>();
+        }
+
         public IEnumerable<T> GetAll()
         {
             return table.ToList();
+
         }
-        public T GetById(object id)
+
+        public virtual IEnumerable<T> Get( Expression<Func<T, bool>> filter = null, Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null, string includeProperties = "" )
         {
-            return table.Find(id);
+            IQueryable<T> query = this.table;
+
+            if ( filter != null )
+                query = query.Where( filter );
+
+            if ( includeProperties != null )
+            {
+                foreach ( var includeProperty in includeProperties.Split( new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries ) )
+                    query = query.Include( includeProperty );
+            }
+
+            if ( orderBy != null )
+                return orderBy( query ).ToList();
+            else
+                return query.ToList();
+        }
+
+        public T GetById( object id )
+        {
+            return table.Find( id );
+        }
+        public void Insert( T obj )
+        {
+            table.Add( obj );
+            this.Save();
+        }
+        public void Update( T obj )
+        {
+            table.Attach( obj );
+            _context.Entry( obj ).State = EntityState.Modified;
+            this.Save();
         }
-        public void Insert(T obj)
+        public void Delete( object id )
         {
-            table.Add(obj);
+            T existing = table.Find( id );
+            table.Remove( existing );
+            this.Save();
         }
-        public void Update(T obj)
+        public void Delete( Expression<Func<T, bool>> filter )
         {
-            table.Attach(obj);
-            _context.Entry(obj).State = EntityState.Modified;
+            var delList = this.table.Where( filter ).ToList();
+            if ( delList.Count > 0 )
+            {
+                this.table.RemoveRange( delList );
+                Save();
+            }
         }
-        public void Delete(object id)
+
+        public void Clean()
         {
-            T existing = table.Find(id);
-            table.Remove(existing);
+            table.RemoveRange( table );
+            this.Save();
         }
         public void Save()
         {
-            _context.SaveChanges();
+            lock ( this.lockObj )
+            {
+                _context.SaveChanges();
+                this.OnChangeTable?.BeginInvoke( null, null );
+            }
         }
     }
 
     public interface IGenericRepository<T> where T : class
     {
+        event Action OnChangeTable;
+        int Count { get; }
         IEnumerable<T> GetAll();
-        T GetById(object id);
-        void Insert(T obj);
-        void Update(T obj);
-        void Delete(object id);
+        IEnumerable<T> Get( Expression<Func<T, bool>> filter = null, Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null, string includeProperties = "" );
+        T GetById( object id );
+        void Insert( T obj );
+        void Update( T obj );
+        void Delete( object id );
+        void Delete( Expression<Func<T, bool>> filter = null );
+        void Clean();
         void Save();
     }
 }

+ 0 - 13
Dev/OHV/OHV.SqliteDAL/DAL/AlarmDAL.cs

@@ -1,13 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using OHV.Common.Model;
-
-namespace OHV.SqliteDAL.DAL
-{
-    public class AlarmDAL : GenericDAL<Alarm>
-    {
-    }
-}

+ 0 - 1
Dev/OHV/OHV.SqliteDAL/OHV.SqliteDAL.csproj

@@ -95,7 +95,6 @@
   <ItemGroup>
     <Compile Include="CustomHistory.cs" />
     <Compile Include="DAL\AbstractDAL.cs" />
-    <Compile Include="DAL\AlarmDAL.cs" />
     <Compile Include="DAL\AxisConfigDAL.cs" />
     <Compile Include="DAL\AxisPositionDataDAL.cs" />
     <Compile Include="DAL\AxisVelocityDataDAL.cs" />

+ 5 - 2
Dev/OHV/OHV.SqliteDAL/OHVDbInitializer.cs

@@ -217,8 +217,11 @@ namespace OHV.SqliteDAL
                 new Alarm { AlarmId = 34, Kind = eAlarmKind.Drive, Name = "PIO", Text="Battery Charge PIO Not Ready On",Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 35, Kind = eAlarmKind.Drive, Name = "PIO", Text="Battery Charge PIO Not SEND_RUN On TimeOver",Solution="", Description="", Level = eAlarmLevel.Falut, },
                 new Alarm { AlarmId = 36, Kind = eAlarmKind.Drive, Name = "PIO", Text="Battery Charge PIO Not SEND_COMPLETE On TimeOver",Solution="", Description="", Level = eAlarmLevel.Falut, },
-                new Alarm { AlarmId = 37, Kind = eAlarmKind.Drive, Name = "PIO", Text="Steering State Abnormal",Solution="", Description="", Level = eAlarmLevel.Falut, },
-                new Alarm { AlarmId = 38, Kind = eAlarmKind.Drive, Name = "PIO", Text="Steering State Abnormal",Solution="", Description="", Level = eAlarmLevel.Falut, },
+                new Alarm { AlarmId = 37, Kind = eAlarmKind.Drive, Name = "Move", Text="Drive Move Start Time Over",Solution="", Description="", Level = eAlarmLevel.Falut, },
+                new Alarm { AlarmId = 38, Kind = eAlarmKind.Drive, Name = "Move", Text="Drive Command Not Response",Solution="", Description="", Level = eAlarmLevel.Falut, },
+                new Alarm { AlarmId = 39, Kind = eAlarmKind.Drive, Name = "Move", Text="Drive Still Running, Over 1 Hour",Solution="", Description="", Level = eAlarmLevel.Falut, },
+                new Alarm { AlarmId = 40, Kind = eAlarmKind.Drive, Name = "Move", Text="Main Command not Exist Motion Stop",Solution="", Description="", Level = eAlarmLevel.Falut, },
+                new Alarm { AlarmId = 41, Kind = eAlarmKind.Drive, Name = "Move", Text="Main Command not Exist Motion command",Solution="", Description="", Level = eAlarmLevel.Falut, },
             } );
 
             //context.Set<HisAlarm>().Add(new HisAlarm { AlarmId = 1, OccurTime = DateTime.Now.AddDays(-10) });

+ 23 - 21
Dev/OHV/OHV.SqliteDAL/SqliteManager.cs

@@ -4,6 +4,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 using OHV.Common.Interfaces;
+using OHV.Common.Model;
 using OHV.SqliteDAL.DAL;
 using Prism.Ioc;
 using Prism.Modularity;
@@ -13,30 +14,31 @@ namespace OHV.SqliteDAL
     [Module(ModuleName = "SqliteManager")]
     public class SqliteManager : ISqlManager, IModule
     {
-        public ConfigDAL ConfigDal { get; set; }
-        public RouteDAL RouteDal { get; set; }
-        public CommandDAL CommandDAL { get; set; }
-        public SubCmdDAL SubCmdDAL { get; set; }
-        public AxisConfigDAL AxisConfigDAL { get; set; }
-        public AxisPositionDataDAL AxisPositionDataDAL { get; set; }
-        public AxisVelocityDataDAL AxisVelocityDataDAL { get; set; }
-        public AlarmDAL AlarmDAL { get; set; }
-        public HisAlarmDAL HisAlarmDAL { get; set; }
-        public VehicleInfoDAL VehicleInfoDAL { get; set; }
+        public IGenericRepository<Config> ConfigDal { get; set; }
+        //public RouteDAL RouteDal { get; set; }
+        public IGenericRepository<Command> CommandDAL { get; set; }
+        public IGenericRepository<SubCmd> SubCmdDAL { get; set; }
+        public IGenericRepository<AxisConfig> AxisConfigDAL { get; set; }
+        public IGenericRepository<AxisPositionData> AxisPositionDataDAL { get; set; }
+        public IGenericRepository<AxisVelocityData> AxisVelocityDataDAL { get; set; }
+        public IGenericRepository<Alarm> AlarmDAL { get; set; }
+        public IGenericRepository<VehicleInfo> VehicleInfoDAL { get; set; }
+        public IGenericRepository<HisAlarm> HisAlarmDAL { get; set; }
+        public IGenericRepository<Route> RouteDal { get; set; }
 
         public SqliteManager()
         {
-            this.ConfigDal = new ConfigDAL();
-            this.RouteDal = new RouteDAL();
-            this.SubCmdDAL = new SubCmdDAL();
-            this.CommandDAL = new CommandDAL();
-            this.AxisConfigDAL = new AxisConfigDAL();
-            this.AxisPositionDataDAL = new AxisPositionDataDAL();
-            this.AxisVelocityDataDAL = new AxisVelocityDataDAL();
-            this.AlarmDAL = new AlarmDAL();
-            this.HisAlarmDAL = new HisAlarmDAL();
-            
-            this.VehicleInfoDAL = new VehicleInfoDAL();
+            this.ConfigDal = new GenericRepository<Config>();
+            this.SubCmdDAL = new GenericRepository<SubCmd>();
+            this.CommandDAL = new GenericRepository<Command>();
+
+            this.AxisConfigDAL = new GenericRepository<AxisConfig>();
+            this.AxisPositionDataDAL = new GenericRepository<AxisPositionData>();
+            this.AxisVelocityDataDAL = new GenericRepository<AxisVelocityData>();
+            this.AlarmDAL = new GenericRepository<Alarm>() ;
+            this.VehicleInfoDAL = new GenericRepository<VehicleInfo>();
+            this.HisAlarmDAL = new GenericRepository<HisAlarm>();
+            this.RouteDal = new GenericRepository<Route>();
         }
 
         public void RegisterTypes(IContainerRegistry containerRegistry)

+ 2 - 2
Dev/OHV/OHV.Vehicle/Concept/D_MainWindowViewModel.cs

@@ -252,9 +252,9 @@ namespace OHV.Vehicle.Concept
             this.messageController = _msgController;
             this.sql = _sql;
 
-            this.VehicleID = sql.ConfigDal.GetK( ConstString.VehicleID ).Value;
+            this.VehicleID = sql.ConfigDal.GetById( ConstString.VehicleID ).Value;
             //this.VehicleIP = sql.ConfigDal.GetK( ConstString.Addr ).Value;
-            this.OcsIP = sql.ConfigDal.GetK( ConstString.Addr ).Value;
+            this.OcsIP = sql.ConfigDal.GetById( ConstString.Addr ).Value;
 
             this.TestCommand = new DelegateCommand( ExecuteTextCommand );
             this.NavigateCommand = new DelegateCommand<object>( this.Navigate );

+ 12 - 11
Dev/OHV/VehicleControlSystem/ControlLayer/Clamp.cs

@@ -1,6 +1,7 @@
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Security.Cryptography.X509Certificates;
 using System.Threading;
 using System.Threading.Tasks;
 using FluentResults;
@@ -122,13 +123,13 @@ namespace VehicleControlSystem.ControlLayer
         #region Request Method
         private void ReqSyncState( AxisControlEventArgs args )
         {
-            var leftPositionDatas = sql.AxisPositionDataDAL.GetKFromName( ConstString.AXIS_CARRIER_LOCK_LEFT ).ToList();
+            var leftPositionDatas = sql.AxisPositionDataDAL.Get(x=>x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_LEFT ) ).ToList();
             var leftLockData = leftPositionDatas.Where( x => x.Name.Equals( ConstString.TEACH_POSITION_LOCK ) ).Single();
             var leftUnLockData = leftPositionDatas.Where( x => x.Name.Equals( ConstString.TEACH_POSITION_UNLOCK ) ).Single();
 
             var left = this.axes.Where( x => x.Config.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_LEFT ) ).Single();
 
-            var rightPositionDatas = sql.AxisPositionDataDAL.GetKFromName( ConstString.AXIS_CARRIER_LOCK_RIGHT ).ToList();
+            var rightPositionDatas = sql.AxisPositionDataDAL.Get(x=>x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_RIGHT) ).ToList();
             var rightLockData = leftPositionDatas.Where( x => x.Name.Equals( ConstString.TEACH_POSITION_LOCK ) ).Single();
             var rightUnLockData = leftPositionDatas.Where( x => x.Name.Equals( ConstString.TEACH_POSITION_UNLOCK ) ).Single();
 
@@ -169,7 +170,7 @@ namespace VehicleControlSystem.ControlLayer
                 }
                 else
                 {
-                    var alarm = this.sql.AlarmDAL.GetK( result );
+                    var alarm = this.sql.AlarmDAL.GetById( result );
                     if ( alarm == null )
                         alarm = new Alarm() { Name = "UnKnown Alarm", Text = "Not Define" };
 
@@ -189,7 +190,7 @@ namespace VehicleControlSystem.ControlLayer
                 }
                 else
                 {
-                    var alarm = this.sql.AlarmDAL.GetK( result );
+                    var alarm = this.sql.AlarmDAL.GetById( result );
                     if ( alarm == null )
                         alarm = new Alarm() { Name = "UnKnown Alarm", Text = "Not Define" };
 
@@ -364,7 +365,7 @@ namespace VehicleControlSystem.ControlLayer
                 result = this.MoveToLockPosition( arg.AxisName );
                 if ( result != 0 )
                 {
-                    var alarm = this.sql.AlarmDAL.GetK( result );
+                    var alarm = this.sql.AlarmDAL.GetById( result );
                     if ( alarm == null )
                         alarm = new Alarm() { Name = "Unknown Alarm", Text = "Not define" };
 
@@ -381,7 +382,7 @@ namespace VehicleControlSystem.ControlLayer
                 result = this.MoveToUnlockPosition( arg.AxisName );
                 if ( result != 0 )
                 {
-                    var alarm = this.sql.AlarmDAL.GetK( result );
+                    var alarm = this.sql.AlarmDAL.GetById( result );
                     if ( alarm == null )
                         alarm = new Alarm() { Name = "Unknown Alarm", Text = "Not define" };
 
@@ -406,7 +407,7 @@ namespace VehicleControlSystem.ControlLayer
 
         void CreateAxis()
         {
-            sql.AxisConfigDAL.All.ForEach( config =>
+            sql.AxisConfigDAL.GetAll().ToList().ForEach( config =>
              {
                  Axis.AxisConfig c = new Axis.AxisConfig
                  {
@@ -426,7 +427,7 @@ namespace VehicleControlSystem.ControlLayer
 
             this.axes.ForEach( axis =>
              {
-                 var data = sql.AxisVelocityDataDAL.GetK( axis.Config.AxisName );
+                 var data = sql.AxisVelocityDataDAL.Get( x => x.AxisName.Equals( axis.Config.AxisName ) ).FirstOrDefault();
                  Axis.AxisData axisData = new AxisData
                  {
                      AxisNo = data.id,
@@ -506,7 +507,7 @@ namespace VehicleControlSystem.ControlLayer
         #region Data
         public void SavePositionData( string pos, double left, double right )
         {
-            var dataList = sql.AxisPositionDataDAL.GetKFromPostion( pos );
+            var dataList = sql.AxisPositionDataDAL.Get(x=>x.Name.Equals( pos) );
             var sqlLeft = dataList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_LEFT ) ).Single();
             var sqlRight = dataList.Where( x => x.AxisName.Equals( ConstString.AXIS_CARRIER_LOCK_RIGHT ) ).Single();
 
@@ -529,7 +530,7 @@ namespace VehicleControlSystem.ControlLayer
         public int MoveToLockPosition( string axisName )
         {
             var servo = this.axes.Where( x => x.Config.AxisName.Equals( axisName ) ).Single();
-            var axisPositionDatas = sql.AxisPositionDataDAL.GetKFromName( axisName ).ToList();
+            var axisPositionDatas = sql.AxisPositionDataDAL.Get(x=>x.Name.Equals( axisName )).ToList();
             var data = axisPositionDatas.Where( x => x.Name.Equals( ConstString.TEACH_POSITION_LOCK ) ).Single();
 
             int result = servo.Move( data.Value );
@@ -540,7 +541,7 @@ namespace VehicleControlSystem.ControlLayer
         public int MoveToUnlockPosition( string axisName )
         {
             var servo = this.axes.Where( x => x.Config.AxisName.Equals( axisName ) ).Single();
-            var axisPositionDatas = sql.AxisPositionDataDAL.GetKFromName( axisName ).ToList();
+            var axisPositionDatas = sql.AxisPositionDataDAL.Get( x => x.Name.Equals( axisName ) ).ToList();
             var data = axisPositionDatas.Where( x => x.Name.Equals( ConstString.TEACH_POSITION_UNLOCK ) ).Single();
 
             int result = servo.Move( data.Value );

+ 19 - 4
Dev/OHV/VehicleControlSystem/ControlLayer/MQ/ZmqManager.cs

@@ -12,6 +12,7 @@ using System;
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.Linq;
+using System.Runtime.InteropServices.WindowsRuntime;
 using System.Text;
 using System.Threading.Tasks;
 using VehicleControlSystem.ControlLayer.Serial.BatteryTabos;
@@ -24,7 +25,6 @@ namespace VehicleControlSystem.ControlLayer.MQ
     {
         Logger logger = Logger.GetLogger();
 
-        SubscriberSocket subDriveInfoSocket = null;
         PublisherSocket pub = null;
         SubscriberSocket sub = null;
         RequestSocket req = null;
@@ -172,7 +172,12 @@ namespace VehicleControlSystem.ControlLayer.MQ
 
             req = new RequestSocket();
             this.monitor = new NetMQMonitor( req, "inproc://rep.inproc", SocketEvents.Disconnected | SocketEvents.Connected );
-            this.monitor.Connected += ( s, a ) => { this.IsReqConnected = true; CurrentPointNo = GetCurrentPointNo(); };
+            this.monitor.Connected += ( s, a ) => 
+            { 
+                this.IsReqConnected = true; 
+                CurrentPointNo = GetCurrentPointNo();
+                SetCurrentSteeringState( this.vehicle.GetESteeringState() );
+            };
             this.monitor.Disconnected += ( s, a ) => { this.IsReqConnected = false; };
             this.monitor.StartAsync();
 
@@ -588,15 +593,25 @@ namespace VehicleControlSystem.ControlLayer.MQ
         #endregion
 
         #region Set Request Method
-        internal void SetStartMove()
+        internal int SetStartMove()
         {
             if ( !SetRequest( "3031", "2" ) )
+            {
                 logger.E( $"[Set Start Move] - Response Time Out" );
+                return 38;
+            }
+
+            return ConstInt.EXECUTE_SUCCESS;
         }
-        internal void SetTargetPoint( string point )
+        internal int SetTargetPoint( string point )
         {
             if ( !SetRequest( "3033", point ) )
+            {
                 logger.E( $"[Set TargetPoint] - Response Time Out" );
+                return 38;
+            }
+
+            return ConstInt.EXECUTE_SUCCESS;
         }
 
         internal void SetObstruction( eObstacleState state )

+ 45 - 39
Dev/OHV/VehicleControlSystem/ControlLayer/Motion/GSIDrive.cs

@@ -6,7 +6,6 @@ using OHV.Common.Model;
 using OHV.Common.Shareds;
 using OHV.SqliteDAL;
 using System;
-using VehicleControlSystem.ControlLayer.DB;
 using VehicleControlSystem.ControlLayer.MQ;
 using VehicleControlSystem.Managers;
 
@@ -108,30 +107,30 @@ namespace VehicleControlSystem.ControlLayer.Drive
                 //        this.CurrentTag = v;
                 //    }
                 //    break;
-                case "RearLoadFactor":
-                    {
-                        var v = CastTo<double>.From<object>( newValue );
-                        this.RearLoadFactor = v;
-                    }
-                    break;
-                case "RearRPM":
-                    {
-                        var v = CastTo<double>.From<object>( newValue );
-                        this.RearRpm = v;
-                    }
-                    break;
-                case "FrontLoadFactor":
-                    {
-                        var v = CastTo<double>.From<object>( newValue );
-                        this.FrontLoadFactor = v;
-                    }
-                    break;
-                case "FrontRPM":
-                    {
-                        var v = CastTo<double>.From<object>( newValue );
-                        this.FrontRpm = v;
-                    }
-                    break;
+                //case "RearLoadFactor":
+                //    {
+                //        var v = CastTo<double>.From<object>( newValue );
+                //        this.RearLoadFactor = v;
+                //    }
+                //    break;
+                //case "RearRPM":
+                //    {
+                //        var v = CastTo<double>.From<object>( newValue );
+                //        this.RearRpm = v;
+                //    }
+                //    break;
+                //case "FrontLoadFactor":
+                //    {
+                //        var v = CastTo<double>.From<object>( newValue );
+                //        this.FrontLoadFactor = v;
+                //    }
+                //    break;
+                //case "FrontRPM":
+                //    {
+                //        var v = CastTo<double>.From<object>( newValue );
+                //        this.FrontRpm = v;
+                //    }
+                //    break;
 
                 default:
                     break;
@@ -207,14 +206,15 @@ namespace VehicleControlSystem.ControlLayer.Drive
 
         public eOperatationMode GetDriveOperationMode()
         {
-            var ret = Redis.Instance.GetSystemState();
-
-            if ( ret == 3 )
-                return eOperatationMode.ManualMode;
-            else if ( ret == 4 )
-                return eOperatationMode.AutoMode;
-            else
-                return eOperatationMode.InitialMode;
+            //var ret = Redis.Instance.GetSystemState();
+
+            //if ( ret == 3 )
+            //    return eOperatationMode.ManualMode;
+            //else if ( ret == 4 )
+            //    return eOperatationMode.AutoMode;
+            //else
+
+            return eOperatationMode.InitialMode;
         }
 
         public int MoveToPoint( string point, double velocity )
@@ -227,13 +227,19 @@ namespace VehicleControlSystem.ControlLayer.Drive
                 return 34;
 
             //ToDo: 이동 명령 실행.
-            int result = 0;
+            int result = ConstInt.EXECUTE_SUCCESS;
 
-            zmq.SetCurrentSteeringState( steering.GetSteeringState() ); 
+            zmq.SetCurrentSteeringState( steering.GetSteeringState() );
             LockUtils.Wait( 100 );
-            zmq.SetTargetPoint( point );
+            result = zmq.SetTargetPoint( point );
+            if ( result != ConstInt.EXECUTE_SUCCESS )
+                return result;
+
             LockUtils.Wait( 100 );
-            zmq.SetStartMove();
+
+            result = zmq.SetStartMove();
+            if ( result != ConstInt.EXECUTE_SUCCESS )
+                return result;
 
             int waitTime = 10000;
             long st = SwUtils.CurrentTimeMillis;
@@ -244,14 +250,14 @@ namespace VehicleControlSystem.ControlLayer.Drive
                 if ( SwUtils.Gt( st, waitTime ) )
                 {
                     logger.D( "MoveToPoint Time Out" );
-                    return -1;
+                    return 37;
                 }
 
                 if ( zmq.IsDriveMoving )
                     break;
             }
 
-            return 0;
+            return ConstInt.EXECUTE_SUCCESS;
         }
 
         /// <summary>

+ 51 - 60
Dev/OHV/VehicleControlSystem/ControlLayer/Vehicle.cs

@@ -2,6 +2,7 @@
 using System.Collections;
 using System.Collections.Generic;
 using System.Linq;
+using System.Security.Cryptography.X509Certificates;
 using System.Threading;
 using System.Threading.Tasks;
 using FluentResults;
@@ -17,7 +18,6 @@ using OHV.Common.Shareds;
 using OHV.SqliteDAL;
 using Prism.Events;
 using VehicleControlSystem.ControlLayer.Actuator.Cylinder;
-using VehicleControlSystem.ControlLayer.DB;
 using VehicleControlSystem.ControlLayer.Drive;
 using VehicleControlSystem.ControlLayer.IO;
 using VehicleControlSystem.ControlLayer.MQ;
@@ -73,7 +73,7 @@ namespace VehicleControlSystem.ControlLayer
             {
                 if ( SetField( ref this.currentTag, value ) )
                 {
-                    var info = sql.VehicleInfoDAL.GetInfo();
+                    var info = sql.VehicleInfoDAL.GetAll().FirstOrDefault();
                     info.CurrentTag = value.ToString();
                     sql.VehicleInfoDAL.Update( info );
 
@@ -167,7 +167,7 @@ namespace VehicleControlSystem.ControlLayer
             {
                 if ( SetField( ref this.vehicleState, value ) )
                 {
-                    var info = sql.VehicleInfoDAL.GetInfo();
+                    var info = sql.VehicleInfoDAL.GetAll().FirstOrDefault();
                     info.VehicleState = value;
                     sql.VehicleInfoDAL.Update( info );
                 }
@@ -182,7 +182,7 @@ namespace VehicleControlSystem.ControlLayer
             {
                 if ( SetField( ref this.machineMode, value ) )
                 {
-                    var info = sql.VehicleInfoDAL.GetInfo();
+                    var info = sql.VehicleInfoDAL.GetAll().FirstOrDefault();
                     info.MachineMode = value;
                     sql.VehicleInfoDAL.Update( info );
                 }
@@ -618,7 +618,7 @@ namespace VehicleControlSystem.ControlLayer
             ThreadStart();
 
             //TimerUtils.Once(5000, () => { this.CurrentPosition = 1000; });
-            var v = sql.VehicleInfoDAL.GetInfo();
+            var v = sql.VehicleInfoDAL.GetAll().FirstOrDefault();
             v.CurrentTag = "0000";
             v.VehicleState = eVehicleState.None;
             v.MachineMode = eMachineMode.LocalMode;
@@ -689,7 +689,7 @@ namespace VehicleControlSystem.ControlLayer
             var reply = new DriveControlEventArgs();
 
             int targetTag = args.TargetRouteID;
-            var route = sql.RouteDal.GetK( targetTag );
+            var route = sql.RouteDal.Get( x => x.Name.Equals( targetTag ) ).FirstOrDefault();
             if ( route == null )
             {
                 reply.Result = Results.Fail( "Not Found Route" );
@@ -834,14 +834,14 @@ namespace VehicleControlSystem.ControlLayer
                     if ( this.autoManager.AutoModeStateProperty != eAutoModeState.Run ) // 
                         continue;
 
-                    var subCmd = sql.SubCmdDAL.GetSubCmd();
+                    var subCmd = sql.SubCmdDAL.GetAll().FirstOrDefault();
                     if ( subCmd == null ) continue;
 
-                    if ( !sql.CommandDAL.All.Any( x => x.CommandID.Equals( subCmd.CmdID ) ) )
+                    if ( !sql.CommandDAL.GetAll().Any( x => x.CommandID.Equals( subCmd.CmdID ) ) )
                     {
                         if ( subCmd.CmdType == SubCmd.eCmdType.Auto ) //자동 명령중 Main Command 가 없으면 삭제.
                         {
-                            sql.SubCmdDAL.Delete( subCmd );
+                            sql.SubCmdDAL.Delete( subCmd.ID );
                             logger.I( $"SubCmd Deleted - ID={subCmd.ID}, CommandID={subCmd.CmdID}" );
                         }
                     }
@@ -871,16 +871,12 @@ namespace VehicleControlSystem.ControlLayer
                             break;
                     }
                 }
-                catch ( ThreadInterruptedException threadInterruptedException )
-                {
-                }
                 catch ( Exception exception )
                 {
                     logger.E( exception );
                 }
                 finally
                 {
-                    //sql.SubCmdDAL.Clean();
                     LockUtils.Wait( 500 );
                 }
             }
@@ -915,25 +911,25 @@ namespace VehicleControlSystem.ControlLayer
                 }
             }
 
-            if ( this.MoveTo( sub.TargetID ) )
+            result = this.MoveTo( sub.TargetID );
+            if ( result != ConstInt.EXECUTE_SUCCESS )
             {
+                OccurVehicleAlarm( result );
             }
 
+            this.taskMoveCancel.Cancel();
+            this.taskMoveCancel.WaitAll();
+
             sql.SubCmdDAL.Clean();
         }
 
-        bool MoveTo( string pointID )
+        int MoveTo( string pointID )
         {
-            //this.BuzzerOnOff( true, eBuzzerKind.StartWarn );
-            ////TimerUtils.Once(3000, BuzzerOnOff, false, eBuzzerKind.StartWarn );
-            //Thread.Sleep( 3000 );
-            //this.BuzzerOnOff( false );
-
             if ( this.VehicleStateProperty == eVehicleState.Idle )
             {
                 this.OnMoveReady?.Invoke();
 
-                var moveReadyBuzzerTime = sql.ConfigDal.GetValueToInt( ConstString.BuzzerStartReadyTime );
+                var moveReadyBuzzerTime = Convert.ToInt32( sql.ConfigDal.GetById( ConstString.BuzzerStartReadyTime ).Value );
                 Thread.Sleep( moveReadyBuzzerTime );
 
                 this.VehicleStateProperty = eVehicleState.Move;
@@ -944,19 +940,17 @@ namespace VehicleControlSystem.ControlLayer
             //이전에 있던 작업들 종료 및 삭제
             this.taskMoveCancel.Cancel();
             this.taskMoveCancel.WaitAll();
-
             this.taskMoveCancel.Add( CheckCrossPoint() );
 
-            //PhysicalCheckupLogger.Instance.SetPLCStartDrive();
             this.VehicleStateProperty = eVehicleState.Move;
-            //this.BuzzerOnOff(true, eBuzzerKind.Moving);
-            this.refObjects.Drive.MoveToPoint( pointID, 100 );
 
-            bool result = Wait4MoveDone();
-            //this.BuzzerOnOff(false);
+            int result = this.refObjects.Drive.MoveToPoint( pointID, 100 );
+            if ( result != ConstInt.EXECUTE_SUCCESS )
+                return result;
 
-            this.taskMoveCancel.Cancel();
-            this.taskMoveCancel.WaitAll();
+            result = this.Wait4MoveDone();
+            if ( result != ConstInt.EXECUTE_SUCCESS )
+                return result;
 
             //Drive 에서 정지 확인 후 상태 변경
             if ( this.refObjects.Drive.IsDriveStop() )
@@ -970,9 +964,9 @@ namespace VehicleControlSystem.ControlLayer
             return result;
         }
 
-        bool Wait4MoveDone()
+        int Wait4MoveDone()
         {
-            int waitTime = 60000; //설정 할 수있게.
+            int waitTime = ConstUtils.ONE_HOUR; //설정 할 수있게.
             long st = SwUtils.CurrentTimeMillis;
 
             //Todo: 이동시 확인 사항들.
@@ -980,29 +974,29 @@ namespace VehicleControlSystem.ControlLayer
             {
                 Thread.Sleep( 5 );
 
-                //if ( SwUtils.Gt( st, waitTime ) )
-                //{
-                //    //Todo: 이동시간 초과 시 동작들.
-                //    logger.D( "Wait4MoveDone Time Over" );
-                //    break;
-                //}
+                if ( SwUtils.Gt( st, waitTime ) )
+                {
+                    //Todo: 이동시간 초과 시 동작들.
+                    logger.D( "Wait4MoveDone Time Over" );
+                    return 39;
+                }
 
                 //Todo: 이동중 명령이 삭제 되면 처리 할일들.
                 //이동중 메인 명력이 없어진다면 정지 후 
-                if ( !sql.CommandDAL.HasK( this.CurrentSubCommand.CmdID ) )
+                if ( null == sql.CommandDAL.GetById( this.CurrentSubCommand.CmdID ) )
                 {
                     logger.D( "[Wait Move Done] - 메인 명령 사라짐" );
-                    var cmd = sql.CommandDAL.GetCmd();
+                    var cmd = sql.CommandDAL.GetAll();
                     if ( cmd == null )
                     {
                         logger.D( "[Wait Move Done] - Main Command not Exist Motion Stop" );
                         this.refObjects.Drive.Stop();
-                        return true;
+                        return 40;
                     }
                     else
                     {
                         logger.D( "[Wait Move Done] - Main Command not Exist Motion command 없음" );
-                        return true;
+                        return 41;
                     }
                 }
 
@@ -1010,7 +1004,7 @@ namespace VehicleControlSystem.ControlLayer
                     break;
             }
 
-            return true;
+            return ConstInt.EXECUTE_SUCCESS;
         }
 
         Task CheckCrossPoint()
@@ -1047,7 +1041,6 @@ namespace VehicleControlSystem.ControlLayer
 
             int result = 0;
 
-
             result = this.PIOAndLoad( sub.TargetID );
             if ( result != 0 )
             {
@@ -1057,16 +1050,10 @@ namespace VehicleControlSystem.ControlLayer
             }
             this.PIOSensorOff();
 
-            //PIO 내부 이동.
-            //result = this.clamp.Lock_Sync();
-            //if ( result != 0 )
-            //{
-            //    this.OccurVehicleAlarm( result );
-            //    return false;
-            //}
-
             //Load, Unload 가 끝나면 메인 Command 를 완료 했다고 판단.
-            sql.CommandDAL.UpdateState( sub.CmdID, eCommandState.Complete );
+            var cmd = sql.CommandDAL.GetById( sub.CmdID );
+            cmd.State = eCommandState.Complete;
+            sql.CommandDAL.Update(cmd);
             sql.SubCmdDAL.Clean();
 
             LockUtils.Wait( 1000 );
@@ -1114,7 +1101,9 @@ namespace VehicleControlSystem.ControlLayer
 
             this.PIOSensorOff();
 
-            sql.CommandDAL.UpdateState( sub.CmdID, eCommandState.Complete );
+            var cmd = sql.CommandDAL.GetById( sub.CmdID );
+            cmd.State = eCommandState.Complete;
+            sql.CommandDAL.Update(cmd);
             sql.SubCmdDAL.Clean();
 
             LockUtils.Wait( 1000 );
@@ -1129,8 +1118,10 @@ namespace VehicleControlSystem.ControlLayer
             int result = 0;
             result = this.StartBatteryCharge();
 
-            sql.CommandDAL.UpdateState( subCmd.CmdID, eCommandState.Complete );
-            sql.SubCmdDAL.Delete( subCmd );
+            var cmd = sql.CommandDAL.GetById( subCmd.CmdID );
+            cmd.State = eCommandState.Complete;
+            sql.CommandDAL.Update( cmd );
+            sql.SubCmdDAL.Clean();
         }
 
         /// <summary>
@@ -1141,7 +1132,7 @@ namespace VehicleControlSystem.ControlLayer
         /// <returns></returns>
         int PIOBatteryCharge( SubCmd sub )
         {
-            var route = sql.RouteDal.GetRoute( sub.TargetID );
+            var route = sql.RouteDal.GetById( sub.TargetID );
 
             if ( !CorrectPosition( route, this.CurrentPosition ) )
             {
@@ -1149,7 +1140,7 @@ namespace VehicleControlSystem.ControlLayer
                 return 0; //Alarm
             }
 
-            var pioTimeout = sql.ConfigDal.GetValueToInt( ConstString.PIOTimeOut );
+            var pioTimeout = CastTo<int>.From<string>( sql.ConfigDal.GetById( ConstString.PIOTimeOut ).Value );
 
             PIOClear();
             loggerPIO.I( $"Start Charge PIO - [{sub.TargetID}]" );
@@ -1182,7 +1173,7 @@ namespace VehicleControlSystem.ControlLayer
                 if ( !this.refObjects.IO.IsOn( "IN_PIO_READY" ) || this.refObjects.IO.IsOn( "IN_PIO_RECEIVE_RUN" ) )
                     break;
 
-                if ( !sql.CommandDAL.HasK( this.CurrentSubCommand.CmdID ) )
+                if ( null == sql.CommandDAL.GetById( this.CurrentSubCommand.CmdID ) )
                 {
                     PIOClear();
                     logger.D( "[Wait Charging] - 메인 명령 사라짐" );
@@ -1212,7 +1203,7 @@ namespace VehicleControlSystem.ControlLayer
 #if SIMULATION
             this.PIOSensorOn();
 
-            var pioTimeout = sql.ConfigDal.GetValueToInt( ConstString.PIOTimeOut );
+            var pioTimeout = CastTo<int>.From<string>( sql.ConfigDal.GetById( ConstString.PIOTimeOut ).Value );
 
             PIOClear();
             loggerPIO.I( $"Start Battery Charge PIO" );
@@ -1289,7 +1280,7 @@ namespace VehicleControlSystem.ControlLayer
 #if SIMULATION
             loggerPIO.I( $"Stop Battery Charge PIO" );
 
-            var pioTimeout = sql.ConfigDal.GetValueToInt( ConstString.PIOTimeOut );
+            var pioTimeout = CastTo<int>.From<string>( sql.ConfigDal.GetById( ConstString.PIOTimeOut ).Value );
 
             this.PIOClear();
 

+ 2 - 2
Dev/OHV/VehicleControlSystem/Managers/AutoManager.cs

@@ -293,7 +293,7 @@ namespace VehicleControlSystem.Managers
             this.BuzzerStateProperty = eBuzzerKind.Alarm;
 
             HisAlarm hisAlarm = new HisAlarm();
-            var alarm = sql.AlarmDAL.GetK( alarmID );
+            var alarm = sql.AlarmDAL.GetById( alarmID );
             if ( alarm == null )
             {
                 hisAlarm.AlarmId = alarmID;
@@ -310,7 +310,7 @@ namespace VehicleControlSystem.Managers
                 hisAlarm.Solution = alarm.Solution;
                 //hisAlarm.Alarm = alarm;
             }
-            sql.HisAlarmDAL.Add( hisAlarm );
+            sql.HisAlarmDAL.Insert( hisAlarm );
 
             //UI 로는 처음 발생한 Error 만 전송한다.
             if ( IsErrorProcessing )

+ 10 - 8
Dev/OHV/VehicleControlSystem/Managers/HostManager.cs

@@ -10,6 +10,8 @@ using GSG.NET.Extensions;
 using OHV.Common.Model;
 using GSG.NET.Quartz;
 using System.Text;
+using GSG.NET.LINQ;
+using System.Linq;
 
 namespace VehicleControlSystem.Managers
 {
@@ -123,10 +125,10 @@ namespace VehicleControlSystem.Managers
         {
             this.manager.Config = new OHVConnector.Config
             {
-                ID = sql.ConfigDal.GetK( ConstString.VehicleID ).Value,
-                IpAddress = sql.ConfigDal.GetK( ConstString.Addr ).Value,
-                Port = Convert.ToInt16( sql.ConfigDal.GetK( ConstString.PortNo ).Value ),
-                HostID = sql.ConfigDal.GetK( ConstString.OCSID ).Value,
+                ID = sql.ConfigDal.GetById( ConstString.VehicleID ).Value,
+                IpAddress = sql.ConfigDal.GetById( ConstString.Addr ).Value,
+                Port = Convert.ToInt16( sql.ConfigDal.GetById( ConstString.PortNo ).Value ),
+                HostID = sql.ConfigDal.GetById( ConstString.OCSID ).Value,
             };
 
             this.manager.OnContd += Manager_OnContd;
@@ -413,18 +415,18 @@ namespace VehicleControlSystem.Managers
 
             var cmd = new Command();
 
-            var info = sql.VehicleInfoDAL.GetInfo();
+            var info = sql.VehicleInfoDAL.GetAll().FirstOrDefault();
             if ( info.MachineMode == eMachineMode.LocalMode )
             {
                 loggerHost.E( $"[OCS] Cmd - Current Mode Local Mode " );
                 return;
             }
 
-            var hasCommand = this.sql.CommandDAL.GetCmd();
+            var hasCommand = this.sql.CommandDAL.GetAll().FirstOrDefault();
             if ( hasCommand != null )
             {
                 if ( !hasCommand.IsSecondCommanded )
-                    sql.CommandDAL.Delete( hasCommand );
+                    sql.CommandDAL.Delete( hasCommand.CommandID );
                 else
                 {
                     loggerHost.E( $"[OCS] Cmd - {msg.Kind} Message Tag [{msg.Tag}] - Already Load/Unload " );
@@ -464,7 +466,7 @@ namespace VehicleControlSystem.Managers
 
             cmd.TargetID = msg.Tag;
 
-            this.sql.CommandDAL.Add( cmd );
+            this.sql.CommandDAL.Insert( cmd );
             logger.I( $"[Command] - Add Host : Target {cmd.TargetID} / Type {cmd.Type}" );
         }
 

+ 21 - 10
Dev/OHV/VehicleControlSystem/Managers/RouteManager.cs

@@ -1,4 +1,5 @@
-using GSG.NET.ObjectBase;
+using GSG.NET.Logging;
+using GSG.NET.ObjectBase;
 using Newtonsoft.Json.Linq;
 using OHV.Common.Model;
 using OHV.Common.Shareds;
@@ -14,6 +15,7 @@ namespace VehicleControlSystem.Managers
 {
     public class RouteManager : SingletonBase<RouteManager>, IDisposable
     {
+        Logger logger = Logger.GetLogger();
         SqliteManager sql = null;
 
         public List<segment> Segments = new List<segment>();
@@ -33,18 +35,27 @@ namespace VehicleControlSystem.Managers
 
         void LoadJson()
         {
-            var path = sql.ConfigDal.GetK( ConstString.RouteFilePath ).Value;
+            var path = sql.ConfigDal.GetById( ConstString.RouteFilePath ).Value;
             if ( !System.IO.File.Exists( path ) )
                 return;
 
-            using ( StreamReader r = new StreamReader( path ) )
+            try
             {
-                string json = r.ReadToEnd();
-                var o = JObject.Parse( json );
-                this.Points = o["points"].ToObject<List<point>>();
-                this.Segments = o["segments"].ToObject<List<segment>>();
-                this.Obstacles = o["obstacles"].ToObject<List<obstacles>>();
-                this.Equipments = o["equipments"].ToObject<List<equipment>>();
+                using ( StreamReader r = new StreamReader( path ) )
+                {
+                    string json = r.ReadToEnd();
+                    var o = JObject.Parse( json );
+                    this.Points = o["points"].ToObject<List<point>>();
+                    this.Segments = o["segments"].ToObject<List<segment>>();
+                    this.Obstacles = o["obstacles"].ToObject<List<obstacles>>();
+                    this.Equipments = o["equipments"].ToObject<List<equipment>>();
+                }
+
+            }
+            catch ( Exception exception)
+            {
+                logger.E( exception );
+                return;    
             }
 
             this.WriteToDB();
@@ -64,7 +75,7 @@ namespace VehicleControlSystem.Managers
                      ScaleValue = p.barcode,
                      Name = p.ID.ToString(),
                  };
-                 sql.RouteDal.Add( route );
+                 sql.RouteDal.Insert( route );
              } );
         }
 

+ 11 - 8
Dev/OHV/VehicleControlSystem/Managers/Scheduler.cs

@@ -78,7 +78,7 @@ namespace VehicleControlSystem.Managers
         {
             try
             {
-                this.sql.CommandDAL.Add( cmd );
+                this.sql.CommandDAL.Insert( cmd );
             }
             catch ( Exception ex )
             {
@@ -122,7 +122,7 @@ namespace VehicleControlSystem.Managers
                                     case OHV.Common.Shareds.eAutoModeState.StartRun:
                                         break;
                                     case OHV.Common.Shareds.eAutoModeState.Run:
-                                        Command cmd = sql.CommandDAL.GetCmd();
+                                        Command cmd = sql.CommandDAL.GetAll().FirstOrDefault();
                                         if ( cmd == null ) continue;
                                         DoWork( cmd );
                                         break;
@@ -165,7 +165,8 @@ namespace VehicleControlSystem.Managers
                             default:
                                 break;
                         }
-                        this.sql.CommandDAL.UpdateState( cmd.CommandID, OHV.Common.Shareds.eCommandState.Processing );
+                        cmd.State = eCommandState.Processing;
+                        this.sql.CommandDAL.Update( cmd );
 
                         if ( cmd.ByWho == OHV.Common.Shareds.eCommandByWho.LocalSystem || cmd.ByWho == OHV.Common.Shareds.eCommandByWho.LocalOverWrite )
                             this.OnMaualAddedCommand?.BeginInvoke( cmd, null, null );
@@ -174,12 +175,13 @@ namespace VehicleControlSystem.Managers
 
                 case OHV.Common.Shareds.eCommandState.Processing:
                     {
-                        var subCmd = sql.SubCmdDAL.GetSubCmd();
+                        var subCmd = sql.SubCmdDAL.GetAll().FirstOrDefault();
                         if ( subCmd == null ) // Move 명령을 수행 완료 했다고 판단.
                         {
                             if ( cmd.IsSecondCommanded )
                             {
-                                sql.CommandDAL.UpdateState( cmd.CommandID, OHV.Common.Shareds.eCommandState.Complete );
+                                cmd.State = eCommandState.Complete;
+                                sql.CommandDAL.Update( cmd );
                                 break;
                             }
 
@@ -206,7 +208,8 @@ namespace VehicleControlSystem.Managers
                             }
                             else //Move Command complete
                             {
-                                sql.CommandDAL.UpdateState( cmd.CommandID, OHV.Common.Shareds.eCommandState.Complete );
+                                cmd.State = eCommandState.Complete;
+                                sql.CommandDAL.Update( cmd );
                                 break;
                             }
                         }
@@ -219,7 +222,7 @@ namespace VehicleControlSystem.Managers
                     break;
 
                 case OHV.Common.Shareds.eCommandState.Complete:
-                    sql.CommandDAL.Delete( cmd );
+                    sql.CommandDAL.Delete( cmd.CommandID );
                     break;
                 default:
                     break;
@@ -250,7 +253,7 @@ namespace VehicleControlSystem.Managers
                 TargetID = cmd.TargetID,
                 CmdID = cmd.CommandID,
             };
-            sql.SubCmdDAL.Add( sub );
+            sql.SubCmdDAL.Insert( sub );
             logger.I( $"{sub.ID} Sub Command Create - Type={sub.Type}, TargetID={sub.TargetID}, CommandID={sub.CmdID}" );
 
             return true;

+ 4 - 3
Dev/OHV/VehicleControlSystem/VCSystem.cs

@@ -57,7 +57,7 @@ namespace VehicleControlSystem
 
         public void Init()
         {
-            QuartzUtils.Invoke( "HIS_ALARM", QuartzUtils.GetExpnMinute( 1 ), this.CleanHisAlarm );
+            QuartzUtils.Invoke( "HIS_ALARM", QuartzUtils.GetExpnHour( 5 ), this.CleanHisAlarm );
 
             this.RouteManager = RouteManager.Instance;
             RouteManager.Instance.Init( this.sql );
@@ -77,7 +77,7 @@ namespace VehicleControlSystem
             //Battery
             this.bMUManager = new BMUManager();
             this.bMUManager.BMUConfig = new ControlLayer.Serial.BatteryTabos.Config() { ID = "0" };
-            var setV = sql.ConfigDal.GetValueToInt( ConstString.BatteryCanType );
+            var setV = Convert.ToInt32( sql.ConfigDal.GetById( ConstString.BatteryCanType ).Value );
             var canType = CastTo<BMUManager.eCANSelect>.From<int>( setV );
             this.bMUManager.Connect( canType );
 
@@ -142,7 +142,8 @@ namespace VehicleControlSystem
 
         public void CleanHisAlarm()
         {
-            sql.HisAlarmDAL.Delete( 20 );
+            var backup = DateTime.Now.AddDays( -15 );
+            sql.HisAlarmDAL.Delete( x=>x.OccurTime < backup );
         }
 
         #region EzIO Event