1
huanghongfeng
2025-06-25 b1c2dd1869a51b8f0e4acb9ddeb148f796db147f
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/Dt_WheelsStockService.cs
@@ -9,6 +9,15 @@
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;
@@ -16,10 +25,14 @@
{
    private readonly IDt_WheelsStock_htyRepository _WheelsStock_HtyRepository;
    private readonly IDt_SelectionStandardsRepository _SelectionStandardsRepository;
    public Dt_WheelsStockService(IDt_WheelsStockRepository BaseDal, IDt_WheelsStock_htyRepository WheelsStock_HtyRepository, IDt_SelectionStandardsRepository selectionStandardsRepository) : base(BaseDal)
    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;
    }
    /// <summary>
@@ -63,17 +76,16 @@
        //过盈量下限
        decimal selectionLowerValue = selectionStandards.lowerValue;
        decimal mesStand = 0;
        string level = string.Empty;
        if ("left".Equals(wheelsPosition))  //匹配左轮座轮子
        {
            mesStand = decimal.Parse(CZInfo_Mes.ZLZZJ);
            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    //否则匹配右轮座轮子
        {
            mesStand = decimal.Parse(CZInfo_Mes.YLZZJ);
            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();
        }
@@ -120,4 +132,204 @@
        }
        return WheelsList.OrderBy(x => x.CreateDate).FirstOrDefault();
    }
    public Dt_WheelsStock_Old GetSelectionWheels(List<Dt_WheelsStock_Old> 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<string, object>
                {
                    { "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<Dt_WheelsStock> stockInfos = BaseDal.QueryData();
        //获取车型
        List<string> Wheels_CarTypeList = stockInfos.Select(x => x.Wheels_CarType).Distinct().ToList();
        List<WheelGroupInfo> groupedData = new List<WheelGroupInfo>();
        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<Dt_WheelsStock> groupedData = new List<Dt_WheelsStock>();
            var hourpara = _sys_ConfigService.GetByConfigKey(CateGoryConst.CONFIG_SYS_Parameters, SysConfigConst.InventoryMarket);
            int hour = hourpara.ConfigValue.ObjToInt(); //获取设置的预期时间
            List<Dt_WheelsStock> 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;
        }
    }
}