Files
ChunilENG/Assets/WorkSpace/Personal/JYM/WorkTimeManager.cs
2025-03-12 09:55:47 +09:00

81 lines
2.5 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using WI;
[Serializable]
public class BarChartData
{
public string _time;
public string itemcd;
public float cycleTime;
public float targetCycleTime;
public float coolingTime;
public float holdingPressureTime;
public float weighingTime;
public float etc;
}
public class WorkTimeManager : MonoBehaviour, ISingle
{
public List<BarChartData> originDatas = new List<BarChartData>();
public List<BarChartData> mainChartDatas = new List<BarChartData>();
public int targetCount;
public Action<List<BarChartData>> onSendChartData;
public void SetWorkTimeData(WorkTimeData workTimeData)
{
SetBarChartData(workTimeData);
}
private void SetBarChartData(WorkTimeData workTimeData)
{
originDatas.Clear();
mainChartDatas.Clear();
foreach (var row in workTimeData.data.rows)
{
var data = new BarChartData();
data._time = row._time;
data.itemcd = row.ITEMCD;
data.cycleTime = ConvertStringToFloat(row.C045);
data.targetCycleTime = ConvertStringToFloat(row.CYCLETIME);
data.coolingTime = ConvertStringToFloat(row.C046);
data.holdingPressureTime = ConvertStringToFloat(row.C027);
data.weighingTime = ConvertStringToFloat(row.C037);
data.etc = data.cycleTime - (data.coolingTime + data.holdingPressureTime + data.weighingTime);
originDatas.Add(data);
}
mainChartDatas.AddRange(DownSampleToFixedCount(originDatas, targetCount));
onSendChartData?.Invoke(mainChartDatas);
}
private float ConvertStringToFloat(string stringData)
{
float.TryParse(stringData, out var result);
return result;
}
private List<BarChartData> DownSampleToFixedCount(List<BarChartData> originDatas, int targetCount)
{
var sampleData = new List<BarChartData>();
double interval = (double)originDatas.Count / targetCount;
if (originDatas.Count <= targetCount || targetCount <= 0)
{
return originDatas;
}
for (int i = 0; i < targetCount; i++)
{
int index = (int)Math.Round(i * interval);
if (index >= originDatas.Count)
{
index = originDatas.Count - 1;
}
sampleData.Add(originDatas[index]);
}
return sampleData;
}
}