¶Ô±ÈÐÂÎļþ |
| | |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System; |
| | | using WIDESEA_Core.EFDbContext; |
| | | 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 ç¬¬ä¸æ¿åç»è®¡å¾ |
| | | /// <summary> |
| | | /// æï¼æ¥åºå
¥åºæ°éç»è®¡ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost("Statistical_chart")] |
| | | public object Statistical_chart() |
| | | { |
| | | VOLContext volContext = new VOLContext(); |
| | | Idt_stationinfoRepository db = new dt_stationinfoRepository(volContext); |
| | | |
| | | string[] stationCodes = { "A", "B", "C", "D01" }; |
| | | var query = db.Find(a => a.stationCode.Contains("A") || a.stationCode.Contains("B") || a.stationCode.Contains("C") || a.stationCode.Contains("D01")).ToList(); |
| | | |
| | | |
| | | List<Tuple<string, int, string, int>> responseData = new List<Tuple<string, int, string, int>>(); // è·å被å ç¨çæ°æ® |
| | | string[] stationCodes2 = { "A01001", "A01002", "B", "C", "D01" }; |
| | | |
| | | var sum = query.Count(); |
| | | |
| | | foreach (string code in stationCodes2) |
| | | { |
| | | |
| | | int totalCount = query.Count(a => a.stationCode.Contains(code)); |
| | | |
| | | string percentage = ((double)totalCount / sum).ToString("P0"); |
| | | |
| | | int occupiedCount = query.Count(a => a.stationCode.Contains(code) && a.location_state == "Stroge"); |
| | | |
| | | string name = ""; |
| | | switch (code) |
| | | { |
| | | case "A01001": |
| | | name = "å°æçå æ¾åº"; |
| | | break; |
| | | case "A01002": |
| | | name = "大æçå æ¾åº"; |
| | | break; |
| | | case "B": |
| | | name = "åºåº2"; |
| | | break; |
| | | case "C": |
| | | name = "åºåº3"; |
| | | break; |
| | | case "D01": |
| | | name = "åºåº4"; |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | |
| | | responseData.Add(Tuple.Create(name, totalCount, percentage, occupiedCount)); |
| | | } |
| | | |
| | | |
| | | var data = new |
| | | { |
| | | responseData, |
| | | }; |
| | | return Ok(data); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ç¬¬ä¸æ¿å |
| | | /// <summary> |
| | | /// æï¼æ¥åºå
¥åºæ°éç»è®¡ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost("Total_quantityndex")] |
| | | public object Total_quantityndex() |
| | | { |
| | | VOLContext volContext = new VOLContext(); |
| | | Idt_agvtask_htyRepository db = new dt_agvtask_htyRepository(volContext); |
| | | var startDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); |
| | | 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 monthlyInventory = data2.Where(x => x.agv_tasktype == "TaskType_Inbound").Sum(x => x.agv_qty); |
| | | |
| | | // ç»è®¡è¿æçåºåºæ°é |
| | | var monthlyOutbound = data2.Where(x => x.agv_tasktype == "TaskType_Outbound").Sum(x => x.agv_qty); |
| | | |
| | | // ç»è®¡ä»æ¥å
¥åºæ°é |
| | | var dayInventory = data2.Where(x => x.agv_tasktype == "TaskType_Inbound").Sum(x => x.agv_qty); |
| | | |
| | | // ç»è®¡ä»æ¥åºåºæ°é |
| | | var dayOutbound = data2.Where(x => x.agv_tasktype == "TaskType_Outbound").Sum(x => x.agv_qty); |
| | | |
| | | var data = new |
| | | { |
| | | monthlyInventory, |
| | | monthlyOutbound, |
| | | dayInventory, |
| | | dayOutbound |
| | | }; |
| | | return Ok(data); |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ç¬¬äºæ¿å |
| | | /// <summary> |
| | | /// å
·ä½åºå
¥åºæ°æ® |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost("Outbound_inventory")] |
| | | public object Outbound_inventory() |
| | | { |
| | | |
| | | |
| | | VOLContext volContext = new VOLContext(); |
| | | Idt_agvtask_htyRepository db = new dt_agvtask_htyRepository(volContext); |
| | | Idt_stationinfoRepository db2 = new dt_stationinfoRepository(volContext); |
| | | var today = DateTime.Today; |
| | | var data2 = db.Find(x => x.agv_createtime >= today && x.agv_createtime < today.AddDays(1)).ToList(); |
| | | |
| | | |
| | | //仿¥å¾
æ£æµå
¥åº |
| | | var dayTaskType_Inbound = data2.Where(x => x.agv_tasktype == "TaskType_Inbound").Sum(x => x.agv_qty); |
| | | //å¾
æ£æµåºåº |
| | | var dayTaskType_Outbound = data2.Where(x => x.agv_tasktype == "TaskType_Outbound").Sum(x => x.agv_qty); |
| | | //å¤ååºå
¥åº |
| | | var dayTaskType_OutsourceInbound = data2.Where(x => x.agv_tasktype == "TaskType_OutsourceInbound").Sum(x => x.agv_qty); |
| | | //å¤ååºåºåº |
| | | var dayTaskType_OutsourceOutbound = data2.Where(x => x.agv_tasktype == "TaskType_OutsourceOutbound").Sum(x => x.agv_qty); |
| | | //å¾
æ£ç§»åºå¤å |
| | | var dayTaskType_OutsourceCarry = data2.Where(x => x.agv_tasktype == "TaskType_OutsourceCarry").Sum(x => x.agv_qty); |
| | | //ç©ºææ°é |
| | | var dayTaskType_EmptyPallet = data2.Where(x => x.agv_tasktype == "TaskType_EmptyPallet").Sum(x => x.agv_qty); |
| | | |
| | | |
| | | var data3 = db2.Find(_ => true).ToList(); |
| | | |
| | | //åºåºå¾å·æ°é,å¤å ç©ºææ°é |
| | | var Number_wheels = data3.Where(_ => true) |
| | | .GroupBy(s => new |
| | | { |
| | | stationType = string.IsNullOrEmpty(s.stationType) ? s.tray_type : s.stationType, |
| | | s.tray_type |
| | | }).Select(g => new |
| | | { |
| | | stationType = g.Key.stationType, |
| | | totalQuantity = g.Sum(s => s.quantity), |
| | | tray_type = g.Key.tray_type |
| | | }).ToList(); |
| | | |
| | | //ç»è®¡ä¸æå£åæ ¼çä¸ä¸åæ ¼ç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åå
|
| | | var dayTaskType_OutsourceInbound2 = data2.Where(x => x.agv_tasktype == "TaskType_OutsourceInbound" && x.agv_fromaddress == "X01001003" && x.agv_createtime >= today && x.agv_createtime < today.AddDays(1)).Sum(x => x.agv_qty); |
| | | //ç»è®¡ä¸æå£åæ ¼çä¸ä¸åæ ¼ç2åå
|
| | | var dayTaskType_Inbound3 = data2.Where(x => x.agv_tasktype == "TaskType_Inbound" && (x.agv_fromaddress == "X02001001" || x.agv_fromaddress == "X02001002") && x.agv_createtime >= today && x.agv_createtime < today.AddDays(1)).Sum(x => x.agv_qty); |
| | | //å¤ååºå
¥åº2åå
|
| | | var dayTaskType_OutsourceInbound3 = data2.Where(x => x.agv_tasktype == "TaskType_OutsourceInbound" && x.agv_fromaddress == "X02001003" && x.agv_createtime >= today && x.agv_createtime < today.AddDays(1)).Sum(x => x.agv_qty); |
| | | |
| | | var sumkq = dayTaskType_Inbound2 + dayTaskType_OutsourceInbound2; |
| | | var sumkq2 = dayTaskType_Inbound3 + dayTaskType_OutsourceInbound3; |
| | | |
| | | var qualified1 = ((float)dayTaskType_Inbound2 / (float)sumkq).ToString("P0"); |
| | | |
| | | var qualified2 = ((float)dayTaskType_Inbound3 / (float)sumkq2).ToString("P0"); |
| | | |
| | | |
| | | //ç»è®¡åºåºå ç¨ç¾åæ¯ |
| | | 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"); |
| | | |
| | | |
| | | var data = new |
| | | { |
| | | dayTaskType_Inbound, |
| | | dayTaskType_Outbound, |
| | | dayTaskType_OutsourceInbound, |
| | | dayTaskType_OutsourceOutbound, |
| | | dayTaskType_OutsourceCarry, |
| | | dayTaskType_EmptyPallet, |
| | | qualified1, |
| | | qualified2, |
| | | areaper, |
| | | Number_wheels, |
| | | }; |
| | | return Ok(data); |
| | | } |
| | | #endregion |
| | | |
| | | #region ç¬¬ä¸æ¿å |
| | | /// <summary> |
| | | /// å±ç¤ºåºåºæ°æ® |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [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 dataList = new List<dynamic>(); |
| | | |
| | | foreach (string area in areas) |
| | | { |
| | | var data = data2.Where(x => x.area == area) |
| | | .GroupBy(x => new { x.area, x.line, x.stationType }) |
| | | .Select(x => new |
| | | { |
| | | Area = x.Key.area, |
| | | x.Key.line, |
| | | x.Key.stationType, |
| | | 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(); |
| | | |
| | | dataList = dataList.Concat(data).ToList(); |
| | | } |
| | | return Ok(dataList); |
| | | } |
| | | #endregion |
| | | |
| | | #region ç¬¬åæ¿å |
| | | /// <summary> |
| | | /// 15æ¥å
çåºå
¥åº |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost("fifteenTotal_quantityndex")] |
| | | public object fifteenTotal_quantityndex() |
| | | { |
| | | VOLContext volContext = new VOLContext(); |
| | | Idt_agvtask_htyRepository db = new dt_agvtask_htyRepository(volContext); |
| | | var startDate = DateTime.Today.AddDays(-15); // è·åå½åæ¥æä¹å15å¤©çæ¥æ |
| | | var today = DateTime.Today; |
| | | var dateRange = Enumerable.Range(0, 15).Select(offset => today.AddDays(-offset)); // è·åæè¿15å¤©çæ¥æèå´ |
| | | |
| | | var data2 = db.Find(x => x.agv_createtime >= startDate && x.agv_createtime < 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 dayOutbound = data2.Where(x => x.agv_createtime >= date && x.agv_createtime < date.AddDays(1) && x.agv_tasktype == "TaskType_Outbound").Sum(x => x.agv_qty); |
| | | |
| | | return new |
| | | { |
| | | Date = date.ToString("MM-dd"), |
| | | Day_inventory = dayInventory, |
| | | Day_outbound = dayOutbound |
| | | }; |
| | | }); |
| | | |
| | | var data = new |
| | | { |
| | | Daily_statistics = result.ToList(), |
| | | }; |
| | | return Ok(data); |
| | | } |
| | | #endregion |
| | | |
| | | #region ç¬¬äºæ¿å |
| | | /// <summary> |
| | | /// å½åagvä»»å¡ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [HttpPost("Current_agvtask")] |
| | | public object Current_agvtask() |
| | | { |
| | | VOLContext volContext = new VOLContext(); |
| | | 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").ToList(); |
| | | |
| | | if (data.Count < 10) |
| | | { |
| | | var additionalData = dataList.Where(x => x.agv_taskstate == "éå" || x.agv_taskstate == "Queue") |
| | | .Take(10 - data.Count) |
| | | .ToList(); |
| | | data.AddRange(additionalData); |
| | | } |
| | | foreach (var item in data) |
| | | { |
| | | switch (item.agv_tasktype) |
| | | { |
| | | case "TaskType_OutsourceCarry": |
| | | item.agv_tasktype = "å¾
æ£ç§»åºå¤å"; |
| | | break; |
| | | case "TaskType_OutsourceOutbound": |
| | | item.agv_tasktype = "å¤ååºåºåº"; |
| | | break; |
| | | case "TaskType_EmptyPallet": |
| | | item.agv_tasktype = "空æä»»å¡"; |
| | | break; |
| | | case "TaskType_OutsourceInbound": |
| | | item.agv_tasktype = "å¤ååºå
¥åº"; |
| | | break; |
| | | case "TaskType_Inbound": |
| | | item.agv_tasktype = "å¾
æ£åºå
¥åº"; |
| | | break; |
| | | case "TaskType_Outbound": |
| | | item.agv_tasktype = "å¾
æ£åºåºåº"; |
| | | break; |
| | | case "TaskType_Carry": |
| | | item.agv_tasktype = "å¾
æ£åºå
ç§»åº"; |
| | | break; |
| | | default: |
| | | return "æªç¥ä»»å¡ç±»å"; |
| | | } |
| | | |
| | | switch (item.agv_taskstate) |
| | | { |
| | | case "Create": |
| | | item.agv_taskstate = "æ°å»º"; |
| | | break; |
| | | case "Complete": |
| | | item.agv_taskstate = "èµ·ç¹å·²å®æ"; |
| | | break; |
| | | case "Complete1": |
| | | item.agv_taskstate = "ç»ç¹å·²å®æ"; |
| | | break; |
| | | case "Executing1": |
| | | item.agv_taskstate = "ç»ç¹æ§è¡ä¸"; |
| | | break; |
| | | case "Executing": |
| | | item.agv_taskstate = "èµ·ç¹æ§è¡ä¸"; |
| | | break; |
| | | case "Queue": |
| | | item.agv_taskstate = "éå"; |
| | | break; |
| | | case "SendOut": |
| | | item.agv_taskstate = "å·²ä¸å"; |
| | | break; |
| | | default: |
| | | return "æªç¥ä»»å¡ç¶æ"; |
| | | } |
| | | |
| | | } |
| | | return Ok(data); |
| | | |
| | | } |
| | | #endregion |
| | | } |
| | | } |