林豪 左 2 سال پیش
والد
کامیت
867ca3f382

+ 11 - 6
ServiceCenter/SqlSugars/SqlSugarHelper.cs

@@ -15,12 +15,12 @@ namespace ServiceCenter.SqlSugars
         /// <summary>
         /// 默认数据库连接Key
         /// </summary>
-        private static string? _Default { get; set; } = null;
+        private static string _Default { get; set; } = "";
 
         /// <summary>
         /// Dlog数据库连接Key
         /// </summary>
-        private static string? _Dlog { get; set; } = null;
+        private static string _Dlog { get; set; } = "";
 
         /// <summary>
         ///  设置数据库连接Key
@@ -43,22 +43,26 @@ namespace ServiceCenter.SqlSugars
         /// <summary>
         /// 默认数据库连接Key
         /// </summary>
-        public static string Default
+        public SqlSugarScopeProvider Default
         {
             get
             {
-                return _Default ?? throw new Exception("请调用[SqlSugarHelper.SetDefault]方法设置默认数据库连接");
+                if (_Default == "") throw new Exception("请调用[SqlSugarHelper.SetDefault]方法设置默认数据库连接");
+                if (_Db == null) throw new Exception("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接");
+                return _Db.GetConnectionScope(_Default);
             }
         }
 
         /// <summary>
         /// Dlog数据库连接Key
         /// </summary>
-        public static string Dlog
+        public SqlSugarScopeProvider Dlog
         {
             get
             {
-                return _Dlog ?? throw new Exception("请调用[SqlSugarHelper.SetDlog]方法设置Dlog数据库连接");
+                if (_Dlog == "") throw new Exception("请调用[SqlSugarHelper.SetDlog]方法设置默认数据库连接");
+                if (_Db == null) throw new Exception("请调用[SqlSugarHelper.SetDb]方法设置设置数据库连接");
+                return _Db.GetConnectionScope(_Dlog);
             }
         }
 
@@ -73,6 +77,7 @@ namespace ServiceCenter.SqlSugars
 
         /// <summary>
         /// 数据库连接
