From ddab693f389b648157c8b48c7fcbdefc92561dd2 Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期五, 05 七月 2024 19:55:22 +0800
Subject: [PATCH] 老PCS替换代码优化,工业大屏优化,PDA功能优化

---
 代码管理/WMS/WMS_Server/WIDESEA_WebApi/Controllers/LargescreenController.cs |  138 ++++++++++++++++++++++++++++++++-------------
 1 files changed, 98 insertions(+), 40 deletions(-)

diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/LargescreenController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/LargescreenController.cs"
index e55686b..ff8c896 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/LargescreenController.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WMS_Server/WIDESEA_WebApi/Controllers/LargescreenController.cs"
@@ -1,19 +1,26 @@
 锘縰sing Microsoft.AspNetCore.Mvc;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Numeric;
+using System;
 using System.Collections.Generic;
 using System.Linq;
-using System;
+using System.Security.Cryptography;
+using System.Xml.Linq;
+using WIDESEA_Comm;
+using WIDESEA_Common;
 using WIDESEA_Core.EFDbContext;
+using WIDESEA_Entity.DomainModels;
 using WIDESEA_WMS.IRepositories;
 using WIDESEA_WMS.Repositories;
-using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
 
 namespace WIDESEA_WebApi.Controllers
 {
+
     [Route("api/[controller]")]
     [ApiController]
     public class LargescreenController : Controller     //澶у睆骞曟暟鎹�
     {
-        #region  绗竴鏉垮潡缁熻鍥�
+        #region  绗竴鏉垮潡缁熻鍥撅紝鏈娇鐢�
         /// <summary>
         /// 鏈堬紝鏃ュ嚭鍏ュ簱鏁伴噺缁熻
         /// </summary>
@@ -91,19 +98,21 @@
             var endDate = startDate.AddMonths(1).AddDays(-1);
             var today = DateTime.Today;
 
-            var data2 = db.Find(x => x.agv_createtime >= startDate && x.agv_createtime <= endDate);
+            var data2 = db.Find(x => x.agv_finishedtime >= startDate && x.agv_finishedtime <= endDate);
+
+            var data3 = db.Find(x => x.agv_finishedtime >= today && x.agv_finishedtime < today.AddDays(1)).ToList();
 
             // 缁熻杩欐湀鐨勫叆搴撴暟閲�
-            var monthlyInventory = data2.Where(x => x.agv_tasktype == "TaskType_Inbound").Sum(x => x.agv_qty);
+            var monthlyInventory = data2.Where(x => x.agv_tasktype == AGVTaskTypeEnum.TaskType_Inbound.ToString()).Sum(x => x.agv_qty);
 
             // 缁熻杩欐湀鐨勫嚭搴撴暟閲�
-            var monthlyOutbound = data2.Where(x => x.agv_tasktype == "TaskType_Outbound").Sum(x => x.agv_qty);
+            var monthlyOutbound = data2.Where(x => x.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || x.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString()).Sum(x => x.agv_qty);
 
             // 缁熻浠婃棩鍏ュ簱鏁伴噺
-            var dayInventory = data2.Where(x => x.agv_tasktype == "TaskType_Inbound").Sum(x => x.agv_qty);
+            var dayInventory = data3.Where(x => x.agv_tasktype == AGVTaskTypeEnum.TaskType_Inbound.ToString()).Sum(x => x.agv_qty);
 
             // 缁熻浠婃棩鍑哄簱鏁伴噺
-            var dayOutbound = data2.Where(x => x.agv_tasktype == "TaskType_Outbound").Sum(x => x.agv_qty);
+            var dayOutbound = data3.Where(x => x.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || x.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString()).Sum(x => x.agv_qty);
 
             var data = new
             {
@@ -125,8 +134,7 @@
         [HttpPost("Outbound_inventory")]
         public object Outbound_inventory()
         {
-
-
+            #region 浣跨敤涓殑鍐呭
             VOLContext volContext = new VOLContext();
             Idt_agvtask_htyRepository db = new dt_agvtask_htyRepository(volContext);
             Idt_stationinfoRepository db2 = new dt_stationinfoRepository(volContext);
@@ -135,23 +143,37 @@
 
 
             //浠婃棩寰呮娴嬪叆搴�
-            var dayTaskType_Inbound = data2.Where(x => x.agv_tasktype == "TaskType_Inbound").Sum(x => x.agv_qty);
+            var dayTaskType_Inbound = data2.Where(x => x.agv_tasktype == AGVTaskTypeEnum.TaskType_Inbound.ToString()).Sum(x => x.agv_qty);
             //寰呮娴嬪嚭搴�
-            var dayTaskType_Outbound = data2.Where(x => x.agv_tasktype == "TaskType_Outbound").Sum(x => x.agv_qty);
+            var dayTaskType_Outbound = data2.Where(x => x.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString()).Sum(x => x.agv_qty);
             //澶栧崗搴撳叆搴�
-            var dayTaskType_OutsourceInbound = data2.Where(x => x.agv_tasktype == "TaskType_OutsourceInbound").Sum(x => x.agv_qty);
+            var dayTaskType_OutsourceInbound = data2.Where(x => x.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceInbound.ToString()).Sum(x => x.agv_qty);
             //澶栧崗搴撳嚭搴�
-            var dayTaskType_OutsourceOutbound = data2.Where(x => x.agv_tasktype == "TaskType_OutsourceOutbound").Sum(x => x.agv_qty);
+            var dayTaskType_OutsourceOutbound = data2.Where(x => x.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceOutbound.ToString()).Sum(x => x.agv_qty);
             //寰呮绉诲簱澶栧崗
-            var dayTaskType_OutsourceCarry = data2.Where(x => x.agv_tasktype == "TaskType_OutsourceCarry").Sum(x => x.agv_qty);
+            var dayTaskType_OutsourceCarry = data2.Where(x => x.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString()).Sum(x => x.agv_qty);
             //绌烘墭鏁伴噺
-            var dayTaskType_EmptyPallet = data2.Where(x => x.agv_tasktype == "TaskType_EmptyPallet").Sum(x => x.agv_qty);
+            var dayTaskType_EmptyPallet = data2.Where(x => x.agv_tasktype == AGVTaskTypeEnum.TaskType_EmptyPallet.ToString()).Sum(x => x.agv_qty);
+
+            //缁熻鏈堝叆搴撴�婚噺
+            var startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
+            var endDate = startDate.AddMonths(1).AddDays(-1);
+            var data4 = db.Find(x => x.agv_createtime >= startDate && x.agv_createtime <= endDate);
+            // 缁熻杩欐湀鐨勫叆搴撴暟閲�
+            var monthlyInventory = data4.Where(x => x.agv_tasktype == AGVTaskTypeEnum.TaskType_Inbound.ToString()).Sum(x => x.agv_qty);
+            // 缁熻杩欐湀鐨勫嚭搴撴暟閲�
+            var monthlyOutbound = data4.Where(x => x.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || x.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString()).Sum(x => x.agv_qty);
+            // 缁熻浠婃棩鍏ュ簱鏁伴噺
+            var dayInventory = data2.Where(x => x.agv_tasktype == AGVTaskTypeEnum.TaskType_Inbound.ToString()).Sum(x => x.agv_qty);
+
+            // 缁熻浠婃棩鍑哄簱鏁伴噺
+            var dayOutbound = data2.Where(x => x.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || x.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString()).Sum(x => x.agv_qty);
 
 
-            var data3 = db2.Find(_ => true).ToList();
+            var data3 = db2.Find(_ => true).Where(x => x.stationCode.Contains("A") || x.stationCode.Contains("B") || x.stationCode.Contains("C") || x.stationCode.Contains("D01")).ToList();
 
             //搴撳尯鍥惧彿鏁伴噺,澶栧姞绌烘墭鏁伴噺
-            var Number_wheels = data3.Where(_ => true)
+            var Number_wheels1 = data3.Where(_ => true)
              .GroupBy(s => new
              {
                  stationType = string.IsNullOrEmpty(s.stationType) ? s.tray_type : s.stationType,
@@ -163,6 +185,11 @@
                  tray_type = g.Key.tray_type
              }).ToList();
 
+            var Number_wheels = Number_wheels1.Where(x => x.stationType != TrayTypeEnum.LargeTray.ToString() && x.stationType != TrayTypeEnum.SmallTray.ToString()).ToList();
+            #endregion
+
+
+            #region 鏈娇鐢ㄧ殑鍐呭
             //缁熻涓嬫枡鍙e悎鏍肩巼涓庝笉鍚堟牸鐜�1鍗曞厓
             var dayTaskType_Inbound2 = data2.Where(x => x.agv_tasktype == "TaskType_Inbound" && (x.agv_fromaddress == "X01001001" || x.agv_fromaddress == "X01001002") && x.agv_createtime >= today && x.agv_createtime < today.AddDays(1)).Sum(x => x.agv_qty);
             //澶栧崗搴撳叆搴�1鍗曞厓
@@ -184,6 +211,10 @@
             var sumkw = data3.Where(a => a.stationCode.Contains("B") || a.stationCode.Contains("C") || a.stationCode.Contains("D01")).Count(); //鑾峰彇搴撳尯搴撲綅
             var sumzy = data3.Where(a => (a.stationCode.Contains("B") || a.stationCode.Contains("C") || a.stationCode.Contains("D01")) && a.location_state == "Stroge").Count(); //鑾峰彇琚崰鐢ㄧ殑
             var areaper = ((double)sumzy / sumkw).ToString("P0");
+            #endregion
+
+
+
 
 
             var data = new
@@ -198,6 +229,10 @@
                 qualified2,
                 areaper,
                 Number_wheels,
+                monthlyInventory,
+                monthlyOutbound,
+                dayInventory,
+                dayOutbound,
             };
             return Ok(data);
         }
@@ -211,12 +246,10 @@
         [HttpPost("Warehouse_area")]
         public object Warehouse_area()
         {
-
-
             VOLContext volContext = new VOLContext();
             Idt_stationinfoRepository db = new dt_stationinfoRepository(volContext);
             string[] areas = { "2", "3", "4" };
-            var data2 = db.Find(a => areas.Contains(a.area)).ToList();
+            var data2 = db.Find(a => areas.Contains(a.area)).OrderBy(x => x.stationCode).ToList();
             var dataList = new List<dynamic>();
 
             foreach (string area in areas)
@@ -228,12 +261,26 @@
                     Area = x.Key.area,
                     x.Key.line,
                     x.Key.stationType,
-                    combined_heatNumber = string.Join(", ", x.Select(y => y.heatNumber).Distinct())
+                    combined_heatNumber = string.Join(", ", x.Select(y => y.heatNumber).Distinct()),
                 })
-                .Where(x => !string.IsNullOrEmpty(x.stationType) && !string.IsNullOrEmpty(x.combined_heatNumber))
-                .OrderBy(x => x.Area)
-                .ThenBy(x => x.line)
-                .ToList();
+                .OrderBy(x => x.line)
+                //.ThenBy(x => x.line)
+                .GroupBy(x => x.line) // 浣跨敤 GroupBy 鎸� Line 瀛楁鍒嗙粍
+                .Select(group =>
+                {
+                    // 鎵惧埌姣忎釜鍒嗙粍涓涓�涓� stationType 涓嶄负绌虹殑鍏冪礌
+                    var firstWithStationType = group.FirstOrDefault(x => !string.IsNullOrEmpty(x.stationType));
+                    if (firstWithStationType != null)
+                    {
+                        return firstWithStationType;
+                    }
+                    else
+                    {
+                        // 濡傛灉鍒嗙粍涓兘鏄� stationType 涓虹┖锛屽垯杩斿洖绗竴涓厓绱狅紙姝ゆ椂鍗充负 stationType 涓虹┖鐨勶級
+                        return group.First();
+                    }
+                })
+                    .ToList();
 
                 dataList = dataList.Concat(data).ToList();
             }
