package com.utic.ptis.server.dto; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; import java.util.ArrayList; @Data @Builder @NoArgsConstructor//(access = AccessLevel.PROTECTED) @AllArgsConstructor public class LinkDto implements Serializable { private static final long serialVersionUID = 1L; private String linkId; private String roadRank; private Integer linkLevel; private Integer roadUse; private Integer length; private Integer lanes; private Integer maxSpeed; private String upLinkId; private String dnLinkId; private ArrayList linkIds; private boolean prcsPtrnMissing; // 패턴 결측 처리 여부(링크 레벨1 인 경우) private LinkTrafPtrn trafPtrn; // 현재 주기 패턴값 private LinkTrafVal trafFsn; // 퓨전 소통정보 private LinkTrafVal trafExt; // 외부연계용 소통정보(동부 NTS 제외한 퓨전값) private LinkTrafMiss missPsd; // PSD 알고리즘 수행 값 private LinkTrafMiss missKnn; // k-NN 알고리즘 수행 값 public LinkTrafCenterDto getTrafficDto(String regDate) { return this.trafFsn.toDto(this.linkId, this.linkLevel, regDate); } public void init() { this.upLinkId = ""; this.dnLinkId = ""; this.linkIds = new ArrayList<>(); this.prcsPtrnMissing = false; this.trafPtrn = new LinkTrafPtrn(); this.trafFsn = new LinkTrafVal(); this.trafExt = new LinkTrafVal(); this.missPsd = new LinkTrafMiss(); this.missKnn = new LinkTrafMiss(); } public void initTraf(boolean initPtrnTraf) { if (initPtrnTraf) { this.trafPtrn.init(); } this.trafFsn.init(); this.trafExt.init(); this.missPsd.init(); this.missKnn.init(); } public int getTravelTime(int speed) { if (this.length > 0 && speed > 0) { return (int)((this.length * 3.6 / speed) + 0.5); } return 0; } }