Files
ChunilENG/Assets/WorkSpace/Review/DataManager.cs
2025-04-16 13:51:42 +09:00

116 lines
3.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Reflection;
using static MQTT;
using WI;
using System.Text.RegularExpressions;
using UnityEngine;
namespace CHN
{
public class DataManager : MonoBehaviour, ISingle
{
public Action<Machine, SimpleField> onCompleteInfo;
public Action<Machine, SimpleField> onSimpleInfo;
private Dictionary<string, CompleteInfo> machineTable = new();
private Dictionary<string, SimpleField> includeFields = new();
private HashSet<string> samples = new();
private List<SimpleField> simpleField;
private string simplePath;
public override void AfterAwake()
{
var machines = FindObjectsByType<Machine>(FindObjectsSortMode.None);
foreach (var machine in machines)
{
if (string.IsNullOrEmpty(machine.code))
continue;
if (machineTable.ContainsKey(GapRemove(machine.code)))
continue;
machineTable.Add(GapRemove(machine.code), new());
}
var fileds = typeof(CompleteInfo).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
//simpleField= JsonConvert.DeserializeObject<List<SimpleField>>(simplePath);
for (int i = 0; i < 6; i++)
{
samples.Add(fileds[i].Name);
}
}
public void MachineMatching(List<CompleteInfo> machineInfos)
{
foreach (CompleteInfo info in machineInfos)
{
var id = info.workcd;
var name = GapRemove(id);
if (machineTable.ContainsKey(name))
{
machineTable[name] = info;
}
}
}
public void GetSimpleCompleteData(Machine machine)
{
if (string.IsNullOrEmpty(machine.code))
return;
var machineName = GapRemove(machine.code);
if (includeFields.ContainsKey(machineName))
{
includeFields[machineName].machineInfo = machineTable[machineName];
}
else
{
var simpleTest = new SimpleField();
simpleTest.machineName = machineName;
simpleTest.machineInfo = machineTable[machineName];
simpleTest.simpleField = samples;
includeFields.Add(machineName, simpleTest);
}
//foreach(var simple in simpleField)
//{
// var machineName = GapRemove(machine.name);
// if (simple.machineName.Equals(machineName))
// {
// simple.machineInfo = machineTable[machineName];
// onSimpleInfo?.Invoke(simple);
// break;
// }
//}
onSimpleInfo?.Invoke(machine, includeFields[machineName]);
}
public void SimpleFiledChange(Machine machine, HashSet<string> fields)
{
if (string.IsNullOrEmpty(machine.code))
return;
var machineName = GapRemove(machine.code);
var simpleField = includeFields[machineName];
simpleField.simpleField = fields;
includeFields[machineName] = simpleField;
}
public void GetCompleteInfo(Machine machine)
{
if (string.IsNullOrEmpty(machine.code))
return;
var machineName = GapRemove(machine.code);
var simpleField = includeFields[machineName];
onCompleteInfo?.Invoke(machine, simpleField);
}
string GapRemove(string name)
{
return Regex.Replace(name, @"\s", "");
}
}
public class SimpleField
{
public string machineName;
public CompleteInfo machineInfo;
public HashSet<string> simpleField;
}
}