Merge pull request '완료 시간 알람 기능 복원 및 카메라 시점 기능 개발' (#21) from dev/jym/240312_04 into main

Reviewed-on: http://220.90.135.190:3000/UVCXR/ChunilENG/pulls/21
This commit was merged in pull request #21.
This commit is contained in:
jym
2025-03-12 18:56:41 +09:00
14 changed files with 22465 additions and 531 deletions

View File

@@ -26,18 +26,18 @@ MonoBehaviour:
_elevationRotateLimit: 0 _elevationRotateLimit: 0
_isFirstPersonView: 0 _isFirstPersonView: 0
originElevation: 28.5 originElevation: 28.5
currentElevation: 28.5 currentElevation: 90
elevationSensivity: 15 elevationSensivity: 15
minElevation: 5 minElevation: 5
maxElevation: 90 maxElevation: 90
originAzimuth: 133 originAzimuth: 133
currentAzimuth: 133 currentAzimuth: 89.75
azimuthSensivity: 15 azimuthSensivity: 15
maxDistance: 150 maxDistance: 150
minDistance: 5 minDistance: 5
moveClamper: 0.5334569 moveClamper: 0.033333335
originDistance: 120 originDistance: 120
originTargetPos: {x: -37.685005, y: 27, z: 29.893412} originTargetPos: {x: -37.685005, y: 27, z: 29.893412}
originTargetRot: {x: -0, y: 0, z: 0} originTargetRot: {x: -0, y: 0, z: 0}
currentDistance: 120.02781 currentDistance: 115.012886
target: {fileID: 0} target: {fileID: 0}

View File

@@ -161,8 +161,6 @@ namespace WI
moveVector *= option.moveClamper * option.moveSpeed * option.moveSensivity; moveVector *= option.moveClamper * option.moveSpeed * option.moveSensivity;
nextPosition = option.target.position - moveVector; nextPosition = option.target.position - moveVector;
} }
} }
Vector3 CalculateMovePosition(Vector3 origPos, Vector3 moveVec) Vector3 CalculateMovePosition(Vector3 origPos, Vector3 moveVec)
@@ -277,6 +275,7 @@ namespace WI
var distPos = Quaternion.Euler(option.currentElevation, option.currentAzimuth, 0f) * dist; var distPos = Quaternion.Euler(option.currentElevation, option.currentAzimuth, 0f) * dist;
cameraPosition = nextPosition + distPos; cameraPosition = nextPosition + distPos;
camera.transform.position = cameraPosition; camera.transform.position = cameraPosition;
camera.orthographicSize = Mathf.Clamp(option.currentDistance, option.minDistance, option.maxDistance);
if (option.currentElevation <= 90f) if (option.currentElevation <= 90f)
{ {
@@ -378,22 +377,14 @@ namespace WI
break; break;
} }
} }
public void ChangeCameraView()
{
if (!option.isFirstPersonView)
{
SetViewMode(ViewMode.FirstPersonView);
}
else
{
SetViewMode(ViewMode.PerspectiveView);
}
}
public void CameraTopView() public void CameraTopView()
{ {
option.maxDistance = 35f;
option.currentElevation = 90f; option.currentElevation = 90f;
CameraFix(); option.currentDistance = 35f;
option.currentAzimuth = 0f;
LastPositioning(true);
} }
public void CameraFirstPersonView() public void CameraFirstPersonView()
{ {
@@ -406,6 +397,7 @@ namespace WI
} }
public void CameraPerspectiveView() public void CameraPerspectiveView()
{ {
option.maxDistance = 150f;
option.currentDistance = option.originDistance; option.currentDistance = option.originDistance;
option.currentAzimuth = option.originAzimuth; option.currentAzimuth = option.originAzimuth;
option.currentElevation = option.originElevation; option.currentElevation = option.originElevation;
@@ -417,14 +409,6 @@ namespace WI
nextPosition = pos; nextPosition = pos;
LastPositioning(true); LastPositioning(true);
} }
public void SetTargetYUpPos(Vector3 pos)
{
var targetPos = pos;
targetPos.y += yUpPos;
nextPosition = targetPos;
LastPositioning(true);
}
private void FindLookAtObject() private void FindLookAtObject()
{ {
switch(viewMode) switch(viewMode)

File diff suppressed because it is too large Load Diff

View File

@@ -63,7 +63,7 @@ namespace CHN
var pos = controller.option.target.position; var pos = controller.option.target.position;
pos.y = currentFloor.StartPoint.position.y; pos.y = currentFloor.StartPoint.position.y;
controller.SetTargetYUpPos(pos); controller.SetTargetPos(pos);
if (currentFloor.isEmptyFloor) if (currentFloor.isEmptyFloor)
{ {
@@ -82,6 +82,7 @@ namespace CHN
} }
} }
} }
SetAllFloorExternalState(); SetAllFloorExternalState();
if (!controller.option.isFirstPersonView) if (!controller.option.isFirstPersonView)

