금형 코드, 금형 차수 데이터 추가 및 오류 수정
This commit is contained in:
@@ -14,7 +14,7 @@ public class HighLighterManager : MonoBehaviour, ISingle
|
||||
machines = building.floors.SelectMany(f => f.machines).ToArray();
|
||||
}
|
||||
|
||||
public void ClickNotKPIToHighlight(Machine highLightMachine)
|
||||
public void ClickMachinToHighlight(Machine highLightMachine)
|
||||
{
|
||||
ActiveHighLighter(highLightMachine);
|
||||
}
|
||||
|
||||
@@ -19,15 +19,11 @@ namespace CHN
|
||||
private Dictionary<UI_MachineKPI, Machine> kpiToMachines = new();
|
||||
private List<UI_MachineKPI> kpis = new List<UI_MachineKPI>();
|
||||
|
||||
private UI_MachineKPI current_MachineKPI;
|
||||
|
||||
public float defaultNameHeight;
|
||||
public float radius;
|
||||
public Vector3 originScale;
|
||||
public float verticalSpacing = 100f;
|
||||
|
||||
public Action<Machine> onClickKPIToMachine;
|
||||
public Action<SimpleField> onClickKPIToData;
|
||||
public Action<SimpleField, Machine> onClickKPIToData;
|
||||
|
||||
[Range(0.1f, 0.8f)]
|
||||
public float minScale;
|
||||
@@ -77,9 +73,6 @@ namespace CHN
|
||||
if (machineKPIs.ContainsKey(machine.code))
|
||||
{
|
||||
machine.machineKPI = machineKPIs[machine.code];
|
||||
|
||||
var machinePos = machine.centerPos;
|
||||
machine.machineKPI.transform.position = new Vector3(machinePos.x, machinePos.y + defaultNameHeight, machinePos.z);
|
||||
matchingMachines.Add(machine);
|
||||
kpiToMachines.Add(machine.machineKPI, machine);
|
||||
machine.SetAnimationSpeed();
|
||||
@@ -91,7 +84,7 @@ namespace CHN
|
||||
machineKPI.transform.SetAsLastSibling();
|
||||
var currentMachine = kpiToMachines[machineKPI];
|
||||
onClickKPIToMachine?.Invoke(currentMachine);
|
||||
onClickKPIToData?.Invoke(machineKPI.data);
|
||||
onClickKPIToData?.Invoke(machineKPI.data, currentMachine);
|
||||
}
|
||||
private void Update()
|
||||
{
|
||||
|
||||
@@ -5,6 +5,7 @@ using CHN;
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using WI;
|
||||
using System.Linq;
|
||||
|
||||
public class Panel_DetailDashBoard : PanelBase
|
||||
{
|
||||
@@ -36,6 +37,7 @@ public class Panel_DetailDashBoard : PanelBase
|
||||
private TextMeshProUGUI progressrate;
|
||||
private TextMeshProUGUI porate;
|
||||
private TextMeshProUGUI goodqtyrate;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Slider
|
||||
@@ -52,6 +54,8 @@ public class Panel_DetailDashBoard : PanelBase
|
||||
private Slider Slider_goodqtyrate;
|
||||
#endregion
|
||||
|
||||
private TextMeshProUGUI AttributeName_10;
|
||||
private Image Circle_10;
|
||||
private Button Button_Close;
|
||||
|
||||
public Action onCloseDashboard;
|
||||
@@ -66,7 +70,7 @@ public class Panel_DetailDashBoard : PanelBase
|
||||
onCloseDashboard?.Invoke();
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
public void SetDetailDashBoardData(SimpleField data)
|
||||
public void SetDetailDashBoardData(SimpleField data, Machine machine)
|
||||
{
|
||||
var canvas_popup = FindSingle<Canvas_Popup>();
|
||||
if (canvas_popup.isSimpleDashboardAcitve)
|
||||
@@ -74,10 +78,10 @@ public class Panel_DetailDashBoard : PanelBase
|
||||
|
||||
gameObject.SetActive(true);
|
||||
|
||||
SetTextData(data);
|
||||
SetTextData(data, machine);
|
||||
SetSliderData(data);
|
||||
}
|
||||
private void SetTextData(SimpleField data)
|
||||
private void SetTextData(SimpleField data, Machine machine)
|
||||
{
|
||||
MachineName.SetText(SetTextData(data.machineInfo.worknm));
|
||||
wordno.SetText(SetTextData(data.machineInfo.wordno));
|
||||
@@ -93,7 +97,7 @@ public class Panel_DetailDashBoard : PanelBase
|
||||
matcd.SetText(SetTextData(data.machineInfo.matcd));
|
||||
cavity.SetText(SetTextData(data.machineInfo.cavity));
|
||||
cycletime.SetText(SetTextData(data.machineInfo.cycletime));
|
||||
moldData.SetText(SetTextData(data.machineInfo.MOLDCD));
|
||||
|
||||
planqty.SetText(SetTextData(data.machineInfo.planqty));
|
||||
goalqty.SetText(SetTextData(data.machineInfo.goalqty));
|
||||
workqty.SetText(SetTextData(data.machineInfo.workqty));
|
||||
@@ -108,6 +112,8 @@ public class Panel_DetailDashBoard : PanelBase
|
||||
goodqtyrate.SetText(DecimalPointCalculate(data.kpiDataInfo.goodqtyrate).ToString() + "%");
|
||||
|
||||
workdt.SetText(CorrectionMonthDay(data.machineInfo.workdt, "yyyy-MM-dd"));
|
||||
|
||||
SetMoldData(machine, data);
|
||||
}
|
||||
private void SetSliderData(SimpleField data)
|
||||
{
|
||||
@@ -123,6 +129,33 @@ public class Panel_DetailDashBoard : PanelBase
|
||||
SetSliderValue(Slider_porate, 100f, DecimalPointCalculate(data.kpiDataInfo.porate));
|
||||
SetSliderValue(Slider_goodqtyrate, 100f, DecimalPointCalculate(data.kpiDataInfo.goodqtyrate));
|
||||
}
|
||||
private void SetMoldData(Machine machine, SimpleField data)
|
||||
{
|
||||
var moldDataTitle = "";
|
||||
var moldDataValue = "";
|
||||
|
||||
if (machine.typeOptions.Count() > 1)
|
||||
{
|
||||
Circle_10.gameObject.SetActive(true);
|
||||
|
||||
if (machine.typeOptions[1].Contains("엔겔") || machine.typeOptions[1].Contains("스미토모"))
|
||||
{
|
||||
moldDataTitle = "금형 차수";
|
||||
moldDataValue = data.machineInfo.moldseq;
|
||||
}
|
||||
else if (machine.typeOptions[1].Contains("우진"))
|
||||
{
|
||||
moldDataTitle = "금형 코드";
|
||||
moldDataValue = data.machineInfo.moldcd;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Circle_10.gameObject.SetActive(false);
|
||||
}
|
||||
AttributeName_10.SetText(moldDataTitle);
|
||||
moldData.SetText(moldDataValue);
|
||||
}
|
||||
private string SetTextData(string value)
|
||||
{
|
||||
if (value == string.Empty || value == null)
|
||||
@@ -140,7 +173,7 @@ public class Panel_DetailDashBoard : PanelBase
|
||||
|
||||
private bool CheckDataExists(string value)
|
||||
{
|
||||
if (value == null)
|
||||
if (value == string.Empty || value == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -160,7 +193,7 @@ public class Panel_DetailDashBoard : PanelBase
|
||||
}
|
||||
private string CorrectionMonthDay(string value, string dateForm)
|
||||
{
|
||||
if (value == string.Empty)
|
||||
if (value == string.Empty || value == null)
|
||||
{
|
||||
return "-";
|
||||
}
|
||||
@@ -170,7 +203,7 @@ public class Panel_DetailDashBoard : PanelBase
|
||||
}
|
||||
private string CorrectionTime(string value, string dateForm)
|
||||
{
|
||||
if (value == string.Empty)
|
||||
if (value == string.Empty || value == null)
|
||||
{
|
||||
return "-";
|
||||
}
|
||||
|
||||
@@ -28,9 +28,9 @@ public class UI_MachineKPI : UIBase, IPointerClickHandler, IPointerEnterHandler,
|
||||
private TextMeshProUGUI porate;
|
||||
private TextMeshProUGUI goodqtyrate;
|
||||
private TextMeshProUGUI workdt;
|
||||
private TextMeshProUGUI wordno;
|
||||
|
||||
public bool isExpand;
|
||||
public string secondaryFontName = "PretendardVariable SDF";
|
||||
|
||||
public Action<UI_MachineKPI> onClickKPI;
|
||||
|
||||
@@ -39,17 +39,18 @@ public class UI_MachineKPI : UIBase, IPointerClickHandler, IPointerEnterHandler,
|
||||
this.data = data;
|
||||
|
||||
eorate.SetText(DecimalPointCalculate(data.kpiDataInfo.eorate).ToString() + "%");
|
||||
daynight.SetText(data.machineInfo.daynight);
|
||||
workcd.SetText(data.machineInfo.workcd);
|
||||
daynight.SetText(SetTextData(data.machineInfo.daynight));
|
||||
workcd.SetText(SetTextData(data.machineInfo.workcd));
|
||||
goodqtyrate.SetText(DecimalPointCalculate(data.kpiDataInfo.goodqtyrate).ToString() + "%");
|
||||
porate.SetText(DecimalPointCalculate(data.kpiDataInfo.porate).ToString() +"%");
|
||||
workdt.SetText(CorrectionTime(data.machineInfo.workdt, "yyyy-MM-dd"));
|
||||
wordno.SetText(SetTextData(data.machineInfo.wordno));
|
||||
|
||||
DefaultMachineName.SetText(data.machineInfo.worknm);
|
||||
ExpandMachineName.SetText(data.machineInfo.worknm);
|
||||
DefaultMachineName.SetText(SetTextData(data.machineInfo.worknm));
|
||||
ExpandMachineName.SetText(SetTextData(data.machineInfo.worknm));
|
||||
|
||||
Default_Status.color = SetStatusColor(data.machineInfo.statusnm);
|
||||
Expand_Status.color = SetStatusColor(data.machineInfo.statusnm);
|
||||
Default_Status.color = SetStatusColor(SetTextData(data.machineInfo.statusnm));
|
||||
Expand_Status.color = SetStatusColor(SetTextData(data.machineInfo.statusnm));
|
||||
}
|
||||
private Color SetStatusColor(string value)
|
||||
{
|
||||
@@ -57,6 +58,9 @@ public class UI_MachineKPI : UIBase, IPointerClickHandler, IPointerEnterHandler,
|
||||
|
||||
switch (value)
|
||||
{
|
||||
case "-":
|
||||
color = Color.black;
|
||||
break;
|
||||
case "°¡µ¿Áß":
|
||||
color = Color.green;
|
||||
break;
|
||||
@@ -71,7 +75,7 @@ public class UI_MachineKPI : UIBase, IPointerClickHandler, IPointerEnterHandler,
|
||||
}
|
||||
private bool CheckDataExists(string value)
|
||||
{
|
||||
if(value == null)
|
||||
if (value == null || value == string.Empty)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@@ -89,14 +93,21 @@ public class UI_MachineKPI : UIBase, IPointerClickHandler, IPointerEnterHandler,
|
||||
|
||||
return floatValue;
|
||||
}
|
||||
private string SetTextData(string value)
|
||||
{
|
||||
if (!CheckDataExists(value))
|
||||
{
|
||||
return "-";
|
||||
}
|
||||
return value;
|
||||
}
|
||||
private string CorrectionTime(string value, string dateForm)
|
||||
{
|
||||
if(DateTime.TryParseExact(value, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var parsedDate))
|
||||
{
|
||||
return parsedDate.ToString(dateForm);
|
||||
}
|
||||
return "----/--/--";
|
||||
|
||||
return "-";
|
||||
}
|
||||
public void OnPointerClick(PointerEventData eventData)
|
||||
{
|
||||
|
||||
@@ -7,6 +7,11 @@ public class ViewManager : MonoBehaviour, ISingle
|
||||
private Building building;
|
||||
private OrbitalController controller;
|
||||
private ViewMode preViewMode;
|
||||
|
||||
public float checkRadius = 0.5f;
|
||||
public LayerMask wallLayer;
|
||||
public float pushOutDistance = 1.0f;
|
||||
public int maxPushAttempts = 10;
|
||||
public override void AfterAwake()
|
||||
{
|
||||
building = FindSingle<Building>();
|
||||
@@ -63,6 +68,12 @@ public class ViewManager : MonoBehaviour, ISingle
|
||||
{
|
||||
if (controller.saveTargetPositions[ViewMode.TopView] == null)
|
||||
{
|
||||
var pos = controller.nextPosition;
|
||||
var floorStartPos = building.currentFloor.StartPoint.position;
|
||||
|
||||
pos.y = floorStartPos.y;
|
||||
|
||||
controller.nextPosition = pos;
|
||||
building.SetAllFloorExternalState();
|
||||
}
|
||||
else
|
||||
@@ -98,6 +109,8 @@ public class ViewManager : MonoBehaviour, ISingle
|
||||
startPos = tourModePos;
|
||||
}
|
||||
controller.nextPosition = startPos;
|
||||
|
||||
CheckHitWall();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -108,6 +121,7 @@ public class ViewManager : MonoBehaviour, ISingle
|
||||
slider.ChangeValueFromOutside(floorIndex);
|
||||
}
|
||||
}
|
||||
|
||||
public void ChangeViewWithFloorControl(Floor currentFloor, Vector3 pos)
|
||||
{
|
||||
var startPos = building.currentFloor.StartPoint.position;
|
||||
@@ -138,4 +152,39 @@ public class ViewManager : MonoBehaviour, ISingle
|
||||
currentFloor.SetInternalState();
|
||||
controller.LastPositioning(true);
|
||||
}
|
||||
private void CheckHitWall()
|
||||
{
|
||||
var targetPosition = controller.option.target.position;
|
||||
|
||||
if (!IsPositionBlocked(targetPosition))
|
||||
return;
|
||||
|
||||
Vector3[] directions = { Vector3.forward, Vector3.back, Vector3.left, Vector3.right };
|
||||
var foundFreeSpot = false;
|
||||
|
||||
for (int attempt = 0; attempt < maxPushAttempts && !foundFreeSpot; attempt++)
|
||||
{
|
||||
foreach (var dir in directions)
|
||||
{
|
||||
var candidatePos = targetPosition + dir * pushOutDistance * attempt;
|
||||
if (!IsPositionBlocked(candidatePos))
|
||||
{
|
||||
targetPosition = candidatePos;
|
||||
foundFreeSpot = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!foundFreeSpot)
|
||||
{
|
||||
targetPosition = building.currentFloor.StartPoint.position;
|
||||
}
|
||||
|
||||
controller.nextPosition = targetPosition;
|
||||
}
|
||||
bool IsPositionBlocked(Vector3 position)
|
||||
{
|
||||
return Physics.CheckSphere(position, checkRadius, wallLayer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,11 +45,17 @@ namespace CHN
|
||||
kpiDataTable.Add(GapRemove(machine.code), new());
|
||||
}
|
||||
var fileds = typeof(UsageMQTTData).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
|
||||
//simpleField= JsonConvert.DeserializeObject<List<SimpleField>>(simplePath);
|
||||
var typeFields = typeof(UsageKPIData).GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
|
||||
|
||||
for (int i = 0; i < 4; i++)
|
||||
{
|
||||
samples.Add(fileds[i].Name);
|
||||
}
|
||||
|
||||
for(int i = 0; i < 3; i++)
|
||||
{
|
||||
samples.Add(typeFields[i].Name);
|
||||
}
|
||||
}
|
||||
|
||||
public void SetKPIData(MachineKPIData machineKPIData)
|
||||
@@ -122,12 +128,14 @@ namespace CHN
|
||||
if (includeFields.ContainsKey(machineName))
|
||||
{
|
||||
includeFields[machineName].machineInfo = mqttDataTable[machineName];
|
||||
includeFields[machineName].kpiDataInfo = kpiDataTable[machineName];
|
||||
}
|
||||
else
|
||||
{
|
||||
var simpleTest = new SimpleField();
|
||||
simpleTest.machineName = machineName;
|
||||
simpleTest.machineInfo = mqttDataTable[machineName];
|
||||
simpleTest.kpiDataInfo = kpiDataTable[machineName];
|
||||
simpleTest.simpleField = samples;
|
||||
includeFields.Add(machineName, simpleTest);
|
||||
}
|
||||
@@ -198,6 +206,8 @@ namespace CHN
|
||||
usageMQTTData.progressrate = completeInfos.progressrate;
|
||||
usageMQTTData.sttm = completeInfos.sttm;
|
||||
usageMQTTData.totm = completeInfos.totm;
|
||||
usageMQTTData.moldcd = completeInfos.moldcd;
|
||||
usageMQTTData.moldseq = completeInfos.moldseq;
|
||||
|
||||
return usageMQTTData;
|
||||
}
|
||||
@@ -245,7 +255,7 @@ namespace CHN
|
||||
public string progressrate;
|
||||
public string sttm;
|
||||
public string totm;
|
||||
public string MOLDSEQ;
|
||||
public string MOLDCD;
|
||||
public string moldcd;
|
||||
public string moldseq;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user