149 lines
3.8 KiB
C#
149 lines
3.8 KiB
C#
using CHN;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using WI;
|
|
using static MQTT;
|
|
|
|
public class Panel_ProductionStatus : PanelBase, IPopupPanel
|
|
{
|
|
TextMeshProUGUI Text_DayAndTime;
|
|
TextMeshProUGUI worknm;
|
|
TextMeshProUGUI status;
|
|
TextMeshProUGUI goalqty;
|
|
TextMeshProUGUI workqty;
|
|
TextMeshProUGUI goodqty;
|
|
TextMeshProUGUI badqty;
|
|
|
|
ProductionStatusManager productionStatusManager;
|
|
|
|
[SerializeField]
|
|
float loopTime = 3;
|
|
float waitTime;
|
|
|
|
public int productionStatusInfoNum = 0;
|
|
public bool isSelectMachine;
|
|
private int selectMachineIndex;
|
|
|
|
public float selectKeepTime = 10;
|
|
float selectWaitTime;
|
|
private bool isUpdate = true;
|
|
|
|
public override void AfterAwake()
|
|
{
|
|
productionStatusManager = FindSingle<ProductionStatusManager>();
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
UpdateDayAndTime();
|
|
|
|
if (!isUpdate)
|
|
return;
|
|
|
|
List<CompleteInfo> completeInfos = productionStatusManager.productionStatusInfos;
|
|
|
|
if (completeInfos.Count == 0)
|
|
return;
|
|
|
|
if (isSelectMachine)
|
|
{
|
|
productionStatusInfoNum = selectMachineIndex;
|
|
|
|
CompleteInfo completeInfo = completeInfos[productionStatusInfoNum];
|
|
SetPanelText(completeInfo);
|
|
}
|
|
else
|
|
{
|
|
CompleteInfo completeInfo = completeInfos[productionStatusInfoNum];
|
|
|
|
waitTime += Time.deltaTime;
|
|
if (waitTime > loopTime)
|
|
{
|
|
SetPanelText(completeInfo);
|
|
|
|
productionStatusInfoNum += 1;
|
|
if (productionStatusInfoNum >= productionStatusManager.productionStatusInfos.Count)
|
|
{
|
|
productionStatusInfoNum = 0;
|
|
}
|
|
waitTime = 0;
|
|
}
|
|
}
|
|
}
|
|
public void SetProductionStatus(Machine selectMachine)
|
|
{
|
|
var completeInfos = productionStatusManager.productionStatusInfos;
|
|
for (int i = 0; i < completeInfos.Count; i++)
|
|
{
|
|
if (completeInfos[i].workcd == selectMachine.code)
|
|
{
|
|
selectMachineIndex = i;
|
|
isSelectMachine = true;
|
|
}
|
|
}
|
|
}
|
|
public void ResetProductionStatus()
|
|
{
|
|
isSelectMachine = false;
|
|
}
|
|
|
|
void SetPanelText(CompleteInfo completeInfo)
|
|
{
|
|
worknm.SetText(completeInfo.worknm);
|
|
status.SetText(completeInfo.statusnm);
|
|
SetStatusColor(completeInfo.statusnm);
|
|
goalqty.SetText(RoundToIntData(completeInfo.goalqty));
|
|
workqty.SetText(RoundToIntData(completeInfo.workqty));
|
|
goodqty.SetText(RoundToIntData(completeInfo.goodqty));
|
|
badqty.SetText(RoundToIntData(completeInfo.badqty));
|
|
}
|
|
|
|
string RoundToIntData(string data)
|
|
{
|
|
float.TryParse(data, out var floatData);
|
|
var intData = Mathf.RoundToInt(floatData);
|
|
|
|
return intData.ToString();
|
|
}
|
|
|
|
void SetStatusColor(string stat)
|
|
{
|
|
switch (stat)
|
|
{
|
|
case "°¡µ¿Áß":
|
|
status.color = new Color(0, 1f, 0.3568628f);
|
|
break;
|
|
case "ºñ°¡µ¿":
|
|
status.color = new Color(1f, 0, 0);
|
|
break;
|
|
case "°èȹÁ¤Áö":
|
|
status.color = new Color(1f, 1f, 1f);
|
|
break;
|
|
default:
|
|
status.color = new Color(1f, 0.3411765f, 0);
|
|
break;
|
|
}
|
|
}
|
|
|
|
void UpdateDayAndTime()
|
|
{
|
|
string currentTime = DateTime.Now.ToString("yyyy.MM.dd HH:mm");
|
|
Text_DayAndTime.SetText(currentTime);
|
|
}
|
|
|
|
public void Open()
|
|
{
|
|
SetActive(true);
|
|
isUpdate = true;
|
|
}
|
|
|
|
public void Close()
|
|
{
|
|
SetActive(false);
|
|
isUpdate = false;
|
|
}
|
|
}
|