using Admin.Core.Common; using Admin.Core.IRepository; using Admin.Core.IService; using Admin.Core.Model; using Admin.Core.Model.Model_New; using Admin.Core.Model.ViewModels; using Castle.Core.Internal; using Dm.filter.log; using Microsoft.Extensions.Hosting; using NPOI.POIFS.FileSystem; using NPOI.POIFS.Properties; using NPOI.SS.Formula.Functions; using NPOI.Util; using StackExchange.Redis; using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Linq; using System.Reflection.Emit; using System.Threading.Tasks; namespace Admin.Core.Service { public class BaseOrderInfoServices : BaseServices, IBaseOrderInfoServices { private readonly IBaseRepository _dal; private readonly IPrintOrderInfoRepository _printOrderInfoRepository; private readonly IBaseOrderInfoRepository _baseOrderInfoRepository; private readonly IBaseBomInfoRepository _baseBomInfoRepository; private readonly IPrintBarCodeServices _printBarCodeServices; static List tmpList = new List(); public BaseOrderInfoServices(IBaseRepository dal, IBaseOrderInfoRepository baseOrderInfoRepository, IPrintOrderInfoRepository printOrderInfoRepository, IBaseBomInfoRepository baseBomInfoRepository, IPrintBarCodeServices printBarCodeServices) { this._dal = dal; base.BaseDal = dal; _baseBomInfoRepository = baseBomInfoRepository; _baseOrderInfoRepository = baseOrderInfoRepository; _printOrderInfoRepository = printOrderInfoRepository; _printBarCodeServices = printBarCodeServices; } public async Task> GetOrderInfoData() { return await _baseOrderInfoRepository.GetOrderInfoData(); } #region 获取打印订单信息 /// /// 获取打印订单信息 /// /// public async Task> QueryPrintInfo() { List list = new List(); List baseBomList = await _baseBomInfoRepository.QueryAsync(); List printBarCodeList = await _printBarCodeServices.QueryAsync(); List orderList = await this.GetOrderInfoData(); List printOrderInfoList = await _printOrderInfoRepository.QueryAsync(); if (orderList == null) return null; orderList.ForEach(bb => { //GetParentID(baseBomList, bb.MaterialCode); //tmpList = tmpList.Where(d => d.MaterialType.Equals("500") || d.MaterialType.Equals("200")).ToList(); //if (tmpList.Count > 0) //{ // foreach (var bomInfo in tmpList) // { var objBox = printBarCodeList.Where(d => d.PrintBarType==1&&d.OrderCode==bb.OrderCode); var objLiner = printBarCodeList.Where(d => d.PrintBarType == 2&& d.OrderCode == bb.OrderCode); PrintPlanInfoView view = new PrintPlanInfoView(); view.OrderCode = bb.OrderCode; view.ProductCode = bb.MaterialCode; view.ProductName = bb.MaterialName; view.PlanAmount = bb.OrderAmount; //view.MaterialCode = bomInfo.MaterialCode; //view.MaterialName = bomInfo.MaterialName; //view.LinerAmount = bomInfo.StandardAmount; if (objLiner.Count() > 0) { view.LinerAmount = objLiner.Count(); } else { view.LinerAmount = 0; } if (objBox.Count() > 0) { view.BoxAmount = objBox.Count(); } else { view.BoxAmount = 0; } //view.StandardAmount = bomInfo.StandardAmount; view.PrintName = bb.PrintName; view.CreateTime = bb.CreatedTime; list.Add(view); // } // tmpList.Clear(); //} }); list.ForEach(b => { if (printOrderInfoList != null) { PrintOrderInfo info = printOrderInfoList.FirstOrDefault(d => d.OrderCode == b.OrderCode); if (info != null) { b.LinerAmount = info.LinerAmount; b.BoxAmount = info.BoxAmount; } } else { b.LinerAmount = 0; b.BoxAmount = 0; } }); return list; } #endregion #region 递归 public static void GetParentID(List treeNodes, string materialCode) { if (string.IsNullOrEmpty(materialCode)) { return; } var query = from c in treeNodes where c.ParentId == materialCode select c; foreach (var item in query) { GetParentID(treeNodes, item.MaterialCode); tmpList.Add(item); } } #endregion } }