작업 진행 현황판 UI 기능 개발

This commit is contained in:
정영민
2025-03-17 14:35:34 +09:00
parent e19619c53b
commit 3ac2c52d08
12 changed files with 5589 additions and 41 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@@ -0,0 +1,153 @@
fileFormatVersion: 2
guid: 5cd2354d7ff2596489aec6d4ae577832
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 12
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
flipGreenChannel: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
vTOnly: 0
ignoreMipmapLimit: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: 1
aniso: 1
mipBias: 0
wrapU: 1
wrapV: 1
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
flipbookRows: 1
flipbookColumns: 1
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
ignorePngGamma: 0
applyGammaDecoding: 0
swizzle: 50462976
cookieLightType: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: WebGL
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Server
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
ignorePlatformSupport: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
nameFileIdTable: {}
mipmapLimitGroupName:
pSDRemoveMatte: 0
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 31cf56547e9b8c94e8b4232098fe3a7d
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@@ -40,6 +40,7 @@ namespace CHN
topCanvas.panel_toptoolbar.GetFloor = building.GetFloor; topCanvas.panel_toptoolbar.GetFloor = building.GetFloor;
topCanvas.panel_toptoolbar.onClickAlarms += popupCanvas.panel_completealramhistory.SetActive; topCanvas.panel_toptoolbar.onClickAlarms += popupCanvas.panel_completealramhistory.SetActive;
topCanvas.panel_toptoolbar.onClickScreenInitialization += SceneReLoad; topCanvas.panel_toptoolbar.onClickScreenInitialization += SceneReLoad;
topCanvas.panel_toptoolbar.onClickWorkProgress += popupCanvas.panel_workprogressstatus.Open;
topCanvas.panel_toptoolbar.onClickProductionProgress += popupCanvas.panel_injectionproduction.Open; topCanvas.panel_toptoolbar.onClickProductionProgress += popupCanvas.panel_injectionproduction.Open;
topCanvas.panel_toptoolbar.onClickAssemblyProgress += popupCanvas.panel_assemblyproduction.Open; topCanvas.panel_toptoolbar.onClickAssemblyProgress += popupCanvas.panel_assemblyproduction.Open;
topCanvas.panel_toptoolbar.onClickSetting += popupCanvas.panel_menu.Open; topCanvas.panel_toptoolbar.onClickSetting += popupCanvas.panel_menu.Open;
@@ -80,9 +81,11 @@ namespace CHN
mqttManager.onMachineData += datamanager.MachineMatching; mqttManager.onMachineData += datamanager.MachineMatching;
mqttManager.onMachineData += completeTimeManager.SetCurrentData; mqttManager.onMachineData += completeTimeManager.SetCurrentData;
mqttManager.onMachineData += productionStatusManager.SetFloorProductionStatus; mqttManager.onMachineData += productionStatusManager.SetFloorProductionStatus;
mqttManager.onWorkshopData += productionStatusManager.SetWorkProgressStatus;
productionStatusManager.onFirstFloorInfo += popupCanvas.panel_injectionproduction.SetProductionStatus; productionStatusManager.onFirstFloorInfo += popupCanvas.panel_injectionproduction.SetProductionStatus;
productionStatusManager.onSecondFloorInfo += popupCanvas.panel_assemblyproduction.SetProductionStatus; productionStatusManager.onSecondFloorInfo += popupCanvas.panel_assemblyproduction.SetProductionStatus;
productionStatusManager.onWorkShopInfo += popupCanvas.panel_workprogressstatus.SetWorkProgressStatus;
productionStatusManager.onActiveFirstBoard += popupCanvas.panel_injectionproduction.Open; productionStatusManager.onActiveFirstBoard += popupCanvas.panel_injectionproduction.Open;
productionStatusManager.onActiveSecondBoard += popupCanvas.panel_assemblyproduction.Open; productionStatusManager.onActiveSecondBoard += popupCanvas.panel_assemblyproduction.Open;

View File

