Просмотр исходного кода

Merge branch 'master' of http://120.77.11.229:3000/zuolinhao/ZT-FJ-WMS

林豪 左 5 месяцев назад
Родитель
Сommit
a4621ba4d4
1 измененных файлов с 131 добавлено и 18 удалено
  1. 131 18
      wms.service/Service/FJService.cs

+ 131 - 18
wms.service/Service/FJService.cs

@@ -7,6 +7,7 @@ using AutoMapper;
 using Castle.Core.Internal;
 using Microsoft.Extensions.Logging;
 using Newtonsoft.Json;
+using NPOI.SS.Formula.Functions;
 using SqlSugar;
 using SqlSugar.Extensions;
 using WCS.Entity.fj;
@@ -822,8 +823,12 @@ namespace wms.service.Service
             var res = new SRes { ResCode = ResponseStatusCodeEnum.Fail.GetHashCode(), ResMsg = "失败" };
 
 
-            var taskMax = Convert.ToInt32(_sysconfigrepository.AsQueryable().With(SqlWith.NoLock)
-                .First(x => x.Code == "FullPalletInMax").SContent);
+            //var taskMax = Convert.ToInt32(_sysconfigrepository.AsQueryable().With(SqlWith.NoLock)
+            //    .First(x => x.Code == "FullPalletInMax").SContent);
+            var sameSideTaskNum = Convert.ToInt32(_sysconfigrepository.AsQueryable().With(SqlWith.NoLock)
+                .First(x => x.Code == "SameSideTaskInNum").SContent);
+            //var station_Use = _sysconfigrepository.AsQueryable().With(SqlWith.NoLock)
+            //    .First(x => x.Code == "InStation" && x.SContent == "1").Name;
             var taskCount = _taskrepository.AsQueryable().With(SqlWith.NoLock).Count(x =>
                 x.BusType == FJTaskBusType.人工满托入库.GetDescription() && x.Status < TaskStatus.Finish);
 
@@ -1026,25 +1031,99 @@ namespace wms.service.Service
                     x.WarehouseCode == "1N" && x.IsStop == 0 && x.StateNum == FjLocationState.Empty && x.Layer < 9);
                 var invnowCount_2N = _basewarecellrepository.AsQueryable().With(SqlWith.NoLock).Count(x =>
                     x.WarehouseCode == "2N" && x.IsStop == 0 && x.StateNum == FjLocationState.Empty && x.Layer < 9);
+                var invnowCount_1S = _basewarecellrepository.AsQueryable().With(SqlWith.NoLock).Count(x =>
+                    x.WarehouseCode == "1S" && x.IsStop == 0 && x.StateNum == FjLocationState.Empty && x.Layer < 9);
+                var invnowCount_2S = _basewarecellrepository.AsQueryable().With(SqlWith.NoLock).Count(x =>
+                    x.WarehouseCode == "2S" && x.IsStop == 0 && x.StateNum == FjLocationState.Empty && x.Layer < 9);
+                //在途任务数量
                 var taskInfoCount_1N = _taskrepository.AsQueryable().With(SqlWith.NoLock).Count(x =>
                     x.Status < TaskStatus.Finish && x.BusType == FJTaskBusType.人工满托入库.GetDescription() &&
                     x.WarehouseCode == "1N");
                 var taskInfoCount_2N = _taskrepository.AsQueryable().With(SqlWith.NoLock).Count(x =>
                     x.Status < TaskStatus.Finish && x.BusType == FJTaskBusType.人工满托入库.GetDescription() &&
                     x.WarehouseCode == "2N");
+                var taskInfoCount_1S = _taskrepository.AsQueryable().With(SqlWith.NoLock).Count(x =>
+                    x.Status < TaskStatus.Finish && x.BusType == FJTaskBusType.人工满托入库.GetDescription() &&
+                    x.WarehouseCode == "1S");
+                var taskInfoCount_2S = _taskrepository.AsQueryable().With(SqlWith.NoLock).Count(x =>
+                    x.Status < TaskStatus.Finish && x.BusType == FJTaskBusType.人工满托入库.GetDescription() &&
+                    x.WarehouseCode == "2S");
                 //创建对应任务
                 var count_1N = invnowCount_1N - taskInfoCount_1N;
                 var count_2N = invnowCount_2N - taskInfoCount_2N;
