FDC MongoDB 패치(컬럼추가)
This commit is contained in:
@@ -80,7 +80,8 @@ namespace DDUtilityApp.LOGPARSER
|
||||
this.tboxName.ImeMode = ImeMode.Hangul;
|
||||
this.tboxEquipmentID.ImeMode = ImeMode.Alpha;
|
||||
this.chkAllEquipment.Checked = GlobalVariable.Instance.FrmEqSelector_AllEquipment;
|
||||
this.chkUseSMB.Checked = GlobalVariable.Instance.FrmEqSelector_UseSMB;
|
||||
this.chkUseSMB.Checked = true; // GlobalVariable.Instance.FrmEqSelector_UseSMB
|
||||
this.chkUseSMB.Visible = false;
|
||||
this.tabControl1.SelectedIndex = 0;
|
||||
this.tboxModelDescription.Font = font;
|
||||
|
||||
|
||||
@@ -28,38 +28,71 @@ namespace JWH.MONGODB
|
||||
return item;
|
||||
}
|
||||
|
||||
public static List<TraceCollection> GetCollectionData(string collectionName, DateTime dtStart, DateTime dtEnd, TraceCollection condition = null)
|
||||
public static async void GetCollectionColumns(string collectionName)
|
||||
{
|
||||
MongoClient client = new MongoClient(ConnectionString);
|
||||
IMongoDatabase database = client.GetDatabase(DatabaseName);
|
||||
IMongoCollection<TraceCollection> collection = database.GetCollection<TraceCollection>(collectionName);
|
||||
var collection = database.GetCollection<BsonDocument>(collectionName);
|
||||
|
||||
// # ALL Data
|
||||
//var lst = collection.Find(_ => true).ToList();
|
||||
// # Use BsonDocument
|
||||
//var filter = new BsonDocument("LotID", "13089570006B");
|
||||
// # Use Builders.Filter
|
||||
//var filterBuilder = Builders<TraceCollection>.Filter;
|
||||
//var filter = filterBuilder.Eq(x => x.LotID, "13109360026B");
|
||||
var pipeline = new[]
|
||||
{
|
||||
new BsonDocument("$project", new BsonDocument("fields", new BsonDocument("$objectToArray", "$$ROOT"))),
|
||||
new BsonDocument("$unwind", "$fields"),
|
||||
new BsonDocument("$group", new BsonDocument("_id", BsonNull.Value).Add("uniqueFields", new BsonDocument("$addToSet", "$fields.k")))
|
||||
};
|
||||
|
||||
FilterDefinitionBuilder<TraceCollection> filterBuilder = Builders<TraceCollection>.Filter;
|
||||
FilterDefinition<TraceCollection> filter = filterBuilder.Gte(x => x.EVENTTIME, dtStart) & filterBuilder.Lt(x => x.EVENTTIME, dtEnd);
|
||||
if (condition != null)
|
||||
var result = await collection.Aggregate<BsonDocument>(pipeline).FirstOrDefaultAsync();
|
||||
|
||||
if (result != null && result.Contains("uniqueFields"))
|
||||
{
|
||||
string[] SkipPropertys = new string[] { "_id", "EVENTTIME" };
|
||||
foreach (PropertyInfo property in condition.GetType().GetProperties())
|
||||
var fields = result["uniqueFields"].AsBsonArray.Select(f => f.AsString);
|
||||
Console.WriteLine("컬렉션의 필드 목록:");
|
||||
foreach (var field in fields)
|
||||
{
|
||||
object value = property.GetValue(condition);
|
||||
if (value != null)
|
||||
{
|
||||
if (property.Name.Equals("LotID")) filter &= filterBuilder.Eq(x => x.LotID, value);
|
||||
continue;
|
||||
}
|
||||
Console.WriteLine(field);
|
||||
}
|
||||
}
|
||||
List<TraceCollection> document = collection.Find(filter).ToList();
|
||||
}
|
||||
|
||||
return document;
|
||||
public static List<TraceCollection> GetCollectionData(string collectionName, DateTime dtStart, DateTime dtEnd, TraceCollection condition = null)
|
||||
{
|
||||
try
|
||||
{
|
||||
MongoClient client = new MongoClient(ConnectionString);
|
||||
IMongoDatabase database = client.GetDatabase(DatabaseName);
|
||||
IMongoCollection<TraceCollection> collection = database.GetCollection<TraceCollection>(collectionName);
|
||||
|
||||
// # ALL Data
|
||||
//var lst = collection.Find(_ => true).ToList();
|
||||
// # Use BsonDocument
|
||||
//var filter = new BsonDocument("LotID", "13089570006B");
|
||||
// # Use Builders.Filter
|
||||
//var filterBuilder = Builders<TraceCollection>.Filter;
|
||||
//var filter = filterBuilder.Eq(x => x.LotID, "13109360026B");
|
||||
|
||||
FilterDefinitionBuilder<TraceCollection> filterBuilder = Builders<TraceCollection>.Filter;
|
||||
FilterDefinition<TraceCollection> filter = filterBuilder.Gte(x => x.EVENTTIME, dtStart) & filterBuilder.Lt(x => x.EVENTTIME, dtEnd);
|
||||
if (condition != null)
|
||||
{
|
||||
string[] SkipPropertys = new string[] { "_id", "EVENTTIME" };
|
||||
foreach (PropertyInfo property in condition.GetType().GetProperties())
|
||||
{
|
||||
object value = property.GetValue(condition);
|
||||
if (value != null)
|
||||
{
|
||||
if (property.Name.Equals("LotID")) filter &= filterBuilder.Eq(x => x.LotID, value);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
List<TraceCollection> document = collection.Find(filter).ToList();
|
||||
|
||||
return document;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
}
|
||||
}
|
||||
|
||||
public static bool GetCollectionSize_Flag = false;
|
||||
@@ -150,35 +183,52 @@ namespace JWH.MONGODB
|
||||
|
||||
public ObjectId _id { get; set; }
|
||||
|
||||
public List<object> LotList { get; set; }
|
||||
|
||||
[BsonDateTimeOptions(Kind = DateTimeKind.Local)]
|
||||
public DateTime EVENTTIME { get; set; }
|
||||
|
||||
public string ProcessID { get; set; }
|
||||
|
||||
public string UnitState { get; set; }
|
||||
|
||||
|
||||
public string VIDName { get; set; }
|
||||
|
||||
public object Value { get; set; }
|
||||
|
||||
public string LotID { get; set; }
|
||||
public string Sign { get; set; }
|
||||
|
||||
public string MaterialID { get; set; }
|
||||
public List<object> LotList { get; set; }
|
||||
|
||||
public string LotID { get; set; }
|
||||
|
||||
public string ProductID { get; set; }
|
||||
|
||||
public object UnitNO { get; set; }
|
||||
|
||||
public string Recipe { get; set; }
|
||||
|
||||
public string ProcessID { get; set; }
|
||||
public object UnitNO { get; set; }
|
||||
|
||||
public string VORNR { get; set; }
|
||||
|
||||
public string UnitState { get; set; }
|
||||
public string MaterialID { get; set; }
|
||||
|
||||
public string Sign { get; set; }
|
||||
public string CarrierId { get; set; }
|
||||
|
||||
public string PanelId { get; set; }
|
||||
|
||||
public string Position { get; set; }
|
||||
|
||||
public string MarkingId { get; set; }
|
||||
|
||||
public string Step { get; set; }
|
||||
|
||||
public double LowerSV { get; set; }
|
||||
|
||||
public double UpperSV { get; set; }
|
||||
|
||||
public string MongGoUnitName { get; set; }
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
using System.Windows.Forms;
|
||||
using System.Windows.Forms.DataVisualization.Charting;
|
||||
using JWH;
|
||||
using JWH.MONGODB;
|
||||
using MongoDB.Bson;
|
||||
@@ -101,19 +102,22 @@ namespace DDUtilityApp.MONGO
|
||||
List<TraceCollection> data = null;
|
||||
try
|
||||
{
|
||||
string collectionName = $"{this.EquipmentID}.{this.VID}";
|
||||
//FDCMongoDB.GetCollectionColumns(collectionName);
|
||||
|
||||
this.Cursor = Cursors.WaitCursor;
|
||||
this.ssName.Text = "GRID";
|
||||
|
||||
DateTime dtStart = this.DateTimeStart;
|
||||
DateTime dtEnd = this.DateTimeEnd;
|
||||
data = FDCMongoDB.GetCollectionData($"{this.EquipmentID}.{this.VID}", dtStart, dtEnd);
|
||||
data = FDCMongoDB.GetCollectionData(collectionName, dtStart, dtEnd);
|
||||
timeStart = this.StatusLabelDisplay(this.ssStatus01, "수집", timeStart, DateTime.Now);
|
||||
|
||||
this.grid.AutoBinding(data.ToArray());
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw ex;
|
||||
XLogger.Instance.Fatal(ex, true);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -369,6 +373,7 @@ namespace DDUtilityApp.MONGO
|
||||
this.grid.AddColumn("EVENTTIME", "EventTime");
|
||||
this.grid.AddColumn("VIDName");
|
||||
this.grid.AddColumn("Value");
|
||||
this.grid.AddColumn("Sign");
|
||||
this.grid.AddColumn("LotID");
|
||||
this.grid.AddColumn("MaterialID");
|
||||
this.grid.AddColumn("ProductID");
|
||||
@@ -377,7 +382,14 @@ namespace DDUtilityApp.MONGO
|
||||
this.grid.AddColumn("ProcessID");
|
||||
this.grid.AddColumn("VORNR");
|
||||
this.grid.AddColumn("UnitState");
|
||||
this.grid.AddColumn("Sign");
|
||||
this.grid.AddColumn("Step");
|
||||
this.grid.AddColumn("LowerSV");
|
||||
this.grid.AddColumn("UpperSV");
|
||||
this.grid.AddColumn("CarrierId");
|
||||
this.grid.AddColumn("PanelId");
|
||||
this.grid.AddColumn("Position");
|
||||
this.grid.AddColumn("MarkingId");
|
||||
this.grid.AddColumn("MongGoUnitName");
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
Reference in New Issue
Block a user