using DOAN.Model.MES.order; using Infrastructure.Attribute; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using DOAN.Service.MES.SmartScreen.Order.IService; using DOAN.Model.MES.order.Dto; using MathNet.Numerics.Distributions; using NPOI.SS.Formula.Functions; using DOAN.Model.MES.SmartScreen.Order.Dto; using DOAN.Model.MES.product; using DOAN.Model.MES.base_; namespace DOAN.Service.MES.SmartScreen.Order { /// /// 采购订单Service业务层处理 /// [AppService(ServiceType = typeof(IOrderSmartService), ServiceLifetime = LifeTime.Transient)] public class OrderSmartService : BaseService, IOrderSmartService { public LargeScreenOrderDto GetLargeScreenOrder() { // 当前日期 DateTime now = DateTime.Now; // 当前月份的第一天 00:00:00 DateTime firstDayOfMonth = new DateTime(now.Year, now.Month, 1); // 当前月份的最后一天 23:59:59 DateTime lastDayOfMonth = new DateTime(now.Year, now.Month, 1) .AddMonths(1) .AddSeconds(-1); var response = Queryable().ToList(); LargeScreenOrderDto largeScreenOrderDto = new LargeScreenOrderDto(); largeScreenOrderDto.OrderTotalNum = response.Count; largeScreenOrderDto.IncompleteOrderNum = response.Where(o => o.Orderindicator != 1).Count(); largeScreenOrderDto.CompletedOrderNum = response.Where(o => o.Orderindicator == 1).Count(); largeScreenOrderDto.MonthOrderTotalNum = response.Where(o => o.DeliveryDate >= firstDayOfMonth && o.DeliveryDate <= lastDayOfMonth).Count(); largeScreenOrderDto.MonthIncompleteOrderNum = response.Where(o => o.DeliveryDate >= firstDayOfMonth && o.DeliveryDate <= lastDayOfMonth && o.Orderindicator == 1).Count(); largeScreenOrderDto.MonthCompletedOrderNum = response.Where(o => o.DeliveryDate >= firstDayOfMonth && o.DeliveryDate <= lastDayOfMonth && o.Orderindicator != 1).Count(); return largeScreenOrderDto; } public List GetOrderProgress() { List orderProgressDtos = new List(); // TODO 获取全部的订单计划表 (条件记得放回去) List orderPurchaseList = Queryable().Where(o=>o.Orderindicator != 1).ToList(); List ordernomes = new List(); ordernomes=orderPurchaseList.Select(o=>o.OrderNoMes).Distinct().ToList(); //工序基础表 List baseWorkProcesses = Context.Queryable().Where(o => o.Status==1).ToList(); foreach (var orderPurchase in orderPurchaseList) { OrderProgressDto orderProgressDto = new OrderProgressDto(); orderProgressDto.productionProcesses = new List(); orderProgressDto.OrderNoMes = orderPurchase.OrderNoMes; orderProgressDto.PlanNum = orderPurchase.DemandQuantity; orderProgressDto.FinishNum = orderPurchase.DeliveryQuantity; orderProgressDto.MaterialName = orderPurchase.MaterialName; List proWorkorders = Context.Queryable().Where(o => o.CustomerOrder == orderPurchase.OrderNoMes).ToList(); List workorders = proWorkorders.Select(o=>o.Workorder).Distinct().ToList(); //获取全部的ProReportwork01 List proReportwork01s = Context.Queryable().Where(o => workorders.Contains(o.Workorder)).ToList(); foreach (var baseWorkProcesse in baseWorkProcesses) { ProductionProcesses productionProcesses = new ProductionProcesses(); productionProcesses.Id= baseWorkProcesse.Id; productionProcesses.Num = proReportwork01s.Where(o=>o.ProcessId== baseWorkProcesse.Id).Sum(o=>o.FinishNum); orderProgressDto.productionProcesses.Add(productionProcesses); } orderProgressDtos.Add(orderProgressDto); } return orderProgressDtos; } } }