using Infrastructure.Attribute; using Infrastructure.Extensions; using DOAN.Service.MES.order.IService; using DOAN.Repository; using DOAN.Model.MES.order.Dto; using DOAN.Model.MES.order; using Microsoft.AspNetCore.Http; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using NPOI.SS.Formula.Functions; using Aliyun.OSS; using Mapster; namespace DOAN.Service.MES.order { /// /// 采购订单Service业务层处理 /// [AppService(ServiceType = typeof(IOrderPurchaseService), ServiceLifetime = LifeTime.Transient)] public class OrderPurchaseService : BaseService, IOrderPurchaseService { /// /// 查询采购订单列表 /// /// /// public PagedInfo GetList(OrderPurchaseQueryDto parm) { var predicate = QueryExp(parm); var response = Queryable() .Where(predicate.ToExpression()) .ToPage(parm); return response; } /// /// 获取详情 /// /// /// public OrderPurchase GetInfo(string Id) { var response = Queryable() .Where(x => x.Id == Id) .First(); return response; } /// /// 添加采购订单 /// /// /// public OrderPurchase AddOrderPurchase(OrderPurchase model) { return Insertable(model).ExecuteReturnEntity(); } /// /// 修改采购订单 /// /// /// public int UpdateOrderPurchase(OrderPurchase model) { return Update(model, true); } /// /// 查询导出表达式 /// /// /// private static Expressionable QueryExp(OrderPurchaseQueryDto parm) { var predicate = Expressionable.Create() .AndIF(!string.IsNullOrEmpty(parm.OrderNoMes), it => it.OrderNoMes.Contains(parm.OrderNoMes)) .AndIF(!string.IsNullOrEmpty(parm.PurchaseOrderErp), it => it.OrderNoMes.Contains(parm.PurchaseOrderErp)) .AndIF(parm.ImportDate != null && parm.ImportDate[0] > DateTime.MinValue, it => it.ImportDate >= parm.ImportDate[0]) .AndIF(parm.ImportDate != null && parm.ImportDate[1] > DateTime.MinValue, it => it.ImportDate >= parm.ImportDate[1]) ; return predicate; } public int ImportData(IFormFile formFile, string username) { List orderPurchases = new List(); DateTime importDate = DateTime.MinValue; using (var stream = formFile.OpenReadStream()) { try { IWorkbook workbook = new XSSFWorkbook(stream); ISheet sheet = workbook.GetSheetAt(0); IRow secondRow = sheet.GetRow(1); NPOI.SS.UserModel.ICell cell = secondRow.GetCell(1); // 将单元格的数字值转换为DateTime importDate = cell.DateCellValue.Value; // 遍历每一行 for (int row = 4; row <= sheet.LastRowNum; row++) { IRow currentRow = sheet.GetRow(row); if (currentRow != null) // 确保行不为空 { OrderPurchase model = new OrderPurchase(); model.Id = SnowFlakeSingle.Instance.NextId().ToString(); model.OrderNoMes = currentRow.GetCell(0)?.ToString(); model.PurchaseOrderErp = currentRow.GetCell(1)?.ToString(); model.Poitem = currentRow.GetCell(2)?.ToString(); model.Variety = currentRow.GetCell(3)?.ToString(); string specordindicator= currentRow.GetCell(4)?.ToString(); if(!string.IsNullOrEmpty(specordindicator)&&specordindicator=="是") { model.Specordindicator = 1; } else if(!string.IsNullOrEmpty(specordindicator) && specordindicator == "否") { model.Specordindicator = 0; } else { model.Specordindicator = -1; } model.KdType = currentRow.GetCell(5)?.ToString(); model.DocumentDate = currentRow.GetCell(6).DateCellValue.Value; model.Seller = currentRow.GetCell(7)?.ToString(); model.SalesArea = currentRow.GetCell(8)?.ToString(); model.MaterialName = currentRow.GetCell(9)?.ToString(); model.MaterialCode = currentRow.GetCell(10)?.ToString(); model.DemandQuantity = (int)currentRow.GetCell(11).NumericCellValue; model.DeliveryDate= currentRow.GetCell(12).DateCellValue.Value; model.DeliveryQuantity = (int)currentRow.GetCell(13).NumericCellValue; model.StartDate = currentRow.GetCell(14).DateCellValue.Value; model.EndDate = currentRow.GetCell(15).DateCellValue.Value; string Orderindicator = currentRow.GetCell(16)?.ToString(); if (!string.IsNullOrEmpty(Orderindicator) && Orderindicator == "是") { model.Orderindicator = 1; } else if (!string.IsNullOrEmpty(Orderindicator) && Orderindicator == "否") { model.Orderindicator = 0; } else { model.Orderindicator = -1; } model.RouteCode = currentRow.GetCell(17)?.ToString(); model.Remark = currentRow.GetCell(18)?.ToString(); model.ImportDate = importDate; model.CreatedTime = importDate; model.CreatedBy = username; orderPurchases.Add(model); } } } catch (Exception ex) { throw new Exception(ex.Message); } } if(orderPurchases.Count>0) { return Context.Insertable(orderPurchases).ExecuteCommand(); } else { return 0; } } public List SelectOrderList(OrderPurchaseQueryDto orderPurchaseDto) { var predicate = QueryExp(orderPurchaseDto); var response = Queryable() .Where(predicate.ToExpression()).Adapt>(); return response; } } }