using System; using System.Collections.Generic; using System.Linq; using System.Text; using WIDESEA.Common; using WIDESEA.Core.Utilities; using WIDESEA.Entity.DomainModels; using WIDESEA.Services.Repositories; namespace WIDESEA.Services.Services { public partial class CommonFunction { public static string[] leftoutboundStation = new string[] { "70114", "70110", "70106", "70103" }; public static string[] rightoutboundStation = new string[] { "70113", "70109", "70104", "70101" }; public static WebResponseContent QueryHomeInfo(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); try { DateTime date = DateTime.Now.Date; //空货位 int emptyCount = Dt_locationinfoRepository.Instance.Find(r => r.location_state == LocationState.LocationState_Empty.ToString() && !r.location_islocked).Count(); //异常货位 int errorCount = Dt_locationinfoRepository.Instance.Find(r => r.location_state == LocationState.LocationState_Error.ToString()).Count(); //入库任务 int inBoxCount = Dt_taskinfo_htyRepository.Instance.Find(r => r.task_type == TaskType.TaskType_Box_Pallet_Inbound.ToString() && r.task_createtime > date).Count(); //测量任务 int measureCount = Dt_taskinfo_htyRepository.Instance.Find(r => r.task_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString() && r.task_createtime > date).Count(); //库位使用率 List locationCount = new List(); for (int i = 1; i < 9; i++) { int lo = Dt_locationinfoRepository.Instance.Find(r => r.location_layer == i && (r.location_state != LocationState.LocationState_Empty.ToString() || r.location_islocked)).Count(); locationCount.Add(lo); } //库存统计 List listContainer = VV_ContainerInfoRepository.Instance.Find(r => r.location_state == LocationState.LocationState_Stored.ToString()); List containerCount = new List(); if (null != listContainer && listContainer.Count > 0) { foreach (var item in listContainer.GroupBy(r => new { r.materiel_id, r.containerdtl_type })) { // item.GroupBy(r => r.containerdtl_standard); containerCount.Add(new containerCount() { materiel_id = item.Key.materiel_id, containerdtl_type = item.Key.containerdtl_type, newCount = item.Where(r => r.containerdtl_standard == "R0").Count(), oldCount = item.Where(r => r.containerdtl_standard == "R1").Count(), count = item.Count() }); } containerCount = containerCount.OrderByDescending(r => r.count).ToList(); } List leftCount = new List(); List rightCount = new List(); foreach (var item in leftoutboundStation) { leftCount.Add(Dt_taskinfo_htyRepository.Instance.Find(r => r.task_type == TaskType.TaskType_Box_Pallet_Outbound.ToString() && r.task_endstation == item && r.task_createtime >= date).Count()); } foreach (var item in rightoutboundStation) { rightCount.Add(Dt_taskinfo_htyRepository.Instance.Find(r => r.task_type == TaskType.TaskType_Box_Pallet_Outbound.ToString() && r.task_endstation == item && r.task_createtime >= date).Count()); } //List dateHty = new List(); //List outboundHty = new List(); //List inboundHty = new List(); //List measureHty = new List(); //int z = -6; //for (int i = 0; i < 7; i++) //{ // DateTime dateTime = date.AddDays(z); // dateHty.Add(dateTime.ToString("MM.dd")); // outboundHty.Add(Dt_taskinfo_htyRepository.Instance.Find(r => r.task_createtime >= dateTime && r.task_createtime < dateTime.AddDays(1) && r.task_type == TaskType.TaskType_Box_Pallet_Outbound.ToString() && r.task_endstation != "20101")?.Count()); // inboundHty.Add(Dt_taskinfo_htyRepository.Instance.Find(r => r.task_createtime >= dateTime && r.task_createtime < dateTime.AddDays(1) && r.task_type == TaskType.TaskType_Box_Pallet_Inbound.ToString())?.Count()); // measureHty.Add(Dt_taskinfo_htyRepository.Instance.Find(r => r.task_createtime >= dateTime && r.task_createtime < dateTime.AddDays(1) && r.task_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString())?.Count()); // z += 1; //} int qty = listContainer.FindAll(r => r.containerdtl_text3 == "合格").Count(); int unqty = listContainer.FindAll(r => r.containerdtl_text3 == "不合格").Count(); int wiatqty = listContainer.FindAll(r => string.IsNullOrEmpty(r.containerdtl_text3)).Count(); List containerTotol = new List() { unqty, qty, wiatqty, listContainer.Count() }; content.OK(data: new { emptyCount = emptyCount, errorCount = errorCount, inBoxCount = inBoxCount, measureCount = measureCount, locationCount = locationCount, leftCount = leftCount, rightCount = rightCount, //dateHty = dateHty, //outboundHty = outboundHty, //inboundHty = inboundHty, //measureHty = measureHty, containerCount = containerCount, containerTotol = containerTotol }); } catch (Exception ex) { content.Error(ex.Message); } return content; } } public class containerCount { public string materiel_id { get; set; } public string containerdtl_type { get; set; } public int newCount { get; set; } public int oldCount { get; set; } public int count { get; set; } } }