[정영민] 공통 기능 스크립트 정리 작업
26.01.20 천일 공장 최적화 진행 중인 프로젝트에서 공통 기능 스크립트 정리 후 데이터 업로드
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
@@ -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();
|
||||||
}
|
}
|
||||||
@@ -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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
using UnityEngine;
|
|
||||||
using UnityEngine.Pool;
|
|
||||||
|
|
||||||
public interface IPooledObject
|
|
||||||
{
|
|
||||||
public IObjectPool<Component> Pool { get; set; }
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: c4d1e97290e35a244b09f48a43c05304
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
|
||||||
@@ -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;
|
||||||
|
|||||||
@@ -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>();
|
||||||
@@ -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");
|
||||||
@@ -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]
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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 = "";
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user