| | |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.CodeConfigEnum; |
| | | using WIDESEA_Core.DB; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_Core.Seed; |
| | | using WIDESEA_IAllocateService; |
| | |
| | | |
| | | public override PageGridData<Dt_AllocateOrder> GetPageData(PageDataOptions options) |
| | | { |
| | | string wheres = ValidatePageOptions(options); |
| | | |
| | | string pattern = @"orderNo like '[^']+'\s*and\s*"; |
| | | wheres = Regex.Replace(wheres, pattern, "", RegexOptions.IgnoreCase); |
| | | //è·åæåºå段 |
| | | Dictionary<string, SqlSugar.OrderByType> orderbyDic = GetPageDataSort(options, TProperties); |
| | | List<OrderByModel> orderByModels = new List<OrderByModel>(); |
| | | foreach (var item in orderbyDic) |
| | |
| | | }; |
| | | orderByModels.Add(orderByModel); |
| | | } |
| | | ISugarQueryable<Dt_AllocateOrder> sugarQueryable1 = BaseDal.Db.Queryable<Dt_AllocateOrder>(); |
| | | |
| | | |
| | | ISugarQueryable<Dt_AllocateOrder> sugarQueryable1 = BaseDal.Db.Queryable<Dt_AllocateOrder>() |
| | | .Includes(x => x.Details); |
| | | |
| | | int totalCount = 0; |
| | | List<SearchParameters> searchParametersList = new List<SearchParameters>(); |
| | | |
| | | string filterOrderStatus = string.Empty; |
| | | string filterreturnToMESStatus = string.Empty; |
| | | |
| | | |
| | | if (!string.IsNullOrEmpty(options.Wheres)) |
| | | { |
| | | try |
| | |
| | | searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>(); |
| | | if (searchParametersList.Count > 0) |
| | | { |
| | | var orderNoParams = searchParametersList |
| | | .Where(x => x.Name.Equals("orderNo", StringComparison.OrdinalIgnoreCase) |
| | | && !string.IsNullOrEmpty(x.Value?.ToString())) |
| | | .ToList(); |
| | | |
| | | SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_AllocateOrder.OrderNo).FirstLetterToLower()); |
| | | if (searchParameters != null) |
| | | if (orderNoParams.Any()) |
| | | { |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.OrderNo.Contains(searchParameters.Value.ToString()) |
| | | || x.UpperOrderNo.Contains(searchParameters.Value.ToString()) || |
| | | x.Details.Any(d => d.Barcode == searchParameters.Value.ToString()) || |
| | | x.Details.Any(d => d.BoxSN == searchParameters.Value.ToString())); |
| | | string searchValue = orderNoParams.First().Value.ToString().Trim(); |
| | | sugarQueryable1 = sugarQueryable1.Where(x => |
| | | x.OrderNo.Contains(searchValue) || |
| | | x.UpperOrderNo.Contains(searchValue) || |
| | | x.Details.Any(d => d.Barcode.Contains(searchValue))|| |
| | | x.Details.Any(d=>d.BoxSN.Contains(searchValue))); |
| | | } |
| | | searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_AllocateOrder.OrderType).FirstLetterToLower()); |
| | | if (searchParameters != null) |
| | | |
| | | var orderTypeParams = searchParametersList |
| | | .Where(x => x.Name.Equals("orderType", StringComparison.OrdinalIgnoreCase) |
| | | && !string.IsNullOrEmpty(x.Value?.ToString())) |
| | | .DistinctBy(x => x.Value) |
| | | .ToList(); |
| | | |
| | | if (orderTypeParams.Any()) |
| | | { |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.OrderType.Equals(searchParameters.Value.ToString())); |
| | | string orderTypeValue = orderTypeParams.First().Value.ToString().Trim(); |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.OrderType == orderTypeValue.ObjToInt()); |
| | | } |
| | | //var dataList = sugarQueryable1.ToPageList(options.Page, options.Rows, ref totalCount); |
| | | //return new PageGridData<Dt_InboundOrder>(totalCount, dataList); |
| | | |
| | | var detailMaterielCode = searchParametersList.FirstOrDefault(x => x.Name == "materielCode"); |
| | | if (detailMaterielCode != null && !string.IsNullOrEmpty(detailMaterielCode.Value?.ToString())) |
| | | { |
| | | string materielCode = detailMaterielCode.Value.ToString().Trim(); |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.Details.Any(d => d.MaterielCode.Contains(materielCode))); |
| | | } |
| | | |
| | | var detailMaterielName = searchParametersList.FirstOrDefault(x => x.Name == "materielName"); |
| | | if (detailMaterielName != null && !string.IsNullOrEmpty(detailMaterielName.Value?.ToString())) |
| | | { |
| | | string materielName = detailMaterielName.Value.ToString().Trim(); |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.Details.Any(d => d.MaterielName.Contains(materielName))); |
| | | } |
| | | |
| | | var orderStatusParam = searchParametersList.FirstOrDefault(x =>x.Name.Equals("orderStatus", StringComparison.OrdinalIgnoreCase) && !string.IsNullOrEmpty(x.Value?.ToString())); |
| | | if (orderStatusParam != null) |
| | | { |
| | | filterOrderStatus = orderStatusParam.Value.ToString().Trim(); |
| | | } |
| | | |
| | | var returnToMESStatusParam = searchParametersList.FirstOrDefault(x => x.Name.Equals("returnToMESStatus", StringComparison.OrdinalIgnoreCase) && !string.IsNullOrEmpty(x.Value?.ToString())); |
| | | if (returnToMESStatusParam != null) |
| | | { |
| | | filterreturnToMESStatus = returnToMESStatusParam.Value.ToString().Trim(); |
| | | } |
| | | |
| | | var createDateParams = searchParametersList |
| | | .Where(x => x.Name.Equals("createDate", StringComparison.OrdinalIgnoreCase) |
| | | && !string.IsNullOrEmpty(x.Value?.ToString())) |
| | | .ToList(); |
| | | |
| | | DateTime? minCreateDate = null; |
| | | DateTime? maxCreateDate = null; |
| | | |
| | | foreach (var dateParam in createDateParams) |
| | | { |
| | | if (DateTime.TryParse(dateParam.Value.ToString(), out DateTime dateValue)) |
| | | { |
| | | LinqExpressionType expressionType = dateParam.DisplayType.GetLinqCondition(); |
| | | switch (expressionType) |
| | | { |
| | | case LinqExpressionType.ThanOrEqual: |
| | | minCreateDate = dateValue; |
| | | break; |
| | | case LinqExpressionType.LessThanOrEqual: |
| | | maxCreateDate = dateValue; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (minCreateDate.HasValue) |
| | | { |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.CreateDate >= minCreateDate.Value); |
| | | } |
| | | if (maxCreateDate.HasValue) |
| | | { |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.CreateDate <= maxCreateDate.Value); |
| | | } |
| | | options.Filter = searchParametersList; |
| | | } |
| | | catch { } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | | var data = sugarQueryable1 |
| | | .WhereIF(!wheres.IsNullOrEmpty(), wheres) |
| | | .OrderBy(orderByModels).Includes(x=>x.Details) |
| | | |
| | | .OrderBy(orderByModels) |
| | | .ToPageList(options.Page, options.Rows, ref totalCount); |
| | | |
| | | foreach (var item in data) |
| | | |
| | | if (data.Any()) |
| | | { |
| | | Dt_InboundOrder _InboundOrder = SqlSugarHelper.DbWMS.Queryable<Dt_InboundOrder>().Where(x => x.UpperOrderNo == item.UpperOrderNo).First(); |
| | | Dt_OutboundOrder OutboundOrder = SqlSugarHelper.DbWMS.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == item.UpperOrderNo).First(); |
| | | if (_InboundOrder != null) |
| | | var upperOrderNos = data.Select(x => x.UpperOrderNo) |
| | | .Distinct() |
| | | .Where(x => !string.IsNullOrEmpty(x)) |
| | | .ToList(); |
| | | |
| | | var inboundOrders = SqlSugarHelper.DbWMS.Queryable<Dt_InboundOrder>() |
| | | .Where(x => upperOrderNos.Contains(x.UpperOrderNo)) |
| | | .ToList(); |
| | | var inboundOrderDict = new Dictionary<string, Dt_InboundOrder>(); |
| | | foreach (var order in inboundOrders) |
| | | { |
| | | item.OrderStatus = _InboundOrder.OrderStatus; |
| | | item.OrderType = _InboundOrder.OrderType; |
| | | item.Modifier = _InboundOrder.Operator; |
| | | item.ReturnToMESStatus = _InboundOrder.ReturnToMESStatus; |
| | | }else if (OutboundOrder!=null) |
| | | if (!string.IsNullOrEmpty(order.UpperOrderNo) && !inboundOrderDict.ContainsKey(order.UpperOrderNo)) |
| | | { |
| | | item.OrderStatus = OutboundOrder.OrderStatus; |
| | | item.OrderType = OutboundOrder.OrderType; |
| | | item.Modifier = OutboundOrder.Operator; |
| | | item.ReturnToMESStatus = OutboundOrder.ReturnToMESStatus; |
| | | inboundOrderDict.Add(order.UpperOrderNo, order); |
| | | } |
| | | } |
| | | |
| | | var outboundOrders = SqlSugarHelper.DbWMS.Queryable<Dt_OutboundOrder>() |
| | | .Where(x => upperOrderNos.Contains(x.UpperOrderNo)) |
| | | .ToList(); |
| | | var outboundOrderDict = new Dictionary<string, Dt_OutboundOrder>(); |
| | | foreach (var order in outboundOrders) |
| | | { |
| | | if (!string.IsNullOrEmpty(order.UpperOrderNo) && !outboundOrderDict.ContainsKey(order.UpperOrderNo)) |
| | | { |
| | | outboundOrderDict.Add(order.UpperOrderNo, order); |
| | | } |
| | | } |
| | | |
| | | foreach (var allocateOrder in data) |
| | | { |
| | | if (inboundOrderDict.TryGetValue(allocateOrder.UpperOrderNo, out var inboundOrder)) |
| | | { |
| | | allocateOrder.OrderStatus = inboundOrder.OrderStatus; |
| | | allocateOrder.OrderType = inboundOrder.OrderType; |
| | | allocateOrder.Modifier = inboundOrder.Operator; |
| | | allocateOrder.ReturnToMESStatus = inboundOrder.ReturnToMESStatus; |
| | | } |
| | | else if (outboundOrderDict.TryGetValue(allocateOrder.UpperOrderNo, out var outboundOrder)) |
| | | { |
| | | allocateOrder.OrderStatus = outboundOrder.OrderStatus; |
| | | allocateOrder.OrderType = outboundOrder.OrderType; |
| | | allocateOrder.Modifier = outboundOrder.Operator; |
| | | allocateOrder.ReturnToMESStatus = outboundOrder.ReturnToMESStatus; |
| | | } |
| | | } |
| | | |
| | | if (!string.IsNullOrEmpty(filterOrderStatus)) |
| | | { |
| | | data = data.Where(x => x.OrderStatus == filterOrderStatus.ObjToInt()).ToList(); |
| | | totalCount = data.Count; |
| | | } |
| | | |
| | | if (!string.IsNullOrEmpty(filterreturnToMESStatus)) |
| | | { |
| | | data = data.Where(x => x.ReturnToMESStatus == filterreturnToMESStatus.ObjToInt()).ToList(); |
| | | totalCount = data.Count; |
| | | } |
| | | } |
| | | |
| | | return new PageGridData<Dt_AllocateOrder>(totalCount, data); |
| | | } |
| | | |
| | | |
| | | public override PageGridData<Dt_InboundOrderDetail> GetDetailPage(PageDataOptions options) |
| | | { |
| | | string wheres = ValidatePageOptions(options); |