-                var wCode = count_1N >= count_2N ? "1N" : "2N";
-                if ( taskCount > 0)
-                    if ((wCode == "1N" && taskMax <= taskInfoCount_1N) ||
-                        (wCode == "2N" && taskMax <= taskInfoCount_2N))
-                    {
-                        res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
-                        res.ResMsg = $"禁止入库,最大入库任务数量已达{taskMax}";
-                        return res;
-                    }
+                var count_1S = invnowCount_1S - taskInfoCount_1S;
+                var count_2S = invnowCount_2S - taskInfoCount_2S;
 
+                //获取空货位最多的仓库
+                var wCode = Max(count_1N,count_1S,count_2N,count_2S);               
+                if (taskCount > 0)
+                {
+                    if ((wCode == "1N" && sameSideTaskNum <= taskInfoCount_1N) || (wCode == "1S" && sameSideTaskNum <= taskInfoCount_1S) ||
+                        (wCode == "2N" && sameSideTaskNum <= taskInfoCount_2N) || (wCode == "2S" && sameSideTaskNum <= taskInfoCount_2S))
+                    {                        
+                        if (wCode == "1N")
+                        {
+                            if (count_1S >= count_2N && count_1S >= count_2S)
+                            {
+                                wCode = (taskInfoCount_1S < sameSideTaskNum) ? "1S" : (taskInfoCount_2N < sameSideTaskNum ? "2N" : "2S");                                                           
+                            }
+                            else if (count_2N >= count_1S && count_2N >= count_2S)
+                            {
+                                wCode = (taskInfoCount_2N < sameSideTaskNum) ? "2N" : (taskInfoCount_1S < sameSideTaskNum ? "1S" : "2S");
+                            }
+                            else if (count_2S >= count_1S && count_2S >= count_2N)
+                            {
+                                wCode = (taskInfoCount_2S < sameSideTaskNum) ? "2S" : (taskInfoCount_1S < sameSideTaskNum ? "1S" : "2N");
+                            }
+                        }
+                        else if (wCode == "1S")
+                        {
+                            if (count_1N >= count_2N && count_1N >= count_2S)
+                            {
+                                wCode = (taskInfoCount_1N < sameSideTaskNum) ? "1N" : (taskInfoCount_2N < sameSideTaskNum ? "2N" : "2S");
+                            }
+                            else if (count_2N >= count_1N && count_2N >= count_2S)
+                            {
+                                wCode = (taskInfoCount_2N < sameSideTaskNum) ? "2N" : (taskInfoCount_1N < sameSideTaskNum ? "1N" : "2S");
+                            }
+                            else if (count_2S >= count_1N && count_2S >= count_2N)
+                            {
+                                wCode = (taskInfoCount_2S < sameSideTaskNum) ? "2S" : (taskInfoCount_1N < sameSideTaskNum ? "1N" : "2N");
+                            }
+                        }
+                        else if (wCode == "2N")
+                        {
+                            if (count_2S >= count_1N && count_2S >= count_1S)
+                            {
+                                wCode = (taskInfoCount_2S < sameSideTaskNum) ? "2S" : (taskInfoCount_1N < sameSideTaskNum ? "1N" : "1S");
+                            }
+                            else if (count_1N >= count_1S && count_1N >= count_2S)
+                            {
+                                wCode = (taskInfoCount_1N < sameSideTaskNum) ? "1N" : (taskInfoCount_1S < sameSideTaskNum ? "1S" : "2S");
+                            }
+                            else if (count_1S >= count_1N && count_1S >= count_2S)
+                            {
+                                wCode = (taskInfoCount_1S < sameSideTaskNum) ? "1S" : (taskInfoCount_1N < sameSideTaskNum ? "1N" : "2S");
+                            }
+                        }
+                        else if (wCode == "2S")
+                        {
+                            if (count_2N >= count_1S && count_2N >= count_1N)
+                            {
+                                wCode = (taskInfoCount_2N < sameSideTaskNum) ? "2N" : (taskInfoCount_1N < sameSideTaskNum ? "1N" : "1S");
+                            }
+                            else if (count_1N >= count_1S && count_1N >= count_2N)
+                            {
+                                wCode = (taskInfoCount_1N < sameSideTaskNum) ? "1N" : (taskInfoCount_1S < sameSideTaskNum ? "1S" : "2N");
+                            }
+                            else if (count_1S >= count_1N && count_1S >= count_2N)
+                            {
+                                wCode = (taskInfoCount_1S < sameSideTaskNum) ? "1S" : (taskInfoCount_2N < sameSideTaskNum ? "2N" : "1N");
+                            }
+                        }
+                    }
+                }                           
+                                   
                 //创建入库记录
                 var createStockInWcsTaskReqest = new FJCreateStockInWcsTaskRequest
                 {
@@ -1057,7 +1136,7 @@ namespace wms.service.Service
                     Type = TaskType.EnterDepot,
                     DocCode = "",
                     WorkBench = task.WorkBench,
-                    WarehouseCode = wCode /*(count_1N <= count_2N) ? "1N" : "2N"*/
+                    WarehouseCode = wCode
                 };
 
                 //下发wcs任务 - 分解方法
