[정영민] 공통 기능 스크립트 정리 작업

26.01.20
천일 공장 최적화 진행 중인 프로젝트에서
공통 기능 스크립트 정리 후 데이터 업로드
This commit is contained in:
정영민
2026-01-20 18:32:49 +09:00
parent 66b6d21bb0
commit debef33ff7
51 changed files with 379 additions and 337 deletions

View File

@@ -1,8 +1,7 @@
using UnityEngine; using UnityEngine;
public interface IProductionPanel public interface IDashboardManagedUI
{ {
public void Open(); public void Open();
public void Close(); public void Close();
} }

View File

@@ -1,7 +1,8 @@
using UnityEngine; using UnityEngine;
public interface IPopupPanel public interface IDashboardUI
{ {
public void Open(); public void Open();
public void Close(); public void Close();
} }

View File

@@ -41,31 +41,4 @@ public class HighLighterManager : MonoBehaviour, ISingle
machine.DeactiveHighLighter(); machine.DeactiveHighLighter();
} }
} }
public void SetTargetPosToMachine(Machine machine)
{
OrbitalController controller = FindSingle<OrbitalController>();
if (controller.viewMode != ViewMode.PerspectiveView)
{
controller.SetViewMode(ViewMode.PerspectiveView);
}
var building = FindSingle<Building>();
int changeFloor = building.floors[0].floorIndex;
int libraryMachineFloor = machine.GetMachineFloorIndex();
if (libraryMachineFloor > changeFloor)
{
changeFloor = libraryMachineFloor;
}
var centerPos = machine.centerPos;
var slider = FindSingle<Canvas_Popup>().panel_floorcontrol;
slider.ChangeValueFromOutside(changeFloor);
controller.option.currentAzimuth = machine.focusAzimuth;
controller.option.currentElevation = machine.focusElevation;
controller.option.currentDistance = machine.focusDistance;
controller.SetTargetPos(centerPos);
}
} }

View File

@@ -8,7 +8,7 @@ public class UIActiveManager : MonoBehaviour
private UserInputManager userInputManager; private UserInputManager userInputManager;
private Canvas_Popup canvasPopup; private Canvas_Popup canvasPopup;
private Canvas_Top canvasTop; private Canvas_Top canvasTop;
private MachineKPIManager machineKPIManager; private MachineUIManager machineUIManager;
private InputHandler inputHandler; private InputHandler inputHandler;
@@ -19,7 +19,7 @@ public class UIActiveManager : MonoBehaviour
userInputManager = FindSingle<UserInputManager>(); userInputManager = FindSingle<UserInputManager>();
canvasPopup = FindSingle<Canvas_Popup>(); canvasPopup = FindSingle<Canvas_Popup>();
canvasTop = FindSingle<Canvas_Top>(); canvasTop = FindSingle<Canvas_Top>();
machineKPIManager = FindSingle<MachineKPIManager>(); machineUIManager = FindSingle<MachineUIManager>();
inputHandler = GetInputHandler(); inputHandler = GetInputHandler();
userInputManager.SetHandler(inputHandler); userInputManager.SetHandler(inputHandler);
@@ -43,6 +43,6 @@ public class UIActiveManager : MonoBehaviour
canvasPopup.SetActive(isUIActive); canvasPopup.SetActive(isUIActive);
canvasTop.SetActive(isUIActive); canvasTop.SetActive(isUIActive);
machineKPIManager.gameObject.SetActive(isUIActive); machineUIManager.gameObject.SetActive(isUIActive);
} }
} }

View File