@@ -243,7 +290,7 @@
 
         #region  绗洓鏉垮潡
         /// <summary>
-        /// 15鏃ュ唴鐨勫嚭鍏ュ簱
+        /// 5鏃ュ唴鐨勫嚭鍏ュ簱
         /// </summary>
         /// <returns></returns>
         [HttpPost("fifteenTotal_quantityndex")]
@@ -251,19 +298,19 @@
         {
             VOLContext volContext = new VOLContext();
             Idt_agvtask_htyRepository db = new dt_agvtask_htyRepository(volContext);
-            var startDate = DateTime.Today.AddDays(-15); // 鑾峰彇褰撳墠鏃ユ湡涔嬪墠15澶╃殑鏃ユ湡
+            var startDate = DateTime.Today.AddDays(-5); // 鑾峰彇褰撳墠鏃ユ湡涔嬪墠15澶╃殑鏃ユ湡
             var today = DateTime.Today;
-            var dateRange = Enumerable.Range(0, 15).Select(offset => today.AddDays(-offset)); // 鑾峰彇鏈�杩�15澶╃殑鏃ユ湡鑼冨洿
+            var dateRange = Enumerable.Range(0, 5).Select(offset => today.AddDays(-offset)); // 鑾峰彇鏈�杩�15澶╃殑鏃ユ湡鑼冨洿
 
-            var data2 = db.Find(x => x.agv_createtime >= startDate && x.agv_createtime < today.AddDays(1)).ToList();
+            var data2 = db.Find(x => x.agv_finishedtime >= startDate && x.agv_finishedtime < today.AddDays(1)).ToList();
 
             var result = dateRange.Reverse().Select(date =>
             {
                 // 缁熻褰撴棩鍏ュ簱鏁伴噺
-                var dayInventory = data2.Where(x => x.agv_createtime >= date && x.agv_createtime < date.AddDays(1) && x.agv_tasktype == "TaskType_Inbound").Sum(x => x.agv_qty);
+                var dayInventory = data2.Where(x => x.agv_finishedtime >= date && x.agv_finishedtime < date.AddDays(1) && x.agv_tasktype == AGVTaskTypeEnum.TaskType_Inbound.ToString()).Sum(x => x.agv_qty);
 
                 // 缁熻褰撴棩鍑哄簱鏁伴噺
-                var dayOutbound = data2.Where(x => x.agv_createtime >= date && x.agv_createtime < date.AddDays(1) && x.agv_tasktype == "TaskType_Outbound").Sum(x => x.agv_qty);
+                var dayOutbound = data2.Where(x => x.agv_finishedtime >= date && x.agv_finishedtime < date.AddDays(1) && x.agv_tasktype == AGVTaskTypeEnum.TaskType_Outbound.ToString() || x.agv_tasktype == AGVTaskTypeEnum.TaskType_OutsourceCarry.ToString()).Sum(x => x.agv_qty);
 
                 return new
                 {
@@ -281,7 +328,7 @@
         }
         #endregion
 
-        #region  绗簲鏉垮潡
+        #region  绗叚鏉垮潡
         /// <summary>
         /// 褰撳墠agv浠诲姟
         /// </summary>
@@ -293,14 +340,10 @@
             Idt_agvtaskRepository db = new dt_agvtaskRepository(volContext);
             var dataList = db.Find(_ => true).OrderByDescending(x => x.agv_createtime).ToList();
 
-            var data = dataList.Where(x => x.agv_taskstate != "闃熷垪" && x.agv_taskstate != "Queue" && x.agv_taskstate != "浠诲姟鏆傚仠" && x.agv_taskstate != "Pause").ToList();
-
-            if (data.Count < 10)
+            var data = dataList.Where(x => x.agv_taskstate != "闃熷垪" && x.agv_taskstate != "Queue" && x.agv_taskstate != "鏆傚仠" && x.agv_taskstate != "Pause").ToList();
+            if (data.Count <= 15)
             {
-                var additionalData = dataList.Where(x => x.agv_taskstate == "闃熷垪" || x.agv_taskstate == "Queue")
-                                              .Take(10 - data.Count)
-                                              .ToList();
-                data.AddRange(additionalData);
+                data = dataList.Take(15).ToList();
             }
             foreach (var item in data)
             {
@@ -354,6 +397,9 @@
                     case "SendOut":
                         item.agv_taskstate = "宸蹭笅鍙�";
                         break;
+                    case "Pause":
+                        item.agv_taskstate = "鏆傚仠";
+                        break;
                     default:
                         return "鏈煡浠诲姟鐘舵��";
                 }
@@ -363,5 +409,17 @@
 
         }
         #endregion
+
+        #region  绗竷鏉垮潡锛堟柊澧炲唴瀹癸級
+        /// <summary>
+        /// 宸ュ崟淇℃伅VV_Workinfo
+        /// </summary>
+        /// <returns></returns>
+        /*[HttpPost("Workinfo_information")]
+        public object Workinfo_information()
+        {
+
+        }*/
+        #endregion
     }
 }

--
Gitblit v1.9.3