| | |
| | | using SqlSugar; |
| | | using System.Dynamic; |
| | | using System.Reflection; |
| | | using WIDESEA_Common.LocationEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.DB.Models; |
| | | using WIDESEA_Core.Helper; |
| | | //using WIDESEA_Core.HostedService; |
| | | using WIDESEA_Core.Utilities; |
| | | using WIDESEA_DTO.Stock; |
| | | using WIDESEA_IStockService; |
| | | using WIDESEA_Model.Models; |
| | |
| | | { |
| | | 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<StockViewDTO> GetPageData(PageDataOptions options) |
| | | { |
| | | string where = options.ValidatePageOptions(typeof(StockViewDTO).GetProperties()); |
| | | //获取排序字段 |
| | | //Dictionary<string, OrderByType> orderbyDic = options.GetPageDataSort(typeof(StockViewDTO).GetProperties()); |
| | | //List<OrderByModel> orderByModels = new List<OrderByModel>(); |
| | | //foreach (var item in orderbyDic) |
| | | //{ |
| | | // OrderByModel orderByModel = new OrderByModel() |
| | | // { |
| | | // FieldName = item.Key, |
| | | // OrderByType = item.Value |
| | | // }; |
| | | // orderByModels.Add(orderByModel); |
| | | //} |
| | | int totalCount = 0; |
| | | |
| | | ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>(); |
| | | ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>(); |
| | | ISugarQueryable<Dt_StockInfoDetail> sugarQueryable2 = _dbBase.Queryable<Dt_StockInfoDetail>(); |
| | | |
| | | |
| | | List<StockViewDTO> list = sugarQueryable1.InnerJoin(sugarQueryable, (b, a) => a.LocationCode == b.LocationCode).WhereIF(!string.IsNullOrEmpty(where), where).Select((b, a) => new StockViewDTO |
| | | { |
| | | LocationCode = b.LocationCode, |
| | | Column = a.Column, |
| | | CreateDate = b.CreateDate, |
| | | Creater = b.Creater, |
| | | Depth = a.Depth, |
| | | EnalbeStatus = a.EnableStatus, |
| | | 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); |
| | | |
| | | var list = _dbBase.Queryable<Dt_StockInfo>() |
| | | .InnerJoin<Dt_LocationInfo>((b, a) => a.LocationCode == b.LocationCode) |
| | | .WhereIF(!string.IsNullOrEmpty(where), where) |
| | | .Select((b, a) => new StockViewDTO |
| | | { |
| | | LocationCode = b.LocationCode, |
| | | Column = a.Column, |
| | | CreateDate = b.CreateDate, |
| | | Creater = b.Creater, |
| | | Depth = a.Depth, |
| | | EnalbeStatus = a.EnableStatus, |
| | | 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<StockViewDTO>(totalCount, list); |
| | | |
| | | } |
| | | |
| | | public virtual object GetDetailPage(PageDataOptions pageData) |
| | | { |
| | | Type t = typeof(StockViewDTO); |
| | | if (pageData.Value == null) |
| | | return new PageGridData<object>(total: 0, null); |
| | | |
| | | if (pageData.Value == null) return new PageGridData<object>(total: 0, null); |
| | | string keyName = t.GetKeyName(); |
| | | ////生成查询条件 |
| | | //Expression<Func<TEntity, bool>> whereExpression = keyName.CreateExpression<TEntity>(pageData.Value, LinqExpressionType.Equal); |
| | | var propertyInfo = typeof(StockViewDTO).GetProperties() |
| | | .FirstOrDefault(x => x.GetCustomAttribute<Navigate>() != null); |
| | | |
| | | if (propertyInfo == null) |
| | | return new PageGridData<object>(total: 0, null); |
| | | |
| | | var detailType = propertyInfo.PropertyType.GetGenericArguments()[0]; |
| | | var navigate = propertyInfo.GetCustomAttribute<Navigate>(); |
| | | |
| | | if (navigate == null) |
| | | return new PageGridData<object>(total: 0, null); |
| | | |
| | | int totalCount = 0; |
| | | PropertyInfo? propertyInfo = t.GetProperties().FirstOrDefault(x => x.GetCustomAttribute<Navigate>() != null); |
| | | if (propertyInfo != null) |
| | | { |
| | | Type detailType = propertyInfo.PropertyType.GetGenericArguments()[0]; |
| | | Navigate? navigate = propertyInfo.GetCustomAttribute<Navigate>(); |
| | | if (navigate != null) |
| | | { |
| | | List<ExpandoObject> list = _dbBase.Queryable(detailType.Name, "detail").Where(navigate.GetName(), "=", pageData.Value).ToPageList(pageData.Page, pageData.Rows, ref totalCount); |
| | | return new PageGridData<ExpandoObject>(totalCount, list); |
| | | } |
| | | } |
| | | return new PageGridData<object>(total: 0, null); |
| | | var list = _dbBase.Queryable(detailType.Name, "detail") |
| | | .Where(navigate.GetName(), "=", pageData.Value) |
| | | .ToPageList(pageData.Page, pageData.Rows, ref totalCount); |
| | | |
| | | return new PageGridData<ExpandoObject>(totalCount, list); |
| | | } |
| | | } |
| | | } |