281 lines
12 KiB
C#
281 lines
12 KiB
C#
using System;
|
||
using System.Globalization;
|
||
using System.Linq;
|
||
using UnityEngine;
|
||
using UnityEngine.UI;
|
||
using Cysharp.Threading.Tasks;
|
||
using TMPro;
|
||
using EnglewoodLAB.UI;
|
||
using EnglewoodLAB.Management;
|
||
|
||
namespace EnglewoodLAB.UI
|
||
{
|
||
public class MachineDashBoard : UIPanel
|
||
{
|
||
private TextMeshProUGUI MachineName;
|
||
private TextMeshProUGUI wordno;
|
||
private TextMeshProUGUI sttm;
|
||
private TextMeshProUGUI totm;
|
||
private TextMeshProUGUI workseq;
|
||
private TextMeshProUGUI daynight;
|
||
private TextMeshProUGUI statusnm;
|
||
private TextMeshProUGUI workcd;
|
||
private TextMeshProUGUI itemcd;
|
||
private TextMeshProUGUI itemdesc;
|
||
private TextMeshProUGUI pjtcd;
|
||
private TextMeshProUGUI matcd;
|
||
private TextMeshProUGUI cavity;
|
||
private TextMeshProUGUI cycletime;
|
||
private TextMeshProUGUI moldData;
|
||
private TextMeshProUGUI eorate;
|
||
private TextMeshProUGUI workdt;
|
||
private TextMeshProUGUI planqty;
|
||
private TextMeshProUGUI goalqty;
|
||
private TextMeshProUGUI workqty;
|
||
private TextMeshProUGUI goodqty;
|
||
private TextMeshProUGUI badqty;
|
||
private TextMeshProUGUI badrate;
|
||
private TextMeshProUGUI efficiency;
|
||
private TextMeshProUGUI progressrate;
|
||
private TextMeshProUGUI porate;
|
||
private TextMeshProUGUI goodqtyrate;
|
||
|
||
#region Slider
|
||
private Slider Slider_eorate;
|
||
private Slider Slider_planqty;
|
||
private Slider Slider_goalqty;
|
||
private Slider Slider_workqty;
|
||
private Slider Slider_goodqty;
|
||
private Slider Slider_badqty;
|
||
private Slider Slider_badrate;
|
||
private Slider Slider_efficiency;
|
||
private Slider Slider_progressrate;
|
||
private Slider Slider_porate;
|
||
private Slider Slider_goodqtyrate;
|
||
#endregion
|
||
|
||
private TextMeshProUGUI AttributeName_10;
|
||
private Image Circle_10;
|
||
private Button Button_Close;
|
||
|
||
public Panel_Effect effect;
|
||
|
||
public override async UniTask Init()
|
||
{
|
||
MachineName = GetElement<TextMeshProUGUI>(nameof(MachineName));
|
||
wordno = GetElement<TextMeshProUGUI>(nameof(wordno));
|
||
sttm = GetElement<TextMeshProUGUI>(nameof(sttm));
|
||
totm = GetElement<TextMeshProUGUI>(nameof(totm));
|
||
workseq = GetElement<TextMeshProUGUI>(nameof(workseq));
|
||
daynight = GetElement<TextMeshProUGUI>(nameof(daynight));
|
||
statusnm = GetElement<TextMeshProUGUI>(nameof(statusnm));
|
||
workcd = GetElement<TextMeshProUGUI>(nameof(workcd));
|
||
itemcd = GetElement<TextMeshProUGUI>(nameof(itemcd));
|
||
itemdesc = GetElement<TextMeshProUGUI>(nameof(itemdesc));
|
||
pjtcd = GetElement<TextMeshProUGUI>(nameof(pjtcd));
|
||
matcd = GetElement<TextMeshProUGUI>(nameof(matcd));
|
||
cavity = GetElement<TextMeshProUGUI>(nameof(cavity));
|
||
cycletime = GetElement<TextMeshProUGUI>(nameof(cycletime));
|
||
moldData = GetElement<TextMeshProUGUI>(nameof(moldData));
|
||
eorate = GetElement<TextMeshProUGUI>(nameof(eorate));
|
||
workdt = GetElement<TextMeshProUGUI>(nameof(workdt));
|
||
planqty = GetElement<TextMeshProUGUI>(nameof(planqty));
|
||
goalqty = GetElement<TextMeshProUGUI>(nameof(goalqty));
|
||
workqty = GetElement<TextMeshProUGUI>(nameof(workqty));
|
||
goodqty = GetElement<TextMeshProUGUI>(nameof(goodqty));
|
||
badqty = GetElement<TextMeshProUGUI>(nameof(badqty));
|
||
badrate = GetElement<TextMeshProUGUI>(nameof(badrate));
|
||
efficiency = GetElement<TextMeshProUGUI>(nameof(efficiency));
|
||
progressrate = GetElement<TextMeshProUGUI>(nameof(progressrate));
|
||
porate = GetElement<TextMeshProUGUI>(nameof(porate));
|
||
goodqtyrate = GetElement<TextMeshProUGUI>(nameof(goodqtyrate));
|
||
|
||
Slider_eorate = GetElement<Slider>(nameof(Slider_eorate));
|
||
Slider_planqty = GetElement<Slider>(nameof(Slider_planqty));
|
||
Slider_goalqty = GetElement<Slider>(nameof(Slider_goalqty));
|
||
Slider_workqty = GetElement<Slider>(nameof(Slider_workqty));
|
||
Slider_goodqty = GetElement<Slider>(nameof(Slider_goodqty));
|
||
Slider_badqty = GetElement<Slider>(nameof(Slider_badqty));
|
||
Slider_badrate = GetElement<Slider>(nameof(Slider_badrate));
|
||
Slider_efficiency = GetElement<Slider>(nameof(Slider_efficiency));
|
||
Slider_progressrate = GetElement<Slider>(nameof(Slider_progressrate));
|
||
Slider_porate = GetElement<Slider>(nameof(Slider_porate));
|
||
Slider_goodqtyrate = GetElement<Slider>(nameof(Slider_goodqtyrate));
|
||
|
||
AttributeName_10 = GetElement<TextMeshProUGUI>(nameof(AttributeName_10));
|
||
Circle_10 = GetElement<Image>(nameof(Circle_10));
|
||
Button_Close = GetElement<Button>(nameof(Button_Close));
|
||
|
||
|
||
Button_Close.onClick.AddListener(Close);
|
||
|
||
await UniTask.CompletedTask;
|
||
}
|
||
public override void Open()
|
||
{
|
||
gameObject.SetActive(true);
|
||
effect.ActivePanel();
|
||
gameObject.transform.SetAsLastSibling();
|
||
}
|
||
public override void Close()
|
||
{
|
||
effect.DeactivePanel();
|
||
gameObject.SetActive(false);
|
||
gameObject.transform.SetAsLastSibling();
|
||
}
|
||
|
||
public void SetDetailDashBoardData(CompleteInfo data, Machine machine)
|
||
{
|
||
SetTextData(data, machine);
|
||
SetSliderData(data);
|
||
}
|
||
private void SetTextData(CompleteInfo data, Machine machine)
|
||
{
|
||
MachineName.SetText(SetNameData(data.worknm, machine?.machineName ?? ""));
|
||
wordno.SetText(SetTextData(data.wordno));
|
||
sttm.SetText(CorrectionTime(data.sttm, "hh:mm"));
|
||
totm.SetText(CorrectionTime(data.totm, "hh:mm"));
|
||
daynight.SetText(SetTextData(data.daynight));
|
||
workseq.SetText(SetTextData(data.workseq));
|
||
statusnm.SetText(SetTextData(data.statusnm));
|
||
workcd.SetText(SetTextData(data.workcd));
|
||
itemcd.SetText(SetTextData(data.itemcd));
|
||
itemdesc.SetText(SetTextData(data.itemdesc));
|
||
pjtcd.SetText(SetTextData(data.pjtcd));
|
||
matcd.SetText(SetTextData(data.matcd));
|
||
cavity.SetText(SetTextData(data.cavity));
|
||
cycletime.SetText(SetTextData(data.cycletime));
|
||
|
||
planqty.SetText(SetTextData(data.planqty));
|
||
goalqty.SetText(SetTextData(data.goalqty));
|
||
workqty.SetText(SetTextData(data.workqty));
|
||
goodqty.SetText(SetTextData(data.goodqty));
|
||
badqty.SetText(SetTextData(data.badqty));
|
||
|
||
badrate.SetText(DecimalPointCalculate(data.badrate).ToString() + "%");
|
||
efficiency.SetText(DecimalPointCalculate(data.efficiency).ToString() + "%");
|
||
progressrate.SetText(DecimalPointCalculate(data.progressrate).ToString() + "%");
|
||
eorate.SetText(DecimalPointCalculate(data.eorate).ToString() + "%");
|
||
porate.SetText(DecimalPointCalculate(data.porate).ToString() + "%");
|
||
goodqtyrate.SetText(DecimalPointCalculate(data.goodqtyrate).ToString() + "%");
|
||
|
||
workdt.SetText(CorrectionMonthDay(data.workdt, "yyyy-MM-dd"));
|
||
|
||
SetMoldData(machine, data);
|
||
}
|
||
private void SetSliderData(CompleteInfo data)
|
||
{
|
||
SetSliderValue(Slider_eorate, 100f, DecimalPointCalculate(data.eorate));
|
||
SetSliderValue(Slider_planqty, DecimalPointCalculate(data.planqty), DecimalPointCalculate(data.planqty));
|
||
SetSliderValue(Slider_goalqty, DecimalPointCalculate(data.planqty), DecimalPointCalculate(data.goalqty));
|
||
SetSliderValue(Slider_workqty, DecimalPointCalculate(data.planqty), DecimalPointCalculate(data.workqty));
|
||
SetSliderValue(Slider_goodqty, DecimalPointCalculate(data.planqty), DecimalPointCalculate(data.goodqty));
|
||
SetSliderValue(Slider_badqty, DecimalPointCalculate(data.planqty), DecimalPointCalculate(data.badqty));
|
||
SetSliderValue(Slider_badrate, 100f, DecimalPointCalculate(data.badrate));
|
||
SetSliderValue(Slider_efficiency, 100f, DecimalPointCalculate(data.efficiency));
|
||
SetSliderValue(Slider_progressrate, 100f, DecimalPointCalculate(data.progressrate));
|
||
SetSliderValue(Slider_porate, 100f, DecimalPointCalculate(data.porate));
|
||
SetSliderValue(Slider_goodqtyrate, 100f, DecimalPointCalculate(data.goodqtyrate));
|
||
}
|
||
private void SetMoldData(Machine machine, CompleteInfo data)
|
||
{
|
||
if (machine == null)
|
||
{
|
||
Circle_10.gameObject.SetActive(false);
|
||
AttributeName_10.SetText("");
|
||
moldData.SetText("");
|
||
return;
|
||
}
|
||
|
||
var moldDataTitle = "";
|
||
var moldDataValue = "";
|
||
|
||
if (machine.typeOptions.Count() > 1)
|
||
{
|
||
Circle_10.gameObject.SetActive(true);
|
||
|
||
if (machine.typeOptions[1].Contains("<22><><EFBFBD><EFBFBD>") || machine.typeOptions[1].Contains("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"))
|
||
{
|
||
moldDataTitle = "<22><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>";
|
||
moldDataValue = data.moldseq;
|
||
}
|
||
else if (machine.typeOptions[1].Contains("<22><><EFBFBD><EFBFBD>"))
|
||
{
|
||
moldDataTitle = "<22><><EFBFBD><EFBFBD> <20>ڵ<EFBFBD>";
|
||
moldDataValue = data.moldcd;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
Circle_10.gameObject.SetActive(false);
|
||
}
|
||
AttributeName_10.SetText(moldDataTitle);
|
||
moldData.SetText(moldDataValue);
|
||
}
|
||
private string SetNameData(string value, string machineName)
|
||
{
|
||
if (value == string.Empty || value == null)
|
||
{
|
||
return machineName;
|
||
}
|
||
return value;
|
||
}
|
||
private string SetTextData(string value)
|
||
{
|
||
if (value == string.Empty || value == null)
|
||
{
|
||
return "-";
|
||
}
|
||
return value;
|
||
}
|
||
private void SetSliderValue(Slider slider, float max, float value)
|
||
{
|
||
slider.minValue = 0f;
|
||
slider.maxValue = max;
|
||
slider.value = value;
|
||
}
|
||
|
||
private bool CheckDataExists(string value)
|
||
{
|
||
if (value == string.Empty || value == null)
|
||
{
|
||
return false;
|
||
}
|
||
return true;
|
||
}
|
||
private float DecimalPointCalculate(string value)
|
||
{
|
||
if (!CheckDataExists(value))
|
||
{
|
||
return 0f;
|
||
}
|
||
|
||
var originFloatValue = float.Parse(value);
|
||
var floatValue = Mathf.Round(originFloatValue * 10f) / 10f;
|
||
|
||
return floatValue;
|
||
}
|
||
private string CorrectionMonthDay(string value, string dateForm)
|
||
{
|
||
if (value == string.Empty || value == null)
|
||
{
|
||
return "-";
|
||
}
|
||
|
||
DateTime.TryParseExact(value, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var parsedDate);
|
||
return parsedDate.ToString(dateForm);
|
||
}
|
||
private string CorrectionTime(string value, string dateForm)
|
||
{
|
||
if (value == string.Empty || value == null)
|
||
{
|
||
return "-";
|
||
}
|
||
|
||
DateTime.TryParseExact(value, "hhmm", CultureInfo.InvariantCulture, DateTimeStyles.None, out var parsedDate);
|
||
return parsedDate.ToString(dateForm);
|
||
}
|
||
}
|
||
|
||
}
|