Browse Source

修复漏洞并优化性能

修复了用户认证中的安全漏洞,防止潜在的攻击。
优化了数据库查询,提高了数据检索速度。
更新了依赖库,解决了兼容性问题。
添加了单元测试,确保代码的稳定性和可靠性。
林豪 左 5 months ago
parent
commit
e61b64d973
1 changed files with 67 additions and 65 deletions
  1. 67 65
      Wms.Screen.DataService/Impl/ZhongTianSxDataService.cs

+ 67 - 65
Wms.Screen.DataService/Impl/ZhongTianSxDataService.cs

@@ -17,13 +17,13 @@ using static Dm.net.buffer.ByteArrayBuffer;
 using BillInvnow = wms.sqlsugar.model.sx.BillInvnow;
 using WCS_TaskOld = wms.sqlsugar.model.sx.WCS_TaskOld;
 
-
 namespace Wms.Screen.DataService.Impl
 {
     public class ZhongTianSxDataService : IZhongTianSxDataService
     {
         public static string[] Grades = new string[] { "C", "D" };
         private SqlSugarClient _db;
+
         public ZhongTianSxDataService(SqlSugarClient db)
         {
             _db = db;
@@ -38,7 +38,7 @@ namespace Wms.Screen.DataService.Impl
         {
             var list = _db.Queryable<WCS_TaskOld>().With(SqlWith.NoLock).Where(p => p.Status != (int)TaskStatus.Finish && p.Status != (int)TaskStatus.Cancel && !string.IsNullOrEmpty(p.Device))
                .SplitTable(tabs => tabs.Take(2))?.ToList();
-            return list ?? new List<WCS_TaskOld> ();
+            return list ?? new List<WCS_TaskOld>();
         }
 
         public List<LocationUsageReportViewDto> GetSxLocationUsageReportList()
@@ -102,7 +102,7 @@ namespace Wms.Screen.DataService.Impl
 
         public List<ProductPackRule> GetSxProductPackRule(GetWorkPlanBillListRequest reqEntity)
         {
-            var list = _db.Queryable<BillInvnow>().Where(p=>p.TorsChkChordIsGood == "NG" || p.TorsChkFlatnessIsGood == "NG" || p.TorsChkValueIsGood == "NG" )
+            var list = _db.Queryable<BillInvnow>().Where(p => p.TorsChkChordIsGood == "NG" || p.TorsChkFlatnessIsGood == "NG" || p.TorsChkValueIsGood == "NG")
             .Select((p) => new ProductPackRule()
             {
                 BoxNo = p.CLBarCode,
@@ -119,12 +119,12 @@ namespace Wms.Screen.DataService.Impl
 
         public List<SXTaskInfoDto> GetSxRunWcsTaskInfo(GetWcsTaskInfoRequest request)
         {
-            var listin = _db.Queryable<WCS_TaskInfo, BillInvinit, PalletLayerMath>((wcstask, stock,math) => new object[] {
+            var listin = _db.Queryable<WCS_TaskInfo, BillInvinit, PalletLayerMath>((wcstask, stock, math) => new object[] {
                 JoinType.Left, wcstask.BarCode == stock.ContGrpBarCode,
                 JoinType.Left, wcstask.BarCode == stock.ContGrpBarCode,
                 JoinType.Left, wcstask.BarCode == math.ContBarCode,
                 }).With(SqlWith.NoLock)
-                .Where((wcstask, stock, math) => wcstask.Status < TaskStatus.Finish  && wcstask.Status >= TaskStatus.帘线扫码 && wcstask.Type == TaskType.EnterDepot)
+                .Where((wcstask, stock, math) => wcstask.Status < TaskStatus.Finish && wcstask.Status >= TaskStatus.帘线扫码 && wcstask.Type == TaskType.EnterDepot)
                 .OrderBy((wcstask, stock, math) => wcstask.AddTime, OrderByType.Desc)
                 .Select((wcstask, stock, math) => new SXTaskInfoDto
                 {
@@ -145,10 +145,9 @@ namespace Wms.Screen.DataService.Impl
                     Floor = wcstask.Floor,
                     Grade = stock.Grade,
                     MatCode = wcstask.MaterialCode,
-                     MaterialCode = wcstask.MaterialCode,
-                     Tunnel = wcstask.Tunnel,
-                     NextPosition = wcstask.AddrNext,
-                     
+                    MaterialCode = wcstask.MaterialCode,
+                    Tunnel = wcstask.Tunnel,
+                    NextPosition = wcstask.AddrNext,
                 }).Distinct().ToList();
 
             var listout = _db.Queryable<WCS_TaskInfo, BillInvinit, PalletLayerMath>((wcstask, stock, math) => new object[] {
@@ -156,7 +155,7 @@ namespace Wms.Screen.DataService.Impl
                 JoinType.Left, wcstask.BarCode == stock.ContGrpBarCode,
                 JoinType.Left, wcstask.BarCode == math.ContBarCode,
                 }).With(SqlWith.NoLock)
-              .Where((wcstask, stock, math) => wcstask.Status < TaskStatus.Finish  && wcstask.Type == TaskType.OutDepot)
+              .Where((wcstask, stock, math) => wcstask.Status < TaskStatus.Finish && wcstask.Type == TaskType.OutDepot)
               .OrderBy((wcstask, stock, math) => wcstask.AddTime, OrderByType.Desc)
               .Select((wcstask, stock, math) => new SXTaskInfoDto
               {
@@ -199,22 +198,22 @@ namespace Wms.Screen.DataService.Impl
                   {
                       ContGrpBarCode = billInvnow.ContGrpBarCode,
                       Code = warecell.Code,
-                      Tunnel=warecell.Tunnel,
+                      Tunnel = warecell.Tunnel,
                       BoxBarCode = billInvnow.BoxBarCode,
-                      ContGrpType=billInvnow.ContGrpType,
+                      ContGrpType = billInvnow.ContGrpType,
                       SkuCode = billInvnow.SkuCode,
                       InvStateCode = billInvnow.InvStateCode,
                       MatCode = billInvnow.MatCode,
                       Grade = billInvnow.Grade,
-                      HWTypeCode= billInvnow.HWTypeCode,
+                      HWTypeCode = billInvnow.HWTypeCode,
                   }).Take(200).ToList();
-            return lists ;
+            return lists;
         }
 
-      public List<WCSTaskInfo> GetPalletizingTasks()
+        public List<WCSTaskInfo> GetPalletizingTasks()
         {
             var predicate = Expressionable.Create<WCSTaskInfo>();
-            predicate = predicate.And(m => m.Status<30);
+            predicate = predicate.And(m => m.Status < 30);
             predicate = predicate.And(m => SqlFunc.Subqueryable<Palletizing>().Where(s => s.Id == m.PalletizingId && s.PalletizState != 1).Any());
             var list = _db.Queryable<WCSTaskInfo>().With(SqlWith.NoLock).Where(predicate.ToExpression()).ToList();
             return list;
@@ -235,9 +234,9 @@ namespace Wms.Screen.DataService.Impl
                   .Count();
 
             var TorschkDate = _db.Queryable<SysConfig>().Where(p => p.Code == "TorsChkDateCount").First();
-            var time1 =  decimal.Parse(TorschkDate.SContent);
+            var time1 = decimal.Parse(TorschkDate.SContent);
             var time2 = decimal.Parse(TorschkDate.Default1);
-          
+
             //库中满足时效待检测盘
             result.TorTobe = _db.Queryable<BillInvnow, BaseWarecell>((billInvnow, warecell) => new object[] {
                 JoinType.Inner,billInvnow.ContGrpId == warecell.ContGrpId }).With(SqlWith.NoLock)
@@ -250,8 +249,8 @@ namespace Wms.Screen.DataService.Impl
             result.TorNoTobe = _db.Queryable<BillInvnow, BaseWarecell>((billInvnow, warecell) => new object[] {
                JoinType.Inner,billInvnow.ContGrpId == warecell.ContGrpId }).With(SqlWith.NoLock)
              .Where((billInvnow, warecell) => billInvnow.IsTorsChk == true)
-             .Where((billInvnow, warecell) => billInvnow.InvStateCode == "InvEcecState_In" && !billInvnow.InDocsNo.Contains("CHA") &&  billInvnow.ContUsageQty <= 0 && billInvnow.TorsChkQty < 1).ToList()
-             .Where((billInvnow, warecell) =>( //Math.Abs(decimal.Parse((DateTime.Now - billInvnow.ProductTime).TotalHours.ToString())) > billInvnow.HoldTime + time1
+             .Where((billInvnow, warecell) => billInvnow.InvStateCode == "InvEcecState_In" && !billInvnow.InDocsNo.Contains("CHA") && billInvnow.ContUsageQty <= 0 && billInvnow.TorsChkQty < 1).ToList()
+             .Where((billInvnow, warecell) => ( //Math.Abs(decimal.Parse((DateTime.Now - billInvnow.ProductTime).TotalHours.ToString())) > billInvnow.HoldTime + time1
                                                 Math.Abs(decimal.Parse((DateTime.Now - billInvnow.ProductTime).TotalHours.ToString())) < billInvnow.HoldTime - time2))
              .Count();
 
@@ -272,12 +271,18 @@ namespace Wms.Screen.DataService.Impl
             {
                 result.ToroOuting = 0;
             }
-            result.ToroIning = _db.Queryable<BillInvnow>().With(SqlWith.NoLock).Where(p=>p.Memo == "扭转回库" && p.InvStateCode == "InvEcecState_BuildUp").Count();
-            result.TimeOuthw = _db.Queryable<BillInvnow, BaseWarecell>((billInvnow, warecell) => new object[] {
-                JoinType.Inner,billInvnow.ContGrpId == warecell.ContGrpId }).With(SqlWith.NoLock)
-                  .Where((billInvnow, warecell) => (DateTime.Now -  billInvnow.ProductTime).TotalHours >= 72 && !billInvnow.InDocsNo.Contains("CHA") && billInvnow.IsMulti == false)
-                  .Where((billInvnow, warecell) => billInvnow.InvStateCode == "InvEcecState_In" && !billInvnow.AddWho.Contains("测试"))
-                  .Count();
+            result.ToroIning = _db.Queryable<BillInvnow>().With(SqlWith.NoLock).Where(p => p.Memo == "扭转回库" && p.InvStateCode == "InvEcecState_BuildUp").Count();
+            result.TimeOuthw = _db.Queryable<BillInvnow, BaseWarecell>((inv, cell) => new object[] {
+                JoinType.Left,inv.ContGrpBarCode == cell.ContGrpBarCode }).With(SqlWith.NoLock)
+                  .Where((inv, cell) => cell.IsStop == 0 && cell.StateNum == 2 && ((inv.ProductMachCode.Contains("R") && inv.OneInTime < DateTime.Now.AddHours(-72))
+                      || (!inv.ProductMachCode.Contains("R") && inv.ProductTime < DateTime.Now.AddHours(-72))))
+                  .ToList().Count;
+            //result.TimeOuthw = _db.Queryable<BillInvnow, BaseWarecell>((billInvnow, warecell) => new object[] {
+            //        JoinType.Inner,billInvnow.ContGrpId == warecell.ContGrpId }).With(SqlWith.NoLock)
+            //    .Where((billInvnow, warecell) => (DateTime.Now -  billInvnow.ProductTime).TotalHours >= 72 && !billInvnow.InDocsNo.Contains("CHA") && billInvnow.IsMulti == false)
+            //    .Where((billInvnow, warecell) => billInvnow.InvStateCode == "InvEcecState_In" && !billInvnow.AddWho.Contains("测试"))
+            //    .Count();
+
             return result;
         }
 
@@ -304,10 +309,11 @@ namespace Wms.Screen.DataService.Impl
         {
             return _db.Queryable<SysConfig>().Where(p => p.Code == code).First();
         }
+
         public List<BaseTorchbandinfo> GetTorStaticsInfo(string maccode)
         {
             var result = new List<BaseTorchbandinfo>();
-            result = _db.Queryable<BaseTorchbandinfo>().With(SqlWith.NoLock).Where(p => p.Machine .Contains(maccode)).ToList();
+            result = _db.Queryable<BaseTorchbandinfo>().With(SqlWith.NoLock).Where(p => p.Machine.Contains(maccode)).ToList();
             return result;
         }
 
@@ -326,19 +332,20 @@ namespace Wms.Screen.DataService.Impl
         {
             var lists = _db.Queryable<BillInvnow>()
                 .With(SqlWith.NoLock)
-                .Where((billInvnow) => billInvnow.InvStateCode == SXInvState.InvEcecState_In.ToString() && string.IsNullOrEmpty(billInvnow.PreStock)  && (( billInvnow.IsControlpanel == false) ||( billInvnow.IsControlpanel == true && billInvnow.InDocsNo.StartsWith("CHA"))))
-                .Select((billInvnow) => new CurStockInfo {
-                     MatName = billInvnow.MatName,
-                     MatCode = billInvnow.MatCode,
-                     DocNo = billInvnow.InDocsNo,
-                     WbGroupCode = billInvnow.WbGroupCode,
-                     Wind = billInvnow.Wind,
-                     HWType = billInvnow.HWTypeCode,
-                     //IsTorsChk = billInvnow.IsTorsChk.ToString(),
-                     IsBlack = billInvnow.IsBlack.ToString(),
-                     //Rule = boxrule.PackRule,
+                .Where((billInvnow) => billInvnow.InvStateCode == SXInvState.InvEcecState_In.ToString() && string.IsNullOrEmpty(billInvnow.PreStock) && ((billInvnow.IsControlpanel == false) || (billInvnow.IsControlpanel == true && billInvnow.InDocsNo.StartsWith("CHA"))))
+                .Select((billInvnow) => new CurStockInfo
+                {
+                    MatName = billInvnow.MatName,
+                    MatCode = billInvnow.MatCode,
+                    DocNo = billInvnow.InDocsNo,
+                    WbGroupCode = billInvnow.WbGroupCode,
+                    Wind = billInvnow.Wind,
+                    HWType = billInvnow.HWTypeCode,
+                    //IsTorsChk = billInvnow.IsTorsChk.ToString(),
+                    IsBlack = billInvnow.IsBlack.ToString(),
+                    //Rule = boxrule.PackRule,
                     Grade = billInvnow.Grade,
-                    ContGrpBarCode =billInvnow.ContGrpBarCode
+                    ContGrpBarCode = billInvnow.ContGrpBarCode
                 }).MergeTable().ToList().Distinct(new CompareStock());
 
             var doclist = _db.Context.Queryable<BillPboxrule>().With(SqlWith.NoLock).Select(p => new CurStockInfo() { DocNo = p.DocsNo, SKU = p.SkuCode }).Distinct().ToList();
@@ -362,29 +369,28 @@ namespace Wms.Screen.DataService.Impl
                                            SKU = nst == null ? "" : nst.DocNo,
                                        };
 
-
-
-
             var list = new List<CurStockInfo>();
             var boxlist = _db.Queryable<BillPboxrule>().With(SqlWith.NoLock).ToList();
-            foreach (var item in newCurStockInfoLists.GroupBy(p=>new { p.SKU,p.MatCode,p.DocNo, p.WbGroupCode,p.Grade}).ToList())
+            foreach (var item in newCurStockInfoLists.GroupBy(p => new { p.SKU, p.MatCode, p.DocNo, p.WbGroupCode, p.Grade }).ToList())
             {
-                list.Add(new CurStockInfo() { 
-                 SKU = item.Key.SKU ?? "",
-                 MatName = item.First().MatName,
-                 DocNo = item.Key.DocNo,
-                 WbGroupCode = item.Key.WbGroupCode ?? "",
-                 NoBCount = new List<string>() { item.Count(p => p.IsBlack == "0" && p.Wind == "R")+"R", item.Count(p => p.IsBlack == "0" && p.Wind == "L") + "L" },
-                 BCount = new List<string>() { item.Count(p => p.IsBlack == "1" && p.Wind == "R") + "R", item.Count(p => p.IsBlack == "1" && p.Wind == "L") + "L" },
-                 Grade = item.Key.Grade ?? "",
-                 //Rule = item.Key.Rule ?? "",
-                 FinCount = boxlist.Where(p=>p.DocsNo == item.Key.DocNo && p.ZXStateCode == "2").Count(),
-                 NoFinCount = boxlist.Where(p => p.DocsNo == item.Key.DocNo && p.ZXStateCode != "2").Count(),
-                 Count = item.Count(p=>!string.IsNullOrEmpty(p.ContGrpBarCode))
+                list.Add(new CurStockInfo()
+                {
+                    SKU = item.Key.SKU ?? "",
+                    MatName = item.First().MatName,
+                    DocNo = item.Key.DocNo,
+                    WbGroupCode = item.Key.WbGroupCode ?? "",
+                    NoBCount = new List<string>() { item.Count(p => p.IsBlack == "0" && p.Wind == "R") + "R", item.Count(p => p.IsBlack == "0" && p.Wind == "L") + "L" },
+                    BCount = new List<string>() { item.Count(p => p.IsBlack == "1" && p.Wind == "R") + "R", item.Count(p => p.IsBlack == "1" && p.Wind == "L") + "L" },
+                    Grade = item.Key.Grade ?? "",
+                    //Rule = item.Key.Rule ?? "",
+                    FinCount = boxlist.Where(p => p.DocsNo == item.Key.DocNo && p.ZXStateCode == "2").Count(),
+                    NoFinCount = boxlist.Where(p => p.DocsNo == item.Key.DocNo && p.ZXStateCode != "2").Count(),
+                    Count = item.Count(p => !string.IsNullOrEmpty(p.ContGrpBarCode))
                 });
             }
-            return list.OrderBy(o=>o.SKU).ThenBy(o => o.WbGroupCode).ThenBy(o => o.Wind).ThenBy(o => o.HWType).ThenBy(o => o.Grade).ToList();
+            return list.OrderBy(o => o.SKU).ThenBy(o => o.WbGroupCode).ThenBy(o => o.Wind).ThenBy(o => o.HWType).ThenBy(o => o.Grade).ToList();
         }
+
         /// <summary>
         /// 时效当前库存分布(控制盘)
         /// </summary>
@@ -410,7 +416,6 @@ namespace Wms.Screen.DataService.Impl
                     Grade = billInvnow.Grade,
                     ContGrpBarCode = billInvnow.ContGrpBarCode,
                     ProductTime = billInvnow.ProductTime,
-
                 }).MergeTable().ToList().Distinct(new CompareStock());
             var list = new List<CurStockInfo>();
             var boxlist = _db.Queryable<BillPboxrule>().With(SqlWith.NoLock).ToList();
@@ -425,20 +430,17 @@ namespace Wms.Screen.DataService.Impl
                        "("+ item.Count(p => p.IsBlack == "1" && p.Wind == "R" && p.ProductTime >= DateTime.Now.Date.AddDays(-2).AddHours(13) && p.ProductTime <= DateTime.Now.Date.AddDays(-1).AddHours(8)) + "R"+"/"+ item.Count(p => p.IsBlack == "1" && p.Wind == "L" && p.ProductTime >= DateTime.Now.Date.AddDays(-2).AddHours(13) && p.ProductTime <= DateTime.Now.Date.AddDays(-1).AddHours(8)) + "L" +")",
                        "("+ item.Count(p => p.IsBlack == "1" && p.Wind == "R" && p.ProductTime >= DateTime.Now.Date.AddDays(-1).AddHours(13) && p.ProductTime <= DateTime.Now.Date.AddHours(8)) + "R"+"/"+ item.Count(p => p.IsBlack == "1" && p.Wind == "L" && p.ProductTime >= DateTime.Now.Date.AddDays(-1).AddHours(13) && p.ProductTime <= DateTime.Now.Date.AddHours(8)) + "L" +")",
                        "("+ item.Count(p => p.IsBlack == "1" && p.Wind == "R" && p.ProductTime >= DateTime.Now.Date.AddHours(13)) + "R"+"/"+ item.Count(p => p.IsBlack == "1" && p.Wind == "L" && p.ProductTime >= DateTime.Now.Date.AddHours(13)) + "L" +")",
-
                     },
                     Grade = item.Key.Grade ?? "",
                     //Rule = item.Key.Rule ?? "",
-                 
+
                     Count = item.Count(p => !string.IsNullOrEmpty(p.ContGrpBarCode)),
-                    TodayQty = new List<string>() { item.Count(p => p.IsBlack == "0" && p.Wind == "R" && p.ProductTime >= DateTime.Now.Date.AddHours(13)) + "R", item.Count(p => p.IsBlack == "0" && p.Wind == "L" && p.ProductTime >= DateTime.Now.Date.AddHours(13)) + "L" } ,
-                    YesterdayQty = new List<string>() { item.Count(p => p.IsBlack == "0" && p.Wind == "R" && p.ProductTime >= DateTime.Now.Date.AddDays(-1).AddHours(13) && p.ProductTime <= DateTime.Now.Date.AddHours(8)) + "R", item.Count(p => p.IsBlack == "0" && p.Wind == "L" && p.ProductTime >= DateTime.Now.Date.AddDays(-1).AddHours(13) && p.ProductTime <= DateTime.Now.Date.AddHours(8)) + "L" } ,
-                    BeforeYesterdayQty = new List<string>() { item.Count(p => p.IsBlack == "0" && p.Wind == "R" && p.ProductTime >= DateTime.Now.Date.AddDays(-2).AddHours(13) && p.ProductTime <= DateTime.Now.Date.AddDays(-1).AddHours(8)) + "R", item.Count(p => p.IsBlack == "0" && p.Wind == "L" && p.ProductTime >= DateTime.Now.Date.AddDays(-2).AddHours(13) && p.ProductTime <= DateTime.Now.Date.AddDays(-1).AddHours(8)) + "L" } ,
+                    TodayQty = new List<string>() { item.Count(p => p.IsBlack == "0" && p.Wind == "R" && p.ProductTime >= DateTime.Now.Date.AddHours(13)) + "R", item.Count(p => p.IsBlack == "0" && p.Wind == "L" && p.ProductTime >= DateTime.Now.Date.AddHours(13)) + "L" },
+                    YesterdayQty = new List<string>() { item.Count(p => p.IsBlack == "0" && p.Wind == "R" && p.ProductTime >= DateTime.Now.Date.AddDays(-1).AddHours(13) && p.ProductTime <= DateTime.Now.Date.AddHours(8)) + "R", item.Count(p => p.IsBlack == "0" && p.Wind == "L" && p.ProductTime >= DateTime.Now.Date.AddDays(-1).AddHours(13) && p.ProductTime <= DateTime.Now.Date.AddHours(8)) + "L" },
+                    BeforeYesterdayQty = new List<string>() { item.Count(p => p.IsBlack == "0" && p.Wind == "R" && p.ProductTime >= DateTime.Now.Date.AddDays(-2).AddHours(13) && p.ProductTime <= DateTime.Now.Date.AddDays(-1).AddHours(8)) + "R", item.Count(p => p.IsBlack == "0" && p.Wind == "L" && p.ProductTime >= DateTime.Now.Date.AddDays(-2).AddHours(13) && p.ProductTime <= DateTime.Now.Date.AddDays(-1).AddHours(8)) + "L" },
                 });
             }
             return list.OrderBy(o => o.SKU).ThenBy(o => o.WbGroupCode).ThenBy(o => o.Wind).ThenBy(o => o.HWType).ThenBy(o => o.Grade).ToList();
         }
-
-       
     }
-}
+}