80 lines
2.8 KiB
C#
80 lines
2.8 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using UnityEngine;
|
|
using WI;
|
|
using static MQTT;
|
|
|
|
namespace CHN
|
|
{
|
|
public class ProductionStatusManager : MonoBehaviour, ISingle
|
|
{
|
|
public Building building;
|
|
|
|
public List<CompleteInfo> productionStatusInfos = new();
|
|
|
|
public Dictionary<string,CompleteInfo> firstFloorInfo = new Dictionary<string, CompleteInfo>();
|
|
public Dictionary<string, CompleteInfo> secondFloorInfo = new Dictionary<string, CompleteInfo>();
|
|
|
|
public Action<List<CompleteInfo>> onFirstFloorInfo;
|
|
public Action<List<CompleteInfo>> onSecondFloorInfo;
|
|
public Action<List<CompleteInfo>, List<CompleteInfo>> onTotalFloorInfo;
|
|
public Action<List<CompleteInfo>> onFinalInspectionData;
|
|
|
|
public Action<List<WorkShopInfo>> onWorkShopInfo;
|
|
|
|
public override void AfterAwake()
|
|
{
|
|
building = FindSingle<Building>();
|
|
}
|
|
|
|
public void SetWorkProgressStatus(List<WorkShopInfo> workShopInfos)
|
|
{
|
|
onWorkShopInfo?.Invoke(workShopInfos);
|
|
}
|
|
public void SetFloorProductionStatus(List<CompleteInfo> completeInfos)
|
|
{
|
|
productionStatusInfos = completeInfos;
|
|
|
|
foreach (var completeInfo in completeInfos)
|
|
{
|
|
SetFloorInfo(building.floors[0], completeInfo, firstFloorInfo);
|
|
SetFloorInfo(building.floors[1], completeInfo, secondFloorInfo);
|
|
}
|
|
|
|
var firstFloorInfos = firstFloorInfo.Values.ToList();
|
|
var secondFloorInfos = secondFloorInfo.Values.ToList();
|
|
var finalInspectionInfos = completeInfos.Where(i => i.wccd == "W30").ToList();
|
|
|
|
productionStatusInfos.Clear();
|
|
productionStatusInfos.AddRange(firstFloorInfos);
|
|
productionStatusInfos.AddRange(secondFloorInfos);
|
|
|
|
onFirstFloorInfo?.Invoke(firstFloorInfos);
|
|
onSecondFloorInfo?.Invoke(secondFloorInfos);
|
|
onTotalFloorInfo?.Invoke(firstFloorInfos, secondFloorInfos);
|
|
onFinalInspectionData?.Invoke(finalInspectionInfos);
|
|
}
|
|
public void SetFloorInfo(Floor floor, CompleteInfo completeInfo, Dictionary<string, CompleteInfo> floorInfo)
|
|
{
|
|
foreach (var machine in floor.machines)
|
|
{
|
|
if (machine.code == completeInfo.workcd)
|
|
{
|
|
if (!floorInfo.ContainsKey(completeInfo.workcd))
|
|
{
|
|
floorInfo.Add(completeInfo.workcd, completeInfo);
|
|
|
|
}
|
|
else
|
|
{
|
|
floorInfo[completeInfo.workcd] = completeInfo;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|