View File

@@ -34,16 +34,18 @@ namespace CHN
//building.onSettingBuildingComplete += topCanvas.panel_toptoolbar.SetChangeViewState; //building.onSettingBuildingComplete += topCanvas.panel_toptoolbar.SetChangeViewState;
topCanvas.panel_toolbar.onClickDashBoard += popupCanvas.panel_dashboard.Open;
topCanvas.panel_toolbar.onClickCameraView += ChangeCameraView;
topCanvas.panel_toptoolbar.GetFloor = building.GetFloor; topCanvas.panel_toptoolbar.GetFloor = building.GetFloor;
//topCanvas.panel_toptoolbar.onChangeView += ChangeCameraView; //topCanvas.panel_toptoolbar.onChangeView += ChangeCameraView;
topCanvas.panel_toptoolbar.onClickAlarms += popupCanvas.panel_completealramhistory.SetActive;
topCanvas.panel_toptoolbar.onClickScreenInitialization += SceneReLoad; topCanvas.panel_toptoolbar.onClickScreenInitialization += SceneReLoad;
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;
rightCanvas.panel_floorcontrol.onValueChanged += building.SetTopFloor; rightCanvas.panel_floorcontrol.onValueChanged += building.SetTopFloor;
//rightCanvas.panel_floorcontrol.onValueChanged += topCanvas.panel_toptoolbar.SetChangeViewState;
topCanvas.panel_toolbar.onClickDashBoard += popupCanvas.panel_dashboard.Open;
popupCanvas.panel_library.onClickLabelButton += libraryManager.LibraryFiltering; popupCanvas.panel_library.onClickLabelButton += libraryManager.LibraryFiltering;
popupCanvas.panel_protocolsetting.onUpdateMachine += libraryManager.MatchingMachine; popupCanvas.panel_protocolsetting.onUpdateMachine += libraryManager.MatchingMachine;
@@ -58,6 +60,8 @@ namespace CHN
popupCanvas.onClickDetail += datamanager.GetCompleteInfo; popupCanvas.onClickDetail += datamanager.GetCompleteInfo;
popupCanvas.panel_completealramhistory.onCheckAlarmData += completeTimeManager.CheckCompleteTimeAlarm; popupCanvas.panel_completealramhistory.onCheckAlarmData += completeTimeManager.CheckCompleteTimeAlarm;
popupCanvas.panel_completealramhistory.onCheckAlarm += topCanvas.panel_toptoolbar.SetAlarmCount;
popupCanvas.panel_completealramhistory.onOpen += popupCanvas.panel_dashboard.dashBoardCheckListBox.OnOpenDashboardItem;
popupCanvas.panel_completealramhistory.onClose += popupCanvas.panel_dashboard.dashBoardCheckListBox.OnCloseDashbordItem; popupCanvas.panel_completealramhistory.onClose += popupCanvas.panel_dashboard.dashBoardCheckListBox.OnCloseDashbordItem;
popupCanvas.panel_workconditionanalysis.onSearchData += httpManager.SearchWorkConditions; popupCanvas.panel_workconditionanalysis.onSearchData += httpManager.SearchWorkConditions;
@@ -91,7 +95,6 @@ namespace CHN
httpManager.onSendWorkConditionsData += workConditionsManager.SetWorkConditionsData; httpManager.onSendWorkConditionsData += workConditionsManager.SetWorkConditionsData;
httpManager.onSendWorkTimeData += workTimeManager.SetWorkTimeData; httpManager.onSendWorkTimeData += workTimeManager.SetWorkTimeData;
//workConditionsManager.onSendChartLabels += popupCanvas.panel_workconditionanalysis.SetChartLabels;
workConditionsManager.onCompleteLoadData += popupCanvas.panel_workconditionanalysis.SetWorkConditionsData; workConditionsManager.onCompleteLoadData += popupCanvas.panel_workconditionanalysis.SetWorkConditionsData;
workConditionsManager.onSendMainChartData += popupCanvas.panel_workconditionanalysis.SetChartData; workConditionsManager.onSendMainChartData += popupCanvas.panel_workconditionanalysis.SetChartData;
workConditionsManager.onSendSubChartData += popupCanvas.panel_workconditionanalysis.SetSubChartDatas; workConditionsManager.onSendSubChartData += popupCanvas.panel_workconditionanalysis.SetSubChartDatas;
@@ -132,14 +135,13 @@ namespace CHN
var raycaster = FindSingle<CHNRaycaster>(); var raycaster = FindSingle<CHNRaycaster>();
if (raycaster.hitFloorIndex != building.currentFloor.floorIndex) //if (raycaster.hitFloorIndex != building.currentFloor.floorIndex)
{ //{
var slider = FindSingle<Canvas_Right>().panel_floorcontrol; // var slider = FindSingle<Canvas_Right>().panel_floorcontrol;
slider.ChangeValueFromOutside(raycaster.hitFloorIndex); // slider.ChangeValueFromOutside(raycaster.hitFloorIndex);
} //}
var pos = controller.option.target.position; var pos = controller.option.target.position;
pos.y -= controller.yUpPos;
if (building.currentFloor.FloorContainsPoint(pos)) if (building.currentFloor.FloorContainsPoint(pos))
break; break;