@@ -7,7 +7,7 @@ using UnityEngine.UI;
using WI; using WI;
using static MQTT; using static MQTT;
public class Panel_AssemblyProduction : PanelBase, IProductionPanel public class Panel_AssemblyProduction : PanelBase, IDashboardUI
{ {
public Dictionary<int, UI_StatusContent> statusContents = new Dictionary<int, UI_StatusContent>(); public Dictionary<int, UI_StatusContent> statusContents = new Dictionary<int, UI_StatusContent>();
private Panel_Effect effect; private Panel_Effect effect;

View File

@@ -5,7 +5,7 @@ using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
using WI; using WI;
public class Panel_AssemblyProgressLine : PanelBase, IProductionPanel public class Panel_AssemblyProgressLine : PanelBase, IDashboardUI
{ {
private Panel_Effect effect; private Panel_Effect effect;
public RectTransform Content; public RectTransform Content;

View File

@@ -3,7 +3,7 @@ using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
using WI; using WI;
public class Panel_BuildingCorrection : PanelBase, IPopupPanel public class Panel_BuildingCorrection : PanelBase, IDashboardManagedUI
{ {
private Building building; private Building building;

View File

@@ -4,7 +4,7 @@ using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
using WI; using WI;
public class Panel_BuildingDeleteRegistration : PanelBase, IPopupPanel public class Panel_BuildingDeleteRegistration : PanelBase, IDashboardManagedUI
{ {
private Building building; private Building building;

View File

@@ -7,7 +7,7 @@ using UnityEngine.UI;
using WI; using WI;
using static MQTT; using static MQTT;
public class Panel_FinalInspection : PanelBase, IProductionPanel public class Panel_FinalInspection : PanelBase, IDashboardUI
{ {
public Dictionary<int, UI_StatusContent> statusContents = new Dictionary<int, UI_StatusContent>(); public Dictionary<int, UI_StatusContent> statusContents = new Dictionary<int, UI_StatusContent>();
private Panel_Effect effect; private Panel_Effect effect;

View File

@@ -7,7 +7,7 @@ using WI;
using static MQTT; using static MQTT;
using TMPro; using TMPro;
public class Panel_InjectionProduction : PanelBase, IProductionPanel public class Panel_InjectionProduction : PanelBase, IDashboardUI
{ {
public Dictionary<int, UI_StatusContent> statusContents = new Dictionary<int, UI_StatusContent>(); public Dictionary<int, UI_StatusContent> statusContents = new Dictionary<int, UI_StatusContent>();
private Panel_Effect effect; private Panel_Effect effect;

View File

@@ -5,7 +5,7 @@ using UnityEngine.UI;
using System; using System;
using CHN; using CHN;
public class Panel_MachineCorrection : PanelBase, IPopupPanel public class Panel_MachineCorrection : PanelBase, IDashboardManagedUI
{ {
private Machine machine; private Machine machine;

View File

@@ -4,7 +4,7 @@ using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
using WI; using WI;
public class Panel_MachineDeleteRegistration : PanelBase, IPopupPanel public class Panel_MachineDeleteRegistration : PanelBase, IDashboardManagedUI
{ {
private Machine machine; private Machine machine;

View File

@@ -13,7 +13,7 @@ using TMPro;
namespace CHN namespace CHN
{ {
public class Panel_Menu : PanelBase, IPopupPanel public class Panel_Menu : PanelBase, IDashboardManagedUI
{ {
RectTransform TabButtonList; RectTransform TabButtonList;

View File

@@ -5,7 +5,7 @@ using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
using WI; using WI;
public class Panel_MoldDepartment : PanelBase, IProductionPanel public class Panel_MoldDepartment : PanelBase, IDashboardUI
{ {
private Panel_Effect effect; private Panel_Effect effect;
public RectTransform Content; public RectTransform Content;

View File

@@ -7,7 +7,7 @@ using UnityEngine;
using WI; using WI;
using static MQTT; using static MQTT;
public class Panel_ProductionStatus : PanelBase, IPopupPanel public class Panel_ProductionStatus : PanelBase, IDashboardManagedUI
{ {
TextMeshProUGUI Text_DayAndTime; TextMeshProUGUI Text_DayAndTime;
TextMeshProUGUI worknm; TextMeshProUGUI worknm;
@@ -17,7 +17,7 @@ public class Panel_ProductionStatus : PanelBase, IPopupPanel
TextMeshProUGUI goodqty; TextMeshProUGUI goodqty;
TextMeshProUGUI badqty; TextMeshProUGUI badqty;
ProductionStatusManager productionStatusManager; DataManager dataManager;
[SerializeField] [SerializeField]
float loopTime = 3; float loopTime = 3;
@@ -33,7 +33,7 @@ public class Panel_ProductionStatus : PanelBase, IPopupPanel
public override void AfterAwake() public override void AfterAwake()
{ {
productionStatusManager = FindSingle<ProductionStatusManager>(); dataManager = FindSingle<DataManager>();
} }
private void Update() private void Update()
@@ -43,7 +43,7 @@ public class Panel_ProductionStatus : PanelBase, IPopupPanel
if (!isUpdate) if (!isUpdate)
return; return;
List<CompleteInfo> completeInfos = productionStatusManager.productionStatusInfos; List<CompleteInfo> completeInfos = dataManager.productionStatusInfos;
if (completeInfos.Count == 0) if (completeInfos.Count == 0)
return; return;
@@ -65,7 +65,7 @@ public class Panel_ProductionStatus : PanelBase, IPopupPanel
SetPanelText(completeInfo); SetPanelText(completeInfo);
productionStatusInfoNum += 1; productionStatusInfoNum += 1;
if (productionStatusInfoNum >= productionStatusManager.productionStatusInfos.Count) if (productionStatusInfoNum >= dataManager.productionStatusInfos.Count)
{ {
productionStatusInfoNum = 0; productionStatusInfoNum = 0;
} }
@@ -75,7 +75,7 @@ public class Panel_ProductionStatus : PanelBase, IPopupPanel
} }
public void SetProductionStatus(Machine selectMachine) public void SetProductionStatus(Machine selectMachine)
{ {
var completeInfos = productionStatusManager.productionStatusInfos; var completeInfos = dataManager.productionStatusInfos;
for (int i = 0; i < completeInfos.Count; i++) for (int i = 0; i < completeInfos.Count; i++)
{ {
if (completeInfos[i].workcd == selectMachine.code) if (completeInfos[i].workcd == selectMachine.code)

View File

@@ -6,7 +6,7 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using static MQTT; using static MQTT;
public class Panel_ThermostatControl : PanelBase, IPopupPanel public class Panel_ThermostatControl : PanelBase, IDashboardManagedUI
{ {
private string machineCode; private string machineCode;
private Dictionary<string, string> thermostatValues = new(); private Dictionary<string, string> thermostatValues = new();

View File

@@ -145,7 +145,7 @@ namespace CHN
} }
} }
public void SetFacilityCode(SimpleField simple, Machine machine) public void SetFacilityCode(MachineDataSet machineDataSet, Machine machine)
{ {
facilityCode = machine.code; facilityCode = machine.code;

View File

@@ -7,7 +7,7 @@ using UnityEngine.UI;
using static MQTT; using static MQTT;
using WI; using WI;
public class Panel_WorkProgressStatus : PanelBase, IProductionPanel public class Panel_WorkProgressStatus : PanelBase, IDashboardUI
{ {
public Dictionary<string, UI_WorkStatusItem> workStatuses = new Dictionary<string, UI_WorkStatusItem>(); public Dictionary<string, UI_WorkStatusItem> workStatuses = new Dictionary<string, UI_WorkStatusItem>();
private Panel_Effect effect; private Panel_Effect effect;

View File

@@ -126,7 +126,7 @@ namespace CHN
onDateData?.Invoke(startDate, endDate, facilityCode); onDateData?.Invoke(startDate, endDate, facilityCode);
} }
} }
public void SetFacilityCode(SimpleField simple, Machine machine) public void SetFacilityCode(MachineDataSet machineDataSet, Machine machine)
{ {
facilityCode = machine.code; facilityCode = machine.code;

View File

@@ -1,7 +0,0 @@
using UnityEngine;
using UnityEngine.Pool;
public interface IPooledObject
{
public IObjectPool<Component> Pool { get; set; }
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: c4d1e97290e35a244b09f48a43c05304
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -10,30 +10,49 @@ using Newtonsoft.Json;
namespace CHN namespace CHN
{ {
public class FloorProductionResult
{
public List<CompleteInfo> FirstFloor;
public List<CompleteInfo> SecondFloor;
public List<CompleteInfo> FinalInspection;
}
public class DataManager : MonoBehaviour, ISingle public class DataManager : MonoBehaviour, ISingle
{ {
private Building building;
private Machine[] machines; private Machine[] machines;
private string dataOrder;
public List<CompleteInfo> productionStatusInfos = new();
private Dictionary<string, MQTTDataSet> mqttDataTable = new();
private Dictionary<string, KPIDataSet> kpiDataTable = new();
public SDictionary<string, MachineDataSet> includeFields = new();
public Dictionary<string, MachineDataSet> simpleFields = new();
private HashSet<string> samples = new();
private List<ThermostatData> thermostatDatas = new(); private List<ThermostatData> thermostatDatas = new();
private Thermostat currentThermostat; private Thermostat currentThermostat;
public Action<List<CompleteInfo>> onFirstFloorInfo;
public Action<List<CompleteInfo>> onSecondFloorInfo;
public Action<List<CompleteInfo>, List<CompleteInfo>> onTotalFloorInfo;
public Action<List<CompleteInfo>> onFinalInspectionData;
public Action<List<WorkShopInfo>> onWorkShopInfo;
public Action<List<MachineDataSet>> onKPIInfo;
public Action<Machine, MachineDataSet> onCompleteInfo;
public Action<Machine, MachineDataSet> onSimpleInfo;
public Action<ThermostatData> onSetThermostatData; public Action<ThermostatData> onSetThermostatData;
public Action<Machine, SimpleField> onCompleteInfo;
public Action<Machine, SimpleField> onSimpleInfo;
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();
public KPIData kpiData;
private string dataOrder;
public override void AfterAwake() public override void AfterAwake()
{ {
dataOrder = Resources.Load<TextAsset>("DataOrder").text; dataOrder = Resources.Load<TextAsset>("DataOrder").text;
building = FindSingle<Building>();
machines = FindObjectsByType<Machine>(FindObjectsSortMode.None); machines = FindObjectsByType<Machine>(FindObjectsSortMode.None);
foreach (var machine in machines) foreach (var machine in machines)
@@ -41,60 +60,102 @@ namespace CHN
if (string.IsNullOrEmpty(machine.code)) if (string.IsNullOrEmpty(machine.code))
continue; continue;
if (mqttDataTable.ContainsKey(GapRemove(machine.code))) var key = GapRemove(machine.code);
continue;
mqttDataTable.Add(GapRemove(machine.code), new()); mqttDataTable.TryAdd(key, new MQTTDataSet());
kpiDataTable.TryAdd(key, new KPIDataSet());
if (kpiDataTable.ContainsKey(GapRemove(machine.code)))
continue;
kpiDataTable.Add(GapRemove(machine.code), new());
} }
var fileds = typeof(UsageMQTTData).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); var mqttDataFields = typeof(MQTTDataSet).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
var typeFields = typeof(UsageKPIData).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); var kpiDataFields = typeof(KPIDataSet).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
for (int i = 0; i < 4; i++) for (int i = 0; i < 4; i++)
{ {
samples.Add(fileds[i].Name); samples.Add(mqttDataFields[i].Name);
} }
for (int i = 0; i < 3; i++) for (int i = 0; i < 3; i++)
{ {
samples.Add(typeFields[i].Name); samples.Add(kpiDataFields[i].Name);
} }
} }
public void SetWorkshopStatus(List<WorkShopInfo> workshopInfos)
{
onWorkShopInfo?.Invoke(workshopInfos);
}
public void SetKPIData(MachineKPIData machineKPIData) #region · · UI()
public void SetFloorProductionStatus(List<CompleteInfo> completeInfos)
{
var floorResult = BuildFloorProductionData(completeInfos);
NotifyFloorProductionData(floorResult);
productionStatusInfos.Clear();
productionStatusInfos.AddRange(floorResult.FirstFloor);
productionStatusInfos.AddRange(floorResult.SecondFloor);
}
private FloorProductionResult BuildFloorProductionData(List<CompleteInfo> completeInfos)
{
var firstFloorDict = new Dictionary<string, CompleteInfo>();
var secondFloorDict = new Dictionary<string, CompleteInfo>();
foreach (var info in completeInfos)
{
UpdateFloorInfo(building.floors[0], info, firstFloorDict);
UpdateFloorInfo(building.floors[1], info, secondFloorDict);
}
return new FloorProductionResult
{
FirstFloor = firstFloorDict.Values.ToList(),
SecondFloor = secondFloorDict.Values.ToList(),
FinalInspection = completeInfos.Where(i => i.wccd == "W30").ToList()
};
}
private void NotifyFloorProductionData(FloorProductionResult result)
{
onFirstFloorInfo?.Invoke(result.FirstFloor);
onSecondFloorInfo?.Invoke(result.SecondFloor);
onTotalFloorInfo?.Invoke(result.FirstFloor, result.SecondFloor);
onFinalInspectionData?.Invoke(result.FinalInspection);
}
private void UpdateFloorInfo(Floor floor, CompleteInfo completeInfo, Dictionary<string, CompleteInfo> floorInfo)
{
if (!floor.machines.Any(m => m.code == completeInfo.workcd))
return;
floorInfo[completeInfo.workcd] = completeInfo;
}
#endregion
#region KPI Data MQTT Data
public void UpdateKPIData(MachineKPIData machineKPIData)
{ {
foreach (var rows in machineKPIData.data.rows) foreach (var rows in machineKPIData.data.rows)
{ {
var id = rows.workcd; var name = GapRemove(rows.workcd);
var name = GapRemove(id);
if (kpiDataTable.ContainsKey(name)) if (kpiDataTable.ContainsKey(name))
{ {
kpiDataTable[name] = SetUsageKPIData(rows); kpiDataTable[name] = MapKPIDataSet(rows);
} }
} }
SetMachineData(); UpdateAllMachineData();
} }
public void MachineMatching(List<CompleteInfo> machineInfos) public void UpdateMQTTData(List<CompleteInfo> machineInfos)
{ {
foreach (CompleteInfo info in machineInfos) foreach (CompleteInfo info in machineInfos)
{ {
var id = info.workcd; var name = GapRemove(info.workcd);
var name = GapRemove(id);
if (mqttDataTable.ContainsKey(name)) if (mqttDataTable.ContainsKey(name))
{ {
mqttDataTable[name] = SetUsageMQTTData(info); mqttDataTable[name] = MapMQTTDataSet(info);
} }
} }
SetMachineData(); UpdateAllMachineData();
} }
private void UpdateAllMachineData()
private void SetMachineData()
{ {
foreach (var machine in machines) foreach (var machine in machines)
{ {
@@ -102,32 +163,44 @@ namespace CHN
return; return;
var machineName = GapRemove(machine.code); var machineName = GapRemove(machine.code);
var field = GetOrCreateMachineDataSet(machineName);
if (!includeFields.ContainsKey(machineName)) if (mqttDataTable.TryGetValue(machineName, out var mqtt))
{ field.machineInfo = mqtt;
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) if (kpiDataTable.TryGetValue(machineName, out var kpi))
{ field.kpiDataInfo = kpi;
includeFields[machineName].machineInfo = mqttDataTable[machineName];
}
if (kpiDataTable.Count != 0)
{
includeFields[machineName].kpiDataInfo = kpiDataTable[machineName];
}
} }
var newIncludeFields = SortListByWorkcd(includeFields.Values.ToList()); var newIncludeFields = SortListByWorkcd(includeFields.Values.ToList());
onKPIInfo.Invoke(newIncludeFields); onKPIInfo.Invoke(newIncludeFields);
} }
private MachineDataSet GetOrCreateMachineDataSet(string machineName)
{
if (!includeFields.TryGetValue(machineName, out var field))
{
field = new MachineDataSet
{
machineName = machineName,
machineInfo = new MQTTDataSet(),
kpiDataInfo = new KPIDataSet(),
simpleField = samples
};
includeFields.Add(machineName, field);
}
return field;
}
#endregion
#region
public void MachineDataSetChange(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 GetSimpleCompleteData(Machine machine) public void GetSimpleCompleteData(Machine machine)
{ {
@@ -141,7 +214,7 @@ namespace CHN
} }
else else
{ {
var simpleTest = new SimpleField(); var simpleTest = new MachineDataSet();
simpleTest.machineName = machineName; simpleTest.machineName = machineName;
simpleTest.machineInfo = mqttDataTable[machineName]; simpleTest.machineInfo = mqttDataTable[machineName];
simpleTest.kpiDataInfo = kpiDataTable[machineName]; simpleTest.kpiDataInfo = kpiDataTable[machineName];
@@ -152,16 +225,6 @@ namespace CHN
onSimpleInfo?.Invoke(machine, includeFields[machineName]); 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) public void GetCompleteInfo(Machine machine)
{ {
if (string.IsNullOrEmpty(machine.code)) if (string.IsNullOrEmpty(machine.code))
@@ -170,69 +233,9 @@ namespace CHN
var simpleField = includeFields[machineName]; var simpleField = includeFields[machineName];
onCompleteInfo?.Invoke(machine, simpleField); onCompleteInfo?.Invoke(machine, simpleField);
} }
#endregion
string GapRemove(string name) #region /
{
return Regex.Replace(name, @"\s", "");
}
private UsageKPIData SetUsageKPIData(KPIData kpiData)
{
var usageKPIData = new UsageKPIData();
usageKPIData.eorate = kpiData.eorate;
usageKPIData.porate = kpiData.porate;
usageKPIData.goodqtyrate = kpiData.goodqtyrate;
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;
usageMQTTData.moldcd = completeInfos.moldcd;
usageMQTTData.moldseq = completeInfos.moldseq;
return usageMQTTData;
}
public List<SimpleField> SortListByWorkcd(List<SimpleField> target)
{
List<string> workcdOrder = JsonConvert.DeserializeObject<List<string>>(dataOrder);
Dictionary<string, int> orderMap = workcdOrder
.Select((workcd, index) => new { workcd, index })
.ToDictionary(x => x.workcd, x => x.index);
return target
.OrderBy(field => orderMap[field.machineName])
.ToList();
}
public void SetThermostatDataList(List<ThermostatData> thermostatDatas) public void SetThermostatDataList(List<ThermostatData> thermostatDatas)
{ {
this.thermostatDatas = thermostatDatas; this.thermostatDatas = thermostatDatas;
@@ -250,26 +253,79 @@ namespace CHN
onSetThermostatData(thermostatDatas.Find(x => x.workcd == currentThermostat.machineCode)); onSetThermostatData(thermostatDatas.Find(x => x.workcd == currentThermostat.machineCode));
} }
#endregion
string GapRemove(string name)
{
return Regex.Replace(name, @"\s", "");
}
private KPIDataSet MapKPIDataSet(KPIData kpiData)
{
var kpiDataSet = new KPIDataSet();
kpiDataSet.eorate = kpiData.eorate;
kpiDataSet.porate = kpiData.porate;
kpiDataSet.goodqtyrate = kpiData.goodqtyrate;
return kpiDataSet;
}
private MQTTDataSet MapMQTTDataSet(CompleteInfo completeInfos)
{
var mqttDataSet = new MQTTDataSet();
mqttDataSet.wordno = completeInfos.wordno;
mqttDataSet.workdt = completeInfos.workdt;
mqttDataSet.daynight = completeInfos.daynight;
mqttDataSet.workcd = completeInfos.workcd;
mqttDataSet.worknm = completeInfos.worknm;
mqttDataSet.workseq = completeInfos.workseq;
mqttDataSet.statusnm = completeInfos.statusnm;
mqttDataSet.itemcd = completeInfos.itemcd;
mqttDataSet.itemdesc = completeInfos.itemdesc;
mqttDataSet.pjtcd = completeInfos.pjtcd;
mqttDataSet.matcd = completeInfos.matcd;
mqttDataSet.cycletime = completeInfos.cycletime;
mqttDataSet.cavity = completeInfos.cavity;
mqttDataSet.planqty = completeInfos.planqty;
mqttDataSet.goalqty = completeInfos.goalqty;
mqttDataSet.workqty = completeInfos.workqty;
mqttDataSet.goodqty = completeInfos.goodqty;
mqttDataSet.badqty = completeInfos.badqty;
mqttDataSet.badrate = completeInfos.badrate;
mqttDataSet.efficiency = completeInfos.efficiency;
mqttDataSet.progressrate = completeInfos.progressrate;
mqttDataSet.sttm = completeInfos.sttm;
mqttDataSet.totm = completeInfos.totm;
mqttDataSet.moldcd = completeInfos.moldcd;
mqttDataSet.moldseq = completeInfos.moldseq;
return mqttDataSet;
}
public List<MachineDataSet> SortListByWorkcd(List<MachineDataSet> target)
{
List<string> workcdOrder = JsonConvert.DeserializeObject<List<string>>(dataOrder);
Dictionary<string, int> orderMap = workcdOrder.Select((workcd, index) => new { workcd, index }).ToDictionary(x => x.workcd, x => x.index);
return target.OrderBy(field => orderMap[field.machineName]).ToList();
}
} }
[Serializable] [Serializable]
public class SimpleField public class MachineDataSet
{ {
public string machineName; public string machineName;
public UsageKPIData kpiDataInfo;
public UsageMQTTData machineInfo;
public HashSet<string> simpleField; public HashSet<string> simpleField;
public KPIDataSet kpiDataInfo;
public MQTTDataSet machineInfo;
} }
[Serializable] [Serializable]
public class UsageKPIData public class KPIDataSet
{ {
public string eorate; public string eorate;
public string porate; public string porate;
public string goodqtyrate; public string goodqtyrate;
} }
[Serializable] [Serializable]
public class UsageMQTTData public class MQTTDataSet
{ {
public string wordno; public string wordno;
public string workdt; public string workdt;
@@ -297,5 +353,4 @@ namespace CHN
public string moldcd; public string moldcd;
public string moldseq; public string moldseq;
} }
}
}

View File

@@ -20,9 +20,8 @@ namespace CHN
var libraryManager = FindSingle<LibraryManager>(); var libraryManager = FindSingle<LibraryManager>();
var mqttManager = FindSingle<MQTT>(); var mqttManager = FindSingle<MQTT>();
var httpManager = FindSingle<HTTPRequester>(); var httpManager = FindSingle<HTTPRequester>();
var machineKPIManager = FindSingle<MachineKPIManager>(); var machineUIManager = FindSingle<MachineUIManager>();
var completeTimeManager = FindSingle<CompleteTimeAlarmManager>(); var completeTimeManager = FindSingle<CompleteTimeAlarmManager>();
var productionStatusManager = FindSingle<ProductionStatusManager>();
var workConditionsManager = FindSingle<WorkConditionsManager>(); var workConditionsManager = FindSingle<WorkConditionsManager>();
var workTimeManager = FindSingle<WorkTimeManager>(); var workTimeManager = FindSingle<WorkTimeManager>();
var highLightManager = FindSingle<HighLighterManager>(); var highLightManager = FindSingle<HighLighterManager>();
@@ -32,7 +31,7 @@ namespace CHN
var topCanvas = FindSingle<Canvas_Top>(); var topCanvas = FindSingle<Canvas_Top>();
var popupCanvas = FindSingle<Canvas_Popup>(); var popupCanvas = FindSingle<Canvas_Popup>();
var datamanager = FindSingle<DataManager>(); var datamanager = FindSingle<DataManager>();
var raycaster = FindSingle<CHNRaycaster>(); var machineClickManager = FindSingle<MachineClickManager>();
controller.onChangeViewMode += topCanvas.panel_toolbar.SetChangeViewButtonState; controller.onChangeViewMode += topCanvas.panel_toolbar.SetChangeViewButtonState;
building.onChangeFloor += viewManager.ChangeViewWithFloorControl; building.onChangeFloor += viewManager.ChangeViewWithFloorControl;
@@ -69,12 +68,12 @@ namespace CHN
popupCanvas.panel_protocolsetting.onUpdateMachine += libraryManager.MatchingMachine; popupCanvas.panel_protocolsetting.onUpdateMachine += libraryManager.MatchingMachine;
popupCanvas.panel_library.onClickLibraryButton += popupCanvas.MachineDashBoardOpen; popupCanvas.panel_library.onClickLibraryButton += popupCanvas.MachineDashBoardOpen;
popupCanvas.panel_library.onClickLibraryButton += highLightManager.ClickMachinToHighlight; popupCanvas.panel_library.onClickLibraryButton += highLightManager.ClickMachinToHighlight;
popupCanvas.panel_library.onClickLibraryButton += highLightManager.SetTargetPosToMachine; popupCanvas.panel_library.onClickLibraryButton += viewManager.SetTargetPosToMachine;
popupCanvas.panel_library.onClickLibraryButton += popupCanvas.panel_productionstatus.SetProductionStatus; popupCanvas.panel_library.onClickLibraryButton += popupCanvas.panel_productionstatus.SetProductionStatus;
popupCanvas.panel_library.onClickDeleteRegistration += popupCanvas.panel_machinedeleteregistration.SetData; popupCanvas.panel_library.onClickDeleteRegistration += popupCanvas.panel_machinedeleteregistration.SetData;
popupCanvas.panel_library.onClickCorrection += popupCanvas.panel_machinecorrection.SetData; popupCanvas.panel_library.onClickCorrection += popupCanvas.panel_machinecorrection.SetData;
popupCanvas.simpleView += datamanager.SimpleFiledChange; popupCanvas.simpleView += datamanager.MachineDataSetChange;
popupCanvas.onClickSimple += datamanager.GetSimpleCompleteData; popupCanvas.onClickSimple += datamanager.GetSimpleCompleteData;
popupCanvas.onClickDetail += datamanager.GetCompleteInfo; popupCanvas.onClickDetail += datamanager.GetCompleteInfo;
popupCanvas.onOpenDashboard += popupCanvas.panel_completealramhistory.Close; popupCanvas.onOpenDashboard += popupCanvas.panel_completealramhistory.Close;
@@ -124,15 +123,15 @@ namespace CHN
libraryManager.onUpdateMachineFilters += popupCanvas.panel_library.UpdateFileterList; libraryManager.onUpdateMachineFilters += popupCanvas.panel_library.UpdateFileterList;
libraryManager.onLibraryFilterigComplete += popupCanvas.panel_library.AddLibrarayButtons; libraryManager.onLibraryFilterigComplete += popupCanvas.panel_library.AddLibrarayButtons;
productionStatusManager.onFirstFloorInfo += popupCanvas.panel_injectionproduction.SetProductionStatus; datamanager.onFirstFloorInfo += popupCanvas.panel_injectionproduction.SetProductionStatus;
productionStatusManager.onSecondFloorInfo += popupCanvas.panel_assemblyproduction.SetProductionStatus; datamanager.onSecondFloorInfo += popupCanvas.panel_assemblyproduction.SetProductionStatus;
productionStatusManager.onTotalFloorInfo += popupCanvas.panel_totalproduction.SetTotalProductionStatus; datamanager.onTotalFloorInfo += popupCanvas.panel_totalproduction.SetTotalProductionStatus;
productionStatusManager.onFinalInspectionData += popupCanvas.panel_finalinspection.SetProductionStatus; datamanager.onFinalInspectionData += popupCanvas.panel_finalinspection.SetProductionStatus;
productionStatusManager.onWorkShopInfo += popupCanvas.panel_workprogressstatus.SetWorkProgressStatus; datamanager.onWorkShopInfo += popupCanvas.panel_workprogressstatus.SetWorkProgressStatus;
datamanager.onSimpleInfo += popupCanvas.SimpleView; datamanager.onSimpleInfo += popupCanvas.SimpleView;
datamanager.onCompleteInfo += popupCanvas.DetailView; datamanager.onCompleteInfo += popupCanvas.DetailView;
datamanager.onKPIInfo += machineKPIManager.SetMachineKPI; datamanager.onKPIInfo += machineUIManager.SetMachineKPI;
datamanager.onKPIInfo += popupCanvas.panel_totalproduction.SetMachineEffectiveness; datamanager.onKPIInfo += popupCanvas.panel_totalproduction.SetMachineEffectiveness;
datamanager.onSetThermostatData += popupCanvas.panel_thermostatcontrol.SetData; datamanager.onSetThermostatData += popupCanvas.panel_thermostatcontrol.SetData;
@@ -141,31 +140,31 @@ namespace CHN
mqttManager.onNotloadData += popupCanvas.panel_assemblyproduction.ActiveLoadingImage; mqttManager.onNotloadData += popupCanvas.panel_assemblyproduction.ActiveLoadingImage;
mqttManager.onNotloadData += popupCanvas.panel_workprogressstatus.ActiveLoadingImage; mqttManager.onNotloadData += popupCanvas.panel_workprogressstatus.ActiveLoadingImage;
mqttManager.onNotloadData += popupCanvas.panel_totalproduction.ActiveLoadingImage; mqttManager.onNotloadData += popupCanvas.panel_totalproduction.ActiveLoadingImage;
mqttManager.onMachineData += datamanager.MachineMatching; mqttManager.onMachineData += datamanager.UpdateMQTTData;
mqttManager.onMachineData += popupCanvas.panel_completealramhistory.SetAlarmInfoItems; mqttManager.onMachineData += popupCanvas.panel_completealramhistory.SetAlarmInfoItems;
mqttManager.onMachineData += productionStatusManager.SetFloorProductionStatus; mqttManager.onMachineData += datamanager.SetFloorProductionStatus;
mqttManager.onWorkshopData += productionStatusManager.SetWorkProgressStatus; mqttManager.onWorkshopData += datamanager.SetWorkshopStatus;
mqttManager.onWorkshopData += popupCanvas.panel_totalproduction.SetWorkProgressStatus; mqttManager.onWorkshopData += popupCanvas.panel_totalproduction.SetWorkProgressStatus;
mqttManager.onThermostatData += datamanager.SetThermostatDataList; mqttManager.onThermostatData += datamanager.SetThermostatDataList;
completeTimeManager.onActiveHighLighter += popupCanvas.MachineDashBoardOpen; completeTimeManager.onActiveHighLighter += popupCanvas.MachineDashBoardOpen;
completeTimeManager.onActiveHighLighter += highLightManager.ClickMachinToHighlight; completeTimeManager.onActiveHighLighter += highLightManager.ClickMachinToHighlight;
completeTimeManager.onActiveHighLighter += highLightManager.SetTargetPosToMachine; completeTimeManager.onActiveHighLighter += viewManager.SetTargetPosToMachine;
completeTimeManager.onActiveHighLighter += popupCanvas.panel_productionstatus.SetProductionStatus; completeTimeManager.onActiveHighLighter += popupCanvas.panel_productionstatus.SetProductionStatus;
httpManager.onMachineKPIData += datamanager.SetKPIData; httpManager.onMachineKPIData += datamanager.UpdateKPIData;
httpManager.onWorkConditionsItemCodeData += popupCanvas.panel_workconditionanalysis.SetWorkItemCodeDropDown; httpManager.onWorkConditionsItemCodeData += popupCanvas.panel_workconditionanalysis.SetWorkItemCodeDropDown;
httpManager.onWorkTimeItemCodeData += popupCanvas.panel_worktimeanalysis.SetWorkItemCodeDropDown; httpManager.onWorkTimeItemCodeData += popupCanvas.panel_worktimeanalysis.SetWorkItemCodeDropDown;
httpManager.onSendWorkConditionsData += workConditionsManager.SetWorkConditionsData; httpManager.onSendWorkConditionsData += workConditionsManager.SetWorkConditionsData;
httpManager.onSendWorkTimeData += workTimeManager.SetWorkTimeData; httpManager.onSendWorkTimeData += workTimeManager.SetWorkTimeData;
machineKPIManager.onClickKPIToMachine += popupCanvas.MachineDashBoardOpen; machineUIManager.onClickKPIToMachine += popupCanvas.MachineDashBoardOpen;
machineKPIManager.onClickKPIToMachine += highLightManager.ClickMachinToHighlight; machineUIManager.onClickKPIToMachine += highLightManager.ClickMachinToHighlight;
machineKPIManager.onClickKPIToMachine += popupCanvas.panel_productionstatus.SetProductionStatus; machineUIManager.onClickKPIToMachine += popupCanvas.panel_productionstatus.SetProductionStatus;
machineKPIManager.onClickKPIToData += popupCanvas.panel_machinedata.SetMachineData; machineUIManager.onClickKPIToData += popupCanvas.panel_machinedata.SetMachineData;
machineKPIManager.onClickKPIToData += popupCanvas.panel_detaildashboard.SetDetailDashBoardData; machineUIManager.onClickKPIToData += popupCanvas.panel_detaildashboard.SetDetailDashBoardData;
machineKPIManager.onClickKPIToData += popupCanvas.panel_workconditionanalysis.SetFacilityCode; machineUIManager.onClickKPIToData += popupCanvas.panel_workconditionanalysis.SetFacilityCode;
machineKPIManager.onClickKPIToData += popupCanvas.panel_worktimeanalysis.SetFacilityCode; machineUIManager.onClickKPIToData += popupCanvas.panel_worktimeanalysis.SetFacilityCode;
workConditionsManager.onCompleteLoadData += popupCanvas.panel_workconditionanalysis.SetWorkConditionsData; workConditionsManager.onCompleteLoadData += popupCanvas.panel_workconditionanalysis.SetWorkConditionsData;
workConditionsManager.onSendMainChartData += popupCanvas.panel_workconditionanalysis.SetChartData; workConditionsManager.onSendMainChartData += popupCanvas.panel_workconditionanalysis.SetChartData;
@@ -175,11 +174,11 @@ namespace CHN
thermostatIconManager.onClickThermostatIcon += popupCanvas.panel_thermostatcontrol.SettingThermostatData; thermostatIconManager.onClickThermostatIcon += popupCanvas.panel_thermostatcontrol.SettingThermostatData;
raycaster.onLeftClickMachine += popupCanvas.MachineDashBoardOpen; machineClickManager.onLeftClickMachine += popupCanvas.MachineDashBoardOpen;
raycaster.onLeftClickMachine += highLightManager.ClickMachinToHighlight; machineClickManager.onLeftClickMachine += highLightManager.ClickMachinToHighlight;
raycaster.onLeftClickMachine += popupCanvas.panel_productionstatus.SetProductionStatus; machineClickManager.onLeftClickMachine += popupCanvas.panel_productionstatus.SetProductionStatus;
raycaster.onLeftClickArea += highLightManager.ClickArea; machineClickManager.onLeftClickArea += highLightManager.ClickArea;
optionManager.onCompletedLoadOption += popupCanvas.panel_controlsetting.InitOptionSetting; optionManager.onCompletedLoadOption += popupCanvas.panel_controlsetting.InitOptionSetting;
optionManager.onCompletedLoadOption += popupCanvas.panel_protocolsetting.InitOptionSetting; optionManager.onCompletedLoadOption += popupCanvas.panel_protocolsetting.InitOptionSetting;

View File

@@ -6,7 +6,7 @@ using System.Linq;
namespace CHN namespace CHN
{ {
public class CHNRaycaster : MonoBehaviour, ISingle public class MachineClickManager : MonoBehaviour, ISingle
{ {
OrbitalController controller; OrbitalController controller;
public List<Machine> machines = new List<Machine>(); public List<Machine> machines = new List<Machine>();

View File

@@ -8,7 +8,7 @@ using WI;
namespace CHN namespace CHN
{ {
public class MachineKPIManager : MonoBehaviour, ISingle public class MachineUIManager : MonoBehaviour, ISingle
{ {
private OrbitalController cam; private OrbitalController cam;
@@ -20,7 +20,7 @@ namespace CHN
private List<UI_MachineKPI> kpis = new List<UI_MachineKPI>(); private List<UI_MachineKPI> kpis = new List<UI_MachineKPI>();
public Action<Machine> onClickKPIToMachine; public Action<Machine> onClickKPIToMachine;
public Action<SimpleField, Machine> onClickKPIToData; public Action<MachineDataSet, Machine> onClickKPIToData;
public float defaultNameHeight; public float defaultNameHeight;
public Vector3 originScale; public Vector3 originScale;
@@ -41,7 +41,7 @@ namespace CHN
} }
#region Machine #region Machine
public void SetMachineKPI(List<SimpleField> machineData) public void SetMachineKPI(List<MachineDataSet> machineData)
{ {
cam = FindSingle<OrbitalController>(); cam = FindSingle<OrbitalController>();
prefab_MachineKPI = Resources.Load<UI_MachineKPI>("Prefabs/UI/PRF_UI_MachineKPI"); prefab_MachineKPI = Resources.Load<UI_MachineKPI>("Prefabs/UI/PRF_UI_MachineKPI");

View File

@@ -6,6 +6,11 @@ using WI;
namespace CHN namespace CHN
{ {
public interface IPooledObject
{
public IObjectPool<Component> Pool { get; set; }
}
public class ObjectPoolManager : MonoBehaviour, ISingle public class ObjectPoolManager : MonoBehaviour, ISingle
{ {
[Serializable] [Serializable]

View File

@@ -122,6 +122,33 @@ public class ViewManager : MonoBehaviour, ISingle
} }
} }
public void SetTargetPosToMachine(Machine machine)
{
if (controller.viewMode != ViewMode.PerspectiveView)
{
controller.SetViewMode(ViewMode.PerspectiveView);
}
var building = FindSingle<Building>();
int changeFloor = building.floors[0].floorIndex;
int libraryMachineFloor = machine.GetMachineFloorIndex();
if (libraryMachineFloor > changeFloor)
{
changeFloor = libraryMachineFloor;
}
var centerPos = machine.centerPos;
var slider = FindSingle<Canvas_Popup>().panel_floorcontrol;
slider.ChangeValueFromOutside(changeFloor);
controller.option.currentAzimuth = machine.focusAzimuth;
controller.option.currentElevation = machine.focusElevation;
controller.option.currentDistance = machine.focusDistance;
controller.SetTargetPos(centerPos);
}
public void ChangeViewWithFloorControl(Floor currentFloor, Vector3 pos) public void ChangeViewWithFloorControl(Floor currentFloor, Vector3 pos)
{ {
var startPos = building.currentFloor.StartPoint.position; var startPos = building.currentFloor.StartPoint.position;

View File

@@ -9,10 +9,10 @@ namespace CHN
{ {
public class Canvas_Popup : CanvasBase public class Canvas_Popup : CanvasBase
{ {
public List<IPopupPanel> popupPanels = new List<IPopupPanel>(); public List<IDashboardManagedUI> popupPanels = new List<IDashboardManagedUI>();
public List<PanelBase> activePanels = new List<PanelBase>(); public List<PanelBase> activePanels = new List<PanelBase>();
public List<IProductionPanel> productionPanels = new List<IProductionPanel>(); public List<IDashboardUI> productionPanels = new List<IDashboardUI>();
public PanelBase currentProductionPanel; public PanelBase currentProductionPanel;
public Panel_CompleteAlramHistory panel_completealramhistory; public Panel_CompleteAlramHistory panel_completealramhistory;
@@ -85,8 +85,8 @@ namespace CHN
productionPanels.Add(panel_assemblyprogressline); productionPanels.Add(panel_assemblyprogressline);
productionPanels.Add(panel_molddepartment); productionPanels.Add(panel_molddepartment);
popupPanels = transform.GetComponentsInChildren<IPopupPanel>(true).ToList(); popupPanels = transform.GetComponentsInChildren<IDashboardManagedUI>(true).ToList();
popupPanels.RemoveAll(item => productionPanels.Contains(item as IProductionPanel)); popupPanels.RemoveAll(item => productionPanels.Contains(item as IDashboardUI));
} }
public void MachineDashBoardOpen(Machine clickMachine) public void MachineDashBoardOpen(Machine clickMachine)
@@ -105,12 +105,12 @@ namespace CHN
onOpenDashboard?.Invoke(); onOpenDashboard?.Invoke();
} }
public void SimpleView(Machine machine, SimpleField data) public void SimpleView(Machine machine, MachineDataSet data)
{ {
machineDashboardTable[machine].SimpleInfoView(data); machineDashboardTable[machine].SimpleInfoView(data);
} }
public void DetailView(Machine machine, SimpleField data) public void DetailView(Machine machine, MachineDataSet data)
{ {
machineDashboardTable[machine].DetailInfoView(machine, data); machineDashboardTable[machine].DetailInfoView(machine, data);
} }
@@ -137,14 +137,14 @@ namespace CHN
if (currentProductionPanel == newPanel) if (currentProductionPanel == newPanel)
return; return;
if (currentProductionPanel is IProductionPanel oldProductionPanel) if (currentProductionPanel is IDashboardUI oldProductionPanel)
{ {
oldProductionPanel.Close(); oldProductionPanel.Close();
} }
currentProductionPanel = newPanel; currentProductionPanel = newPanel;
if (currentProductionPanel is IProductionPanel newProductionPanel) if (currentProductionPanel is IDashboardUI newProductionPanel)
{ {
newProductionPanel.Open(); newProductionPanel.Open();
} }
@@ -160,7 +160,7 @@ namespace CHN
{ {
activePanels.Add(panel); activePanels.Add(panel);
if (popupPanel is IPopupPanel popup) if (popupPanel is IDashboardManagedUI popup)
{ {
popup.Close(); popup.Close();
} }
@@ -171,7 +171,7 @@ namespace CHN
{ {
foreach (var panel in activePanels) foreach (var panel in activePanels)
{ {
if (panel is IPopupPanel popup) if (panel is IDashboardManagedUI popup)
{ {
popup.Open(); popup.Open();
} }

View File

@@ -9,7 +9,7 @@ using System.Linq;
namespace CHN namespace CHN
{ {
public class Panel_CompleteAlramHistory : PanelBase, ISingle, IPopupPanel public class Panel_CompleteAlramHistory : PanelBase, ISingle, IDashboardManagedUI
{ {
public UI_CompleteTimeAlarmInfo prefab_completeTimeAlarmInfo; public UI_CompleteTimeAlarmInfo prefab_completeTimeAlarmInfo;
public ScrollRect ScrollView_CompleteAlramHistory; public ScrollRect ScrollView_CompleteAlramHistory;

View File

@@ -65,7 +65,7 @@ public class Panel_DetailDashBoard : PanelBase
{ {
gameObject.SetActive(true); gameObject.SetActive(true);
} }
public void SetDetailDashBoardData(SimpleField data, Machine machine) public void SetDetailDashBoardData(MachineDataSet data, Machine machine)
{ {
var canvas_popup = FindSingle<Canvas_Popup>(); var canvas_popup = FindSingle<Canvas_Popup>();
if (canvas_popup.isSimpleDashboardAcitve) if (canvas_popup.isSimpleDashboardAcitve)
@@ -74,7 +74,7 @@ public class Panel_DetailDashBoard : PanelBase
SetTextData(data, machine); SetTextData(data, machine);
SetSliderData(data); SetSliderData(data);
} }
private void SetTextData(SimpleField data, Machine machine) private void SetTextData(MachineDataSet data, Machine machine)
{ {
MachineName.SetText(SetNameData(data.machineInfo.worknm, machine.machineName)); MachineName.SetText(SetNameData(data.machineInfo.worknm, machine.machineName));
wordno.SetText(SetTextData(data.machineInfo.wordno)); wordno.SetText(SetTextData(data.machineInfo.wordno));
@@ -108,7 +108,7 @@ public class Panel_DetailDashBoard : PanelBase
SetMoldData(machine, data); SetMoldData(machine, data);
} }
private void SetSliderData(SimpleField data) private void SetSliderData(MachineDataSet data)
{ {
SetSliderValue(Slider_eorate, 100f, DecimalPointCalculate(data.kpiDataInfo.eorate)); SetSliderValue(Slider_eorate, 100f, DecimalPointCalculate(data.kpiDataInfo.eorate));
SetSliderValue(Slider_planqty, DecimalPointCalculate(data.machineInfo.planqty), DecimalPointCalculate(data.machineInfo.planqty)); SetSliderValue(Slider_planqty, DecimalPointCalculate(data.machineInfo.planqty), DecimalPointCalculate(data.machineInfo.planqty));
@@ -122,7 +122,7 @@ public class Panel_DetailDashBoard : PanelBase
SetSliderValue(Slider_porate, 100f, DecimalPointCalculate(data.kpiDataInfo.porate)); SetSliderValue(Slider_porate, 100f, DecimalPointCalculate(data.kpiDataInfo.porate));
SetSliderValue(Slider_goodqtyrate, 100f, DecimalPointCalculate(data.kpiDataInfo.goodqtyrate)); SetSliderValue(Slider_goodqtyrate, 100f, DecimalPointCalculate(data.kpiDataInfo.goodqtyrate));
} }
private void SetMoldData(Machine machine, SimpleField data) private void SetMoldData(Machine machine, MachineDataSet data)
{ {
var moldDataTitle = ""; var moldDataTitle = "";
var moldDataValue = ""; var moldDataValue = "";

View File

@@ -9,7 +9,7 @@ using System;
namespace CHN namespace CHN
{ {
public class Panel_FloorControl : PanelBase, IPopupPanel public class Panel_FloorControl : PanelBase, IDashboardManagedUI
{ {
public List<UI_FloorButton> floorButtons = new List<UI_FloorButton>(); public List<UI_FloorButton> floorButtons = new List<UI_FloorButton>();
public UI_FloorButton prefab_floorButton; public UI_FloorButton prefab_floorButton;

View File

@@ -12,7 +12,7 @@ using System.Linq;
namespace CHN namespace CHN
{ {
public class Panel_Library : PanelBase, ISingle, IPopupPanel public class Panel_Library : PanelBase, ISingle, IDashboardManagedUI
{ {
private GridLayoutGroup Panel_MachineFilter; private GridLayoutGroup Panel_MachineFilter;
private ScrollRect ScrollView_MachineList; private ScrollRect ScrollView_MachineList;

View File

@@ -15,7 +15,7 @@ using static MQTT;
namespace CHN namespace CHN
{ {
public class Panel_MachineDashBoard : PanelBase, IPopupPanel public class Panel_MachineDashBoard : PanelBase, IDashboardManagedUI
{ {
Button Button_Close; Button Button_Close;
Button Button_Simple; Button Button_Simple;
@@ -48,8 +48,8 @@ namespace CHN
Button_Detail.onClick.AddListener(OnClickDetail); Button_Detail.onClick.AddListener(OnClickDetail);
ChangeTabButtonState(Button_Simple); ChangeTabButtonState(Button_Simple);
SetActive(false); SetActive(false);
mqttFields = typeof(UsageMQTTData).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); mqttFields = typeof(MQTTDataSet).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
kpiFields = typeof(UsageKPIData).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); kpiFields = typeof(KPIDataSet).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
} }
private void SimpleViewItem(string field, bool ison) private void SimpleViewItem(string field, bool ison)
@@ -149,18 +149,18 @@ namespace CHN
machineInfoItem.Clear(); machineInfoItem.Clear();
infoItems.Clear(); infoItems.Clear();
} }
public void SimpleInfoView(SimpleField machineInfo) public void SimpleInfoView(MachineDataSet machineDataSet)
{ {
SimpleInfo(mqttFields, machineInfo, machineInfo.machineInfo); SimpleInfo(mqttFields, machineDataSet, machineDataSet.machineInfo);
SimpleInfo(kpiFields, machineInfo, machineInfo.kpiDataInfo); SimpleInfo(kpiFields, machineDataSet, machineDataSet.kpiDataInfo);
OnChangedLock(false); OnChangedLock(false);
} }
private void SimpleInfo(FieldInfo[] fields, SimpleField simpleField, object data) private void SimpleInfo(FieldInfo[] fields, MachineDataSet machineDataSet, object data)
{ {
foreach (var field in fields) foreach (var field in fields)
{ {
if (simpleField.simpleField.Contains(field.Name)) if (machineDataSet.simpleField.Contains(field.Name))
{ {
var item = CreateItem(field); var item = CreateItem(field);
item.transform.SetParent(scrollView_SimpleInfo.content); item.transform.SetParent(scrollView_SimpleInfo.content);
@@ -174,14 +174,14 @@ namespace CHN
} }
} }
public void DetailInfoView(Machine machine, SimpleField simpleField) public void DetailInfoView(Machine machine, MachineDataSet machineDataSets)
{ {
DetailInfo(mqttFields, machine, simpleField, simpleField.machineInfo); DetailInfo(mqttFields, machine, machineDataSets, machineDataSets.machineInfo);
DetailInfo(kpiFields, machine, simpleField, simpleField.kpiDataInfo); DetailInfo(kpiFields, machine, machineDataSets, machineDataSets.kpiDataInfo);
OnChangedLock(true); OnChangedLock(true);
} }
private void DetailInfo(FieldInfo[] fields, Machine machine, SimpleField simpleField, object data) private void DetailInfo(FieldInfo[] fields, Machine machine, MachineDataSet machineDataSet, object data)
{ {
foreach (var field in fields) foreach (var field in fields)
{ {
@@ -194,7 +194,7 @@ namespace CHN
item.transform.SetAsLastSibling(); item.transform.SetAsLastSibling();
var info = (string)field.GetValue(data); var info = (string)field.GetValue(data);
item.Setting(field.Name, info); item.Setting(field.Name, info);
var ison = simpleField.simpleField.Contains(field.Name); var ison = machineDataSet.simpleField.Contains(field.Name);
item.SetAcitveCheckBox(true); item.SetAcitveCheckBox(true);
item.ToggleIsOn(ison); item.ToggleIsOn(ison);
} }

View File

@@ -6,7 +6,7 @@ using UnityEngine;
using UnityEngine.UI; using UnityEngine.UI;
using WI; using WI;
public class Panel_MachineData : PanelBase, IPopupPanel public class Panel_MachineData : PanelBase, IDashboardManagedUI
{ {
private RectTransform DataSelectedButtons; private RectTransform DataSelectedButtons;
@@ -46,7 +46,7 @@ public class Panel_MachineData : PanelBase, IPopupPanel
gameObject.SetActive(false); gameObject.SetActive(false);
} }
public void SetMachineData(SimpleField data, Machine machine) public void SetMachineData(MachineDataSet data, Machine machine)
{ {
if (!machine.code.Contains("IJ")) if (!machine.code.Contains("IJ"))
{ {

View File

@@ -7,7 +7,7 @@ using WI;
namespace CHN namespace CHN
{ {
public class Panel_MiniMap : PanelBase, IPopupPanel public class Panel_MiniMap : PanelBase, IDashboardManagedUI
{ {
OrbitalControllerTarget target; OrbitalControllerTarget target;

View File

@@ -4,7 +4,7 @@ using TMPro;
using System.Collections; using System.Collections;
using UnityEngine.UI; using UnityEngine.UI;
public class Panel_ToolBarAlarm : PanelBase, IPopupPanel public class Panel_ToolBarAlarm : PanelBase, IDashboardManagedUI
{ {
private TextMeshProUGUI Content; private TextMeshProUGUI Content;
public float fadeTime; public float fadeTime;

View File

@@ -22,9 +22,9 @@ public class MachineGroup
public class MachineEffectivenessGroup public class MachineEffectivenessGroup
{ {
public MachineType Type; public MachineType Type;
public List<SimpleField> Infos; public List<MachineDataSet> Infos;
} }
public class Panel_TotalProduction : PanelBase, IProductionPanel public class Panel_TotalProduction : PanelBase, IDashboardUI
{ {
public TextMeshProUGUI CurrentDate; public TextMeshProUGUI CurrentDate;
public TextMeshProUGUI CurrentTime; public TextMeshProUGUI CurrentTime;
@@ -250,7 +250,7 @@ public class Panel_TotalProduction : PanelBase, IProductionPanel
#endregion #endregion
#region MachineEffectivenessUI #region MachineEffectivenessUI
public void SetMachineEffectiveness(List<SimpleField> data) public void SetMachineEffectiveness(List<MachineDataSet> data)
{ {
var allGroups = new List<MachineEffectivenessGroup>(); var allGroups = new List<MachineEffectivenessGroup>();
var allEffectivenessGroup = SplitSimpleFieldList(data); var allEffectivenessGroup = SplitSimpleFieldList(data);
@@ -283,11 +283,11 @@ public class Panel_TotalProduction : PanelBase, IProductionPanel
} }
} }
} }
public List<List<SimpleField>> SplitSimpleFieldList(List<SimpleField> data) public List<List<MachineDataSet>> SplitSimpleFieldList(List<MachineDataSet> data)
{ {
List<List<SimpleField>> result = new List<List<SimpleField>>(); List<List<MachineDataSet>> result = new List<List<MachineDataSet>>();
List<SimpleField> injectionResult = new List<SimpleField>(); List<MachineDataSet> injectionResult = new List<MachineDataSet>();
List<SimpleField> assemblyResult = new List<SimpleField>(); List<MachineDataSet> assemblyResult = new List<MachineDataSet>();
for (int i = 0; i < data.Count; i++) for (int i = 0; i < data.Count; i++)
@@ -313,7 +313,7 @@ public class Panel_TotalProduction : PanelBase, IProductionPanel
return result; return result;
} }
public static List<SimpleField> SortListByReference(List<SimpleField> target, List<CompleteInfo> reference) public static List<MachineDataSet> SortListByReference(List<MachineDataSet> target, List<CompleteInfo> reference)
{ {
// CompleteInfo의 workcd 기준으로 정렬 순서 매핑 // CompleteInfo의 workcd 기준으로 정렬 순서 매핑
Dictionary<string, int> orderMap = reference Dictionary<string, int> orderMap = reference

View File

@@ -16,23 +16,23 @@ public class UI_MachineEffectivenessContent : UIBase
prf_machineEffectiveness = Resources.Load<UI_MachineEffectivenessItem>("Prefabs/UI/PRF_UI_MachineEffectivenessItem"); prf_machineEffectiveness = Resources.Load<UI_MachineEffectivenessItem>("Prefabs/UI/PRF_UI_MachineEffectivenessItem");
} }
public void SetProductionStatusItem(List<SimpleField> simpleFields, MachineType type) public void SetProductionStatusItem(List<MachineDataSet> machineDataSets, MachineType type)
{ {
dataType = type; dataType = type;
foreach (var simpleField in simpleFields) foreach (var machineDataSet in machineDataSets)
{ {
if (!machineEffectivenesses.ContainsKey(simpleField.machineInfo.worknm)) if (!machineEffectivenesses.ContainsKey(machineDataSet.machineInfo.worknm))
{ {
var machineStatus = Instantiate(prf_machineEffectiveness, transform); var machineStatus = Instantiate(prf_machineEffectiveness, transform);
machineEffectivenesses.Add(simpleField.machineInfo.worknm, machineStatus); machineEffectivenesses.Add(machineDataSet.machineInfo.worknm, machineStatus);
} }
var machineName = simpleField.machineInfo.worknm; var machineName = machineDataSet.machineInfo.worknm;
var eorate = simpleField.kpiDataInfo.eorate; var eorate = machineDataSet.kpiDataInfo.eorate;
var status = simpleField.machineInfo.statusnm; var status = machineDataSet.machineInfo.statusnm;
machineEffectivenesses[simpleField.machineInfo.worknm].SetEffectivness(eorate, machineName, status); machineEffectivenesses[machineDataSet.machineInfo.worknm].SetEffectivness(eorate, machineName, status);
} }
} }
} }

View File

@@ -1,63 +1,64 @@
using System; using System;
using System.Collections;
using System.Collections.Generic;
using TMPro; using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.Pool; using UnityEngine.Pool;
using UnityEngine.UI; using UnityEngine.UI;
using UnityEngine.EventSystems;
using WI; using WI;
public class UI_MachineInfoItem : UIBase,IPooledObject namespace CHN
{ {
TextMeshProUGUI InfoName; public class UI_MachineInfoItem : UIBase, IPooledObject
TextMeshProUGUI Data;
Toggle Toggle_Check;
public Action<string, bool> onFavoritItem;
public IObjectPool<Component> Pool { get ; set ; }
public override void AfterAwake()
{ {
Toggle_Check.onValueChanged.AddListener(OnToggleFavoritClick); TextMeshProUGUI InfoName;
} TextMeshProUGUI Data;
Toggle Toggle_Check;
public Action<string, bool> onFavoritItem;
public void Setting(string tag, string info) public IObjectPool<Component> Pool { get; set; }
{
InfoName.text = tag;
if (info == string.Empty || info == null) public override void AfterAwake()
{ {
Data.SetText("-"); Toggle_Check.onValueChanged.AddListener(OnToggleFavoritClick);
} }
else
public void Setting(string tag, string info)
{ {
Data.SetText(info); InfoName.text = tag;
if (info == string.Empty || info == null)
{
Data.SetText("-");
}
else
{
Data.SetText(info);
}
transform.localScale = Vector3.one;
} }
transform.localScale = Vector3.one;
}
public void Lock()
{
Toggle_Check.interactable = false;
}
public void Unlock() public void Lock()
{ {
Toggle_Check.interactable = true; Toggle_Check.interactable = false;
} }
public void SetAcitveCheckBox(bool isOn)
{
Toggle_Check.gameObject.SetActive(isOn);
}
public void ToggleIsOn(bool isOn)
{
Toggle_Check.SetIsOnWithoutNotify(isOn);
}
private void OnToggleFavoritClick(bool isOn) public void Unlock()
{ {
onFavoritItem?.Invoke(InfoName.text, isOn); Toggle_Check.interactable = true;
}
public void SetAcitveCheckBox(bool isOn)
{
Toggle_Check.gameObject.SetActive(isOn);
}
public void ToggleIsOn(bool isOn)
{
Toggle_Check.SetIsOnWithoutNotify(isOn);
}
private void OnToggleFavoritClick(bool isOn)
{
onFavoritItem?.Invoke(InfoName.text, isOn);
}
} }
} }

View File

@@ -12,7 +12,7 @@ using System.Globalization;
public class UI_MachineKPI : UIBase, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler public class UI_MachineKPI : UIBase, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler
{ {
public SimpleField data; public MachineDataSet data;
public RectTransform Default_KPI; public RectTransform Default_KPI;
private RectTransform Expand_KPI; private RectTransform Expand_KPI;
@@ -35,7 +35,7 @@ public class UI_MachineKPI : UIBase, IPointerClickHandler, IPointerEnterHandler,
public Action<UI_MachineKPI> onClickKPI; public Action<UI_MachineKPI> onClickKPI;
public void SetData(SimpleField data, string machineName) public void SetData(MachineDataSet data, string machineName)
{ {
this.data = data; this.data = data;