11. Calendar-Service
client.calendar() dient als Zugangspunkt. Termine (Inspektion, Feiertage, Prüfungen usw.) werden Assets/Sites zugeordnet und betrieben.
10.1 Methodenübersicht
| Methode | Rückgabetyp | HTTP | Endpunkt |
|---|---|---|---|
create(CalendarRequestV5) | CalendarResponseV5 oder null | POST | /api/v5/calendar |
update(calendar_id, CalendarRequestV5) | CalendarResponseV5 oder null | PUT | /api/v5/calendar/{id} |
delete(calendar_id) | boolean | DELETE | /api/v5/calendar/{id} |
get(calendar_id) | CalendarResponseV5 oder null | GET | /api/v5/calendar/{id} |
list() | List<CalendarResponseV5> | GET | /api/v5/calendar |
search(from_iso, to_iso) | List<CalendarResponseV5> | GET | /api/v5/calendar/search?from=...&to=... |
10.2 Termintypen (target_type)
| Code | Bedeutung |
|---|---|
MTN | Regelmäßige Inspektion (Maintenance) |
HOLIDAY | Feiertag / produktionsfreie Zeit |
INSPECTION | Wiederkehrende Prüfung |
MEETING | Besprechung |
TRAINING | Schulung |
10.3 CalendarRequestV5 / CalendarResponseV5
| Feld | Typ | Beschreibung |
|---|---|---|
calendar_id | String | Termin-ID (PK) |
target_type | String | Typcode |
site_id | String | Zugehörige Site |
asset_id | String | Ziel-Asset (Equipment) |
fix_start_timestamp | long | Startzeitpunkt (Millisekunden) |
fix_end_timestamp | long | Endzeitpunkt (Millisekunden) |
description | String | Beschreibung |
type_color / type_name / type_kind | String | Anzeigeinformationen zum Typ |
10.4 Anwendungsbeispiele
Termin anlegen
import plantpulse.api.v5.dto.request.CalendarRequestV5;
import plantpulse.api.v5.dto.response.CalendarResponseV5;
CalendarRequestV5 cal = new CalendarRequestV5();
cal.setCalendar_id("CAL_20260520_0001");
cal.setSite_id("SITE_DJ");
cal.setAsset_id("ASSET_DJ_M_0001");
cal.setTarget_type("MTN");
cal.setDescription("CNC #1 정기 점검 — 베어링 교체");
long now = System.currentTimeMillis();
cal.setFix_start_timestamp(now + 6 * 24 * 3600_000L);
cal.setFix_end_timestamp(now + 7 * 24 * 3600_000L);
CalendarResponseV5 created = client.calendar().create(cal);
Einzelabfrage
CalendarResponseV5 c = client.calendar().get("CAL_20260520_0001");
if (c != null) {
System.out.println(c.getDescription());
System.out.println("시작: " + c.getFix_start_timestamp());
}
Suche über ISO-Datumsbereich
import java.util.List;
List<CalendarResponseV5> may = client.calendar().search(
"2026-05-01 00:00:00",
"2026-05-31 23:59:59");
Gesamtliste
List<CalendarResponseV5> all = client.calendar().list();
for (CalendarResponseV5 c : all) {
System.out.println(c.getCalendar_id() + " — " + c.getTarget_type());
}
Filterung der Inspektionstermine je Asset (clientseitig)
import java.util.stream.Collectors;
String targetAsset = "ASSET_DJ_M_0001";
List<CalendarResponseV5> mtnEvents = client.calendar()
.search("2026-01-01 00:00:00", "2026-12-31 23:59:59")
.stream()
.filter(c -> targetAsset.equals(c.getAsset_id()))
.filter(c -> "MTN".equals(c.getTarget_type()))
.collect(Collectors.toList());
Ändern / Löschen
// 수정 — 전체 필드를 다시 보내야 함
CalendarRequestV5 update = new CalendarRequestV5();
update.setCalendar_id("CAL_20260520_0001");
update.setSite_id("SITE_DJ");
update.setAsset_id("ASSET_DJ_M_0001");
update.setTarget_type("MTN");
update.setDescription("점검 연기 — 5월 25일로 변경");
long now = System.currentTimeMillis();
update.setFix_start_timestamp(now + 11 * 24 * 3600_000L);
update.setFix_end_timestamp(now + 12 * 24 * 3600_000L);
client.calendar().update("CAL_20260520_0001", update);
// 삭제
client.calendar().delete("CAL_20260520_0001");
10.5 Anwendungsszenarien
Szenario — Benachrichtigung über Termine der nächsten 7 Tage
import java.text.SimpleDateFormat;
import java.util.Date;
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long now = System.currentTimeMillis();
String from = fmt.format(new Date(now));
String to = fmt.format(new Date(now + 7L * 24 * 3600_000L));
List<CalendarResponseV5> upcoming = client.calendar().search(from, to);
for (CalendarResponseV5 c : upcoming) {
if ("MTN".equals(c.getTarget_type())) {
sendNotification("점검 예정: " + c.getDescription());
}
}
Szenario — Anlagen mit Inspektionstermin von der OEE-Berechnung ausschließen
long now = System.currentTimeMillis();
String today = fmt.format(new Date(now));
List<CalendarResponseV5> activeEvents = client.calendar()
.search(today, today)
.stream()
.filter(c -> c.getFix_start_timestamp() <= now
&& c.getFix_end_timestamp() >= now)
.filter(c -> "MTN".equals(c.getTarget_type()))
.collect(Collectors.toList());
Set<String> excludedAssets = activeEvents.stream()
.map(CalendarResponseV5::getAsset_id)
.collect(Collectors.toSet());
// OEE 계산 시 excludedAssets 의 자산은 건너뜀
Nächste Schritte
- Order-Service — Verknüpfung von Arbeitsaufträgen und Terminen
- Asset-Service — Assets, denen Termine zugeordnet werden