using AngleSharp.Dom; using Mapster; using Masuit.Tools; using SqlSugar; using System.Collections.Generic; using System.Drawing.Printing; using System.Linq.Expressions; using WIDESEA_Common; using WIDESEA_Core; using WIDESEA_StorageBasicRepository; using WIDESEAWCS_BasicInfoRepository; using WIDESEA_IStoragIntegrationServices; using WIDESEA.Common; using WIDESEA_Common.ZY; using Autofac.Core; using NetTaste; using AngleSharp.Io; using WIDESEA_IRepository; using WIDESEA_Core.Const; using WIDESEA_IServices; namespace WIDESEA_StorageBasicService; public class Dt_WheelsStockService : ServiceBase, IDt_WheelsStockService { private readonly IDt_WheelsStock_htyRepository _WheelsStock_HtyRepository; private readonly IDt_SelectionStandardsRepository _SelectionStandardsRepository; private readonly IToZYService _toZYService; private readonly ISys_ConfigService _sys_ConfigService; public Dt_WheelsStockService(IDt_WheelsStockRepository BaseDal, IDt_WheelsStock_htyRepository WheelsStock_HtyRepository, IDt_SelectionStandardsRepository selectionStandardsRepository, IToZYService toZYService, ISys_ConfigService ISys_ConfigService) : base(BaseDal) { _SelectionStandardsRepository = selectionStandardsRepository; _WheelsStock_HtyRepository = WheelsStock_HtyRepository; _toZYService = toZYService; _sys_ConfigService = ISys_ConfigService; } /// /// 批量删除 /// /// /// public override WebResponseContent DeleteData(object[] keys) { try { List stockInfos = new List(); List locationInfos = new List(); foreach (var item in keys) { var stock = BaseDal.QueryFirstNavAsync(x => x.Wheels_ID == item.ObjToInt()).Result; var stockHty = stock.Adapt(); stockHty.FinishWheelDate = DateTime.Now; stockHty.OperateType = (int)OperateTypeEnum.人工删除; _WheelsStock_HtyRepository.AddData(stockHty); var location = SqlSugarHelper.DbWMS.Queryable().FirstAsync(x => x.LocationCode == stock.Wheels_Location).Result; location.LocationStatus = (int)LocationEnum.Free; locationInfos.Add(location); } var locationd = SqlSugarHelper.DbWMS.Updateable(locationInfos).ExecuteCommandHasChange(); return base.DeleteData(keys); } catch (Exception ex) { return WebResponseContent.Instance.Error(ex.Message); } } public Dt_WheelsStock GetSelectionWheelsStock(List WheelsList, Dt_SelectionStandards selectionStandards, Dt_CZInfo_mes CZInfo_Mes, string wheelsPosition, string newOrOld) { //过盈量上限 decimal selectionUpperValue = selectionStandards.upperValue; //过盈量下限 decimal selectionLowerValue = selectionStandards.lowerValue; string level = string.Empty; if ("left".Equals(wheelsPosition)) //匹配左轮座轮子 { decimal mesStand = decimal.Parse(CZInfo_Mes.ZLZZJ); level = LevelChangeHelper.LevelChangeType(CZInfo_Mes.ZLZDJ); WheelsList = WheelsList.Where(x => mesStand - (decimal.Parse(x.Wheels_gkcc)) >= selectionLowerValue && mesStand - (decimal.Parse(x.Wheels_gkcc)) <= selectionUpperValue && x.Wheels_level == level && x.Wheels_NewOrOld == newOrOld).ToList(); } else //否则匹配右轮座轮子 { decimal mesStand = decimal.Parse(CZInfo_Mes.YLZZJ); level = LevelChangeHelper.LevelChangeType(CZInfo_Mes.YLZDJ); WheelsList = WheelsList.Where(x => mesStand - (decimal.Parse(x.Wheels_gkcc)) >= selectionLowerValue && mesStand - (decimal.Parse(x.Wheels_gkcc)) <= selectionUpperValue && x.Wheels_level == level && x.Wheels_NewOrOld == newOrOld).ToList(); } if (selectionStandards.isCantainGK) { //截面过盈量上限 decimal selectionUpperValue_gk = selectionStandards.upperValue_gk; //截面过盈量下限 decimal selectionLowerValue_gk = selectionStandards.lowerValue_gk; if ("left".Equals(wheelsPosition)) { decimal ZLZA = decimal.Parse(CZInfo_Mes.ZLZA); decimal ZLZB = decimal.Parse(CZInfo_Mes.ZLZB); decimal ZLZC = decimal.Parse(CZInfo_Mes.ZLZC); WheelsList = WheelsList.Where(x => ZLZA - (decimal.Parse(x.Wheels_gkzja)) >= selectionLowerValue_gk && ZLZA - (decimal.Parse(x.Wheels_gkzja)) <= selectionUpperValue_gk && ZLZB - (decimal.Parse(x.Wheels_gkzjb)) >= selectionLowerValue_gk && ZLZB - (decimal.Parse(x.Wheels_gkzjb)) <= selectionUpperValue_gk && ZLZC - (decimal.Parse(x.Wheels_gkzjc)) >= selectionLowerValue_gk && ZLZC - (decimal.Parse(x.Wheels_gkzjc)) <= selectionUpperValue_gk ).ToList(); } else { decimal YLZA = decimal.Parse(CZInfo_Mes.YLZA); decimal YLZB = decimal.Parse(CZInfo_Mes.YLZB); decimal YLZC = decimal.Parse(CZInfo_Mes.YLZC); WheelsList = WheelsList.Where(x => YLZA - (decimal.Parse(x.Wheels_gkzja)) >= selectionLowerValue_gk && YLZA - (decimal.Parse(x.Wheels_gkzja)) <= selectionUpperValue_gk && YLZB - (decimal.Parse(x.Wheels_gkzjb)) >= selectionLowerValue_gk && YLZB - (decimal.Parse(x.Wheels_gkzjb)) <= selectionUpperValue_gk && YLZC - (decimal.Parse(x.Wheels_gkzjc)) >= selectionLowerValue_gk && YLZC - (decimal.Parse(x.Wheels_gkzjc)) <= selectionUpperValue_gk ).ToList(); } } return WheelsList.OrderBy(x => x.CreateDate).FirstOrDefault(); } public Dt_WheelsStock_Old GetSelectionWheels(List wheelsStocks, Dt_SelectionStandards selectionStandards, Dt_CZInfo_mes CZInfo_Mes, string wheelsPosition, string newOrOld, string wheelsProps) { try { //过盈量上限 decimal selectionUpperValue = selectionStandards.upperValue; //过盈量下限 decimal selectionLowerValue = selectionStandards.lowerValue; decimal mesStand = 0; string level = string.Empty; if ("left".Equals(wheelsPosition)) //匹配左轮座轮子 { mesStand = decimal.Parse(CZInfo_Mes.ZLZZJ); level = LevelChangeHelper.JkChangeType(CZInfo_Mes.YLZDJ); wheelsStocks = wheelsStocks.Where(x => x.venderno == level && x.repair_item == newOrOld).ToList(); } else //否则匹配右轮座轮子 { mesStand = decimal.Parse(CZInfo_Mes.YLZZJ); level = LevelChangeHelper.JkChangeType(CZInfo_Mes.YLZDJ); wheelsStocks = wheelsStocks.Where(x => x.venderno == level && x.repair_item == newOrOld).ToList(); } foreach (var item in wheelsStocks) { string Wheels_gkcc = ""; string Wheels_gkzja = ""; string Wheels_gkzjb = ""; string Wheels_gkzjc = ""; string clsx = ""; SaveModel saveModel = new SaveModel(); saveModel.MainData = new Dictionary { { "cltm", item.wheel_code } }; WebResponseContent webResponse = _toZYService.ZY_GetCLInfo(saveModel); if (webResponse.Status) { CLInfo_ZY data = (CLInfo_ZY)webResponse.Data; if(wheelsProps== data.CLSX) { wheelsStocks.Remove(item); continue; } Wheels_gkcc = data.gkcc; // 毂孔a界面均值 Wheels_gkzja = data.GKZJA; //毂孔b界面均值 Wheels_gkzjb = data.GKZJB; //毂孔c界面均值 Wheels_gkzjc = data.GKZJC; } if (Wheels_gkcc != "" && Wheels_gkzja != "" && Wheels_gkzjb != "" && Wheels_gkzjc != "") { //查出来在范围之外的进行删除 if (mesStand - (decimal.Parse(Wheels_gkcc)) < selectionLowerValue && mesStand - (decimal.Parse(Wheels_gkcc)) > selectionUpperValue) { wheelsStocks.Remove(item); continue; } if (selectionStandards.isCantainGK) { //截面过盈量上限 decimal selectionUpperValue_gk = selectionStandards.upperValue_gk; //截面过盈量下限 decimal selectionLowerValue_gk = selectionStandards.lowerValue_gk; if ("left".Equals(wheelsPosition)) { decimal ZLZA = decimal.Parse(CZInfo_Mes.ZLZA); decimal ZLZB = decimal.Parse(CZInfo_Mes.ZLZB); decimal ZLZC = decimal.Parse(CZInfo_Mes.ZLZC); //判断取反,进行删除 if (ZLZA - (decimal.Parse(Wheels_gkzja)) < selectionLowerValue_gk && ZLZA - (decimal.Parse(Wheels_gkzja)) > selectionUpperValue_gk && ZLZB - (decimal.Parse(Wheels_gkzjb)) < selectionLowerValue_gk && ZLZB - (decimal.Parse(Wheels_gkzjb)) > selectionUpperValue_gk && ZLZC - (decimal.Parse(Wheels_gkzjc)) < selectionLowerValue_gk && ZLZC - (decimal.Parse(Wheels_gkzjc)) > selectionUpperValue_gk) { wheelsStocks.Remove(item); continue; } } else { decimal YLZA = decimal.Parse(CZInfo_Mes.YLZA); decimal YLZB = decimal.Parse(CZInfo_Mes.YLZB); decimal YLZC = decimal.Parse(CZInfo_Mes.YLZC); if (YLZA - (decimal.Parse(Wheels_gkzja)) >= selectionLowerValue_gk && YLZA - (decimal.Parse(Wheels_gkzja)) <= selectionUpperValue_gk && YLZB - (decimal.Parse(Wheels_gkzjb)) >= selectionLowerValue_gk && YLZB - (decimal.Parse(Wheels_gkzjb)) <= selectionUpperValue_gk && YLZC - (decimal.Parse(Wheels_gkzjc)) >= selectionLowerValue_gk && YLZC - (decimal.Parse(Wheels_gkzjc)) <= selectionUpperValue_gk) { wheelsStocks.Remove(item); continue; } } } } } return wheelsStocks.OrderBy(x => x.dt_ins).FirstOrDefault(); } catch (Exception ex) { throw; } } public WebResponseContent InventoryStatistics() { WebResponseContent content = new WebResponseContent(); List stockInfos = BaseDal.QueryData(); //获取车型 List Wheels_CarTypeList = stockInfos.Select(x => x.Wheels_CarType).Distinct().ToList(); List groupedData = new List(); foreach (var CarType in Wheels_CarTypeList) { var kd = stockInfos.Where(x => x.Wheels_CarType == CarType).GroupBy(w => w.Wheels_ldxh) .Select(typeGroup => new WheelGroupInfo { Wheels_CarType = CarType, //车型 Wheels_ldxh = typeGroup.Key, Count = typeGroup.Count(), }).ToList(); groupedData.AddRange(kd); } content.Data = groupedData; return content; } public class WheelGroupInfo { public string Wheels_CarType { get; set; } public string Wheels_ldxh { get; set; } public int Count { get; set; } } public WebResponseContent UpdateInventoryStatue() { WebResponseContent content = new WebResponseContent(); try { List groupedData = new List(); var hourpara = _sys_ConfigService.GetByConfigKey(CateGoryConst.CONFIG_SYS_Parameters, SysConfigConst.InventoryMarket); int hour = hourpara.ConfigValue.ObjToInt(); //获取设置的预期时间 List WheelsList = BaseDal.QueryData(); //获取全部车轮信息 foreach (var item in WheelsList) { TimeSpan timeDifference = DateTime.Today - item.CreateDate.Date; item.Wheels_DateDet = (int)timeDifference.TotalDays; if (item.Wheels_DateDet >= hour) { item.Wheels_Statue = 1; } else { item.Wheels_Statue = 0; } groupedData.Add(item); } BaseDal.UpdateData(groupedData); return content.OK(); } catch (Exception ex) { return content.Error(ex.Message); throw; } } }