설비 상세 대시 보드 기능 추가
This commit is contained in:
@@ -5,32 +5,46 @@ using static MQTT;
|
||||
using WI;
|
||||
using System.Text.RegularExpressions;
|
||||
using UnityEngine;
|
||||
using System.Linq;
|
||||
|
||||
namespace CHN
|
||||
{
|
||||
public class DataManager : MonoBehaviour, ISingle
|
||||
{
|
||||
private Machine[] machines;
|
||||
|
||||
public Action<Machine, SimpleField> onCompleteInfo;
|
||||
public Action<Machine, SimpleField> onSimpleInfo;
|
||||
private Dictionary<string, DashBoardData> machineTable = new();
|
||||
private Dictionary<string, SimpleField> includeFields = new();
|
||||
public Action<List<SimpleField>> onKPIInfo;
|
||||
|
||||
private Dictionary<string, UsageMQTTData> mqttDataTable = new();
|
||||
private Dictionary<string, UsageKPIData> kpiDataTable = new();
|
||||
|
||||
public SDictionary<string, SimpleField> includeFields = new();
|
||||
public Dictionary<string, SimpleField> simpleFields = new();
|
||||
private HashSet<string> samples = new();
|
||||
private List<SimpleField> simpleField;
|
||||
private string simplePath;
|
||||
|
||||
public KPIData kpiData;
|
||||
public override void AfterAwake()
|
||||
{
|
||||
var machines = FindObjectsByType<Machine>(FindObjectsSortMode.None);
|
||||
machines = FindObjectsByType<Machine>(FindObjectsSortMode.None);
|
||||
|
||||
foreach (var machine in machines)
|
||||
{
|
||||
if (string.IsNullOrEmpty(machine.code))
|
||||
continue;
|
||||
|
||||
if (machineTable.ContainsKey(GapRemove(machine.code)))
|
||||
if (mqttDataTable.ContainsKey(GapRemove(machine.code)))
|
||||
continue;
|
||||
|
||||
machineTable.Add(GapRemove(machine.code), new());
|
||||
mqttDataTable.Add(GapRemove(machine.code), new());
|
||||
|
||||
if (kpiDataTable.ContainsKey(GapRemove(machine.code)))
|
||||
continue;
|
||||
|
||||
kpiDataTable.Add(GapRemove(machine.code), new());
|
||||
}
|
||||
var fileds = typeof(DashBoardData).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
|
||||
var fileds = typeof(UsageMQTTData).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
|
||||
//simpleField= JsonConvert.DeserializeObject<List<SimpleField>>(simplePath);
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
@@ -38,17 +52,66 @@ namespace CHN
|
||||
}
|
||||
}
|
||||
|
||||
public void SetKPIData(MachineKPIData machineKPIData)
|
||||
{
|
||||
foreach(var rows in machineKPIData.data.rows)
|
||||
{
|
||||
var id = rows.workcd;
|
||||
var name = GapRemove(id);
|
||||
|
||||
if (kpiDataTable.ContainsKey(name))
|
||||
{
|
||||
kpiDataTable[name] = SetUsageKPIData(rows);
|
||||
}
|
||||
}
|
||||
SetMachineData();
|
||||
}
|
||||
|
||||
public void MachineMatching(List<CompleteInfo> machineInfos)
|
||||
{
|
||||
foreach (CompleteInfo info in machineInfos)
|
||||
{
|
||||
var id = info.workcd;
|
||||
var name = GapRemove(id);
|
||||
if (machineTable.ContainsKey(name))
|
||||
if (mqttDataTable.ContainsKey(name))
|
||||
{
|
||||
machineTable[name] = SetDashboardMQTTData(info);
|
||||
mqttDataTable[name] = SetUsageMQTTData(info);
|
||||
}
|
||||
}
|
||||
SetMachineData();
|
||||
}
|
||||
|
||||
private void SetMachineData()
|
||||
{
|
||||
foreach(var machine in machines)
|
||||
{
|
||||
if (string.IsNullOrEmpty(machine.code))
|
||||
return;
|
||||
|
||||
var machineName = GapRemove(machine.code);
|
||||
|
||||
if (!includeFields.ContainsKey(machineName))
|
||||
{
|
||||
var simpleData = new SimpleField();
|
||||
simpleData.machineName = machineName;
|
||||
simpleData.machineInfo = new UsageMQTTData();
|
||||
simpleData.kpiDataInfo = new UsageKPIData();
|
||||
simpleData.simpleField = samples;
|
||||
includeFields.Add(machineName, simpleData);
|
||||
}
|
||||
|
||||
if (mqttDataTable.Count != 0)
|
||||
{
|
||||
includeFields[machineName].machineInfo = mqttDataTable[machineName];
|
||||
}
|
||||
|
||||
if(kpiDataTable.Count != 0)
|
||||
{
|
||||
includeFields[machineName].kpiDataInfo = kpiDataTable[machineName];
|
||||
}
|
||||
}
|
||||
|
||||
onKPIInfo.Invoke(includeFields.Values.ToList());
|
||||
}
|
||||
|
||||
public void GetSimpleCompleteData(Machine machine)
|
||||
@@ -58,27 +121,17 @@ namespace CHN
|
||||
var machineName = GapRemove(machine.code);
|
||||
if (includeFields.ContainsKey(machineName))
|
||||
{
|
||||
includeFields[machineName].machineInfo = machineTable[machineName];
|
||||
includeFields[machineName].machineInfo = mqttDataTable[machineName];
|
||||
}
|
||||
else
|
||||
{
|
||||
var simpleTest = new SimpleField();
|
||||
simpleTest.machineName = machineName;
|
||||
simpleTest.machineInfo = machineTable[machineName];
|
||||
simpleTest.machineInfo = mqttDataTable[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]);
|
||||
}
|
||||
|
||||
@@ -105,47 +158,69 @@ namespace CHN
|
||||
{
|
||||
return Regex.Replace(name, @"\s", "");
|
||||
}
|
||||
private DashBoardData SetDashboardMQTTData(CompleteInfo completeInfos)
|
||||
|
||||
|
||||
private UsageKPIData SetUsageKPIData(KPIData kpiData)
|
||||
{
|
||||
var dashboardData = new DashBoardData();
|
||||
var usageKPIData = new UsageKPIData();
|
||||
|
||||
dashboardData.wordno = completeInfos.wordno;
|
||||
dashboardData.workdt = completeInfos.workdt;
|
||||
dashboardData.daynight = completeInfos.daynight;
|
||||
dashboardData.workcd = completeInfos.workcd;
|
||||
dashboardData.worknm = completeInfos.worknm;
|
||||
dashboardData.workseq = completeInfos.workseq;
|
||||
dashboardData.statusnm = completeInfos.statusnm;
|
||||
dashboardData.itemcd = completeInfos.itemcd;
|
||||
dashboardData.itemdesc = completeInfos.itemdesc;
|
||||
dashboardData.pjtcd = completeInfos.pjtcd;
|
||||
dashboardData.matcd = completeInfos.matcd;
|
||||
dashboardData.cycletime = completeInfos.cycletime;
|
||||
dashboardData.cavity = completeInfos.cavity;
|
||||
dashboardData.planqty = completeInfos.planqty;
|
||||
dashboardData.goalqty = completeInfos.goalqty;
|
||||
dashboardData.workqty = completeInfos.workqty;
|
||||
dashboardData.goodqty = completeInfos.goodqty;
|
||||
dashboardData.badqty = completeInfos.badqty;
|
||||
dashboardData.badrate = completeInfos.badrate;
|
||||
dashboardData.efficiency = completeInfos.efficiency;
|
||||
dashboardData.progressrate = completeInfos.progressrate;
|
||||
dashboardData.sttm = completeInfos.sttm;
|
||||
dashboardData.totm = completeInfos.totm;
|
||||
usageKPIData.eorate = kpiData.eorate;
|
||||
usageKPIData.porate = kpiData.porate;
|
||||
usageKPIData.goodqtyrate = kpiData.goodqtyrate;
|
||||
|
||||
return dashboardData;
|
||||
return usageKPIData;
|
||||
}
|
||||
|
||||
private UsageMQTTData SetUsageMQTTData(CompleteInfo completeInfos)
|
||||
{
|
||||
var usageMQTTData = new UsageMQTTData();
|
||||
|
||||
usageMQTTData.wordno = completeInfos.wordno;
|
||||
usageMQTTData.workdt = completeInfos.workdt;
|
||||
usageMQTTData.daynight = completeInfos.daynight;
|
||||
usageMQTTData.workcd = completeInfos.workcd;
|
||||
usageMQTTData.worknm = completeInfos.worknm;
|
||||
usageMQTTData.workseq = completeInfos.workseq;
|
||||
usageMQTTData.statusnm = completeInfos.statusnm;
|
||||
usageMQTTData.itemcd = completeInfos.itemcd;
|
||||
usageMQTTData.itemdesc = completeInfos.itemdesc;
|
||||
usageMQTTData.pjtcd = completeInfos.pjtcd;
|
||||
usageMQTTData.matcd = completeInfos.matcd;
|
||||
usageMQTTData.cycletime = completeInfos.cycletime;
|
||||
usageMQTTData.cavity = completeInfos.cavity;
|
||||
usageMQTTData.planqty = completeInfos.planqty;
|
||||
usageMQTTData.goalqty = completeInfos.goalqty;
|
||||
usageMQTTData.workqty = completeInfos.workqty;
|
||||
usageMQTTData.goodqty = completeInfos.goodqty;
|
||||
usageMQTTData.badqty = completeInfos.badqty;
|
||||
usageMQTTData.badrate = completeInfos.badrate;
|
||||
usageMQTTData.efficiency = completeInfos.efficiency;
|
||||
usageMQTTData.progressrate = completeInfos.progressrate;
|
||||
usageMQTTData.sttm = completeInfos.sttm;
|
||||
usageMQTTData.totm = completeInfos.totm;
|
||||
|
||||
return usageMQTTData;
|
||||
}
|
||||
}
|
||||
[Serializable]
|
||||
public class SimpleField
|
||||
{
|
||||
public string machineName;
|
||||
public DashBoardData machineInfo;
|
||||
public UsageKPIData kpiDataInfo;
|
||||
public UsageMQTTData machineInfo;
|
||||
public HashSet<string> simpleField;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class DashBoardData
|
||||
public class UsageKPIData
|
||||
{
|
||||
public string eorate;
|
||||
public string porate;
|
||||
public string goodqtyrate;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class UsageMQTTData
|
||||
{
|
||||
public string wordno;
|
||||
public string workdt;
|
||||
|
||||
Reference in New Issue
Block a user