@@ -20,6 +20,8 @@ namespace CHN
public Action<List<CompleteInfo>> onFirstFloorInfo; public Action<List<CompleteInfo>> onFirstFloorInfo;
public Action<List<CompleteInfo>> onSecondFloorInfo; public Action<List<CompleteInfo>> onSecondFloorInfo;
public Action<List<WorkShopInfo>> onWorkShopInfo;
public Action onActiveFirstBoard; public Action onActiveFirstBoard;
public Action onActiveSecondBoard; public Action onActiveSecondBoard;
@@ -28,6 +30,10 @@ namespace CHN
building = FindSingle<Building>(); building = FindSingle<Building>();
} }
public void SetWorkProgressStatus(List<WorkShopInfo> workShopInfos)
{
onWorkShopInfo?.Invoke(workShopInfos);
}
public void SetFloorProductionStatus(List<CompleteInfo> completeInfos) public void SetFloorProductionStatus(List<CompleteInfo> completeInfos)
{ {
productionStatusInfos = completeInfos; productionStatusInfos = completeInfos;

View File

@@ -17,6 +17,7 @@ namespace CHN
public Panel_WorkTimeAnalysis panel_worktimeanalysis; public Panel_WorkTimeAnalysis panel_worktimeanalysis;
public Panel_InjectionProduction panel_injectionproduction; public Panel_InjectionProduction panel_injectionproduction;
public Panel_AssemblyProduction panel_assemblyproduction; public Panel_AssemblyProduction panel_assemblyproduction;
public Panel_WorkProgressStatus panel_workprogressstatus;
public Panel_MiniMap panel_minimap; public Panel_MiniMap panel_minimap;
[Label(typeof(UI_WorkAnalysis),nameof(UI_WorkAnalysis))] [Label(typeof(UI_WorkAnalysis),nameof(UI_WorkAnalysis))]
public UI_WorkAnalysis ui_workanalysis; public UI_WorkAnalysis ui_workanalysis;

View File

@@ -1,18 +1,92 @@
using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using TMPro;
using UnityEngine; using UnityEngine;
using UnityEngine.UI;
using static MQTT;
using WI;
public class Panel_WorkProgressStatus : MonoBehaviour public class Panel_WorkProgressStatus : PanelBase
{ {
// Start is called before the first frame update public Dictionary<string, UI_WorkStatusItem> workStatuses = new Dictionary<string, UI_WorkStatusItem>();
void Start() private Panel_Effect effect;
{ private UI_WorkStatusItem prf_workStatusItem;
public ScrollRect ScrollView_StatusItems;
} public Button CloseButton;
public TextMeshProUGUI CurrentDate;
public TextMeshProUGUI CurrentTime;
// Update is called once per frame public float fadeTime;
void Update()
public override void AfterAwake()
{ {
prf_workStatusItem = Resources.Load<UI_WorkStatusItem>("Prefabs/UI/UI_WorkStatusItem");
CloseButton.onClick.AddListener(Close);
SetDate();
Close();
}
public void Update()
{
SetTime();
}
public void Open()
{
effect.gameObject.SetActive(true);
gameObject.SetActive(true);
StopAllCoroutines();
StartCoroutine(ScaleUp());
}
public void Close()
{
effect.gameObject.SetActive(false);
gameObject.SetActive(false);
gameObject.transform.localScale = Vector3.zero;
}
public void SetWorkProgressStatus(List<WorkShopInfo> workShopInfos)
{
bool odd = true;
foreach (var workShopInfo in workShopInfos)
{
if (!workStatuses.ContainsKey(workShopInfo.groupcd))
{
var workStatusItem = Instantiate(prf_workStatusItem, ScrollView_StatusItems.content);
workStatuses.Add(workShopInfo.groupcd, workStatusItem);
}
if (odd)
{
workStatuses[workShopInfo.groupcd].SetStatusData(workShopInfo, new Color(0.07058824f, 0.1294118f, 0.2941177f));
}
else
{
workStatuses[workShopInfo.groupcd].SetStatusData(workShopInfo, new Color(0.04313726f, 0.09019608f, 0.2235294f));
}
odd = !odd;
}
}
public void SetDate()
{
CurrentDate.text = DateTime.Now.ToString("yyyy.MM.dd");
}
public void SetTime()
{
CurrentTime.text = DateTime.Now.ToString("HH:mm");
}
IEnumerator ScaleUp()
{
float timer = 0f;
float percent = 0f;
while (percent < 1)
{
timer += Time.deltaTime;
percent = timer / fadeTime;
transform.localScale = Vector3.Lerp(transform.localScale, Vector3.one, percent);
yield return null;
}
} }
} }

View File

@@ -0,0 +1,37 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
using static MQTT;
using WI;
using UnityEngine.UI;
public class UI_WorkStatusItem : UIBase
{
private TextMeshProUGUI groupcd;
private TextMeshProUGUI groupnm;
private TextMeshProUGUI mchcnt;
private TextMeshProUGUI planqty;
private TextMeshProUGUI workqty;
private TextMeshProUGUI goodqty;
private TextMeshProUGUI badqty;
private TextMeshProUGUI badrate;
private TextMeshProUGUI progressrate;
private Image background;
public void SetStatusData(WorkShopInfo workshopInfo, Color color)
{
background = GetComponent<Image>();
groupcd.SetText(workshopInfo.groupcd);
groupnm.SetText(workshopInfo.groupnm);
mchcnt.SetText(workshopInfo.mchcnt);
planqty.SetText(workshopInfo.planqty);
workqty.SetText(workshopInfo.workqty);
goodqty.SetText(workshopInfo.goodqty);
badqty.SetText(workshopInfo.badqty);
badrate.SetText(workshopInfo.badrate);
progressrate.SetText(workshopInfo.progressrate);
background.color = color;
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 7c3791ab1f033574e8f2ce1733edb9df
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -803,7 +803,7 @@
"ptotm": "2025-03-19 07:57:24", "ptotm": "2025-03-19 07:57:24",
"psttm": "2025-03-11 08:03:31" "psttm": "2025-03-11 08:03:31"
}, },
"isCheck": true "isCheck": false
}, },
{ {
"completeInfo": { "completeInfo": {
@@ -922,7 +922,7 @@
"worknm": "GF6 C/VB LINE-1", "worknm": "GF6 C/VB LINE-1",
"workseq": "1", "workseq": "1",
"status": "1", "status": "1",
"statusnm": "가동", "statusnm": "가동",
"itemcd": "24295087", "itemcd": "24295087",
"itemdesc": "COVER ASM-C/VLV BODY", "itemdesc": "COVER ASM-C/VLV BODY",
"pjtcd": "GF6", "pjtcd": "GF6",
@@ -957,7 +957,7 @@
"worknm": "GF9 C/VB LINE", "worknm": "GF9 C/VB LINE",
"workseq": "1", "workseq": "1",
"status": "1", "status": "1",
"statusnm": "가동", "statusnm": "가동",
"itemcd": "24049859-GMA", "itemcd": "24049859-GMA",
"itemdesc": "COVER ASM-C/VLV BODY", "itemdesc": "COVER ASM-C/VLV BODY",
"pjtcd": "GF9", "pjtcd": "GF9",
@@ -992,7 +992,7 @@
"worknm": "CVT C/VB LINE", "worknm": "CVT C/VB LINE",
"workseq": "1", "workseq": "1",
"status": "4", "status": "4",
"statusnm": "가동", "statusnm": "가동",
"itemcd": "00000000", "itemcd": "00000000",
"itemdesc": "None", "itemdesc": "None",
"pjtcd": "None", "pjtcd": "None",
@@ -1062,7 +1062,7 @@
"worknm": "SGE W/O LINE", "worknm": "SGE W/O LINE",
"workseq": "1", "workseq": "1",
"status": "1", "status": "1",
"statusnm": "가동", "statusnm": "가동",
"itemcd": "12707589-GMA", "itemcd": "12707589-GMA",
"itemdesc": "OUTLET ASM WATER", "itemdesc": "OUTLET ASM WATER",
"pjtcd": "SGE", "pjtcd": "SGE",
@@ -1097,7 +1097,7 @@
"worknm": "CSS W/O LINE", "worknm": "CSS W/O LINE",
"workseq": "1", "workseq": "1",
"status": "1", "status": "1",
"statusnm": "가동", "statusnm": "가동",
"itemcd": "55513502", "itemcd": "55513502",
"itemdesc": "OUTLET ASM-WAT", "itemdesc": "OUTLET ASM-WAT",
"pjtcd": "CSS PRIME", "pjtcd": "CSS PRIME",
@@ -1132,7 +1132,7 @@
"worknm": "U/SONIC WELD-1", "worknm": "U/SONIC WELD-1",
"workseq": "2", "workseq": "2",
"status": "4", "status": "4",
"statusnm": "가동", "statusnm": "가동",
"itemcd": "24051088-KOR", "itemcd": "24051088-KOR",
"itemdesc": "SCOOP ASM-DRV LINK LUB", "itemdesc": "SCOOP ASM-DRV LINK LUB",
"pjtcd": "GF6", "pjtcd": "GF6",
@@ -1167,7 +1167,7 @@
"worknm": "U/SONIC WELD-2", "worknm": "U/SONIC WELD-2",
"workseq": "1", "workseq": "1",
"status": "1", "status": "1",
"statusnm": "가동", "statusnm": "가동",
"itemcd": "24298736", "itemcd": "24298736",
"itemdesc": "SCOOP ASM-DRV LINK LUB", "itemdesc": "SCOOP ASM-DRV LINK LUB",
"pjtcd": "GF9", "pjtcd": "GF9",
@@ -1272,7 +1272,7 @@
"worknm": "INSULATOR-ENG FFRT CVR", "worknm": "INSULATOR-ENG FFRT CVR",
"workseq": "1", "workseq": "1",
"status": "4", "status": "4",
"statusnm": "가동", "statusnm": "가동",
"itemcd": "12713791", "itemcd": "12713791",
"itemdesc": "INSULATOR-ENG FFRT CVR", "itemdesc": "INSULATOR-ENG FFRT CVR",
"pjtcd": "CSS PRIME", "pjtcd": "CSS PRIME",
@@ -1412,7 +1412,7 @@
"worknm": "최종검사-02", "worknm": "최종검사-02",
"workseq": "1", "workseq": "1",
"status": "1", "status": "1",
"statusnm": "가동중", "statusnm": "휴식시간",
"itemcd": "42805124-KOR", "itemcd": "42805124-KOR",
"itemdesc": "SHIELD-RR CLSR HANDS FREE SEN", "itemdesc": "SHIELD-RR CLSR HANDS FREE SEN",
"pjtcd": "9BYC(MCM)", "pjtcd": "9BYC(MCM)",
@@ -1447,7 +1447,7 @@
"worknm": "최종검사-04", "worknm": "최종검사-04",
"workseq": "2", "workseq": "2",
"status": "1", "status": "1",
"statusnm": "가동중", "statusnm": "휴식시간",
"itemcd": "42817941-KOR", "itemcd": "42817941-KOR",
"itemdesc": "MOLDING ASM-RR S/D WDO GARN RH", "itemdesc": "MOLDING ASM-RR S/D WDO GARN RH",
"pjtcd": "", "pjtcd": "",
@@ -1482,7 +1482,7 @@
"worknm": "최종검사-05", "worknm": "최종검사-05",
"workseq": "1", "workseq": "1",
"status": "1", "status": "1",
"statusnm": "가동중", "statusnm": "휴식시간",
"itemcd": "24299058-KOR", "itemcd": "24299058-KOR",
"itemdesc": "BAFFLE-FRT DIFF CARR", "itemdesc": "BAFFLE-FRT DIFF CARR",
"pjtcd": "GF6 GEN3", "pjtcd": "GF6 GEN3",
@@ -1500,7 +1500,7 @@
"sttm": "0818", "sttm": "0818",
"totm": "", "totm": "",
"goaltime": "111", "goaltime": "111",
"ptotm": "2025-03-17 12:01:38", "ptotm": "2025-03-17 16:37:14",
"psttm": "2025-03-11 08:18:02" "psttm": "2025-03-11 08:18:02"
}, },
"isCheck": false "isCheck": false
@@ -1517,7 +1517,7 @@
"worknm": "최종검사-07", "worknm": "최종검사-07",
"workseq": "1", "workseq": "1",
"status": "1", "status": "1",
"statusnm": "가동중", "statusnm": "휴식시간",
"itemcd": "24299051-KOR", "itemcd": "24299051-KOR",
"itemdesc": "BAFFLE-FRT DIFF CARR", "itemdesc": "BAFFLE-FRT DIFF CARR",
"pjtcd": "GF6 GEN3", "pjtcd": "GF6 GEN3",
@@ -1552,7 +1552,7 @@
"worknm": "최종검사-09", "worknm": "최종검사-09",
"workseq": "1", "workseq": "1",
"status": "1", "status": "1",
"statusnm": "가동중", "statusnm": "휴식시간",
"itemcd": "24298741-GMA", "itemcd": "24298741-GMA",
"itemdesc": "BAFFLE ASM-FRT DIFF CARR", "itemdesc": "BAFFLE ASM-FRT DIFF CARR",
"pjtcd": "GF9", "pjtcd": "GF9",
@@ -1587,7 +1587,7 @@
"worknm": "최종검사-10", "worknm": "최종검사-10",
"workseq": "1", "workseq": "1",
"status": "1", "status": "1",
"statusnm": "가동중", "statusnm": "휴식시간",
"itemcd": "24298740-GMA", "itemcd": "24298740-GMA",
"itemdesc": "BAFFLE ASM-FRT DIFF CARR", "itemdesc": "BAFFLE ASM-FRT DIFF CARR",
"pjtcd": "GF9", "pjtcd": "GF9",
@@ -1675,7 +1675,7 @@
"sttm": "0758", "sttm": "0758",
"totm": "", "totm": "",
"goaltime": "439", "goaltime": "439",
"ptotm": "2025-03-17 10:46:43", "ptotm": "2025-03-17 15:47:18",
"psttm": "2025-03-12 07:58:05" "psttm": "2025-03-12 07:58:05"
}, },
"isCheck": false "isCheck": false
@@ -1727,7 +1727,7 @@
"worknm": "최종검사-08", "worknm": "최종검사-08",
"workseq": "1", "workseq": "1",
"status": "1", "status": "1",
"statusnm": "가동중", "statusnm": "휴식시간",
"itemcd": "24298738-SGM", "itemcd": "24298738-SGM",
"itemdesc": "BAFFLE ASM-FRT DIFF CARR", "itemdesc": "BAFFLE ASM-FRT DIFF CARR",
"pjtcd": "GF9", "pjtcd": "GF9",
@@ -1749,6 +1749,41 @@
"psttm": "2025-03-12 15:24:58" "psttm": "2025-03-12 15:24:58"
}, },
"isCheck": false "isCheck": false
},
{
"completeInfo": {
"datagbn": "D",
"wordno": "WO202503170084",
"workdt": "20250317",
"daynight": "1",
"sitecd": "1",
"wccd": "W40",
"workcd": "MN-02",
"worknm": "가공반-2",
"workseq": "1",
"status": "1",
"statusnm": "가동중",
"itemcd": "24268570-GMA",
"itemdesc": "CAP-A/TRNS WRG HARN CONN",
"pjtcd": "GF9",
"matcd": "",
"cycletime": "2.00",
"cavity": "1",
"planqty": "20000.00000",
"goalqty": "81.00000",
"workqty": "0.00000",
"goodqty": "0.00000",
"badqty": "0.00000",
"adrate": "",
"efficiency": "0.00000",
"progressrate": "0.00000",
"sttm": "1332",
"totm": "",
"goaltime": "666",
"ptotm": "2025-03-18 00:38:21",
"psttm": "2025-03-17 13:32:21"
},
"isCheck": false
} }
] ]
} }