+        /// 注意需要
         /// </summary>
         public SqlSugarScope Connect
         {

+ 1 - 2
WCS.Service/Systems/DataCollectionSysyem.cs

@@ -28,7 +28,6 @@ namespace WCS.Service.Systems
         {
             SqlSugarHelper.Do(db =>
             {
-                var _db = db.Connect;
                 //byte[] bytes = System.Text.Encoding.Default.GetBytes(JsonConvert.SerializeObject(ConvList, null, new JsonSerializerSettings { ReferenceLoopHandling = ReferenceLoopHandling.Ignore }));
 
                 var plcData = new WCS_PlcData()
@@ -43,7 +42,7 @@ namespace WCS.Service.Systems
                 //对bytes进行数据压缩
                 //plcData.CONTENT = bytes.Compress();
 
-                _db.Insertable(plcData).ExecuteCommand(); ;
+                db.Default.Insertable(plcData).ExecuteCommand(); ;
             });
 
             return true;

+ 2 - 2
WCS.Service/Worker.cs

@@ -111,7 +111,7 @@ namespace WCS.Service
                     switch (connectionString.Key)
                     {
                         case "WCSDB"://WCS»ù±¾Êý¾Ý¿â
-
+                            SqlSugarHelper.SetDefault(connectionString.Key);
                             _db.CodeFirst.InitTables(typeof(WCS_PLC));
                             _db.CodeFirst.InitTables(typeof(WCS_DATABLOCK));
                             _db.CodeFirst.InitTables(typeof(WCS_DEVICEHdr));
@@ -129,7 +129,7 @@ namespace WCS.Service
                             break;
 
                         case "WCSDlog"://WCSÈÕÖ¾Êý¾Ý¿â
-
+                            SqlSugarHelper.SetDlog(connectionString.Key);
                             _db.DbMaintenance.CreateDatabase();
                             _db.CodeFirst.InitTables(typeof(WCS_BCR80));
                             //db.Context(WcsDlog).CodeFirst.InitTables(typeof(WCS_RGV520));

+ 89 - 88
WCS.WorkEngineering/Systems/SrmSystems.cs

@@ -1,4 +1,5 @@
 using ServiceCenter.Extensions;
+using ServiceCenter.SqlSugars;
 using System.ComponentModel;
 using WCS.Core;
 using WCS.Entity;
@@ -62,41 +63,41 @@ namespace WCS.WorkEngineering.Systems
             //判断完成任务号是否大于0
             if (obj.Data2.TaskFinishiId > 0)
             {
-                //Db.Do(db =>
-                //{
-                //    //根据DB521任务号获取对应任务
-                //    var task = db.Default.Queryable<WCS_TASK>().First(v => v.ID == obj.Data2.TaskFinishiId) ?? throw new KnownException($"未找到任务{obj.Data2.TaskFinishiId}", LogLevelEnum.High);
-                //    if (task.STATUS != Entity.TaskStatus.StackerExecution)
-                //        throw new KnownException($"任务{task.ID}状态是{task.STATUS.Description()}.堆垛机完成任务需要对应任务状态处于堆垛机执行中", LogLevelEnum.High);
-                //    //根据任务类型做不同的处理
-                //    switch (task.TYPE)
-                //    {
-                //        case TaskType.EnterDepot:
-                //            //完成任务
-                //            task.STATUS = Entity.TaskStatus.Finish;
-                //            task.UPDATETIME = DateTime.Now;
-                //            task.ENDTIME = DateTime.Now;
-                //            task.AddWCS_TASK_DTL(db, task.ADDRTO, "入库任务结束");
-                //            break;
-
-                //        case TaskType.OutDepot:
-                //            task.STATUS = Entity.TaskStatus.ConveyorInProgress;
-                //            task.UPDATETIME = DateTime.Now;
-                //            task.AddWCS_TASK_DTL(db, task.SRMSTATION, "出库任务到达放货站台");
-                //            break;
-
-                //        case TaskType.TransferDepot:
-                //            task.STATUS = Entity.TaskStatus.Finish;
-                //            task.UPDATETIME = DateTime.Now;
-                //            task.ENDTIME = DateTime.Now;
-                //            task.AddWCS_TASK_DTL(db, task.ADDRTO, "移库任务结束");
-                //            break;
-                //    }
-
-                //    db.Default.Updateable(task).AddQueue();
-                //    db.Default.SaveQueues();
-                //    obj.Data.OkAck = 1;
-                //});
+                SqlSugarHelper.Do(db =>
+                {
+                    //根据DB521任务号获取对应任务
+                    var task = db.Default.Queryable<WCS_TASK>().First(v => v.ID == obj.Data2.TaskFinishiId) ?? throw new KnownException($"未找到任务{obj.Data2.TaskFinishiId}", LogLevelEnum.High);
+                    if (task.STATUS != Entity.TaskStatus.StackerExecution)
+                        throw new KnownException($"任务{task.ID}状态是{task.STATUS.Description()}.堆垛机完成任务需要对应任务状态处于堆垛机执行中", LogLevelEnum.High);
+                    //根据任务类型做不同的处理
+                    switch (task.TYPE)
+                    {
+                        case TaskType.EnterDepot:
+                            //完成任务
+                            task.STATUS = Entity.TaskStatus.Finish;
+                            task.UPDATETIME = DateTime.Now;
+                            task.ENDTIME = DateTime.Now;
+                            task.AddWCS_TASK_DTL(db, task.ADDRTO, "入库任务结束");
+                            break;
+
+                        case TaskType.OutDepot:
+                            task.STATUS = Entity.TaskStatus.ConveyorInProgress;
+                            task.UPDATETIME = DateTime.Now;
+                            task.AddWCS_TASK_DTL(db, task.SRMSTATION, "出库任务到达放货站台");
+                            break;
+
+                        case TaskType.TransferDepot:
+                            task.STATUS = Entity.TaskStatus.Finish;
+                            task.UPDATETIME = DateTime.Now;
+                            task.ENDTIME = DateTime.Now;
+                            task.AddWCS_TASK_DTL(db, task.ADDRTO, "移库任务结束");
+                            break;
+                    }
+
+                    db.Default.Updateable(task).AddQueue();
+                    db.Default.SaveQueues();
+                    obj.Data.OkAck = 1;
+                });
             }
 
             //堆垛机是否可以下发任务
@@ -111,64 +112,64 @@ namespace WCS.WorkEngineering.Systems
             int enterOrOut = 1;
 
             //再检查是否有等待执行的货物
-            //Db.Do(db =>
-            //{
-            //    //获取当前堆垛机的所有未完成任务
-            //    var tasks = db.Default.Queryable<WCS_TASK>().Where(v => v.STATUS < Entity.TaskStatus.Finish && (v.DEVICE == obj.Entity.Code));
-            //    //任务集合是否有处于堆垛机执行状态的任务
-            //    if (tasks.Any(v => v.STATUS == Entity.TaskStatus.StackerExecution)) throw new KnownException($"有任务处于堆垛机执行状态", LogLevelEnum.High);
-
-            //    //判断是否存在调整优先级任务
-            //    if (!tasks.Any(v => v.TYPE != TaskType.TransferDepot && v.STATUS < Entity.TaskStatus.StackerExecution && v.Priority > 0))
-            //    {
-            //        //不存在调整优先级任务,判断是否存在移库任务
-            //        isTransfer = tasks.Any(v => v.TYPE == TaskType.TransferDepot && v.STATUS == Entity.TaskStatus.NewBuild);
-            //    }
-            //    else //存在调整优先级任务
-            //    {
-            //        //获取出库任务中新建状态最大优先级
-            //        var outPriorityNewBuild = tasks.Where(v => v.TYPE == TaskType.OutDepot && v.STATUS == Entity.TaskStatus.NewBuild).Max(v => v.Priority);
-            //        //获取入库任务中最后一个交互点是取货点任务的最大优先级
-            //        var enterPriority = tasks.Where(v => v.TYPE == TaskType.EnterDepot && v.STATUS < Entity.TaskStatus.StackerExecution && PickUpDevices.Any(p => p.Entity.Code == v.LastInteractionPoint))
-            //                                 .Max(v => v.Priority);
-            //        //出入库最大优先级相加大于零
-            //        if (outPriorityNewBuild + enterPriority > 0)
-            //        {
-            //            //出入库优先级任务 1:无优先 2:入库 3:出库
-            //            enterOrOut = enterPriority > outPriorityNewBuild ? 2 : 3;
-            //        }
-            //    }
-            //});
+            SqlSugarHelper.Do(db =>
+            {
+                //获取当前堆垛机的所有未完成任务
+                var tasks = db.Default.Queryable<WCS_TASK>().Where(v => v.STATUS < Entity.TaskStatus.Finish && (v.DEVICE == obj.Entity.Code));
+                //任务集合是否有处于堆垛机执行状态的任务
+                if (tasks.Any(v => v.STATUS == Entity.TaskStatus.StackerExecution)) throw new KnownException($"有任务处于堆垛机执行状态", LogLevelEnum.High);
+
+                //判断是否存在调整优先级任务
+                if (!tasks.Any(v => v.TYPE != TaskType.TransferDepot && v.STATUS < Entity.TaskStatus.StackerExecution && v.Priority > 0))
+                {
+                    //不存在调整优先级任务,判断是否存在移库任务
+                    isTransfer = tasks.Any(v => v.TYPE == TaskType.TransferDepot && v.STATUS == Entity.TaskStatus.NewBuild);
+                }
+                else //存在调整优先级任务
+                {
+                    //获取出库任务中新建状态最大优先级
+                    var outPriorityNewBuild = tasks.Where(v => v.TYPE == TaskType.OutDepot && v.STATUS == Entity.TaskStatus.NewBuild).Max(v => v.Priority);
+                    //获取入库任务中最后一个交互点是取货点任务的最大优先级
+                    var enterPriority = tasks.Where(v => v.TYPE == TaskType.EnterDepot && v.STATUS < Entity.TaskStatus.StackerExecution && PickUpDevices.Any(p => p.Entity.Code == v.LastInteractionPoint))
+                                             .Max(v => v.Priority);
+                    //出入库最大优先级相加大于零
+                    if (outPriorityNewBuild + enterPriority > 0)
+                    {
+                        //出入库优先级任务 1:无优先 2:入库 3:出库
+                        enterOrOut = enterPriority > outPriorityNewBuild ? 2 : 3;
+                    }
+                }
+            });
 
             #region 移库
 
             if (isTransfer)
             {
-                //Db.Do(db =>
-                //{
-                //    //获取一条当前堆垛机优先级最高的新建移库任务
-                //    var task = db.Default.Queryable<WCS_TASK>().Where(v => v.DEVICE == obj.Entity.Code && v.TYPE == TaskType.TransferDepot && v.STATUS == Entity.TaskStatus.NewBuild)
-                //                                               .OrderByDescending(v => v.Priority)
-                //                                               .First() ?? throw new KnownException("未找到移库任务", LogLevelEnum.High);
-                //    //任务状态改为堆垛机执行中
-                //    task.STATUS = Entity.TaskStatus.StackerExecution;
-                //    task.STARTTIME = DateTime.Now;
-                //    task.UPDATETIME = DateTime.Now;
-                //    task.AddWCS_TASK_DTL(db, task.ADDRFROM, task.DEVICE, $"堆垛机{obj.Entity.Code}开始执行任务");
-                //    db.Default.Updateable(task).AddQueue();
-                //    db.Default.SaveQueues();
-                //    var addrFrom = task.ADDRFROM.Split("-");
-                //    var addrTo = task.ADDRTO.Split("-");
-                //    //下发任务
-                //    obj.Data.TaskNumber = task.ID;
-                //    obj.Data.RowPos1 = addrFrom[0].ToShort();
-                //    obj.Data.TravelPos1 = addrFrom[1].ToShort();
-                //    obj.Data.LiftPos1 = addrFrom[2].ToShort();
-                //    obj.Data.RowPos2 = addrTo[0].ToShort();
-                //    obj.Data.TravelPos2 = addrTo[1].ToShort();
-                //    obj.Data.LiftPos2 = addrTo[2].ToShort();
-                //    obj.Data.VoucherNo++;
-                //});
+                SqlSugarHelper.Do(db =>
+                {
+                    //获取一条当前堆垛机优先级最高的新建移库任务
+                    var task = db.Default.Queryable<WCS_TASK>().Where(v => v.DEVICE == obj.Entity.Code && v.TYPE == TaskType.TransferDepot && v.STATUS == Entity.TaskStatus.NewBuild)
+                                                               .OrderByDescending(v => v.Priority)
+                                                               .First() ?? throw new KnownException("未找到移库任务", LogLevelEnum.High);
+                    //任务状态改为堆垛机执行中
+                    task.STATUS = Entity.TaskStatus.StackerExecution;
+                    task.STARTTIME = DateTime.Now;
+                    task.UPDATETIME = DateTime.Now;
+                    task.AddWCS_TASK_DTL(db, task.ADDRFROM, task.DEVICE, $"堆垛机{obj.Entity.Code}开始执行任务");
+                    db.Default.Updateable(task).AddQueue();
+                    db.Default.SaveQueues();
+                    var addrFrom = task.ADDRFROM.Split("-");
+                    var addrTo = task.ADDRTO.Split("-");
+                    //下发任务
+                    obj.Data.TaskNumber = task.ID;
+                    obj.Data.RowPos1 = addrFrom[0].ToShort();
+                    obj.Data.TravelPos1 = addrFrom[1].ToShort();
+                    obj.Data.LiftPos1 = addrFrom[2].ToShort();
+                    obj.Data.RowPos2 = addrTo[0].ToShort();
+                    obj.Data.TravelPos2 = addrTo[1].ToShort();
+                    obj.Data.LiftPos2 = addrTo[2].ToShort();
+                    obj.Data.VoucherNo++;
+                });
             }
 
             #endregion 移库

+ 1 - 1
WCS.WorkEngineering/WCS.WorkEngineering.csproj

@@ -8,7 +8,7 @@
 
   <ItemGroup>
     <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="7.0.5" />
-    <PackageReference Include="ServiceCenter" Version="1.0.0.22" />
+    <PackageReference Include="ServiceCenter" Version="1.0.0.24" />
   </ItemGroup>
 
   <ItemGroup>