@@ -1080,12 +1159,33 @@ namespace wms.service.Service
 
                 return res;
             }
-
             res.ResCode = ResponseStatusCodeEnum.Sucess.GetHashCode();
             res.ResMsg = ResponseStatusCodeEnum.Sucess.ToString();
             return res;
         }
 
+        public string Max(int count_1N,int count_1S, int count_2N, int count_2S)
+        {
+            string wareHouse = "1N";
+            int max = count_1N;
+            if (count_1S > max)
+            {
+                max = count_1S;
+                wareHouse = "1S";
+            }
+            if (count_2N > max)
+            {
+                max = count_2N;
+                wareHouse = "2N";
+            }
+            if (count_2S > max)
+            {
+                max = count_2S;
+                wareHouse = "2S";
+            }
+            return wareHouse;
+        }
+
         /// <summary>
         ///     人工创建UT满托入库任务
         /// </summary>
@@ -1691,14 +1791,14 @@ namespace wms.service.Service
                 if (stock != null && stock.InvStateCode == InvState.InvEcecState_In.ToString())
                 {
                     res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
-                    res.ResMsg = "该工字轮条码号已在库中,请检查工字轮条码号是否重复";
+                    res.ResMsg = $"工字轮条码{spool.SpoolCode}已在库中,请检查工字轮条码号是否重复";
                     return res;
                 }
 
                 if (stock != null && stock.InvStateCode == InvState.InvEcecState_OutGoing.ToString())
                 {
                     res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
-                    res.ResMsg = "该工字轮条码号存在出库中任务,请检查上一个任务是否已经完成";
+                    res.ResMsg = $"工字轮条码{spool.SpoolCode}存在出库中任务,请检查上一个任务是否已经完成";
                     return res;
                 }
 
@@ -1896,7 +1996,7 @@ namespace wms.service.Service
             }
 
             //托盘库存
-            var trayCode = _billInvnowrepository.GetSingle(p => p.ContGrpBarCode == reqDto.TrayCode);
+            var trayCode = _billInvnowrepository.GetFirst(p => p.ContGrpBarCode == reqDto.TrayCode);
             if (trayCode != null && trayCode.InvStateCode == InvState.InvEcecState_In.ToString())
             {
                 res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
@@ -1911,6 +2011,13 @@ namespace wms.service.Service
                 return res;
             }
 
+            if (trayCode != null && trayCode.InvStateCode == InvState.InvEcecState_BuildUp.ToString())
+            {
+                res.ResCode = ResponseStatusCodeEnum.Fail.GetHashCode();
+                res.ResMsg = "该托盘条码号存在已组盘中任务,请检查库存信息";
+                return res;
+            }
+
             var mac = _basemachinforepository.GetFirst(x => x.MachNo == reqDto.LocCode);
 
             try
@@ -8749,8 +8856,14 @@ namespace wms.service.Service
                         var wareHouse = _basewarehouserepository.GetSingle(x => x.Id == stocklist.First().WarehouseId);
                         if (wareHouse.TypeNum == FjLocationType.Pingku)
                         {
-                            _db.BeginTran();                          
-                            _billInvinitrepository.Delete(x => x.ContGrpBarCode == task.BarCode && x.InvStateCode == InvState.InvEcecState_BuildUp.ToString());                          
+                            _db.BeginTran();                                                     
+                            _billInvnowrepository.Delete(p => p.ContGrpBarCode == task.BarCode && p.InvStateCode == InvState.InvEcecState_BuildUp.ToString());
+                           
+                            //_billInvinitrepository.Delete(p =>
+                            //    hWBarCode.Contains(p.HWBarCode) &&
+                            //    p.InvStateCode == InvState.InvEcecState_OutGoing.ToString());
+                            //contGrpBarCode = stocklist.Select(p => p.ContGrpBarCode).ToList();
+                          
                             _db.CommitTran();                           
                         }
                     }