|
|
|
@ -1,82 +1,44 @@
|
|
|
|
|
package com.palnet.biz.scheduler.ctr.service; |
|
|
|
|
|
|
|
|
|
import java.util.*; |
|
|
|
|
import java.util.concurrent.ConcurrentLinkedQueue; |
|
|
|
|
|
|
|
|
|
import com.palnet.biz.jpa.repository.ctr.CtrCntrlBasRepository; |
|
|
|
|
import com.palnet.biz.jpa.repository.ctr.CtrCntrlHstryAreaRepository; |
|
|
|
|
import com.palnet.biz.jpa.repository.ctr.CtrCntrlHstryRepository; |
|
|
|
|
import com.palnet.biz.api.comn.model.ControlGpsDataContext; |
|
|
|
|
import org.slf4j.Logger; |
|
|
|
|
import org.slf4j.LoggerFactory; |
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
|
import com.palnet.biz.api.ctr.cntrl.model.CtrCntrlEndModel; |
|
|
|
|
import com.palnet.biz.jpa.entity.CtrCntrlHstry; |
|
|
|
|
import com.palnet.biz.jpa.entity.CtrCntrlHstryArea; |
|
|
|
|
import com.palnet.biz.jpa.repository.ctr.CtrCntrlQueryRepository; |
|
|
|
|
import com.palnet.biz.jpa.repository.pty.PtyDronQueryRepository; |
|
|
|
|
import com.palnet.biz.jpa.service.ctr.CtrCntrlJpaService; |
|
|
|
|
import com.palnet.biz.scheduler.ctr.model.CtrTrnsLctnModel; |
|
|
|
|
import com.palnet.comn.collection.GPCollection; |
|
|
|
|
import com.palnet.comn.collection.GPDatabaseCollection; |
|
|
|
|
import com.palnet.comn.model.GPDatabaseModel; |
|
|
|
|
import com.palnet.comn.utils.DateUtils; |
|
|
|
|
|
|
|
|
|
@Service |
|
|
|
|
@RequiredArgsConstructor |
|
|
|
|
public class CtrSchedulerService { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private GPCollection cic = new GPCollection(); |
|
|
|
|
private GPDatabaseCollection gpdc = new GPDatabaseCollection(); |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private CtrCntrlJpaService service; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private CtrCntrlQueryRepository query; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private CtrTrnsLctnService trnsService; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private PtyDronQueryRepository dronQuery; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private ControlGpsDataContext gpsDataContext; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private CtrCntrlHstryRepository ctrCntrlHstryRepository; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private CtrCntrlBasRepository ctrCntrlBasRepository; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private CtrCntrlHstryAreaRepository ctrCntrlHstryAreaRepository; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private Logger logger = LoggerFactory.getLogger(getClass()); |
|
|
|
|
|
|
|
|
|
@Value("${gp.remove.time}") |
|
|
|
|
private long GP_REMOVE_TIME; |
|
|
|
|
|
|
|
|
|
@Value("${gp.insert.count}") |
|
|
|
|
private long GP_INSERT_COUNT; |
|
|
|
|
private final CtrCntrlJpaService service; |
|
|
|
|
private final CtrTrnsLctnService trnsService; |
|
|
|
|
private final CtrCntrlQueryRepository ctrCntrlQueryRepository; |
|
|
|
|
private final CtrCntrlHstryRepository ctrCntrlHstryRepository; |
|
|
|
|
private final CtrCntrlBasRepository ctrCntrlBasRepository; |
|
|
|
|
private final CtrCntrlHstryAreaRepository ctrCntrlHstryAreaRepository; |
|
|
|
|
private final ControlGpsDataContext gpsDataContext; |
|
|
|
|
|
|
|
|
|
@Value("${gp.end.time}") |
|
|
|
|
private long GP_END_TIME; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 일정 주기로 위치 데이터가 오지 않는 데이터 중지 처리 |
|
|
|
|
* 기준 |
|
|
|
|
* 1) {param} 분 이상 데이터가 들어오지 않을 경우 |
|
|
|
|
* 2) 마지막 데이터 속도가 0 , 고도가 0 (현재 적용 X) |
|
|
|
|
* TODO 비행 종료 처리 - 최신 수신 일로 부터 5분동안 데이터 수신 되지 않는 경우 종료 처리 |
|
|
|
|
* |
|
|
|
|
*/ |
|
|
|
|
public void remove() { |
|
|
|
|
public void controlEndProcess() { |
|
|
|
|
Map<String, String> keys = gpsDataContext.getAllKeys(); |
|
|
|
|
|
|
|
|
|
keys.forEach((key, value) -> { |
|
|
|
@ -85,7 +47,7 @@ public class CtrSchedulerService {
|
|
|
|
|
if(Objects.nonNull(history)) { |
|
|
|
|
long diffMinute = DateUtils.diffMinute(history.getSrvrRcvDt(), new Date()); |
|
|
|
|
|
|
|
|
|
if(diffMinute > GP_REMOVE_TIME) { |
|
|
|
|
if(diffMinute > GP_END_TIME) { |
|
|
|
|
ctrCntrlBasRepository.updateCntrlEndType("01", DateUtils.nowDate(), "99", history.getCntrlId()); |
|
|
|
|
|
|
|
|
|
/* 종료지점 주소 저장 */ |
|
|
|
@ -108,40 +70,8 @@ public class CtrSchedulerService {
|
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*public void removeInfo() { |
|
|
|
|
Map<String , GPModel> cicData = cic.getData(); |
|
|
|
|
|
|
|
|
|
GPModel model; |
|
|
|
|
Date nowDate = new Date(); // 현재 시간 구하기
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Iterator<String> itKey = cicData.keySet().iterator(); |
|
|
|
|
|
|
|
|
|
while (itKey.hasNext()) { |
|
|
|
|
String index = itKey.next(); |
|
|
|
|
|
|
|
|
|
model = cicData.get(index); |
|
|
|
|
Date lastRevDate = DateUtils.stringToDatetime(model.getServerRcvDt()); |
|
|
|
|
long diffMinute = DateUtils.diffMinute(lastRevDate, nowDate); |
|
|
|
|
|
|
|
|
|
if(diffMinute > GP_REMOVE_TIME) { |
|
|
|
|
model.setControlEndDt(DateUtils.getCurrentTime()); |
|
|
|
|
model.setTypeCd("99"); |
|
|
|
|
model.setAreaTrnsYn("N"); |
|
|
|
|
cic.putDatabase(model); |
|
|
|
|
|
|
|
|
|
itKey.remove(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
logger.debug("{removeInfo } collection size :: " + cicData.size() + ""); |
|
|
|
|
|
|
|
|
|
}*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void trnsLctnPrcss() { |
|
|
|
|
List<CtrCntrlHstryArea> list = query.listCntrlHstryArea(); |
|
|
|
|
public void transferLocationProcess() { |
|
|
|
|
List<CtrCntrlHstryArea> list = ctrCntrlQueryRepository.listCntrlHstryArea(); |
|
|
|
|
if(list.size() > 0) { |
|
|
|
|
for(CtrCntrlHstryArea entity : list) { |
|
|
|
|
|
|
|
|
@ -155,101 +85,5 @@ public class CtrSchedulerService {
|
|
|
|
|
service.updateCtrCntrlHstryArea(lctnModel); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void insertGpData() { |
|
|
|
|
ConcurrentLinkedQueue<GPDatabaseModel> gpdcList = gpdc.getData(); |
|
|
|
|
int count = 0; |
|
|
|
|
Iterator<GPDatabaseModel> itKey = gpdcList.iterator(); |
|
|
|
|
logger.debug("SIZE >>>" + gpdcList.size()); |
|
|
|
|
|
|
|
|
|
GPDatabaseModel model; |
|
|
|
|
|
|
|
|
|
while (itKey.hasNext()) { |
|
|
|
|
model = itKey.next(); |
|
|
|
|
if(count == GP_INSERT_COUNT) { |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
logger.debug("%%%%" + model.getTypeCd()); |
|
|
|
|
if(!model.getMessageType().equals("OPENSKY")) { |
|
|
|
|
if(model.getTypeCd().equals("01")) { |
|
|
|
|
//마스터 정보에저장
|
|
|
|
|
//식별번호로 제작번호 알아오기
|
|
|
|
|
String prodNumber = dronQuery.findIdntfNumByProdNumber(model.getObjectId()); |
|
|
|
|
model.setProdNumber(prodNumber); |
|
|
|
|
service.insertCtrCntrlBas(model); |
|
|
|
|
|
|
|
|
|
}else if(model.getTypeCd().equals("99")) { |
|
|
|
|
//마스터 정보에 종료 처리 저장
|
|
|
|
|
model.setEndTypeCd("01"); |
|
|
|
|
service.updateCtrCntrlBas(model); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
CtrCntrlHstry hstryEntity = service.insertCtrCntrlHstry(model); |
|
|
|
|
|
|
|
|
|
if(model.getTypeCd().equals("01") || model.getTypeCd().equals("99")) { |
|
|
|
|
service.insertCtrCntrlHstryArea(model, hstryEntity.getHstrySno()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
itKey.remove(); |
|
|
|
|
count ++; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void endData() { |
|
|
|
|
List<CtrCntrlEndModel> endList = query.endList(); |
|
|
|
|
|
|
|
|
|
Date nowDate = new Date(); // 현재 시간 구하기
|
|
|
|
|
|
|
|
|
|
for(CtrCntrlEndModel data : endList) { |
|
|
|
|
long diffMinute = DateUtils.diffMinute(data.getSrvrRcvDt(), nowDate); |
|
|
|
|
if(diffMinute > GP_END_TIME) { |
|
|
|
|
GPDatabaseModel model = new GPDatabaseModel(); |
|
|
|
|
model.setEndTypeCd("02"); |
|
|
|
|
model.setControlId(data.getCntrlId());; |
|
|
|
|
model.setTypeCd("99"); |
|
|
|
|
model.setControlEndDt(DateUtils.getCurrentTime()); |
|
|
|
|
service.updateCtrCntrlBas(model); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// private static List<GPDatabaseModel> dataList = Collections.synchronizedList(new ArrayList<GPDatabaseModel>());
|
|
|
|
|
// public static void main(String [] args) {
|
|
|
|
|
// int COUNT = 1000;
|
|
|
|
|
// int count =0;
|
|
|
|
|
// for(int i=0 ; i< 4000; i++) {
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// GPDatabaseModel model = new GPDatabaseModel();
|
|
|
|
|
// model.setControlId(i + " slfjwelfjklwjflwejflwejflwjfklwjlfwejlf");
|
|
|
|
|
// dataList.add(model);
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
// System.out.println("SIZE ============>" + dataList.size());
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// Iterator<GPDatabaseModel> iter = dataList.iterator();
|
|
|
|
|
//
|
|
|
|
|
// while (iter.hasNext()) {
|
|
|
|
|
//
|
|
|
|
|
// if(count == COUNT) {
|
|
|
|
|
//
|
|
|
|
|
// break;
|
|
|
|
|
// }
|
|
|
|
|
// count ++;
|
|
|
|
|
// GPDatabaseModel model = iter.next();
|
|
|
|
|
// System.out.println("count ====> " + count + "model ============> " + model.getControlId());
|
|
|
|
|
// iter.remove();
|
|
|
|
|
// }
|
|
|
|
|
//
|
|
|
|
|
//
|
|
|
|
|
// }
|
|
|
|
|
} |
|
|
|
|