dengjunjie
2025-04-03 1e12c140c041c0cb52306a0db9ff0ba18354d0d8
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StockService/Base/StockViewService.cs
@@ -1,4 +1,5 @@

using MailKit.Search;
using Microsoft.AspNetCore.Http;
using SqlSugar;
using System;
@@ -9,6 +10,7 @@
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
@@ -16,6 +18,7 @@
using WIDESEA_Core.Helper;
using WIDESEA_Core.Utilities;
using WIDESEA_DTO.Stock;
using WIDESEA_IBasicRepository;
using WIDESEA_IStockRepository;
using WIDESEA_IStockService;
using WIDESEA_Model.Models;
@@ -25,12 +28,14 @@
    public partial class StockViewService : IStockViewService
    {
        private readonly IUnitOfWorkManage _unitOfWorkManage;
        private readonly IStockRepository _stockRepository;
        private readonly SqlSugarClient _dbBase;
        public StockViewService(IUnitOfWorkManage unitOfWorkManage)
        public StockViewService(IUnitOfWorkManage unitOfWorkManage, IStockRepository stockRepository)
        {
            _unitOfWorkManage = unitOfWorkManage;
            _dbBase = unitOfWorkManage.GetDbClient();
            _stockRepository = stockRepository;
        }
        public virtual PageGridData<StockViewDTO> GetPageData(PageDataOptions options)
@@ -163,6 +168,81 @@
        }
        public virtual WebResponseContent GetLocationStockView(int Layer)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                List<LocationStockView> locationStockViews = new List<LocationStockView>();
                ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>();
                List<Dt_LocationInfo> dt_LocationInfos = sugarQueryable.ToList();
                ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>().Where(x => dt_LocationInfos.Select(x => x.LocationCode).ToList().Contains(x.LocationCode)).Includes(x => x.Details);
                List<Dt_StockInfo> StockInfos = sugarQueryable1.OrderBy(x => x.InDate).ToList();
                foreach (var dt_LocationInfo in dt_LocationInfos)
                {
                    LocationStockView locationStockView = new LocationStockView()
                    {
                        AreaId = dt_LocationInfo.AreaId,
                        Column = dt_LocationInfo.Column,
                        Depth = dt_LocationInfo.Depth,
                        EnalbeStatus = dt_LocationInfo.EnableStatus,
                        Layer = dt_LocationInfo.Layer,
                        LocationCode = dt_LocationInfo.LocationCode,
                        LocationName = dt_LocationInfo.LocationName,
                        LocationStatus = dt_LocationInfo.LocationStatus,
                        LocationType = dt_LocationInfo.LocationType,
                        RoadwayNo = dt_LocationInfo.RoadwayNo,
                        Row = dt_LocationInfo.Row
                    };
                    List<Dt_StockInfo> dt_StockInfos = StockInfos.Where(x => x.LocationCode == dt_LocationInfo.LocationCode).ToList();
                    if (dt_StockInfos.Count > 0 && dt_StockInfos != null)
                    {
                        locationStockView.BatchNo = dt_StockInfos.First().Details.First().BatchNo;
                        locationStockView.InDate = dt_StockInfos.First().InDate;
                        locationStockView.MaterielCode = dt_StockInfos.First().Details.First().MaterielCode;
                        locationStockView.MaterielName = dt_StockInfos.First().Details.First().MaterielName;
                        locationStockView.OrderNo = dt_StockInfos.First().Details.First().OrderNo;
                        locationStockView.PalletCode = string.Join(",", dt_StockInfos.Select(x => x.PalletCode).ToList());
                        locationStockView.Quantity = dt_StockInfos.Count;
                    }
                    locationStockViews.Add(locationStockView);
                }
                if (locationStockViews.Count > 0)
                {
                    #region MyRegion
                    List<LocationLayer> layers = new List<LocationLayer>();
                    foreach (var layer in locationStockViews.GroupBy(x => x.Layer))
                    {
                        var rows = new List<LocationRow>();
                        var data_rows = layer.GroupBy(t => t.Row);
                        foreach (var data_row in data_rows)
                        {
                            rows.Add(new LocationRow()
                            {
                                index = data_row.Key,
                                cols = data_row.OrderBy(x => x.Column).ToList()
                            });
                        }
                        //rows=rows.OrderBy(x=>x.index).ToList();
                        layers.Add(new LocationLayer()
                        {
                            index = layer.Key,
                            rows = rows
                        });
                    }
                    #endregion
                    layers = layers.OrderBy(x => x.index).ToList();
                    content.OK(data: layers);
                }
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
        public virtual object GetDetailPage(PageDataOptions pageData)
        {
            Type t = typeof(StockViewDTO);