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