using Microsoft.AspNetCore.Http; using SqlSugar; using System; using System.Collections.Generic; using System.Drawing.Printing; using System.Dynamic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseRepository; using WIDESEAWCS_Core.BaseServices; using WIDESEAWCS_Core.Enums; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_Core.Utilities; using WIDESEAWCS_DTO.Stock; using WIDESEAWCS_IStockRepository; using WIDESEAWCS_IStockService; using WIDESEAWCS_Model.Models; namespace WIDESEAWCS_StockService { public partial class StockViewService : IStockViewService { private readonly IUnitOfWorkManage _unitOfWorkManage; private readonly SqlSugarClient _dbBase; public StockViewService(IUnitOfWorkManage unitOfWorkManage) { _unitOfWorkManage = unitOfWorkManage; _dbBase = unitOfWorkManage.GetDbClient(); } public virtual PageGridData GetPageData(PageDataOptions options) { //string where = ValidatePageOptions(typeof(StockViewDTO).GetProperties()); ////获取排序字段 ////Dictionary orderbyDic = options.GetPageDataSort(typeof(StockViewDTO).GetProperties()); ////List orderByModels = new List(); ////foreach (var item in orderbyDic) ////{ //// OrderByModel orderByModel = new OrderByModel() //// { //// FieldName = item.Key, //// OrderByType = item.Value //// }; //// orderByModels.Add(orderByModel); ////} //int totalCount = 0; //ISugarQueryable sugarQueryable1 = _dbBase.Queryable(); //ISugarQueryable sugarQueryable = _dbBase.Queryable(); //List list = sugarQueryable1.InnerJoin(sugarQueryable, (b, a) => a.LocationCode == b.LocationCode).WhereIF(!string.IsNullOrEmpty(where), where).Select((b, a) => new StockViewDTO //{ // AreaId = a.AreaId, // LocationCode = b.LocationCode, // Column = a.Column, // CreateDate = b.CreateDate, // Creater = b.Creater, // Depth = a.Depth, // EnalbeStatus = a.EnableStatus, // IsFull = b.IsFull, // Layer = a.Layer, // LocationName = a.LocationName, // LocationStatus = a.LocationStatus, // LocationType = a.LocationType, // Modifier = b.Modifier, // ModifyDate = b.ModifyDate, // PalletCode = b.PalletCode, // StockRemark = b.Remark, // RoadwayNo = a.RoadwayNo, // Row = a.Row, // StockId = b.Id, // StockStatus = b.StockStatus, // Details = b.Details, //}).ToPageList(options.Page, options.Rows, ref totalCount); //return new PageGridData(totalCount, list); return new PageGridData(); } public virtual object GetDetailPage(PageDataOptions pageData) { Type t = typeof(StockViewDTO); if (pageData.Value == null) return new PageGridData(total: 0, null); string keyName = t.GetKeyName(); ////生成查询条件 //Expression> whereExpression = keyName.CreateExpression(pageData.Value, LinqExpressionType.Equal); int totalCount = 0; PropertyInfo? propertyInfo = t.GetProperties().FirstOrDefault(x => x.GetCustomAttribute() != null); if (propertyInfo != null) { Type detailType = propertyInfo.PropertyType.GetGenericArguments()[0]; Navigate? navigate = propertyInfo.GetCustomAttribute(); if (navigate != null) { List list = _dbBase.Queryable(detailType.Name, "detail").Where(navigate.GetName(), "=", pageData.Value).ToPageList(pageData.Page, pageData.Rows, ref totalCount); return new PageGridData(totalCount, list); } } return new PageGridData(total: 0, null); } } }