View File

@@ -9,11 +9,12 @@ namespace CHN
public int floorIndex; public int floorIndex;
public List<Machine> machines = new(); public List<Machine> machines = new();
public bool isEmptyFloor => machines.Count == 0; public bool isEmptyFloor;
public Transform StartPoint; public Transform StartPoint;
public GameObject Outer; public GameObject Outer;
public GameObject TopSurfaces; public GameObject TopSurfaces;
public GameObject FloorGroundCollider;
//public GameObject Ceiling; //public GameObject Ceiling;
public GameObject VisualizationAreas; public GameObject VisualizationAreas;
Transform CeilingQuad; Transform CeilingQuad;
@@ -29,6 +30,9 @@ namespace CHN
case nameof(Outer): case nameof(Outer):
Outer = transform.GetChild(i).gameObject; Outer = transform.GetChild(i).gameObject;
break; break;
case nameof(FloorGroundCollider):
FloorGroundCollider = transform.GetChild(i).gameObject;
break;
//case nameof(Ceiling): //case nameof(Ceiling):
// Ceiling = transform.GetChild(i).gameObject; // Ceiling = transform.GetChild(i).gameObject;
// break; // break;
@@ -44,7 +48,7 @@ namespace CHN
public bool FloorContainsPoint(Vector3 pos) public bool FloorContainsPoint(Vector3 pos)
{ {
var floorColliders = transform.GetComponents<BoxCollider>(); var floorColliders = FloorGroundCollider.GetComponentsInChildren<BoxCollider>();
foreach(var collider in floorColliders) foreach(var collider in floorColliders)
{ {

View File

@@ -15,8 +15,9 @@ namespace CHN
public Dictionary<string, UI_CompleteTimeAlarmInfo> completeInfoList = new(); public Dictionary<string, UI_CompleteTimeAlarmInfo> completeInfoList = new();
public List<UI_CompleteTimeAlarmInfo> notCheckAlramList = new(); public List<UI_CompleteTimeAlarmInfo> notCheckAlramList = new();
//public Action<int> onCheckAlarm; public Action<int> onCheckAlarm;
public Action<CompleteInfo, bool> onCheckAlarmData; public Action<CompleteInfo, bool> onCheckAlarmData;
public Action<string> onOpen;
public Action<string> onClose; public Action<string> onClose;
public override void AfterAwake() public override void AfterAwake()
@@ -26,9 +27,24 @@ namespace CHN
completeInfoList.Clear(); completeInfoList.Clear();
SetActive(false); SetActive(false);
} }
public void SetActive()
{
var isActive = rectTransform.gameObject.activeSelf;
var active = isActive ? false : true;
if (active)
{
Open();
}
else
{
Close();
}
}
public void Open() public void Open()
{ {
SetActive(true); onOpen?.Invoke("완료 시간 알람");
} }
public void Close() public void Close()
{ {
@@ -51,24 +67,24 @@ namespace CHN
completeInfoList.Add(infos[i].completeInfo.worknm, infoItem); completeInfoList.Add(infos[i].completeInfo.worknm, infoItem);
//if (!infoItem.isCheck) if (!infoItem.isCheck)
//{ {
// notCheckAlramList.Add(infoItem); notCheckAlramList.Add(infoItem);
//} }
} }
} }
//BlinkAlarmItems(); BlinkAlarmItems();
}
private void BlinkAlarmItems()
{
onCheckAlarm?.Invoke(notCheckAlramList.Count);
} }
//private void BlinkAlarmItems()
//{
// onCheckAlarm?.Invoke(notCheckAlramList.Count);
//}
private void CheckAlram(UI_CompleteTimeAlarmInfo completeTimeAlarmInfo) private void CheckAlram(UI_CompleteTimeAlarmInfo completeTimeAlarmInfo)
{ {
onCheckAlarmData?.Invoke(completeTimeAlarmInfo.completeInfo, completeTimeAlarmInfo.isCheck); onCheckAlarmData?.Invoke(completeTimeAlarmInfo.completeInfo, completeTimeAlarmInfo.isCheck);
//notCheckAlramList.Remove(completeTimeAlarmInfo); notCheckAlramList.Remove(completeTimeAlarmInfo);
//onCheckAlarm?.Invoke(notCheckAlramList.Count); onCheckAlarm?.Invoke(notCheckAlramList.Count);
} }
} }
} }

