239 lines
8.9 KiB
C#
239 lines
8.9 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using WI;
|
|
using UnityEngine.UI;
|
|
using TMPro;
|
|
using System;
|
|
using System.Globalization;
|
|
|
|
namespace CHN
|
|
{
|
|
public class PreviousWorkTimeData
|
|
{
|
|
public string startDate;
|
|
public string endDate;
|
|
public WorkItemCodeData itemCodeDatas;
|
|
public string workItemCode;
|
|
public int workItemCodeIndex;
|
|
|
|
public PreviousWorkTimeData(string startDate, string endDate, WorkItemCodeData itemCodeDatas, string workItemCode, int workItmemCodeIndex)
|
|
{
|
|
this.startDate = startDate;
|
|
this.endDate = endDate;
|
|
this.itemCodeDatas = itemCodeDatas;
|
|
this.workItemCode = workItemCode;
|
|
this.workItemCodeIndex = workItmemCodeIndex;
|
|
}
|
|
}
|
|
public class Panel_WorkTimeAnalysis : PanelBase, ISingle
|
|
{
|
|
public Dictionary<string, PreviousWorkTimeData> workTimeDatas = new Dictionary<string, PreviousWorkTimeData>();
|
|
|
|
private Button Button_StartDay;
|
|
private Button Button_EndDay;
|
|
private TextMeshProUGUI Text_StartDay;
|
|
private TextMeshProUGUI Text_EndDay;
|
|
private CustomTMPDropdown Dropdown_WorkOrderNumber;
|
|
private Image Image_WorkOrderNumberLoading;
|
|
private Button Button_Search;
|
|
private RectTransform Panel_NotData;
|
|
private TextMeshProUGUI ITEMCD;
|
|
|
|
private UI_Calendar ui_Calendar;
|
|
private RectTransform ChartData;
|
|
public UI_BarChart barChart;
|
|
|
|
private WorkItemCodeData itemCodeData;
|
|
public Action<string, string, string, string> onSearchData;
|
|
public Action<string> onClose;
|
|
|
|
public float fadeTime;
|
|
|
|
public string startDate;
|
|
public string endDate;
|
|
public string facilityCode;
|
|
public Action<string, string, string> onDateData;
|
|
public override void AfterAwake()
|
|
{
|
|
ui_Calendar = transform.GetComponentInChildren<UI_Calendar>(true);
|
|
ui_Calendar.onSelectDate += SetDayData;
|
|
barChart = transform.GetComponentInChildren<UI_BarChart>();
|
|
|
|
Button_StartDay.onClick.AddListener(OnClickStartDayBtn);
|
|
Button_EndDay.onClick.AddListener(OnClickEndDayBtn);
|
|
Button_Search.onClick.AddListener(OnClickSearchBtn);
|
|
|
|
ui_Calendar.Close();
|
|
|
|
Text_StartDay.text = DateTime.Now.AddMonths(-1).ToString("yyyy-MM-dd");
|
|
Text_EndDay.text = DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd");
|
|
|
|
ChartData.gameObject.SetActive(false);
|
|
|
|
Dropdown_WorkOrderNumber.ClearOptions();
|
|
}
|
|
|
|
public void Open()
|
|
{
|
|
gameObject.SetActive(true);
|
|
gameObject.transform.SetAsLastSibling();
|
|
}
|
|
public void Close()
|
|
{
|
|
ui_Calendar.Close();
|
|
gameObject.SetActive(false);
|
|
}
|
|
|
|
private void OnClickStartDayBtn()
|
|
{
|
|
if (Image_WorkOrderNumberLoading.gameObject.activeSelf)
|
|
return;
|
|
|
|
ui_Calendar.Open(Text_StartDay);
|
|
}
|
|
private void OnClickEndDayBtn()
|
|
{
|
|
if (Image_WorkOrderNumberLoading.gameObject.activeSelf)
|
|
return;
|
|
|
|
ui_Calendar.Open(Text_EndDay);
|
|
}
|
|
private void SetDayData(TextMeshProUGUI targetText)
|
|
{
|
|
Dropdown_WorkOrderNumber.ClearOptions();
|
|
|
|
startDate = Convert.ToDateTime(Text_StartDay.text).ToString("yyyyMMdd");
|
|
endDate = Convert.ToDateTime(Text_EndDay.text).ToString("yyyyMMdd");
|
|
|
|
if (!startDate.Equals(string.Empty) && !endDate.Equals(string.Empty))
|
|
{
|
|
Dropdown_WorkOrderNumber.ClearOptions();
|
|
|
|
DateTime.TryParseExact(startDate, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var start);
|
|
DateTime.TryParseExact(endDate, "yyyyMMdd", CultureInfo.InvariantCulture, DateTimeStyles.None, out var end);
|
|
|
|
Image_WorkOrderNumberLoading.gameObject.SetActive(true);
|
|
|
|
if (DateTime.Compare(start, end) == 1)
|
|
{
|
|
Image_WorkOrderNumberLoading.gameObject.SetActive(false);
|
|
|
|
Dropdown_WorkOrderNumber.captionText.SetText("-");
|
|
return;
|
|
}
|
|
|
|
onDateData?.Invoke(startDate, endDate, facilityCode);
|
|
}
|
|
}
|
|
public void SetFacilityCode(SimpleField simple, Machine machine)
|
|
{
|
|
facilityCode = machine.code;
|
|
|
|
if (workTimeDatas.ContainsKey(facilityCode))
|
|
{
|
|
this.startDate = workTimeDatas[facilityCode].startDate;
|
|
this.endDate = workTimeDatas[facilityCode].endDate;
|
|
|
|
ui_Calendar.SetCalendarData(Text_StartDay, workTimeDatas[facilityCode].startDate);
|
|
ui_Calendar.SetCalendarData(Text_EndDay, workTimeDatas[facilityCode].endDate);
|
|
|
|
DateTime startDate = Convert.ToDateTime(Text_StartDay.text);
|
|
DateTime endDate = Convert.ToDateTime(Text_EndDay.text);
|
|
endDate = endDate.AddDays(+1);
|
|
|
|
string startDateString = startDate.ToString("yyyy-MM-ddTHH:mm:ssZ");
|
|
string endDateString = endDate.ToString("yyyy-MM-ddTHH:mm:ssZ");
|
|
|
|
SetWorkItemCodeDropDown(workTimeDatas[facilityCode].itemCodeDatas);
|
|
Dropdown_WorkOrderNumber.value = workTimeDatas[facilityCode].workItemCodeIndex;
|
|
var workItemCode = Dropdown_WorkOrderNumber.options[Dropdown_WorkOrderNumber.value].text;
|
|
|
|
onSearchData?.Invoke(startDateString, endDateString, facilityCode, workItemCode);
|
|
}
|
|
else
|
|
{
|
|
Dropdown_WorkOrderNumber.ClearOptions();
|
|
|
|
ChartData.gameObject.SetActive(false);
|
|
Panel_NotData.gameObject.SetActive(false);
|
|
|
|
SetDayData(Text_StartDay);
|
|
}
|
|
}
|
|
public void SetWorkItemCodeDropDown(WorkItemCodeData itemCodeData)
|
|
{
|
|
this.itemCodeData = itemCodeData;
|
|
Dropdown_WorkOrderNumber.ClearOptions();
|
|
|
|
List<string> data = new List<string>();
|
|
//HashSet<string> deintercatableWorkno = new HashSet<string>();
|
|
|
|
foreach (var workOrderNumber in this.itemCodeData.data)
|
|
{
|
|
if (workOrderNumber.isActive)
|
|
{
|
|
data.Add(workOrderNumber.wordno);
|
|
}
|
|
}
|
|
data.Add("-- 작업 지시 번호를 선택하세요 --");
|
|
Dropdown_WorkOrderNumber.SetHideAndDeinteractableItems(data[data.Count - 1]);
|
|
|
|
List<TMP_Dropdown.OptionData> optionList = new List<TMP_Dropdown.OptionData>();
|
|
foreach (string str in data)
|
|
{
|
|
optionList.Add(new TMP_Dropdown.OptionData(str));
|
|
}
|
|
Dropdown_WorkOrderNumber.AddOptions(optionList);
|
|
Dropdown_WorkOrderNumber.value = data.Count - 1;
|
|
|
|
Image_WorkOrderNumberLoading.gameObject.SetActive(false);
|
|
}
|
|
|
|
private void OnClickSearchBtn()
|
|
{
|
|
if (Dropdown_WorkOrderNumber.value == Dropdown_WorkOrderNumber.options.Count - 1)
|
|
return;
|
|
|
|
DateTime startDate = Convert.ToDateTime(Text_StartDay.text);
|
|
DateTime endDate = Convert.ToDateTime(Text_EndDay.text);
|
|
endDate = endDate.AddDays(+1);
|
|
|
|
string startDateString = startDate.ToString("yyyy-MM-ddTHH:mm:ssZ");
|
|
string endDateString = endDate.ToString("yyyy-MM-ddTHH:mm:ssZ");
|
|
string MCHCD = facilityCode;
|
|
string WO = Dropdown_WorkOrderNumber.options[Dropdown_WorkOrderNumber.value].text;
|
|
|
|
onSearchData?.Invoke(startDateString, endDateString, MCHCD, WO);
|
|
}
|
|
public void SetWorkTimeData(List<BarChartData> barChartData)
|
|
{
|
|
var notDataAlarmActive = barChartData.Count == 0;
|
|
var chartDataActive = barChartData.Count != 0;
|
|
|
|
Panel_NotData.gameObject.SetActive(notDataAlarmActive);
|
|
ChartData.gameObject.SetActive(chartDataActive);
|
|
|
|
if (barChartData.Count > 0)
|
|
{
|
|
ITEMCD.text = barChartData[0].itemcd;
|
|
}
|
|
|
|
var dropdown = Dropdown_WorkOrderNumber;
|
|
var dropdownValue = dropdown.value;
|
|
var dropdownText = dropdown.options[dropdownValue].text;
|
|
|
|
if (!workTimeDatas.ContainsKey(facilityCode))
|
|
{
|
|
var newWorkConditionData = new PreviousWorkTimeData(startDate, endDate, itemCodeData, dropdownText, dropdownValue);
|
|
workTimeDatas.Add(facilityCode, newWorkConditionData);
|
|
}
|
|
else
|
|
{
|
|
var updateWorkConditionData = new PreviousWorkTimeData(startDate, endDate, itemCodeData, dropdownText, dropdownValue);
|
|
workTimeDatas[facilityCode] = updateWorkConditionData;
|
|
}
|
|
barChart.SetChartData(barChartData);
|
|
}
|
|
}
|
|
} |