123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace wms.service.Service.StrategyService
- {
- public class LocationForStrategyInfoComparer : IComparer<LocationForStrategyInfo>
- {
- private string _fieldName { get; set; }
- public LocationForStrategyInfoComparer(string fieldName)
- {
- _fieldName = fieldName;
- }
- public int Compare(LocationForStrategyInfo x, LocationForStrategyInfo y)
- {
- switch (_fieldName)
- {
- case "InTime":
- x.StockList.Sort(new LocationForStrategyInfoStockComparer(_fieldName));
- y.StockList.Sort(new LocationForStrategyInfoStockComparer(_fieldName));
- return x.StockList.First().InTime.Date.CompareTo(y.StockList.First().InTime.Date);
- case "ProductionTime":
- x.StockList.Sort(new LocationForStrategyInfoStockComparer(_fieldName));
- y.StockList.Sort(new LocationForStrategyInfoStockComparer(_fieldName));
- return x.StockList.First().ProductionTime.Date.CompareTo(y.StockList.First().ProductionTime.Date);
- case "LastInTime":
- x.StockList.Sort(new LocationForStrategyInfoStockComparer(_fieldName));
- y.StockList.Sort(new LocationForStrategyInfoStockComparer(_fieldName));
- return x.StockList.First().LastInTime.Date.CompareTo(y.StockList.First().LastInTime.Date);
- case "MixCount":
- var temp = x.StockList.Select(q => q.MaterialId).Distinct().Count().CompareTo(y.StockList.Select(q => q.MaterialId).Distinct().Count()) * (-1);
- if (temp == 0)
- {
- x.StockList.Sort(new LocationForStrategyInfoStockComparer("ProductionTime"));
- y.StockList.Sort(new LocationForStrategyInfoStockComparer("ProductionTime"));
- return x.StockList.First().ProductionTime.Date.CompareTo(y.StockList.First().ProductionTime.Date);
- }
- return temp;
- default:
- return x.Id.CompareTo(y.Id);
- }
- }
- }
- public class LocationForStrategyInfoStockComparer : IComparer<LocationForStrategyInfoStock>
- {
- private string _fieldName { get; set; }
- public LocationForStrategyInfoStockComparer(string fieldName)
- {
- _fieldName = fieldName;
- }
- public int Compare(LocationForStrategyInfoStock x, LocationForStrategyInfoStock y)
- {
- switch (_fieldName)
- {
- case "InTime":
- return x.InTime.Date.CompareTo(y.InTime.Date);
- case "ProductionTime":
- return x.ProductionTime.Date.CompareTo(y.ProductionTime.Date);
- case "LastInTime":
- return x.LastInTime.Date.CompareTo(y.LastInTime.Date);
- default:
- return x.GroupStockDetailId.CompareTo(y.GroupStockDetailId);
- }
- }
- }
- }
|