View File

@@ -13,6 +13,7 @@ namespace CHN
public Button Button_WorkProgress; public Button Button_WorkProgress;
public Button Button_ProductionProgress; public Button Button_ProductionProgress;
public Button Button_AssemblyProgress; public Button Button_AssemblyProgress;
public Button Button_Alrams;
public Button Button_Setting; public Button Button_Setting;
public Button Button_Exit; public Button Button_Exit;
@@ -20,11 +21,12 @@ namespace CHN
public Action onClickWorkProgress; public Action onClickWorkProgress;
public Action onClickProductionProgress; public Action onClickProductionProgress;
public Action onClickAssemblyProgress; public Action onClickAssemblyProgress;
public Action onClickAlarms;
public Action onClickSetting; public Action onClickSetting;
public Action onClickExit; public Action onClickExit;
//public Action onClickCompleteTimeAlarm; public Action onClickCompleteTimeAlarm;
//public Action<ViewMode> onChangeView; public Action<ViewMode> onChangeView;
//public Image Image_Alarm; //public Image Image_Alarm;
@@ -34,6 +36,7 @@ namespace CHN
Button_WorkProgress.onClick.AddListener(OnClickWorkProgress); Button_WorkProgress.onClick.AddListener(OnClickWorkProgress);
Button_ProductionProgress.onClick.AddListener(OnClickProductionProgress); Button_ProductionProgress.onClick.AddListener(OnClickProductionProgress);
Button_AssemblyProgress.onClick.AddListener(OnClickAssemblyProgress); Button_AssemblyProgress.onClick.AddListener(OnClickAssemblyProgress);
Button_Alrams.onClick.AddListener(OnClickAlrams);
Button_Setting.onClick.AddListener(OnClickSetting); Button_Setting.onClick.AddListener(OnClickSetting);
Button_Exit.onClick.AddListener(OnClickExit); Button_Exit.onClick.AddListener(OnClickExit);
@@ -58,6 +61,10 @@ namespace CHN
{ {
onClickAssemblyProgress?.Invoke(); onClickAssemblyProgress?.Invoke();
} }
private void OnClickAlrams()
{
onClickAlarms?.Invoke();
}
private void OnClickSetting() private void OnClickSetting()
{ {
onClickSetting?.Invoke(); onClickSetting?.Invoke();
@@ -67,11 +74,11 @@ namespace CHN
onClickExit?.Invoke(); onClickExit?.Invoke();
} }
//public void SetAlarmCount(int count) public void SetAlarmCount(int count)
//{ {
// var text = Button_Alarms.GetComponentInChildren<TMP_Text>(); var text = Button_Alrams.GetComponentInChildren<TMP_Text>();
// text.SetText(count.ToString()); text.SetText(count.ToString());
//} }
//private void OnClickCompleteTimeAlarm() //private void OnClickCompleteTimeAlarm()
//{ //{

