90 lines
3.8 KiB
C#
90 lines
3.8 KiB
C#
|
|
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
|
|
{
|
|
/// <summary>
|
|
/// 采购订单Service业务层处理
|
|
/// </summary>
|
|
[AppService(ServiceType = typeof(IOrderSmartService), ServiceLifetime = LifeTime.Transient)]
|
|
|
|
public class OrderSmartService : BaseService<OrderPurchase>, 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<OrderProgressDto> GetOrderProgress()
|
|
{
|
|
|
|
List<OrderProgressDto> orderProgressDtos = new List<OrderProgressDto>();
|
|
|
|
// TODO 获取全部的订单计划表 (条件记得放回去)
|
|
List<OrderPurchase> orderPurchaseList = Queryable().Where(o=>o.Orderindicator != 1).ToList();
|
|
List<string> ordernomes = new List<string>();
|
|
ordernomes=orderPurchaseList.Select(o=>o.OrderNoMes).Distinct().ToList();
|
|
|
|
|
|
//工序基础表
|
|
List<BaseWorkProcesses> baseWorkProcesses = Context.Queryable<BaseWorkProcesses>().Where(o => o.Status==1).ToList();
|
|
|
|
foreach (var orderPurchase in orderPurchaseList)
|
|
{
|
|
OrderProgressDto orderProgressDto = new OrderProgressDto();
|
|
orderProgressDto.productionProcesses = new List<ProductionProcesses>();
|
|
orderProgressDto.OrderNoMes = orderPurchase.OrderNoMes;
|
|
orderProgressDto.PlanNum = orderPurchase.DemandQuantity;
|
|
orderProgressDto.FinishNum = orderPurchase.DeliveryQuantity;
|
|
orderProgressDto.MaterialName = orderPurchase.MaterialName;
|
|
|
|
List<ProWorkorder> proWorkorders = Context.Queryable<ProWorkorder>().Where(o => o.CustomerOrder == orderPurchase.OrderNoMes).ToList();
|
|
List<string> workorders = proWorkorders.Select(o=>o.Workorder).Distinct().ToList();
|
|
|
|
//获取全部的ProReportwork01
|
|
List<ProReportwork01> proReportwork01s = Context.Queryable<ProReportwork01>().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;
|
|
}
|
|
}
|
|
}
|