View File

@@ -126,7 +126,10 @@ namespace CHN
foreach (var machine in matchingMachines) foreach (var machine in matchingMachines)
{ {
if (machine.GetComponentInParent<Floor>() != currentFloor) if (machine.GetComponentInParent<Floor>() != currentFloor)
{
machine.machineKPI.SetActive(false);
continue; continue;
}
MachineKPIsActive(machine, layerMask); MachineKPIsActive(machine, layerMask);
@@ -134,6 +137,16 @@ namespace CHN
machineKPI.transform.localScale = originScale * distanceScale; machineKPI.transform.localScale = originScale * distanceScale;
} }
} }
bool IsScreenRange(Machine machine)
{
Vector3 viewPos = cam.camera.WorldToViewportPoint(machine.centerPos);
if (viewPos.x >= 0 && viewPos.x <= 1 && viewPos.y >= 0 && viewPos.y <= 1 && viewPos.z > 0)
{
return true;
}
return false;
}
void MachineKPIsActive(Machine machine, LayerMask layerMask) void MachineKPIsActive(Machine machine, LayerMask layerMask)
{ {
var dir = cam.camera.transform.localPosition - machine.centerPos; var dir = cam.camera.transform.localPosition - machine.centerPos;
@@ -145,6 +158,9 @@ namespace CHN
if (hitCameraLayer) if (hitCameraLayer)
{ {
if (!IsScreenRange(machine))
return;
machine.machineKPI.Active(); machine.machineKPI.Active();
} }
else else

View File

@@ -32,7 +32,7 @@ namespace CHN
{ {
var dic = new Dictionary<string, GameObject>(); var dic = new Dictionary<string, GameObject>();
dic.Add("완료 알람 시간", completeAlramHistory.gameObject); dic.Add("완료 시간 알람", completeAlramHistory.gameObject);
dic.Add("라이브러리", library.gameObject); dic.Add("라이브러리", library.gameObject);
dic.Add("작업 조건 분석", workConditionAnalysis.gameObject); dic.Add("작업 조건 분석", workConditionAnalysis.gameObject);
dic.Add("작업 시간 분석", workTimeAnalysis.gameObject); dic.Add("작업 시간 분석", workTimeAnalysis.gameObject);

View File

@@ -24,6 +24,7 @@ public class Panel_ToolBar : PanelBase
private CaptureBase capture; private CaptureBase capture;
public Action onClickDashBoard; public Action onClickDashBoard;
public Action<ViewMode> onClickCameraView;
public override void AfterAwake() public override void AfterAwake()
{ {
Button_TopView.onClick.AddListener(OnClickTopView); Button_TopView.onClick.AddListener(OnClickTopView);
@@ -130,16 +131,16 @@ public class Panel_ToolBar : PanelBase
private void OnClickShoulderView() private void OnClickShoulderView()
{ {
Debug.Log("ShoulderView"); onClickCameraView?.Invoke(ViewMode.FirstPersonView);
} }
private void OnClickQuaterView() private void OnClickQuaterView()
{ {
Debug.Log("QuaterView"); onClickCameraView?.Invoke(ViewMode.PerspectiveView);
} }
private void OnClickTopView() private void OnClickTopView()
{ {
Debug.Log("TopView"); onClickCameraView?.Invoke(ViewMode.TopView);
} }
} }

View File

@@ -13,12 +13,13 @@ namespace CHN
public UI_DashboardCheckListItem prf_item; public UI_DashboardCheckListItem prf_item;
private Dictionary<string, GameObject> originDashBoardItems = new(); private Dictionary<string, GameObject> originDashBoardItems = new();
private Dictionary<string, UI_DashboardCheckListItem> dashboardItemList = new(); public SDictionary<string, UI_DashboardCheckListItem> dashboardItemList = new();
public void Init(Dictionary<string, GameObject> items) public void Init(Dictionary<string, GameObject> items)
{ {
prf_item = Resources.Load<UI_DashboardCheckListItem>("Prefabs/UI/UI_DashboardCheckListItem"); prf_item = Resources.Load<UI_DashboardCheckListItem>("Prefabs/UI/UI_DashboardCheckListItem");
originDashBoardItems.Clear(); originDashBoardItems.Clear();
dashboardItemList.Clear();
foreach (var item in items) foreach (var item in items)
{ {
var dashboardItem = CreateItem(); var dashboardItem = CreateItem();
@@ -35,9 +36,13 @@ namespace CHN
} }
} }
public void OnCloseDashbordItem(string dahboardKey) public void OnOpenDashboardItem(string dashboardKey)
{ {
dashboardItemList[dahboardKey].ToggleOffItem(); dashboardItemList[dashboardKey].ToggleOnItem();
}
public void OnCloseDashbordItem(string dashboardKey)
{
dashboardItemList[dashboardKey].ToggleOffItem();
} }
private UI_DashboardCheckListItem CreateItem() private UI_DashboardCheckListItem CreateItem()
{ {

View File

@@ -48,6 +48,10 @@ namespace CHN
toggleText.SetText(keyName); toggleText.SetText(keyName);
} }
public void ToggleOnItem()
{
toggle.isOn = true;
}
public void ToggleOffItem() public void ToggleOffItem()
{ {
toggle.isOn = false; toggle.isOn = false;

View File

@@ -33,7 +33,7 @@
"ptotm": "2025-03-12 19:50:37", "ptotm": "2025-03-12 19:50:37",
"psttm": "2025-03-11 08:01:16" "psttm": "2025-03-11 08:01:16"
}, },
"isCheck": false "isCheck": true
}, },
{ {
"completeInfo": { "completeInfo": {
@@ -68,7 +68,7 @@
"ptotm": "2025-03-12 19:49:40", "ptotm": "2025-03-12 19:49:40",
"psttm": "2025-03-11 08:01:21" "psttm": "2025-03-11 08:01:21"
}, },
"isCheck": false "isCheck": true
}, },
{ {
"completeInfo": { "completeInfo": {
@@ -103,7 +103,7 @@
"ptotm": "2025-03-13 07:50:45", "ptotm": "2025-03-13 07:50:45",
"psttm": "2025-03-11 08:01:26" "psttm": "2025-03-11 08:01:26"
}, },
"isCheck": false "isCheck": true
}, },
{ {
"completeInfo": { "completeInfo": {
@@ -138,7 +138,7 @@
"ptotm": "2025-03-13 07:50:48", "ptotm": "2025-03-13 07:50:48",
"psttm": "2025-03-11 08:01:31" "psttm": "2025-03-11 08:01:31"
}, },
"isCheck": false "isCheck": true
}, },
{ {
"completeInfo": { "completeInfo": {
@@ -173,7 +173,7 @@
"ptotm": "2025-03-13 07:50:51", "ptotm": "2025-03-13 07:50:51",
"psttm": "2025-03-11 08:01:52" "psttm": "2025-03-11 08:01:52"
}, },
"isCheck": false "isCheck": true
}, },
{ {
"completeInfo": { "completeInfo": {
@@ -208,7 +208,7 @@
"ptotm": "2025-03-12 19:50:55", "ptotm": "2025-03-12 19:50:55",
"psttm": "2025-03-11 08:01:57" "psttm": "2025-03-11 08:01:57"
}, },
"isCheck": false "isCheck": true
}, },
{ {
"completeInfo": { "completeInfo": {
@@ -243,7 +243,7 @@
"ptotm": "2025-03-12 19:49:58", "ptotm": "2025-03-12 19:49:58",
"psttm": "2025-03-11 08:02:03" "psttm": "2025-03-11 08:02:03"
}, },
"isCheck": false "isCheck": true
}, },
{ {
"completeInfo": { "completeInfo": {
@@ -278,7 +278,7 @@
"ptotm": "2025-03-12 19:51:01", "ptotm": "2025-03-12 19:51:01",
"psttm": "2025-03-11 08:02:08" "psttm": "2025-03-11 08:02:08"
}, },
"isCheck": false "isCheck": true
}, },
{ {
"completeInfo": { "completeInfo": {
@@ -313,7 +313,7 @@
"ptotm": "2025-03-13 07:51:08", "ptotm": "2025-03-13 07:51:08",
"psttm": "2025-03-11 08:02:14" "psttm": "2025-03-11 08:02:14"
}, },
"isCheck": false "isCheck": true
}, },
{ {
"completeInfo": { "completeInfo": {
@@ -348,7 +348,7 @@
"ptotm": "2025-03-12 19:51:12", "ptotm": "2025-03-12 19:51:12",
"psttm": "2025-03-11 08:02:19" "psttm": "2025-03-11 08:02:19"
}, },
"isCheck": false "isCheck": true
}, },
{ {
"completeInfo": { "completeInfo": {
@@ -383,7 +383,7 @@
"ptotm": "2025-03-13 07:52:15", "ptotm": "2025-03-13 07:52:15",
"psttm": "2025-03-11 08:02:23" "psttm": "2025-03-11 08:02:23"
}, },
"isCheck": false "isCheck": true
}, },
{ {
"completeInfo": { "completeInfo": {
@@ -397,7 +397,7 @@
"worknm": "Injector No.12", "worknm": "Injector No.12",
"workseq": "1", "workseq": "1",
"status": "2", "status": "2",
"statusnm": "가동", "statusnm": "가동",
"itemcd": "C10036", "itemcd": "C10036",
"itemdesc": "SCOOP-DRV LINK LUB_BODY", "itemdesc": "SCOOP-DRV LINK LUB_BODY",
"pjtcd": "GF9", "pjtcd": "GF9",
@@ -415,7 +415,7 @@
"sttm": "0802", "sttm": "0802",
"totm": "", "totm": "",
"goaltime": "1439", "goaltime": "1439",
"ptotm": "2025-03-12 07:52:21", "ptotm": "2025-03-13 18:48:36",
"psttm": "2025-03-11 08:02:28" "psttm": "2025-03-11 08:02:28"
}, },
"isCheck": false "isCheck": false
@@ -453,7 +453,7 @@
"ptotm": "2025-03-14 07:51:26", "ptotm": "2025-03-14 07:51:26",
"psttm": "2025-03-11 07:59:22" "psttm": "2025-03-11 07:59:22"
}, },
"isCheck": false "isCheck": true
}, },
{ {
"completeInfo": { "completeInfo": {
@@ -558,7 +558,7 @@
"ptotm": "2025-03-13 07:52:35", "ptotm": "2025-03-13 07:52:35",
"psttm": "2025-03-11 08:02:46" "psttm": "2025-03-11 08:02:46"
}, },
"isCheck": false "isCheck": true
}, },
{ {
"completeInfo": { "completeInfo": {
@@ -642,7 +642,7 @@
"worknm": "Injector No.19", "worknm": "Injector No.19",
"workseq": "1", "workseq": "1",
"status": "1", "status": "1",
"statusnm": "가동", "statusnm": "가동",
"itemcd": "55511445-1", "itemcd": "55511445-1",
"itemdesc": "PIPE-O/PMP SUC (UPPER)", "itemdesc": "PIPE-O/PMP SUC (UPPER)",
"pjtcd": "CSS 50V LM2", "pjtcd": "CSS 50V LM2",
@@ -1395,7 +1395,7 @@
"sttm": "0759", "sttm": "0759",
"totm": "", "totm": "",
"goaltime": "560", "goaltime": "560",
"ptotm": "2025-03-12 16:51:22", "ptotm": "2025-03-12 17:20:22",
"psttm": "2025-03-11 07:59:34" "psttm": "2025-03-11 07:59:34"
}, },
"isCheck": false "isCheck": false
@@ -1430,7 +1430,7 @@
"sttm": "0757", "sttm": "0757",
"totm": "", "totm": "",
"goaltime": "199", "goaltime": "199",
"ptotm": "2025-03-12 11:29:45", "ptotm": "2025-03-12 17:18:39",
"psttm": "2025-03-11 07:57:03" "psttm": "2025-03-11 07:57:03"
}, },
"isCheck": false "isCheck": false
@@ -1465,7 +1465,7 @@
"sttm": "1229", "sttm": "1229",
"totm": "", "totm": "",
"goaltime": "133", "goaltime": "133",
"ptotm": "2025-03-12 17:08:45", "ptotm": "2025-03-12 18:26:01",
"psttm": "2025-03-11 12:29:20" "psttm": "2025-03-11 12:29:20"
}, },
"isCheck": false "isCheck": false
@@ -1714,6 +1714,41 @@
"psttm": "2025-03-12 07:57:02" "psttm": "2025-03-12 07:57:02"
}, },
"isCheck": false "isCheck": false
},
{
"completeInfo": {
"datagbn": "D",
"wordno": "WO202503120080",
"workdt": "20250312",
"daynight": "1",
"sitecd": "1",
"wccd": "W30",
"workcd": "GP-8",
"worknm": "최종검사-08",
"workseq": "1",
"status": "1",
"statusnm": "가동중",
"itemcd": "24298738-SGM",
"itemdesc": "BAFFLE ASM-FRT DIFF CARR",
"pjtcd": "GF9",
"matcd": "",
"cycletime": "10.00",
"cavity": "1",
"planqty": "552.00000",
"goalqty": "6.00000",
"workqty": "0.00000",
"goodqty": "0.00000",
"badqty": "0.00000",
"adrate": "",
"efficiency": "0.00000",
"progressrate": "0.00000",
"sttm": "1524",
"totm": "",
"goaltime": "91",
"ptotm": "2025-03-12 16:55:58",
"psttm": "2025-03-12 15:24:58"
},
"isCheck": false
} }
] ]
} }