commit 18ad6b11bf1c1251ca66f87b18b78317a745759c Author: revisit Date: Tue Jun 11 18:40:19 2024 +0800 init diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..ead660a --- /dev/null +++ b/.classpath @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..3681346 --- /dev/null +++ b/.project @@ -0,0 +1,31 @@ + + + DSDSServer2024 + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.jdt.core.javanature + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/.settings/.jsdtscope b/.settings/.jsdtscope new file mode 100644 index 0000000..81672d4 --- /dev/null +++ b/.settings/.jsdtscope @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..0c68a61 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.wst.common.component b/.settings/org.eclipse.wst.common.component new file mode 100644 index 0000000..8ca2793 --- /dev/null +++ b/.settings/org.eclipse.wst.common.component @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 0000000..5ea944b --- /dev/null +++ b/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.container b/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 0000000..3bd5d0a --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/.settings/org.eclipse.wst.jsdt.ui.superType.name b/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 0000000..05bd71b --- /dev/null +++ b/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git a/build/classes/app.properties b/build/classes/app.properties new file mode 100644 index 0000000..f98023c --- /dev/null +++ b/build/classes/app.properties @@ -0,0 +1,5 @@ +AppDebug=true +AppParamHelper=cn.tsy.idsse.dsds.helper.DSDSParamHelper +AppDatabaseStdout=InActive +AppListener=cn.tsy.idsse.dsds.control.DSDSInitializeLisener +AppName=DSDS2024Server \ No newline at end of file diff --git a/build/classes/cn/hme/framework/helper/excel/AbstractExcel2007Writer$SpreadsheetWriter.class b/build/classes/cn/hme/framework/helper/excel/AbstractExcel2007Writer$SpreadsheetWriter.class new file mode 100644 index 0000000..88d41b7 Binary files /dev/null and b/build/classes/cn/hme/framework/helper/excel/AbstractExcel2007Writer$SpreadsheetWriter.class differ diff --git a/build/classes/cn/hme/framework/helper/excel/AbstractExcel2007Writer.class b/build/classes/cn/hme/framework/helper/excel/AbstractExcel2007Writer.class new file mode 100644 index 0000000..ebd34a1 Binary files /dev/null and b/build/classes/cn/hme/framework/helper/excel/AbstractExcel2007Writer.class differ diff --git a/build/classes/cn/hme/framework/helper/excel/Excel2003Reader.class b/build/classes/cn/hme/framework/helper/excel/Excel2003Reader.class new file mode 100644 index 0000000..6ab8695 Binary files /dev/null and b/build/classes/cn/hme/framework/helper/excel/Excel2003Reader.class differ diff --git a/build/classes/cn/hme/framework/helper/excel/Excel2003Writer.class b/build/classes/cn/hme/framework/helper/excel/Excel2003Writer.class new file mode 100644 index 0000000..b2286e8 Binary files /dev/null and b/build/classes/cn/hme/framework/helper/excel/Excel2003Writer.class differ diff --git a/build/classes/cn/hme/framework/helper/excel/Excel2007Reader$xssfDataType.class b/build/classes/cn/hme/framework/helper/excel/Excel2007Reader$xssfDataType.class new file mode 100644 index 0000000..9502f6b Binary files /dev/null and b/build/classes/cn/hme/framework/helper/excel/Excel2007Reader$xssfDataType.class differ diff --git a/build/classes/cn/hme/framework/helper/excel/Excel2007Reader.class b/build/classes/cn/hme/framework/helper/excel/Excel2007Reader.class new file mode 100644 index 0000000..9a1c5a7 Binary files /dev/null and b/build/classes/cn/hme/framework/helper/excel/Excel2007Reader.class differ diff --git a/build/classes/cn/hme/framework/helper/excel/Excel2007Writer.class b/build/classes/cn/hme/framework/helper/excel/Excel2007Writer.class new file mode 100644 index 0000000..101a211 Binary files /dev/null and b/build/classes/cn/hme/framework/helper/excel/Excel2007Writer.class differ diff --git a/build/classes/cn/hme/framework/helper/excel/ExcelReaderHelper.class b/build/classes/cn/hme/framework/helper/excel/ExcelReaderHelper.class new file mode 100644 index 0000000..239d0a1 Binary files /dev/null and b/build/classes/cn/hme/framework/helper/excel/ExcelReaderHelper.class differ diff --git a/build/classes/cn/hme/framework/helper/excel/ExcelRowReader.class b/build/classes/cn/hme/framework/helper/excel/ExcelRowReader.class new file mode 100644 index 0000000..254f474 Binary files /dev/null and b/build/classes/cn/hme/framework/helper/excel/ExcelRowReader.class differ diff --git a/build/classes/cn/hme/framework/helper/excel/XMLEncoder.class b/build/classes/cn/hme/framework/helper/excel/XMLEncoder.class new file mode 100644 index 0000000..8f053b6 Binary files /dev/null and b/build/classes/cn/hme/framework/helper/excel/XMLEncoder.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictDataMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictDataMapper.class new file mode 100644 index 0000000..6e75d37 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictDataMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictDataMapper.xml b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictDataMapper.xml new file mode 100644 index 0000000..3d0fea6 --- /dev/null +++ b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictDataMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + \ No newline at end of file diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictEquipmentMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictEquipmentMapper.class new file mode 100644 index 0000000..99dafb0 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictEquipmentMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictEquipmentMapper.xml b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictEquipmentMapper.xml new file mode 100644 index 0000000..c522f68 --- /dev/null +++ b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictEquipmentMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + \ No newline at end of file diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictPlatformMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictPlatformMapper.class new file mode 100644 index 0000000..8b3268f Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictPlatformMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictPlatformMapper.xml b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictPlatformMapper.xml new file mode 100644 index 0000000..4264057 --- /dev/null +++ b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictPlatformMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + \ No newline at end of file diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitSailMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitSailMapper.class new file mode 100644 index 0000000..e7a6618 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitSailMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitSailMapper.xml b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitSailMapper.xml new file mode 100644 index 0000000..1a30f4b --- /dev/null +++ b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitSailMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + \ No newline at end of file diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitShareMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitShareMapper.class new file mode 100644 index 0000000..ec18771 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitShareMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitShareMapper.xml b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitShareMapper.xml new file mode 100644 index 0000000..7f9e8a4 --- /dev/null +++ b/build/classes/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitShareMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + \ No newline at end of file diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/file/FileRegMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/file/FileRegMapper.class new file mode 100644 index 0000000..8347e71 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/file/FileRegMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetMapper.class new file mode 100644 index 0000000..d1ddebc Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetMapper.xml b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetMapper.xml new file mode 100644 index 0000000..7159113 --- /dev/null +++ b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + \ No newline at end of file diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetTrackMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetTrackMapper.class new file mode 100644 index 0000000..bdba74f Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetTrackMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetTrackMapper.xml b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetTrackMapper.xml new file mode 100644 index 0000000..5bb44d1 --- /dev/null +++ b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetTrackMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineMapper.class new file mode 100644 index 0000000..dfa0f9d Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineTrackMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineTrackMapper.class new file mode 100644 index 0000000..6951a00 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineTrackMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineTrackMapper.xml b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineTrackMapper.xml new file mode 100644 index 0000000..6d90bc5 --- /dev/null +++ b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineTrackMapper.xml @@ -0,0 +1,13 @@ + + + + + + + + + + \ No newline at end of file diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleRegMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleRegMapper.class new file mode 100644 index 0000000..d14e423 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleRegMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleRegMapper.xml b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleRegMapper.xml new file mode 100644 index 0000000..4a2cc20 --- /dev/null +++ b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleRegMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + \ No newline at end of file diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleStationMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleStationMapper.class new file mode 100644 index 0000000..883a963 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/sample/SampleStationMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/sar/SarFileMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/sar/SarFileMapper.class new file mode 100644 index 0000000..f40fc61 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/sar/SarFileMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/sar/SarLogMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/sar/SarLogMapper.class new file mode 100644 index 0000000..a9d977b Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/sar/SarLogMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/sar/SarRegMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/sar/SarRegMapper.class new file mode 100644 index 0000000..831fe40 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/sar/SarRegMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/sar/SarRegMapper.xml b/build/classes/cn/tsy/data/idsse/dsds/mapper/sar/SarRegMapper.xml new file mode 100644 index 0000000..c731740 --- /dev/null +++ b/build/classes/cn/tsy/data/idsse/dsds/mapper/sar/SarRegMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + \ No newline at end of file diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageLogMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageLogMapper.class new file mode 100644 index 0000000..70bbfe9 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageLogMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageMemberMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageMemberMapper.class new file mode 100644 index 0000000..e15616f Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageMemberMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageMemberMapper.xml b/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageMemberMapper.xml new file mode 100644 index 0000000..bac3623 --- /dev/null +++ b/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageMemberMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + \ No newline at end of file diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageNavigationMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageNavigationMapper.class new file mode 100644 index 0000000..e4b3b2f Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageNavigationMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageNavigationMapper.xml b/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageNavigationMapper.xml new file mode 100644 index 0000000..d86b7f1 --- /dev/null +++ b/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageNavigationMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageRegMapper.class b/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageRegMapper.class new file mode 100644 index 0000000..f779362 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageRegMapper.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageRegMapper.xml b/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageRegMapper.xml new file mode 100644 index 0000000..cf58e05 --- /dev/null +++ b/build/classes/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageRegMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/dict/DictData.class b/build/classes/cn/tsy/data/idsse/dsds/model/dict/DictData.class new file mode 100644 index 0000000..3f7b169 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/dict/DictData.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/dict/DictEquipment.class b/build/classes/cn/tsy/data/idsse/dsds/model/dict/DictEquipment.class new file mode 100644 index 0000000..f990f36 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/dict/DictEquipment.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/dict/DictPlatform.class b/build/classes/cn/tsy/data/idsse/dsds/model/dict/DictPlatform.class new file mode 100644 index 0000000..74c95f6 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/dict/DictPlatform.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/dict/DictUnitSail.class b/build/classes/cn/tsy/data/idsse/dsds/model/dict/DictUnitSail.class new file mode 100644 index 0000000..865e88b Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/dict/DictUnitSail.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/dict/DictUnitShare.class b/build/classes/cn/tsy/data/idsse/dsds/model/dict/DictUnitShare.class new file mode 100644 index 0000000..23217b6 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/dict/DictUnitShare.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/file/FileReg.class b/build/classes/cn/tsy/data/idsse/dsds/model/file/FileReg.class new file mode 100644 index 0000000..f821c12 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/file/FileReg.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleDataset.class b/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleDataset.class new file mode 100644 index 0000000..30dcfd7 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleDataset.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleDatasetTrack.class b/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleDatasetTrack.class new file mode 100644 index 0000000..7748311 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleDatasetTrack.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleLine.class b/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleLine.class new file mode 100644 index 0000000..9449302 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleLine.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleLineTrack.class b/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleLineTrack.class new file mode 100644 index 0000000..68412a5 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleLineTrack.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleReg.class b/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleReg.class new file mode 100644 index 0000000..4451792 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleReg.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleStation.class b/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleStation.class new file mode 100644 index 0000000..f9dfc36 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/sample/SampleStation.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/sar/SarFile.class b/build/classes/cn/tsy/data/idsse/dsds/model/sar/SarFile.class new file mode 100644 index 0000000..99b2195 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/sar/SarFile.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/sar/SarLog.class b/build/classes/cn/tsy/data/idsse/dsds/model/sar/SarLog.class new file mode 100644 index 0000000..1464cd4 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/sar/SarLog.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/sar/SarReg.class b/build/classes/cn/tsy/data/idsse/dsds/model/sar/SarReg.class new file mode 100644 index 0000000..dae6253 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/sar/SarReg.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/voyage/VoyageLog.class b/build/classes/cn/tsy/data/idsse/dsds/model/voyage/VoyageLog.class new file mode 100644 index 0000000..760f5d0 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/voyage/VoyageLog.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/voyage/VoyageMember.class b/build/classes/cn/tsy/data/idsse/dsds/model/voyage/VoyageMember.class new file mode 100644 index 0000000..dd82383 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/voyage/VoyageMember.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/voyage/VoyageNavigation.class b/build/classes/cn/tsy/data/idsse/dsds/model/voyage/VoyageNavigation.class new file mode 100644 index 0000000..32f2cb5 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/voyage/VoyageNavigation.class differ diff --git a/build/classes/cn/tsy/data/idsse/dsds/model/voyage/VoyageReg.class b/build/classes/cn/tsy/data/idsse/dsds/model/voyage/VoyageReg.class new file mode 100644 index 0000000..cd81494 Binary files /dev/null and b/build/classes/cn/tsy/data/idsse/dsds/model/voyage/VoyageReg.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/DSDSMain.class b/build/classes/cn/tsy/idsse/dsds/DSDSMain.class new file mode 100644 index 0000000..294d01e Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/DSDSMain.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/constant/SarLogType.class b/build/classes/cn/tsy/idsse/dsds/constant/SarLogType.class new file mode 100644 index 0000000..2541a39 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/constant/SarLogType.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/constant/SarStatus.class b/build/classes/cn/tsy/idsse/dsds/constant/SarStatus.class new file mode 100644 index 0000000..61d0bfc Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/constant/SarStatus.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/constant/VoyageJobType.class b/build/classes/cn/tsy/idsse/dsds/constant/VoyageJobType.class new file mode 100644 index 0000000..3a53a20 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/constant/VoyageJobType.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/constant/VoyageLogType.class b/build/classes/cn/tsy/idsse/dsds/constant/VoyageLogType.class new file mode 100644 index 0000000..69008f2 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/constant/VoyageLogType.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/constant/VoyageStatus.class b/build/classes/cn/tsy/idsse/dsds/constant/VoyageStatus.class new file mode 100644 index 0000000..4688aec Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/constant/VoyageStatus.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/DSDSControl.class b/build/classes/cn/tsy/idsse/dsds/control/DSDSControl.class new file mode 100644 index 0000000..654473c Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/DSDSControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/DSDSInitializeLisener.class b/build/classes/cn/tsy/idsse/dsds/control/DSDSInitializeLisener.class new file mode 100644 index 0000000..42c5782 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/DSDSInitializeLisener.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/dict/DictDataControl.class b/build/classes/cn/tsy/idsse/dsds/control/dict/DictDataControl.class new file mode 100644 index 0000000..6950c43 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/dict/DictDataControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/dict/DictEquipmentControl.class b/build/classes/cn/tsy/idsse/dsds/control/dict/DictEquipmentControl.class new file mode 100644 index 0000000..dccb72b Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/dict/DictEquipmentControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/dict/DictPlatformControl.class b/build/classes/cn/tsy/idsse/dsds/control/dict/DictPlatformControl.class new file mode 100644 index 0000000..e1c8bdb Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/dict/DictPlatformControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/dict/DictUnitSailControl.class b/build/classes/cn/tsy/idsse/dsds/control/dict/DictUnitSailControl.class new file mode 100644 index 0000000..b06787b Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/dict/DictUnitSailControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/dict/DictUnitShareControl.class b/build/classes/cn/tsy/idsse/dsds/control/dict/DictUnitShareControl.class new file mode 100644 index 0000000..9c286d3 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/dict/DictUnitShareControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/sample/SampleDatasetControl.class b/build/classes/cn/tsy/idsse/dsds/control/sample/SampleDatasetControl.class new file mode 100644 index 0000000..5decaba Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/sample/SampleDatasetControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/sample/SampleDatasetTrackControl.class b/build/classes/cn/tsy/idsse/dsds/control/sample/SampleDatasetTrackControl.class new file mode 100644 index 0000000..9e5c9a3 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/sample/SampleDatasetTrackControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/sample/SampleLineControl.class b/build/classes/cn/tsy/idsse/dsds/control/sample/SampleLineControl.class new file mode 100644 index 0000000..1f45343 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/sample/SampleLineControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/sample/SampleLineTrackControl.class b/build/classes/cn/tsy/idsse/dsds/control/sample/SampleLineTrackControl.class new file mode 100644 index 0000000..94c9386 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/sample/SampleLineTrackControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/sample/SampleRegControl.class b/build/classes/cn/tsy/idsse/dsds/control/sample/SampleRegControl.class new file mode 100644 index 0000000..d1072c3 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/sample/SampleRegControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/sample/SampleStationControl.class b/build/classes/cn/tsy/idsse/dsds/control/sample/SampleStationControl.class new file mode 100644 index 0000000..92d5156 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/sample/SampleStationControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/sar/SarFileControl.class b/build/classes/cn/tsy/idsse/dsds/control/sar/SarFileControl.class new file mode 100644 index 0000000..9240706 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/sar/SarFileControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/sar/SarRegControl.class b/build/classes/cn/tsy/idsse/dsds/control/sar/SarRegControl.class new file mode 100644 index 0000000..9cdf87e Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/sar/SarRegControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/search/DSDSSearchControl.class b/build/classes/cn/tsy/idsse/dsds/control/search/DSDSSearchControl.class new file mode 100644 index 0000000..b3ccbca Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/search/DSDSSearchControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/voyage/VoyageMemberControl.class b/build/classes/cn/tsy/idsse/dsds/control/voyage/VoyageMemberControl.class new file mode 100644 index 0000000..62c4bfa Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/voyage/VoyageMemberControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/voyage/VoyageNavigationControl.class b/build/classes/cn/tsy/idsse/dsds/control/voyage/VoyageNavigationControl.class new file mode 100644 index 0000000..c7a7de5 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/voyage/VoyageNavigationControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/control/voyage/VoyageRegControl.class b/build/classes/cn/tsy/idsse/dsds/control/voyage/VoyageRegControl.class new file mode 100644 index 0000000..05b503a Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/control/voyage/VoyageRegControl.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/helper/DSDSParamHelper.class b/build/classes/cn/tsy/idsse/dsds/helper/DSDSParamHelper.class new file mode 100644 index 0000000..46236df Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/helper/DSDSParamHelper.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/service/dict/DictDataService.class b/build/classes/cn/tsy/idsse/dsds/service/dict/DictDataService.class new file mode 100644 index 0000000..1aeb010 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/service/dict/DictDataService.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/service/dict/DictEquipmentService.class b/build/classes/cn/tsy/idsse/dsds/service/dict/DictEquipmentService.class new file mode 100644 index 0000000..bb7b143 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/service/dict/DictEquipmentService.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/service/dict/DictPlatformService.class b/build/classes/cn/tsy/idsse/dsds/service/dict/DictPlatformService.class new file mode 100644 index 0000000..1b3d956 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/service/dict/DictPlatformService.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/service/dict/DictUnitSailService.class b/build/classes/cn/tsy/idsse/dsds/service/dict/DictUnitSailService.class new file mode 100644 index 0000000..1822601 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/service/dict/DictUnitSailService.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/service/dict/DictUnitShareService.class b/build/classes/cn/tsy/idsse/dsds/service/dict/DictUnitShareService.class new file mode 100644 index 0000000..54b2383 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/service/dict/DictUnitShareService.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/service/sample/SampleDatasetService.class b/build/classes/cn/tsy/idsse/dsds/service/sample/SampleDatasetService.class new file mode 100644 index 0000000..bf5c3f1 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/service/sample/SampleDatasetService.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/service/sample/SampleDatasetTrackService.class b/build/classes/cn/tsy/idsse/dsds/service/sample/SampleDatasetTrackService.class new file mode 100644 index 0000000..7da7420 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/service/sample/SampleDatasetTrackService.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/service/sample/SampleLineService.class b/build/classes/cn/tsy/idsse/dsds/service/sample/SampleLineService.class new file mode 100644 index 0000000..55f400e Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/service/sample/SampleLineService.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/service/sample/SampleLineTrackService.class b/build/classes/cn/tsy/idsse/dsds/service/sample/SampleLineTrackService.class new file mode 100644 index 0000000..8192a35 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/service/sample/SampleLineTrackService.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/service/sample/SampleRegService.class b/build/classes/cn/tsy/idsse/dsds/service/sample/SampleRegService.class new file mode 100644 index 0000000..54d1f75 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/service/sample/SampleRegService.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/service/sample/SampleStationService.class b/build/classes/cn/tsy/idsse/dsds/service/sample/SampleStationService.class new file mode 100644 index 0000000..adb7c38 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/service/sample/SampleStationService.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/service/sar/SarRegService.class b/build/classes/cn/tsy/idsse/dsds/service/sar/SarRegService.class new file mode 100644 index 0000000..3c9f5ed Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/service/sar/SarRegService.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/service/voyage/VoyageMemberService.class b/build/classes/cn/tsy/idsse/dsds/service/voyage/VoyageMemberService.class new file mode 100644 index 0000000..1a97656 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/service/voyage/VoyageMemberService.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/service/voyage/VoyageNavigationService.class b/build/classes/cn/tsy/idsse/dsds/service/voyage/VoyageNavigationService.class new file mode 100644 index 0000000..9e23740 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/service/voyage/VoyageNavigationService.class differ diff --git a/build/classes/cn/tsy/idsse/dsds/service/voyage/VoyageRegService.class b/build/classes/cn/tsy/idsse/dsds/service/voyage/VoyageRegService.class new file mode 100644 index 0000000..c2e3580 Binary files /dev/null and b/build/classes/cn/tsy/idsse/dsds/service/voyage/VoyageRegService.class differ diff --git a/build/classes/jdbc.properties b/build/classes/jdbc.properties new file mode 100644 index 0000000..d8bc501 --- /dev/null +++ b/build/classes/jdbc.properties @@ -0,0 +1,13 @@ +JdbcDriverClass=com.mysql.cj.jdbc.Driver +JdbcUrl=jdbc:mysql://127.0.0.1:3306/dsds2024?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&verifyServerCertificate=false&autoReconnct=true&autoReconnectForPools=true&allowMultiQueries=true +JdbcUser=root +JdbcPassword=localhost +JdbcCheckouttimeout=30000 +JdbcMaxpoolsize=200 +JdbcAcquireertydelay=30000 + +#JdbcDriverClass=com.mysql.jdbc.Driver +#JdbcUrl=jdbc:mysql://192.168.6.78:3306/dsds_pdc?useUnicode=true&characterEncoding=UTF-8&useSSL=false +#JdbcUser=idsse +#JdbcPassword=Ds56cD09Kj024 +#JdbcCheckouttimeout=5000 \ No newline at end of file diff --git a/src/main/java/app.properties b/src/main/java/app.properties new file mode 100644 index 0000000..f98023c --- /dev/null +++ b/src/main/java/app.properties @@ -0,0 +1,5 @@ +AppDebug=true +AppParamHelper=cn.tsy.idsse.dsds.helper.DSDSParamHelper +AppDatabaseStdout=InActive +AppListener=cn.tsy.idsse.dsds.control.DSDSInitializeLisener +AppName=DSDS2024Server \ No newline at end of file diff --git a/src/main/java/cn/hme/framework/helper/excel/AbstractExcel2007Writer.java b/src/main/java/cn/hme/framework/helper/excel/AbstractExcel2007Writer.java new file mode 100644 index 0000000..76f60a9 --- /dev/null +++ b/src/main/java/cn/hme/framework/helper/excel/AbstractExcel2007Writer.java @@ -0,0 +1,225 @@ +package cn.hme.framework.helper.excel; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.Writer; +import java.util.Calendar; +import java.util.Enumeration; +import java.util.zip.ZipEntry; +import java.util.zip.ZipFile; +import java.util.zip.ZipOutputStream; + +import org.apache.poi.ss.usermodel.DateUtil; +import org.apache.poi.ss.util.CellReference; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; + +/** + * 抽象excel2007读入器,先构建.xlsx一张模板,改写模板中的sheet.xml,使用这种方法 + * 写入.xlsx文件,不需要太大的内存 + * + */ +public abstract class AbstractExcel2007Writer { + + private SpreadsheetWriter sw; + + /** + * 写入电子表格的主要流程 + * + * @param fileName + * @throws Exception + */ + public void process(String fileName) throws Exception { + // 建立工作簿和电子表格对象 + XSSFWorkbook wb = new XSSFWorkbook(); + XSSFSheet sheet = wb.createSheet("sheet1"); + // 持有电子表格数据的xml文件名 例如 /xl/worksheets/sheet1.xml + String sheetRef = sheet.getPackagePart().getPartName().getName(); + + // 保存模板 + FileOutputStream os = new FileOutputStream("template.xlsx"); + wb.write(os); + os.close(); + + // 生成xml文件 + File tmp = File.createTempFile("sheet", ".xml"); + Writer fw = new FileWriter(tmp); + sw = new SpreadsheetWriter(fw); + generate(); + fw.close(); + wb.close(); + + // 使用产生的数据替换模板 + File templateFile = new File("template.xlsx"); + FileOutputStream out = new FileOutputStream(fileName); + substitute(templateFile, tmp, sheetRef.substring(1), out); + out.close(); + // 删除文件之前调用一下垃圾回收器,否则无法删除模板文件 + System.gc(); + // 删除临时模板文件 + if (templateFile.isFile() && templateFile.exists()) { + templateFile.delete(); + } + } + + /** + * 类使用者应该使用此方法进行写操作 + * + * @throws Exception + */ + public abstract void generate() throws Exception; + + public void beginSheet() throws IOException { + sw.beginSheet(); + } + + public void insertRow(int rowNum) throws IOException { + sw.insertRow(rowNum); + } + + public void createCell(int columnIndex, String value) throws IOException { + sw.createCell(columnIndex, value, -1); + } + + public void createCell(int columnIndex, double value) throws IOException { + sw.createCell(columnIndex, value, -1); + } + + public void endRow() throws IOException { + sw.endRow(); + } + + public void endSheet() throws IOException { + sw.endSheet(); + } + + /** + * + * @param zipfile + * the template file + * @param tmpfile + * the XML file with the sheet data + * @param entry + * the name of the sheet entry to substitute, e.g. + * xl/worksheets/sheet1.xml + * @param out + * the stream to write the result to + */ + private static void substitute(File zipfile, File tmpfile, String entry, OutputStream out) throws IOException { + @SuppressWarnings("resource") + ZipFile zip = new ZipFile(zipfile); + ZipOutputStream zos = new ZipOutputStream(out); + + @SuppressWarnings("unchecked") + Enumeration en = (Enumeration) zip.entries(); + while (en.hasMoreElements()) { + ZipEntry ze = en.nextElement(); + if (!ze.getName().equals(entry)) { + zos.putNextEntry(new ZipEntry(ze.getName())); + InputStream is = zip.getInputStream(ze); + copyStream(is, zos); + is.close(); + } + } + zos.putNextEntry(new ZipEntry(entry)); + InputStream is = new FileInputStream(tmpfile); + copyStream(is, zos); + is.close(); + zos.close(); + } + + private static void copyStream(InputStream in, OutputStream out) throws IOException { + byte[] chunk = new byte[1024]; + int count; + while ((count = in.read(chunk)) >= 0) { + out.write(chunk, 0, count); + } + } + + /** + * 在写入器中写入电子表格 + * + */ + public static class SpreadsheetWriter { + private final Writer _out; + private int _rownum; + private static String LINE_SEPARATOR = System.getProperty("line.separator"); + + public SpreadsheetWriter(Writer out) { + _out = out; + } + + public void beginSheet() throws IOException { + _out.write("" + ""); + _out.write("" + LINE_SEPARATOR); + } + + public void endSheet() throws IOException { + _out.write(""); + _out.write(""); + } + + /** + * 插入新行 + * + * @param rownum + * 以0开始 + */ + public void insertRow(int rownum) throws IOException { + _out.write("" + LINE_SEPARATOR); + this._rownum = rownum; + } + + /** + * 插入行结束标志 + */ + public void endRow() throws IOException { + _out.write("" + LINE_SEPARATOR); + } + + /** + * 插入新列 + * + * @param columnIndex + * @param value + * @param styleIndex + * @throws IOException + */ + public void createCell(int columnIndex, String value, int styleIndex) throws IOException { + String ref = new CellReference(_rownum, columnIndex).formatAsString(); + _out.write(""); + _out.write("" + XMLEncoder.encode(value) + ""); + _out.write(""); + } + + public void createCell(int columnIndex, String value) throws IOException { + createCell(columnIndex, value, -1); + } + + public void createCell(int columnIndex, double value, int styleIndex) throws IOException { + String ref = new CellReference(_rownum, columnIndex).formatAsString(); + _out.write(""); + _out.write("" + value + ""); + _out.write(""); + } + + public void createCell(int columnIndex, double value) throws IOException { + createCell(columnIndex, value, -1); + } + + public void createCell(int columnIndex, Calendar value, int styleIndex) throws IOException { + createCell(columnIndex, DateUtil.getExcelDate(value, false), styleIndex); + } + } +} \ No newline at end of file diff --git a/src/main/java/cn/hme/framework/helper/excel/Excel2003Reader.java b/src/main/java/cn/hme/framework/helper/excel/Excel2003Reader.java new file mode 100644 index 0000000..55d4785 --- /dev/null +++ b/src/main/java/cn/hme/framework/helper/excel/Excel2003Reader.java @@ -0,0 +1,241 @@ +package cn.hme.framework.helper.excel; + +import java.io.IOException; +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +import org.apache.poi.hssf.eventusermodel.EventWorkbookBuilder.SheetRecordCollectingListener; +import org.apache.poi.hssf.eventusermodel.FormatTrackingHSSFListener; +import org.apache.poi.hssf.eventusermodel.HSSFEventFactory; +import org.apache.poi.hssf.eventusermodel.HSSFListener; +import org.apache.poi.hssf.eventusermodel.HSSFRequest; +import org.apache.poi.hssf.eventusermodel.MissingRecordAwareHSSFListener; +import org.apache.poi.hssf.eventusermodel.dummyrecord.LastCellOfRowDummyRecord; +import org.apache.poi.hssf.eventusermodel.dummyrecord.MissingCellDummyRecord; +import org.apache.poi.hssf.model.HSSFFormulaParser; +import org.apache.poi.hssf.record.BOFRecord; +import org.apache.poi.hssf.record.BlankRecord; +import org.apache.poi.hssf.record.BoolErrRecord; +import org.apache.poi.hssf.record.BoundSheetRecord; +import org.apache.poi.hssf.record.FormulaRecord; +import org.apache.poi.hssf.record.LabelRecord; +import org.apache.poi.hssf.record.LabelSSTRecord; +import org.apache.poi.hssf.record.NumberRecord; +import org.apache.poi.hssf.record.Record; +import org.apache.poi.hssf.record.SSTRecord; +import org.apache.poi.hssf.record.StringRecord; +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.poifs.filesystem.POIFSFileSystem; + +public class Excel2003Reader implements HSSFListener { + private int minColumns = -1; + private POIFSFileSystem fs; + private int lastRowNumber; + private int lastColumnNumber; + + /** Should we output the formula, or the value it has? */ + private boolean outputFormulaValues = true; + + /** For parsing Formulas */ + private SheetRecordCollectingListener workbookBuildingListener; + // excel2003工作薄 + private HSSFWorkbook stubWorkbook; + + // Records we pick up as we process + private SSTRecord sstRecord; + private FormatTrackingHSSFListener formatListener; + + // 表索引 + private int sheetIndex = -1; + private BoundSheetRecord[] orderedBSRs; + + @SuppressWarnings("rawtypes") + private ArrayList boundSheetRecords = new ArrayList(); + + // For handling formulas with string results + private int nextRow; + private int nextColumn; + private boolean outputNextStringRecord; + // 当前行 + @SuppressWarnings("unused") + private int curRow = 0; + // 存储行记录的容器 + private List rowlist = new ArrayList();; + + private String sheetName; + + private ExcelRowReader rowReader; + + public void setRowReader(ExcelRowReader rowReader) { + this.rowReader = rowReader; + } + + /** + * 遍历excel下所有的sheet + * + * @throws IOException + */ + public void process(InputStream is) throws IOException { + this.fs = new POIFSFileSystem(is); + MissingRecordAwareHSSFListener listener = new MissingRecordAwareHSSFListener(this); + formatListener = new FormatTrackingHSSFListener(listener); + HSSFEventFactory factory = new HSSFEventFactory(); + HSSFRequest request = new HSSFRequest(); + if (outputFormulaValues) { + request.addListenerForAllRecords(formatListener); + } else { + workbookBuildingListener = new SheetRecordCollectingListener(formatListener); + request.addListenerForAllRecords(workbookBuildingListener); + } + factory.processWorkbookEvents(request, fs); + } + + /** + * HSSFListener 监听方法,处理 Record + */ + @SuppressWarnings("unchecked") + public void processRecord(Record record) { + int thisRow = -1; + int thisColumn = -1; + String thisStr = null; + String value = null; + switch (record.getSid()) { + case BoundSheetRecord.sid: + boundSheetRecords.add(record); + break; + case BOFRecord.sid: + BOFRecord br = (BOFRecord) record; + if (br.getType() == BOFRecord.TYPE_WORKSHEET) { + // 如果有需要,则建立子工作薄 + if (workbookBuildingListener != null && stubWorkbook == null) { + stubWorkbook = workbookBuildingListener.getStubHSSFWorkbook(); + } + + sheetIndex++; + if (orderedBSRs == null) { + orderedBSRs = BoundSheetRecord.orderByBofPosition(boundSheetRecords); + } + sheetName = orderedBSRs[sheetIndex].getSheetname(); + this.rowReader.valuesMap.put(sheetName, new ArrayList>()); + } + break; + + case SSTRecord.sid: + sstRecord = (SSTRecord) record; + break; + + case BlankRecord.sid: + BlankRecord brec = (BlankRecord) record; + thisRow = brec.getRow(); + thisColumn = brec.getColumn(); + thisStr = ""; + rowlist.add(thisColumn, thisStr); + break; + case BoolErrRecord.sid: // 单元格为布尔类型 + BoolErrRecord berec = (BoolErrRecord) record; + thisRow = berec.getRow(); + thisColumn = berec.getColumn(); + thisStr = berec.getBooleanValue() + ""; + rowlist.add(thisColumn, thisStr); + break; + + case FormulaRecord.sid: // 单元格为公式类型 + FormulaRecord frec = (FormulaRecord) record; + thisRow = frec.getRow(); + thisColumn = frec.getColumn(); + if (outputFormulaValues) { + if (Double.isNaN(frec.getValue())) { + // Formula result is a string + // This is stored in the next record + outputNextStringRecord = true; + nextRow = frec.getRow(); + nextColumn = frec.getColumn(); + } else { + thisStr = formatListener.formatNumberDateCell(frec); + } + } else { + thisStr = '"' + HSSFFormulaParser.toFormulaString(stubWorkbook, frec.getParsedExpression()) + '"'; + } + rowlist.add(thisColumn, thisStr); + break; + case StringRecord.sid:// 单元格中公式的字符串 + if (outputNextStringRecord) { + // String for formula + StringRecord srec = (StringRecord) record; + thisStr = srec.getString(); + thisRow = nextRow; + thisColumn = nextColumn; + outputNextStringRecord = false; + } + break; + case LabelRecord.sid: + LabelRecord lrec = (LabelRecord) record; + curRow = thisRow = lrec.getRow(); + thisColumn = lrec.getColumn(); + value = lrec.getValue().trim(); + value = value.equals("") ? " " : value; + this.rowlist.add(thisColumn, value); + break; + case LabelSSTRecord.sid: // 单元格为字符串类型 + LabelSSTRecord lsrec = (LabelSSTRecord) record; + curRow = thisRow = lsrec.getRow(); + thisColumn = lsrec.getColumn(); + if (sstRecord == null) { + rowlist.add(thisColumn, null); + } else { + value = sstRecord.getString(lsrec.getSSTIndex()).toString().trim(); + value = value.equals("") ? null : value; + rowlist.add(thisColumn, value); + } + break; + case NumberRecord.sid: // 单元格为数字类型 + NumberRecord numrec = (NumberRecord) record; + curRow = thisRow = numrec.getRow(); + thisColumn = numrec.getColumn(); + value = formatListener.formatNumberDateCell(numrec).trim(); + value = value.equals("") ? " " : value; + // 向容器加入列值 + rowlist.add(thisColumn, value); + break; + default: + break; + } + + // 遇到新行的操作 + if (thisRow != -1 && thisRow != lastRowNumber) { + lastColumnNumber = -1; + } + + // 空值的操作 + if (record instanceof MissingCellDummyRecord) { + MissingCellDummyRecord mc = (MissingCellDummyRecord) record; + curRow = thisRow = mc.getRow(); + thisColumn = mc.getColumn(); + rowlist.add(thisColumn, " "); + } + + // 更新行和列的值 + if (thisRow > -1) + lastRowNumber = thisRow; + if (thisColumn > -1) + lastColumnNumber = thisColumn; + + // 行结束时的操作 + if (record instanceof LastCellOfRowDummyRecord) { + if (minColumns > 0) { + // 列值重新置空 + if (lastColumnNumber == -1) { + lastColumnNumber = 0; + } + } + lastColumnNumber = -1; + // 每行结束时, 调用getRows() 方法 + rowReader.getRows(sheetIndex,sheetName, rowlist); + + // 清空容器 + rowlist.clear(); + } + } + +} diff --git a/src/main/java/cn/hme/framework/helper/excel/Excel2003Writer.java b/src/main/java/cn/hme/framework/helper/excel/Excel2003Writer.java new file mode 100644 index 0000000..a786245 --- /dev/null +++ b/src/main/java/cn/hme/framework/helper/excel/Excel2003Writer.java @@ -0,0 +1,47 @@ +package cn.hme.framework.helper.excel; + +import java.io.FileOutputStream; +import java.io.IOException; + +import org.apache.poi.hssf.usermodel.HSSFWorkbook; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; + +public class Excel2003Writer { + /** + * 写入excel并填充内容,一个sheet只能写65536行以下,超出会报异常,写入时建议使用AbstractExcel2007Writer + * + * @param fileName + * @throws IOException + */ + public static void writeExcel(String fileName) throws IOException { + + // 创建excel2003对象 + Workbook wb = new HSSFWorkbook(); + + // 设置文件放置路径和文件名 + FileOutputStream fileOut = new FileOutputStream(fileName); + // 创建新的表单 + Sheet sheet = wb.createSheet("newsheet"); + // 创建新行 + for (int i = 0; i < 20000; i++) { + Row row = sheet.createRow(i); + // 创建单元格 + Cell cell = row.createCell(0); + // 设置单元格值 + cell.setCellValue(1); + row.createCell(1).setCellValue(1 + i); + row.createCell(2).setCellValue(true); + row.createCell(3).setCellValue(0.43d); + row.createCell(4).setCellValue('d'); + row.createCell(5).setCellValue(""); + row.createCell(6).setCellValue("第七列" + i); + row.createCell(7).setCellValue("第八列" + i); + } + wb.write(fileOut); + wb.close(); + fileOut.close(); + } +} diff --git a/src/main/java/cn/hme/framework/helper/excel/Excel2007Reader.java b/src/main/java/cn/hme/framework/helper/excel/Excel2007Reader.java new file mode 100644 index 0000000..5f3fd30 --- /dev/null +++ b/src/main/java/cn/hme/framework/helper/excel/Excel2007Reader.java @@ -0,0 +1,293 @@ +package cn.hme.framework.helper.excel; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; + +import org.apache.poi.openxml4j.opc.OPCPackage; +import org.apache.poi.ss.usermodel.BuiltinFormats; +import org.apache.poi.ss.usermodel.DateUtil; +import org.apache.poi.xssf.eventusermodel.ReadOnlySharedStringsTable; +import org.apache.poi.xssf.eventusermodel.XSSFReader; +import org.apache.poi.xssf.model.StylesTable; +import org.apache.poi.xssf.usermodel.XSSFCellStyle; +import org.apache.poi.xssf.usermodel.XSSFRichTextString; +import org.springframework.util.StringUtils; +import org.xml.sax.Attributes; +import org.xml.sax.InputSource; +import org.xml.sax.SAXException; +import org.xml.sax.XMLReader; +import org.xml.sax.helpers.DefaultHandler; + +import cn.hme.framework.helper.date.LocalDateHelper; +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.helper.log.LogHelper; + +/** + * 抽象Excel2007读取器,excel2007的底层数据结构是xml文件,采用SAX的事件驱动的方法解析 xml,需要继承DefaultHandler,在遇到文件内容时,事件会触发,这种做法可以大大降低 内存的耗费,特别使用于大数据量的文件。 + * + */ +public class Excel2007Reader extends DefaultHandler { + enum xssfDataType { + BOOL, ERROR, FORMULA, INLINESTR, SSTINDEX, NUMBER, + } + + // 共享字符串表 + // Table with styles + private StylesTable stylesTable; + private xssfDataType nextDataType; + // Table with unique strings + private ReadOnlySharedStringsTable sharedStringsTable; + + // Used to format numeric cell values. + private short formatIndex; + private String formatString; + + private int thisColumn = -1; + // The last column printed to the output stream + private int lastColumnNumber = -1; + + // Gathers characters as they are seen. + private StringBuffer value = new StringBuffer(); + // Set when V start element is seen + private boolean vIsOpen; + + private List rowlist = new ArrayList(); + private ExcelRowReader rowReader; + + private String sheetName; + + private int curRow = 0; + + public Excel2007Reader(ExcelRowReader rowReader) { + this.rowReader = rowReader; + } + + /** + * 只遍历一个电子表格, + */ + + public void processOneSheet(InputStream is, String sheet_name) throws Exception { + OPCPackage pkg = OPCPackage.open(is); + processOneSheet(pkg, sheet_name); + } + + public void processOneSheet(OPCPackage pkg, String sheet_name) throws Exception { + this.sharedStringsTable = new ReadOnlySharedStringsTable(pkg); + XSSFReader xssfReader = new XSSFReader(pkg); + this.stylesTable = xssfReader.getStylesTable(); + XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader.getSheetsData(); + if (!iter.hasNext()) { + return; + } + InputStream stream = null; + if (!StringUtils.hasText(sheet_name)) { + stream = iter.next(); + } else { + while (iter.hasNext()) { + if (sheetName.equals(sheet_name)) { + stream = iter.next(); + break; + + } + } + } + + // 没找到表 + if (stream == null) + return; + this.sheetName = iter.getSheetName(); + this.rowReader.getValuesMap().put(sheetName, new ArrayList>()); + InputSource sheetSource = new InputSource(stream); + SAXParserFactory saxFactory = SAXParserFactory.newInstance(); + SAXParser saxParser = saxFactory.newSAXParser(); + XMLReader sheetParser = saxParser.getXMLReader(); + sheetParser.setContentHandler(this); + sheetParser.parse(sheetSource); + + stream.close(); + + } + + /** + * 遍历工作簿中所有的电子表格 + * + * @param filename + * @throws Exception + */ + public void process(String filename) throws Exception { + OPCPackage pkg = OPCPackage.open(filename); + process(pkg); + } + + public void process(InputStream is) throws Exception { + OPCPackage pkg = OPCPackage.open(is); + process(pkg); + } + + private void process(OPCPackage pkg) throws Exception { + this.sharedStringsTable = new ReadOnlySharedStringsTable(pkg); + XSSFReader xssfReader = new XSSFReader(pkg); + this.stylesTable = xssfReader.getStylesTable(); + XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader.getSheetsData(); + while (iter.hasNext()) { + InputStream stream = iter.next(); + sheetName = iter.getSheetName(); + this.rowReader.getValuesMap().put(sheetName, new ArrayList>()); + InputSource sheetSource = new InputSource(stream); + SAXParserFactory saxFactory = SAXParserFactory.newInstance(); + SAXParser saxParser = saxFactory.newSAXParser(); + XMLReader sheetParser = saxParser.getXMLReader(); + sheetParser.setContentHandler(this); + sheetParser.parse(sheetSource); + stream.close(); + } + } + + public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException { + + if ("inlineStr".equals(name) || "v".equals(name)) { + vIsOpen = true; + // Clear contents cache + value.setLength(0); + } + // c => cell + else if ("c".equals(name)) { + // Get the cell reference + String r = attributes.getValue("r"); + int firstDigit = -1; + for (int c = 0; c < r.length(); ++c) { + if (Character.isDigit(r.charAt(c))) { + firstDigit = c; + break; + } + } + thisColumn = nameToColumn(r.substring(0, firstDigit)); + + // Set up defaults. + this.nextDataType = xssfDataType.NUMBER; + this.formatIndex = -1; + this.formatString = null; + String cellType = attributes.getValue("t"); + String cellStyleStr = attributes.getValue("s"); + if ("b".equals(cellType)) + nextDataType = xssfDataType.BOOL; + else if ("e".equals(cellType)) + nextDataType = xssfDataType.ERROR; + else if ("inlineStr".equals(cellType)) + nextDataType = xssfDataType.INLINESTR; + else if ("s".equals(cellType)) + nextDataType = xssfDataType.SSTINDEX; + else if ("str".equals(cellType)) + nextDataType = xssfDataType.FORMULA; + else if (cellStyleStr != null) { + // It's a number, but almost certainly one + // with a special style or format + int styleIndex = Integer.parseInt(cellStyleStr); + XSSFCellStyle style = stylesTable.getStyleAt(styleIndex); + this.formatIndex = style.getDataFormat(); + this.formatString = style.getDataFormatString(); + // LogHelper.info(formatIndex+":"+formatString); + if (this.formatString == null) + this.formatString = BuiltinFormats.getBuiltinFormat(this.formatIndex); + } + } + + } + + public void endElement(String uri, String localName, String name) throws SAXException { + String thisStr = null; + + // v => contents of a cell + if ("v".equals(name)) { + // Process the value contents as required. + // Do now, as characters() may be called more than once + switch (nextDataType) { + + case BOOL: + char first = value.charAt(0); + thisStr = first == '0' ? "FALSE" : "TRUE"; + break; + + case ERROR: + thisStr = "\"ERROR:" + value.toString() + '"'; + break; + + case FORMULA: + // A formula could result in a string value, + // so always add double-quote characters. + thisStr = value.toString(); + break; + case INLINESTR: + XSSFRichTextString rtsi = new XSSFRichTextString(value.toString()); + thisStr = rtsi.toString(); + break; + + case SSTINDEX: + String sstIndex = value.toString(); + try { + int idx = Integer.parseInt(sstIndex); + // @SuppressWarnings("deprecation") + // XSSFRichTextString rtss = new XSSFRichTextString(sharedStringsTable.getItemAt(idx)); + thisStr = sharedStringsTable.getItemAt(idx).toString(); + } catch (NumberFormatException ex) { + } + break; + + case NUMBER: + String n = value.toString(); + // 判断如果是日期 yyyy + if (StringHelper.hasValue(n)) { + if (this.formatString.indexOf("yyyy") > -1) { + // 日期格式 + thisStr = LocalDateHelper.format(LocalDateHelper.toLocalDateTime(DateUtil.getJavaDate(Double.parseDouble(n)))); + } else + thisStr = n; + } else + thisStr = n; + // LogHelper.info(n + ":" + thisStr); + break; + + default: + thisStr = "(TODO: Unexpected type: " + nextDataType + ")"; + break; + } + if (lastColumnNumber == -1) { + lastColumnNumber = 0; + } + for (int i = lastColumnNumber + 1; i < thisColumn; ++i) { + rowlist.add(null); + } + + // Update column + if (thisColumn > -1) { + lastColumnNumber = thisColumn; + } + rowlist.add(StringUtils.hasText(thisStr) ? thisStr : null); + + } else if ("row".equals(name)) { + this.rowReader.getRows(curRow, sheetName, this.rowlist); + curRow++; + this.rowlist = new ArrayList(); + } + + } + + @Override + public void characters(char[] ch, int start, int length) throws SAXException { + if (vIsOpen) + value.append(ch, start, length); + } + + private int nameToColumn(String name) { + int column = -1; + for (int i = 0; i < name.length(); ++i) { + int c = name.charAt(i); + column = (column + 1) * 26 + c - 'A'; + } + return column; + } +} \ No newline at end of file diff --git a/src/main/java/cn/hme/framework/helper/excel/Excel2007Writer.java b/src/main/java/cn/hme/framework/helper/excel/Excel2007Writer.java new file mode 100644 index 0000000..6accd23 --- /dev/null +++ b/src/main/java/cn/hme/framework/helper/excel/Excel2007Writer.java @@ -0,0 +1,436 @@ +package cn.hme.framework.helper.excel; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.OutputStream; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletResponse; + +import org.apache.poi.ss.usermodel.BorderStyle; +import org.apache.poi.ss.usermodel.CellStyle; +import org.apache.poi.ss.usermodel.Font; +import org.apache.poi.ss.usermodel.HorizontalAlignment; +import org.apache.poi.ss.usermodel.VerticalAlignment; +import org.apache.poi.xssf.streaming.SXSSFCell; +import org.apache.poi.xssf.streaming.SXSSFRow; +import org.apache.poi.xssf.streaming.SXSSFSheet; +import org.apache.poi.xssf.streaming.SXSSFWorkbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.util.StringUtils; + +public final class Excel2007Writer { + /********************** + * 标题字体 + */ + public final static String TitleFontFamilyName = "TitleFontFamilyName"; + /********************** + * 标题字体拉伸 + */ + public final static String TitleBoldWeightName = "TitleBoldWeightName"; + /********************** + * 标题字体高度 + */ + public final static String TitleFontHeightName = "TitleFontHeightName"; + /*********************** + * 标题字体是否加粗 + */ + public final static String TitleFontBoldName = "TitleFontBoldName"; + /*********************** + * 标题高度 + */ + public final static String TitleHeightName = "TitleHeightName"; + /********************** + * 行字体 + */ + public final static String RowFontFamilyName = "RowFontFamilyName"; + /********************** + * 行字体高度 + */ + public final static String RowFontHeightName = "RowFontHeightName"; + /*********************** + * 行字体是否加粗 + */ + public final static String RowFontBoldName = "RowFontBoldName"; + /*********************** + * 行高度 + */ + public final static String RowHeightName = "RowHeightName"; + /*********************** + * 行高度默认值 + */ + public static short RowHeightValue = 500; + + /******************** + * 单次写入最大行,防止内存溢出 + */ + public static int ExcelRowLimit = 10000; + + /********************************** + * 创建Excel标题Map + */ + public final static Map createTitleMap(String value, int width) { + Map map = new LinkedHashMap(); + map.put(value, width); + return map; + } + + /********************************************* + * 根据行数组生成Excel + */ + public static SXSSFWorkbook createExcel(List> values) { + return createExcel(values, new HashMap()); + } + + /****************************** + * 根据行数组生成Excel + * + * @param paramMap 格式化参数 + * @param values + */ + public static SXSSFWorkbook createExcel(List> values, Map paramMap) { + return createExcel(values, "sheet1", paramMap); + } + + /************************************* + * 根据行数组生成Exce + * + * @param values + * @param sheet_name 表名 + * @param paramMap 格式化参数 + * @return + */ + public static SXSSFWorkbook createExcel(List> values, String sheet_name, Map paramMap) { + return createExcel(values, null, sheet_name, paramMap); + } + + public static SXSSFWorkbook createExcel(List> values, Map titleMap, String sheet_name, + Map paramMap) { + // + XSSFWorkbook xssfWorkbook = new XSSFWorkbook(); + SXSSFWorkbook workbook = new SXSSFWorkbook(xssfWorkbook, ExcelRowLimit); + // XSSFWorkbook wb = new XSSFWorkbook(); + createSheet(workbook, values, titleMap, sheet_name, paramMap); + return workbook; + } + + public static SXSSFWorkbook createExcel(Map>> values, Map titleMap, + Map paramMap) { + XSSFWorkbook xssfWorkbook = new XSSFWorkbook(); + SXSSFWorkbook workbook = new SXSSFWorkbook(xssfWorkbook, ExcelRowLimit); + for (String sheet_name : values.keySet()) + createSheet(workbook, values.get(sheet_name), titleMap, sheet_name, paramMap); + return workbook; + } + + public static SXSSFWorkbook createExcel(Map>> values, Map titleMap) { + return createExcel(values, titleMap, new HashMap()); + } + + public static SXSSFWorkbook createExcel(Map>> values) { + return createExcel(values, null); + } + + /************************* + * 根据行数组生成Exce + * + * @param values + * @param sheet_name 表名 + */ + public static SXSSFWorkbook createExcel(List> values, String sheet_name) { + return createExcel(values, sheet_name, new HashMap()); + } + + public static void createSheet(SXSSFWorkbook wb, Map>> values, + Map titleMap, Map paramMap) { + for (String sheet_name : values.keySet()) + createSheet(wb, values.get(sheet_name), titleMap, sheet_name, paramMap); + } + + public static void createSheet(SXSSFWorkbook wb, List> values, Map titleMap, + String sheet_name) { + createSheet(wb, values, titleMap, sheet_name, new HashMap()); + } + + public static void createSheet(SXSSFWorkbook wb, List> values, String sheet_name) { + createSheet(wb, values, null, sheet_name, new HashMap()); + } + + /************************** + * + * @param wb Excel表 + * @param values + * @param titleMap 标题信息 + * @param sheet_name 表名 + * @param paramMap 格式化参数 + */ + + public static void createSheet(SXSSFWorkbook wb, List> values, Map titleMap, + String sheet_name, Map paramMap) { + // 创建Excel的工作书册 Workbook,对应到一个excel文档 + // = new XSSFWorkbook(); + // 创建Excel的工作sheet,对应到一个excel文档的tab + if (!StringUtils.hasText(sheet_name)) + sheet_name = "sheet1"; + SXSSFSheet sheet = wb.createSheet(sheet_name); + + // 设置excel每列宽度 + // sheet.setColumnWidth(0, 4000); + // sheet.setColumnWidth(1, 3500); + + // 创建字体样式 + Font font = wb.createFont(); + // 字符集 + if (paramMap.containsKey(RowFontFamilyName)) { + try { + font.setFontName(paramMap.get(RowFontFamilyName).toString()); + } catch (Exception e) { + + } + } + if (paramMap.containsKey(RowFontHeightName)) { + try { + font.setFontHeight(Short.parseShort(paramMap.get(RowFontHeightName).toString())); + } catch (Exception e) { + + } + } + if (paramMap.containsKey(RowFontBoldName)) + font.setBold(true); + + // font.setColor(XSSFColor.); + + // 创建单元格样式 + CellStyle style = wb.createCellStyle(); + style.setAlignment(HorizontalAlignment.LEFT); + style.setVerticalAlignment(VerticalAlignment.CENTER); + + // 设置边框 + style.setBorderBottom(BorderStyle.THIN); + style.setBorderLeft(BorderStyle.THIN); + style.setBorderRight(BorderStyle.THIN); + style.setBorderTop(BorderStyle.THIN); + style.setFont(font);// 设置字体 + // 不自动换行 + style.setWrapText(false); + + int startIndex = 0; + // 标题 + if (titleMap != null && titleMap.values().size() > 0) { + // 创建字体样式 + Font vfont = wb.createFont(); + // 字符集 + if (paramMap.containsKey(TitleFontFamilyName)) { + try { + vfont.setFontName(paramMap.get(TitleFontFamilyName).toString()); + } catch (Exception e) { + + } + } else { + if (paramMap.containsKey(RowFontFamilyName)) { + try { + vfont.setFontName(paramMap.get(RowFontFamilyName).toString()); + } catch (Exception e) { + + } + } + } + if (paramMap.containsKey(TitleFontHeightName)) { + try { + vfont.setFontHeight(Short.parseShort(paramMap.get(TitleFontHeightName).toString())); + } catch (Exception e) { + + } + } else { + if (paramMap.containsKey(RowFontHeightName)) { + try { + vfont.setFontHeight(Short.parseShort(paramMap.get(RowFontHeightName).toString())); + } catch (Exception e) { + + } + } + } + if (paramMap.containsKey(TitleFontBoldName)) + vfont.setBold(true); + else { + if (paramMap.containsKey(RowFontBoldName)) + vfont.setBold(true); + + } + SXSSFRow row = sheet.createRow(0); + // 设定行的高度 + if (paramMap.containsKey(TitleHeightName)) { + try { + row.setHeight(Short.parseShort(paramMap.get(TitleHeightName).toString())); + } catch (Exception e) { + row.setHeight(RowHeightValue); + } + } else + row.setHeight(RowHeightValue); + int index = 0; + + for (String key : titleMap.keySet()) { + SXSSFCell cell = row.createCell(index); + cell.setCellStyle(style); + cell.setCellValue(key); + sheet.setColumnWidth(index, titleMap.get(key) * 256); + index++; + } + + startIndex = 1; + + } + + // 创建Excel的sheet的一行 + for (int rowNum = 0; rowNum < values.size(); rowNum++) { + SXSSFRow row = sheet.createRow(rowNum + startIndex); + // 设定行的高度 + if (paramMap.containsKey(RowHeightName)) { + try { + row.setHeight(Short.parseShort(paramMap.get(RowHeightName).toString())); + } catch (Exception e) { + row.setHeight(RowHeightValue); + } + } else + row.setHeight(RowHeightValue); + // 创建一个Excel的单元格 + for (int colNum = 0; colNum < values.get(rowNum).size(); colNum++) { + SXSSFCell cell = row.createCell(colNum); + cell.setCellStyle(style); + Object value = values.get(rowNum).get(colNum); + if (value == null) + continue; + // 给Excel的单元格设置样式和赋值 + cell.setCellValue(value.toString()); + + } + + // 合并单元格(startRow,endRow,startColumn,endColumn) + // sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2)); + + } + } + + public static void downloadAsExcel(HttpServletResponse response, String fileName, + Map>> values) { + downloadAsExcel(response, fileName, values, null, new HashMap()); + + } + + public static void downloadAsExcel(HttpServletResponse response, String fileName, + Map>> values, Map titleMap) { + downloadAsExcel(response, fileName, values, titleMap, new HashMap()); + + } + + public static void downloadAsExcel(HttpServletResponse response, String fileName, + Map>> values, Map titleMap, Map paramMap) { + SXSSFWorkbook wb = createExcel(values, titleMap, paramMap); + // 输出文档 + responseAsFile(response, fileName, wb); + + } + + public static void downloadAsExcel(HttpServletResponse response, String fileName, List> values) { + downloadAsExcel(response, fileName, values, null, new HashMap()); + + } + + public static void downloadAsExcel(HttpServletResponse response, String fileName, List> values, + Map titleMap) { + downloadAsExcel(response, fileName, values, titleMap, new HashMap()); + + } + + public static void downloadAsExcel(HttpServletResponse response, String fileName, List> values, + Map titleMap, Map paramMap) { + SXSSFWorkbook wb = createExcel(values, titleMap, null, paramMap); + // 输出文档 + responseAsFile(response, fileName, wb); + + } + + private static void responseAsFile(HttpServletResponse response, String fileName, SXSSFWorkbook wb) { + response.setCharacterEncoding("utf8"); + // response.setContentType("application/vnd.ms-excel"); + response.setContentType("application/x-download"); + fileName = fileName + ".xlsx"; + OutputStream out = null; + try { + response.addHeader("Content-Disposition", + "attachment;filename=\"" + new String(fileName.getBytes("utf8"), "ISO_8859_1") + "\""); + out = response.getOutputStream(); + wb.write(out); + out.close(); + } catch (Exception e) { + + } finally { + try { + wb.close(); + } catch (Exception ex) { + + } + } + } + + public static void saveAsExcel(File file, Map>> values) { + saveAsExcel(file, values, null, new HashMap()); + + } + + public static void saveAsExcel(File file, Map>> values, Map titleMap) { + saveAsExcel(file, values, titleMap, new HashMap()); + + } + + public static void saveAsExcel(File file, Map>> values, Map titleMap, + Map paramMap) { + SXSSFWorkbook wb = createExcel(values, titleMap, paramMap); + // 输出文档 + saveAsFile(file, wb); + + } + + public static void saveAsExcel(File file, List> values) { + saveAsExcel(file, values, null, new HashMap()); + + } + + public static void saveAsExcel(File file, List> values, Map titleMap) { + saveAsExcel(file, values, titleMap, new HashMap()); + + } + + public static void saveAsExcel(File file, List> values, Map titleMap, + Map paramMap) { + SXSSFWorkbook wb = createExcel(values, titleMap, null, paramMap); + // 输出文档 + saveAsFile(file, wb); + + } + + private static void saveAsFile(File file, SXSSFWorkbook wb) { + OutputStream out = null; + try { + out = new FileOutputStream(file); + wb.write(out); + } catch (Exception e) { + + } finally { + try { + out.close(); + } catch (Exception ex) { + + } + try { + wb.close(); + } catch (Exception ex) { + + } + } + } + +} diff --git a/src/main/java/cn/hme/framework/helper/excel/ExcelReaderHelper.java b/src/main/java/cn/hme/framework/helper/excel/ExcelReaderHelper.java new file mode 100644 index 0000000..ac927be --- /dev/null +++ b/src/main/java/cn/hme/framework/helper/excel/ExcelReaderHelper.java @@ -0,0 +1,200 @@ +package cn.hme.framework.helper.excel; + +import java.io.FileInputStream; +import java.io.InputStream; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.web.multipart.MultipartFile; + +import cn.hme.framework.helper.lang.CollectionHelper; +import cn.hme.framework.web.exception.BusinessException; + +/************************************** + * Excel通用工具,使用POI接口 + * + * @author: 张小庆 + * @date: 2016-02-22 21:55:50 + * @version: 2.0.0 + * @email: revisit@126.com + * @Company: www.hmsoft.cn + */ +public abstract class ExcelReaderHelper { + // excel2003扩展名 + public static final String EXCEL03_EXTENSION = ".xls"; + // excel2007扩展名 + public static final String EXCEL07_EXTENSION = ".xlsx"; + + /*********************************************** + * 将Excel的多张表读到Map数组里 + * + * @param file_name Excel文件名 * + * @param title_rows 表头 + * @param column_count 最大列数 + * @return + */ + public static Map>> readExcel(String file_name, int title_rows, int column_count) { + return readExcel(file_name, null, title_rows, column_count); + } + + /********************** + * 将Excel的多张表读到Map数组里 + * + * @param file_name Excel文件名 * + * @param title_rows 表头 + * @param column_count 最大列数 + * @param is 数据流 + * @return + */ + public static Map>> readExcel(String file_name, InputStream is, int title_rows, int column_count) { + ExcelRowReader reader = new ExcelRowReader(); + readAllSheet(reader, file_name, is); + for (List> array : reader.getValuesMap().values()) { + if (array.size() >= title_rows) { + for (int i = 1; i <= title_rows; i++) + array.remove(0); + } + for (List list : array) { + CollectionHelper.padSize(list, column_count); + } + } + return reader.getValuesMap(); + } + + /*********************************** + * 将Excel的多张表读到Map数组里,没有表头信息 + */ + public static Map>> readExcel(String file_name) { + return readExcel(file_name, null); + } + + /*********************************** + * 将Excel的多张表读到Map数组里,没有表头信息 + */ + public static Map>> readExcel(String file_name, InputStream is) { + + ExcelRowReader reader = new ExcelRowReader(); + readAllSheet(reader, file_name, is); + return reader.getValuesMap(); + } + + public static List> readSheet(MultipartFile file) { + try { + return readSheet(file.getOriginalFilename(), file.getInputStream()); + } catch (Exception e) { + return null; + } + } + + public static List> readSheet(MultipartFile file, int title_rows) { + try { + return readSheet(file.getOriginalFilename(), file.getInputStream(), title_rows); + } catch (Exception e) { + return null; + } + } + + public static List> readSheet(MultipartFile file, int title_rows, int column_count) { + try { + return readSheet(file.getOriginalFilename(), file.getInputStream(), title_rows, column_count); + } catch (Exception e) { + return null; + } + } + + public static List> readSheet(String file_name) { + return readSheet(file_name, null, null, null, null); + } + + public static List> readSheet(String file_name, InputStream is) { + return readSheet(file_name, is, null, null, null); + } + + public static List> readSheet(String file_name, int title_rows, int column_count) { + return readSheet(file_name, null, null, title_rows, column_count); + } + + public static List> readSheet(String file_name, InputStream is, int title_rows, int column_count) { + return readSheet(file_name, is, null, title_rows, column_count); + } + + public static List> readSheet(String file_name, InputStream is, int title_rows) { + return readSheet(file_name, is, null, title_rows, null); + } + + public static List> readSheet(String file_name, InputStream is, String sheet_name, Integer title_rows, Integer column_count) { + ExcelRowReader reader = new ExcelRowReader(); + readOneSheet(reader, file_name, is, sheet_name); + List> list = reader.getValues(); + if (title_rows != null) { + if (list.size() >= title_rows) { + for (int i = 1; i <= title_rows; i++) + list.remove(0); + } + } + if (column_count != null) { + for (List array : list) + CollectionHelper.padSize(array, column_count); + } + return list; + } + + public static List> readSheet(String file_name, String sheet_name) { + return readSheet(file_name, null, sheet_name, null, null); + } + + private static void readOneSheet(ExcelRowReader reader, String file_name, InputStream is, String sheet_name) { + try { + // 处理excel2003文件 + if (file_name.endsWith(EXCEL03_EXTENSION)) { + Excel2003Reader excel03 = new Excel2003Reader(); + excel03.setRowReader(reader); + excel03.process(is == null ? new FileInputStream(file_name) : is); + // 处理excel2007文件 + } else if (file_name.endsWith(EXCEL07_EXTENSION)) { + // excel07.processOneSheet(fileName, 1); + new Excel2007Reader(reader).processOneSheet(is == null ? new FileInputStream(file_name) : is, sheet_name); + } else { + throw new BusinessException("文件格式错误,fileName的扩展名只能是xls或xlsx。"); + } + } catch (Exception e) { + e.printStackTrace(); + throw new BusinessException("解析Excel文件出现错误,请检查是否存在或者文件格式是否正确。"); + + } + } + + private static void readAllSheet(ExcelRowReader reader, String file_name, InputStream is) { + try { + // 处理excel2003文件 + if (file_name.endsWith(EXCEL03_EXTENSION)) { + Excel2003Reader excel03 = new Excel2003Reader(); + excel03.setRowReader(reader); + excel03.process(is == null ? new FileInputStream(file_name) : is); + + // 处理excel2007文件 + } else if (file_name.endsWith(EXCEL07_EXTENSION)) { + + new Excel2007Reader(reader).process(is == null ? new FileInputStream(file_name) : is); + } else { + throw new BusinessException("文件格式错误,fileName的扩展名只能是xls或xlsx。"); + } + } catch (Exception e) { + // e.printStackTrace(); + throw new BusinessException("解析Excel文件出现错误,请检查是否存在或者文件格式是否正确。"); + + } + } + + public static Map readColumnMap(List array) { + // List array = list.get(0); + Map colMap = new HashMap(); + for (int k = 0; k < array.size(); k++) { + if (colMap.containsKey(array.get(k))) + throw new BusinessException("Excel表第[" + k + "]列,列名[" + array.get(k) + "]已经存在"); + colMap.put(array.get(k), k); + } + return colMap; + } +} diff --git a/src/main/java/cn/hme/framework/helper/excel/ExcelRowReader.java b/src/main/java/cn/hme/framework/helper/excel/ExcelRowReader.java new file mode 100644 index 0000000..4563852 --- /dev/null +++ b/src/main/java/cn/hme/framework/helper/excel/ExcelRowReader.java @@ -0,0 +1,53 @@ +package cn.hme.framework.helper.excel; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import com.google.gson.internal.LinkedTreeMap; + +public class ExcelRowReader { + + Map>> valuesMap; + private int columnCount = 0; + + public ExcelRowReader() { + valuesMap = new LinkedTreeMap>>(); + } + + public Map>> getValuesMap() { + return valuesMap; + } + + /* + * 业务逻辑实现方法 + * + * @see com.eprosun.util.excel.IRowReader#getRows(int, int, java.util.List) + */ + public void getRows(int row_num, String sheet_name, List row_list) { + List list = new ArrayList(); + if (row_num == 0) { + // 第一行,获取表结构 + columnCount = row_list.size(); + } + for (String v : row_list) + list.add(v); + for (int k = 0; k < columnCount - row_list.size(); k++) + list.add(null); + valuesMap.get(sheet_name).add(list); + + } + + public List> getValues() { + if (valuesMap.keySet().size() > 0) + return valuesMap.values().iterator().next(); + return null; + } + + public List> getValues(String sheet_name) { + if (valuesMap.containsKey(sheet_name)) + return valuesMap.get(sheet_name); + return null; + } + +} diff --git a/src/main/java/cn/hme/framework/helper/excel/XMLEncoder.java b/src/main/java/cn/hme/framework/helper/excel/XMLEncoder.java new file mode 100644 index 0000000..aecfc13 --- /dev/null +++ b/src/main/java/cn/hme/framework/helper/excel/XMLEncoder.java @@ -0,0 +1,47 @@ +package cn.hme.framework.helper.excel; + +public class XMLEncoder { + private static final String[] xmlCode = new String[256]; + + static { + // Special characters + xmlCode['\''] = "'"; + xmlCode['\"'] = "\""; // double quote + xmlCode['&'] = "&"; // ampersand + xmlCode['<'] = "<"; // lower than + xmlCode['>'] = ">"; // greater than + } + + /** + *

+ * Encode the given text into xml. + *

+ * + * @param string the text to encode + * @return the encoded string + */ + public static String encode(String string) { + if (string == null) return ""; + int n = string.length(); + char character; + String xmlchar; + StringBuffer buffer = new StringBuffer(); + // loop over all the characters of the String. + for (int i = 0; i < n; i++) { + character = string.charAt(i); + // the xmlcode of these characters are added to a StringBuffer one by one + try { + xmlchar = xmlCode[character]; + if (xmlchar == null) { + buffer.append(character); + } else { + buffer.append(xmlCode[character]); + } + } catch (ArrayIndexOutOfBoundsException aioobe) { + buffer.append(character); + } + } + return buffer.toString(); + } + +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictDataMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictDataMapper.java new file mode 100644 index 0000000..3efb3c3 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictDataMapper.java @@ -0,0 +1,22 @@ +package cn.tsy.data.idsse.dsds.mapper.dict; + +import org.apache.ibatis.annotations.Param; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.constant.SqlProviderConstant; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.tsy.data.idsse.dsds.model.dict.DictData; + +@HmeMapper +public interface DictDataMapper extends IHmeMapper { + + public Pageable dataWithPage( + @Param(SqlProviderConstant.SQL_PAGE_GROUP) Integer group, + @Param(SqlProviderConstant.SQL_PAGE_START) Integer start, + @Param(SqlProviderConstant.SQL_PAGE_LIMIT) Integer limit, + @Param(SqlProviderConstant.SQL_PAGE_QUERY) String query, + @Param(SqlProviderConstant.SQL_PAGE_ORDER) String order, + @Param(SqlProviderConstant.SQL_PAGE_TYPE) String type + ); +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictDataMapper.xml b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictDataMapper.xml new file mode 100644 index 0000000..3d0fea6 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictDataMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictEquipmentMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictEquipmentMapper.java new file mode 100644 index 0000000..8ac6496 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictEquipmentMapper.java @@ -0,0 +1,21 @@ +package cn.tsy.data.idsse.dsds.mapper.dict; + +import org.apache.ibatis.annotations.Param; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.constant.SqlProviderConstant; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.tsy.data.idsse.dsds.model.dict.DictEquipment; + +@HmeMapper +public interface DictEquipmentMapper extends IHmeMapper { + public Pageable equipmentWithPage( + @Param(SqlProviderConstant.SQL_PAGE_GROUP) Integer group, + @Param(SqlProviderConstant.SQL_PAGE_START) Integer start, + @Param(SqlProviderConstant.SQL_PAGE_LIMIT) Integer limit, + @Param(SqlProviderConstant.SQL_PAGE_QUERY) String query, + @Param(SqlProviderConstant.SQL_PAGE_ORDER) String order, + @Param(SqlProviderConstant.SQL_PAGE_TYPE) String type + ); +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictEquipmentMapper.xml b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictEquipmentMapper.xml new file mode 100644 index 0000000..c522f68 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictEquipmentMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictPlatformMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictPlatformMapper.java new file mode 100644 index 0000000..67b616e --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictPlatformMapper.java @@ -0,0 +1,21 @@ +package cn.tsy.data.idsse.dsds.mapper.dict; + +import org.apache.ibatis.annotations.Param; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.constant.SqlProviderConstant; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.tsy.data.idsse.dsds.model.dict.DictPlatform; + +@HmeMapper +public interface DictPlatformMapper extends IHmeMapper { + public Pageable platformWithPage( + @Param(SqlProviderConstant.SQL_PAGE_GROUP) Integer group, + @Param(SqlProviderConstant.SQL_PAGE_START) Integer start, + @Param(SqlProviderConstant.SQL_PAGE_LIMIT) Integer limit, + @Param(SqlProviderConstant.SQL_PAGE_QUERY) String query, + @Param(SqlProviderConstant.SQL_PAGE_ORDER) String order, + @Param(SqlProviderConstant.SQL_PAGE_TYPE) String type + ); +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictPlatformMapper.xml b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictPlatformMapper.xml new file mode 100644 index 0000000..4264057 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictPlatformMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitSailMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitSailMapper.java new file mode 100644 index 0000000..dd96a01 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitSailMapper.java @@ -0,0 +1,21 @@ +package cn.tsy.data.idsse.dsds.mapper.dict; + +import org.apache.ibatis.annotations.Param; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.constant.SqlProviderConstant; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.tsy.data.idsse.dsds.model.dict.DictUnitSail; + +@HmeMapper +public interface DictUnitSailMapper extends IHmeMapper { + public Pageable sailWithPage( + @Param(SqlProviderConstant.SQL_PAGE_GROUP) Integer group, + @Param(SqlProviderConstant.SQL_PAGE_START) Integer start, + @Param(SqlProviderConstant.SQL_PAGE_LIMIT) Integer limit, + @Param(SqlProviderConstant.SQL_PAGE_QUERY) String query, + @Param(SqlProviderConstant.SQL_PAGE_ORDER) String order, + @Param(SqlProviderConstant.SQL_PAGE_TYPE) String type + ); +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitSailMapper.xml b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitSailMapper.xml new file mode 100644 index 0000000..1a30f4b --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitSailMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitShareMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitShareMapper.java new file mode 100644 index 0000000..179e7aa --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitShareMapper.java @@ -0,0 +1,21 @@ +package cn.tsy.data.idsse.dsds.mapper.dict; + +import org.apache.ibatis.annotations.Param; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.constant.SqlProviderConstant; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.tsy.data.idsse.dsds.model.dict.DictUnitShare; + +@HmeMapper +public interface DictUnitShareMapper extends IHmeMapper { + public Pageable shareWithPage( + @Param(SqlProviderConstant.SQL_PAGE_GROUP) Integer group, + @Param(SqlProviderConstant.SQL_PAGE_START) Integer start, + @Param(SqlProviderConstant.SQL_PAGE_LIMIT) Integer limit, + @Param(SqlProviderConstant.SQL_PAGE_QUERY) String query, + @Param(SqlProviderConstant.SQL_PAGE_ORDER) String order, + @Param(SqlProviderConstant.SQL_PAGE_TYPE) String type + ); +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitShareMapper.xml b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitShareMapper.xml new file mode 100644 index 0000000..7f9e8a4 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/dict/DictUnitShareMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/file/FileRegMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/file/FileRegMapper.java new file mode 100644 index 0000000..92df0bf --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/file/FileRegMapper.java @@ -0,0 +1,11 @@ +package cn.tsy.data.idsse.dsds.mapper.file; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.tsy.data.idsse.dsds.model.file.FileReg; + +@HmeMapper +public interface FileRegMapper extends IHmeMapper { + + +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetMapper.java new file mode 100644 index 0000000..974eb80 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetMapper.java @@ -0,0 +1,21 @@ +package cn.tsy.data.idsse.dsds.mapper.sample; + +import org.apache.ibatis.annotations.Param; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.constant.SqlProviderConstant; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.tsy.data.idsse.dsds.model.sample.SampleDataset; + +@HmeMapper +public interface SampleDatasetMapper extends IHmeMapper { + public Pageable datasetWithPage( + @Param(SqlProviderConstant.SQL_PAGE_GROUP) Integer group, + @Param(SqlProviderConstant.SQL_PAGE_START) Integer start, + @Param(SqlProviderConstant.SQL_PAGE_LIMIT) Integer limit, + @Param(SqlProviderConstant.SQL_PAGE_QUERY) String query, + @Param(SqlProviderConstant.SQL_PAGE_ORDER) String order, + @Param(SqlProviderConstant.SQL_PAGE_TYPE) String type + ); +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetMapper.xml b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetMapper.xml new file mode 100644 index 0000000..7159113 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetTrackMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetTrackMapper.java new file mode 100644 index 0000000..6d5949b --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetTrackMapper.java @@ -0,0 +1,15 @@ +package cn.tsy.data.idsse.dsds.mapper.sample; + +import java.util.Map; + +import org.apache.ibatis.annotations.Param; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.tsy.data.idsse.dsds.model.sample.SampleDatasetTrack; + +@HmeMapper +public interface SampleDatasetTrackMapper extends IHmeMapper { + + public Map totalTrack(@Param("dataset_id") int dataset_id); +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetTrackMapper.xml b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetTrackMapper.xml new file mode 100644 index 0000000..5bb44d1 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleDatasetTrackMapper.xml @@ -0,0 +1,12 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineMapper.java new file mode 100644 index 0000000..3b37e71 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineMapper.java @@ -0,0 +1,10 @@ +package cn.tsy.data.idsse.dsds.mapper.sample; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.tsy.data.idsse.dsds.model.sample.SampleLine; + +@HmeMapper +public interface SampleLineMapper extends IHmeMapper { + +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineTrackMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineTrackMapper.java new file mode 100644 index 0000000..89a4d8d --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineTrackMapper.java @@ -0,0 +1,15 @@ +package cn.tsy.data.idsse.dsds.mapper.sample; + +import java.util.Map; + +import org.apache.ibatis.annotations.Param; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.tsy.data.idsse.dsds.model.sample.SampleLineTrack; + +@HmeMapper +public interface SampleLineTrackMapper extends IHmeMapper { + + public Map totalTrack(@Param("line_id") int line_id); +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineTrackMapper.xml b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineTrackMapper.xml new file mode 100644 index 0000000..6d90bc5 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleLineTrackMapper.xml @@ -0,0 +1,13 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleRegMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleRegMapper.java new file mode 100644 index 0000000..a7a43db --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleRegMapper.java @@ -0,0 +1,21 @@ +package cn.tsy.data.idsse.dsds.mapper.sample; + +import org.apache.ibatis.annotations.Param; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.constant.SqlProviderConstant; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.tsy.data.idsse.dsds.model.sample.SampleReg; + +@HmeMapper +public interface SampleRegMapper extends IHmeMapper { + public Pageable sampleWithPage( + @Param(SqlProviderConstant.SQL_PAGE_GROUP) Integer group, + @Param(SqlProviderConstant.SQL_PAGE_START) Integer start, + @Param(SqlProviderConstant.SQL_PAGE_LIMIT) Integer limit, + @Param(SqlProviderConstant.SQL_PAGE_QUERY) String query, + @Param(SqlProviderConstant.SQL_PAGE_ORDER) String order, + @Param(SqlProviderConstant.SQL_PAGE_TYPE) String type + ); +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleRegMapper.xml b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleRegMapper.xml new file mode 100644 index 0000000..4a2cc20 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleRegMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleStationMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleStationMapper.java new file mode 100644 index 0000000..c6c957e --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sample/SampleStationMapper.java @@ -0,0 +1,10 @@ +package cn.tsy.data.idsse.dsds.mapper.sample; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.tsy.data.idsse.dsds.model.sample.SampleStation; + +@HmeMapper +public interface SampleStationMapper extends IHmeMapper { + +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/sar/SarFileMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sar/SarFileMapper.java new file mode 100644 index 0000000..8ee4378 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sar/SarFileMapper.java @@ -0,0 +1,11 @@ +package cn.tsy.data.idsse.dsds.mapper.sar; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.tsy.data.idsse.dsds.model.sar.SarFile; + +@HmeMapper +public interface SarFileMapper extends IHmeMapper { + + +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/sar/SarLogMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sar/SarLogMapper.java new file mode 100644 index 0000000..ec7a085 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sar/SarLogMapper.java @@ -0,0 +1,11 @@ +package cn.tsy.data.idsse.dsds.mapper.sar; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.tsy.data.idsse.dsds.model.sar.SarLog; + +@HmeMapper +public interface SarLogMapper extends IHmeMapper { + + +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/sar/SarRegMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sar/SarRegMapper.java new file mode 100644 index 0000000..fb33961 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sar/SarRegMapper.java @@ -0,0 +1,21 @@ +package cn.tsy.data.idsse.dsds.mapper.sar; + +import org.apache.ibatis.annotations.Param; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.constant.SqlProviderConstant; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.tsy.data.idsse.dsds.model.sar.SarReg; + +@HmeMapper +public interface SarRegMapper extends IHmeMapper { + public Pageable sarWithPage( + @Param(SqlProviderConstant.SQL_PAGE_GROUP) Integer group, + @Param(SqlProviderConstant.SQL_PAGE_START) Integer start, + @Param(SqlProviderConstant.SQL_PAGE_LIMIT) Integer limit, + @Param(SqlProviderConstant.SQL_PAGE_QUERY) String query, + @Param(SqlProviderConstant.SQL_PAGE_ORDER) String order, + @Param(SqlProviderConstant.SQL_PAGE_TYPE) String type + ); +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/sar/SarRegMapper.xml b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sar/SarRegMapper.xml new file mode 100644 index 0000000..c731740 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/sar/SarRegMapper.xml @@ -0,0 +1,22 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageLogMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageLogMapper.java new file mode 100644 index 0000000..7e0ef48 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageLogMapper.java @@ -0,0 +1,11 @@ +package cn.tsy.data.idsse.dsds.mapper.voyage; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageLog; + +@HmeMapper +public interface VoyageLogMapper extends IHmeMapper { + + +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageMemberMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageMemberMapper.java new file mode 100644 index 0000000..922fe71 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageMemberMapper.java @@ -0,0 +1,23 @@ +package cn.tsy.data.idsse.dsds.mapper.voyage; + +import org.apache.ibatis.annotations.Param; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.constant.SqlProviderConstant; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageMember; + +@HmeMapper +public interface VoyageMemberMapper extends IHmeMapper { + + public Pageable memberWithPage( + @Param(SqlProviderConstant.SQL_PAGE_GROUP) Integer group, + @Param(SqlProviderConstant.SQL_PAGE_START) Integer start, + @Param(SqlProviderConstant.SQL_PAGE_LIMIT) Integer limit, + @Param(SqlProviderConstant.SQL_PAGE_QUERY) String query, + @Param(SqlProviderConstant.SQL_PAGE_ORDER) String order, + @Param(SqlProviderConstant.SQL_PAGE_TYPE) String type, + @Param("voyage_id") int voyage_id + ); +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageMemberMapper.xml b/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageMemberMapper.xml new file mode 100644 index 0000000..bac3623 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageMemberMapper.xml @@ -0,0 +1,21 @@ + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageNavigationMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageNavigationMapper.java new file mode 100644 index 0000000..4642147 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageNavigationMapper.java @@ -0,0 +1,26 @@ +package cn.tsy.data.idsse.dsds.mapper.voyage; + +import java.util.Map; + +import org.apache.ibatis.annotations.Param; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.constant.SqlProviderConstant; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageNavigation; + +@HmeMapper +public interface VoyageNavigationMapper extends IHmeMapper { + public Pageable navigationWithPage( + @Param(SqlProviderConstant.SQL_PAGE_GROUP) Integer group, + @Param(SqlProviderConstant.SQL_PAGE_START) Integer start, + @Param(SqlProviderConstant.SQL_PAGE_LIMIT) Integer limit, + @Param(SqlProviderConstant.SQL_PAGE_QUERY) String query, + @Param(SqlProviderConstant.SQL_PAGE_ORDER) String order, + @Param(SqlProviderConstant.SQL_PAGE_TYPE) String type, + @Param("voyage_id") int voyage_id + ); + + public Map totalNavigation(@Param("voyage_id") int voyage_id); +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageNavigationMapper.xml b/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageNavigationMapper.xml new file mode 100644 index 0000000..d86b7f1 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageNavigationMapper.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageRegMapper.java b/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageRegMapper.java new file mode 100644 index 0000000..e060de0 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageRegMapper.java @@ -0,0 +1,22 @@ +package cn.tsy.data.idsse.dsds.mapper.voyage; + +import org.apache.ibatis.annotations.Param; + +import cn.hme.framework.jdbc.annotation.HmeMapper; +import cn.hme.framework.jdbc.constant.SqlProviderConstant; +import cn.hme.framework.jdbc.mapper.IHmeMapper; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageReg; + +@HmeMapper +public interface VoyageRegMapper extends IHmeMapper { + + public Pageable voyageWithPage( + @Param(SqlProviderConstant.SQL_PAGE_GROUP) Integer group, + @Param(SqlProviderConstant.SQL_PAGE_START) Integer start, + @Param(SqlProviderConstant.SQL_PAGE_LIMIT) Integer limit, + @Param(SqlProviderConstant.SQL_PAGE_QUERY) String query, + @Param(SqlProviderConstant.SQL_PAGE_ORDER) String order, + @Param(SqlProviderConstant.SQL_PAGE_TYPE) String type + ); +} diff --git a/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageRegMapper.xml b/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageRegMapper.xml new file mode 100644 index 0000000..cf58e05 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/mapper/voyage/VoyageRegMapper.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/dict/DictData.java b/src/main/java/cn/tsy/data/idsse/dsds/model/dict/DictData.java new file mode 100644 index 0000000..d400181 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/dict/DictData.java @@ -0,0 +1,142 @@ +package cn.tsy.data.idsse.dsds.model.dict; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; +import java.time.LocalDateTime; + +/********************************************** + * 字典-数据样品类型 + * + * @author: zxq + * @date: 2024-05-13 12:18:29 + * @version: 1.0.0 + * @email: revisit@126.com + * @Company: www.hmesoft.cn + */ +@HmeTable(name = "DICT_DATA", key = "TSY_ID") +public class DictData extends HmeBean { + private static final long serialVersionUID = 3331291079369430078L; + private Integer tsy_id; + //数据样品类型名称 + private String data_name; + //分组 + private String data_group; + //英文名称 + private String data_eng; + //别名 + private String data_alias; + //描述信息 + private String data_remark; + //创建时间 + private LocalDateTime create_time; + //排序信息 + private Integer data_order; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 数据样品类型名称 + */ + public String getData_name() { + return this.data_name; + } + + /**** + * 数据样品类型名称 + */ + public void setData_name(String data_name) { + this.data_name = data_name; + } + + /**** + * 分组 + */ + public String getData_group() { + return this.data_group; + } + + /**** + * 分组 + */ + public void setData_group(String data_group) { + this.data_group = data_group; + } + + /**** + * 英文名称 + */ + public String getData_eng() { + return this.data_eng; + } + + /**** + * 英文名称 + */ + public void setData_eng(String data_eng) { + this.data_eng = data_eng; + } + + /**** + * 别名 + */ + public String getData_alias() { + return this.data_alias; + } + + /**** + * 别名 + */ + public void setData_alias(String data_alias) { + this.data_alias = data_alias; + } + + /**** + * 描述信息 + */ + public String getData_remark() { + return this.data_remark; + } + + /**** + * 描述信息 + */ + public void setData_remark(String data_remark) { + this.data_remark = data_remark; + } + + /**** + * 创建时间 + */ + public LocalDateTime getCreate_time() { + return this.create_time; + } + + /**** + * 创建时间 + */ + public void setCreate_time(LocalDateTime create_time) { + this.create_time = create_time; + } + + /**** + * 排序信息 + */ + public Integer getData_order() { + return this.data_order; + } + + /**** + * 排序信息 + */ + public void setData_order(Integer data_order) { + this.data_order = data_order; + } + + +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/dict/DictEquipment.java b/src/main/java/cn/tsy/data/idsse/dsds/model/dict/DictEquipment.java new file mode 100644 index 0000000..e07f35f --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/dict/DictEquipment.java @@ -0,0 +1,141 @@ +package cn.tsy.data.idsse.dsds.model.dict; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; +import java.time.LocalDateTime; + +/********************************************** + * 字典-设备类型 + * + * @author: zxq + * @date: 2024-05-13 12:18:51 + * @version: 1.0.0 + * @email: revisit@126.com + * @Company: www.hmesoft.cn + */ +@HmeTable(name = "DICT_EQUIPMENT", key = "TSY_ID") +public class DictEquipment extends HmeBean { + private static final long serialVersionUID = 6056111588030140787L; + private Integer tsy_id; + //设备类型名称 + private String equipment_name; + //设备分组 + private String equipment_group; + //英文名称 + private String equipment_eng; + //别名,简称 + private String equipment_alias; + //备注信息 + private String equipment_remark; + //创建时间 + private LocalDateTime create_time; + //排序信息 + private Integer equipment_order; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 设备类型名称 + */ + public String getEquipment_name() { + return this.equipment_name; + } + + /**** + * 设备类型名称 + */ + public void setEquipment_name(String equipment_name) { + this.equipment_name = equipment_name; + } + + /**** + * 设备分组 + */ + public String getEquipment_group() { + return this.equipment_group; + } + + /**** + * 设备分组 + */ + public void setEquipment_group(String equipment_group) { + this.equipment_group = equipment_group; + } + + /**** + * 英文名称 + */ + public String getEquipment_eng() { + return this.equipment_eng; + } + + /**** + * 英文名称 + */ + public void setEquipment_eng(String equipment_eng) { + this.equipment_eng = equipment_eng; + } + + /**** + * 别名,简称 + */ + public String getEquipment_alias() { + return this.equipment_alias; + } + + /**** + * 别名,简称 + */ + public void setEquipment_alias(String equipment_alias) { + this.equipment_alias = equipment_alias; + } + + /**** + * 备注信息 + */ + public String getEquipment_remark() { + return this.equipment_remark; + } + + /**** + * 备注信息 + */ + public void setEquipment_remark(String equipment_remark) { + this.equipment_remark = equipment_remark; + } + + /**** + * 创建时间 + */ + public LocalDateTime getCreate_time() { + return this.create_time; + } + + /**** + * 创建时间 + */ + public void setCreate_time(LocalDateTime create_time) { + this.create_time = create_time; + } + + /**** + * 排序信息 + */ + public Integer getEquipment_order() { + return this.equipment_order; + } + + /**** + * 排序信息 + */ + public void setEquipment_order(Integer equipment_order) { + this.equipment_order = equipment_order; + } + +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/dict/DictPlatform.java b/src/main/java/cn/tsy/data/idsse/dsds/model/dict/DictPlatform.java new file mode 100644 index 0000000..d9362c8 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/dict/DictPlatform.java @@ -0,0 +1,141 @@ +package cn.tsy.data.idsse.dsds.model.dict; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; +import java.time.LocalDateTime; + +/********************************************** + * 字典-平台类型 + * + * @author: zxq + * @date: 2024-05-13 12:19:19 + * @version: 1.0.0 + * @email: revisit@126.com + * @Company: www.hmesoft.cn + */ +@HmeTable(name = "DICT_PLATFORM", key = "TSY_ID") +public class DictPlatform extends HmeBean { + private static final long serialVersionUID = 7034252923039748075L; + private Integer tsy_id; + //平台类型名称 + private String platform_name; + //平台分组 + private String platform_group; + //英文名称 + private String platform_eng; + //别名 + private String platform_alias; + //备注信息 + private String platform_remark; + //创建时间 + private LocalDateTime create_time; + //排序信息 + private Integer platform_order; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 平台类型名称 + */ + public String getPlatform_name() { + return this.platform_name; + } + + /**** + * 平台类型名称 + */ + public void setPlatform_name(String platform_name) { + this.platform_name = platform_name; + } + + /**** + * 平台分组 + */ + public String getPlatform_group() { + return this.platform_group; + } + + /**** + * 平台分组 + */ + public void setPlatform_group(String platform_group) { + this.platform_group = platform_group; + } + + /**** + * 英文名称 + */ + public String getPlatform_eng() { + return this.platform_eng; + } + + /**** + * 英文名称 + */ + public void setPlatform_eng(String platform_eng) { + this.platform_eng = platform_eng; + } + + /**** + * 别名 + */ + public String getPlatform_alias() { + return this.platform_alias; + } + + /**** + * 别名 + */ + public void setPlatform_alias(String platform_alias) { + this.platform_alias = platform_alias; + } + + /**** + * 备注信息 + */ + public String getPlatform_remark() { + return this.platform_remark; + } + + /**** + * 备注信息 + */ + public void setPlatform_remark(String platform_remark) { + this.platform_remark = platform_remark; + } + + /**** + * 创建时间 + */ + public LocalDateTime getCreate_time() { + return this.create_time; + } + + /**** + * 创建时间 + */ + public void setCreate_time(LocalDateTime create_time) { + this.create_time = create_time; + } + + /**** + * 排序信息 + */ + public Integer getPlatform_order() { + return this.platform_order; + } + + /**** + * 排序信息 + */ + public void setPlatform_order(Integer platform_order) { + this.platform_order = platform_order; + } + +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/dict/DictUnitSail.java b/src/main/java/cn/tsy/data/idsse/dsds/model/dict/DictUnitSail.java new file mode 100644 index 0000000..7a21a0f --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/dict/DictUnitSail.java @@ -0,0 +1,205 @@ +package cn.tsy.data.idsse.dsds.model.dict; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; +import java.time.LocalDateTime; + +/********************************************** + * 字典-参航单位 + * + * @author: zxq + * @date: 2024-05-13 12:20:37 + * @version: 1.0.0 + * @email: revisit@126.com + * @Company: www.hmesoft.cn + */ +@HmeTable(name = "DICT_UNIT_SAIL", key = "TSY_ID") +public class DictUnitSail extends HmeBean { + private static final long serialVersionUID = 8060754825487933021L; + private Integer tsy_id; + // 参航单位名称 + private String unit_name; + // 单位负责人 + private String link_man; + // 联系电话 + private String link_tel; + // 传真号码 + private String link_fax; + // 电子邮件 + private String link_email; + // 经度信息 + private String unit_lon; + // 纬度信息 + private String unit_lat; + // 单位地址 + private String unit_addr; + // 单位类型 + private String unit_type; + // 备注信息 + private String unit_remark; + // 创建时间 + private LocalDateTime create_time; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 参航单位名称 + */ + public String getUnit_name() { + return this.unit_name; + } + + /**** + * 参航单位名称 + */ + public void setUnit_name(String unit_name) { + this.unit_name = unit_name; + } + + /**** + * 单位负责人 + */ + public String getLink_man() { + return this.link_man; + } + + /**** + * 单位负责人 + */ + public void setLink_man(String link_man) { + this.link_man = link_man; + } + + /**** + * 联系电话 + */ + public String getLink_tel() { + return this.link_tel; + } + + /**** + * 联系电话 + */ + public void setLink_tel(String link_tel) { + this.link_tel = link_tel; + } + + /**** + * 传真号码 + */ + public String getLink_fax() { + return this.link_fax; + } + + /**** + * 传真号码 + */ + public void setLink_fax(String link_fax) { + this.link_fax = link_fax; + } + + /**** + * 电子邮件 + */ + public String getLink_email() { + return this.link_email; + } + + /**** + * 电子邮件 + */ + public void setLink_email(String link_email) { + this.link_email = link_email; + } + + /**** + * 经度信息 + */ + public String getUnit_lon() { + return this.unit_lon; + } + + /**** + * 经度信息 + */ + public void setUnit_lon(String unit_lon) { + this.unit_lon = unit_lon; + } + + /**** + * 纬度信息 + */ + public String getUnit_lat() { + return this.unit_lat; + } + + /**** + * 纬度信息 + */ + public void setUnit_lat(String unit_lat) { + this.unit_lat = unit_lat; + } + + /**** + * 单位地址 + */ + public String getUnit_addr() { + return this.unit_addr; + } + + /**** + * 单位地址 + */ + public void setUnit_addr(String unit_addr) { + this.unit_addr = unit_addr; + } + + /**** + * 单位类型 + */ + public String getUnit_type() { + return this.unit_type; + } + + /**** + * 单位类型 + */ + public void setUnit_type(String unit_type) { + this.unit_type = unit_type; + } + + /**** + * 备注信息 + */ + public String getUnit_remark() { + return this.unit_remark; + } + + /**** + * 备注信息 + */ + public void setUnit_remark(String unit_remark) { + this.unit_remark = unit_remark; + } + + /**** + * 创建时间 + */ + public LocalDateTime getCreate_time() { + return this.create_time; + } + + /**** + * 创建时间 + */ + public void setCreate_time(LocalDateTime create_time) { + this.create_time = create_time; + } + +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/dict/DictUnitShare.java b/src/main/java/cn/tsy/data/idsse/dsds/model/dict/DictUnitShare.java new file mode 100644 index 0000000..98fa457 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/dict/DictUnitShare.java @@ -0,0 +1,173 @@ +package cn.tsy.data.idsse.dsds.model.dict; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; +import java.time.LocalDateTime; + +/********************************************** + * 字典-共享单位 + * + * @author: zxq + * @date: 2024-05-13 12:20:57 + * @version: 1.0.0 + * @email: revisit@126.com + * @Company: www.hmesoft.cn + */ +@HmeTable(name = "DICT_UNIT_SHARE", key = "TSY_ID") +public class DictUnitShare extends HmeBean { + private static final long serialVersionUID = 1675512796297449585L; + private Integer tsy_id; + // 参航单位名称 + private String unit_name; + // 单位负责人 + private String link_man; + // 联系电话 + private String link_tel; + // 传真号码 + private String link_fax; + // 电子邮件 + private String link_email; + // 单位地址 + private String unit_addr; + // 单位类型 + private String unit_type; + // 备注信息 + private String unit_remark; + // 创建时间 + private LocalDateTime create_time; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 参航单位名称 + */ + public String getUnit_name() { + return this.unit_name; + } + + /**** + * 参航单位名称 + */ + public void setUnit_name(String unit_name) { + this.unit_name = unit_name; + } + + /**** + * 单位负责人 + */ + public String getLink_man() { + return this.link_man; + } + + /**** + * 单位负责人 + */ + public void setLink_man(String link_man) { + this.link_man = link_man; + } + + /**** + * 联系电话 + */ + public String getLink_tel() { + return this.link_tel; + } + + /**** + * 联系电话 + */ + public void setLink_tel(String link_tel) { + this.link_tel = link_tel; + } + + /**** + * 传真号码 + */ + public String getLink_fax() { + return this.link_fax; + } + + /**** + * 传真号码 + */ + public void setLink_fax(String link_fax) { + this.link_fax = link_fax; + } + + /**** + * 电子邮件 + */ + public String getLink_email() { + return this.link_email; + } + + /**** + * 电子邮件 + */ + public void setLink_email(String link_email) { + this.link_email = link_email; + } + + /**** + * 单位地址 + */ + public String getUnit_addr() { + return this.unit_addr; + } + + /**** + * 单位地址 + */ + public void setUnit_addr(String unit_addr) { + this.unit_addr = unit_addr; + } + + /**** + * 单位类型 + */ + public String getUnit_type() { + return this.unit_type; + } + + /**** + * 单位类型 + */ + public void setUnit_type(String unit_type) { + this.unit_type = unit_type; + } + + /**** + * 备注信息 + */ + public String getUnit_remark() { + return this.unit_remark; + } + + /**** + * 备注信息 + */ + public void setUnit_remark(String unit_remark) { + this.unit_remark = unit_remark; + } + + /**** + * 创建时间 + */ + public LocalDateTime getCreate_time() { + return this.create_time; + } + + /**** + * 创建时间 + */ + public void setCreate_time(LocalDateTime create_time) { + this.create_time = create_time; + } + +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/file/FileReg.java b/src/main/java/cn/tsy/data/idsse/dsds/model/file/FileReg.java new file mode 100644 index 0000000..bc31aaf --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/file/FileReg.java @@ -0,0 +1,140 @@ +package cn.tsy.data.idsse.dsds.model.file; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; +import java.time.LocalDateTime; + +/********************************************** +* 上传文件定义 +* @author: zxq +* @date: 2024-05-13 23:57:49 +* @version: 1.0.0 +* @email: revisit@126.com +* @Company: www.hmesoft.cn +*/ +@HmeTable(name = "FILE_REG", key="TSY_ID") +public class FileReg extends HmeBean{ + private static final long serialVersionUID = -714765477609779109L; + private Integer tsy_id; + //文件名称 + private String file_name; + //文件路径 + private String file_path; + //文件类型 + private String file_type; + //文件大小 + private String file_length; + //上传时间 + private LocalDateTime upload_time; + //对应的业务编号 + private Integer business_id; + //业务处理情况 + private String business_status; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 文件名称 + */ + public String getFile_name() { + return this.file_name; + } + + /**** + * 文件名称 + */ + public void setFile_name(String file_name) { + this.file_name = file_name; + } + + /**** + * 文件路径 + */ + public String getFile_path() { + return this.file_path; + } + + /**** + * 文件路径 + */ + public void setFile_path(String file_path) { + this.file_path = file_path; + } + + /**** + * 文件类型 + */ + public String getFile_type() { + return this.file_type; + } + + /**** + * 文件类型 + */ + public void setFile_type(String file_type) { + this.file_type = file_type; + } + + /**** + * 文件大小 + */ + public String getFile_length() { + return this.file_length; + } + + /**** + * 文件大小 + */ + public void setFile_length(String file_length) { + this.file_length = file_length; + } + + /**** + * 上传时间 + */ + public LocalDateTime getUpload_time() { + return this.upload_time; + } + + /**** + * 上传时间 + */ + public void setUpload_time(LocalDateTime upload_time) { + this.upload_time = upload_time; + } + + /**** + * 对应的业务编号 + */ + public Integer getBusiness_id() { + return this.business_id; + } + + /**** + * 对应的业务编号 + */ + public void setBusiness_id(Integer business_id) { + this.business_id = business_id; + } + + /**** + * 业务处理情况 + */ + public String getBusiness_status() { + return this.business_status; + } + + /**** + * 业务处理情况 + */ + public void setBusiness_status(String business_status) { + this.business_status = business_status; + } + +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleDataset.java b/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleDataset.java new file mode 100644 index 0000000..79c24a9 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleDataset.java @@ -0,0 +1,605 @@ +package cn.tsy.data.idsse.dsds.model.sample; + +import java.time.LocalDateTime; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; + +/********************************************** + * 航次作业列表 + * + * @author: zxq + * @date: 2024-05-16 09:47:01 + * @version: 1.0.0 + * @email: revisit@126.com + * @Company: www.hmesoft.cn + */ +@HmeTable(name = "SAMPLE_DATASET", key = "TSY_ID") +public class SampleDataset extends HmeBean { + private static final long serialVersionUID = 3320175900580948727L; + private Integer tsy_id; + //作业编号:航次号_平台+潜次号_设备类型_数据样品类型 + private String dataset_name; + //作业类型,站位作业,测线作业 + private String job_type; + //航次内部编号 + private Integer voyage_id; + //航次名称(冗余) + private String voyage_name; + //平台内部编号 + private Integer platform_id; + //平台类型 + private String platform_type; + //平台简称 + private String platform_alias; + //潜次名称 + private String diving_sn; + //样品类型 + private String data_type; + //设备内部编号 + private Integer equipment_id; + //设备简称 + private String equipment_alias; + //设备类型 + private String equipment_type; + //数据样品类型编号 + private Integer data_id; + //设备样品类型检测 + private String data_alias; + //平台名称 + private String platform_name; + //备注信息 + private String dataset_remark; + //创建时间 + private LocalDateTime create_time; + //左舷 + private String driver_left; + //右舷 + private String driver_right; + //主驾 + private String driver_master; + //左舷单位 + private String driver_unit_left; + //右舷单位 + private String driver_unit_right; + //入水时间 + private LocalDateTime water_in_time; + //出水时间 + private LocalDateTime water_out_time; + //水中时间 + private Integer water_minutes; + //坐底时间 + private LocalDateTime bottom_time; + //抛载时间 + private LocalDateTime throwing_time; + //回收时间 + private LocalDateTime receive_time; + //作业时间 + private Integer job_minutes; + //布放经度 + private String wiring_lon; + //布放纬度 + private String wiring_lat; + //布放深度 + private String wiring_deep; + //设备编号 + private String equipment_sn; + //设备型号 + private String equipment_model; + //设备定标时间 + private LocalDateTime equipment_time; + //潜水器轨迹文件 + private String diving_track_file; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 作业编号:航次号_平台+潜次号_设备类型_数据样品类型 + */ + public String getDataset_name() { + return this.dataset_name; + } + + /**** + * 作业编号:航次号_平台+潜次号_设备类型_数据样品类型 + */ + public void setDataset_name(String dataset_name) { + this.dataset_name = dataset_name; + } + + /**** + * 作业类型,站位作业,测线作业 + */ + public String getJob_type() { + return this.job_type; + } + + /**** + * 作业类型,站位作业,测线作业 + */ + public void setJob_type(String job_type) { + this.job_type = job_type; + } + + /**** + * 航次内部编号 + */ + public Integer getVoyage_id() { + return this.voyage_id; + } + + /**** + * 航次内部编号 + */ + public void setVoyage_id(Integer voyage_id) { + this.voyage_id = voyage_id; + } + + /**** + * 航次名称(冗余) + */ + public String getVoyage_name() { + return this.voyage_name; + } + + /**** + * 航次名称(冗余) + */ + public void setVoyage_name(String voyage_name) { + this.voyage_name = voyage_name; + } + + /**** + * 平台内部编号 + */ + public Integer getPlatform_id() { + return this.platform_id; + } + + /**** + * 平台内部编号 + */ + public void setPlatform_id(Integer platform_id) { + this.platform_id = platform_id; + } + + /**** + * 平台类型 + */ + public String getPlatform_type() { + return this.platform_type; + } + + /**** + * 平台类型 + */ + public void setPlatform_type(String platform_type) { + this.platform_type = platform_type; + } + + /**** + * 平台简称 + */ + public String getPlatform_alias() { + return this.platform_alias; + } + + /**** + * 平台简称 + */ + public void setPlatform_alias(String platform_alias) { + this.platform_alias = platform_alias; + } + + /**** + * 潜次名称 + */ + public String getDiving_sn() { + return this.diving_sn; + } + + /**** + * 潜次名称 + */ + public void setDiving_sn(String diving_sn) { + this.diving_sn = diving_sn; + } + + /**** + * 样品类型 + */ + public String getData_type() { + return this.data_type; + } + + /**** + * 样品类型 + */ + public void setData_type(String data_type) { + this.data_type = data_type; + } + + /**** + * 设备内部编号 + */ + public Integer getEquipment_id() { + return this.equipment_id; + } + + /**** + * 设备内部编号 + */ + public void setEquipment_id(Integer equipment_id) { + this.equipment_id = equipment_id; + } + + /**** + * 设备简称 + */ + public String getEquipment_alias() { + return this.equipment_alias; + } + + /**** + * 设备简称 + */ + public void setEquipment_alias(String equipment_alias) { + this.equipment_alias = equipment_alias; + } + + /**** + * 设备类型 + */ + public String getEquipment_type() { + return this.equipment_type; + } + + /**** + * 设备类型 + */ + public void setEquipment_type(String equipment_type) { + this.equipment_type = equipment_type; + } + + /**** + * 数据样品类型编号 + */ + public Integer getData_id() { + return this.data_id; + } + + /**** + * 数据样品类型编号 + */ + public void setData_id(Integer data_id) { + this.data_id = data_id; + } + + /**** + * 设备样品类型检测 + */ + public String getData_alias() { + return this.data_alias; + } + + /**** + * 设备样品类型检测 + */ + public void setData_alias(String data_alias) { + this.data_alias = data_alias; + } + + /**** + * 平台名称 + */ + public String getPlatform_name() { + return this.platform_name; + } + + /**** + * 平台名称 + */ + public void setPlatform_name(String platform_name) { + this.platform_name = platform_name; + } + + /**** + * 备注信息 + */ + public String getDataset_remark() { + return this.dataset_remark; + } + + /**** + * 备注信息 + */ + public void setDataset_remark(String dataset_remark) { + this.dataset_remark = dataset_remark; + } + + /**** + * 创建时间 + */ + public LocalDateTime getCreate_time() { + return this.create_time; + } + + /**** + * 创建时间 + */ + public void setCreate_time(LocalDateTime create_time) { + this.create_time = create_time; + } + + /**** + * 左舷 + */ + public String getDriver_left() { + return this.driver_left; + } + + /**** + * 左舷 + */ + public void setDriver_left(String driver_left) { + this.driver_left = driver_left; + } + + /**** + * 右舷 + */ + public String getDriver_right() { + return this.driver_right; + } + + /**** + * 右舷 + */ + public void setDriver_right(String driver_right) { + this.driver_right = driver_right; + } + + /**** + * 主驾 + */ + public String getDriver_master() { + return this.driver_master; + } + + /**** + * 主驾 + */ + public void setDriver_master(String driver_master) { + this.driver_master = driver_master; + } + + /**** + * 左舷单位 + */ + public String getDriver_unit_left() { + return this.driver_unit_left; + } + + /**** + * 左舷单位 + */ + public void setDriver_unit_left(String driver_unit_left) { + this.driver_unit_left = driver_unit_left; + } + + /**** + * 右舷单位 + */ + public String getDriver_unit_right() { + return this.driver_unit_right; + } + + /**** + * 右舷单位 + */ + public void setDriver_unit_right(String driver_unit_right) { + this.driver_unit_right = driver_unit_right; + } + + /**** + * 入水时间 + */ + public LocalDateTime getWater_in_time() { + return this.water_in_time; + } + + /**** + * 入水时间 + */ + public void setWater_in_time(LocalDateTime water_in_time) { + this.water_in_time = water_in_time; + } + + /**** + * 出水时间 + */ + public LocalDateTime getWater_out_time() { + return this.water_out_time; + } + + /**** + * 出水时间 + */ + public void setWater_out_time(LocalDateTime water_out_time) { + this.water_out_time = water_out_time; + } + + /**** + * 水中时间 + */ + public Integer getWater_minutes() { + return this.water_minutes; + } + + /**** + * 水中时间 + */ + public void setWater_minutes(Integer water_minutes) { + this.water_minutes = water_minutes; + } + + /**** + * 坐底时间 + */ + public LocalDateTime getBottom_time() { + return this.bottom_time; + } + + /**** + * 坐底时间 + */ + public void setBottom_time(LocalDateTime bottom_time) { + this.bottom_time = bottom_time; + } + + /**** + * 抛载时间 + */ + public LocalDateTime getThrowing_time() { + return this.throwing_time; + } + + /**** + * 抛载时间 + */ + public void setThrowing_time(LocalDateTime throwing_time) { + this.throwing_time = throwing_time; + } + + /**** + * 回收时间 + */ + public LocalDateTime getReceive_time() { + return this.receive_time; + } + + /**** + * 回收时间 + */ + public void setReceive_time(LocalDateTime receive_time) { + this.receive_time = receive_time; + } + + /**** + * 作业时间 + */ + public Integer getJob_minutes() { + return this.job_minutes; + } + + /**** + * 作业时间 + */ + public void setJob_minutes(Integer job_minutes) { + this.job_minutes = job_minutes; + } + + /**** + * 布放经度 + */ + public String getWiring_lon() { + return this.wiring_lon; + } + + /**** + * 布放经度 + */ + public void setWiring_lon(String wiring_lon) { + this.wiring_lon = wiring_lon; + } + + /**** + * 布放纬度 + */ + public String getWiring_lat() { + return this.wiring_lat; + } + + /**** + * 布放纬度 + */ + public void setWiring_lat(String wiring_lat) { + this.wiring_lat = wiring_lat; + } + + /**** + * 布放深度 + */ + public String getWiring_deep() { + return this.wiring_deep; + } + + /**** + * 布放深度 + */ + public void setWiring_deep(String wiring_deep) { + this.wiring_deep = wiring_deep; + } + + /**** + * 设备编号 + */ + public String getEquipment_sn() { + return this.equipment_sn; + } + + /**** + * 设备编号 + */ + public void setEquipment_sn(String equipment_sn) { + this.equipment_sn = equipment_sn; + } + + /**** + * 设备型号 + */ + public String getEquipment_model() { + return this.equipment_model; + } + + /**** + * 设备型号 + */ + public void setEquipment_model(String equipment_model) { + this.equipment_model = equipment_model; + } + + /**** + * 设备定标时间 + */ + public LocalDateTime getEquipment_time() { + return this.equipment_time; + } + + /**** + * 设备定标时间 + */ + public void setEquipment_time(LocalDateTime equipment_time) { + this.equipment_time = equipment_time; + } + + /**** + * 潜水器轨迹文件 + */ + public String getDiving_track_file() { + return this.diving_track_file; + } + + /**** + * 潜水器轨迹文件 + */ + public void setDiving_track_file(String diving_track_file) { + this.diving_track_file = diving_track_file; + } +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleDatasetTrack.java b/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleDatasetTrack.java new file mode 100644 index 0000000..6a076d5 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleDatasetTrack.java @@ -0,0 +1,93 @@ +package cn.tsy.data.idsse.dsds.model.sample; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; +import java.time.LocalDateTime; + +/********************************************** + * 潜水器轨迹文件 + * + * @author: zxq + * @date: 2024-05-16 13:03:27 + * @version: 1.0.0 + * @email: revisit@126.com + * @Company: www.hmesoft.cn + */ +@HmeTable(name = "SAMPLE_DATASET_TRACK", key = "TSY_ID") +public class SampleDatasetTrack extends HmeBean { + private static final long serialVersionUID = -4725353852538683632L; + private Integer tsy_id; + //数据集编号 + private Integer dataset_id; + //经度 + private String track_lon; + //纬度 + private String track_lat; + //时间 + private LocalDateTime track_time; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 数据集编号 + */ + public Integer getDataset_id() { + return this.dataset_id; + } + + /**** + * 数据集编号 + */ + public void setDataset_id(Integer dataset_id) { + this.dataset_id = dataset_id; + } + + /**** + * 经度 + */ + public String getTrack_lon() { + return this.track_lon; + } + + /**** + * 经度 + */ + public void setTrack_lon(String track_lon) { + this.track_lon = track_lon; + } + + /**** + * 纬度 + */ + public String getTrack_lat() { + return this.track_lat; + } + + /**** + * 纬度 + */ + public void setTrack_lat(String track_lat) { + this.track_lat = track_lat; + } + + /**** + * 时间 + */ + public LocalDateTime getTrack_time() { + return this.track_time; + } + + /**** + * 时间 + */ + public void setTrack_time(LocalDateTime track_time) { + this.track_time = track_time; + } + +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleLine.java b/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleLine.java new file mode 100644 index 0000000..380f0da --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleLine.java @@ -0,0 +1,367 @@ +package cn.tsy.data.idsse.dsds.model.sample; + +import java.time.LocalDateTime; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; + +/********************************************** + * 数据样品-测线作业 + * + * @author: zxq + * @date: 2024-05-14 18:12:52 + * @version: 1.0.0 + * @email: revisit@126.com + * @Company: www.hmesoft.cn + */ +@HmeTable(name = "SAMPLE_LINE", key = "TSY_ID") +public class SampleLine extends HmeBean { + private static final long serialVersionUID = 8005069057561746132L; + private Integer tsy_id; + //数据集编号 + private Integer dataset_id; + //数据集名称 + private String dataset_name; + //数据样品编号 + private String sample_name; + //数据样品在数据集内部编号 + private String sample_seq; + //赞助机构 + private String funding_org; + //公开期限 + private String publish_rule; + //测线号 + private String line_sn; + //测线深度 + private String line_deep; + //开始经度 + private String start_lon; + //开始纬度 + private String start_lat; + //结束经度 + private String end_lon; + //结束纬度 + private String end_lat; + //开始时间 + private LocalDateTime start_time; + //结束时间 + private LocalDateTime end_time; + //上传测线轨迹文件名称 + private String track_file_name; + //数据格式 + private String sample_format; + //原始数据、预处理数据、后处理数据 + private String sample_status; + //应急搜捞、全球深渊深潜计划、崖州湾共享航次、基金委共享航次 + private String sample_tag_name; + //标签对应的值,用于关联第三方系统 + private String sample_tag_value; + //备注信息 + private String sample_remark; + //创建时间 + private LocalDateTime create_time; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 数据集编号 + */ + public Integer getDataset_id() { + return this.dataset_id; + } + + /**** + * 数据集编号 + */ + public void setDataset_id(Integer dataset_id) { + this.dataset_id = dataset_id; + } + + /**** + * 数据集名称 + */ + public String getDataset_name() { + return this.dataset_name; + } + + /**** + * 数据集名称 + */ + public void setDataset_name(String dataset_name) { + this.dataset_name = dataset_name; + } + + /**** + * 数据样品编号 + */ + public String getSample_name() { + return this.sample_name; + } + + /**** + * 数据样品编号 + */ + public void setSample_name(String sample_name) { + this.sample_name = sample_name; + } + + /**** + * 数据样品在数据集内部编号 + */ + public String getSample_seq() { + return this.sample_seq; + } + + /**** + * 数据样品在数据集内部编号 + */ + public void setSample_seq(String sample_seq) { + this.sample_seq = sample_seq; + } + + /**** + * 赞助机构 + */ + public String getFunding_org() { + return this.funding_org; + } + + /**** + * 赞助机构 + */ + public void setFunding_org(String funding_org) { + this.funding_org = funding_org; + } + + /**** + * 公开期限 + */ + public String getPublish_rule() { + return this.publish_rule; + } + + /**** + * 公开期限 + */ + public void setPublish_rule(String publish_rule) { + this.publish_rule = publish_rule; + } + + /**** + * 测线号 + */ + public String getLine_sn() { + return this.line_sn; + } + + /**** + * 测线号 + */ + public void setLine_sn(String line_sn) { + this.line_sn = line_sn; + } + + /**** + * 测线深度 + */ + public String getLine_deep() { + return this.line_deep; + } + + /**** + * 测线深度 + */ + public void setLine_deep(String line_deep) { + this.line_deep = line_deep; + } + + /**** + * 开始经度 + */ + public String getStart_lon() { + return this.start_lon; + } + + /**** + * 开始经度 + */ + public void setStart_lon(String start_lon) { + this.start_lon = start_lon; + } + + /**** + * 开始纬度 + */ + public String getStart_lat() { + return this.start_lat; + } + + /**** + * 开始纬度 + */ + public void setStart_lat(String start_lat) { + this.start_lat = start_lat; + } + + /**** + * 结束经度 + */ + public String getEnd_lon() { + return this.end_lon; + } + + /**** + * 结束经度 + */ + public void setEnd_lon(String end_lon) { + this.end_lon = end_lon; + } + + /**** + * 结束纬度 + */ + public String getEnd_lat() { + return this.end_lat; + } + + /**** + * 结束纬度 + */ + public void setEnd_lat(String end_lat) { + this.end_lat = end_lat; + } + + /**** + * 开始时间 + */ + public LocalDateTime getStart_time() { + return this.start_time; + } + + /**** + * 开始时间 + */ + public void setStart_time(LocalDateTime start_time) { + this.start_time = start_time; + } + + /**** + * 结束时间 + */ + public LocalDateTime getEnd_time() { + return this.end_time; + } + + /**** + * 结束时间 + */ + public void setEnd_time(LocalDateTime end_time) { + this.end_time = end_time; + } + + /**** + * 上传测线轨迹文件名称 + */ + public String getTrack_file_name() { + return this.track_file_name; + } + + /**** + * 上传测线轨迹文件名称 + */ + public void setTrack_file_name(String track_file_name) { + this.track_file_name = track_file_name; + } + + /**** + * 数据格式 + */ + public String getSample_format() { + return this.sample_format; + } + + /**** + * 数据格式 + */ + public void setSample_format(String sample_format) { + this.sample_format = sample_format; + } + + /**** + * 原始数据、预处理数据、后处理数据 + */ + public String getSample_status() { + return this.sample_status; + } + + /**** + * 原始数据、预处理数据、后处理数据 + */ + public void setSample_status(String sample_status) { + this.sample_status = sample_status; + } + + /**** + * 应急搜捞、全球深渊深潜计划、崖州湾共享航次、基金委共享航次 + */ + public String getSample_tag_name() { + return this.sample_tag_name; + } + + /**** + * 应急搜捞、全球深渊深潜计划、崖州湾共享航次、基金委共享航次 + */ + public void setSample_tag_name(String sample_tag_name) { + this.sample_tag_name = sample_tag_name; + } + + /**** + * 标签对应的值,用于关联第三方系统 + */ + public String getSample_tag_value() { + return this.sample_tag_value; + } + + /**** + * 标签对应的值,用于关联第三方系统 + */ + public void setSample_tag_value(String sample_tag_value) { + this.sample_tag_value = sample_tag_value; + } + + /**** + * 备注信息 + */ + public String getSample_remark() { + return this.sample_remark; + } + + /**** + * 备注信息 + */ + public void setSample_remark(String sample_remark) { + this.sample_remark = sample_remark; + } + + /**** + * 创建时间 + */ + public LocalDateTime getCreate_time() { + return this.create_time; + } + + /**** + * 创建时间 + */ + public void setCreate_time(LocalDateTime create_time) { + this.create_time = create_time; + } + + +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleLineTrack.java b/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleLineTrack.java new file mode 100644 index 0000000..b8cda04 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleLineTrack.java @@ -0,0 +1,93 @@ +package cn.tsy.data.idsse.dsds.model.sample; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; +import java.time.LocalDateTime; + +/********************************************** +* 测线轨迹 +* @author: zxq +* @date: 2024-05-17 07:00:35 +* @version: 1.0.0 +* @email: revisit@126.com +* @Company: www.hmesoft.cn +*/ +@HmeTable(name = "SAMPLE_LINE_TRACK", key="TSY_ID") +public class SampleLineTrack extends HmeBean{ + private static final long serialVersionUID = -8131899118331192635L; + private Integer tsy_id; + //测线作业内部编号 + private Integer line_id; + //轨迹经度 + private String track_lon; + //轨迹纬度 + private String track_lat; + //轨迹时间 + private LocalDateTime track_time; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 测线作业内部编号 + */ + public Integer getLine_id() { + return this.line_id; + } + + /**** + * 测线作业内部编号 + */ + public void setLine_id(Integer line_id) { + this.line_id = line_id; + } + + /**** + * 轨迹经度 + */ + public String getTrack_lon() { + return this.track_lon; + } + + /**** + * 轨迹经度 + */ + public void setTrack_lon(String track_lon) { + this.track_lon = track_lon; + } + + /**** + * 轨迹纬度 + */ + public String getTrack_lat() { + return this.track_lat; + } + + /**** + * 轨迹纬度 + */ + public void setTrack_lat(String track_lat) { + this.track_lat = track_lat; + } + + /**** + * 轨迹时间 + */ + public LocalDateTime getTrack_time() { + return this.track_time; + } + + /**** + * 轨迹时间 + */ + public void setTrack_time(LocalDateTime track_time) { + this.track_time = track_time; + } + + +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleReg.java b/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleReg.java new file mode 100644 index 0000000..b49d1b9 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleReg.java @@ -0,0 +1,348 @@ +package cn.tsy.data.idsse.dsds.model.sample; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; +import java.time.LocalDateTime; + +/********************************************** + * 数据样品基本信息表 + * + * @author: zxq + * @date: 2024-05-14 18:40:35 + * @version: 1.0.0 + * @email: revisit@126.com + * @Company: www.hmesoft.cn + */ +@HmeTable(name = "SAMPLE_REG", key = "TSY_ID") +public class SampleReg extends HmeBean { + private static final long serialVersionUID = -7691038960323992337L; + private Integer tsy_id; + //数据集,航次号_潜次号_设备类型_数据样品类型 + private String dataset_name; + //数据集内编号 + private Integer sample_seq; + //数据样品编号 + private String sample_code; + //样品编号(按照命名规则命名) + private String sample_name; + //作业类型,站位作业,测线作业 + private String job_type; + //航次内部编号 + private Integer voyage_id; + //航次名称(冗余) + private String voyage_name; + //平台类型 + private String platform_type; + //平台名称 + private String platform_name; + //前次名称 + private String diving_name; + //设备内部编号 + private Integer equipment_id; + //设备简称 + private String equipment_alias; + //设备类型 + private String equipment_type; + //设备编号 + private String equipment_sn; + //数据样品类型编号 + private Integer data_id; + //设备样品类型检测 + private String data_alias; + //样品类型 + private String sample_type; + //文物器号 + private String antique_sn; + //备注信息 + private String sample_remark; + //创建时间 + private LocalDateTime create_time; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 数据集,航次号_潜次号_设备类型_数据样品类型 + */ + public String getDataset_name() { + return this.dataset_name; + } + + /**** + * 数据集,航次号_潜次号_设备类型_数据样品类型 + */ + public void setDataset_name(String dataset_name) { + this.dataset_name = dataset_name; + } + + /**** + * 数据集内编号 + */ + public Integer getSample_seq() { + return this.sample_seq; + } + + /**** + * 数据集内编号 + */ + public void setSample_seq(Integer sample_seq) { + this.sample_seq = sample_seq; + } + + /**** + * 数据样品编号 + */ + public String getSample_code() { + return this.sample_code; + } + + /**** + * 数据样品编号 + */ + public void setSample_code(String sample_code) { + this.sample_code = sample_code; + } + + /**** + * 样品编号(按照命名规则命名) + */ + public String getSample_name() { + return this.sample_name; + } + + /**** + * 样品编号(按照命名规则命名) + */ + public void setSample_name(String sample_name) { + this.sample_name = sample_name; + } + + /**** + * 作业类型,站位作业,测线作业 + */ + public String getJob_type() { + return this.job_type; + } + + /**** + * 作业类型,站位作业,测线作业 + */ + public void setJob_type(String job_type) { + this.job_type = job_type; + } + + /**** + * 航次内部编号 + */ + public Integer getVoyage_id() { + return this.voyage_id; + } + + /**** + * 航次内部编号 + */ + public void setVoyage_id(Integer voyage_id) { + this.voyage_id = voyage_id; + } + + /**** + * 航次名称(冗余) + */ + public String getVoyage_name() { + return this.voyage_name; + } + + /**** + * 航次名称(冗余) + */ + public void setVoyage_name(String voyage_name) { + this.voyage_name = voyage_name; + } + + /**** + * 平台类型 + */ + public String getPlatform_type() { + return this.platform_type; + } + + /**** + * 平台类型 + */ + public void setPlatform_type(String platform_type) { + this.platform_type = platform_type; + } + + /**** + * 平台名称 + */ + public String getPlatform_name() { + return this.platform_name; + } + + /**** + * 平台名称 + */ + public void setPlatform_name(String platform_name) { + this.platform_name = platform_name; + } + + /**** + * 前次名称 + */ + public String getDiving_name() { + return this.diving_name; + } + + /**** + * 前次名称 + */ + public void setDiving_name(String diving_name) { + this.diving_name = diving_name; + } + + /**** + * 设备内部编号 + */ + public Integer getEquipment_id() { + return this.equipment_id; + } + + /**** + * 设备内部编号 + */ + public void setEquipment_id(Integer equipment_id) { + this.equipment_id = equipment_id; + } + + /**** + * 设备简称 + */ + public String getEquipment_alias() { + return this.equipment_alias; + } + + /**** + * 设备简称 + */ + public void setEquipment_alias(String equipment_alias) { + this.equipment_alias = equipment_alias; + } + + /**** + * 设备类型 + */ + public String getEquipment_type() { + return this.equipment_type; + } + + /**** + * 设备类型 + */ + public void setEquipment_type(String equipment_type) { + this.equipment_type = equipment_type; + } + + /**** + * 设备编号 + */ + public String getEquipment_sn() { + return this.equipment_sn; + } + + /**** + * 设备编号 + */ + public void setEquipment_sn(String equipment_sn) { + this.equipment_sn = equipment_sn; + } + + /**** + * 数据样品类型编号 + */ + public Integer getData_id() { + return this.data_id; + } + + /**** + * 数据样品类型编号 + */ + public void setData_id(Integer data_id) { + this.data_id = data_id; + } + + /**** + * 设备样品类型检测 + */ + public String getData_alias() { + return this.data_alias; + } + + /**** + * 设备样品类型检测 + */ + public void setData_alias(String data_alias) { + this.data_alias = data_alias; + } + + /**** + * 样品类型 + */ + public String getSample_type() { + return this.sample_type; + } + + /**** + * 样品类型 + */ + public void setSample_type(String sample_type) { + this.sample_type = sample_type; + } + + /**** + * 文物器号 + */ + public String getAntique_sn() { + return this.antique_sn; + } + + /**** + * 文物器号 + */ + public void setAntique_sn(String antique_sn) { + this.antique_sn = antique_sn; + } + + /**** + * 备注信息 + */ + public String getSample_remark() { + return this.sample_remark; + } + + /**** + * 备注信息 + */ + public void setSample_remark(String sample_remark) { + this.sample_remark = sample_remark; + } + + /**** + * 创建时间 + */ + public LocalDateTime getCreate_time() { + return this.create_time; + } + + /**** + * 创建时间 + */ + public void setCreate_time(LocalDateTime create_time) { + this.create_time = create_time; + } +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleStation.java b/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleStation.java new file mode 100644 index 0000000..702ab95 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/sample/SampleStation.java @@ -0,0 +1,247 @@ +package cn.tsy.data.idsse.dsds.model.sample; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; +import java.time.LocalDateTime; + +/********************************************** + * 样品信息表-站位作业 + * + * @author: zxq + * @date: 2024-05-14 18:33:01 + * @version: 1.0.0 + * @email: revisit@126.com + * @Company: www.hmesoft.cn + */ +@HmeTable(name = "SAMPLE_STATION", key = "TSY_ID") +public class SampleStation extends HmeBean { + private static final long serialVersionUID = -6416959575900405150L; + private Integer tsy_id; + //数据集编号 + private Integer dataset_id; + //数据集名称 + private String dataset_name; + //数据样品编号 + private String sample_name; + //数据样品在数据集内部编号 + private String sample_seq; + //赞助机构 + private String funding_org; + //公开期限 + private String publish_rule; + //采样时间 + private LocalDateTime sampling_time; + //经度 + private String sampling_lon; + //纬度 + private String sampling_lat; + //深度 + private String sampling_deep; + //备注说明 + private String sample_remark; + private LocalDateTime create_time; + //应急搜捞、全球深渊深潜计划、崖州湾共享航次、基金委共享航次 + private String sample_tag_name; + //标签对应的值,用于关联第三方系统 + private String sample_tag_value; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 数据集编号 + */ + public Integer getDataset_id() { + return this.dataset_id; + } + + /**** + * 数据集编号 + */ + public void setDataset_id(Integer dataset_id) { + this.dataset_id = dataset_id; + } + + /**** + * 数据集名称 + */ + public String getDataset_name() { + return this.dataset_name; + } + + /**** + * 数据集名称 + */ + public void setDataset_name(String dataset_name) { + this.dataset_name = dataset_name; + } + + /**** + * 数据样品编号 + */ + public String getSample_name() { + return this.sample_name; + } + + /**** + * 数据样品编号 + */ + public void setSample_name(String sample_name) { + this.sample_name = sample_name; + } + + /**** + * 数据样品在数据集内部编号 + */ + public String getSample_seq() { + return this.sample_seq; + } + + /**** + * 数据样品在数据集内部编号 + */ + public void setSample_seq(String sample_seq) { + this.sample_seq = sample_seq; + } + + /**** + * 赞助机构 + */ + public String getFunding_org() { + return this.funding_org; + } + + /**** + * 赞助机构 + */ + public void setFunding_org(String funding_org) { + this.funding_org = funding_org; + } + + /**** + * 公开期限 + */ + public String getPublish_rule() { + return this.publish_rule; + } + + /**** + * 公开期限 + */ + public void setPublish_rule(String publish_rule) { + this.publish_rule = publish_rule; + } + + /**** + * 采样时间 + */ + public LocalDateTime getSampling_time() { + return this.sampling_time; + } + + /**** + * 采样时间 + */ + public void setSampling_time(LocalDateTime sampling_time) { + this.sampling_time = sampling_time; + } + + /**** + * 经度 + */ + public String getSampling_lon() { + return this.sampling_lon; + } + + /**** + * 经度 + */ + public void setSampling_lon(String sampling_lon) { + this.sampling_lon = sampling_lon; + } + + /**** + * 纬度 + */ + public String getSampling_lat() { + return this.sampling_lat; + } + + /**** + * 纬度 + */ + public void setSampling_lat(String sampling_lat) { + this.sampling_lat = sampling_lat; + } + + /**** + * 深度 + */ + public String getSampling_deep() { + return this.sampling_deep; + } + + /**** + * 深度 + */ + public void setSampling_deep(String sampling_deep) { + this.sampling_deep = sampling_deep; + } + + /**** + * 备注说明 + */ + public String getSample_remark() { + return this.sample_remark; + } + + /**** + * 备注说明 + */ + public void setSample_remark(String sample_remark) { + this.sample_remark = sample_remark; + } + + public LocalDateTime getCreate_time() { + return this.create_time; + } + + public void setCreate_time(LocalDateTime create_time) { + this.create_time = create_time; + } + + /**** + * 应急搜捞、全球深渊深潜计划、崖州湾共享航次、基金委共享航次 + */ + public String getSample_tag_name() { + return this.sample_tag_name; + } + + /**** + * 应急搜捞、全球深渊深潜计划、崖州湾共享航次、基金委共享航次 + */ + public void setSample_tag_name(String sample_tag_name) { + this.sample_tag_name = sample_tag_name; + } + + /**** + * 标签对应的值,用于关联第三方系统 + */ + public String getSample_tag_value() { + return this.sample_tag_value; + } + + /**** + * 标签对应的值,用于关联第三方系统 + */ + public void setSample_tag_value(String sample_tag_value) { + this.sample_tag_value = sample_tag_value; + } + + +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/sar/SarFile.java b/src/main/java/cn/tsy/data/idsse/dsds/model/sar/SarFile.java new file mode 100644 index 0000000..bd8e9bb --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/sar/SarFile.java @@ -0,0 +1,141 @@ +package cn.tsy.data.idsse.dsds.model.sar; + +import java.time.LocalDateTime; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; + +/********************************************** + * sar附件 + * + * @author: zxq + * @date: 2024-05-16 16:48:21 + * @version: 1.0.0 + * @email: revisit@126.com + * @Company: www.hmesoft.cn + */ +@HmeTable(name = "SAR_FILE", key = "TSY_ID") +public class SarFile extends HmeBean { + private static final long serialVersionUID = 2805228889252064330L; + private Integer tsy_id; + // 任务编号 + private Integer sar_id; + // 文件名称 + private String file_name; + // 文件路径 + private String file_path; + // 文件大小 + private String file_size; + // 文件类型(图片,啥的) + private String file_type; + // 文件描述 + private String file_remark; + // 上传文件 + private LocalDateTime upload_time; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 任务编号 + */ + public Integer getSar_id() { + return this.sar_id; + } + + /**** + * 任务编号 + */ + public void setSar_id(Integer sar_id) { + this.sar_id = sar_id; + } + + /**** + * 文件名称 + */ + public String getFile_name() { + return this.file_name; + } + + /**** + * 文件名称 + */ + public void setFile_name(String file_name) { + this.file_name = file_name; + } + + /**** + * 文件路径 + */ + public String getFile_path() { + return this.file_path; + } + + /**** + * 文件路径 + */ + public void setFile_path(String file_path) { + this.file_path = file_path; + } + + /**** + * 文件大小 + */ + public String getFile_size() { + return this.file_size; + } + + /**** + * 文件大小 + */ + public void setFile_size(String file_size) { + this.file_size = file_size; + } + + /**** + * 文件类型(图片,啥的) + */ + public String getFile_type() { + return this.file_type; + } + + /**** + * 文件类型(图片,啥的) + */ + public void setFile_type(String file_type) { + this.file_type = file_type; + } + + /**** + * 文件描述 + */ + public String getFile_remark() { + return this.file_remark; + } + + /**** + * 文件描述 + */ + public void setFile_remark(String file_remark) { + this.file_remark = file_remark; + } + + /**** + * 上传文件 + */ + public LocalDateTime getUpload_time() { + return this.upload_time; + } + + /**** + * 上传文件 + */ + public void setUpload_time(LocalDateTime upload_time) { + this.upload_time = upload_time; + } +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/sar/SarLog.java b/src/main/java/cn/tsy/data/idsse/dsds/model/sar/SarLog.java new file mode 100644 index 0000000..d35ace7 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/sar/SarLog.java @@ -0,0 +1,124 @@ +package cn.tsy.data.idsse.dsds.model.sar; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; + +/********************************************** + * 航次日志记录 + * + * @author: zxq + * @date: 2024-05-16 16:55:43 + * @version: 1.0.0 + * @email: revisit@126.com + * @Company: www.hmesoft.cn + */ +@HmeTable(name = "SAR_LOG", key = "TSY_ID") +public class SarLog extends HmeBean { + private static final long serialVersionUID = -2846311952059657745L; + private Integer tsy_id; + // 航次名称 + private Integer sar_id; + // 操作员编号 + private Integer optr_id; + // 操作员名称 + private String optr_name; + // 登录名称 + private String login_name; + // 日志类型 + private String log_type; + // 日志值 + private String log_value; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 航次名称 + */ + public Integer getSar_id() { + return this.sar_id; + } + + /**** + * 航次名称 + */ + public void setSar_id(Integer sar_id) { + this.sar_id = sar_id; + } + + /**** + * 操作员编号 + */ + public Integer getOptr_id() { + return this.optr_id; + } + + /**** + * 操作员编号 + */ + public void setOptr_id(Integer optr_id) { + this.optr_id = optr_id; + } + + /**** + * 操作员名称 + */ + public String getOptr_name() { + return this.optr_name; + } + + /**** + * 操作员名称 + */ + public void setOptr_name(String optr_name) { + this.optr_name = optr_name; + } + + /**** + * 登录名称 + */ + public String getLogin_name() { + return this.login_name; + } + + /**** + * 登录名称 + */ + public void setLogin_name(String login_name) { + this.login_name = login_name; + } + + /**** + * 日志类型 + */ + public String getLog_type() { + return this.log_type; + } + + /**** + * 日志类型 + */ + public void setLog_type(String log_type) { + this.log_type = log_type; + } + + /**** + * 日志值 + */ + public String getLog_value() { + return this.log_value; + } + + /**** + * 日志值 + */ + public void setLog_value(String log_value) { + this.log_value = log_value; + } + +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/sar/SarReg.java b/src/main/java/cn/tsy/data/idsse/dsds/model/sar/SarReg.java new file mode 100644 index 0000000..76f2555 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/sar/SarReg.java @@ -0,0 +1,432 @@ +package cn.tsy.data.idsse.dsds.model.sar; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; +import java.time.LocalDateTime; + +/********************************************** +* 应急搜捞基础信息 +* @author: zxq +* @date: 2024-05-16 16:48:56 +* @version: 1.0.0 +* @email: revisit@126.com +* @Company: www.hmesoft.cn +*/ +@HmeTable(name = "SAR_REG", key="TSY_ID") +public class SarReg extends HmeBean{ + private static final long serialVersionUID = -6933565130751425441L; + private Integer tsy_id; + //任务类型_目标类别_总序列号 + private String sar_name; + //应急搜捞:SAR 专项调查:SI + private String sar_type; + //如果未知,可填写未知大型沉物:Wreck、锚系类目标Mooring、非合作方目标NCT、其他Other + private String target_type; + //目标名称 + private String target_name; + //目标经度 + private String target_lon; + //目标纬度 + private String target_lat; + //目标搜索半径 + private String target_radius; + //目标长度 + private String target_length; + //目标宽度 + private String target_width; + //目标高度 + private String target_height; + //空气中重量 + private String target_air_weigh; + //水中重量 + private String target_water_weigh; + //水深 + private String target_water_depth; + //目标估值 + private String target_valuation; + //响应等级 + private String response_level; + //是否涉密 + private String secret_status; + //目标所属单位 + private String target_unit; + //快速响应等级 + private String response_days; + //创建时间 + private LocalDateTime create_time; + //联系人 + private String link_man; + //联系电话 + private String link_tel; + //情报来源 + private String sar_source; + //备注信息 + private String sar_remark; + //SAR状态 + private String sar_status; + //状态变更时间 + private LocalDateTime sar_status_time; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 任务类型_目标类别_总序列号 + */ + public String getSar_name() { + return this.sar_name; + } + + /**** + * 任务类型_目标类别_总序列号 + */ + public void setSar_name(String sar_name) { + this.sar_name = sar_name; + } + + /**** + * 应急搜捞:SAR 专项调查:SI + */ + public String getSar_type() { + return this.sar_type; + } + + /**** + * 应急搜捞:SAR 专项调查:SI + */ + public void setSar_type(String sar_type) { + this.sar_type = sar_type; + } + + /**** + * 如果未知,可填写未知 +大型沉物:Wreck、锚系类目标Mooring、非合作方目标NCT、其他Other + */ + public String getTarget_type() { + return this.target_type; + } + + /**** + * 如果未知,可填写未知 +大型沉物:Wreck、锚系类目标Mooring、非合作方目标NCT、其他Other + */ + public void setTarget_type(String target_type) { + this.target_type = target_type; + } + + /**** + * 目标名称 + */ + public String getTarget_name() { + return this.target_name; + } + + /**** + * 目标名称 + */ + public void setTarget_name(String target_name) { + this.target_name = target_name; + } + + /**** + * 目标经度 + */ + public String getTarget_lon() { + return this.target_lon; + } + + /**** + * 目标经度 + */ + public void setTarget_lon(String target_lon) { + this.target_lon = target_lon; + } + + /**** + * 目标纬度 + */ + public String getTarget_lat() { + return this.target_lat; + } + + /**** + * 目标纬度 + */ + public void setTarget_lat(String target_lat) { + this.target_lat = target_lat; + } + + /**** + * 目标搜索半径 + */ + public String getTarget_radius() { + return this.target_radius; + } + + /**** + * 目标搜索半径 + */ + public void setTarget_radius(String target_radius) { + this.target_radius = target_radius; + } + + /**** + * 目标长度 + */ + public String getTarget_length() { + return this.target_length; + } + + /**** + * 目标长度 + */ + public void setTarget_length(String target_length) { + this.target_length = target_length; + } + + /**** + * 目标宽度 + */ + public String getTarget_width() { + return this.target_width; + } + + /**** + * 目标宽度 + */ + public void setTarget_width(String target_width) { + this.target_width = target_width; + } + + /**** + * 目标高度 + */ + public String getTarget_height() { + return this.target_height; + } + + /**** + * 目标高度 + */ + public void setTarget_height(String target_height) { + this.target_height = target_height; + } + + /**** + * 空气中重量 + */ + public String getTarget_air_weigh() { + return this.target_air_weigh; + } + + /**** + * 空气中重量 + */ + public void setTarget_air_weigh(String target_air_weigh) { + this.target_air_weigh = target_air_weigh; + } + + /**** + * 水中重量 + */ + public String getTarget_water_weigh() { + return this.target_water_weigh; + } + + /**** + * 水中重量 + */ + public void setTarget_water_weigh(String target_water_weigh) { + this.target_water_weigh = target_water_weigh; + } + + /**** + * 水深 + */ + public String getTarget_water_depth() { + return this.target_water_depth; + } + + /**** + * 水深 + */ + public void setTarget_water_depth(String target_water_depth) { + this.target_water_depth = target_water_depth; + } + + /**** + * 目标估值 + */ + public String getTarget_valuation() { + return this.target_valuation; + } + + /**** + * 目标估值 + */ + public void setTarget_valuation(String target_valuation) { + this.target_valuation = target_valuation; + } + + /**** + * 响应等级 + */ + public String getResponse_level() { + return this.response_level; + } + + /**** + * 响应等级 + */ + public void setResponse_level(String response_level) { + this.response_level = response_level; + } + + /**** + * 是否涉密 + */ + public String getSecret_status() { + return this.secret_status; + } + + /**** + * 是否涉密 + */ + public void setSecret_status(String secret_status) { + this.secret_status = secret_status; + } + + /**** + * 目标所属单位 + */ + public String getTarget_unit() { + return this.target_unit; + } + + /**** + * 目标所属单位 + */ + public void setTarget_unit(String target_unit) { + this.target_unit = target_unit; + } + + /**** + * 快速响应等级 + */ + public String getResponse_days() { + return this.response_days; + } + + /**** + * 快速响应等级 + */ + public void setResponse_days(String response_days) { + this.response_days = response_days; + } + + /**** + * 创建时间 + */ + public LocalDateTime getCreate_time() { + return this.create_time; + } + + /**** + * 创建时间 + */ + public void setCreate_time(LocalDateTime create_time) { + this.create_time = create_time; + } + + /**** + * 联系人 + */ + public String getLink_man() { + return this.link_man; + } + + /**** + * 联系人 + */ + public void setLink_man(String link_man) { + this.link_man = link_man; + } + + /**** + * 联系电话 + */ + public String getLink_tel() { + return this.link_tel; + } + + /**** + * 联系电话 + */ + public void setLink_tel(String link_tel) { + this.link_tel = link_tel; + } + + /**** + * 情报来源 + */ + public String getSar_source() { + return this.sar_source; + } + + /**** + * 情报来源 + */ + public void setSar_source(String sar_source) { + this.sar_source = sar_source; + } + + /**** + * 备注信息 + */ + public String getSar_remark() { + return this.sar_remark; + } + + /**** + * 备注信息 + */ + public void setSar_remark(String sar_remark) { + this.sar_remark = sar_remark; + } + + /**** + * SAR状态 + */ + public String getSar_status() { + return this.sar_status; + } + + /**** + * SAR状态 + */ + public void setSar_status(String sar_status) { + this.sar_status = sar_status; + } + + /**** + * 状态变更时间 + */ + public LocalDateTime getSar_status_time() { + return this.sar_status_time; + } + + /**** + * 状态变更时间 + */ + public void setSar_status_time(LocalDateTime sar_status_time) { + this.sar_status_time = sar_status_time; + } + + + +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/voyage/VoyageLog.java b/src/main/java/cn/tsy/data/idsse/dsds/model/voyage/VoyageLog.java new file mode 100644 index 0000000..5115c9d --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/voyage/VoyageLog.java @@ -0,0 +1,124 @@ +package cn.tsy.data.idsse.dsds.model.voyage; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; + +/********************************************** + * 航次日志记录 + * + * @author: zxq + * @date: 2024-05-14 00:00:13 + * @version: 1.0.0 + * @email: revisit@126.com + * @Company: www.hmesoft.cn + */ +@HmeTable(name = "VOYAGE_LOG", key = "TSY_ID") +public class VoyageLog extends HmeBean { + private static final long serialVersionUID = 4998391023989295904L; + private Integer tsy_id; + // 航次名称 + private Integer voyage_id; + // 操作员编号 + private Integer optr_id; + // 操作员名称 + private String optr_name; + // 登录名称 + private String login_name; + // 日志类型 + private String log_type; + // 日志值 + private String log_value; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 航次名称 + */ + public Integer getVoyage_id() { + return this.voyage_id; + } + + /**** + * 航次名称 + */ + public void setVoyage_id(Integer voyage_id) { + this.voyage_id = voyage_id; + } + + /**** + * 操作员编号 + */ + public Integer getOptr_id() { + return this.optr_id; + } + + /**** + * 操作员编号 + */ + public void setOptr_id(Integer optr_id) { + this.optr_id = optr_id; + } + + /**** + * 操作员名称 + */ + public String getOptr_name() { + return this.optr_name; + } + + /**** + * 操作员名称 + */ + public void setOptr_name(String optr_name) { + this.optr_name = optr_name; + } + + /**** + * 登录名称 + */ + public String getLogin_name() { + return this.login_name; + } + + /**** + * 登录名称 + */ + public void setLogin_name(String login_name) { + this.login_name = login_name; + } + + /**** + * 日志类型 + */ + public String getLog_type() { + return this.log_type; + } + + /**** + * 日志类型 + */ + public void setLog_type(String log_type) { + this.log_type = log_type; + } + + /**** + * 日志值 + */ + public String getLog_value() { + return this.log_value; + } + + /**** + * 日志值 + */ + public void setLog_value(String log_value) { + this.log_value = log_value; + } + +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/voyage/VoyageMember.java b/src/main/java/cn/tsy/data/idsse/dsds/model/voyage/VoyageMember.java new file mode 100644 index 0000000..c00a2e7 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/voyage/VoyageMember.java @@ -0,0 +1,247 @@ +package cn.tsy.data.idsse.dsds.model.voyage; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; + +/********************************************** +* 航次参航人员信息 +* @author: zxq +* @date: 2024-05-13 23:57:14 +* @version: 1.0.0 +* @email: revisit@126.com +* @Company: www.hmesoft.cn +*/ +@HmeTable(name = "VOYAGE_MEMBER", key="TSY_ID") +public class VoyageMember extends HmeBean{ + private static final long serialVersionUID = -3037519635497760385L; + private Integer tsy_id; + //航次编号 + private Integer voyage_id; + //对应文件名称 + private Integer file_id; + //参航人员姓名 + private String member_name; + //参航人员性别 + private String member_sex; + //参航人员生日 + private String member_birthday; + //参航人员单位 + private String member_unit; + //参航人员职责 + private String member_dept; + //联系电话 + private String member_tel; + //证件号码 + private String member_cert; + //银行名称 + private String bank_name; + //银行卡号码 + private String bank_card; + //开户行 + private String bank_addr; + private String member_remark; + //船上房间号码 + private String ship_room_addr; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 航次编号 + */ + public Integer getVoyage_id() { + return this.voyage_id; + } + + /**** + * 航次编号 + */ + public void setVoyage_id(Integer voyage_id) { + this.voyage_id = voyage_id; + } + + /**** + * 对应文件名称 + */ + public Integer getFile_id() { + return this.file_id; + } + + /**** + * 对应文件名称 + */ + public void setFile_id(Integer file_id) { + this.file_id = file_id; + } + + /**** + * 参航人员姓名 + */ + public String getMember_name() { + return this.member_name; + } + + /**** + * 参航人员姓名 + */ + public void setMember_name(String member_name) { + this.member_name = member_name; + } + + /**** + * 参航人员性别 + */ + public String getMember_sex() { + return this.member_sex; + } + + /**** + * 参航人员性别 + */ + public void setMember_sex(String member_sex) { + this.member_sex = member_sex; + } + + /**** + * 参航人员生日 + */ + public String getMember_birthday() { + return this.member_birthday; + } + + /**** + * 参航人员生日 + */ + public void setMember_birthday(String member_birthday) { + this.member_birthday = member_birthday; + } + + /**** + * 参航人员单位 + */ + public String getMember_unit() { + return this.member_unit; + } + + /**** + * 参航人员单位 + */ + public void setMember_unit(String member_unit) { + this.member_unit = member_unit; + } + + /**** + * 参航人员职责 + */ + public String getMember_dept() { + return this.member_dept; + } + + /**** + * 参航人员职责 + */ + public void setMember_dept(String member_dept) { + this.member_dept = member_dept; + } + + /**** + * 联系电话 + */ + public String getMember_tel() { + return this.member_tel; + } + + /**** + * 联系电话 + */ + public void setMember_tel(String member_tel) { + this.member_tel = member_tel; + } + + /**** + * 证件号码 + */ + public String getMember_cert() { + return this.member_cert; + } + + /**** + * 证件号码 + */ + public void setMember_cert(String member_cert) { + this.member_cert = member_cert; + } + + /**** + * 银行名称 + */ + public String getBank_name() { + return this.bank_name; + } + + /**** + * 银行名称 + */ + public void setBank_name(String bank_name) { + this.bank_name = bank_name; + } + + /**** + * 银行卡号码 + */ + public String getBank_card() { + return this.bank_card; + } + + /**** + * 银行卡号码 + */ + public void setBank_card(String bank_card) { + this.bank_card = bank_card; + } + + /**** + * 开户行 + */ + public String getBank_addr() { + return this.bank_addr; + } + + /**** + * 开户行 + */ + public void setBank_addr(String bank_addr) { + this.bank_addr = bank_addr; + } + + public String getMember_remark() { + return this.member_remark; + } + + public void setMember_remark(String member_remark) { + this.member_remark = member_remark; + } + + /**** + * 船上房间号码 + */ + public String getShip_room_addr() { + return this.ship_room_addr; + } + + /**** + * 船上房间号码 + */ + public void setShip_room_addr(String ship_room_addr) { + this.ship_room_addr = ship_room_addr; + } + + + + +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/voyage/VoyageNavigation.java b/src/main/java/cn/tsy/data/idsse/dsds/model/voyage/VoyageNavigation.java new file mode 100644 index 0000000..ef15e7b --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/voyage/VoyageNavigation.java @@ -0,0 +1,109 @@ +package cn.tsy.data.idsse.dsds.model.voyage; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; +import java.time.LocalDateTime; + +/********************************************** + * 航次-导航文件 + * + * @author: zxq + * @date: 2024-05-13 23:55:20 + * @version: 1.0.0 + * @email: revisit@126.com + * @Company: www.hmesoft.cn + */ +@HmeTable(name = "VOYAGE_NAVIGATION", key = "TSY_ID") +public class VoyageNavigation extends HmeBean { + private static final long serialVersionUID = 31701052429526870L; + private Integer tsy_id; + // 航次编号 + private Integer voyage_id; + // 导航文件编号 + private Integer file_id; + // 经度 + private String nav_lon; + // 纬度 + private String nav_lat; + // 时间 + private LocalDateTime nav_time; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 航次编号 + */ + public Integer getVoyage_id() { + return this.voyage_id; + } + + /**** + * 航次编号 + */ + public void setVoyage_id(Integer voyage_id) { + this.voyage_id = voyage_id; + } + + /**** + * 导航文件编号 + */ + public Integer getFile_id() { + return this.file_id; + } + + /**** + * 导航文件编号 + */ + public void setFile_id(Integer file_id) { + this.file_id = file_id; + } + + /**** + * 经度 + */ + public String getNav_lon() { + return this.nav_lon; + } + + /**** + * 经度 + */ + public void setNav_lon(String nav_lon) { + this.nav_lon = nav_lon; + } + + /**** + * 纬度 + */ + public String getNav_lat() { + return this.nav_lat; + } + + /**** + * 纬度 + */ + public void setNav_lat(String nav_lat) { + this.nav_lat = nav_lat; + } + + /**** + * 时间 + */ + public LocalDateTime getNav_time() { + return this.nav_time; + } + + /**** + * 时间 + */ + public void setNav_time(LocalDateTime nav_time) { + this.nav_time = nav_time; + } + +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/data/idsse/dsds/model/voyage/VoyageReg.java b/src/main/java/cn/tsy/data/idsse/dsds/model/voyage/VoyageReg.java new file mode 100644 index 0000000..f26ff95 --- /dev/null +++ b/src/main/java/cn/tsy/data/idsse/dsds/model/voyage/VoyageReg.java @@ -0,0 +1,239 @@ +package cn.tsy.data.idsse.dsds.model.voyage; + +import java.time.LocalDate; +import java.time.LocalDateTime; + +import cn.hme.framework.bean.HmeBean; +import cn.hme.framework.jdbc.annotation.HmeTable; + +/********************************************** + * 航次信息表 + * + * @author: zxq + * @date: 2024-05-13 23:55:43 + * @version: 1.0.0 + * @email: revisit@126.com + * @Company: www.hmesoft.cn + */ +@HmeTable(name = "VOYAGE_REG", key = "TSY_ID") +public class VoyageReg extends HmeBean { + private static final long serialVersionUID = -7957843595408253477L; + private Integer tsy_id; + // 航次名称 + private String voyage_name; + // 科考船舶 + private String ship_name; + // 是否涉密 + private String serect_status; + // 航行开始日期 + private LocalDate voyage_start_date; + // 航行结束日期 + private LocalDate voyage_end_date; + // 航线描述 + private String voyage_remark; + // 首席,用、分开 + private String voyage_officer; + // 项目资助机构,用、分开 + private String funding_org; + // 项目资助编号 + private String funding_code; + // 导航文件名称 + private String navigation_file_name; + // 创建时间 + private LocalDateTime create_time; + // 航次状态 + private String voyage_status; + // 状态变更时间 + private LocalDateTime voyage_status_time; + + public Integer getTsy_id() { + return this.tsy_id; + } + + public void setTsy_id(Integer tsy_id) { + this.tsy_id = tsy_id; + } + + /**** + * 航次名称 + */ + public String getVoyage_name() { + return this.voyage_name; + } + + /**** + * 航次名称 + */ + public void setVoyage_name(String voyage_name) { + this.voyage_name = voyage_name; + } + + /**** + * 科考船舶 + */ + public String getShip_name() { + return this.ship_name; + } + + /**** + * 科考船舶 + */ + public void setShip_name(String ship_name) { + this.ship_name = ship_name; + } + + /**** + * 是否涉密 + */ + public String getSerect_status() { + return this.serect_status; + } + + /**** + * 是否涉密 + */ + public void setSerect_status(String serect_status) { + this.serect_status = serect_status; + } + + /**** + * 航行开始日期 + */ + public LocalDate getVoyage_start_date() { + return this.voyage_start_date; + } + + /**** + * 航行开始日期 + */ + public void setVoyage_start_date(LocalDate voyage_start_date) { + this.voyage_start_date = voyage_start_date; + } + + /**** + * 航行结束日期 + */ + public LocalDate getVoyage_end_date() { + return this.voyage_end_date; + } + + /**** + * 航行结束日期 + */ + public void setVoyage_end_date(LocalDate voyage_end_date) { + this.voyage_end_date = voyage_end_date; + } + + /**** + * 航线描述 + */ + public String getVoyage_remark() { + return this.voyage_remark; + } + + /**** + * 航线描述 + */ + public void setVoyage_remark(String voyage_remark) { + this.voyage_remark = voyage_remark; + } + + /**** + * 首席,用、分开 + */ + public String getVoyage_officer() { + return this.voyage_officer; + } + + /**** + * 首席,用、分开 + */ + public void setVoyage_officer(String voyage_officer) { + this.voyage_officer = voyage_officer; + } + + /**** + * 项目资助机构,用、分开 + */ + public String getFunding_org() { + return this.funding_org; + } + + /**** + * 项目资助机构,用、分开 + */ + public void setFunding_org(String funding_org) { + this.funding_org = funding_org; + } + + /**** + * 项目资助编号 + */ + public String getFunding_code() { + return this.funding_code; + } + + /**** + * 项目资助编号 + */ + public void setFunding_code(String funding_code) { + this.funding_code = funding_code; + } + + /**** + * 导航文件名称 + */ + public String getNavigation_file_name() { + return this.navigation_file_name; + } + + /**** + * 导航文件名称 + */ + public void setNavigation_file_name(String navigation_file_name) { + this.navigation_file_name = navigation_file_name; + } + + /**** + * 创建时间 + */ + public LocalDateTime getCreate_time() { + return this.create_time; + } + + /**** + * 创建时间 + */ + public void setCreate_time(LocalDateTime create_time) { + this.create_time = create_time; + } + + /**** + * 航次状态 + */ + public String getVoyage_status() { + return this.voyage_status; + } + + /**** + * 航次状态 + */ + public void setVoyage_status(String voyage_status) { + this.voyage_status = voyage_status; + } + + /**** + * 状态变更时间 + */ + public LocalDateTime getVoyage_status_time() { + return this.voyage_status_time; + } + + /**** + * 状态变更时间 + */ + public void setVoyage_status_time(LocalDateTime voyage_status_time) { + this.voyage_status_time = voyage_status_time; + } + +} \ No newline at end of file diff --git a/src/main/java/cn/tsy/idsse/dsds/DSDSMain.java b/src/main/java/cn/tsy/idsse/dsds/DSDSMain.java new file mode 100644 index 0000000..0d6bac4 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/DSDSMain.java @@ -0,0 +1,19 @@ +package cn.tsy.idsse.dsds; + +import java.time.LocalDateTime; + +import org.apache.poi.ss.usermodel.DateUtil; + +import cn.hme.framework.helper.date.LocalDateHelper; + +public class DSDSMain { + + public static void main(String[] args) { + String value = "13.019202999999999"; + // 2024-05-14 09:48:00 + LocalDateTime date =LocalDateHelper.parseDate("1900-01-01").atStartOfDay(); + System.out.println(LocalDateHelper.format(LocalDateHelper.toLocalDateTime(DateUtil.getJavaDate(45428.941666666702)))); + ; + } + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/constant/SarLogType.java b/src/main/java/cn/tsy/idsse/dsds/constant/SarLogType.java new file mode 100644 index 0000000..96a7afb --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/constant/SarLogType.java @@ -0,0 +1,27 @@ +package cn.tsy.idsse.dsds.constant; + +/*********************** + * 航次日志类型 + * @author TsySoft + * @create 2024-05-14 10:08:05 + * @version 1.0.0 + * @email revisit@126.com + * + */ +public class SarLogType { + + /******************* + * 建立航次 + */ + public static final String Create = "Create"; + /******************* + * 建立航次 + */ + public static final String UploadFile = "UploadFile"; + /******************* + * 变更状态 + */ + public static final String ModifyStatus = "ModifyStatus"; + + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/constant/SarStatus.java b/src/main/java/cn/tsy/idsse/dsds/constant/SarStatus.java new file mode 100644 index 0000000..c93f48d --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/constant/SarStatus.java @@ -0,0 +1,31 @@ +package cn.tsy.idsse.dsds.constant; + +/*********************** + * 应急搜捞状态 未启动 执行中 已完成 已取消 + * @author TsySoft + * @create 2024-05-14 10:08:05 + * @version 1.0.0 + * @email revisit@126.com + * + */ +public class SarStatus { + + /******************* + * 未启动 + */ + public static final String Init = "未启动"; + /******************* + * 执行中 + */ + public static final String Working = "执行中"; + /******************* + * 已完成 + */ + public static final String Complete = "已完成"; + /******************* + * 已取消 + */ + public static final String Cancel = "已取消"; + + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/constant/VoyageJobType.java b/src/main/java/cn/tsy/idsse/dsds/constant/VoyageJobType.java new file mode 100644 index 0000000..bf892ce --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/constant/VoyageJobType.java @@ -0,0 +1,23 @@ +package cn.tsy.idsse.dsds.constant; + +/*********************** + * 航次作业类型 + * @author TsySoft + * @create 2024-05-14 10:08:05 + * @version 1.0.0 + * @email revisit@126.com + * + */ +public class VoyageJobType { + + /******************* + * 测线作业 + */ + public static final String Line = "测线作业"; + /******************* + * 站位作业 + */ + public static final String Station = "站位作业"; + + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/constant/VoyageLogType.java b/src/main/java/cn/tsy/idsse/dsds/constant/VoyageLogType.java new file mode 100644 index 0000000..212ca08 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/constant/VoyageLogType.java @@ -0,0 +1,27 @@ +package cn.tsy.idsse.dsds.constant; + +/*********************** + * 航次日志类型 + * @author TsySoft + * @create 2024-05-14 10:08:05 + * @version 1.0.0 + * @email revisit@126.com + * + */ +public class VoyageLogType { + + /******************* + * 建立航次 + */ + public static final String Create = "Create"; + /******************* + * 导入导航文件 + */ + public static final String UploadNavigation = "UploadNavigation"; + /******************* + * 导入参航人员 + */ + public static final String UploadMember = "UploadMebmer"; + + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/constant/VoyageStatus.java b/src/main/java/cn/tsy/idsse/dsds/constant/VoyageStatus.java new file mode 100644 index 0000000..b3bea92 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/constant/VoyageStatus.java @@ -0,0 +1,17 @@ +package cn.tsy.idsse.dsds.constant; + +/*********************** + * 航次日志类型 + * @author TsySoft + * @create 2024-05-14 10:08:05 + * @version 1.0.0 + * @email revisit@126.com + * + */ +public class VoyageStatus { + + /******************* + * 计划 + */ + public static final String Plan = "Plan"; +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/DSDSControl.java b/src/main/java/cn/tsy/idsse/dsds/control/DSDSControl.java new file mode 100644 index 0000000..de1f94c --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/DSDSControl.java @@ -0,0 +1,7 @@ +package cn.tsy.idsse.dsds.control; + +import cn.hme.framework.web.control.FrameControl; + +public class DSDSControl extends FrameControl{ + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/DSDSInitializeLisener.java b/src/main/java/cn/tsy/idsse/dsds/control/DSDSInitializeLisener.java new file mode 100644 index 0000000..40f73a0 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/DSDSInitializeLisener.java @@ -0,0 +1,15 @@ +package cn.tsy.idsse.dsds.control; + +import javax.servlet.ServletContextEvent; +import javax.servlet.ServletContextListener; + +public class DSDSInitializeLisener implements ServletContextListener { + @Override + public void contextInitialized(ServletContextEvent sc) { + + } + + @Override + public void contextDestroyed(ServletContextEvent sc) { + } +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/dict/DictDataControl.java b/src/main/java/cn/tsy/idsse/dsds/control/dict/DictDataControl.java new file mode 100644 index 0000000..b7ce517 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/dict/DictDataControl.java @@ -0,0 +1,52 @@ +package cn.tsy.idsse.dsds.control.dict; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.builder.DirectionEnum; +import cn.hme.framework.jdbc.provider.builder.OrderBuilder; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.hme.framework.web.control.Ajax; +import cn.tsy.data.idsse.dsds.mapper.dict.DictDataMapper; +import cn.tsy.data.idsse.dsds.model.dict.DictData; +import cn.tsy.idsse.dsds.control.DSDSControl; +import cn.tsy.idsse.dsds.service.dict.DictDataService; + +@RestController +@RequestMapping("dict/data") +public class DictDataControl extends DSDSControl { + + @Autowired + private DictDataMapper mData; + + @Autowired + private DictDataService sData; + + @RequestMapping("page.htm") + public Ajax page(Integer group, Integer limit, Integer start, String query, String order, String type) { + order = StringHelper.hasValue(order) ? order : "data_order"; + type = StringHelper.hasValue(type) ? type : "DESC"; + Pageable page = this.mData.dataWithPage(group, start, limit, query, order, type); + return new Ajax(page); + } + + @RequestMapping("all.htm") + public Ajax all() { + return new Ajax(this.mData.allByOrder(OrderBuilder.create().addOrderBy("data_order", DirectionEnum.DESC))); + } + + @RequestMapping("edit.htm") + public Ajax edit(DictData data) { + this.sData.editData(data); + return new Ajax(data); + } + + @RequestMapping("delete.htm") + public Ajax delete(int tsy_id) { + this.sData.deleteData(tsy_id); + return new Ajax(); + } + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/dict/DictEquipmentControl.java b/src/main/java/cn/tsy/idsse/dsds/control/dict/DictEquipmentControl.java new file mode 100644 index 0000000..4dafa91 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/dict/DictEquipmentControl.java @@ -0,0 +1,54 @@ +package cn.tsy.idsse.dsds.control.dict; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.builder.DirectionEnum; +import cn.hme.framework.jdbc.provider.builder.OrderBuilder; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.hme.framework.web.control.Ajax; +import cn.tsy.data.idsse.dsds.mapper.dict.DictEquipmentMapper; +import cn.tsy.data.idsse.dsds.model.dict.DictEquipment; +import cn.tsy.idsse.dsds.control.DSDSControl; +import cn.tsy.idsse.dsds.service.dict.DictEquipmentService; + +@RestController +@RequestMapping("dict/equipment") +public class DictEquipmentControl extends DSDSControl{ + + @Autowired + private DictEquipmentMapper mEquipment; + + @Autowired + private DictEquipmentService sEquipment; + + @RequestMapping("page.htm") + public Ajax page(Integer group, Integer limit, Integer start, String query, String order, String type) { + order = StringHelper.hasValue(order) ? order : "equipment_order"; + type = StringHelper.hasValue(type) ? type : "DESC"; + Pageable page = this.mEquipment.equipmentWithPage(group, start, limit, query, order, type); + return new Ajax(page); + } + @RequestMapping("all.htm") + public Ajax all() { + return new Ajax(this.mEquipment.allByOrder(OrderBuilder.create().addOrderBy("equipment_order",DirectionEnum.DESC))); + } + + @RequestMapping("edit.htm") + public Ajax edit(DictEquipment equipment) { + this.sEquipment.editEquipment(equipment); + return new Ajax(equipment); + } + + @RequestMapping("delete.htm") + public Ajax delete(int tsy_id) { + this.sEquipment.deleteEquipment(tsy_id); + return new Ajax(); + } + + + + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/dict/DictPlatformControl.java b/src/main/java/cn/tsy/idsse/dsds/control/dict/DictPlatformControl.java new file mode 100644 index 0000000..03a5fa3 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/dict/DictPlatformControl.java @@ -0,0 +1,60 @@ +package cn.tsy.idsse.dsds.control.dict; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.builder.DirectionEnum; +import cn.hme.framework.jdbc.provider.builder.OrderBuilder; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.hme.framework.web.control.Ajax; +import cn.tsy.data.idsse.dsds.mapper.dict.DictPlatformMapper; +import cn.tsy.data.idsse.dsds.model.dict.DictPlatform; +import cn.tsy.idsse.dsds.control.DSDSControl; +import cn.tsy.idsse.dsds.service.dict.DictPlatformService; + +@RestController +@RequestMapping("dict/platform") +public class DictPlatformControl extends DSDSControl { + + @Autowired + private DictPlatformMapper mPlatform; + + @Autowired + private DictPlatformService sPlatform; + + @RequestMapping("page.htm") + public Ajax page(Integer group, Integer limit, Integer start, String query, String order, String type) { + order = StringHelper.hasValue(order) ? order : "platform_order"; + type = StringHelper.hasValue(type) ? type : "DESC"; + Pageable page = this.mPlatform.platformWithPage(group, start, limit, query, order, type); + return new Ajax(page); + } + + @RequestMapping("all.htm") + public Ajax all() { + return new Ajax(this.mPlatform.allByOrder(OrderBuilder.create().addOrderBy("platform_order",DirectionEnum.DESC))); + } + + @RequestMapping("edit.htm") + public Ajax edit(DictPlatform platform) { + this.sPlatform.editPlatform(platform); + return new Ajax(platform); + } + + @RequestMapping("delete.htm") + public Ajax delete(int tsy_id) { + this.sPlatform.deletePlatform(tsy_id); + return new Ajax(); + } + + + + + + + + + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/dict/DictUnitSailControl.java b/src/main/java/cn/tsy/idsse/dsds/control/dict/DictUnitSailControl.java new file mode 100644 index 0000000..3c8dd3f --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/dict/DictUnitSailControl.java @@ -0,0 +1,45 @@ +package cn.tsy.idsse.dsds.control.dict; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.hme.framework.web.control.Ajax; +import cn.tsy.data.idsse.dsds.mapper.dict.DictUnitSailMapper; +import cn.tsy.data.idsse.dsds.model.dict.DictUnitSail; +import cn.tsy.idsse.dsds.control.DSDSControl; +import cn.tsy.idsse.dsds.service.dict.DictUnitSailService; + +@RestController +@RequestMapping("dict/unit/sail") +public class DictUnitSailControl extends DSDSControl{ + + @Autowired + private DictUnitSailMapper mUnitSail; + + @Autowired + private DictUnitSailService sUnitSail; + + @RequestMapping("page.htm") + public Ajax page(Integer group, Integer limit, Integer start, String query, String order, String type) { + order = StringHelper.hasValue(order) ? order : "unit_name"; + Pageable page = this.mUnitSail.sailWithPage(group, start, limit, query, order, type); + return new Ajax(page); + } + + @RequestMapping("edit.htm") + public Ajax edit(DictUnitSail sail) { + this.sUnitSail.editUnitSail(sail); + return new Ajax(sail); + } + + @RequestMapping("delete.htm") + public Ajax delete(int tsy_id) { + this.sUnitSail.deleteUnitSail(tsy_id); + return new Ajax(); + } + + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/dict/DictUnitShareControl.java b/src/main/java/cn/tsy/idsse/dsds/control/dict/DictUnitShareControl.java new file mode 100644 index 0000000..a76f35b --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/dict/DictUnitShareControl.java @@ -0,0 +1,45 @@ +package cn.tsy.idsse.dsds.control.dict; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.hme.framework.web.control.Ajax; +import cn.tsy.data.idsse.dsds.mapper.dict.DictUnitShareMapper; +import cn.tsy.data.idsse.dsds.model.dict.DictUnitShare; +import cn.tsy.idsse.dsds.control.DSDSControl; +import cn.tsy.idsse.dsds.service.dict.DictUnitShareService; + +@RestController +@RequestMapping("dict/unit/share") +public class DictUnitShareControl extends DSDSControl{ + + @Autowired + private DictUnitShareMapper mUnitShare; + + @Autowired + private DictUnitShareService sUnitShare; + + @RequestMapping("page.htm") + public Ajax page(Integer group, Integer limit, Integer start, String query, String order, String type) { + order = StringHelper.hasValue(order) ? order : "unit_name"; + Pageable page = this.mUnitShare.shareWithPage(group, start, limit, query, order, type); + return new Ajax(page); + } + + @RequestMapping("edit.htm") + public Ajax edit(DictUnitShare sail) { + this.sUnitShare.editUnitShare(sail); + return new Ajax(sail); + } + + @RequestMapping("delete.htm") + public Ajax delete(int tsy_id) { + this.sUnitShare.deleteUnitShare(tsy_id); + return new Ajax(); + } + + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleDatasetControl.java b/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleDatasetControl.java new file mode 100644 index 0000000..3449214 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleDatasetControl.java @@ -0,0 +1,78 @@ +package cn.tsy.idsse.dsds.control.sample; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import cn.hme.framework.helper.excel.ExcelReaderHelper; +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.hme.framework.web.control.Ajax; +import cn.hme.framework.web.exception.BusinessException; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleDatasetMapper; +import cn.tsy.data.idsse.dsds.model.sample.SampleDataset; +import cn.tsy.idsse.dsds.control.DSDSControl; +import cn.tsy.idsse.dsds.service.sample.SampleDatasetService; + +@RestController +@RequestMapping("sample/dataset") +public class SampleDatasetControl extends DSDSControl { + + @Autowired + private SampleDatasetMapper mDataset; + + + @Autowired + private SampleDatasetService sDataset; + + @RequestMapping("page.htm") + public Ajax page(Integer group, Integer limit, Integer start, String query, String order, String type) { + order = StringHelper.hasValue(order) ? order : "create_time"; + type = StringHelper.hasValue(type) ? type : "DESC"; + Pageable page = this.mDataset.datasetWithPage(group, start, limit, query, order, type); + return new Ajax(page); + } + + @RequestMapping("find.htm") + public Ajax find(int dataset_id) { + return new Ajax(this.mDataset.find(dataset_id)); + } + + + @RequestMapping("edit.htm") + public Ajax edit(SampleDataset dataset,Integer old_dataset_id) { + return new Ajax(this.sDataset.editDataset(dataset, old_dataset_id,getFrameOptr())); + } + + @CrossOrigin + @RequestMapping("upload.htm") + public Ajax upload(MultipartFile file) { + List> values = ExcelReaderHelper.readSheet(file, 1, 35); + if (values.size() == 0) + throw new BusinessException("导入的文件中无有效数据,请检查!"); + this.sDataset.uploadSample(values, getFrameOptr()); + return new Ajax(); + } + +// @RequestMapping("sample/list.htm") +// public Ajax listSample(int dataset_id) { +// SampleDataset dataset = this.mDataset.find(dataset_id); +// return new Ajax(this.sDataset.editDataset(dataset, getFrameOptr())); +// } +// +// + + + @RequestMapping("delete.htm") + public Ajax delete(int tsy_id) { + this.sDataset.deleteDataset(tsy_id); + return new Ajax(); + } + + + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleDatasetTrackControl.java b/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleDatasetTrackControl.java new file mode 100644 index 0000000..4477079 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleDatasetTrackControl.java @@ -0,0 +1,89 @@ +package cn.tsy.idsse.dsds.control.sample; + +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import cn.hme.framework.helper.date.LocalDateHelper; +import cn.hme.framework.helper.file.FileHelper; +import cn.hme.framework.jdbc.provider.builder.SqlBuilder; +import cn.hme.framework.jdbc.provider.builder.SqlCondition; +import cn.hme.framework.jdbc.provider.page.OrderBy; +import cn.hme.framework.web.control.Ajax; +import cn.hme.framework.web.exception.BusinessException; +import cn.hme.framework.web.helper.WebHelper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleDatasetMapper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleDatasetTrackMapper; +import cn.tsy.data.idsse.dsds.model.sample.SampleDataset; +import cn.tsy.data.idsse.dsds.model.sample.SampleDatasetTrack; +import cn.tsy.idsse.dsds.control.DSDSControl; +import cn.tsy.idsse.dsds.service.sample.SampleDatasetTrackService; + +@RestController +@RequestMapping("sample/dataset/track") +public class SampleDatasetTrackControl extends DSDSControl { + + @Autowired + private SampleDatasetMapper mData; + @Autowired + private SampleDatasetTrackMapper mTrack; + + @Autowired + private SampleDatasetTrackService sTrack; + + @RequestMapping("total.htm") + public Ajax total(int dataset_id) { + Map value = this.mTrack.totalTrack(dataset_id); + Map mapReturn = new HashMap<>(); + if(value==null) + return new Ajax(mapReturn); + SampleDatasetTrack start = this.mTrack.selectList(SqlBuilder.create().addSqlCondition(SqlCondition.of("dataset_id", dataset_id)) + .addSqlCondition(SqlCondition.of("track_time", value.get("min_time")))).get(0); + SampleDatasetTrack end = this.mTrack.selectList(SqlBuilder.create().addSqlCondition(SqlCondition.of("dataset_id", dataset_id)) + .addSqlCondition(SqlCondition.of("track_time", value.get("max_time")))).get(0); + mapReturn.put("start", start); + mapReturn.put("end", end); + return new Ajax(mapReturn); + } + + + @RequestMapping("list.htm") + public Ajax list(int dataset_id) { + return new Ajax(this.mTrack.selectListByColumnAndSimpleOrder("dataset_id", dataset_id, OrderBy.of("track_time"))); + } + + @CrossOrigin + @RequestMapping("upload.htm") + public Ajax upload(int dataset_id, MultipartFile file) { + File f = FileHelper.fromUpload(file); + List array = FileHelper.readFileAsArray(f); + f.delete(); + List list = this.sTrack.uploadTrack(dataset_id, array,file.getOriginalFilename(), getFrameOptr()); + if (list.size() == 0) + throw new BusinessException("未找到有效的轨迹文件(已忽略相同的记录)!"); + return new Ajax(file.getOriginalFilename()); + } + + @RequestMapping("download.htm") + public void download(int dataset_id) { + SampleDataset dataset = this.mData.find(dataset_id); + List array = this.mTrack.selectListByColumnAndSimpleOrder("dataset_id", dataset_id, OrderBy.of("track_time")); + List values = new ArrayList<>(); + for (SampleDatasetTrack nav : array) { + values.add(nav.getTrack_lon() + " " + nav.getTrack_lat() + " " + LocalDateHelper.format(nav.getTrack_time()).replace(" ", "-")); + } + File tmpFile = FileHelper.createTempFile(); + FileHelper.writeArray(tmpFile, values); + // TS2-29-1_0918-1007 + WebHelper.downloadFile(tmpFile, dataset.getDiving_track_file(), true); + } + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleLineControl.java b/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleLineControl.java new file mode 100644 index 0000000..00899a1 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleLineControl.java @@ -0,0 +1,70 @@ +package cn.tsy.idsse.dsds.control.sample; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.SqlBuilderHelper; +import cn.hme.framework.jdbc.provider.page.OrderBy; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.hme.framework.web.control.Ajax; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleLineMapper; +import cn.tsy.data.idsse.dsds.model.sample.SampleLine; +import cn.tsy.idsse.dsds.control.DSDSControl; +import cn.tsy.idsse.dsds.service.sample.SampleLineService; + +@RestController +@RequestMapping("sample/line") +public class SampleLineControl extends DSDSControl { + + @Autowired + private SampleLineMapper mLine; + @Autowired + private SampleLineService sLine; + + + @RequestMapping("page.htm") + public Ajax page(Integer group, Integer limit, Integer start, String query, String order, String type) { + order = StringHelper.hasValue(order) ? order : "create_time"; + type = StringHelper.hasValue(type) ? type : "DESC"; + Pageable page = this.mLine.pageRecord(group,start, limit, SqlBuilderHelper.makePageSqlBuilder(query, order, type, + "sample_name","funding_org","sample_tag_name","sample_tag_value","sample_remark")); + return new Ajax(page); + } + + +// @RequestMapping("list.htm") +// public Ajax list(int dataset_id) { +// return new Ajax(this.mLine.selectListByColumnAndSimpleOrder("dataset_id", dataset_id, OrderBy.of("create_time", DirectionEnum.DESC))); +// } + + @RequestMapping("list.htm") + public Ajax list(int dataset_id,String order,String type) { + if(StringHelper.isEmpty(order)) + order = "create_time"; + if(StringHelper.isEmpty(type)) + type = "DESC"; + return new Ajax(this.mLine.selectListByColumnAndSimpleOrder("dataset_id", dataset_id,OrderBy.of(order, type) )); + } + + @RequestMapping("edit.htm") + public Ajax edit(int dataset_id, SampleLine line) { + this.sLine.editLine(dataset_id, line, getFrameOptr()); + return new Ajax(line); + } + + + @RequestMapping("find.htm") + public Ajax find(int tsy_id) { + return new Ajax(this.mLine.find(tsy_id)); + } + + @RequestMapping("delete.htm") + public Ajax delete(int tsy_id) { + this.sLine.deleteLine(tsy_id); + return new Ajax(); + } + + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleLineTrackControl.java b/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleLineTrackControl.java new file mode 100644 index 0000000..3b700d9 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleLineTrackControl.java @@ -0,0 +1,43 @@ +package cn.tsy.idsse.dsds.control.sample; + +import java.io.File; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import cn.hme.framework.helper.file.FileHelper; +import cn.hme.framework.web.control.Ajax; +import cn.hme.framework.web.exception.BusinessException; +import cn.tsy.data.idsse.dsds.model.sample.SampleLineTrack; +import cn.tsy.idsse.dsds.control.DSDSControl; +import cn.tsy.idsse.dsds.service.sample.SampleLineTrackService; + +@RestController +@RequestMapping("sample/line/track") +public class SampleLineTrackControl extends DSDSControl { + + + @Autowired + private SampleLineTrackService sTrack; + + + + @CrossOrigin + @RequestMapping("upload.htm") + public Ajax upload(int line_id, MultipartFile file) { + File f = FileHelper.fromUpload(file); + List array = FileHelper.readFileAsArray(f); + f.delete(); + List list = this.sTrack.uploadTrack(line_id, array,file.getOriginalFilename(), getFrameOptr()); + if (list.size() == 0) + throw new BusinessException("未找到有效的轨迹文件(已忽略相同的记录)!"); + return new Ajax(file.getOriginalFilename()); + } + + + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleRegControl.java b/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleRegControl.java new file mode 100644 index 0000000..fffe92f --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleRegControl.java @@ -0,0 +1,80 @@ +package cn.tsy.idsse.dsds.control.sample; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import cn.hme.framework.helper.excel.ExcelReaderHelper; +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.hme.framework.web.control.Ajax; +import cn.hme.framework.web.exception.BusinessException; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleLineMapper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleRegMapper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleStationMapper; +import cn.tsy.data.idsse.dsds.model.sample.SampleLine; +import cn.tsy.data.idsse.dsds.model.sample.SampleReg; +import cn.tsy.data.idsse.dsds.model.sample.SampleStation; +import cn.tsy.idsse.dsds.control.DSDSControl; +import cn.tsy.idsse.dsds.service.sample.SampleRegService; + +@RestController +@RequestMapping("sample/reg") +public class SampleRegControl extends DSDSControl { + + @Autowired + private SampleRegMapper mSample; + @Autowired + private SampleLineMapper mLine; + @Autowired + private SampleStationMapper mStation; + + + @Autowired + private SampleRegService sSample; + + @RequestMapping("page.htm") + public Ajax page(Integer group, Integer limit, Integer start, String query, String order, String type) { + order = StringHelper.hasValue(order) ? order : "create_time"; + type = StringHelper.hasValue(type) ? type : "DESC"; + Pageable page = this.mSample.sampleWithPage(group, start, limit, query, order, type); + return new Ajax(page); + } + + @RequestMapping("edit.htm") + public Ajax edit(SampleReg sample, SampleStation satation, SampleLine line) { + this.sSample.editSample(sample, satation, line, getFrameOptr()); + return new Ajax(sample); + } + + + @RequestMapping("line/find.htm") + public Ajax findLine(int sample_id) { + return new Ajax(this.mLine.findWithColumn("sample_id",sample_id)); + } + + @RequestMapping("station/find.htm") + public Ajax findStation(int sample_id) { + return new Ajax(this.mStation.findWithColumn("sample_id",sample_id)); + } + + @RequestMapping("delete.htm") + public Ajax delete(int tsy_id) { + this.sSample.deleteSample(tsy_id); + return new Ajax(); + } + + @CrossOrigin + @RequestMapping("upload.htm") + public Ajax upload(MultipartFile file) { + List> values = ExcelReaderHelper.readSheet(file, 2, 32); + if (values.size() == 0) + throw new BusinessException("导入的文件中无有效数据,请检查!"); + return new Ajax(); + } + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleStationControl.java b/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleStationControl.java new file mode 100644 index 0000000..3d272c2 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/sample/SampleStationControl.java @@ -0,0 +1,63 @@ +package cn.tsy.idsse.dsds.control.sample; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.SqlBuilderHelper; +import cn.hme.framework.jdbc.provider.page.OrderBy; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.hme.framework.web.control.Ajax; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleStationMapper; +import cn.tsy.data.idsse.dsds.model.sample.SampleStation; +import cn.tsy.idsse.dsds.control.DSDSControl; +import cn.tsy.idsse.dsds.service.sample.SampleStationService; + +@RestController +@RequestMapping("sample/station") +public class SampleStationControl extends DSDSControl { + + @Autowired + private SampleStationMapper mStation; + @Autowired + private SampleStationService sStation; + + @RequestMapping("page.htm") + public Ajax page(Integer group, Integer limit, Integer start, String query, String order, String type) { + order = StringHelper.hasValue(order) ? order : "create_time"; + type = StringHelper.hasValue(type) ? type : "DESC"; + Pageable page = this.mStation.pageRecord(group, start,limit, SqlBuilderHelper.makePageSqlBuilder(query, order, type, + "sample_name","funding_org","sample_tag_name","sample_tag_value","sample_remark")); + return new Ajax(page); + } + + @RequestMapping("list.htm") + public Ajax list(int dataset_id,String order,String type) { + if(StringHelper.isEmpty(order)) + order = "create_time"; + if(StringHelper.isEmpty(type)) + type = "DESC"; + return new Ajax(this.mStation.selectListByColumnAndSimpleOrder("dataset_id", dataset_id,OrderBy.of(order, type) )); + } + + @RequestMapping("edit.htm") + public Ajax edit(int dataset_id, SampleStation station) { + this.sStation.editStation(dataset_id, station, getFrameOptr()); + return new Ajax(station); + } + + + @RequestMapping("find.htm") + public Ajax find(int tsy_id) { + return new Ajax(this.mStation.find(tsy_id)); + } + + @RequestMapping("delete.htm") + public Ajax delete(int tsy_id) { + this.sStation.deleteStation(tsy_id); + return new Ajax(); + } + + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/sar/SarFileControl.java b/src/main/java/cn/tsy/idsse/dsds/control/sar/SarFileControl.java new file mode 100644 index 0000000..b9c2ce1 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/sar/SarFileControl.java @@ -0,0 +1,84 @@ +package cn.tsy.idsse.dsds.control.sar; + +import java.io.File; +import java.time.LocalDateTime; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import cn.hme.framework.helper.date.LocalDateHelper; +import cn.hme.framework.helper.file.FileHelper; +import cn.hme.framework.jdbc.provider.builder.DirectionEnum; +import cn.hme.framework.jdbc.provider.page.OrderBy; +import cn.hme.framework.web.control.Ajax; +import cn.hme.framework.web.helper.FrameAssertHelper; +import cn.hme.framework.web.helper.WebHelper; +import cn.tsy.data.idsse.dsds.mapper.sar.SarFileMapper; +import cn.tsy.data.idsse.dsds.mapper.sar.SarRegMapper; +import cn.tsy.data.idsse.dsds.model.sar.SarFile; +import cn.tsy.data.idsse.dsds.model.sar.SarReg; +import cn.tsy.idsse.dsds.control.DSDSControl; +import cn.tsy.idsse.dsds.helper.DSDSParamHelper; +import cn.tsy.idsse.dsds.service.sar.SarRegService; + +@RestController +@RequestMapping("sar/file") +public class SarFileControl extends DSDSControl { + + @Autowired + private SarRegMapper mSar; + @Autowired + private SarFileMapper mFile; + + @Autowired + private SarRegService sSar; + + @RequestMapping("list.htm") + public Ajax list(int sar_id) { + return new Ajax(this.mFile.selectListByColumnAndSimpleOrder("sar_id", sar_id, OrderBy.of("upload_time", DirectionEnum.DESC))); + } + + @RequestMapping("delete.htm") + public Ajax delete(int tsy_id) { + this.mFile.deleteByKey(tsy_id); + return new Ajax(); + } + + @RequestMapping("edit.htm") + public Ajax edit(int tsy_id,String file_remark) { + SarFile f =new SarFile(); + f.setTsy_id(tsy_id); + f.setFile_remark(file_remark); + this.mFile.update(f); + return new Ajax(); + } + + + @CrossOrigin + @RequestMapping("upload.htm") + public Ajax upload(int sar_id,String file_remark, MultipartFile file) { + SarReg sar = this.mSar.find(sar_id); + FrameAssertHelper.isNotNull(sar, "未找到指定的任务!"); + String path = LocalDateHelper.replace(DSDSParamHelper.SarFileRoot + sar.getSar_name()); + new File(path).mkdirs(); + File f = new File(path + File.separator + sar.getSar_name() + "_" + LocalDateHelper.formatLongNoSplit(LocalDateTime.now()) + "_" + file.getOriginalFilename()); + FileHelper.fromUpload(file, f); + this.sSar.updateFile(sar,file.getOriginalFilename(),file_remark, f, getFrameOptr()); + return new Ajax(); + } + + @RequestMapping("download.htm") + public void download(int tsy_id) { + SarFile file = this.mFile.find(tsy_id); + File f = new File(file.getFile_path()); + if(!f.exists()) { + WebHelper.writeAlert("文件已被清理,请联系管理人员!"); + return ; + } + WebHelper.downloadFile(f, file.getFile_name()); + } + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/sar/SarRegControl.java b/src/main/java/cn/tsy/idsse/dsds/control/sar/SarRegControl.java new file mode 100644 index 0000000..9313123 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/sar/SarRegControl.java @@ -0,0 +1,62 @@ +package cn.tsy.idsse.dsds.control.sar; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.hme.framework.web.control.Ajax; +import cn.tsy.data.idsse.dsds.mapper.sar.SarRegMapper; +import cn.tsy.data.idsse.dsds.model.sar.SarReg; +import cn.tsy.idsse.dsds.control.DSDSControl; +import cn.tsy.idsse.dsds.service.sar.SarRegService; + +@RestController +@RequestMapping("sar/reg") +public class SarRegControl extends DSDSControl{ + + @Autowired + private SarRegMapper mSar; + + @Autowired + private SarRegService sSar; + + @RequestMapping("page.htm") + public Ajax page(Integer group, Integer limit, Integer start, String query, String order, String type) { + order = StringHelper.hasValue(order) ? order : "create_time"; + type = StringHelper.hasValue(type) ? type : "DESC"; + Pageable page = this.mSar.sarWithPage(group, start, limit, query, order, type); + return new Ajax(page); + } + + @RequestMapping("edit.htm") + public Ajax edit(SarReg sar) { + this.sSar.editSar(sar, getFrameOptr()); + return new Ajax(sar); + } + + @RequestMapping("delete.htm") + public Ajax delete(int tsy_id) { + this.sSar.deleteSar(tsy_id); + return new Ajax(); + } + + @RequestMapping("start.htm") + public Ajax start(int tsy_id) { + this.sSar.startSar(tsy_id,this.getFrameOptr()); + return new Ajax(); + } + + @RequestMapping("complete.htm") + public Ajax complete(int tsy_id) { + this.sSar.completeSar(tsy_id,this.getFrameOptr()); + return new Ajax(); + } + + @RequestMapping("cancel.htm") + public Ajax cancel(int tsy_id) { + this.sSar.cancelSar(tsy_id,this.getFrameOptr()); + return new Ajax(); + } +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/search/DSDSSearchControl.java b/src/main/java/cn/tsy/idsse/dsds/control/search/DSDSSearchControl.java new file mode 100644 index 0000000..413fe73 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/search/DSDSSearchControl.java @@ -0,0 +1,69 @@ +package cn.tsy.idsse.dsds.control.search; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import cn.hme.framework.helper.lang.CollectionHelper; +import cn.hme.framework.web.control.Ajax; +import cn.hme.framework.web.control.AjaxControl; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageRegMapper; + +@RestController +@RequestMapping("search") +public class DSDSSearchControl extends AjaxControl { + @Autowired + private VoyageRegMapper mVoyage; + + @RequestMapping("page.htm") + public Ajax page(Integer group, Integer limit, Integer start, String search_type, String order, String type, String return_type, String search_value, Integer[] ids) { + // String where = "select t.tsy_id from sample_dataset t,voyage y where y.tsy_id=t.voyage_id"; + String where = ""; + if ("航次名称".equals(search_type)) { + if (ids == null || ids.length < 1) { + where = " and t.voyage_name like concat('%'," + search_value + ",'%') "; + } else { + where = " and voyage_id in(" + CollectionHelper.join(ids, ",") + ") "; + } + } else if ("平台类型".equals(search_type)) { + if (ids == null || ids.length < 1) { + where = " and (platform_type like concat('%','" + search_value + "','%') or platform_alias like concat('%','" + search_value + "','%')) "; + } else { + where = " and platform_id in(" + CollectionHelper.join(ids, ",") + ") "; + } + } else if ("平台名称".equals(search_type)) { + where = " and platform_name like concat('%','" + search_value + "','%') "; + + } else if ("设备类型".equals(search_type)) { + if (ids == null || ids.length < 1) { + where = " and (equipment_type like concat('%','" + search_value + "','%') or equipment_alias like concat('%','" + search_value + "','%')) "; + } else { + where = " and equipment_id in(" + CollectionHelper.join(ids, ",") + ") "; + } + } else if ("数据样品类型".equals(search_type)) { + if (ids == null || ids.length < 1) { + where = " and (data_type like concat('%','" + search_value + "','%') or data_alias like concat('%','" + search_value + "','%')) "; + } else { + where = " and data_id in(" + CollectionHelper.join(ids, ",") + ") "; + } + } else if ("航次首席".equals(search_type)) { + where = " and voyage_officer like concat('%'," + search_value + ",'%') "; + } + + if ("数据样品集".equals(return_type)) { + String sql = "select t.* from (select file_total,d.* from sample_dataset d " + + " left join (" + + " select dataset_id,count(1) file_total from sample_line group by dataset_id " + + " union select dataset_id,count(1) file_total from sample_station group by dataset_id " + + " ) l" + + " on d.tsy_id=l.dataset_id) t,voyage_reg y where y.tsy_id=t.voyage_id " + where + " order by t.create_time desc"; + return new Ajax(this.mVoyage.pageRecordBySql(group, start, limit, sql)); + } else { + // 航次 + String sql = "select t.* from voyage_reg t where tsy_id in (" + "select distinct t.voyage_id from sample_dataset t,voyage_reg y where y.tsy_id=t.voyage_id " + " " + where + ") order by t.create_time desc"; + return new Ajax(this.mVoyage.pageRecordBySql(group, start, limit, sql)); + + } + + } +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/voyage/VoyageMemberControl.java b/src/main/java/cn/tsy/idsse/dsds/control/voyage/VoyageMemberControl.java new file mode 100644 index 0000000..a8cab08 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/voyage/VoyageMemberControl.java @@ -0,0 +1,98 @@ +package cn.tsy.idsse.dsds.control.voyage; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import cn.hme.framework.helper.excel.Excel2007Writer; +import cn.hme.framework.helper.excel.ExcelReaderHelper; +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.page.OrderBy; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.hme.framework.web.control.Ajax; +import cn.hme.framework.web.exception.BusinessException; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageMemberMapper; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageRegMapper; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageMember; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageReg; +import cn.tsy.idsse.dsds.control.DSDSControl; +import cn.tsy.idsse.dsds.service.voyage.VoyageMemberService; + +@RestController +@RequestMapping("voyage/member") +public class VoyageMemberControl extends DSDSControl { + + @Autowired + private VoyageRegMapper mReg; + @Autowired + private VoyageMemberMapper mMember; + + @Autowired + private VoyageMemberService sMember; + + @RequestMapping("page.htm") + public Ajax page(int voyage_id, Integer group, Integer limit, Integer start, String query, String order, String type) { + order = StringHelper.hasValue(order) ? order : "tsy_id"; + Pageable page = this.mMember.memberWithPage(group, start, limit, query, order, type, voyage_id); + return new Ajax(page); + } + + @RequestMapping("edit.htm") + public Ajax edit(VoyageMember member) { + this.sMember.editMember(member); + return new Ajax(); + } + + @RequestMapping("delete.htm") + public Ajax delete(int member_id) { + this.sMember.deleteMember(member_id); + return new Ajax(); + } + + @RequestMapping("list.htm") + public Ajax list(int voyage_id) { + return new Ajax(this.mMember.selectListByColumnAndSimpleOrder("voyage_id", voyage_id, OrderBy.of("tsy_id"))); + } + + + @CrossOrigin + @RequestMapping("upload.htm") + public Ajax upload(int voyage_id, MultipartFile file) { + List> values = ExcelReaderHelper.readSheet(file,1, 12); + List list = this.sMember.uploadMember(voyage_id, values, getFrameOptr()); + if (list.size() == 0) + throw new BusinessException("未找到有效的参航人员记录!"); + return new Ajax(); + } + + @RequestMapping("download.htm") + public void download(int voyage_id) { + VoyageReg voyage = this.mReg.find(voyage_id); + List array = this.mMember.selectListByColumnAndSimpleOrder("voyage_id", voyage_id, OrderBy.of("tsy_id")); + // 姓名 性别 出生日期 单位 岗位职责 船上床号 联系电话 证件号码 银卡名称 银行卡号码 开户行 备注信息 + Map titleMap = Excel2007Writer.createTitleMap("姓名", 20); + titleMap.put("性别", 8); + titleMap.put("出生日期", 14); + titleMap.put("单位", 30); + titleMap.put("岗位职责", 20); + + List> values = new ArrayList>(); + for(VoyageMember m:array) { + List vs = new ArrayList(); + vs.add(m.getMember_name()); + vs.add(m.getMember_sex()); + vs.add(m.getMember_birthday()); + vs.add(m.getMember_unit()); + vs.add(m.getMember_dept()); + values.add(vs); + } + Excel2007Writer.downloadAsExcel(this.getResponse(),voyage.getVoyage_name() + "_参航人员名单",values, titleMap); + } + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/voyage/VoyageNavigationControl.java b/src/main/java/cn/tsy/idsse/dsds/control/voyage/VoyageNavigationControl.java new file mode 100644 index 0000000..a4aa5a2 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/voyage/VoyageNavigationControl.java @@ -0,0 +1,98 @@ +package cn.tsy.idsse.dsds.control.voyage; + +import java.io.File; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import cn.hme.framework.helper.date.LocalDateHelper; +import cn.hme.framework.helper.file.FileHelper; +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.builder.SqlBuilder; +import cn.hme.framework.jdbc.provider.builder.SqlCondition; +import cn.hme.framework.jdbc.provider.page.OrderBy; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.hme.framework.web.control.Ajax; +import cn.hme.framework.web.exception.BusinessException; +import cn.hme.framework.web.helper.WebHelper; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageNavigationMapper; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageRegMapper; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageNavigation; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageReg; +import cn.tsy.idsse.dsds.control.DSDSControl; +import cn.tsy.idsse.dsds.service.voyage.VoyageNavigationService; + +@RestController +@RequestMapping("voyage/navigation") +public class VoyageNavigationControl extends DSDSControl { + + @Autowired + private VoyageRegMapper mReg; + @Autowired + private VoyageNavigationMapper mNavigation; + + @Autowired + private VoyageNavigationService sNav; + + @RequestMapping("page.htm") + public Ajax page(int voyage_id, Integer group, Integer limit, Integer start, String query, String order, String type) { + order = StringHelper.hasValue(order) ? order : "nav_time"; + Pageable page = this.mNavigation.navigationWithPage(group, start, limit, query, order, type, voyage_id); + return new Ajax(page); + } + + @RequestMapping("list.htm") + public Ajax list(int voyage_id) { + return new Ajax(this.mNavigation.selectListByColumnAndSimpleOrder("voyage_id", voyage_id, OrderBy.of("nav_time"))); + } + @RequestMapping("total.htm") + public Ajax total(int voyage_id) { + Map value = this.mNavigation.totalNavigation(voyage_id); + Map mapReturn = new HashMap<>(); + if(value==null) + return new Ajax(mapReturn); + VoyageNavigation start = this.mNavigation.selectList(SqlBuilder.create().addSqlCondition(SqlCondition.of("voyage_id", voyage_id)) + .addSqlCondition(SqlCondition.of("nav_time", value.get("min_time")))).get(0); + VoyageNavigation end = this.mNavigation.selectList(SqlBuilder.create().addSqlCondition(SqlCondition.of("voyage_id", voyage_id)) + .addSqlCondition(SqlCondition.of("nav_time", value.get("max_time")))).get(0); + mapReturn.put("start", start); + mapReturn.put("end", end); + return new Ajax(mapReturn); + } + + @CrossOrigin + @RequestMapping("upload.htm") + public Ajax upload(int voyage_id, MultipartFile file) { + File f = FileHelper.fromUpload(file); + List array = FileHelper.readFileAsArray(f); + f.delete(); + List list = this.sNav.uploadNavigation(voyage_id, array,file.getOriginalFilename(), getFrameOptr()); + if (list.size() == 0) + throw new BusinessException("未找到有效的导航记录(已忽略相同的记录)!"); + return new Ajax(file.getOriginalFilename()); + } + + @RequestMapping("download.htm") + public void download(int voyage_id) { + VoyageReg voyage = this.mReg.find(voyage_id); + List array = this.mNavigation.selectListByColumnAndSimpleOrder("voyage_id", voyage_id, OrderBy.of("nav_time")); + List values = new ArrayList<>(); + for (VoyageNavigation nav : array) { + values.add(nav.getNav_lon() + " " + nav.getNav_lat() + " " + LocalDateHelper.format(nav.getNav_time()).replace(" ", "-")); + } + File tmpFile = FileHelper.createTempFile(); + FileHelper.writeArray(tmpFile, values); + // TS2-29-1_0918-1007 + DateTimeFormatter ft = DateTimeFormatter.ofPattern("MMdd"); + WebHelper.downloadFile(tmpFile, voyage.getVoyage_name() + "_" + voyage.getVoyage_start_date().format(ft) + "-" + voyage.getVoyage_end_date().format(ft)+".txt", true); + } + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/control/voyage/VoyageRegControl.java b/src/main/java/cn/tsy/idsse/dsds/control/voyage/VoyageRegControl.java new file mode 100644 index 0000000..861b2f9 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/control/voyage/VoyageRegControl.java @@ -0,0 +1,69 @@ +package cn.tsy.idsse.dsds.control.voyage; + +import java.util.HashMap; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.page.OrderBy; +import cn.hme.framework.jdbc.provider.page.Pageable; +import cn.hme.framework.web.control.Ajax; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageMemberMapper; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageRegMapper; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageReg; +import cn.tsy.idsse.dsds.control.DSDSControl; +import cn.tsy.idsse.dsds.service.voyage.VoyageRegService; + +@RestController +@RequestMapping("voyage/reg") +public class VoyageRegControl extends DSDSControl { + + @Autowired + private VoyageRegMapper mVoyage; + + @Autowired + private VoyageRegService sVoyage; + @Autowired + private VoyageMemberMapper mMember; + + @RequestMapping("page.htm") + public Ajax page(Integer group, Integer limit, Integer start, String query, String order, String type) { + order = StringHelper.hasValue(order) ? order : "voyage_end_date"; + type = StringHelper.hasValue(type) ? type : "DESC"; + Pageable page = this.mVoyage.voyageWithPage(group, start, limit, query, order, type); + return new Ajax(page); + } + + @RequestMapping("edit.htm") + public Ajax edit(VoyageReg voyage) { + this.sVoyage.editVoyage(voyage, getFrameOptr()); + return new Ajax(voyage); + } + + @RequestMapping("info.htm") + public Ajax info(String voyage_name) { + VoyageReg voyage = this.mVoyage.findWithColumn("voyage_name", voyage_name); + Map mapReturn = new HashMap<>(); + mapReturn.put("voyage", voyage); + String sql = "select platform_type,platform_alias,platform_name,count(1) platform_total from sample_dataset where voyage_id=? group by platform_type,platform_alias,platform_name order by count(1) desc"; + mapReturn.put("PlatformArray", this.mVoyage.selectListMapBySql(sql,voyage.getTsy_id())); + sql = "select equipment_type,equipment_alias,count(1) equipment_total from sample_dataset where voyage_id=? group by equipment_type,equipment_alias order by count(1) desc"; + mapReturn.put("EquipmentArray", this.mVoyage.selectListMapBySql(sql,voyage.getTsy_id())); + sql="select dataset_name,platform_type,platform_alias,equipment_type,equipment_alias,count(1) data_total,data_type,data_alias,job_type from sample_dataset where voyage_id=? group by platform_type,platform_alias,equipment_type,equipment_alias,dataset_name,data_type,data_alias,job_type order by count(1) desc"; + mapReturn.put("DatasetArray", this.mVoyage.selectListMapBySql(sql,voyage.getTsy_id())); + mapReturn.put("MemberArray", this.mMember.selectListByColumnAndSimpleOrder("voyage_id", voyage.getTsy_id(), OrderBy.of("tsy_id"))); + Ajax ajax = new Ajax(); + ajax.setMap(mapReturn); + return ajax; + } + + @RequestMapping("delete.htm") + public Ajax delete(int tsy_id) { + this.sVoyage.deleteVoyage(tsy_id); + return new Ajax(); + } + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/helper/DSDSParamHelper.java b/src/main/java/cn/tsy/idsse/dsds/helper/DSDSParamHelper.java new file mode 100644 index 0000000..b802c4e --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/helper/DSDSParamHelper.java @@ -0,0 +1,10 @@ +package cn.tsy.idsse.dsds.helper; + +public class DSDSParamHelper { + + + /**************** + * 应急救援附件路径 + */ + public static String SarFileRoot = "d:\\sar\\@{yyyy}}\\"; +} diff --git a/src/main/java/cn/tsy/idsse/dsds/service/dict/DictDataService.java b/src/main/java/cn/tsy/idsse/dsds/service/dict/DictDataService.java new file mode 100644 index 0000000..57a6561 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/service/dict/DictDataService.java @@ -0,0 +1,47 @@ +package cn.tsy.idsse.dsds.service.dict; + +import java.time.LocalDateTime; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import cn.hme.framework.web.exception.BusinessException; +import cn.hme.framework.web.helper.FrameAssertHelper; +import cn.tsy.data.idsse.dsds.mapper.dict.DictDataMapper; +import cn.tsy.data.idsse.dsds.model.dict.DictData; + +@Service +public class DictDataService { + + @Autowired + private DictDataMapper mData; + + /*********************** + * 增加或者修改 + */ + public void editData(DictData data) { + FrameAssertHelper.isNotEmpty(data.getData_name(), "数据样本类型名称不允许为空!"); + // 判断类型是否存在 + List list = this.mData.selectListByColumn("data_name", data.getData_name()); + if (data.getTsy_id() != null) { + if (list.size() > 0 && list.get(0).getTsy_id() - data.getTsy_id() != 0) + throw new BusinessException("数据样本类型名称【" + data.getData_name() + "】已经存在,请检查!"); + this.mData.update(data); + } else { + FrameAssertHelper.isEmpty(list, "数据样本类型名称【" + data.getData_name() + "】已经存在,请检查!"); + data.setCreate_time(LocalDateTime.now()); + this.mData.insert(data); + } + } + + /***************************** + * 删除, + */ + public void deleteData(int data_id) { + /************** + * @todo 需要去判断是否真的可以删除 + */ + this.mData.deleteByKey(data_id); + } +} diff --git a/src/main/java/cn/tsy/idsse/dsds/service/dict/DictEquipmentService.java b/src/main/java/cn/tsy/idsse/dsds/service/dict/DictEquipmentService.java new file mode 100644 index 0000000..5a37aed --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/service/dict/DictEquipmentService.java @@ -0,0 +1,47 @@ +package cn.tsy.idsse.dsds.service.dict; + +import java.time.LocalDateTime; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import cn.hme.framework.web.exception.BusinessException; +import cn.hme.framework.web.helper.FrameAssertHelper; +import cn.tsy.data.idsse.dsds.mapper.dict.DictEquipmentMapper; +import cn.tsy.data.idsse.dsds.model.dict.DictEquipment; + +@Service +public class DictEquipmentService { + + @Autowired + private DictEquipmentMapper mEquipment; + + /*********************** + * 增加或者修改 + */ + public void editEquipment(DictEquipment equipment) { + FrameAssertHelper.isNotEmpty(equipment.getEquipment_name(), "设备类型名称不允许为空!"); + // 判断类型是否存在 + List list = this.mEquipment.selectListByColumn("equipment_name", equipment.getEquipment_name()); + if (equipment.getTsy_id() != null) { + if (list.size() > 0 && list.get(0).getTsy_id() - equipment.getTsy_id() != 0) + throw new BusinessException("设备类型名称【" + equipment.getEquipment_name() + "】已经存在,请检查!"); + this.mEquipment.update(equipment); + } else { + FrameAssertHelper.isEmpty(list, "设备类型名称【" + equipment.getEquipment_name() + "】已经存在,请检查!"); + equipment.setCreate_time(LocalDateTime.now()); + this.mEquipment.insert(equipment); + } + } + + /***************************** + * 删除, + */ + public void deleteEquipment(int equipment_id) { + /************** + * @todo 需要去判断是否真的可以删除 + */ + this.mEquipment.deleteByKey(equipment_id); + } +} diff --git a/src/main/java/cn/tsy/idsse/dsds/service/dict/DictPlatformService.java b/src/main/java/cn/tsy/idsse/dsds/service/dict/DictPlatformService.java new file mode 100644 index 0000000..f8d7d58 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/service/dict/DictPlatformService.java @@ -0,0 +1,48 @@ +package cn.tsy.idsse.dsds.service.dict; + +import java.time.LocalDateTime; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import cn.hme.framework.web.exception.BusinessException; +import cn.hme.framework.web.helper.FrameAssertHelper; +import cn.tsy.data.idsse.dsds.mapper.dict.DictPlatformMapper; +import cn.tsy.data.idsse.dsds.model.dict.DictPlatform; + +@Service +public class DictPlatformService { + + @Autowired + private DictPlatformMapper mPlatform; + + /*********************** + * 增加或者修改 + */ + public void editPlatform(DictPlatform platform) { + FrameAssertHelper.isNotEmpty(platform.getPlatform_name(), "平台类型名称不允许为空!"); + // 判断类型是否存在 + List list = this.mPlatform.selectListByColumn("platform_name", platform.getPlatform_name()); + if (platform.getTsy_id() != null) { + if (list.size() > 0 && list.get(0).getTsy_id() - platform.getTsy_id() != 0) + throw new BusinessException("平台类型名称【" + platform.getPlatform_name() + "】已经存在,请检查!"); + // platform.setCreate_time(LocalDateTime.now()); + this.mPlatform.update(platform); + } else { + FrameAssertHelper.isEmpty(list, "平台类型名称【" + platform.getPlatform_name() + "】已经存在,请检查!"); + platform.setCreate_time(LocalDateTime.now()); + this.mPlatform.insert(platform); + } + } + + /***************************** + * 删除, + */ + public void deletePlatform(int platform_id) { + /************** + * @todo 需要去判断是否真的可以删除 + */ + this.mPlatform.deleteByKey(platform_id); + } +} diff --git a/src/main/java/cn/tsy/idsse/dsds/service/dict/DictUnitSailService.java b/src/main/java/cn/tsy/idsse/dsds/service/dict/DictUnitSailService.java new file mode 100644 index 0000000..d74a6fa --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/service/dict/DictUnitSailService.java @@ -0,0 +1,47 @@ +package cn.tsy.idsse.dsds.service.dict; + +import java.time.LocalDateTime; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import cn.hme.framework.web.exception.BusinessException; +import cn.hme.framework.web.helper.FrameAssertHelper; +import cn.tsy.data.idsse.dsds.mapper.dict.DictUnitSailMapper; +import cn.tsy.data.idsse.dsds.model.dict.DictUnitSail; + +@Service +public class DictUnitSailService { + + @Autowired + private DictUnitSailMapper mUnitSail; + + /*********************** + * 增加或者修改 + */ + public void editUnitSail(DictUnitSail sail) { + FrameAssertHelper.isNotEmpty(sail.getUnit_name(), "参航单位名称不允许为空!"); + // 判断类型是否存在 + List list = this.mUnitSail.selectListByColumn("unit_name", sail.getUnit_name()); + if (sail.getTsy_id() != null) { + if (list.size() > 0 && list.get(0).getTsy_id() - sail.getTsy_id() != 0) + throw new BusinessException("参航单位名称【" + sail.getUnit_name() + "】已经存在,请检查!"); + this.mUnitSail.update(sail); + } else { + FrameAssertHelper.isEmpty(list, "参航单位名称【" + sail.getUnit_name() + "】已经存在,请检查!"); + sail.setCreate_time(LocalDateTime.now()); + this.mUnitSail.insert(sail); + } + } + + /***************************** + * 删除, + */ + public void deleteUnitSail(int sail_id) { + /************** + * @todo 需要去判断是否真的可以删除 + */ + this.mUnitSail.deleteByKey(sail_id); + } +} diff --git a/src/main/java/cn/tsy/idsse/dsds/service/dict/DictUnitShareService.java b/src/main/java/cn/tsy/idsse/dsds/service/dict/DictUnitShareService.java new file mode 100644 index 0000000..849fd9e --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/service/dict/DictUnitShareService.java @@ -0,0 +1,47 @@ +package cn.tsy.idsse.dsds.service.dict; + +import java.time.LocalDateTime; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import cn.hme.framework.web.exception.BusinessException; +import cn.hme.framework.web.helper.FrameAssertHelper; +import cn.tsy.data.idsse.dsds.mapper.dict.DictUnitShareMapper; +import cn.tsy.data.idsse.dsds.model.dict.DictUnitShare; + +@Service +public class DictUnitShareService { + + @Autowired + private DictUnitShareMapper mUnitShare; + + /*********************** + * 增加或者修改 + */ + public void editUnitShare(DictUnitShare share) { + FrameAssertHelper.isNotEmpty(share.getUnit_name(), "共享单位名称不允许为空!"); + // 判断类型是否存在 + List list = this.mUnitShare.selectListByColumn("unit_name", share.getUnit_name()); + if (share.getTsy_id() != null) { + if (list.size() > 0 && list.get(0).getTsy_id() - share.getTsy_id() != 0) + throw new BusinessException("共享单位名称【" + share.getUnit_name() + "】已经存在,请检查!"); + this.mUnitShare.update(share); + } else { + FrameAssertHelper.isEmpty(list, "共享单位名称【" + share.getUnit_name() + "】已经存在,请检查!"); + share.setCreate_time(LocalDateTime.now()); + this.mUnitShare.insert(share); + } + } + + /***************************** + * 删除, + */ + public void deleteUnitShare(int share_id) { + /************** + * @todo 需要去判断是否真的可以删除 + */ + this.mUnitShare.deleteByKey(share_id); + } +} diff --git a/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleDatasetService.java b/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleDatasetService.java new file mode 100644 index 0000000..1b29d16 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleDatasetService.java @@ -0,0 +1,392 @@ +package cn.tsy.idsse.dsds.service.sample; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import cn.hme.data.model.frame.optr.FrameOptr; +import cn.hme.framework.helper.date.LocalDateHelper; +import cn.hme.framework.helper.date.LocalDateHelper.LocalDateCompareType; +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.builder.SqlBuilder; +import cn.hme.framework.jdbc.provider.builder.SqlCondition; +import cn.hme.framework.jdbc.provider.builder.SqlQuery; +import cn.hme.framework.jdbc.provider.page.OrderBy; +import cn.hme.framework.web.exception.BusinessException; +import cn.hme.framework.web.helper.FrameAssertHelper; +import cn.tsy.data.idsse.dsds.mapper.dict.DictDataMapper; +import cn.tsy.data.idsse.dsds.mapper.dict.DictEquipmentMapper; +import cn.tsy.data.idsse.dsds.mapper.dict.DictPlatformMapper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleDatasetMapper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleDatasetTrackMapper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleLineMapper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleStationMapper; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageMemberMapper; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageRegMapper; +import cn.tsy.data.idsse.dsds.model.dict.DictData; +import cn.tsy.data.idsse.dsds.model.dict.DictEquipment; +import cn.tsy.data.idsse.dsds.model.dict.DictPlatform; +import cn.tsy.data.idsse.dsds.model.sample.SampleDataset; +import cn.tsy.data.idsse.dsds.model.sample.SampleDatasetTrack; +import cn.tsy.data.idsse.dsds.model.sample.SampleLine; +import cn.tsy.data.idsse.dsds.model.sample.SampleStation; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageMember; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageReg; +import cn.tsy.idsse.dsds.constant.VoyageJobType; + +@Service +public class SampleDatasetService { + @Autowired + private VoyageRegMapper mVoyage; + @Autowired + private SampleDatasetMapper mDataset; + @Autowired + private SampleLineMapper mLine; + @Autowired + private SampleStationMapper mStation; + @Autowired + private SampleDatasetTrackMapper mMapper; + @Autowired + private DictPlatformMapper mPlatform; + @Autowired + private DictEquipmentMapper mEquipment; + @Autowired + private DictDataMapper mData; + @Autowired + private VoyageMemberMapper mMember; + + /*********************** + * 增加或者修改 + * + */ + public SampleDataset editDataset(SampleDataset dataset, Integer old_dataset_id, FrameOptr optr) { + FrameAssertHelper.isNotNull(dataset.getVoyage_id(), "航次号不能为空!"); + FrameAssertHelper.isNotNull(dataset.getPlatform_id(), "平台类型不能为空!"); + // FrameAssertHelper.isNotEmpty(dataset.getPlatform_name(), "平台名称不能为空!"); + FrameAssertHelper.isNotNull(dataset.getEquipment_id(), "设备类型不能为空!"); + FrameAssertHelper.isNotNull(dataset.getData_id(), "数据样品类型不能为空!"); + FrameAssertHelper.isNotEmpty(dataset.getJob_type(), "作业类型不能为空!"); + // TS2-37-1_SY665_JXS_WW_ + // 数据样品编号: 航次号_潜次号_设备类型_数据样品类型_作业序号 + // + VoyageReg voyage = this.mVoyage.find(dataset.getVoyage_id()); + FrameAssertHelper.isNotNull(voyage, "未找到指定的航次信息,请检查!"); + + if (dataset.getWater_in_time() != null && dataset.getWater_out_time() != null) { + dataset.setWater_minutes(LocalDateHelper.calTimeDiff(dataset.getWater_out_time(), dataset.getWater_in_time(), LocalDateCompareType.Minute).intValue()); + } + if (dataset.getBottom_time() != null && dataset.getReceive_time() != null) { + dataset.setJob_minutes(LocalDateHelper.calTimeDiff(dataset.getReceive_time(), dataset.getBottom_time(), LocalDateCompareType.Minute).intValue()); + } + if (dataset.getTsy_id() == null) { + DictPlatform platform = this.mPlatform.find(dataset.getPlatform_id()); + DictEquipment equipment = this.mEquipment.find(dataset.getEquipment_id()); + DictData data = this.mData.find(dataset.getData_id()); + dataset.setCreate_time(LocalDateTime.now()); + dataset.setPlatform_type(platform.getPlatform_name()); + dataset.setPlatform_alias(platform.getPlatform_alias()); + dataset.setEquipment_type(equipment.getEquipment_name()); + dataset.setEquipment_alias(equipment.getEquipment_alias()); + dataset.setData_alias(data.getData_alias()); + dataset.setData_type(data.getData_name()); + dataset.setVoyage_name(voyage.getVoyage_name()); + // 新增,需要生成数据集和数据样品编号 + String dataset_name = voyage.getVoyage_name() + "_" + (StringHelper.isEmpty(dataset.getDiving_sn()) ? dataset.getPlatform_alias() : dataset.getDiving_sn()) + "_" + dataset.getEquipment_alias() + "_" + dataset.getData_alias(); + // 找到序号 + SampleDataset ds = this.mDataset.findWithColumn("dataset_name", dataset_name); + if (ds != null) { + return ds; + // throw new BusinessException("数据集["++"]已经存在,无需重复添加!"); + } + + dataset.setDataset_name(dataset_name); + this.mDataset.insert(dataset); + + if (old_dataset_id != null && StringHelper.hasValue(dataset.getDiving_sn())) { + // 如果是从旧数据集复制的 + SampleDataset old = this.mDataset.find(old_dataset_id); + if (StringHelper.hasValue(old.getDiving_track_file())) { + // 如果有潜轨迹文件 + SampleDataset dd = new SampleDataset(); + dd.setTsy_id(dataset.getTsy_id()); + dd.setDiving_track_file(old.getDiving_track_file()); + this.mDataset.update(dd); + // 轨迹 + for (SampleDatasetTrack t : this.mMapper.selectListByColumnAndSimpleOrder("dataset_id", old_dataset_id, OrderBy.of("tsy_id"))) { + t.setDataset_id(dataset.getTsy_id()); + t.setTsy_id(null); + this.mMapper.insert(t); + } + } + + } + + } else { + this.mDataset.update(dataset); + + } + return dataset; + + } + + public List uploadSample(List> values, FrameOptr optr) { + /**** + * *航次名称 *平台类型 *平台名称 *潜次序号 布放经度 布放纬度 布放深度 + * 入水时间 出水时间 左舷 右舷 主驾 + * 坐底时间 抛载时间 回收时间 + * *设备类型 设备序列号 + * *作业类型 *样品类型 序号 采样时间 经度 纬度 深度 测线号 深度 开始经度 开始纬度 结束经度 结束纬度 开始时间 结束时间 备注 数据公开期限 + */ + + FrameAssertHelper.hasValue(values, "导入的文件中无有效数据,请检查!"); + for (int i = 1; i < values.size(); i++) { + List list = values.get(i); + if (list.get(0) == null || list.get(0).trim().length() == 0) + break; + // *航次名称 *平台类型 *平台名称 *潜次序号 布放经度 布放纬度 布放深度 + // 入水时间 出水时间 左舷 右舷 主驾 坐底时间 抛载时间 回收时间 + // *设备类型 设备序列号 *作业类型 *样品类型 文物器号 + String voyage_name = list.get(0); + String platform_type = list.get(1); + String platform_name = list.get(2); + String diving_name = list.get(3); + String wiring_lon = list.get(4); + String wiring_lat = list.get(5); + String wiring_deep = list.get(6); + String water_in_time = list.get(7); + String water_out_time = list.get(8); + String driver_left = list.get(9); + String driver_right = list.get(10); + String driver_master = list.get(11); + String bottom_time = list.get(12); + String throwing_time = list.get(13); + String receive_time = list.get(14); + String equipment_type = list.get(15); + String equipment_sn = list.get(16); + String job_type = list.get(17); + String data_name = list.get(18); + + String station_seq = list.get(19); + // 采样时间 经度 纬度 深度 + String sampling_time = list.get(20); + String sampling_lon = list.get(21); + String sampling_lat = list.get(22); + String sampling_deep = list.get(23); + // 测线号 深度 开始经度 开始纬度 结束经度 结束纬度 开始时间 结束时间 备注 数据公开期限 + String line_sn = list.get(24); + String line_deep = list.get(25); + String start_lon = list.get(26); + String start_lat = list.get(27); + String end_lon = list.get(28); + String end_lat = list.get(29); + String start_time = list.get(30); + String end_time = list.get(31); + String remark = list.get(32); + String data_role = list.get(33); + + SampleDataset sa = new SampleDataset(); + VoyageReg voyage = this.mVoyage.findWithColumn("voyage_name", voyage_name); + if (voyage == null) + throwError(i, "航次[" + voyage_name + "]未找到,请先添加该航次"); + sa.setVoyage_id(voyage.getTsy_id()); + sa.setVoyage_name(voyage_name); + DictPlatform platform = this.mPlatform.findWithColumn("platform_name", platform_type); + if (platform == null) + throwError(i, "平台类型[" + platform_type + "]未找到,请先添加该平台类型"); + sa.setPlatform_type(platform_type); + sa.setPlatform_name(platform_name); + sa.setPlatform_id(platform.getTsy_id()); + sa.setPlatform_alias(platform.getPlatform_alias()); + DictEquipment equipment = this.mEquipment.findWithColumn("equipment_name", equipment_type); + if (equipment == null) + throwError(i, "设备类型[" + equipment_type + "]未找到,请先添加该设备类型"); + sa.setEquipment_alias(equipment.getEquipment_alias()); + sa.setEquipment_id(equipment.getTsy_id()); + sa.setEquipment_type(equipment_type); + DictData data = this.mData.findWithColumn("data_name", data_name); + if (data == null) + throwError(i, "数据样品类型[" + data_name + "]未找到,请先添加该数据样品类型"); + sa.setData_alias(data.getData_alias()); + sa.setData_id(data.getTsy_id()); + sa.setData_type(data.getData_name()); + sa.setJob_type(job_type); + sa.setDiving_sn(diving_name); + sa.setEquipment_sn(equipment_sn); + + if (StringHelper.hasValue(wiring_lon)) + sa.setWiring_lon(checkValue(wiring_lon)); + if (StringHelper.hasValue(wiring_lat)) + sa.setWiring_lat(checkValue(wiring_lat)); + if (StringHelper.hasValue(wiring_deep)) + sa.setWiring_deep(wiring_deep); + if (StringHelper.hasValue(water_in_time)) + sa.setWater_in_time(LocalDateHelper.parseDateTime(water_in_time)); + if (StringHelper.hasValue(water_out_time)) + sa.setWater_out_time(LocalDateHelper.parseDateTime(water_out_time)); + if (StringHelper.hasValue(driver_left)) { + sa.setDriver_left(driver_left); + // 获取科学家单位 + List mArray = this.mMember.selectList(SqlBuilder.create().addSqlCondition(SqlCondition.of("voyage_id", voyage.getTsy_id())) + .addSqlCondition(SqlCondition.of("member_name", driver_left))); + if(mArray.size()>0) + sa.setDriver_unit_left(mArray.get(0).getMember_unit()); + } + if (StringHelper.hasValue(driver_right)) { + sa.setDriver_right(driver_right); + List mArray = this.mMember.selectList(SqlBuilder.create().addSqlCondition(SqlCondition.of("voyage_id", voyage.getTsy_id())) + .addSqlCondition(SqlCondition.of("member_name", driver_right))); + if(mArray.size()>0) + sa.setDriver_unit_right(mArray.get(0).getMember_unit()); + } + if (StringHelper.hasValue(driver_master)) + sa.setDriver_master(driver_master); + if (StringHelper.hasValue(bottom_time)) + sa.setBottom_time(LocalDateHelper.parseDateTime(bottom_time)); + if (StringHelper.hasValue(throwing_time)) + sa.setThrowing_time(LocalDateHelper.parseDateTime(throwing_time)); + if (StringHelper.hasValue(receive_time)) + sa.setReceive_time(LocalDateHelper.parseDateTime(receive_time)); + + // 新增,需要生成数据集和数据样品编号 + String dataset_name = voyage.getVoyage_name() + "_" + (StringHelper.isEmpty(diving_name) ? platform.getPlatform_alias() : diving_name) + "_" + equipment.getEquipment_alias() + "_" + data.getData_alias(); + sa.setDataset_name(dataset_name); + if (sa.getWater_in_time() != null && sa.getWater_out_time() != null) { + sa.setWater_minutes(LocalDateHelper.calTimeDiff(sa.getWater_out_time(), sa.getWater_in_time(), LocalDateCompareType.Minute).intValue()); + } + if (sa.getBottom_time() != null && sa.getThrowing_time() != null) { + sa.setJob_minutes(LocalDateHelper.calTimeDiff(sa.getThrowing_time(), sa.getBottom_time(), LocalDateCompareType.Minute).intValue()); + } + SampleDataset ds = this.mDataset.findWithColumn("dataset_name", dataset_name); + if (ds == null) { + sa.setCreate_time(LocalDateTime.now()); + this.mDataset.insert(sa); + } else + sa.setTsy_id(ds.getTsy_id()); + + SampleLine line = new SampleLine(); + SampleStation st = new SampleStation(); + if (StringHelper.isEmpty(job_type)) + throwError(i, "作业类型为空,请检查!"); + if (VoyageJobType.Line.equals(job_type)) { + if (StringHelper.hasValue(line_sn)) + line.setLine_sn(line_sn); + if (StringHelper.hasValue(start_lon)) + line.setStart_lon(checkValue(start_lon)); + if (StringHelper.hasValue(start_lat)) + line.setStart_lat(checkValue(start_lat)); + if (StringHelper.hasValue(end_lon)) + line.setEnd_lon(checkValue(end_lon)); + if (StringHelper.hasValue(end_lat)) + line.setEnd_lat(checkValue(end_lat)); + if (StringHelper.hasValue(start_time)) + line.setStart_time(LocalDateHelper.parseDateTime(start_time)); + if (StringHelper.hasValue(end_time)) + line.setEnd_time(LocalDateHelper.parseDateTime(end_time)); + line.setDataset_name(dataset_name); + line.setDataset_id(sa.getTsy_id()); + if (StringHelper.isEmpty(line_sn)) { + // 找到序号 + Integer total = this.mLine.selectCount(SqlQuery.create().eq("dataset_name", dataset_name)); + String sample_code = ""; + int seq = 1; + if (total == null || total - 0 == 0) + sample_code = dataset_name + "_01"; + else { + seq = total + 1; + sample_code = dataset_name + StringHelper.leftPadding(seq + "", 2, '0'); + } + line.setSample_seq(StringHelper.leftPadding(seq + "", 2, '0')); + line.setSample_name(sample_code); + } else { + line.setLine_sn(StringHelper.leftPadding(line_sn + "", 2, '0')); + line.setSample_seq(StringHelper.leftPadding(line_sn + "", 2, '0')); + line.setSample_name(dataset_name + "_" + StringHelper.leftPadding(line_sn + "", 2, '0')); + } + if (StringHelper.hasValue(line_deep)) + line.setLine_deep(line_deep); + if (StringHelper.hasValue(remark)) + line.setSample_remark(remark); + if (StringHelper.hasValue(data_role)) + line.setPublish_rule(data_role); + + line.setCreate_time(LocalDateTime.now()); + // 判断是否存在 + if (this.mLine.findWithColumn("sample_name", st.getSample_name()) != null) + throwError(i, "测线作业[" + st.getSample_name() + "]已经存在!"); + this.mLine.insert(line); + } else if (VoyageJobType.Station.equals(job_type)) { + if (StringHelper.hasValue(sampling_time)) + st.setSampling_time(LocalDateHelper.parseDateTime(sampling_time)); + if (StringHelper.hasValue(sampling_lat)) + st.setSampling_lat(checkValue(sampling_lat)); + if (StringHelper.hasValue(sampling_lon)) + st.setSampling_lon(checkValue(sampling_lon)); + if (StringHelper.hasValue(sampling_deep)) + st.setSampling_deep(sampling_deep); + if (StringHelper.isEmpty(station_seq)) { + // 找到序号 + Integer total = this.mStation.selectCount(SqlQuery.create().eq("dataset_name", dataset_name)); + String sample_code = ""; + int seq = 1; + if (total == null || total - 0 == 0) + sample_code = dataset_name + "_01"; + else { + seq = total + 1; + sample_code = dataset_name + StringHelper.leftPadding(seq + "", 2, '0'); + } + st.setSample_seq(StringHelper.leftPadding(seq + "", 2, '0')); + st.setSample_name(sample_code); + } else { + st.setSample_seq(StringHelper.leftPadding(station_seq + "", 2, '0')); + st.setSample_name(dataset_name + "_" + StringHelper.leftPadding(station_seq + "", 2, '0')); + } + + if (StringHelper.hasValue(remark)) + st.setSample_remark(remark); + if (StringHelper.hasValue(data_role)) + st.setPublish_rule(data_role); + // 判断是否存在 + if (this.mStation.findWithColumn("sample_name", st.getSample_name()) != null) + throwError(i, "站位作业[" + st.getSample_name() + "]已经存在!"); + st.setCreate_time(LocalDateTime.now()); + + st.setDataset_name(dataset_name); + st.setDataset_id(sa.getTsy_id()); + this.mStation.insert(st); + + } else + throwError(i, "作业类型[" + job_type + "]必须为测线作业或者站位作业!"); + + } + return new ArrayList<>(); + } + + /**************** + * 删除数据样品 + * + */ + public void deleteDataset(int dataset_id) { + /**************** + * @todo 判断是否能实际删除 + */ + this.mDataset.deleteByKey(dataset_id); + } + + public void throwError(int row, String msg) { + throw new BusinessException("数据样品信息导入失败->第[" + (row + 1) + "]行:" + msg); + + } + + // 经纬度保留4位 + public String checkValue(String value) { + try { + return String.format("%.4f", Double.parseDouble(value)); + } catch (Exception e) { + return value; + } + } + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleDatasetTrackService.java b/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleDatasetTrackService.java new file mode 100644 index 0000000..2350ad7 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleDatasetTrackService.java @@ -0,0 +1,101 @@ +package cn.tsy.idsse.dsds.service.sample; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import cn.hme.data.model.frame.optr.FrameOptr; +import cn.hme.framework.helper.date.LocalDateHelper; +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.builder.SqlBuilder; +import cn.hme.framework.jdbc.provider.builder.SqlCondition; +import cn.hme.framework.web.exception.BusinessException; +import cn.hme.framework.web.helper.FrameAssertHelper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleDatasetMapper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleDatasetTrackMapper; +import cn.tsy.data.idsse.dsds.model.sample.SampleDataset; +import cn.tsy.data.idsse.dsds.model.sample.SampleDatasetTrack; + +@Service +public class SampleDatasetTrackService { + @Autowired + private SampleDatasetTrackMapper mTrack; + @Autowired + private SampleDatasetMapper mDataset; + + public List uploadTrack(int dataset_id, List array, String file_name, FrameOptr optr) { + FrameAssertHelper.hasValue(array, "潜次轨迹文件为空,请检查!"); + List navArray = new ArrayList<>(); + SampleDataset dataset = this.mDataset.find(dataset_id); + FrameAssertHelper.isNotNull(dataset, "未找到指定数据集,请检查!"); + this.mTrack.deleteByColumn("dataset_id", dataset_id); + for (int i = 0; i < array.size(); i++) { + if (array.get(i).trim().length() == 0) + break; + String[] values = StringHelper.splitWithSpace(array.get(i)); + if (values.length < 3) { + throwError(i, "列不足,至少需要3列"); + } + + String lon = values[0]; + String lat = values[1]; + String time = values[2]; + // 经纬度的范围包括经度范围0°-180°和纬度范围0°-90° + try { + double d = Double.parseDouble(lon); + if (d > 180) + throwError(i, "经度[" + lon + "]不能大于 180°"); + if (d < 0) + throwError(i, "经度[" + lon + "]不能小于 0°"); + } catch (Exception e) { + throwError(i, "经度[" + lon + "]格式错误"); + } + + try { + double d = Double.parseDouble(lat); + if (d > 90) + throwError(i, "纬度[" + lat + "]不能大于 90°"); + if (d < 0) + throwError(i, "纬度[" + lat + "]不能小于 0°"); + } catch (Exception e) { + throwError(i, "纬度[" + lat + "]格式错误"); + } + // 109.49100 18.23400 2023-09-18-21:58:35 + String[] vs = time.split("-"); + if (vs.length != 4) + throwError(i, "时间[" + time + "]格式错误,样例 2023-09-18-21:58:35"); + LocalDateTime curTime = LocalDateHelper.parseDateTime(vs[0] + "-" + vs[1] + "-" + vs[2] + " " + vs[3]); + if (curTime == null) + throwError(i, "时间[" + time + "]格式错误,样例 2023-09-18-21:58:35"); + // 判断通过 + SampleDatasetTrack nav = new SampleDatasetTrack(); + nav.setTrack_lat(lat); + nav.setTrack_lon(lon); + nav.setTrack_time(curTime); + nav.setDataset_id(dataset_id); + // 判断时间是否重复了 + List vArray = this.mTrack.selectList(SqlBuilder.create().addSqlCondition(SqlCondition.of("dataset_id", dataset_id)).addSqlCondition(SqlCondition.of("track_time", curTime))); + if (vArray.size() == 0) { + this.mTrack.insert(nav); + navArray.add(nav); + } + } + if (navArray.size() > 0) { + SampleDataset ds = new SampleDataset(); + ds.setTsy_id(dataset_id); + ds.setDiving_track_file(file_name); + this.mDataset.update(ds); + + } + return navArray; + } + + public void throwError(int row, String msg) { + throw new BusinessException("潜次轨迹文件导入失败->第[" + (row + 1) + "]行:" + msg); + + } + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleLineService.java b/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleLineService.java new file mode 100644 index 0000000..09ae92d --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleLineService.java @@ -0,0 +1,60 @@ +package cn.tsy.idsse.dsds.service.sample; + +import java.time.LocalDateTime; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import cn.hme.data.model.frame.optr.FrameOptr; +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.builder.SqlQuery; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleDatasetMapper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleLineMapper; +import cn.tsy.data.idsse.dsds.model.sample.SampleDataset; +import cn.tsy.data.idsse.dsds.model.sample.SampleLine; + +@Service +public class SampleLineService { + @Autowired + private SampleDatasetMapper mDataset; + @Autowired + private SampleLineMapper mLine; + + /*********************** + * 增加或者修改 + * + */ + public SampleLine editLine(int dataset_id, SampleLine line, FrameOptr optr) { + SampleDataset dataset = this.mDataset.find(dataset_id); + // + if (line.getTsy_id() == null) { + // 计算序号 + Integer total = this.mLine.selectCount(SqlQuery.create().eq("dataset_id", dataset_id)); + String seq = "01"; + if (total != null && total > 0) + seq = StringHelper.leftPadding((total + 1)+"", 2, '0'); + line.setDataset_id(dataset_id); + line.setDataset_name(dataset.getDataset_name()); + line.setSample_seq(seq); + line.setSample_name(dataset.getDataset_name()+"_"+seq); + line.setCreate_time(LocalDateTime.now()); + this.mLine.insert(line); + }else + this.mLine.update(line); + + return line; + + } + + /**************** + * 删除数据样品 + * + */ + public void deleteLine(int line_id) { + /**************** + * @todo 判断是否能实际删除 + */ + this.mLine.deleteByKey(line_id); + } + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleLineTrackService.java b/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleLineTrackService.java new file mode 100644 index 0000000..0cf5ccd --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleLineTrackService.java @@ -0,0 +1,101 @@ +package cn.tsy.idsse.dsds.service.sample; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import cn.hme.data.model.frame.optr.FrameOptr; +import cn.hme.framework.helper.date.LocalDateHelper; +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.builder.SqlBuilder; +import cn.hme.framework.jdbc.provider.builder.SqlCondition; +import cn.hme.framework.web.exception.BusinessException; +import cn.hme.framework.web.helper.FrameAssertHelper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleLineMapper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleLineTrackMapper; +import cn.tsy.data.idsse.dsds.model.sample.SampleLine; +import cn.tsy.data.idsse.dsds.model.sample.SampleLineTrack; + +@Service +public class SampleLineTrackService { + @Autowired + private SampleLineTrackMapper mTrack; + @Autowired + private SampleLineMapper mLine; + + public List uploadTrack(int line_id, List array, String file_name, FrameOptr optr) { + FrameAssertHelper.hasValue(array, "测线轨迹文件为空,请检查!"); + List navArray = new ArrayList<>(); + SampleLine line = this.mLine.find(line_id); + FrameAssertHelper.isNotNull(line, "未找到指定数据集,请检查!"); + this.mTrack.deleteByColumn("line_id", line_id); + for (int i = 0; i < array.size(); i++) { + if (array.get(i).trim().length() == 0) + break; + String[] values = StringHelper.splitWithSpace(array.get(i)); + if (values.length < 3) { + throwError(i, "列不足,至少需要3列"); + } + + String lon = values[0]; + String lat = values[1]; + String time = values[2]; + // 经纬度的范围包括经度范围0°-180°和纬度范围0°-90° + try { + double d = Double.parseDouble(lon); + if (d > 180) + throwError(i, "经度[" + lon + "]不能大于 180°"); + if (d < 0) + throwError(i, "经度[" + lon + "]不能小于 0°"); + } catch (Exception e) { + throwError(i, "经度[" + lon + "]格式错误"); + } + + try { + double d = Double.parseDouble(lat); + if (d > 90) + throwError(i, "纬度[" + lat + "]不能大于 90°"); + if (d < 0) + throwError(i, "纬度[" + lat + "]不能小于 0°"); + } catch (Exception e) { + throwError(i, "纬度[" + lat + "]格式错误"); + } + // 109.49100 18.23400 2023-09-18-21:58:35 + String[] vs = time.split("-"); + if (vs.length != 4) + throwError(i, "时间[" + time + "]格式错误,样例 2023-09-18-21:58:35"); + LocalDateTime curTime = LocalDateHelper.parseDateTime(vs[0] + "-" + vs[1] + "-" + vs[2] + " " + vs[3]); + if (curTime == null) + throwError(i, "时间[" + time + "]格式错误,样例 2023-09-18-21:58:35"); + // 判断通过 + SampleLineTrack nav = new SampleLineTrack(); + nav.setTrack_lat(lat); + nav.setTrack_lon(lon); + nav.setTrack_time(curTime); + nav.setLine_id(line_id); + // 判断时间是否重复了 + List vArray = this.mTrack.selectList(SqlBuilder.create().addSqlCondition(SqlCondition.of("line_id", line_id)).addSqlCondition(SqlCondition.of("track_time", curTime))); + if (vArray.size() == 0) { + this.mTrack.insert(nav); + navArray.add(nav); + } + } + if (navArray.size() > 0) { + SampleLine ds = new SampleLine(); + ds.setTsy_id(line_id); + ds.setTrack_file_name(file_name); + this.mLine.update(ds); + + } + return navArray; + } + + public void throwError(int row, String msg) { + throw new BusinessException("测线轨迹文件导入失败->第[" + (row + 1) + "]行:" + msg); + + } + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleRegService.java b/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleRegService.java new file mode 100644 index 0000000..6b109f2 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleRegService.java @@ -0,0 +1,294 @@ +package cn.tsy.idsse.dsds.service.sample; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import cn.hme.data.model.frame.optr.FrameOptr; +import cn.hme.framework.web.exception.BusinessException; +import cn.tsy.data.idsse.dsds.mapper.dict.DictDataMapper; +import cn.tsy.data.idsse.dsds.mapper.dict.DictEquipmentMapper; +import cn.tsy.data.idsse.dsds.mapper.dict.DictPlatformMapper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleLineMapper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleRegMapper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleStationMapper; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageRegMapper; +import cn.tsy.data.idsse.dsds.model.sample.SampleLine; +import cn.tsy.data.idsse.dsds.model.sample.SampleReg; +import cn.tsy.data.idsse.dsds.model.sample.SampleStation; + +@Service +public class SampleRegService { + @Autowired + private SampleRegMapper mReg; + @Autowired + private DictPlatformMapper mPlatform; + @Autowired + private DictEquipmentMapper mEquipment; + @Autowired + private DictDataMapper mData; + @Autowired + private VoyageRegMapper mVoyage; + @Autowired + private SampleLineMapper mLine; + @Autowired + private SampleStationMapper mStation; + + /*********************** + * 增加或者修改 + * + */ + public void editSample(SampleReg sample, SampleStation satation, SampleLine line, FrameOptr optr) { +// FrameAssertHelper.isNotNull(sample.getVoyage_id(), "航次号不能为空!"); +// FrameAssertHelper.isNotEmpty(sample.getPlatform_type(), "平台类型不能为空!"); +// FrameAssertHelper.isNotEmpty(sample.getPlatform_name(), "平台名称不能为空!"); +// FrameAssertHelper.isNotEmpty(sample.getDiving_name(), "潜次号不能为空!"); +// FrameAssertHelper.isNotNull(sample.getEquipment_id(), "设备类型不能为空!"); +// FrameAssertHelper.isNotNull(sample.getData_id(), "数据样品类型不能为空!"); +// FrameAssertHelper.isNotEmpty(sample.getJob_type(), "作业类型不能为空!"); +// // TS2-37-1_SY665_JXS_WW_ +// // 数据样品编号: 航次号_潜次号_设备类型_数据样品类型_作业序号 +// // +// VoyageReg voyage = this.mVoyage.find(sample.getVoyage_id()); +// FrameAssertHelper.isNotNull(voyage, "未找到指定的航次信息,请检查!"); +// if (sample.getTsy_id() == null) { +// +// DictEquipment equipment = this.mEquipment.find(sample.getEquipment_id()); +// DictData data = this.mData.find(sample.getData_id()); +// sample.setCreate_time(LocalDateTime.now()); +// sample.setEquipment_type(equipment.getEquipment_name()); +// sample.setEquipment_alias(equipment.getEquipment_alias()); +// sample.setData_alias(data.getData_alias()); +// sample.setSample_type(data.getData_name()); +// sample.setVoyage_name(voyage.getVoyage_name()); +// // 新增,需要生成数据集和数据样品编号 +// String dataset_name = voyage.getVoyage_name() + "_" + sample.getDiving_name() + "_" + sample.getEquipment_alias() + "_" + sample.getData_alias(); +// // 找到序号 +// Integer total = this.mReg.selectCount(SqlQuery.create().eq("dataset_name", dataset_name)); +// String sample_code = ""; +// int seq = 1; +// if (total == null || total - 0 == 0) +// sample_code = dataset_name + "_01"; +// else { +// seq = total + 1; +// sample_code = dataset_name + "_" + StringHelper.leftPadding(seq + "", 2, '0'); +// } +// +// sample.setDataset_name(dataset_name); +// sample.setSample_seq(seq); +// sample.setSample_code(sample_code); +// sample.setSample_name(sample_code); +// this.mReg.insert(sample); +// if (sample.getJob_type().equals(VoyageJobType.Line)) { +// line.setSample_id(sample.getTsy_id()); +// this.mLine.insert(line); +// } +// if (sample.getJob_type().equals(VoyageJobType.Station)) { +// satation.setSample_id(sample.getTsy_id()); +// this.mStation.insert(satation); +// } +// } else { +// this.mReg.update(sample); +// if (sample.getJob_type().equals(VoyageJobType.Line)) { +// line.setSample_id(sample.getTsy_id()); +// this.mLine.update(line); +// } +// if (sample.getJob_type().equals(VoyageJobType.Station)) { +// satation.setSample_id(sample.getTsy_id()); +// this.mStation.update(satation); +// } +// } + + } + +// public List uploadSample(List> values, FrameOptr optr) { +// /**** +// * *航次名称 *平台类型 *平台名称 *潜次序号 布放经度 布放纬度 布放深度 +// * 入水时间 出水时间 左舷 右舷 主驾 +// * 坐底时间 抛载时间 回收时间 +// * *设备类型 设备序列号 +// * *作业类型 *样品类型 序号 采样时间 经度 纬度 深度 测线号 深度 开始经度 开始纬度 结束经度 结束纬度 开始时间 结束时间 备注 数据公开期限 +// */ +// +// FrameAssertHelper.hasValue(values, "导入的文件中无有效数据,请检查!"); +// List sampleArray = new ArrayList<>(); +// for (int i = 1; i < values.size(); i++) { +// List list = values.get(i); +// if (list.get(0) == null || list.get(0).trim().length() == 0) +// break; +// // *航次名称 *平台类型 *平台名称 *潜次序号 布放经度 布放纬度 布放深度 +// // 入水时间 出水时间 左舷 右舷 主驾 坐底时间 抛载时间 回收时间 +// // *设备类型 设备序列号 *作业类型 *样品类型 文物器号 +// String voyage_name = list.get(0); +// String platform_type = list.get(1); +// String platform_name = list.get(2); +// String diving_name = list.get(3); +// String wiring_lon = list.get(4); +// String wiring_lat = list.get(5); +// String wiring_deep = list.get(6); +// String water_in_time = list.get(7); +// String water_out_time = list.get(8); +// String driver_left = list.get(9); +// String driver_right = list.get(10); +// String driver_master = list.get(11); +// String bottom_time = list.get(12); +// String down_time = list.get(13); +// String receive_time = list.get(14); +// String equipment_type = list.get(15); +// String equipment_sn = list.get(16); +// String job_type = list.get(17); +// String sample_type = list.get(18); +// String antique_sn = list.get(19); +// // 采样时间 经度 纬度 深度 +// String sampling_time = list.get(20); +// String sampling_lon = list.get(21); +// String sampling_lat = list.get(22); +// String sampling_deep = list.get(23); +// // 测线号 深度 开始经度 开始纬度 结束经度 结束纬度 开始时间 结束时间 备注 数据公开期限 +// String line_sn = list.get(24); +// String line_deep = list.get(25); +// String start_lon = list.get(26); +// String start_lat = list.get(27); +// String end_lon = list.get(28); +// String end_lat = list.get(29); +// String start_time = list.get(30); +// String end_time = list.get(31); +// String remark = list.get(32); +// String data_role = list.get(33); +// +// SampleReg sa = new SampleReg(); +// VoyageReg voyage = this.mVoyage.findWithColumn("voyage_name", voyage_name); +// if (voyage == null) +// throwError(i, "航次[" + voyage_name + "]未找到,请先添加该航次"); +// sa.setVoyage_id(voyage.getTsy_id()); +// sa.setVoyage_name(voyage_name); +// DictPlatform platform = this.mPlatform.findWithColumn("platform_name", platform_type); +// if (platform == null) +// throwError(i, "平台类型[" + platform_type + "]未找到,请先添加该平台类型"); +// sa.setPlatform_type(platform_type); +// sa.setPlatform_name(platform_name); +// DictEquipment equipment = this.mEquipment.findWithColumn("equipment_name", equipment_type); +// if (equipment == null) +// throwError(i, "设备类型[" + equipment_type + "]未找到,请先添加该设备类型"); +// sa.setEquipment_alias(equipment.getEquipment_alias()); +// sa.setEquipment_id(equipment.getTsy_id()); +// sa.setEquipment_type(equipment_type); +// DictData data = this.mData.findWithColumn("data_name", sample_type); +// if (data == null) +// throwError(i, "数据样品类型[" + sample_type + "]未找到,请先添加该数据样品类型"); +// sa.setData_alias(data.getData_alias()); +// sa.setData_id(data.getTsy_id()); +// sa.setSample_type(sample_type); +// sa.setDiving_name(diving_name); +// sa.setEquipment_sn(equipment_sn); +// +// sa.setCreate_time(LocalDateTime.now()); +// // 新增,需要生成数据集和数据样品编号 +// String dataset_name = voyage.getVoyage_name() + "_" + diving_name + "_" + sa.getEquipment_alias() + "_" + sa.getData_alias(); +// // 找到序号 +// Integer total = this.mReg.selectCount(SqlQuery.create().eq("dataset_name", dataset_name)); +// String sample_code = ""; +// int seq = 1; +// if (total == null || total - 0 == 0) +// sample_code = dataset_name + "_01"; +// else { +// seq = total + 1; +// sample_code = dataset_name + StringHelper.leftPadding(seq + "", 2, '0'); +// } +// sa.setDataset_name(dataset_name); +// sa.setSample_seq(seq); +// sa.setSample_code(sample_code); +// if (StringHelper.hasValue(antique_sn)) +// sa.setAntique_sn(antique_sn); +// if (StringHelper.hasValue(remark)) +// sa.setSample_remark(remark); +// sa.setJob_type(job_type); +// SampleLine line = new SampleLine(); +// SampleStation st = new SampleStation(); +// if (StringHelper.isEmpty(job_type)) +// throwError(i, "作业类型为空,请检查!"); +// if (VoyageJobType.Line.equals(job_type)) { +// if (StringHelper.hasValue(line_sn)) +// line.setLine_sn(line_sn); +// if (StringHelper.hasValue(start_lon)) +// line.setStart_lon(checkValue(start_lon)); +// if (StringHelper.hasValue(start_lat)) +// line.setStart_lat(checkValue(start_lat)); +// if (StringHelper.hasValue(end_lon)) +// line.setEnd_lon(checkValue(end_lon)); +// if (StringHelper.hasValue(end_lat)) +// line.setEnd_lat(checkValue(end_lat)); +// if (StringHelper.hasValue(start_time)) +// line.setStart_time(LocalDateHelper.parseDateTime(start_time)); +// if (StringHelper.hasValue(end_time)) +// line.setEnd_time(LocalDateHelper.parseDateTime(end_time)); +// +// } else if (VoyageJobType.Station.equals(job_type)) { +// if (StringHelper.hasValue(wiring_lon)) +// st.setWiring_lon(checkValue(wiring_lon)); +// if (StringHelper.hasValue(wiring_lat)) +// st.setWiring_lat(checkValue(wiring_lat)); +// if (StringHelper.hasValue(wiring_deep)) +// st.setWiring_deep(wiring_deep); +// +// if (StringHelper.hasValue(water_in_time)) +// st.setWater_in_time(LocalDateHelper.parseDateTime(water_in_time)); +// if (StringHelper.hasValue(water_out_time)) +// st.setWater_out_time(LocalDateHelper.parseDateTime(water_out_time)); +// +// if (StringHelper.hasValue(driver_left)) +// st.setDriver_left(driver_left); +// if (StringHelper.hasValue(driver_right)) +// st.setDriver_right(driver_right); +// if (StringHelper.hasValue(driver_master)) +// st.setDriver_master(driver_master); +// +// if (StringHelper.hasValue(bottom_time)) +// st.setBottom_time(LocalDateHelper.parseDateTime(bottom_time)); +// if (StringHelper.hasValue(down_time)) +// st.setDown_time(LocalDateHelper.parseDateTime(down_time)); +// if (StringHelper.hasValue(receive_time)) +// st.setReceive_time(LocalDateHelper.parseDateTime(receive_time)); +// if (StringHelper.hasValue(sampling_time)) +// st.setSampling_time(LocalDateHelper.parseDateTime(sampling_time)); +// if (StringHelper.hasValue(sampling_lat)) +// st.setSampling_lat(checkValue(sampling_lat)); +// if (StringHelper.hasValue(sampling_lon)) +// st.setSampling_lon(checkValue(sampling_lon)); +// if (StringHelper.hasValue(sampling_deep)) +// st.setSampling_deep(sampling_deep); +// } else +// throwError(i, "作业类型[" + job_type + "]必须为测线作业或者站位作业!"); +// +// this.editSample(sa, st, line, optr); +// sampleArray.add(sa); +// } +// return new ArrayList<>(); +// } + + /**************** + * 删除数据样品 + * + */ + public void deleteSample(int sample_id) { + /**************** + * @todo 判断是否能实际删除 + */ + this.mLine.deleteByColumn("sample_id", sample_id); + this.mStation.deleteByColumn("sample_id", sample_id); + this.mReg.deleteByKey(sample_id); + } + + public void throwError(int row, String msg) { + throw new BusinessException("数据样品信息导入失败->第[" + (row + 3) + "]行:" + msg); + + } + + // 经纬度保留4位 + public String checkValue(String value) { + try { + return String.format("%.4f", Double.parseDouble(value)); + } catch (Exception e) { + return value; + } + } +} diff --git a/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleStationService.java b/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleStationService.java new file mode 100644 index 0000000..b76e489 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/service/sample/SampleStationService.java @@ -0,0 +1,59 @@ +package cn.tsy.idsse.dsds.service.sample; + +import java.time.LocalDateTime; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import cn.hme.data.model.frame.optr.FrameOptr; +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.builder.SqlQuery; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleDatasetMapper; +import cn.tsy.data.idsse.dsds.mapper.sample.SampleStationMapper; +import cn.tsy.data.idsse.dsds.model.sample.SampleDataset; +import cn.tsy.data.idsse.dsds.model.sample.SampleStation; + +@Service +public class SampleStationService { + @Autowired + private SampleDatasetMapper mDataset; + @Autowired + private SampleStationMapper mStation; + + /*********************** + * 增加或者修改 + * + */ + public SampleStation editStation(int dataset_id, SampleStation satation, FrameOptr optr) { + SampleDataset dataset = this.mDataset.find(dataset_id); + if (satation.getTsy_id() == null) { + // 计算序号 + Integer total = this.mStation.selectCount(SqlQuery.create().eq("dataset_id", dataset_id)); + String seq = "01"; + if (total != null && total > 0) + seq = StringHelper.leftPadding((total + 1)+"", 2, '0'); + satation.setDataset_id(dataset_id); + satation.setDataset_name(dataset.getDataset_name()); + satation.setSample_seq(seq); + satation.setSample_name(dataset.getDataset_name()+"_"+seq); + satation.setCreate_time(LocalDateTime.now()); + this.mStation.insert(satation); + }else + this.mStation.update(satation); + + return satation; + + } + + /**************** + * 删除数据样品 + * + */ + public void deleteStation(int satation_id) { + /**************** + * @todo 判断是否能实际删除 + */ + this.mStation.deleteByKey(satation_id); + } + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/service/sar/SarRegService.java b/src/main/java/cn/tsy/idsse/dsds/service/sar/SarRegService.java new file mode 100644 index 0000000..5320341 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/service/sar/SarRegService.java @@ -0,0 +1,144 @@ +package cn.tsy.idsse.dsds.service.sar; + +import java.io.File; +import java.time.LocalDateTime; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import cn.hme.data.model.frame.optr.FrameOptr; +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.builder.SqlQuery; +import cn.hme.framework.web.helper.FrameAssertHelper; +import cn.tsy.data.idsse.dsds.mapper.sar.SarFileMapper; +import cn.tsy.data.idsse.dsds.mapper.sar.SarLogMapper; +import cn.tsy.data.idsse.dsds.mapper.sar.SarRegMapper; +import cn.tsy.data.idsse.dsds.model.sar.SarFile; +import cn.tsy.data.idsse.dsds.model.sar.SarLog; +import cn.tsy.data.idsse.dsds.model.sar.SarReg; +import cn.tsy.idsse.dsds.constant.SarLogType; +import cn.tsy.idsse.dsds.constant.SarStatus; + +@Service +public class SarRegService { + @Autowired + private SarRegMapper mReg; + @Autowired + private SarLogMapper mLog; + @Autowired + private SarFileMapper mFile; + + /*********************** + * 增加或者修改 + */ + public void editSar(SarReg sar, FrameOptr optr) { + + FrameAssertHelper.isNotEmpty(sar.getSar_type(), "任务类型不允许为空!"); + FrameAssertHelper.isNotEmpty(sar.getTarget_type(), "目标类型不允许为空!"); + // 计算总数 + Integer total = this.mReg.selectCount(SqlQuery.create()); + String seq = "001"; + if (total != null && total > 0) + seq = StringHelper.leftPadding((seq + 1) + "", 3, '0'); + + if (sar.getTsy_id() != null) { + + this.mReg.update(sar); + } else { + // 任务类型_目标类别_总序列号 + sar.setSar_name(sar.getSar_type() + "_" + sar.getTarget_type() + "_" + seq); + sar.setCreate_time(LocalDateTime.now()); + sar.setSar_status_time(LocalDateTime.now()); + sar.setSar_status(SarStatus.Init); + this.mReg.insert(sar); + /*************** + * 写日志 + */ + logSar(this.mLog, sar.getTsy_id(), optr, SarLogType.Create, sar.getTsy_id() + "->" + sar.getSar_name()); + + } + } + + /**************** + * 删除 + * + */ + public void deleteSar(int sar_id) { + /**************** + * @todo 判断是否能实际删除 + */ + this.mLog.deleteByColumn("sar_id", sar_id); + this.mLog.deleteOtherByColumn(SarFile.class, "sar_id", sar_id); + this.mReg.deleteByKey(sar_id); + } + + public void startSar(int sar_id,FrameOptr optr) { + SarReg sar = this.mReg.find(sar_id); + FrameAssertHelper.isNotNull(sar,"未找到指定的任务,请检查!"); + FrameAssertHelper.isEqual(sar.getSar_status(), SarStatus.Init, "该任务状态不为未启动,不可进行启动操作!"); + SarReg s = new SarReg(); + s.setTsy_id(sar_id); + s.setSar_status(SarStatus.Working); + s.setSar_status_time(LocalDateTime.now()); + this.mReg.update(s); + logSar(this.mLog, sar.getTsy_id(), optr, SarLogType.ModifyStatus, sar.getSar_status() + "->" + s.getSar_status()); + + } + + + public void completeSar(int sar_id,FrameOptr optr) { + SarReg sar = this.mReg.find(sar_id); + FrameAssertHelper.isNotNull(sar,"未找到指定的任务,请检查!"); + FrameAssertHelper.isEqual(sar.getSar_status(), SarStatus.Working, "该任务状态不为执行中,不可进行完成操作!"); + SarReg s = new SarReg(); + s.setTsy_id(sar_id); + s.setSar_status(SarStatus.Complete); + s.setSar_status_time(LocalDateTime.now()); + this.mReg.update(s); + logSar(this.mLog, sar.getTsy_id(), optr, SarLogType.ModifyStatus, sar.getSar_status() + "->" + s.getSar_status()); + + } + + public void cancelSar(int sar_id,FrameOptr optr) { + SarReg sar = this.mReg.find(sar_id); + FrameAssertHelper.isNotNull(sar,"未找到指定的任务,请检查!"); + FrameAssertHelper.isNotEqual(sar.getSar_status(), SarStatus.Complete, "该任务状态已完成,不可进行取消操作!"); + SarReg s = new SarReg(); + s.setTsy_id(sar_id); + s.setSar_status(SarStatus.Cancel); + s.setSar_status_time(LocalDateTime.now()); + this.mReg.update(s); + logSar(this.mLog, sar.getTsy_id(), optr, SarLogType.ModifyStatus, sar.getSar_status() + "->" + s.getSar_status()); + + } + + public static SarLog logSar(SarLogMapper mLog, int sar_id, FrameOptr optr, String log_type, String log_value) { + SarLog log = new SarLog(); + log.setLog_type(log_type); + log.setLog_value(log_value); + log.setLogin_name(optr.getLogin_name()); + log.setOptr_id(optr.getTsy_id()); + log.setOptr_name(optr.getOptr_name()); + log.setSar_id(sar_id); + mLog.insert(log); + return log; + } + + /************* + * 上传任务附件 + */ + public void updateFile(SarReg sar,String file_name,String remark,File f,FrameOptr optr) { + SarFile file = new SarFile(); + file.setUpload_time(LocalDateTime.now()); + file.setFile_name(file_name); + file.setFile_path(f.getPath()); + file.setFile_size(f.length()+""); + file.setFile_type("File"); + if(f.getName().toLowerCase().endsWith(".png") || f.getName().toLowerCase().endsWith(".jpg")||f.getName().toLowerCase().endsWith(".jpeg")) + file.setFile_type("Image"); + file.setFile_remark(remark); + file.setSar_id(sar.getTsy_id()); + this.mFile.insert(file); + logSar(this.mLog, sar.getTsy_id(), optr, SarLogType.UploadFile, file_name); + } +} diff --git a/src/main/java/cn/tsy/idsse/dsds/service/voyage/VoyageMemberService.java b/src/main/java/cn/tsy/idsse/dsds/service/voyage/VoyageMemberService.java new file mode 100644 index 0000000..62a0c6b --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/service/voyage/VoyageMemberService.java @@ -0,0 +1,82 @@ +package cn.tsy.idsse.dsds.service.voyage; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import cn.hme.data.model.frame.optr.FrameOptr; +import cn.hme.framework.helper.date.LocalDateHelper; +import cn.hme.framework.web.exception.BusinessException; +import cn.hme.framework.web.helper.FrameAssertHelper; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageLogMapper; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageMemberMapper; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageMember; +import cn.tsy.idsse.dsds.constant.VoyageLogType; + +@Service +public class VoyageMemberService { + @Autowired + private VoyageMemberMapper mMember; + @Autowired + private VoyageLogMapper mLog; + + public List uploadMember(int voyage_id, List> values, FrameOptr optr) { + FrameAssertHelper.hasValue(values, "参航人员数量为空,请检查!"); + LocalDate startDate = LocalDateHelper.parseDate("1900-01-01"); + this.mMember.deleteByColumn("voyage_id", voyage_id); + List memberArray = new ArrayList<>(); + for (int i = 0; i < values.size(); i++) { + List list = values.get(i); + if (list.get(0) == null || list.get(0).trim().length() == 0) + break; + + VoyageMember m = new VoyageMember(); + m.setMember_name(list.get(0)); + m.setMember_sex(list.get(1)); + String date= list.get(2); + if(date!=null) { + try { + //System.out.println(LocalDateHelper.format(startDate.plusDays(Integer.parseInt(date)))); + m.setMember_birthday(LocalDateHelper.format(startDate.plusDays(Integer.parseInt(date)))); + }catch(Exception e) { + } + } + m.setMember_unit(list.get(3)); + m.setMember_dept(list.get(4)); +// m.setShip_room_addr(list.get(5)); +// m.setMember_tel(list.get(6)); +// m.setMember_cert(list.get(7)); +// m.setBank_name(list.get(8)); +// m.setBank_card(list.get(9)); +// m.setBank_addr(list.get(10)); + m.setMember_remark(list.get(5)); + m.setVoyage_id(voyage_id); + + this.mMember.insert(m); + memberArray.add(m); + } + if (memberArray.size() > 0) + VoyageRegService.logVoyage(mLog, voyage_id, optr, VoyageLogType.UploadMember, "成功导入[" + memberArray.size() + "]条参航人员"); + return memberArray; + } + + public void throwError(int row, String msg) { + throw new BusinessException("航次参航人员导入失败->第[" + (row + 1) + "]行:" + msg); + + } + + + public void editMember(VoyageMember member) { + if(member.getTsy_id()==null) + this.mMember.insert(member); + else this.mMember.update(member); + } + + public void deleteMember(int member_id) { + this.mMember.deleteByKey(member_id); + } + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/service/voyage/VoyageNavigationService.java b/src/main/java/cn/tsy/idsse/dsds/service/voyage/VoyageNavigationService.java new file mode 100644 index 0000000..13adf82 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/service/voyage/VoyageNavigationService.java @@ -0,0 +1,103 @@ +package cn.tsy.idsse.dsds.service.voyage; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import cn.hme.data.model.frame.optr.FrameOptr; +import cn.hme.framework.helper.date.LocalDateHelper; +import cn.hme.framework.helper.lang.StringHelper; +import cn.hme.framework.jdbc.provider.builder.SqlBuilder; +import cn.hme.framework.jdbc.provider.builder.SqlCondition; +import cn.hme.framework.web.exception.BusinessException; +import cn.hme.framework.web.helper.FrameAssertHelper; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageLogMapper; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageNavigationMapper; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageRegMapper; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageNavigation; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageReg; +import cn.tsy.idsse.dsds.constant.VoyageLogType; + +@Service +public class VoyageNavigationService { + @Autowired + private VoyageNavigationMapper mNav; + @Autowired + private VoyageRegMapper mVoyage; + @Autowired + private VoyageLogMapper mLog; + + public List uploadNavigation(int voyage_id, List array,String file_name, FrameOptr optr) { + FrameAssertHelper.hasValue(array, "航次导航文件为空,请检查!"); + List navArray = new ArrayList<>(); + for (int i = 0; i < array.size(); i++) { + if (array.get(i).trim().length() == 0) + break; + String[] values = StringHelper.splitWithSpace(array.get(i)); + if (values.length < 3) { + throwError(i, "列不足,至少需要3列"); + } + + String lon = values[0]; + String lat = values[1]; + String time = values[2]; + // 经纬度的范围包括经度范围0°-180°和纬度范围0°-90° + try { + double d = Double.parseDouble(lon); + if (d > 180) + throwError(i, "经度[" + lon + "]不能大于 180°"); + if (d < 0) + throwError(i, "经度[" + lon + "]不能小于 0°"); + } catch (Exception e) { + throwError(i, "经度[" + lon + "]格式错误"); + } + + try { + double d = Double.parseDouble(lat); + if (d > 90) + throwError(i, "纬度[" + lat + "]不能大于 90°"); + if (d < 0) + throwError(i, "纬度[" + lat + "]不能小于 0°"); + } catch (Exception e) { + throwError(i, "纬度[" + lat + "]格式错误"); + } + // 109.49100 18.23400 2023-09-18-21:58:35 + String[] vs = time.split("-"); + if (vs.length != 4) + throwError(i, "时间[" + time + "]格式错误,样例 2023-09-18-21:58:35"); + LocalDateTime curTime = LocalDateHelper.parseDateTime(vs[0] + "-" + vs[1] + "-" + vs[2] + " " + vs[3]); + if (curTime == null) + throwError(i, "时间[" + time + "]格式错误,样例 2023-09-18-21:58:35"); + // 判断通过 + VoyageNavigation nav = new VoyageNavigation(); + nav.setNav_lat(lat); + nav.setNav_lon(lon); + nav.setNav_time(curTime); + nav.setVoyage_id(voyage_id); + // 判断时间是否重复了 + List vArray = this.mNav.selectList(SqlBuilder.create().addSqlCondition(SqlCondition.of("voyage_id", voyage_id)).addSqlCondition(SqlCondition.of("nav_time", curTime))); + if (vArray.size() == 0) { + this.mNav.insert(nav); + navArray.add(nav); + } + } + if (navArray.size() > 0) { + VoyageReg voyage = new VoyageReg(); + voyage.setTsy_id(voyage_id); + voyage.setNavigation_file_name(file_name); + this.mVoyage.update(voyage); + VoyageRegService.logVoyage(mLog, voyage_id, optr, VoyageLogType.UploadNavigation, "成功导入[" + navArray.size() + "]条导航记录"); + + } + return navArray; + } + + public void throwError(int row, String msg) { + throw new BusinessException("航次导航文件导入失败->第[" + (row + 1) + "]行:" + msg); + + } + +} diff --git a/src/main/java/cn/tsy/idsse/dsds/service/voyage/VoyageRegService.java b/src/main/java/cn/tsy/idsse/dsds/service/voyage/VoyageRegService.java new file mode 100644 index 0000000..8955925 --- /dev/null +++ b/src/main/java/cn/tsy/idsse/dsds/service/voyage/VoyageRegService.java @@ -0,0 +1,82 @@ +package cn.tsy.idsse.dsds.service.voyage; + +import java.time.LocalDateTime; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import cn.hme.data.model.frame.optr.FrameOptr; +import cn.hme.framework.web.exception.BusinessException; +import cn.hme.framework.web.helper.FrameAssertHelper; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageLogMapper; +import cn.tsy.data.idsse.dsds.mapper.voyage.VoyageRegMapper; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageLog; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageNavigation; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageReg; +import cn.tsy.data.idsse.dsds.model.voyage.VoyageMember; +import cn.tsy.idsse.dsds.constant.VoyageLogType; +import cn.tsy.idsse.dsds.constant.VoyageStatus; + +@Service +public class VoyageRegService { + @Autowired + private VoyageRegMapper mReg; + @Autowired + private VoyageLogMapper mLog; + + /*********************** + * 增加或者修改 + */ + public void editVoyage(VoyageReg voyage, FrameOptr optr) { + FrameAssertHelper.isNotEmpty(voyage.getVoyage_name(), "航次名称不允许为空!"); + FrameAssertHelper.isNotNull(voyage.getVoyage_start_date(), "航次离港日期不允许为空!"); + FrameAssertHelper.isNotNull(voyage.getVoyage_end_date(), "航次返岗日期不允许为空!"); + if (voyage.getVoyage_end_date().isBefore(voyage.getVoyage_start_date())) + throw new BusinessException("航次返港日期不能小于离港日期!"); + // 判断类型是否存在 + List list = this.mReg.selectListByColumn("voyage_name", voyage.getVoyage_name()); + if (voyage.getTsy_id() != null) { + if (list.size() > 0 && list.get(0).getTsy_id() - voyage.getTsy_id() != 0) + throw new BusinessException("航次名称【" + voyage.getVoyage_name() + "】已经存在,请检查!"); + this.mReg.update(voyage); + } else { + FrameAssertHelper.isEmpty(list, "航次名称名称【" + voyage.getVoyage_name() + "】已经存在,请检查!"); + voyage.setCreate_time(LocalDateTime.now()); + voyage.setVoyage_status(VoyageStatus.Plan); + voyage.setVoyage_status_time(LocalDateTime.now()); + this.mReg.insert(voyage); + /*************** + * 写航次日志 + */ + logVoyage(this.mLog, voyage.getTsy_id(), optr, VoyageLogType.Create, voyage.getTsy_id() + "->" + voyage.getVoyage_name()); + + } + } + + /**************** + * 删除航次信息 + * + */ + public void deleteVoyage(int voyage_id) { + /**************** + * @todo 判断是否能实际删除 + */ + this.mLog.deleteByColumn("voyage_id", voyage_id); + this.mLog.deleteOtherByColumn(VoyageNavigation.class, "voyage_id", voyage_id); + this.mLog.deleteOtherByColumn(VoyageMember.class, "voyage_id", voyage_id); + this.mReg.deleteByKey(voyage_id); + } + + public static VoyageLog logVoyage(VoyageLogMapper mLog, int voyage_id, FrameOptr optr, String log_type, String log_value) { + VoyageLog log = new VoyageLog(); + log.setLog_type(log_type); + log.setLog_value(log_value); + log.setLogin_name(optr.getLogin_name()); + log.setOptr_id(optr.getTsy_id()); + log.setOptr_name(optr.getOptr_name()); + log.setVoyage_id(voyage_id); + mLog.insert(log); + return log; + } +} diff --git a/src/main/java/jdbc.properties b/src/main/java/jdbc.properties new file mode 100644 index 0000000..d8bc501 --- /dev/null +++ b/src/main/java/jdbc.properties @@ -0,0 +1,13 @@ +JdbcDriverClass=com.mysql.cj.jdbc.Driver +JdbcUrl=jdbc:mysql://127.0.0.1:3306/dsds2024?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false&verifyServerCertificate=false&autoReconnct=true&autoReconnectForPools=true&allowMultiQueries=true +JdbcUser=root +JdbcPassword=localhost +JdbcCheckouttimeout=30000 +JdbcMaxpoolsize=200 +JdbcAcquireertydelay=30000 + +#JdbcDriverClass=com.mysql.jdbc.Driver +#JdbcUrl=jdbc:mysql://192.168.6.78:3306/dsds_pdc?useUnicode=true&characterEncoding=UTF-8&useSSL=false +#JdbcUser=idsse +#JdbcPassword=Ds56cD09Kj024 +#JdbcCheckouttimeout=5000 \ No newline at end of file diff --git a/src/main/webapp/META-INF/MANIFEST.MF b/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000..254272e --- /dev/null +++ b/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/src/main/webapp/WEB-INF/lib/commons-collections4-4.4.jar b/src/main/webapp/WEB-INF/lib/commons-collections4-4.4.jar new file mode 100644 index 0000000..da06c3e Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/commons-collections4-4.4.jar differ diff --git a/src/main/webapp/WEB-INF/lib/commons-compress-1.21.jar b/src/main/webapp/WEB-INF/lib/commons-compress-1.21.jar new file mode 100644 index 0000000..4892334 Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/commons-compress-1.21.jar differ diff --git a/src/main/webapp/WEB-INF/lib/jdbc-mysql-8.0.23.jar b/src/main/webapp/WEB-INF/lib/jdbc-mysql-8.0.23.jar new file mode 100644 index 0000000..1e0cb19 Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/jdbc-mysql-8.0.23.jar differ diff --git a/src/main/webapp/WEB-INF/lib/poi-5.2.2.jar b/src/main/webapp/WEB-INF/lib/poi-5.2.2.jar new file mode 100644 index 0000000..add8419 Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/poi-5.2.2.jar differ diff --git a/src/main/webapp/WEB-INF/lib/poi-excelant-5.2.2.jar b/src/main/webapp/WEB-INF/lib/poi-excelant-5.2.2.jar new file mode 100644 index 0000000..bb09b43 Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/poi-excelant-5.2.2.jar differ diff --git a/src/main/webapp/WEB-INF/lib/poi-ooxml-5.2.2.jar b/src/main/webapp/WEB-INF/lib/poi-ooxml-5.2.2.jar new file mode 100644 index 0000000..9bfe818 Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/poi-ooxml-5.2.2.jar differ diff --git a/src/main/webapp/WEB-INF/lib/poi-ooxml-lite-5.2.2.jar b/src/main/webapp/WEB-INF/lib/poi-ooxml-lite-5.2.2.jar new file mode 100644 index 0000000..7ef9910 Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/poi-ooxml-lite-5.2.2.jar differ diff --git a/src/main/webapp/WEB-INF/lib/poi-scratchpad-5.2.2.jar b/src/main/webapp/WEB-INF/lib/poi-scratchpad-5.2.2.jar new file mode 100644 index 0000000..b03fd73 Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/poi-scratchpad-5.2.2.jar differ diff --git a/src/main/webapp/WEB-INF/lib/tsy_core_v2023.jar b/src/main/webapp/WEB-INF/lib/tsy_core_v2023.jar new file mode 100644 index 0000000..427b79d Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/tsy_core_v2023.jar differ diff --git a/src/main/webapp/WEB-INF/lib/tsy_spring_v2023.jar b/src/main/webapp/WEB-INF/lib/tsy_spring_v2023.jar new file mode 100644 index 0000000..a895fe0 Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/tsy_spring_v2023.jar differ diff --git a/src/main/webapp/WEB-INF/lib/xmlbeans-5.0.3.jar b/src/main/webapp/WEB-INF/lib/xmlbeans-5.0.3.jar new file mode 100644 index 0000000..63b0ab8 Binary files /dev/null and b/src/main/webapp/WEB-INF/lib/xmlbeans-5.0.3.jar differ diff --git a/src/main/webapp/template/数据样品信息录入模版.xlsx b/src/main/webapp/template/数据样品信息录入模版.xlsx new file mode 100644 index 0000000..60f06f9 Binary files /dev/null and b/src/main/webapp/template/数据样品信息录入模版.xlsx differ diff --git a/src/main/webapp/template/潜次轨迹文件样例.txt b/src/main/webapp/template/潜次轨迹文件样例.txt new file mode 100644 index 0000000..34a295e --- /dev/null +++ b/src/main/webapp/template/潜次轨迹文件样例.txt @@ -0,0 +1,3780 @@ +110.566241 17.367974 2023-09-20-00:53:41 +110.566227 17.367967 2023-09-20-00:53:47 +110.566195 17.367940 2023-09-20-00:54:05 +110.566170 17.367937 2023-09-20-00:54:11 +110.566157 17.367942 2023-09-20-00:54:17 +110.566172 17.367920 2023-09-20-00:54:23 +110.566155 17.367916 2023-09-20-00:54:35 +110.566146 17.367905 2023-09-20-00:54:41 +110.566131 17.367892 2023-09-20-00:54:47 +110.566123 17.367880 2023-09-20-00:54:53 +110.566099 17.367861 2023-09-20-00:54:59 +110.566084 17.367845 2023-09-20-00:55:05 +110.566068 17.367825 2023-09-20-00:55:11 +110.566049 17.367805 2023-09-20-00:55:17 +110.566034 17.367785 2023-09-20-00:55:23 +110.566016 17.367761 2023-09-20-00:55:29 +110.566004 17.367742 2023-09-20-00:55:35 +110.565990 17.367722 2023-09-20-00:55:41 +110.565974 17.367706 2023-09-20-00:55:47 +110.565961 17.367686 2023-09-20-00:55:59 +110.565942 17.367668 2023-09-20-00:56:05 +110.565918 17.367647 2023-09-20-00:56:17 +110.565900 17.367630 2023-09-20-00:56:23 +110.565878 17.367614 2023-09-20-00:56:29 +110.565861 17.367596 2023-09-20-00:56:35 +110.565841 17.367580 2023-09-20-00:56:41 +110.565823 17.367565 2023-09-20-00:56:47 +110.565807 17.367547 2023-09-20-00:56:59 +110.565793 17.367532 2023-09-20-00:57:05 +110.565780 17.367517 2023-09-20-00:57:11 +110.565763 17.367502 2023-09-20-00:57:17 +110.565754 17.367490 2023-09-20-00:57:23 +110.565742 17.367480 2023-09-20-00:57:29 +110.565729 17.367471 2023-09-20-00:57:35 +110.565723 17.367464 2023-09-20-00:57:41 +110.565715 17.367456 2023-09-20-00:57:47 +110.565711 17.367445 2023-09-20-00:57:59 +110.565703 17.367438 2023-09-20-00:58:05 +110.565693 17.367430 2023-09-20-00:58:11 +110.565690 17.367424 2023-09-20-00:58:17 +110.565681 17.367414 2023-09-20-00:58:23 +110.565675 17.367405 2023-09-20-00:58:29 +110.565667 17.367399 2023-09-20-00:58:35 +110.565660 17.367393 2023-09-20-00:58:41 +110.565655 17.367383 2023-09-20-00:58:47 +110.565647 17.367373 2023-09-20-00:58:59 +110.565639 17.367363 2023-09-20-00:59:05 +110.565633 17.367352 2023-09-20-00:59:11 +110.565623 17.367338 2023-09-20-00:59:17 +110.565617 17.367324 2023-09-20-00:59:23 +110.565607 17.367311 2023-09-20-00:59:29 +110.565597 17.367297 2023-09-20-00:59:35 +110.565592 17.367284 2023-09-20-00:59:41 +110.565583 17.367272 2023-09-20-00:59:47 +110.565574 17.367256 2023-09-20-00:59:59 +110.565563 17.367244 2023-09-20-01:00:05 +110.565552 17.367229 2023-09-20-01:00:11 +110.565547 17.367217 2023-09-20-01:00:17 +110.565534 17.367203 2023-09-20-01:00:23 +110.565526 17.367191 2023-09-20-01:00:29 +110.565516 17.367181 2023-09-20-01:00:35 +110.565501 17.367170 2023-09-20-01:00:41 +110.565496 17.367158 2023-09-20-01:00:47 +110.565483 17.367140 2023-09-20-01:00:59 +110.565476 17.367126 2023-09-20-01:01:05 +110.565468 17.367110 2023-09-20-01:01:11 +110.565457 17.367093 2023-09-20-01:01:17 +110.565453 17.367076 2023-09-20-01:01:23 +110.565447 17.367062 2023-09-20-01:01:29 +110.565436 17.367045 2023-09-20-01:01:35 +110.565427 17.367033 2023-09-20-01:01:41 +110.565415 17.367017 2023-09-20-01:01:47 +110.565409 17.367001 2023-09-20-01:01:59 +110.565399 17.366985 2023-09-20-01:02:05 +110.565388 17.366968 2023-09-20-01:02:11 +110.565383 17.366958 2023-09-20-01:02:17 +110.565373 17.366941 2023-09-20-01:02:23 +110.565365 17.366922 2023-09-20-01:02:30 +110.565358 17.366902 2023-09-20-01:02:48 +110.565346 17.366880 2023-09-20-01:03:00 +110.565342 17.366862 2023-09-20-01:03:06 +110.565330 17.366841 2023-09-20-01:03:12 +110.565319 17.366820 2023-09-20-01:03:18 +110.565312 17.366806 2023-09-20-01:03:24 +110.565305 17.366794 2023-09-20-01:03:30 +110.565296 17.366783 2023-09-20-01:03:36 +110.565289 17.366771 2023-09-20-01:03:42 +110.565284 17.366761 2023-09-20-01:03:48 +110.565272 17.366748 2023-09-20-01:04:00 +110.565274 17.366740 2023-09-20-01:04:06 +110.565266 17.366731 2023-09-20-01:04:12 +110.565255 17.366718 2023-09-20-01:04:18 +110.565243 17.366707 2023-09-20-01:04:24 +110.565239 17.366699 2023-09-20-01:04:30 +110.565235 17.366694 2023-09-20-01:04:36 +110.565228 17.366686 2023-09-20-01:04:42 +110.565224 17.366679 2023-09-20-01:04:48 +110.565220 17.366671 2023-09-20-01:05:00 +110.565221 17.366665 2023-09-20-01:05:06 +110.565218 17.366659 2023-09-20-01:05:12 +110.565217 17.366653 2023-09-20-01:05:18 +110.565212 17.366648 2023-09-20-01:05:24 +110.565211 17.366644 2023-09-20-01:05:30 +110.565210 17.366641 2023-09-20-01:05:36 +110.565209 17.366641 2023-09-20-01:05:42 +110.565157 17.366640 2023-09-20-01:06:00 +110.565150 17.366633 2023-09-20-01:06:06 +110.565117 17.366619 2023-09-20-01:06:12 +110.565116 17.366613 2023-09-20-01:06:18 +110.565121 17.366607 2023-09-20-01:06:24 +110.565122 17.366599 2023-09-20-01:06:30 +110.565122 17.366608 2023-09-20-01:06:36 +110.565129 17.366605 2023-09-20-01:06:48 +110.565133 17.366598 2023-09-20-01:07:00 +110.565138 17.366591 2023-09-20-01:07:06 +110.565143 17.366589 2023-09-20-01:07:12 +110.565149 17.366585 2023-09-20-01:07:18 +110.565156 17.366581 2023-09-20-01:07:24 +110.565156 17.366574 2023-09-20-01:07:30 +110.565159 17.366572 2023-09-20-01:07:36 +110.565159 17.366570 2023-09-20-01:07:42 +110.565157 17.366568 2023-09-20-01:07:48 +110.565156 17.366564 2023-09-20-01:08:00 +110.565151 17.366562 2023-09-20-01:08:06 +110.565146 17.366565 2023-09-20-01:08:12 +110.565142 17.366566 2023-09-20-01:08:18 +110.565133 17.366566 2023-09-20-01:08:24 +110.565127 17.366561 2023-09-20-01:08:30 +110.565117 17.366561 2023-09-20-01:08:36 +110.565109 17.366558 2023-09-20-01:08:42 +110.565100 17.366554 2023-09-20-01:08:48 +110.565091 17.366543 2023-09-20-01:09:00 +110.565083 17.366536 2023-09-20-01:09:06 +110.565077 17.366529 2023-09-20-01:09:12 +110.565073 17.366521 2023-09-20-01:09:18 +110.565070 17.366517 2023-09-20-01:09:24 +110.565069 17.366511 2023-09-20-01:09:30 +110.565067 17.366508 2023-09-20-01:09:36 +110.565066 17.366504 2023-09-20-01:09:42 +110.565067 17.366502 2023-09-20-01:09:48 +110.565065 17.366500 2023-09-20-01:10:00 +110.565064 17.366495 2023-09-20-01:10:06 +110.565060 17.366491 2023-09-20-01:10:12 +110.565058 17.366486 2023-09-20-01:10:18 +110.565054 17.366480 2023-09-20-01:10:24 +110.565049 17.366476 2023-09-20-01:10:30 +110.565043 17.366471 2023-09-20-01:10:36 +110.565037 17.366464 2023-09-20-01:10:42 +110.565032 17.366458 2023-09-20-01:10:48 +110.565026 17.366449 2023-09-20-01:11:00 +110.565020 17.366442 2023-09-20-01:11:06 +110.565018 17.366432 2023-09-20-01:11:12 +110.565017 17.366424 2023-09-20-01:11:18 +110.565016 17.366416 2023-09-20-01:11:24 +110.565015 17.366406 2023-09-20-01:11:30 +110.565018 17.366399 2023-09-20-01:11:36 +110.565023 17.366392 2023-09-20-01:11:42 +110.565028 17.366387 2023-09-20-01:11:48 +110.565029 17.366401 2023-09-20-01:11:54 +110.565034 17.366384 2023-09-20-01:12:00 +110.565040 17.366382 2023-09-20-01:12:06 +110.565045 17.366379 2023-09-20-01:12:12 +110.565049 17.366374 2023-09-20-01:12:18 +110.565054 17.366371 2023-09-20-01:12:24 +110.565058 17.366360 2023-09-20-01:12:30 +110.565060 17.366359 2023-09-20-01:12:36 +110.565062 17.366354 2023-09-20-01:12:42 +110.565064 17.366350 2023-09-20-01:12:48 +110.565067 17.366346 2023-09-20-01:12:54 +110.565071 17.366341 2023-09-20-01:13:00 +110.565074 17.366338 2023-09-20-01:13:06 +110.565077 17.366332 2023-09-20-01:13:12 +110.565082 17.366327 2023-09-20-01:13:18 +110.565088 17.366320 2023-09-20-01:13:30 +110.565093 17.366314 2023-09-20-01:13:36 +110.565099 17.366309 2023-09-20-01:13:42 +110.565108 17.366302 2023-09-20-01:13:48 +110.565117 17.366295 2023-09-20-01:13:54 +110.565125 17.366289 2023-09-20-01:14:00 +110.565134 17.366284 2023-09-20-01:14:06 +110.565143 17.366279 2023-09-20-01:14:12 +110.565150 17.366274 2023-09-20-01:14:18 +110.565156 17.366266 2023-09-20-01:14:24 +110.565163 17.366262 2023-09-20-01:14:30 +110.565171 17.366255 2023-09-20-01:14:36 +110.565175 17.366246 2023-09-20-01:14:42 +110.565180 17.366238 2023-09-20-01:14:48 +110.565183 17.366225 2023-09-20-01:15:00 +110.565184 17.366214 2023-09-20-01:15:06 +110.565186 17.366203 2023-09-20-01:15:12 +110.565184 17.366191 2023-09-20-01:15:18 +110.565182 17.366183 2023-09-20-01:15:24 +110.565180 17.366174 2023-09-20-01:15:30 +110.565177 17.366167 2023-09-20-01:15:36 +110.565174 17.366161 2023-09-20-01:15:42 +110.565169 17.366155 2023-09-20-01:15:48 +110.565160 17.366150 2023-09-20-01:16:00 +110.565152 17.366145 2023-09-20-01:16:06 +110.565143 17.366140 2023-09-20-01:16:12 +110.565134 17.366137 2023-09-20-01:16:18 +110.565125 17.366135 2023-09-20-01:16:24 +110.565113 17.366134 2023-09-20-01:16:30 +110.565104 17.366133 2023-09-20-01:16:36 +110.565097 17.366133 2023-09-20-01:16:42 +110.565089 17.366133 2023-09-20-01:16:48 +110.565081 17.366132 2023-09-20-01:17:00 +110.565068 17.366131 2023-09-20-01:17:42 +110.565059 17.366132 2023-09-20-01:17:48 +110.565050 17.366132 2023-09-20-01:18:00 +110.565039 17.366134 2023-09-20-01:18:06 +110.565028 17.366135 2023-09-20-01:18:12 +110.565019 17.366135 2023-09-20-01:18:18 +110.565014 17.366133 2023-09-20-01:18:24 +110.565010 17.366131 2023-09-20-01:18:30 +110.565005 17.366128 2023-09-20-01:18:36 +110.565000 17.366125 2023-09-20-01:18:42 +110.564998 17.366120 2023-09-20-01:18:48 +110.564993 17.366115 2023-09-20-01:19:00 +110.564987 17.366113 2023-09-20-01:19:06 +110.564980 17.366109 2023-09-20-01:19:12 +110.564973 17.366104 2023-09-20-01:19:18 +110.564969 17.366097 2023-09-20-01:19:24 +110.564965 17.366090 2023-09-20-01:19:30 +110.564961 17.366084 2023-09-20-01:19:36 +110.564959 17.366080 2023-09-20-01:19:42 +110.564956 17.366074 2023-09-20-01:19:48 +110.564955 17.366069 2023-09-20-01:20:00 +110.564953 17.366065 2023-09-20-01:20:06 +110.564949 17.366063 2023-09-20-01:20:12 +110.564947 17.366063 2023-09-20-01:20:18 +110.564945 17.366062 2023-09-20-01:20:24 +110.564941 17.366060 2023-09-20-01:20:30 +110.564937 17.366062 2023-09-20-01:20:36 +110.564932 17.366064 2023-09-20-01:20:42 +110.564923 17.366068 2023-09-20-01:21:00 +110.564917 17.366069 2023-09-20-01:21:06 +110.564908 17.366070 2023-09-20-01:21:12 +110.564901 17.366073 2023-09-20-01:21:18 +110.564893 17.366075 2023-09-20-01:21:24 +110.564885 17.366076 2023-09-20-01:21:30 +110.564878 17.366078 2023-09-20-01:21:36 +110.564871 17.366079 2023-09-20-01:21:42 +110.564867 17.366081 2023-09-20-01:21:48 +110.564858 17.366083 2023-09-20-01:22:00 +110.564850 17.366085 2023-09-20-01:22:06 +110.564842 17.366087 2023-09-20-01:22:12 +110.564833 17.366087 2023-09-20-01:22:18 +110.564826 17.366086 2023-09-20-01:22:24 +110.564817 17.366084 2023-09-20-01:22:30 +110.564812 17.366083 2023-09-20-01:22:36 +110.564806 17.366079 2023-09-20-01:22:42 +110.564804 17.366076 2023-09-20-01:22:48 +110.564800 17.366070 2023-09-20-01:23:00 +110.564796 17.366066 2023-09-20-01:23:06 +110.564796 17.366060 2023-09-20-01:23:12 +110.564794 17.366052 2023-09-20-01:23:18 +110.564794 17.366045 2023-09-20-01:23:24 +110.564792 17.366038 2023-09-20-01:23:30 +110.564792 17.366031 2023-09-20-01:23:36 +110.564792 17.366025 2023-09-20-01:23:42 +110.564793 17.366019 2023-09-20-01:23:48 +110.564791 17.366016 2023-09-20-01:24:00 +110.564792 17.366013 2023-09-20-01:24:06 +110.564789 17.366010 2023-09-20-01:24:12 +110.564787 17.366008 2023-09-20-01:24:18 +110.564786 17.366009 2023-09-20-01:24:24 +110.564782 17.366010 2023-09-20-01:24:30 +110.564781 17.366007 2023-09-20-01:24:36 +110.564776 17.366008 2023-09-20-01:24:42 +110.564773 17.366007 2023-09-20-01:24:48 +110.564768 17.366006 2023-09-20-01:25:00 +110.564761 17.366002 2023-09-20-01:25:06 +110.564757 17.365999 2023-09-20-01:25:12 +110.564752 17.365994 2023-09-20-01:25:18 +110.564746 17.365990 2023-09-20-01:25:24 +110.564740 17.365985 2023-09-20-01:25:30 +110.564737 17.365981 2023-09-20-01:25:36 +110.564734 17.365977 2023-09-20-01:25:42 +110.564728 17.365973 2023-09-20-01:25:48 +110.564716 17.365964 2023-09-20-01:26:18 +110.564712 17.365959 2023-09-20-01:26:24 +110.564706 17.365953 2023-09-20-01:26:30 +110.564699 17.365947 2023-09-20-01:26:36 +110.564689 17.365945 2023-09-20-01:26:42 +110.564684 17.365941 2023-09-20-01:26:48 +110.564679 17.365937 2023-09-20-01:27:00 +110.564674 17.365935 2023-09-20-01:27:06 +110.564667 17.365933 2023-09-20-01:27:12 +110.564661 17.365936 2023-09-20-01:27:18 +110.564658 17.365934 2023-09-20-01:27:24 +110.564652 17.365933 2023-09-20-01:27:30 +110.564649 17.365934 2023-09-20-01:27:36 +110.564646 17.365932 2023-09-20-01:27:42 +110.564643 17.365934 2023-09-20-01:27:48 +110.564640 17.365930 2023-09-20-01:28:00 +110.564639 17.365927 2023-09-20-01:28:06 +110.564638 17.365924 2023-09-20-01:28:12 +110.564639 17.365921 2023-09-20-01:28:18 +110.564636 17.365915 2023-09-20-01:28:24 +110.564636 17.365910 2023-09-20-01:28:30 +110.564635 17.365908 2023-09-20-01:28:36 +110.564636 17.365905 2023-09-20-01:28:42 +110.564636 17.365901 2023-09-20-01:28:48 +110.564633 17.365893 2023-09-20-01:29:00 +110.564634 17.365890 2023-09-20-01:29:06 +110.564636 17.365883 2023-09-20-01:29:12 +110.564641 17.365879 2023-09-20-01:29:18 +110.564645 17.365872 2023-09-20-01:29:24 +110.564653 17.365867 2023-09-20-01:29:30 +110.564667 17.365869 2023-09-20-01:29:36 +110.564677 17.365873 2023-09-20-01:29:42 +110.564690 17.365887 2023-09-20-01:29:48 +110.564697 17.365904 2023-09-20-01:30:00 +110.564695 17.365987 2023-09-20-01:30:24 +110.564707 17.365992 2023-09-20-01:30:30 +110.564702 17.366011 2023-09-20-01:30:36 +110.564711 17.366041 2023-09-20-01:30:42 +110.564706 17.366044 2023-09-20-01:30:48 +110.564726 17.366058 2023-09-20-01:31:00 +110.564742 17.366092 2023-09-20-01:31:06 +110.564756 17.366130 2023-09-20-01:31:12 +110.564776 17.366173 2023-09-20-01:31:18 +110.564797 17.366217 2023-09-20-01:31:24 +110.564818 17.366263 2023-09-20-01:31:30 +110.564837 17.366306 2023-09-20-01:31:36 +110.564852 17.366349 2023-09-20-01:31:42 +110.564867 17.366392 2023-09-20-01:31:48 +110.564881 17.366442 2023-09-20-01:32:00 +110.564890 17.366478 2023-09-20-01:32:06 +110.564891 17.366541 2023-09-20-01:32:12 +110.564889 17.366585 2023-09-20-01:32:18 +110.564890 17.366622 2023-09-20-01:32:24 +110.564888 17.366657 2023-09-20-01:32:30 +110.564884 17.366684 2023-09-20-01:32:36 +110.564872 17.366713 2023-09-20-01:32:42 +110.564870 17.366726 2023-09-20-01:32:48 +110.564866 17.366737 2023-09-20-01:33:00 +110.564867 17.366721 2023-09-20-01:33:06 +110.564864 17.366724 2023-09-20-01:33:12 +110.564866 17.366723 2023-09-20-01:33:18 +110.564874 17.366727 2023-09-20-01:33:24 +110.564878 17.366727 2023-09-20-01:33:30 +110.564892 17.366728 2023-09-20-01:33:36 +110.564902 17.366745 2023-09-20-01:33:42 +110.564914 17.366764 2023-09-20-01:33:48 +110.564937 17.366794 2023-09-20-01:34:00 +110.564957 17.366819 2023-09-20-01:34:06 +110.564975 17.366846 2023-09-20-01:34:12 +110.564993 17.366873 2023-09-20-01:34:18 +110.565009 17.366899 2023-09-20-01:34:24 +110.565023 17.366925 2023-09-20-01:34:30 +110.565037 17.366947 2023-09-20-01:34:36 +110.565050 17.366971 2023-09-20-01:34:42 +110.565064 17.366992 2023-09-20-01:34:48 +110.565065 17.367048 2023-09-20-01:35:00 +110.565071 17.367088 2023-09-20-01:35:06 +110.565075 17.367126 2023-09-20-01:35:12 +110.565075 17.367163 2023-09-20-01:35:18 +110.565074 17.367206 2023-09-20-01:35:24 +110.565069 17.367241 2023-09-20-01:35:30 +110.565067 17.367263 2023-09-20-01:35:36 +110.565063 17.367280 2023-09-20-01:35:42 +110.565058 17.367298 2023-09-20-01:35:48 +110.565059 17.367318 2023-09-20-01:36:00 +110.565065 17.367305 2023-09-20-01:36:06 +110.565069 17.367302 2023-09-20-01:36:12 +110.565070 17.367296 2023-09-20-01:36:18 +110.565074 17.367291 2023-09-20-01:36:24 +110.565080 17.367284 2023-09-20-01:36:30 +110.565088 17.367273 2023-09-20-01:36:36 +110.565085 17.367271 2023-09-20-01:36:42 +110.565084 17.367276 2023-09-20-01:36:48 +110.565085 17.367277 2023-09-20-01:37:00 +110.565086 17.367276 2023-09-20-01:37:06 +110.565089 17.367276 2023-09-20-01:37:12 +110.565086 17.367276 2023-09-20-01:37:18 +110.565088 17.367281 2023-09-20-01:37:24 +110.565087 17.367284 2023-09-20-01:37:30 +110.565088 17.367288 2023-09-20-01:37:36 +110.565097 17.367317 2023-09-20-01:38:00 +110.565105 17.367342 2023-09-20-01:38:06 +110.565118 17.367370 2023-09-20-01:38:12 +110.565131 17.367437 2023-09-20-01:38:18 +110.565150 17.367455 2023-09-20-01:38:24 +110.565168 17.367529 2023-09-20-01:38:30 +110.565188 17.367577 2023-09-20-01:38:36 +110.565207 17.367594 2023-09-20-01:38:42 +110.565225 17.367661 2023-09-20-01:38:48 +110.565242 17.367697 2023-09-20-01:39:00 +110.565259 17.367749 2023-09-20-01:39:06 +110.565273 17.367788 2023-09-20-01:39:12 +110.565283 17.367828 2023-09-20-01:39:18 +110.565296 17.367883 2023-09-20-01:39:24 +110.565304 17.367923 2023-09-20-01:39:30 +110.565311 17.367962 2023-09-20-01:39:36 +110.565320 17.368003 2023-09-20-01:39:42 +110.565326 17.368042 2023-09-20-01:39:48 +110.565333 17.368096 2023-09-20-01:40:00 +110.565335 17.368140 2023-09-20-01:40:06 +110.565337 17.368188 2023-09-20-01:40:12 +110.565335 17.368238 2023-09-20-01:40:18 +110.565332 17.368289 2023-09-20-01:40:24 +110.565324 17.368315 2023-09-20-01:40:30 +110.565319 17.368365 2023-09-20-01:40:36 +110.565314 17.368404 2023-09-20-01:40:42 +110.565308 17.368438 2023-09-20-01:40:48 +110.565298 17.368478 2023-09-20-01:41:00 +110.565286 17.368511 2023-09-20-01:41:06 +110.565276 17.368560 2023-09-20-01:41:12 +110.565263 17.368597 2023-09-20-01:41:18 +110.565247 17.368632 2023-09-20-01:41:24 +110.565226 17.368669 2023-09-20-01:41:30 +110.565205 17.368705 2023-09-20-01:41:36 +110.565185 17.368744 2023-09-20-01:41:42 +110.565166 17.368781 2023-09-20-01:41:48 +110.565142 17.368818 2023-09-20-01:42:00 +110.565120 17.368853 2023-09-20-01:42:06 +110.565107 17.368890 2023-09-20-01:42:12 +110.565092 17.368921 2023-09-20-01:42:18 +110.565078 17.368952 2023-09-20-01:42:24 +110.565066 17.368982 2023-09-20-01:42:30 +110.565061 17.369010 2023-09-20-01:42:36 +110.565050 17.369033 2023-09-20-01:42:42 +110.565046 17.369062 2023-09-20-01:42:48 +110.565036 17.369100 2023-09-20-01:43:00 +110.565030 17.369132 2023-09-20-01:43:06 +110.565030 17.369165 2023-09-20-01:43:12 +110.565023 17.369200 2023-09-20-01:43:18 +110.565019 17.369232 2023-09-20-01:43:24 +110.565013 17.369263 2023-09-20-01:43:30 +110.565010 17.369287 2023-09-20-01:43:36 +110.565009 17.369314 2023-09-20-01:43:42 +110.565006 17.369339 2023-09-20-01:43:48 +110.565002 17.369374 2023-09-20-01:44:00 +110.564999 17.369408 2023-09-20-01:44:06 +110.564996 17.369441 2023-09-20-01:44:12 +110.564988 17.369474 2023-09-20-01:44:18 +110.564981 17.369507 2023-09-20-01:44:24 +110.564975 17.369539 2023-09-20-01:44:30 +110.564971 17.369560 2023-09-20-01:44:36 +110.564965 17.369583 2023-09-20-01:44:42 +110.564956 17.369602 2023-09-20-01:44:48 +110.564956 17.369625 2023-09-20-01:45:00 +110.564949 17.369643 2023-09-20-01:45:06 +110.564942 17.369662 2023-09-20-01:45:12 +110.564939 17.369685 2023-09-20-01:45:18 +110.564933 17.369703 2023-09-20-01:45:24 +110.564931 17.369725 2023-09-20-01:45:30 +110.564924 17.369747 2023-09-20-01:45:36 +110.564923 17.369766 2023-09-20-01:45:42 +110.564920 17.369787 2023-09-20-01:45:48 +110.564917 17.369814 2023-09-20-01:46:00 +110.564911 17.369839 2023-09-20-01:46:06 +110.564883 17.369859 2023-09-20-01:46:18 +110.564867 17.369880 2023-09-20-01:46:24 +110.564849 17.369905 2023-09-20-01:46:30 +110.564833 17.369931 2023-09-20-01:46:36 +110.564815 17.369952 2023-09-20-01:46:42 +110.564795 17.369975 2023-09-20-01:46:48 +110.564784 17.370004 2023-09-20-01:47:00 +110.564776 17.370028 2023-09-20-01:47:06 +110.564767 17.370053 2023-09-20-01:47:12 +110.564759 17.370078 2023-09-20-01:47:18 +110.564749 17.370104 2023-09-20-01:47:24 +110.564739 17.370129 2023-09-20-01:47:30 +110.564729 17.370154 2023-09-20-01:47:36 +110.564718 17.370177 2023-09-20-01:47:42 +110.564708 17.370197 2023-09-20-01:47:48 +110.564695 17.370226 2023-09-20-01:48:00 +110.564684 17.370248 2023-09-20-01:48:06 +110.564672 17.370271 2023-09-20-01:48:12 +110.564661 17.370291 2023-09-20-01:48:18 +110.564651 17.370314 2023-09-20-01:48:24 +110.564639 17.370339 2023-09-20-01:48:30 +110.564626 17.370360 2023-09-20-01:48:36 +110.564617 17.370384 2023-09-20-01:48:42 +110.564607 17.370408 2023-09-20-01:48:48 +110.564592 17.370445 2023-09-20-01:49:00 +110.564578 17.370473 2023-09-20-01:49:06 +110.564563 17.370502 2023-09-20-01:49:12 +110.564549 17.370532 2023-09-20-01:49:18 +110.564537 17.370559 2023-09-20-01:49:24 +110.564522 17.370584 2023-09-20-01:49:30 +110.564512 17.370605 2023-09-20-01:49:36 +110.564500 17.370625 2023-09-20-01:49:42 +110.564488 17.370646 2023-09-20-01:49:48 +110.564477 17.370670 2023-09-20-01:50:00 +110.564462 17.370691 2023-09-20-01:50:06 +110.564451 17.370715 2023-09-20-01:50:12 +110.564435 17.370735 2023-09-20-01:50:18 +110.564416 17.370755 2023-09-20-01:50:24 +110.564406 17.370775 2023-09-20-01:50:30 +110.564393 17.370791 2023-09-20-01:50:36 +110.564390 17.370803 2023-09-20-01:50:42 +110.564380 17.370815 2023-09-20-01:50:48 +110.564368 17.370831 2023-09-20-01:51:00 +110.564364 17.370847 2023-09-20-01:51:06 +110.564353 17.370862 2023-09-20-01:51:12 +110.564346 17.370876 2023-09-20-01:51:18 +110.564329 17.370890 2023-09-20-01:51:24 +110.564322 17.370902 2023-09-20-01:51:30 +110.564315 17.370917 2023-09-20-01:51:36 +110.564304 17.370930 2023-09-20-01:51:42 +110.564297 17.370941 2023-09-20-01:51:48 +110.564287 17.370959 2023-09-20-01:52:00 +110.564286 17.370976 2023-09-20-01:52:06 +110.564275 17.370996 2023-09-20-01:52:12 +110.564267 17.371012 2023-09-20-01:52:18 +110.564264 17.371030 2023-09-20-01:52:24 +110.564258 17.371049 2023-09-20-01:52:30 +110.564252 17.371067 2023-09-20-01:52:36 +110.564247 17.371085 2023-09-20-01:52:42 +110.564247 17.371101 2023-09-20-01:52:48 +110.564242 17.371131 2023-09-20-01:53:00 +110.564234 17.371152 2023-09-20-01:53:06 +110.564225 17.371180 2023-09-20-01:53:12 +110.564221 17.371202 2023-09-20-01:53:18 +110.564221 17.371224 2023-09-20-01:53:24 +110.564210 17.371247 2023-09-20-01:53:30 +110.564205 17.371261 2023-09-20-01:53:36 +110.564196 17.371282 2023-09-20-01:53:42 +110.564199 17.371294 2023-09-20-01:53:48 +110.564197 17.371307 2023-09-20-01:54:00 +110.564195 17.371324 2023-09-20-01:54:06 +110.564198 17.371334 2023-09-20-01:54:12 +110.564202 17.371354 2023-09-20-01:54:18 +110.564203 17.371367 2023-09-20-01:54:24 +110.564212 17.371377 2023-09-20-01:54:30 +110.564215 17.371395 2023-09-20-01:54:36 +110.564221 17.371408 2023-09-20-01:54:42 +110.564224 17.371423 2023-09-20-01:54:48 +110.564229 17.371436 2023-09-20-01:55:00 +110.564233 17.371449 2023-09-20-01:55:06 +110.564235 17.371464 2023-09-20-01:55:12 +110.564240 17.371477 2023-09-20-01:55:18 +110.564253 17.371491 2023-09-20-01:55:24 +110.564261 17.371504 2023-09-20-01:55:30 +110.564268 17.371515 2023-09-20-01:55:36 +110.564275 17.371530 2023-09-20-01:55:42 +110.564288 17.371551 2023-09-20-01:55:48 +110.564292 17.371581 2023-09-20-01:56:00 +110.564296 17.371606 2023-09-20-01:56:06 +110.564295 17.371633 2023-09-20-01:56:12 +110.564304 17.371662 2023-09-20-01:56:18 +110.564300 17.371691 2023-09-20-01:56:24 +110.564297 17.371720 2023-09-20-01:56:30 +110.564302 17.371740 2023-09-20-01:56:36 +110.564297 17.371762 2023-09-20-01:56:42 +110.564296 17.371783 2023-09-20-01:56:48 +110.564295 17.371810 2023-09-20-01:57:00 +110.564291 17.371831 2023-09-20-01:57:06 +110.564293 17.371849 2023-09-20-01:57:12 +110.564284 17.371870 2023-09-20-01:57:18 +110.564283 17.371887 2023-09-20-01:57:24 +110.564280 17.371909 2023-09-20-01:57:30 +110.564277 17.371924 2023-09-20-01:57:36 +110.564272 17.371941 2023-09-20-01:57:42 +110.564268 17.371962 2023-09-20-01:57:48 +110.564268 17.371979 2023-09-20-01:58:00 +110.564265 17.371999 2023-09-20-01:58:06 +110.564262 17.372014 2023-09-20-01:58:12 +110.564255 17.372032 2023-09-20-01:58:18 +110.564248 17.372049 2023-09-20-01:58:24 +110.564247 17.372066 2023-09-20-01:58:30 +110.564235 17.372083 2023-09-20-01:58:36 +110.564232 17.372095 2023-09-20-01:58:42 +110.564228 17.372109 2023-09-20-01:58:48 +110.564227 17.372131 2023-09-20-01:59:00 +110.564221 17.372151 2023-09-20-01:59:06 +110.564217 17.372164 2023-09-20-01:59:12 +110.564213 17.372181 2023-09-20-01:59:18 +110.564211 17.372202 2023-09-20-01:59:24 +110.564203 17.372223 2023-09-20-01:59:30 +110.564188 17.372240 2023-09-20-01:59:36 +110.564183 17.372256 2023-09-20-01:59:42 +110.564178 17.372273 2023-09-20-01:59:48 +110.564171 17.372297 2023-09-20-02:00:00 +110.564157 17.372317 2023-09-20-02:00:06 +110.564149 17.372336 2023-09-20-02:00:12 +110.564139 17.372361 2023-09-20-02:00:18 +110.564133 17.372381 2023-09-20-02:00:24 +110.564125 17.372401 2023-09-20-02:00:30 +110.564112 17.372419 2023-09-20-02:00:36 +110.564106 17.372434 2023-09-20-02:00:42 +110.564093 17.372452 2023-09-20-02:00:48 +110.564088 17.372467 2023-09-20-02:01:00 +110.564078 17.372483 2023-09-20-02:01:06 +110.564070 17.372497 2023-09-20-02:01:12 +110.564060 17.372510 2023-09-20-02:01:18 +110.564060 17.372522 2023-09-20-02:01:24 +110.564056 17.372535 2023-09-20-02:01:30 +110.564047 17.372545 2023-09-20-02:01:36 +110.564048 17.372557 2023-09-20-02:01:42 +110.564046 17.372564 2023-09-20-02:01:48 +110.564049 17.372574 2023-09-20-02:02:00 +110.564048 17.372588 2023-09-20-02:02:06 +110.564056 17.372600 2023-09-20-02:02:12 +110.564054 17.372618 2023-09-20-02:02:18 +110.564063 17.372635 2023-09-20-02:02:24 +110.564068 17.372647 2023-09-20-02:02:30 +110.564074 17.372661 2023-09-20-02:02:36 +110.564079 17.372678 2023-09-20-02:02:42 +110.564086 17.372691 2023-09-20-02:02:48 +110.564097 17.372701 2023-09-20-02:03:00 +110.564101 17.372712 2023-09-20-02:03:06 +110.564109 17.372718 2023-09-20-02:03:12 +110.564106 17.372729 2023-09-20-02:03:18 +110.564115 17.372734 2023-09-20-02:03:24 +110.564116 17.372741 2023-09-20-02:03:30 +110.564119 17.372744 2023-09-20-02:03:36 +110.564122 17.372745 2023-09-20-02:03:42 +110.564125 17.372750 2023-09-20-02:03:48 +110.564123 17.372754 2023-09-20-02:04:00 +110.564128 17.372757 2023-09-20-02:04:06 +110.564130 17.372757 2023-09-20-02:04:12 +110.564131 17.372758 2023-09-20-02:04:18 +110.564130 17.372765 2023-09-20-02:04:24 +110.564129 17.372764 2023-09-20-02:04:30 +110.564131 17.372763 2023-09-20-02:04:36 +110.564130 17.372768 2023-09-20-02:04:42 +110.564131 17.372770 2023-09-20-02:04:48 +110.564126 17.372775 2023-09-20-02:05:00 +110.564127 17.372775 2023-09-20-02:05:06 +110.564125 17.372779 2023-09-20-02:05:12 +110.564123 17.372784 2023-09-20-02:05:18 +110.564118 17.372783 2023-09-20-02:05:24 +110.564109 17.372787 2023-09-20-02:05:30 +110.564109 17.372786 2023-09-20-02:05:36 +110.564104 17.372791 2023-09-20-02:05:42 +110.564102 17.372789 2023-09-20-02:05:48 +110.564097 17.372790 2023-09-20-02:06:00 +110.564093 17.372791 2023-09-20-02:06:06 +110.564091 17.372790 2023-09-20-02:06:12 +110.564090 17.372790 2023-09-20-02:06:18 +110.564084 17.372792 2023-09-20-02:06:24 +110.564083 17.372791 2023-09-20-02:06:30 +110.564083 17.372789 2023-09-20-02:06:36 +110.564083 17.372788 2023-09-20-02:06:42 +110.564084 17.372790 2023-09-20-02:06:48 +110.564083 17.372791 2023-09-20-02:07:00 +110.564084 17.372789 2023-09-20-02:07:06 +110.564085 17.372791 2023-09-20-02:07:12 +110.564082 17.372794 2023-09-20-02:07:18 +110.564084 17.372796 2023-09-20-02:07:24 +110.564085 17.372797 2023-09-20-02:07:30 +110.564085 17.372797 2023-09-20-02:07:36 +110.564090 17.372798 2023-09-20-02:07:42 +110.564086 17.372797 2023-09-20-02:07:48 +110.564085 17.372797 2023-09-20-02:08:00 +110.564091 17.372798 2023-09-20-02:08:06 +110.564089 17.372799 2023-09-20-02:08:12 +110.564086 17.372801 2023-09-20-02:08:18 +110.564081 17.372804 2023-09-20-02:08:24 +110.564080 17.372805 2023-09-20-02:08:30 +110.564079 17.372810 2023-09-20-02:08:36 +110.564074 17.372812 2023-09-20-02:08:42 +110.564072 17.372813 2023-09-20-02:08:54 +110.564066 17.372818 2023-09-20-02:09:00 +110.564068 17.372822 2023-09-20-02:09:06 +110.564067 17.372825 2023-09-20-02:09:12 +110.564063 17.372826 2023-09-20-02:09:18 +110.564068 17.372828 2023-09-20-02:09:24 +110.564058 17.372830 2023-09-20-02:09:30 +110.564061 17.372827 2023-09-20-02:09:36 +110.564060 17.372830 2023-09-20-02:09:42 +110.564058 17.372832 2023-09-20-02:09:48 +110.564070 17.372840 2023-09-20-02:10:00 +110.564076 17.372844 2023-09-20-02:10:06 +110.564089 17.372853 2023-09-20-02:10:12 +110.564103 17.372861 2023-09-20-02:10:18 +110.564117 17.372870 2023-09-20-02:10:24 +110.564135 17.372875 2023-09-20-02:10:30 +110.564150 17.372881 2023-09-20-02:10:36 +110.564163 17.372889 2023-09-20-02:10:42 +110.564176 17.372895 2023-09-20-02:10:48 +110.564191 17.372906 2023-09-20-02:11:00 +110.564206 17.372908 2023-09-20-02:11:06 +110.564219 17.372919 2023-09-20-02:11:12 +110.564230 17.372925 2023-09-20-02:11:18 +110.564244 17.372932 2023-09-20-02:11:24 +110.564258 17.372938 2023-09-20-02:11:30 +110.564274 17.372941 2023-09-20-02:11:36 +110.564284 17.372946 2023-09-20-02:11:42 +110.564299 17.372953 2023-09-20-02:11:48 +110.564316 17.372959 2023-09-20-02:12:00 +110.564332 17.372967 2023-09-20-02:12:06 +110.564343 17.372973 2023-09-20-02:12:12 +110.564359 17.372984 2023-09-20-02:12:18 +110.564368 17.372992 2023-09-20-02:12:24 +110.564383 17.373001 2023-09-20-02:12:30 +110.564398 17.373009 2023-09-20-02:12:36 +110.564406 17.373015 2023-09-20-02:12:42 +110.564418 17.373023 2023-09-20-02:12:48 +110.564431 17.373030 2023-09-20-02:13:00 +110.564442 17.373037 2023-09-20-02:13:06 +110.564451 17.373043 2023-09-20-02:13:12 +110.564459 17.373052 2023-09-20-02:13:18 +110.564463 17.373059 2023-09-20-02:13:24 +110.564472 17.373067 2023-09-20-02:13:30 +110.564481 17.373075 2023-09-20-02:13:36 +110.564482 17.373079 2023-09-20-02:13:42 +110.564495 17.373085 2023-09-20-02:13:48 +110.564498 17.373092 2023-09-20-02:14:00 +110.564506 17.373099 2023-09-20-02:14:06 +110.564513 17.373105 2023-09-20-02:14:12 +110.564516 17.373112 2023-09-20-02:14:18 +110.564519 17.373121 2023-09-20-02:14:24 +110.564524 17.373126 2023-09-20-02:14:30 +110.564526 17.373128 2023-09-20-02:14:36 +110.564530 17.373132 2023-09-20-02:14:42 +110.564537 17.373134 2023-09-20-02:14:48 +110.564534 17.373139 2023-09-20-02:15:00 +110.564541 17.373139 2023-09-20-02:15:06 +110.564540 17.373140 2023-09-20-02:15:12 +110.564543 17.373141 2023-09-20-02:15:18 +110.564542 17.373144 2023-09-20-02:15:24 +110.564539 17.373144 2023-09-20-02:15:30 +110.564536 17.373144 2023-09-20-02:15:36 +110.564527 17.373145 2023-09-20-02:15:42 +110.564524 17.373145 2023-09-20-02:15:48 +110.564518 17.373147 2023-09-20-02:16:00 +110.564509 17.373149 2023-09-20-02:16:06 +110.564503 17.373151 2023-09-20-02:16:12 +110.564495 17.373154 2023-09-20-02:16:18 +110.564486 17.373154 2023-09-20-02:16:24 +110.564481 17.373158 2023-09-20-02:16:30 +110.564472 17.373160 2023-09-20-02:16:36 +110.564467 17.373164 2023-09-20-02:16:42 +110.564461 17.373163 2023-09-20-02:16:48 +110.564459 17.373164 2023-09-20-02:17:00 +110.564456 17.373169 2023-09-20-02:17:06 +110.564456 17.373169 2023-09-20-02:17:12 +110.564458 17.373173 2023-09-20-02:17:18 +110.564459 17.373173 2023-09-20-02:17:24 +110.564462 17.373177 2023-09-20-02:17:30 +110.564464 17.373179 2023-09-20-02:17:36 +110.564468 17.373179 2023-09-20-02:17:42 +110.564473 17.373181 2023-09-20-02:17:48 +110.564475 17.373184 2023-09-20-02:18:00 +110.564482 17.373183 2023-09-20-02:18:06 +110.564487 17.373184 2023-09-20-02:18:12 +110.564494 17.373185 2023-09-20-02:18:18 +110.564495 17.373186 2023-09-20-02:18:24 +110.564501 17.373186 2023-09-20-02:18:30 +110.564505 17.373187 2023-09-20-02:18:36 +110.564508 17.373188 2023-09-20-02:18:42 +110.564514 17.373184 2023-09-20-02:18:48 +110.564516 17.373187 2023-09-20-02:18:54 +110.564520 17.373184 2023-09-20-02:19:00 +110.564523 17.373186 2023-09-20-02:19:06 +110.564523 17.373184 2023-09-20-02:19:12 +110.564528 17.373188 2023-09-20-02:19:18 +110.564528 17.373187 2023-09-20-02:19:24 +110.564530 17.373189 2023-09-20-02:19:30 +110.564534 17.373188 2023-09-20-02:19:36 +110.564532 17.373194 2023-09-20-02:19:42 +110.564537 17.373192 2023-09-20-02:19:48 +110.564536 17.373193 2023-09-20-02:19:54 +110.564539 17.373191 2023-09-20-02:20:00 +110.564538 17.373195 2023-09-20-02:20:12 +110.564538 17.373197 2023-09-20-02:20:18 +110.564542 17.373194 2023-09-20-02:20:24 +110.564563 17.373196 2023-09-20-02:20:42 +110.564582 17.373197 2023-09-20-02:21:42 +110.564583 17.373191 2023-09-20-02:22:42 +110.564583 17.373204 2023-09-20-02:23:42 +110.564599 17.373211 2023-09-20-02:24:36 +110.564605 17.373214 2023-09-20-02:24:42 +110.564600 17.373203 2023-09-20-02:25:00 +110.564595 17.373213 2023-09-20-02:25:06 +110.564600 17.373209 2023-09-20-02:25:18 +110.564592 17.373213 2023-09-20-02:25:30 +110.564591 17.373205 2023-09-20-02:25:42 +110.564590 17.373210 2023-09-20-02:25:48 +110.564584 17.373214 2023-09-20-02:26:06 +110.564588 17.373215 2023-09-20-02:26:12 +110.564572 17.373224 2023-09-20-02:26:18 +110.564575 17.373223 2023-09-20-02:26:30 +110.564556 17.373207 2023-09-20-02:26:36 +110.564571 17.373223 2023-09-20-02:26:42 +110.564559 17.373227 2023-09-20-02:26:48 +110.564556 17.373217 2023-09-20-02:26:54 +110.564568 17.373219 2023-09-20-02:27:00 +110.564566 17.373210 2023-09-20-02:27:06 +110.564561 17.373210 2023-09-20-02:27:12 +110.564562 17.373204 2023-09-20-02:27:18 +110.564554 17.373207 2023-09-20-02:27:24 +110.564555 17.373205 2023-09-20-02:27:30 +110.564545 17.373209 2023-09-20-02:27:36 +110.564555 17.373206 2023-09-20-02:27:42 +110.564556 17.373206 2023-09-20-02:27:48 +110.564553 17.373204 2023-09-20-02:27:54 +110.564552 17.373206 2023-09-20-02:28:00 +110.564553 17.373205 2023-09-20-02:28:06 +110.564552 17.373207 2023-09-20-02:28:12 +110.564550 17.373209 2023-09-20-02:28:18 +110.564546 17.373209 2023-09-20-02:28:24 +110.564542 17.373211 2023-09-20-02:28:30 +110.564540 17.373210 2023-09-20-02:28:36 +110.564537 17.373208 2023-09-20-02:28:42 +110.564533 17.373208 2023-09-20-02:28:48 +110.564533 17.373210 2023-09-20-02:29:00 +110.564530 17.373209 2023-09-20-02:29:06 +110.564532 17.373210 2023-09-20-02:29:12 +110.564534 17.373210 2023-09-20-02:29:18 +110.564534 17.373214 2023-09-20-02:29:24 +110.564536 17.373215 2023-09-20-02:29:30 +110.564541 17.373214 2023-09-20-02:29:36 +110.564541 17.373215 2023-09-20-02:29:42 +110.564542 17.373216 2023-09-20-02:29:48 +110.564541 17.373215 2023-09-20-02:30:00 +110.564542 17.373213 2023-09-20-02:30:06 +110.564542 17.373212 2023-09-20-02:30:12 +110.564543 17.373212 2023-09-20-02:30:18 +110.564542 17.373212 2023-09-20-02:30:24 +110.564543 17.373211 2023-09-20-02:30:30 +110.564548 17.373213 2023-09-20-02:30:36 +110.564551 17.373214 2023-09-20-02:30:42 +110.564552 17.373213 2023-09-20-02:30:48 +110.564558 17.373209 2023-09-20-02:31:00 +110.564559 17.373212 2023-09-20-02:31:06 +110.564564 17.373210 2023-09-20-02:31:12 +110.564565 17.373207 2023-09-20-02:31:18 +110.564564 17.373205 2023-09-20-02:31:24 +110.564568 17.373204 2023-09-20-02:31:30 +110.564569 17.373202 2023-09-20-02:31:36 +110.564573 17.373202 2023-09-20-02:31:42 +110.564571 17.373204 2023-09-20-02:31:48 +110.564574 17.373204 2023-09-20-02:32:00 +110.564581 17.373202 2023-09-20-02:32:06 +110.564581 17.373201 2023-09-20-02:32:12 +110.564580 17.373203 2023-09-20-02:32:18 +110.564584 17.373203 2023-09-20-02:32:24 +110.564585 17.373201 2023-09-20-02:32:30 +110.564593 17.373195 2023-09-20-02:32:36 +110.564595 17.373193 2023-09-20-02:32:42 +110.564592 17.373221 2023-09-20-02:32:48 +110.564601 17.373185 2023-09-20-02:33:00 +110.564582 17.373206 2023-09-20-02:33:12 +110.564595 17.373211 2023-09-20-02:33:18 +110.564584 17.373216 2023-09-20-02:33:24 +110.564583 17.373214 2023-09-20-02:33:30 +110.564577 17.373200 2023-09-20-02:33:36 +110.564572 17.373213 2023-09-20-02:33:42 +110.564574 17.373210 2023-09-20-02:33:48 +110.564574 17.373203 2023-09-20-02:34:00 +110.564576 17.373202 2023-09-20-02:34:06 +110.564570 17.373205 2023-09-20-02:34:12 +110.564576 17.373202 2023-09-20-02:34:18 +110.564570 17.373205 2023-09-20-02:34:24 +110.564561 17.373236 2023-09-20-02:34:30 +110.564589 17.373206 2023-09-20-02:34:36 +110.564568 17.373224 2023-09-20-02:34:42 +110.564629 17.373194 2023-09-20-02:34:48 +110.564608 17.373196 2023-09-20-02:35:00 +110.564612 17.373205 2023-09-20-02:35:06 +110.564624 17.373182 2023-09-20-02:35:12 +110.564620 17.373184 2023-09-20-02:35:24 +110.564630 17.373180 2023-09-20-02:35:30 +110.564607 17.373189 2023-09-20-02:35:36 +110.564608 17.373193 2023-09-20-02:35:42 +110.564610 17.373192 2023-09-20-02:35:48 +110.564612 17.373189 2023-09-20-02:36:00 +110.564613 17.373193 2023-09-20-02:36:06 +110.564610 17.373194 2023-09-20-02:36:12 +110.564613 17.373193 2023-09-20-02:36:18 +110.564616 17.373191 2023-09-20-02:36:24 +110.564619 17.373188 2023-09-20-02:36:30 +110.564620 17.373188 2023-09-20-02:36:36 +110.564616 17.373189 2023-09-20-02:36:42 +110.564621 17.373189 2023-09-20-02:36:48 +110.564619 17.373192 2023-09-20-02:37:00 +110.564620 17.373192 2023-09-20-02:37:06 +110.564617 17.373194 2023-09-20-02:37:12 +110.564615 17.373193 2023-09-20-02:37:18 +110.564616 17.373192 2023-09-20-02:37:24 +110.564615 17.373189 2023-09-20-02:37:30 +110.564615 17.373186 2023-09-20-02:37:36 +110.564615 17.373183 2023-09-20-02:37:42 +110.564614 17.373181 2023-09-20-02:37:48 +110.564619 17.373179 2023-09-20-02:38:00 +110.564618 17.373179 2023-09-20-02:38:06 +110.564617 17.373179 2023-09-20-02:38:12 +110.564622 17.373177 2023-09-20-02:38:18 +110.564620 17.373176 2023-09-20-02:38:24 +110.564622 17.373178 2023-09-20-02:38:30 +110.564619 17.373178 2023-09-20-02:38:36 +110.564619 17.373180 2023-09-20-02:38:42 +110.564618 17.373178 2023-09-20-02:38:48 +110.564615 17.373177 2023-09-20-02:39:00 +110.564618 17.373179 2023-09-20-02:39:06 +110.564618 17.373177 2023-09-20-02:39:12 +110.564621 17.373177 2023-09-20-02:39:18 +110.564626 17.373177 2023-09-20-02:39:24 +110.564619 17.373175 2023-09-20-02:39:30 +110.564619 17.373177 2023-09-20-02:39:36 +110.564620 17.373180 2023-09-20-02:39:42 +110.564619 17.373178 2023-09-20-02:39:48 +110.564619 17.373179 2023-09-20-02:40:00 +110.564615 17.373182 2023-09-20-02:40:06 +110.564616 17.373182 2023-09-20-02:40:12 +110.564617 17.373182 2023-09-20-02:40:18 +110.564618 17.373182 2023-09-20-02:40:24 +110.564619 17.373177 2023-09-20-02:40:30 +110.564618 17.373177 2023-09-20-02:40:36 +110.564621 17.373177 2023-09-20-02:40:42 +110.564618 17.373176 2023-09-20-02:40:48 +110.564619 17.373174 2023-09-20-02:41:00 +110.564620 17.373173 2023-09-20-02:41:06 +110.564616 17.373177 2023-09-20-02:41:12 +110.564615 17.373179 2023-09-20-02:41:18 +110.564615 17.373176 2023-09-20-02:41:24 +110.564613 17.373179 2023-09-20-02:41:30 +110.564612 17.373180 2023-09-20-02:41:36 +110.564613 17.373179 2023-09-20-02:41:42 +110.564615 17.373179 2023-09-20-02:41:48 +110.564612 17.373181 2023-09-20-02:41:54 +110.564612 17.373179 2023-09-20-02:42:00 +110.564613 17.373180 2023-09-20-02:42:06 +110.564614 17.373180 2023-09-20-02:42:12 +110.564614 17.373182 2023-09-20-02:42:18 +110.564609 17.373180 2023-09-20-02:42:24 +110.564610 17.373182 2023-09-20-02:42:30 +110.564613 17.373180 2023-09-20-02:42:36 +110.564614 17.373179 2023-09-20-02:42:42 +110.564612 17.373179 2023-09-20-02:42:48 +110.564613 17.373178 2023-09-20-02:43:00 +110.564618 17.373176 2023-09-20-02:43:06 +110.564620 17.373176 2023-09-20-02:43:12 +110.564623 17.373173 2023-09-20-02:43:18 +110.564622 17.373174 2023-09-20-02:43:24 +110.564622 17.373174 2023-09-20-02:43:30 +110.564621 17.373172 2023-09-20-02:43:36 +110.564625 17.373177 2023-09-20-02:43:42 +110.564626 17.373173 2023-09-20-02:43:48 +110.564623 17.373177 2023-09-20-02:44:00 +110.564621 17.373177 2023-09-20-02:44:06 +110.564620 17.373177 2023-09-20-02:44:12 +110.564623 17.373177 2023-09-20-02:44:18 +110.564622 17.373174 2023-09-20-02:44:24 +110.564621 17.373174 2023-09-20-02:44:30 +110.564622 17.373173 2023-09-20-02:44:36 +110.564620 17.373171 2023-09-20-02:44:48 +110.564621 17.373173 2023-09-20-02:44:54 +110.564622 17.373173 2023-09-20-02:45:00 +110.564616 17.373172 2023-09-20-02:45:06 +110.564615 17.373174 2023-09-20-02:45:12 +110.564611 17.373175 2023-09-20-02:45:18 +110.564618 17.373177 2023-09-20-02:45:24 +110.564616 17.373173 2023-09-20-02:45:30 +110.564615 17.373172 2023-09-20-02:45:36 +110.564617 17.373174 2023-09-20-02:45:42 +110.564616 17.373171 2023-09-20-02:45:48 +110.564621 17.373173 2023-09-20-02:46:00 +110.564618 17.373174 2023-09-20-02:46:06 +110.564616 17.373176 2023-09-20-02:46:12 +110.564618 17.373176 2023-09-20-02:46:18 +110.564618 17.373176 2023-09-20-02:46:24 +110.564617 17.373178 2023-09-20-02:46:30 +110.564619 17.373176 2023-09-20-02:46:36 +110.564615 17.373177 2023-09-20-02:46:42 +110.564618 17.373173 2023-09-20-02:46:48 +110.564614 17.373175 2023-09-20-02:47:00 +110.564615 17.373174 2023-09-20-02:47:06 +110.564618 17.373170 2023-09-20-02:47:12 +110.564615 17.373174 2023-09-20-02:47:18 +110.564611 17.373173 2023-09-20-02:47:24 +110.564616 17.373170 2023-09-20-02:47:30 +110.564615 17.373169 2023-09-20-02:47:36 +110.564614 17.373168 2023-09-20-02:47:42 +110.564614 17.373172 2023-09-20-02:47:48 +110.564615 17.373170 2023-09-20-02:48:00 +110.564618 17.373164 2023-09-20-02:48:06 +110.564613 17.373165 2023-09-20-02:48:12 +110.564616 17.373165 2023-09-20-02:48:18 +110.564622 17.373167 2023-09-20-02:48:24 +110.564617 17.373169 2023-09-20-02:48:30 +110.564620 17.373167 2023-09-20-02:48:36 +110.564619 17.373170 2023-09-20-02:48:42 +110.564622 17.373172 2023-09-20-02:48:48 +110.564618 17.373174 2023-09-20-02:49:00 +110.564617 17.373175 2023-09-20-02:49:06 +110.564616 17.373175 2023-09-20-02:49:12 +110.564612 17.373176 2023-09-20-02:49:18 +110.564613 17.373174 2023-09-20-02:49:24 +110.564614 17.373174 2023-09-20-02:49:30 +110.564613 17.373173 2023-09-20-02:49:36 +110.564610 17.373171 2023-09-20-02:49:42 +110.564613 17.373171 2023-09-20-02:49:48 +110.564613 17.373171 2023-09-20-02:50:00 +110.564610 17.373168 2023-09-20-02:50:06 +110.564609 17.373172 2023-09-20-02:50:12 +110.564612 17.373168 2023-09-20-02:50:18 +110.564613 17.373172 2023-09-20-02:50:24 +110.564610 17.373171 2023-09-20-02:50:30 +110.564608 17.373170 2023-09-20-02:50:36 +110.564610 17.373171 2023-09-20-02:50:42 +110.564610 17.373170 2023-09-20-02:50:48 +110.564608 17.373175 2023-09-20-02:51:00 +110.564607 17.373173 2023-09-20-02:51:06 +110.564609 17.373173 2023-09-20-02:51:12 +110.564610 17.373173 2023-09-20-02:51:18 +110.564613 17.373172 2023-09-20-02:51:24 +110.564612 17.373170 2023-09-20-02:51:30 +110.564613 17.373171 2023-09-20-02:51:36 +110.564616 17.373171 2023-09-20-02:51:42 +110.564613 17.373171 2023-09-20-02:51:48 +110.564611 17.373172 2023-09-20-02:52:00 +110.564608 17.373173 2023-09-20-02:52:06 +110.564605 17.373177 2023-09-20-02:52:12 +110.564607 17.373172 2023-09-20-02:52:18 +110.564604 17.373174 2023-09-20-02:52:24 +110.564606 17.373174 2023-09-20-02:52:30 +110.564608 17.373171 2023-09-20-02:52:36 +110.564611 17.373171 2023-09-20-02:52:42 +110.564614 17.373171 2023-09-20-02:52:48 +110.564611 17.373169 2023-09-20-02:53:00 +110.564614 17.373167 2023-09-20-02:53:06 +110.564610 17.373169 2023-09-20-02:53:12 +110.564609 17.373168 2023-09-20-02:53:18 +110.564611 17.373166 2023-09-20-02:53:24 +110.564612 17.373166 2023-09-20-02:53:36 +110.564611 17.373166 2023-09-20-02:53:42 +110.564614 17.373167 2023-09-20-02:53:48 +110.564614 17.373167 2023-09-20-02:54:00 +110.564617 17.373169 2023-09-20-02:54:06 +110.564616 17.373170 2023-09-20-02:54:12 +110.564616 17.373169 2023-09-20-02:54:18 +110.564616 17.373168 2023-09-20-02:54:24 +110.564617 17.373166 2023-09-20-02:54:30 +110.564620 17.373165 2023-09-20-02:54:36 +110.564619 17.373165 2023-09-20-02:54:42 +110.564616 17.373166 2023-09-20-02:54:48 +110.564616 17.373163 2023-09-20-02:55:00 +110.564618 17.373164 2023-09-20-02:55:06 +110.564619 17.373167 2023-09-20-02:55:12 +110.564615 17.373166 2023-09-20-02:55:18 +110.564618 17.373166 2023-09-20-02:55:24 +110.564619 17.373166 2023-09-20-02:55:30 +110.564621 17.373168 2023-09-20-02:55:36 +110.564620 17.373168 2023-09-20-02:55:42 +110.564618 17.373168 2023-09-20-02:55:48 +110.564622 17.373168 2023-09-20-02:56:00 +110.564620 17.373169 2023-09-20-02:56:06 +110.564618 17.373169 2023-09-20-02:56:12 +110.564620 17.373166 2023-09-20-02:56:18 +110.564620 17.373170 2023-09-20-02:56:24 +110.564624 17.373169 2023-09-20-02:56:30 +110.564623 17.373167 2023-09-20-02:56:36 +110.564619 17.373168 2023-09-20-02:56:42 +110.564624 17.373168 2023-09-20-02:56:48 +110.564621 17.373167 2023-09-20-02:57:00 +110.564622 17.373168 2023-09-20-02:57:06 +110.564620 17.373169 2023-09-20-02:57:12 +110.564617 17.373170 2023-09-20-02:57:18 +110.564617 17.373171 2023-09-20-02:57:24 +110.564616 17.373172 2023-09-20-02:57:30 +110.564613 17.373174 2023-09-20-02:57:36 +110.564614 17.373173 2023-09-20-02:57:42 +110.564613 17.373173 2023-09-20-02:57:48 +110.564612 17.373172 2023-09-20-02:58:00 +110.564612 17.373171 2023-09-20-02:58:06 +110.564613 17.373171 2023-09-20-02:58:12 +110.564613 17.373170 2023-09-20-02:58:18 +110.564611 17.373173 2023-09-20-02:58:24 +110.564609 17.373171 2023-09-20-02:58:30 +110.564609 17.373172 2023-09-20-02:58:36 +110.564615 17.373172 2023-09-20-02:58:42 +110.564613 17.373174 2023-09-20-02:58:48 +110.564614 17.373177 2023-09-20-02:59:00 +110.564613 17.373174 2023-09-20-02:59:06 +110.564616 17.373174 2023-09-20-02:59:12 +110.564617 17.373174 2023-09-20-02:59:18 +110.564615 17.373177 2023-09-20-02:59:24 +110.564616 17.373175 2023-09-20-02:59:30 +110.564618 17.373174 2023-09-20-02:59:36 +110.564617 17.373175 2023-09-20-02:59:42 +110.564620 17.373174 2023-09-20-02:59:48 +110.564619 17.373175 2023-09-20-03:00:00 +110.564620 17.373178 2023-09-20-03:00:06 +110.564620 17.373175 2023-09-20-03:00:12 +110.564618 17.373176 2023-09-20-03:00:18 +110.564614 17.373174 2023-09-20-03:00:24 +110.564616 17.373173 2023-09-20-03:00:30 +110.564615 17.373168 2023-09-20-03:00:36 +110.564613 17.373170 2023-09-20-03:00:42 +110.564618 17.373168 2023-09-20-03:00:48 +110.564616 17.373170 2023-09-20-03:01:00 +110.564617 17.373170 2023-09-20-03:01:06 +110.564616 17.373170 2023-09-20-03:01:12 +110.564617 17.373172 2023-09-20-03:01:18 +110.564619 17.373171 2023-09-20-03:01:24 +110.564619 17.373173 2023-09-20-03:01:30 +110.564619 17.373171 2023-09-20-03:01:36 +110.564620 17.373170 2023-09-20-03:01:42 +110.564623 17.373173 2023-09-20-03:01:48 +110.564627 17.373170 2023-09-20-03:02:00 +110.564624 17.373171 2023-09-20-03:02:06 +110.564624 17.373171 2023-09-20-03:02:12 +110.564623 17.373169 2023-09-20-03:02:18 +110.564625 17.373172 2023-09-20-03:02:24 +110.564624 17.373168 2023-09-20-03:02:30 +110.564626 17.373169 2023-09-20-03:02:36 +110.564622 17.373171 2023-09-20-03:02:42 +110.564624 17.373168 2023-09-20-03:02:48 +110.564623 17.373170 2023-09-20-03:02:54 +110.564619 17.373167 2023-09-20-03:03:00 +110.564621 17.373169 2023-09-20-03:03:06 +110.564621 17.373168 2023-09-20-03:03:12 +110.564619 17.373167 2023-09-20-03:03:18 +110.564620 17.373167 2023-09-20-03:03:24 +110.564619 17.373163 2023-09-20-03:03:30 +110.564622 17.373165 2023-09-20-03:03:36 +110.564621 17.373164 2023-09-20-03:03:42 +110.564616 17.373165 2023-09-20-03:03:48 +110.564618 17.373166 2023-09-20-03:04:00 +110.564617 17.373167 2023-09-20-03:04:06 +110.564619 17.373169 2023-09-20-03:04:12 +110.564619 17.373170 2023-09-20-03:04:18 +110.564615 17.373171 2023-09-20-03:04:24 +110.564622 17.373169 2023-09-20-03:04:30 +110.564619 17.373170 2023-09-20-03:04:36 +110.564620 17.373171 2023-09-20-03:04:42 +110.564622 17.373169 2023-09-20-03:04:48 +110.564622 17.373170 2023-09-20-03:05:00 +110.564624 17.373167 2023-09-20-03:05:06 +110.564626 17.373170 2023-09-20-03:05:12 +110.564624 17.373168 2023-09-20-03:05:18 +110.564627 17.373169 2023-09-20-03:05:24 +110.564628 17.373169 2023-09-20-03:05:30 +110.564628 17.373169 2023-09-20-03:05:36 +110.564622 17.373171 2023-09-20-03:05:42 +110.564623 17.373169 2023-09-20-03:05:48 +110.564623 17.373170 2023-09-20-03:06:00 +110.564624 17.373169 2023-09-20-03:06:06 +110.564619 17.373171 2023-09-20-03:06:12 +110.564623 17.373169 2023-09-20-03:06:18 +110.564624 17.373168 2023-09-20-03:06:24 +110.564621 17.373171 2023-09-20-03:06:30 +110.564621 17.373171 2023-09-20-03:06:36 +110.564620 17.373171 2023-09-20-03:06:42 +110.564622 17.373171 2023-09-20-03:06:48 +110.564620 17.373171 2023-09-20-03:07:00 +110.564617 17.373172 2023-09-20-03:07:06 +110.564619 17.373171 2023-09-20-03:07:12 +110.564619 17.373167 2023-09-20-03:07:18 +110.564619 17.373169 2023-09-20-03:07:24 +110.564618 17.373170 2023-09-20-03:07:30 +110.564620 17.373168 2023-09-20-03:07:36 +110.564620 17.373170 2023-09-20-03:07:42 +110.564619 17.373168 2023-09-20-03:07:48 +110.564620 17.373173 2023-09-20-03:08:00 +110.564621 17.373172 2023-09-20-03:08:06 +110.564621 17.373173 2023-09-20-03:08:12 +110.564620 17.373171 2023-09-20-03:08:18 +110.564619 17.373175 2023-09-20-03:08:24 +110.564623 17.373174 2023-09-20-03:08:30 +110.564626 17.373176 2023-09-20-03:08:36 +110.564619 17.373172 2023-09-20-03:08:54 +110.564618 17.373173 2023-09-20-03:09:00 +110.564618 17.373174 2023-09-20-03:09:06 +110.564618 17.373173 2023-09-20-03:09:12 +110.564618 17.373172 2023-09-20-03:09:18 +110.564615 17.373172 2023-09-20-03:09:24 +110.564617 17.373172 2023-09-20-03:09:30 +110.564615 17.373174 2023-09-20-03:09:36 +110.564615 17.373173 2023-09-20-03:09:42 +110.564632 17.373186 2023-09-20-03:09:54 +110.564629 17.373179 2023-09-20-03:10:00 +110.564627 17.373179 2023-09-20-03:10:06 +110.564626 17.373181 2023-09-20-03:10:12 +110.564627 17.373178 2023-09-20-03:10:18 +110.564612 17.373179 2023-09-20-03:24:54 +110.564614 17.373171 2023-09-20-03:25:00 +110.564628 17.373166 2023-09-20-03:25:06 +110.564613 17.373179 2023-09-20-03:25:12 +110.564614 17.373176 2023-09-20-03:25:24 +110.564613 17.373175 2023-09-20-03:25:30 +110.564613 17.373176 2023-09-20-03:25:36 +110.564564 17.373215 2023-09-20-03:25:48 +110.564591 17.373190 2023-09-20-03:26:00 +110.564589 17.373193 2023-09-20-03:26:06 +110.564597 17.373189 2023-09-20-03:26:12 +110.564593 17.373186 2023-09-20-03:26:18 +110.564593 17.373190 2023-09-20-03:26:24 +110.564615 17.373169 2023-09-20-03:26:30 +110.564617 17.373170 2023-09-20-03:26:36 +110.564617 17.373170 2023-09-20-03:26:42 +110.564611 17.373168 2023-09-20-03:26:48 +110.564614 17.373169 2023-09-20-03:26:54 +110.564616 17.373170 2023-09-20-03:27:00 +110.564614 17.373171 2023-09-20-03:27:06 +110.564615 17.373171 2023-09-20-03:27:12 +110.564616 17.373171 2023-09-20-03:27:18 +110.564615 17.373174 2023-09-20-03:27:24 +110.564616 17.373174 2023-09-20-03:27:30 +110.564615 17.373173 2023-09-20-03:27:36 +110.564611 17.373174 2023-09-20-03:27:42 +110.564615 17.373174 2023-09-20-03:27:48 +110.564609 17.373176 2023-09-20-03:27:54 +110.564610 17.373176 2023-09-20-03:28:00 +110.564611 17.373178 2023-09-20-03:28:06 +110.564612 17.373173 2023-09-20-03:28:12 +110.564611 17.373176 2023-09-20-03:28:18 +110.564609 17.373181 2023-09-20-03:28:30 +110.564614 17.373180 2023-09-20-03:28:36 +110.564618 17.373179 2023-09-20-03:28:42 +110.564617 17.373180 2023-09-20-03:28:48 +110.564617 17.373181 2023-09-20-03:28:54 +110.564618 17.373180 2023-09-20-03:29:00 +110.564620 17.373179 2023-09-20-03:29:06 +110.564622 17.373179 2023-09-20-03:29:12 +110.564617 17.373179 2023-09-20-03:29:18 +110.564616 17.373182 2023-09-20-03:29:30 +110.564611 17.373180 2023-09-20-03:29:36 +110.564613 17.373181 2023-09-20-03:29:42 +110.564611 17.373181 2023-09-20-03:29:48 +110.564609 17.373181 2023-09-20-03:29:54 +110.564607 17.373183 2023-09-20-03:30:00 +110.564611 17.373179 2023-09-20-03:30:06 +110.564613 17.373179 2023-09-20-03:30:12 +110.564612 17.373178 2023-09-20-03:30:18 +110.564614 17.373177 2023-09-20-03:30:30 +110.564615 17.373178 2023-09-20-03:30:36 +110.564614 17.373176 2023-09-20-03:30:42 +110.564614 17.373177 2023-09-20-03:30:48 +110.564616 17.373173 2023-09-20-03:30:54 +110.564617 17.373173 2023-09-20-03:31:00 +110.564615 17.373174 2023-09-20-03:31:06 +110.564618 17.373174 2023-09-20-03:31:12 +110.564619 17.373175 2023-09-20-03:31:18 +110.564615 17.373176 2023-09-20-03:31:30 +110.564616 17.373174 2023-09-20-03:31:36 +110.564610 17.373171 2023-09-20-03:31:42 +110.564610 17.373170 2023-09-20-03:31:48 +110.564614 17.373170 2023-09-20-03:31:54 +110.564609 17.373166 2023-09-20-03:32:00 +110.564613 17.373165 2023-09-20-03:32:06 +110.564610 17.373166 2023-09-20-03:32:12 +110.564609 17.373164 2023-09-20-03:32:18 +110.564614 17.373167 2023-09-20-03:32:30 +110.564611 17.373166 2023-09-20-03:32:36 +110.564613 17.373168 2023-09-20-03:32:42 +110.564611 17.373166 2023-09-20-03:32:48 +110.564614 17.373168 2023-09-20-03:32:54 +110.564616 17.373166 2023-09-20-03:33:00 +110.564616 17.373169 2023-09-20-03:33:06 +110.564616 17.373169 2023-09-20-03:33:12 +110.564610 17.373172 2023-09-20-03:33:18 +110.564603 17.373172 2023-09-20-03:33:30 +110.564601 17.373171 2023-09-20-03:33:36 +110.564603 17.373177 2023-09-20-03:33:42 +110.564598 17.373177 2023-09-20-03:33:48 +110.564596 17.373176 2023-09-20-03:33:54 +110.564605 17.373173 2023-09-20-03:34:06 +110.564609 17.373174 2023-09-20-03:34:12 +110.564607 17.373171 2023-09-20-03:34:18 +110.564605 17.373171 2023-09-20-03:34:30 +110.564605 17.373172 2023-09-20-03:34:36 +110.564608 17.373169 2023-09-20-03:34:42 +110.564602 17.373168 2023-09-20-03:34:48 +110.564603 17.373166 2023-09-20-03:34:54 +110.564604 17.373169 2023-09-20-03:35:00 +110.564605 17.373166 2023-09-20-03:35:06 +110.564607 17.373167 2023-09-20-03:35:12 +110.564605 17.373170 2023-09-20-03:35:18 +110.564609 17.373171 2023-09-20-03:35:30 +110.564612 17.373171 2023-09-20-03:35:36 +110.564610 17.373172 2023-09-20-03:35:42 +110.564608 17.373172 2023-09-20-03:35:48 +110.564607 17.373175 2023-09-20-03:35:54 +110.564609 17.373175 2023-09-20-03:36:00 +110.564609 17.373177 2023-09-20-03:36:06 +110.564606 17.373180 2023-09-20-03:36:12 +110.564608 17.373177 2023-09-20-03:36:18 +110.564609 17.373178 2023-09-20-03:36:30 +110.564615 17.373179 2023-09-20-03:36:36 +110.564614 17.373178 2023-09-20-03:36:42 +110.564616 17.373176 2023-09-20-03:36:48 +110.564618 17.373172 2023-09-20-03:36:54 +110.564617 17.373174 2023-09-20-03:37:00 +110.564620 17.373172 2023-09-20-03:37:06 +110.564616 17.373174 2023-09-20-03:37:12 +110.564619 17.373173 2023-09-20-03:37:18 +110.564619 17.373174 2023-09-20-03:37:30 +110.564615 17.373174 2023-09-20-03:37:36 +110.564612 17.373177 2023-09-20-03:37:42 +110.564611 17.373176 2023-09-20-03:37:48 +110.564611 17.373175 2023-09-20-03:37:54 +110.564612 17.373175 2023-09-20-03:38:00 +110.564611 17.373177 2023-09-20-03:38:06 +110.564611 17.373175 2023-09-20-03:38:12 +110.564612 17.373175 2023-09-20-03:38:18 +110.564614 17.373173 2023-09-20-03:38:30 +110.564613 17.373178 2023-09-20-03:38:36 +110.564613 17.373178 2023-09-20-03:38:42 +110.564612 17.373181 2023-09-20-03:38:48 +110.564615 17.373182 2023-09-20-03:38:54 +110.564612 17.373181 2023-09-20-03:39:00 +110.564612 17.373181 2023-09-20-03:39:06 +110.564611 17.373178 2023-09-20-03:39:12 +110.564613 17.373181 2023-09-20-03:39:18 +110.564616 17.373179 2023-09-20-03:39:30 +110.564610 17.373178 2023-09-20-03:39:36 +110.564613 17.373178 2023-09-20-03:39:42 +110.564613 17.373180 2023-09-20-03:39:48 +110.564616 17.373180 2023-09-20-03:39:54 +110.564618 17.373177 2023-09-20-03:40:00 +110.564618 17.373179 2023-09-20-03:40:06 +110.564618 17.373177 2023-09-20-03:40:12 +110.564620 17.373175 2023-09-20-03:40:18 +110.564626 17.373175 2023-09-20-03:40:30 +110.564622 17.373177 2023-09-20-03:40:36 +110.564623 17.373176 2023-09-20-03:40:42 +110.564626 17.373176 2023-09-20-03:40:48 +110.564627 17.373176 2023-09-20-03:40:54 +110.564630 17.373181 2023-09-20-03:41:00 +110.564628 17.373181 2023-09-20-03:41:06 +110.564631 17.373180 2023-09-20-03:41:12 +110.564628 17.373180 2023-09-20-03:41:18 +110.564624 17.373182 2023-09-20-03:41:30 +110.564624 17.373183 2023-09-20-03:41:36 +110.564623 17.373183 2023-09-20-03:41:42 +110.564622 17.373181 2023-09-20-03:41:48 +110.564617 17.373179 2023-09-20-03:41:54 +110.564619 17.373183 2023-09-20-03:42:00 +110.564620 17.373183 2023-09-20-03:42:06 +110.564621 17.373182 2023-09-20-03:42:12 +110.564621 17.373183 2023-09-20-03:42:18 +110.564623 17.373182 2023-09-20-03:42:30 +110.564625 17.373182 2023-09-20-03:42:36 +110.564625 17.373180 2023-09-20-03:42:42 +110.564629 17.373180 2023-09-20-03:42:48 +110.564629 17.373176 2023-09-20-03:42:54 +110.564631 17.373175 2023-09-20-03:43:00 +110.564630 17.373177 2023-09-20-03:43:06 +110.564631 17.373176 2023-09-20-03:43:12 +110.564627 17.373174 2023-09-20-03:43:18 +110.564627 17.373174 2023-09-20-03:43:30 +110.564626 17.373175 2023-09-20-03:43:36 +110.564627 17.373177 2023-09-20-03:43:42 +110.564626 17.373175 2023-09-20-03:43:48 +110.564625 17.373173 2023-09-20-03:43:54 +110.564625 17.373180 2023-09-20-03:44:00 +110.564626 17.373175 2023-09-20-03:44:06 +110.564630 17.373179 2023-09-20-03:44:12 +110.564627 17.373177 2023-09-20-03:44:18 +110.564626 17.373176 2023-09-20-03:44:30 +110.564625 17.373178 2023-09-20-03:44:36 +110.564625 17.373177 2023-09-20-03:44:42 +110.564622 17.373177 2023-09-20-03:44:48 +110.564616 17.373179 2023-09-20-03:44:54 +110.564616 17.373179 2023-09-20-03:45:00 +110.564614 17.373181 2023-09-20-03:45:06 +110.564615 17.373180 2023-09-20-03:45:12 +110.564618 17.373177 2023-09-20-03:45:18 +110.564620 17.373179 2023-09-20-03:45:24 +110.564619 17.373178 2023-09-20-03:45:30 +110.564624 17.373173 2023-09-20-03:45:36 +110.564624 17.373174 2023-09-20-03:45:42 +110.564627 17.373174 2023-09-20-03:45:48 +110.564622 17.373175 2023-09-20-03:45:54 +110.564621 17.373175 2023-09-20-03:46:00 +110.564623 17.373174 2023-09-20-03:46:06 +110.564615 17.373173 2023-09-20-03:46:12 +110.564620 17.373176 2023-09-20-03:46:18 +110.564615 17.373174 2023-09-20-03:46:24 +110.564618 17.373174 2023-09-20-03:46:30 +110.564618 17.373176 2023-09-20-03:46:36 +110.564618 17.373176 2023-09-20-03:46:42 +110.564621 17.373175 2023-09-20-03:46:48 +110.564614 17.373177 2023-09-20-03:46:54 +110.564617 17.373178 2023-09-20-03:47:00 +110.564618 17.373178 2023-09-20-03:47:06 +110.564617 17.373179 2023-09-20-03:47:12 +110.564620 17.373177 2023-09-20-03:47:18 +110.564618 17.373177 2023-09-20-03:47:24 +110.564618 17.373179 2023-09-20-03:47:30 +110.564624 17.373179 2023-09-20-03:47:36 +110.564620 17.373177 2023-09-20-03:47:42 +110.564624 17.373177 2023-09-20-03:47:48 +110.564622 17.373177 2023-09-20-03:47:54 +110.564626 17.373176 2023-09-20-03:48:00 +110.564625 17.373174 2023-09-20-03:48:06 +110.564626 17.373174 2023-09-20-03:48:12 +110.564628 17.373172 2023-09-20-03:48:18 +110.564627 17.373169 2023-09-20-03:48:30 +110.564630 17.373169 2023-09-20-03:48:36 +110.564633 17.373169 2023-09-20-03:48:42 +110.564633 17.373171 2023-09-20-03:48:48 +110.564637 17.373170 2023-09-20-03:48:54 +110.564639 17.373171 2023-09-20-03:49:00 +110.564636 17.373175 2023-09-20-03:49:06 +110.564633 17.373175 2023-09-20-03:49:12 +110.564631 17.373177 2023-09-20-03:49:18 +110.564626 17.373178 2023-09-20-03:49:30 +110.564626 17.373178 2023-09-20-03:49:36 +110.564623 17.373179 2023-09-20-03:49:42 +110.564622 17.373182 2023-09-20-03:49:48 +110.564622 17.373179 2023-09-20-03:49:54 +110.564620 17.373180 2023-09-20-03:50:00 +110.564623 17.373178 2023-09-20-03:50:06 +110.564624 17.373178 2023-09-20-03:50:12 +110.564625 17.373177 2023-09-20-03:50:18 +110.564625 17.373175 2023-09-20-03:50:30 +110.564627 17.373176 2023-09-20-03:50:36 +110.564628 17.373171 2023-09-20-03:50:42 +110.564628 17.373171 2023-09-20-03:50:48 +110.564628 17.373170 2023-09-20-03:50:54 +110.564629 17.373169 2023-09-20-03:51:00 +110.564626 17.373169 2023-09-20-03:51:06 +110.564623 17.373165 2023-09-20-03:51:12 +110.564626 17.373163 2023-09-20-03:51:18 +110.564630 17.373161 2023-09-20-03:51:30 +110.564632 17.373158 2023-09-20-03:51:36 +110.564637 17.373153 2023-09-20-03:51:42 +110.564643 17.373147 2023-09-20-03:51:48 +110.564656 17.373143 2023-09-20-03:51:54 +110.564661 17.373136 2023-09-20-03:52:00 +110.564671 17.373130 2023-09-20-03:52:06 +110.564681 17.373126 2023-09-20-03:52:12 +110.564691 17.373121 2023-09-20-03:52:18 +110.564709 17.373118 2023-09-20-03:52:30 +110.564720 17.373117 2023-09-20-03:52:36 +110.564731 17.373112 2023-09-20-03:52:42 +110.564747 17.373111 2023-09-20-03:52:48 +110.564759 17.373113 2023-09-20-03:52:54 +110.564772 17.373112 2023-09-20-03:53:00 +110.564782 17.373115 2023-09-20-03:53:06 +110.564793 17.373115 2023-09-20-03:53:12 +110.564803 17.373120 2023-09-20-03:53:18 +110.564813 17.373126 2023-09-20-03:53:30 +110.564822 17.373129 2023-09-20-03:53:36 +110.564832 17.373132 2023-09-20-03:53:42 +110.564842 17.373138 2023-09-20-03:53:48 +110.564848 17.373141 2023-09-20-03:53:54 +110.564855 17.373152 2023-09-20-03:54:00 +110.564859 17.373155 2023-09-20-03:54:06 +110.564866 17.373161 2023-09-20-03:54:12 +110.564865 17.373165 2023-09-20-03:54:18 +110.564866 17.373178 2023-09-20-03:54:30 +110.564869 17.373187 2023-09-20-03:54:36 +110.564870 17.373194 2023-09-20-03:54:42 +110.564887 17.373164 2023-09-20-03:54:48 +110.564881 17.373191 2023-09-20-03:54:54 +110.564905 17.373165 2023-09-20-03:55:00 +110.564917 17.373151 2023-09-20-03:55:06 +110.564905 17.373176 2023-09-20-03:55:12 +110.564906 17.373184 2023-09-20-03:55:18 +110.564920 17.373176 2023-09-20-03:55:30 +110.564930 17.373167 2023-09-20-03:55:36 +110.564930 17.373178 2023-09-20-03:55:42 +110.564928 17.373191 2023-09-20-03:55:48 +110.564942 17.373178 2023-09-20-03:55:54 +110.564953 17.373174 2023-09-20-03:56:00 +110.564954 17.373182 2023-09-20-03:56:06 +110.564952 17.373184 2023-09-20-03:56:12 +110.564956 17.373188 2023-09-20-03:56:18 +110.564958 17.373196 2023-09-20-03:56:30 +110.564960 17.373203 2023-09-20-03:56:36 +110.564955 17.373208 2023-09-20-03:56:42 +110.564958 17.373215 2023-09-20-03:56:48 +110.564957 17.373224 2023-09-20-03:56:54 +110.564954 17.373235 2023-09-20-03:57:00 +110.564947 17.373244 2023-09-20-03:57:06 +110.564946 17.373249 2023-09-20-03:57:12 +110.564944 17.373255 2023-09-20-03:57:18 +110.564939 17.373262 2023-09-20-03:57:30 +110.564935 17.373271 2023-09-20-03:57:36 +110.564931 17.373278 2023-09-20-03:57:42 +110.564931 17.373285 2023-09-20-03:57:48 +110.564918 17.373293 2023-09-20-03:57:54 +110.564912 17.373300 2023-09-20-03:58:00 +110.564906 17.373309 2023-09-20-03:58:06 +110.564900 17.373315 2023-09-20-03:58:12 +110.564898 17.373318 2023-09-20-03:58:18 +110.564888 17.373321 2023-09-20-03:58:30 +110.564882 17.373325 2023-09-20-03:58:42 +110.564879 17.373329 2023-09-20-03:58:48 +110.564872 17.373331 2023-09-20-03:58:54 +110.564869 17.373333 2023-09-20-03:59:00 +110.564861 17.373336 2023-09-20-03:59:06 +110.564858 17.373339 2023-09-20-03:59:12 +110.564855 17.373335 2023-09-20-03:59:18 +110.564853 17.373336 2023-09-20-03:59:30 +110.564852 17.373331 2023-09-20-03:59:36 +110.564850 17.373327 2023-09-20-03:59:42 +110.564844 17.373314 2023-09-20-03:59:54 +110.564840 17.373319 2023-09-20-04:00:00 +110.564834 17.373317 2023-09-20-04:00:06 +110.564832 17.373316 2023-09-20-04:00:12 +110.564826 17.373313 2023-09-20-04:00:18 +110.564822 17.373310 2023-09-20-04:00:30 +110.564815 17.373309 2023-09-20-04:00:36 +110.564814 17.373302 2023-09-20-04:00:42 +110.564807 17.373295 2023-09-20-04:00:48 +110.564804 17.373292 2023-09-20-04:00:54 +110.564801 17.373288 2023-09-20-04:01:00 +110.564799 17.373284 2023-09-20-04:01:06 +110.564801 17.373284 2023-09-20-04:01:12 +110.564794 17.373281 2023-09-20-04:01:18 +110.564792 17.373280 2023-09-20-04:01:30 +110.564785 17.373279 2023-09-20-04:01:36 +110.564781 17.373274 2023-09-20-04:01:42 +110.564778 17.373270 2023-09-20-04:01:48 +110.564770 17.373264 2023-09-20-04:01:54 +110.564765 17.373264 2023-09-20-04:02:00 +110.564762 17.373262 2023-09-20-04:02:06 +110.564756 17.373258 2023-09-20-04:02:12 +110.564754 17.373256 2023-09-20-04:02:18 +110.564748 17.373255 2023-09-20-04:02:30 +110.564746 17.373254 2023-09-20-04:02:36 +110.564741 17.373254 2023-09-20-04:02:42 +110.564738 17.373246 2023-09-20-04:02:48 +110.564736 17.373247 2023-09-20-04:02:54 +110.564730 17.373247 2023-09-20-04:03:00 +110.564729 17.373244 2023-09-20-04:03:06 +110.564724 17.373240 2023-09-20-04:03:12 +110.564718 17.373240 2023-09-20-04:03:18 +110.564711 17.373242 2023-09-20-04:03:30 +110.564707 17.373241 2023-09-20-04:03:36 +110.564701 17.373237 2023-09-20-04:03:42 +110.564696 17.373237 2023-09-20-04:03:48 +110.564692 17.373237 2023-09-20-04:03:54 +110.564689 17.373233 2023-09-20-04:04:00 +110.564686 17.373235 2023-09-20-04:04:06 +110.564683 17.373230 2023-09-20-04:04:12 +110.564681 17.373229 2023-09-20-04:04:18 +110.564676 17.373223 2023-09-20-04:04:30 +110.564673 17.373225 2023-09-20-04:04:36 +110.564667 17.373225 2023-09-20-04:04:42 +110.564662 17.373223 2023-09-20-04:04:48 +110.564657 17.373224 2023-09-20-04:04:54 +110.564652 17.373222 2023-09-20-04:05:00 +110.564651 17.373226 2023-09-20-04:05:06 +110.564644 17.373226 2023-09-20-04:05:12 +110.564638 17.373220 2023-09-20-04:05:18 +110.564637 17.373223 2023-09-20-04:05:30 +110.564635 17.373220 2023-09-20-04:05:36 +110.564632 17.373220 2023-09-20-04:05:42 +110.564630 17.373217 2023-09-20-04:05:48 +110.564630 17.373219 2023-09-20-04:05:54 +110.564628 17.373219 2023-09-20-04:06:00 +110.564626 17.373215 2023-09-20-04:06:06 +110.564629 17.373218 2023-09-20-04:06:12 +110.564629 17.373217 2023-09-20-04:06:18 +110.564629 17.373220 2023-09-20-04:06:30 +110.564630 17.373218 2023-09-20-04:06:36 +110.564632 17.373222 2023-09-20-04:06:42 +110.564633 17.373223 2023-09-20-04:06:48 +110.564634 17.373223 2023-09-20-04:06:54 +110.564634 17.373223 2023-09-20-04:07:00 +110.564636 17.373223 2023-09-20-04:07:06 +110.564637 17.373224 2023-09-20-04:07:12 +110.564637 17.373222 2023-09-20-04:07:18 +110.564639 17.373226 2023-09-20-04:07:30 +110.564638 17.373229 2023-09-20-04:07:36 +110.564639 17.373229 2023-09-20-04:07:42 +110.564639 17.373232 2023-09-20-04:07:48 +110.564638 17.373236 2023-09-20-04:07:54 +110.564637 17.373238 2023-09-20-04:08:00 +110.564637 17.373240 2023-09-20-04:08:06 +110.564638 17.373241 2023-09-20-04:08:12 +110.564638 17.373242 2023-09-20-04:08:18 +110.564639 17.373246 2023-09-20-04:08:30 +110.564642 17.373243 2023-09-20-04:08:36 +110.564646 17.373244 2023-09-20-04:08:42 +110.564646 17.373252 2023-09-20-04:08:48 +110.564647 17.373253 2023-09-20-04:08:54 +110.564647 17.373255 2023-09-20-04:09:00 +110.564649 17.373253 2023-09-20-04:09:06 +110.564650 17.373253 2023-09-20-04:09:12 +110.564648 17.373257 2023-09-20-04:09:18 +110.564653 17.373257 2023-09-20-04:09:30 +110.564652 17.373255 2023-09-20-04:09:36 +110.564653 17.373260 2023-09-20-04:09:42 +110.564652 17.373263 2023-09-20-04:09:48 +110.564650 17.373269 2023-09-20-04:09:54 +110.564650 17.373271 2023-09-20-04:10:00 +110.564649 17.373269 2023-09-20-04:10:06 +110.564649 17.373273 2023-09-20-04:10:12 +110.564651 17.373276 2023-09-20-04:10:19 +110.564651 17.373274 2023-09-20-04:10:31 +110.564653 17.373280 2023-09-20-04:10:37 +110.564654 17.373280 2023-09-20-04:10:43 +110.564656 17.373285 2023-09-20-04:10:49 +110.564655 17.373285 2023-09-20-04:10:55 +110.564652 17.373283 2023-09-20-04:11:07 +110.564652 17.373286 2023-09-20-04:11:13 +110.564652 17.373285 2023-09-20-04:11:19 +110.564654 17.373284 2023-09-20-04:11:31 +110.564653 17.373287 2023-09-20-04:11:37 +110.564650 17.373288 2023-09-20-04:11:43 +110.564652 17.373293 2023-09-20-04:11:49 +110.564651 17.373296 2023-09-20-04:11:55 +110.564653 17.373292 2023-09-20-04:12:01 +110.564649 17.373292 2023-09-20-04:12:07 +110.564646 17.373295 2023-09-20-04:12:13 +110.564650 17.373298 2023-09-20-04:12:19 +110.564649 17.373303 2023-09-20-04:12:31 +110.564647 17.373304 2023-09-20-04:12:37 +110.564650 17.373309 2023-09-20-04:12:43 +110.564650 17.373308 2023-09-20-04:12:55 +110.564653 17.373309 2023-09-20-04:13:01 +110.564651 17.373311 2023-09-20-04:13:07 +110.564653 17.373321 2023-09-20-04:13:37 +110.564651 17.373337 2023-09-20-04:13:49 +110.564654 17.373337 2023-09-20-04:13:55 +110.564653 17.373324 2023-09-20-04:14:07 +110.564663 17.373323 2023-09-20-04:14:13 +110.564654 17.373336 2023-09-20-04:14:19 +110.564646 17.373334 2023-09-20-04:14:31 +110.564648 17.373339 2023-09-20-04:14:37 +110.564648 17.373328 2023-09-20-04:14:43 +110.564651 17.373336 2023-09-20-04:14:49 +110.564649 17.373341 2023-09-20-04:15:01 +110.564650 17.373338 2023-09-20-04:15:13 +110.564652 17.373341 2023-09-20-04:15:19 +110.564653 17.373344 2023-09-20-04:15:31 +110.564652 17.373342 2023-09-20-04:15:37 +110.564646 17.373348 2023-09-20-04:16:13 +110.564634 17.373349 2023-09-20-04:16:19 +110.564644 17.373358 2023-09-20-04:16:37 +110.564638 17.373359 2023-09-20-04:16:43 +110.564641 17.373361 2023-09-20-04:16:55 +110.564637 17.373368 2023-09-20-04:17:07 +110.564643 17.373368 2023-09-20-04:17:13 +110.564642 17.373365 2023-09-20-04:17:31 +110.564640 17.373372 2023-09-20-04:17:43 +110.564637 17.373375 2023-09-20-04:17:49 +110.564634 17.373384 2023-09-20-04:18:13 +110.564637 17.373379 2023-09-20-04:18:19 +110.564719 17.373363 2023-09-20-04:19:37 +110.564719 17.373366 2023-09-20-04:19:49 +110.564621 17.373392 2023-09-20-04:19:55 +110.564613 17.373410 2023-09-20-04:20:19 +110.564610 17.373411 2023-09-20-04:20:43 +110.564606 17.373414 2023-09-20-04:20:55 +110.564610 17.373413 2023-09-20-04:21:07 +110.564605 17.373412 2023-09-20-04:21:13 +110.564606 17.373420 2023-09-20-04:21:31 +110.564604 17.373426 2023-09-20-04:21:37 +110.564607 17.373421 2023-09-20-04:21:49 +110.564605 17.373418 2023-09-20-04:22:01 +110.564603 17.373421 2023-09-20-04:22:07 +110.564590 17.373430 2023-09-20-04:24:07 +110.564671 17.373380 2023-09-20-04:25:31 +110.564673 17.373377 2023-09-20-04:25:37 +110.564667 17.373382 2023-09-20-04:25:43 +110.564668 17.373379 2023-09-20-04:26:13 +110.564670 17.373375 2023-09-20-04:26:19 +110.564662 17.373375 2023-09-20-04:26:31 +110.564669 17.373366 2023-09-20-04:26:37 +110.564660 17.373370 2023-09-20-04:26:43 +110.564652 17.373366 2023-09-20-04:27:01 +110.564657 17.373367 2023-09-20-04:27:07 +110.564661 17.373362 2023-09-20-04:27:13 +110.564656 17.373360 2023-09-20-04:27:37 +110.564649 17.373362 2023-09-20-04:27:43 +110.564659 17.373363 2023-09-20-04:27:49 +110.564656 17.373358 2023-09-20-04:27:55 +110.564652 17.373363 2023-09-20-04:28:13 +110.564641 17.373365 2023-09-20-04:28:37 +110.564635 17.373367 2023-09-20-04:28:43 +110.564631 17.373366 2023-09-20-04:28:55 +110.564624 17.373363 2023-09-20-04:29:13 +110.564623 17.373363 2023-09-20-04:29:19 +110.564620 17.373362 2023-09-20-04:29:31 +110.564618 17.373360 2023-09-20-04:29:37 +110.564615 17.373359 2023-09-20-04:29:49 +110.564612 17.373359 2023-09-20-04:29:55 +110.564610 17.373358 2023-09-20-04:30:01 +110.564606 17.373355 2023-09-20-04:30:07 +110.564605 17.373354 2023-09-20-04:30:13 +110.564601 17.373355 2023-09-20-04:30:19 +110.564596 17.373356 2023-09-20-04:30:31 +110.564595 17.373356 2023-09-20-04:30:37 +110.564591 17.373354 2023-09-20-04:30:43 +110.564590 17.373355 2023-09-20-04:30:49 +110.564588 17.373354 2023-09-20-04:30:55 +110.564588 17.373354 2023-09-20-04:31:01 +110.564586 17.373349 2023-09-20-04:31:07 +110.564585 17.373348 2023-09-20-04:31:13 +110.564583 17.373348 2023-09-20-04:31:19 +110.564584 17.373348 2023-09-20-04:31:31 +110.564581 17.373347 2023-09-20-04:31:37 +110.564578 17.373349 2023-09-20-04:31:43 +110.564578 17.373351 2023-09-20-04:31:49 +110.564577 17.373353 2023-09-20-04:31:55 +110.564574 17.373352 2023-09-20-04:32:01 +110.564573 17.373354 2023-09-20-04:32:07 +110.564568 17.373355 2023-09-20-04:32:13 +110.564567 17.373358 2023-09-20-04:32:19 +110.564565 17.373362 2023-09-20-04:32:31 +110.564577 17.373414 2023-09-20-04:33:01 +110.564585 17.373432 2023-09-20-04:33:19 +110.564604 17.373451 2023-09-20-04:33:31 +110.564619 17.373446 2023-09-20-04:33:37 +110.564625 17.373460 2023-09-20-04:33:43 +110.564639 17.373458 2023-09-20-04:33:49 +110.564645 17.373451 2023-09-20-04:33:55 +110.564637 17.373454 2023-09-20-04:34:01 +110.564649 17.373453 2023-09-20-04:34:07 +110.564663 17.373451 2023-09-20-04:34:19 +110.564655 17.373447 2023-09-20-04:34:31 +110.564658 17.373441 2023-09-20-04:34:37 +110.564655 17.373415 2023-09-20-04:34:49 +110.564669 17.373426 2023-09-20-04:34:55 +110.564675 17.373409 2023-09-20-04:35:01 +110.564685 17.373413 2023-09-20-04:35:07 +110.564688 17.373413 2023-09-20-04:35:13 +110.564704 17.373410 2023-09-20-04:35:19 +110.564706 17.373405 2023-09-20-04:35:37 +110.564714 17.373405 2023-09-20-04:35:43 +110.564721 17.373403 2023-09-20-04:35:49 +110.564729 17.373403 2023-09-20-04:35:55 +110.564733 17.373407 2023-09-20-04:36:01 +110.564733 17.373410 2023-09-20-04:36:07 +110.564737 17.373414 2023-09-20-04:36:19 +110.564738 17.373416 2023-09-20-04:36:37 +110.564738 17.373419 2023-09-20-04:36:43 +110.564740 17.373424 2023-09-20-04:36:49 +110.564741 17.373430 2023-09-20-04:37:01 +110.564740 17.373432 2023-09-20-04:37:07 +110.564744 17.373441 2023-09-20-04:37:13 +110.564746 17.373447 2023-09-20-04:37:19 +110.564746 17.373454 2023-09-20-04:37:31 +110.564744 17.373458 2023-09-20-04:37:37 +110.564745 17.373465 2023-09-20-04:37:43 +110.564751 17.373468 2023-09-20-04:37:49 +110.564749 17.373471 2023-09-20-04:38:01 +110.564751 17.373479 2023-09-20-04:38:07 +110.564754 17.373484 2023-09-20-04:38:19 +110.564760 17.373486 2023-09-20-04:38:31 +110.564757 17.373496 2023-09-20-04:38:37 +110.564758 17.373502 2023-09-20-04:38:43 +110.564762 17.373510 2023-09-20-04:38:49 +110.564761 17.373512 2023-09-20-04:38:55 +110.564760 17.373517 2023-09-20-04:39:01 +110.564756 17.373525 2023-09-20-04:39:07 +110.564757 17.373528 2023-09-20-04:39:13 +110.564757 17.373529 2023-09-20-04:39:19 +110.564757 17.373531 2023-09-20-04:39:31 +110.564752 17.373535 2023-09-20-04:39:37 +110.564753 17.373535 2023-09-20-04:39:43 +110.564752 17.373537 2023-09-20-04:39:49 +110.564750 17.373534 2023-09-20-04:39:55 +110.564751 17.373535 2023-09-20-04:40:01 +110.564749 17.373537 2023-09-20-04:40:07 +110.564750 17.373535 2023-09-20-04:40:13 +110.564746 17.373540 2023-09-20-04:40:19 +110.564747 17.373543 2023-09-20-04:40:31 +110.564743 17.373548 2023-09-20-04:40:37 +110.564739 17.373552 2023-09-20-04:40:43 +110.564739 17.373553 2023-09-20-04:40:49 +110.564733 17.373555 2023-09-20-04:40:55 +110.564733 17.373557 2023-09-20-04:41:01 +110.564728 17.373561 2023-09-20-04:41:07 +110.564728 17.373558 2023-09-20-04:41:13 +110.564728 17.373560 2023-09-20-04:41:19 +110.564725 17.373559 2023-09-20-04:41:31 +110.564722 17.373562 2023-09-20-04:41:37 +110.564720 17.373562 2023-09-20-04:41:43 +110.564719 17.373562 2023-09-20-04:41:49 +110.564717 17.373568 2023-09-20-04:41:55 +110.564717 17.373562 2023-09-20-04:42:01 +110.564709 17.373556 2023-09-20-04:42:13 +110.564718 17.373564 2023-09-20-04:42:19 +110.564722 17.373568 2023-09-20-04:42:31 +110.564726 17.373569 2023-09-20-04:42:37 +110.564724 17.373564 2023-09-20-04:42:49 +110.564710 17.373566 2023-09-20-04:42:55 +110.564718 17.373559 2023-09-20-04:43:01 +110.564699 17.373569 2023-09-20-04:43:07 +110.564697 17.373555 2023-09-20-04:43:13 +110.564712 17.373564 2023-09-20-04:43:19 +110.564709 17.373566 2023-09-20-04:43:31 +110.564703 17.373571 2023-09-20-04:43:37 +110.564702 17.373571 2023-09-20-04:43:43 +110.564723 17.373565 2023-09-20-04:43:49 +110.564710 17.373577 2023-09-20-04:43:55 +110.564705 17.373582 2023-09-20-04:44:01 +110.564705 17.373585 2023-09-20-04:44:07 +110.564705 17.373587 2023-09-20-04:44:13 +110.564704 17.373593 2023-09-20-04:44:19 +110.564689 17.373601 2023-09-20-04:44:31 +110.564686 17.373601 2023-09-20-04:44:37 +110.564685 17.373603 2023-09-20-04:44:43 +110.564678 17.373602 2023-09-20-04:44:49 +110.564673 17.373600 2023-09-20-04:45:01 +110.564666 17.373595 2023-09-20-04:45:07 +110.564661 17.373588 2023-09-20-04:45:13 +110.564655 17.373584 2023-09-20-04:45:19 +110.564642 17.373575 2023-09-20-04:45:31 +110.564633 17.373569 2023-09-20-04:45:37 +110.564615 17.373562 2023-09-20-04:45:43 +110.564600 17.373555 2023-09-20-04:45:55 +110.564589 17.373548 2023-09-20-04:46:01 +110.564590 17.373518 2023-09-20-04:46:07 +110.564569 17.373526 2023-09-20-04:46:13 +110.564557 17.373520 2023-09-20-04:46:19 +110.564537 17.373509 2023-09-20-04:46:31 +110.564525 17.373499 2023-09-20-04:46:37 +110.564508 17.373486 2023-09-20-04:46:43 +110.564482 17.373485 2023-09-20-04:46:49 +110.564413 17.373431 2023-09-20-04:47:01 +110.564383 17.373419 2023-09-20-04:47:13 +110.564357 17.373407 2023-09-20-04:47:19 +110.564331 17.373390 2023-09-20-04:47:37 +110.564336 17.373377 2023-09-20-04:47:55 +110.564330 17.373368 2023-09-20-04:48:01 +110.564323 17.373359 2023-09-20-04:48:07 +110.564320 17.373352 2023-09-20-04:48:19 +110.564322 17.373340 2023-09-20-04:48:25 +110.564321 17.373323 2023-09-20-04:48:31 +110.564328 17.373307 2023-09-20-04:48:37 +110.564332 17.373295 2023-09-20-04:48:43 +110.564334 17.373280 2023-09-20-04:48:49 +110.564340 17.373272 2023-09-20-04:48:55 +110.564344 17.373263 2023-09-20-04:49:01 +110.564352 17.373259 2023-09-20-04:49:07 +110.564358 17.373253 2023-09-20-04:49:13 +110.564365 17.373248 2023-09-20-04:49:19 +110.564374 17.373245 2023-09-20-04:49:31 +110.564375 17.373240 2023-09-20-04:49:37 +110.564385 17.373240 2023-09-20-04:49:43 +110.564384 17.373243 2023-09-20-04:49:49 +110.564388 17.373244 2023-09-20-04:49:55 +110.564408 17.373218 2023-09-20-04:50:01 +110.564402 17.373239 2023-09-20-04:50:13 +110.564406 17.373245 2023-09-20-04:50:19 +110.564410 17.373259 2023-09-20-04:50:31 +110.564416 17.373265 2023-09-20-04:50:37 +110.564425 17.373278 2023-09-20-04:50:49 +110.564425 17.373303 2023-09-20-04:50:55 +110.564435 17.373311 2023-09-20-04:51:01 +110.564464 17.373289 2023-09-20-04:51:07 +110.564461 17.373317 2023-09-20-04:51:13 +110.564490 17.373367 2023-09-20-04:51:31 +110.564494 17.373380 2023-09-20-04:51:37 +110.564501 17.373381 2023-09-20-04:51:43 +110.564509 17.373386 2023-09-20-04:51:49 +110.564518 17.373380 2023-09-20-04:51:55 +110.564526 17.373384 2023-09-20-04:52:01 +110.564517 17.373388 2023-09-20-04:52:07 +110.564525 17.373389 2023-09-20-04:52:13 +110.564535 17.373396 2023-09-20-04:52:31 +110.564543 17.373396 2023-09-20-04:52:37 +110.564549 17.373406 2023-09-20-04:52:43 +110.564555 17.373408 2023-09-20-04:52:49 +110.564561 17.373410 2023-09-20-04:52:55 +110.564566 17.373414 2023-09-20-04:53:01 +110.564568 17.373416 2023-09-20-04:53:07 +110.564571 17.373419 2023-09-20-04:53:13 +110.564573 17.373418 2023-09-20-04:53:19 +110.564575 17.373417 2023-09-20-04:53:31 +110.564573 17.373419 2023-09-20-04:53:37 +110.564575 17.373417 2023-09-20-04:53:43 +110.564580 17.373420 2023-09-20-04:54:01 +110.564581 17.373420 2023-09-20-04:54:07 +110.564581 17.373414 2023-09-20-04:54:19 +110.564578 17.373443 2023-09-20-04:54:31 +110.564581 17.373430 2023-09-20-04:54:37 +110.564579 17.373428 2023-09-20-04:54:43 +110.564582 17.373441 2023-09-20-04:54:49 +110.564578 17.373435 2023-09-20-04:54:55 +110.564580 17.373434 2023-09-20-04:55:01 +110.564582 17.373436 2023-09-20-04:55:07 +110.564582 17.373436 2023-09-20-04:55:13 +110.564582 17.373432 2023-09-20-04:55:31 +110.564582 17.373432 2023-09-20-04:55:43 +110.564582 17.373430 2023-09-20-04:55:49 +110.564587 17.373429 2023-09-20-04:55:55 +110.564589 17.373430 2023-09-20-04:56:07 +110.564590 17.373425 2023-09-20-04:56:13 +110.564593 17.373428 2023-09-20-04:56:19 +110.564595 17.373422 2023-09-20-04:56:31 +110.564595 17.373423 2023-09-20-04:56:37 +110.564604 17.373405 2023-09-20-04:56:49 +110.564576 17.373401 2023-09-20-04:57:07 +110.564565 17.373413 2023-09-20-04:57:13 +110.564541 17.373397 2023-09-20-04:57:37 +110.564534 17.373401 2023-09-20-04:57:43 +110.564535 17.373387 2023-09-20-04:58:01 +110.564542 17.373389 2023-09-20-04:58:07 +110.564554 17.373386 2023-09-20-04:58:13 +110.564578 17.373390 2023-09-20-04:58:31 +110.564561 17.373381 2023-09-20-04:58:37 +110.564577 17.373378 2023-09-20-04:58:49 +110.564586 17.373380 2023-09-20-04:58:55 +110.564697 17.373346 2023-09-20-04:59:19 +110.564714 17.373371 2023-09-20-04:59:31 +110.564656 17.373382 2023-09-20-04:59:55 +110.564660 17.373364 2023-09-20-05:00:07 +110.564647 17.373372 2023-09-20-05:00:31 +110.564651 17.373383 2023-09-20-05:00:49 +110.564641 17.373377 2023-09-20-05:01:01 +110.564642 17.373385 2023-09-20-05:01:13 +110.564631 17.373395 2023-09-20-05:01:43 +110.564640 17.373389 2023-09-20-05:01:49 +110.564632 17.373373 2023-09-20-05:01:55 +110.564625 17.373370 2023-09-20-05:02:07 +110.564627 17.373384 2023-09-20-05:02:37 +110.564620 17.373376 2023-09-20-05:02:43 +110.564634 17.373375 2023-09-20-05:02:49 +110.564632 17.373383 2023-09-20-05:02:55 +110.564628 17.373375 2023-09-20-05:03:01 +110.564621 17.373381 2023-09-20-05:03:13 +110.564611 17.373393 2023-09-20-05:03:55 +110.564597 17.373412 2023-09-20-05:04:19 +110.564584 17.373412 2023-09-20-05:04:49 +110.564669 17.373447 2023-09-20-05:05:37 +110.564672 17.373441 2023-09-20-05:05:43 +110.564658 17.373437 2023-09-20-05:05:55 +110.564677 17.373460 2023-09-20-05:06:01 +110.564676 17.373452 2023-09-20-05:06:07 +110.564675 17.373456 2023-09-20-05:06:37 +110.564670 17.373454 2023-09-20-05:06:43 +110.564678 17.373452 2023-09-20-05:06:55 +110.564683 17.373456 2023-09-20-05:07:01 +110.564682 17.373456 2023-09-20-05:07:07 +110.564672 17.373445 2023-09-20-05:07:19 +110.564648 17.373410 2023-09-20-05:07:43 +110.564647 17.373413 2023-09-20-05:07:49 +110.564628 17.373410 2023-09-20-05:08:07 +110.564627 17.373406 2023-09-20-05:08:19 +110.564571 17.373438 2023-09-20-05:09:31 +110.564581 17.373444 2023-09-20-05:09:43 +110.564589 17.373448 2023-09-20-05:09:55 +110.564605 17.373441 2023-09-20-05:10:13 +110.564595 17.373440 2023-09-20-05:10:19 +110.564622 17.373453 2023-09-20-05:10:31 +110.564680 17.373420 2023-09-20-05:10:43 +110.564684 17.373418 2023-09-20-05:10:49 +110.564684 17.373423 2023-09-20-05:10:55 +110.564679 17.373429 2023-09-20-05:11:01 +110.564684 17.373424 2023-09-20-05:11:13 +110.564687 17.373426 2023-09-20-05:11:19 +110.564689 17.373427 2023-09-20-05:11:37 +110.564708 17.373440 2023-09-20-05:11:55 +110.564718 17.373434 2023-09-20-05:12:01 +110.564719 17.373430 2023-09-20-05:12:07 +110.564687 17.373487 2023-09-20-05:12:19 +110.564729 17.373445 2023-09-20-05:12:31 +110.564736 17.373451 2023-09-20-05:12:37 +110.564757 17.373461 2023-09-20-05:12:43 +110.564757 17.373463 2023-09-20-05:12:49 +110.564718 17.373507 2023-09-20-05:13:01 +110.564763 17.373469 2023-09-20-05:13:13 +110.564778 17.373473 2023-09-20-05:13:19 +110.564700 17.373505 2023-09-20-05:13:31 +110.564719 17.373507 2023-09-20-05:13:37 +110.564707 17.373510 2023-09-20-05:13:43 +110.564707 17.373501 2023-09-20-05:13:49 +110.564739 17.373492 2023-09-20-05:13:55 +110.564740 17.373493 2023-09-20-05:14:13 +110.564729 17.373499 2023-09-20-05:14:31 +110.564750 17.373493 2023-09-20-05:14:37 +110.564761 17.373490 2023-09-20-05:14:43 +110.564780 17.373498 2023-09-20-05:14:55 +110.564795 17.373503 2023-09-20-05:15:01 +110.564780 17.373494 2023-09-20-05:15:07 +110.564774 17.373495 2023-09-20-05:15:13 +110.564779 17.373496 2023-09-20-05:15:19 +110.564776 17.373503 2023-09-20-05:15:37 +110.564770 17.373513 2023-09-20-05:15:43 +110.564773 17.373505 2023-09-20-05:15:49 +110.564765 17.373507 2023-09-20-05:15:55 +110.564763 17.373504 2023-09-20-05:16:01 +110.564755 17.373503 2023-09-20-05:16:07 +110.564766 17.373509 2023-09-20-05:16:13 +110.564764 17.373508 2023-09-20-05:16:19 +110.564763 17.373510 2023-09-20-05:16:31 +110.564762 17.373512 2023-09-20-05:16:37 +110.564732 17.373528 2023-09-20-05:16:55 +110.564720 17.373510 2023-09-20-05:17:13 +110.564711 17.373503 2023-09-20-05:17:19 +110.564698 17.373500 2023-09-20-05:17:31 +110.564701 17.373482 2023-09-20-05:18:01 +110.564723 17.373482 2023-09-20-05:18:19 +110.564731 17.373493 2023-09-20-05:18:31 +110.564745 17.373488 2023-09-20-05:19:13 +110.564721 17.373471 2023-09-20-05:20:01 +110.564713 17.373468 2023-09-20-05:20:07 +110.564717 17.373462 2023-09-20-05:21:01 +110.564720 17.373452 2023-09-20-05:21:19 +110.564712 17.373475 2023-09-20-05:21:31 +110.564727 17.373474 2023-09-20-05:21:37 +110.564724 17.373481 2023-09-20-05:21:43 +110.564725 17.373475 2023-09-20-05:21:49 +110.564717 17.373477 2023-09-20-05:21:55 +110.564726 17.373491 2023-09-20-05:22:01 +110.564725 17.373484 2023-09-20-05:22:07 +110.564731 17.373489 2023-09-20-05:22:13 +110.564729 17.373487 2023-09-20-05:22:19 +110.564722 17.373490 2023-09-20-05:22:31 +110.564724 17.373491 2023-09-20-05:22:37 +110.564723 17.373495 2023-09-20-05:22:43 +110.564721 17.373500 2023-09-20-05:22:49 +110.564716 17.373502 2023-09-20-05:22:55 +110.564715 17.373502 2023-09-20-05:23:01 +110.564712 17.373503 2023-09-20-05:23:07 +110.564711 17.373502 2023-09-20-05:23:13 +110.564713 17.373496 2023-09-20-05:23:19 +110.564707 17.373486 2023-09-20-05:23:31 +110.564703 17.373478 2023-09-20-05:23:37 +110.564699 17.373467 2023-09-20-05:23:43 +110.564693 17.373456 2023-09-20-05:23:49 +110.564682 17.373442 2023-09-20-05:23:55 +110.564672 17.373432 2023-09-20-05:24:01 +110.564664 17.373425 2023-09-20-05:24:07 +110.564653 17.373417 2023-09-20-05:24:13 +110.564641 17.373413 2023-09-20-05:24:19 +110.564627 17.373403 2023-09-20-05:24:31 +110.564618 17.373400 2023-09-20-05:24:37 +110.564609 17.373396 2023-09-20-05:24:43 +110.564597 17.373392 2023-09-20-05:24:49 +110.564590 17.373390 2023-09-20-05:24:55 +110.564579 17.373385 2023-09-20-05:25:01 +110.564572 17.373384 2023-09-20-05:25:07 +110.564567 17.373385 2023-09-20-05:25:13 +110.564561 17.373386 2023-09-20-05:25:19 +110.564557 17.373385 2023-09-20-05:25:31 +110.564552 17.373384 2023-09-20-05:25:37 +110.564550 17.373382 2023-09-20-05:25:43 +110.564546 17.373381 2023-09-20-05:25:49 +110.564546 17.373378 2023-09-20-05:25:55 +110.564546 17.373374 2023-09-20-05:26:01 +110.564544 17.373368 2023-09-20-05:26:07 +110.564548 17.373364 2023-09-20-05:26:13 +110.564553 17.373364 2023-09-20-05:26:19 +110.564559 17.373362 2023-09-20-05:26:31 +110.564564 17.373360 2023-09-20-05:26:37 +110.564572 17.373357 2023-09-20-05:26:43 +110.564580 17.373355 2023-09-20-05:26:49 +110.564588 17.373356 2023-09-20-05:26:55 +110.564595 17.373352 2023-09-20-05:27:01 +110.564604 17.373355 2023-09-20-05:27:07 +110.564611 17.373351 2023-09-20-05:27:13 +110.564616 17.373352 2023-09-20-05:27:19 +110.564626 17.373353 2023-09-20-05:27:31 +110.564634 17.373354 2023-09-20-05:27:37 +110.564641 17.373356 2023-09-20-05:27:43 +110.564650 17.373356 2023-09-20-05:27:49 +110.564657 17.373359 2023-09-20-05:27:55 +110.564664 17.373363 2023-09-20-05:28:01 +110.564672 17.373367 2023-09-20-05:28:07 +110.564681 17.373371 2023-09-20-05:28:13 +110.564688 17.373374 2023-09-20-05:28:19 +110.564695 17.373379 2023-09-20-05:28:31 +110.564701 17.373383 2023-09-20-05:28:37 +110.564707 17.373388 2023-09-20-05:28:43 +110.564710 17.373388 2023-09-20-05:28:49 +110.564712 17.373391 2023-09-20-05:28:55 +110.564714 17.373393 2023-09-20-05:29:01 +110.564714 17.373392 2023-09-20-05:29:13 +110.564717 17.373395 2023-09-20-05:29:37 +110.564720 17.373393 2023-09-20-05:29:43 +110.564722 17.373394 2023-09-20-05:29:49 +110.564724 17.373392 2023-09-20-05:29:55 +110.564727 17.373394 2023-09-20-05:30:01 +110.564729 17.373395 2023-09-20-05:30:13 +110.564731 17.373394 2023-09-20-05:30:19 +110.564731 17.373398 2023-09-20-05:30:25 +110.564732 17.373400 2023-09-20-05:30:31 +110.564733 17.373402 2023-09-20-05:30:37 +110.564733 17.373402 2023-09-20-05:30:43 +110.564732 17.373403 2023-09-20-05:30:49 +110.564733 17.373405 2023-09-20-05:31:13 +110.564735 17.373403 2023-09-20-05:31:31 +110.564735 17.373401 2023-09-20-05:31:37 +110.564733 17.373404 2023-09-20-05:31:43 +110.564732 17.373403 2023-09-20-05:31:55 +110.564730 17.373405 2023-09-20-05:32:01 +110.564729 17.373405 2023-09-20-05:32:07 +110.564727 17.373405 2023-09-20-05:32:13 +110.564726 17.373402 2023-09-20-05:32:19 +110.564726 17.373403 2023-09-20-05:32:31 +110.564726 17.373402 2023-09-20-05:32:37 +110.564725 17.373401 2023-09-20-05:32:43 +110.564724 17.373402 2023-09-20-05:32:49 +110.564724 17.373403 2023-09-20-05:32:55 +110.564723 17.373405 2023-09-20-05:33:01 +110.564723 17.373406 2023-09-20-05:33:07 +110.564723 17.373406 2023-09-20-05:33:19 +110.564725 17.373407 2023-09-20-05:33:31 +110.564725 17.373407 2023-09-20-05:33:37 +110.564724 17.373408 2023-09-20-05:33:43 +110.564724 17.373406 2023-09-20-05:33:49 +110.564724 17.373405 2023-09-20-05:33:55 +110.564723 17.373405 2023-09-20-05:34:01 +110.564721 17.373405 2023-09-20-05:34:07 +110.564722 17.373405 2023-09-20-05:34:13 +110.564723 17.373405 2023-09-20-05:34:37 +110.564724 17.373404 2023-09-20-05:34:43 +110.564726 17.373405 2023-09-20-05:34:55 +110.564726 17.373401 2023-09-20-05:35:01 +110.564727 17.373402 2023-09-20-05:35:07 +110.564728 17.373403 2023-09-20-05:35:13 +110.564727 17.373402 2023-09-20-05:35:19 +110.564729 17.373403 2023-09-20-05:35:31 +110.564730 17.373405 2023-09-20-05:35:37 +110.564730 17.373409 2023-09-20-05:35:49 +110.564731 17.373410 2023-09-20-05:35:55 +110.564729 17.373413 2023-09-20-05:36:01 +110.564729 17.373414 2023-09-20-05:36:13 +110.564728 17.373414 2023-09-20-05:36:19 +110.564729 17.373414 2023-09-20-05:36:31 +110.564729 17.373419 2023-09-20-05:36:43 +110.564727 17.373420 2023-09-20-05:36:49 +110.564729 17.373418 2023-09-20-05:37:01 +110.564729 17.373438 2023-09-20-05:37:13 +110.564722 17.373434 2023-09-20-05:37:19 +110.564732 17.373452 2023-09-20-05:38:13 +110.564729 17.373451 2023-09-20-05:38:37 +110.564740 17.373466 2023-09-20-05:39:13 +110.564733 17.373461 2023-09-20-05:39:49 +110.564736 17.373474 2023-09-20-05:40:07 +110.564731 17.373473 2023-09-20-05:40:55 +110.564729 17.373484 2023-09-20-05:41:01 +110.564732 17.373483 2023-09-20-05:41:13 +110.564724 17.373483 2023-09-20-05:42:19 +110.564722 17.373485 2023-09-20-05:43:01 +110.564724 17.373483 2023-09-20-05:43:07 +110.564719 17.373484 2023-09-20-05:43:37 +110.564719 17.373493 2023-09-20-05:44:31 +110.564725 17.373490 2023-09-20-05:44:43 +110.564712 17.373495 2023-09-20-05:45:31 +110.564708 17.373499 2023-09-20-05:45:43 +110.564704 17.373489 2023-09-20-05:45:49 +110.564709 17.373485 2023-09-20-05:45:55 +110.564708 17.373489 2023-09-20-05:46:01 +110.564701 17.373489 2023-09-20-05:46:07 +110.564704 17.373493 2023-09-20-05:46:13 +110.564694 17.373487 2023-09-20-05:46:19 +110.564691 17.373471 2023-09-20-05:47:07 +110.564679 17.373464 2023-09-20-05:47:19 +110.564636 17.373434 2023-09-20-05:48:13 +110.564625 17.373437 2023-09-20-05:48:19 +110.564622 17.373431 2023-09-20-05:48:31 +110.564614 17.373419 2023-09-20-05:48:49 +110.564606 17.373424 2023-09-20-05:48:55 +110.564605 17.373421 2023-09-20-05:49:01 +110.564598 17.373425 2023-09-20-05:49:07 +110.564593 17.373429 2023-09-20-05:49:13 +110.564599 17.373424 2023-09-20-05:49:19 +110.564594 17.373422 2023-09-20-05:49:31 +110.564591 17.373419 2023-09-20-05:49:37 +110.564587 17.373419 2023-09-20-05:49:43 +110.564584 17.373414 2023-09-20-05:49:49 +110.564580 17.373412 2023-09-20-05:49:55 +110.564577 17.373411 2023-09-20-05:50:01 +110.564575 17.373411 2023-09-20-05:50:07 +110.564574 17.373411 2023-09-20-05:50:13 +110.564566 17.373408 2023-09-20-05:50:19 +110.564564 17.373408 2023-09-20-05:50:31 +110.564562 17.373407 2023-09-20-05:50:37 +110.564559 17.373407 2023-09-20-05:50:43 +110.564554 17.373406 2023-09-20-05:50:49 +110.564549 17.373403 2023-09-20-05:50:55 +110.564548 17.373402 2023-09-20-05:51:01 +110.564544 17.373399 2023-09-20-05:51:07 +110.564541 17.373398 2023-09-20-05:51:13 +110.564536 17.373397 2023-09-20-05:51:18 +110.564539 17.373396 2023-09-20-05:51:30 +110.564537 17.373397 2023-09-20-05:51:36 +110.564535 17.373397 2023-09-20-05:51:42 +110.564533 17.373396 2023-09-20-05:51:48 +110.564533 17.373395 2023-09-20-05:51:54 +110.564532 17.373395 2023-09-20-05:52:00 +110.564531 17.373393 2023-09-20-05:52:06 +110.564531 17.373391 2023-09-20-05:52:12 +110.564530 17.373390 2023-09-20-05:52:18 +110.564530 17.373389 2023-09-20-05:52:30 +110.564530 17.373389 2023-09-20-05:52:36 +110.564530 17.373387 2023-09-20-05:52:42 +110.564532 17.373385 2023-09-20-05:52:48 +110.564535 17.373383 2023-09-20-05:52:54 +110.564536 17.373379 2023-09-20-05:53:00 +110.564537 17.373381 2023-09-20-05:53:06 +110.564542 17.373377 2023-09-20-05:53:12 +110.564544 17.373375 2023-09-20-05:53:18 +110.564549 17.373373 2023-09-20-05:53:30 +110.564550 17.373372 2023-09-20-05:53:36 +110.564555 17.373372 2023-09-20-05:53:42 +110.564560 17.373369 2023-09-20-05:53:48 +110.564564 17.373365 2023-09-20-05:53:54 +110.564571 17.373365 2023-09-20-05:54:00 +110.564574 17.373362 2023-09-20-05:54:06 +110.564581 17.373360 2023-09-20-05:54:12 +110.564583 17.373356 2023-09-20-05:54:18 +110.564589 17.373354 2023-09-20-05:54:30 +110.564592 17.373356 2023-09-20-05:54:36 +110.564597 17.373353 2023-09-20-05:54:42 +110.564604 17.373352 2023-09-20-05:54:48 +110.564608 17.373351 2023-09-20-05:54:54 +110.564616 17.373348 2023-09-20-05:55:00 +110.564622 17.373351 2023-09-20-05:55:06 +110.564629 17.373352 2023-09-20-05:55:12 +110.564634 17.373352 2023-09-20-05:55:18 +110.564644 17.373356 2023-09-20-05:55:30 +110.564654 17.373361 2023-09-20-05:55:36 +110.564661 17.373366 2023-09-20-05:55:42 +110.564668 17.373369 2023-09-20-05:55:48 +110.564675 17.373372 2023-09-20-05:55:54 +110.564682 17.373376 2023-09-20-05:56:00 +110.564687 17.373379 2023-09-20-05:56:06 +110.564689 17.373380 2023-09-20-05:56:12 +110.564690 17.373379 2023-09-20-05:56:18 +110.564695 17.373382 2023-09-20-05:56:30 +110.564697 17.373385 2023-09-20-05:56:36 +110.564700 17.373389 2023-09-20-05:56:54 +110.564701 17.373391 2023-09-20-05:57:00 +110.564705 17.373391 2023-09-20-05:57:06 +110.564709 17.373396 2023-09-20-05:57:12 +110.564710 17.373397 2023-09-20-05:57:18 +110.564713 17.373399 2023-09-20-05:57:24 +110.564716 17.373402 2023-09-20-05:57:30 +110.564720 17.373406 2023-09-20-05:57:36 +110.564721 17.373408 2023-09-20-05:57:42 +110.564723 17.373410 2023-09-20-05:57:48 +110.564726 17.373413 2023-09-20-05:57:54 +110.564728 17.373415 2023-09-20-05:58:00 +110.564728 17.373416 2023-09-20-05:58:06 +110.564732 17.373418 2023-09-20-05:58:12 +110.564733 17.373419 2023-09-20-05:58:18 +110.564733 17.373422 2023-09-20-05:58:30 +110.564732 17.373424 2023-09-20-05:58:36 +110.564734 17.373423 2023-09-20-05:58:42 +110.564737 17.373427 2023-09-20-05:58:48 +110.564735 17.373427 2023-09-20-05:58:54 +110.564735 17.373425 2023-09-20-05:59:00 +110.564734 17.373427 2023-09-20-05:59:06 +110.564737 17.373425 2023-09-20-05:59:12 +110.564737 17.373425 2023-09-20-05:59:18 +110.564736 17.373426 2023-09-20-05:59:30 +110.564737 17.373428 2023-09-20-05:59:36 +110.564740 17.373430 2023-09-20-05:59:42 +110.564742 17.373429 2023-09-20-05:59:48 +110.564742 17.373430 2023-09-20-05:59:54 +110.564744 17.373431 2023-09-20-06:00:00 +110.564744 17.373433 2023-09-20-06:00:12 +110.564723 17.373440 2023-09-20-06:00:18 +110.564733 17.373440 2023-09-20-06:00:36 +110.564733 17.373439 2023-09-20-06:00:42 +110.564733 17.373441 2023-09-20-06:00:48 +110.564731 17.373442 2023-09-20-06:00:54 +110.564730 17.373445 2023-09-20-06:01:06 +110.564735 17.373442 2023-09-20-06:01:12 +110.564734 17.373442 2023-09-20-06:01:54 +110.564684 17.373499 2023-09-20-06:02:06 +110.564685 17.373509 2023-09-20-06:02:12 +110.564670 17.373498 2023-09-20-06:02:30 +110.564674 17.373496 2023-09-20-06:02:42 +110.564732 17.373439 2023-09-20-06:02:48 +110.564734 17.373441 2023-09-20-06:03:00 +110.564704 17.373507 2023-09-20-06:03:12 +110.564738 17.373433 2023-09-20-06:03:18 +110.564731 17.373430 2023-09-20-06:03:48 +110.564706 17.373479 2023-09-20-06:04:00 +110.564707 17.373481 2023-09-20-06:04:06 +110.564712 17.373486 2023-09-20-06:04:12 +110.564707 17.373485 2023-09-20-06:04:18 +110.564712 17.373487 2023-09-20-06:04:30 +110.564700 17.373486 2023-09-20-06:04:36 +110.564710 17.373475 2023-09-20-06:04:54 +110.564714 17.373464 2023-09-20-06:05:00 +110.564701 17.373389 2023-09-20-06:05:06 +110.564692 17.373389 2023-09-20-06:05:18 +110.564691 17.373386 2023-09-20-06:05:30 +110.564690 17.373386 2023-09-20-06:05:42 +110.564692 17.373384 2023-09-20-06:05:48 +110.564683 17.373381 2023-09-20-06:06:06 +110.564685 17.373373 2023-09-20-06:06:12 +110.564675 17.373378 2023-09-20-06:06:18 +110.564679 17.373370 2023-09-20-06:06:30 +110.564681 17.373371 2023-09-20-06:06:36 +110.564689 17.373377 2023-09-20-06:06:54 +110.564694 17.373375 2023-09-20-06:07:00 +110.564688 17.373376 2023-09-20-06:07:06 +110.564686 17.373366 2023-09-20-06:07:12 +110.564698 17.373365 2023-09-20-06:07:36 +110.564702 17.373365 2023-09-20-06:07:42 +110.564706 17.373362 2023-09-20-06:07:48 +110.564711 17.373360 2023-09-20-06:07:54 +110.564712 17.373360 2023-09-20-06:08:00 +110.564717 17.373358 2023-09-20-06:08:06 +110.564719 17.373359 2023-09-20-06:08:12 +110.564722 17.373359 2023-09-20-06:08:18 +110.564723 17.373359 2023-09-20-06:08:30 +110.564726 17.373360 2023-09-20-06:08:36 +110.564729 17.373358 2023-09-20-06:08:42 +110.564733 17.373359 2023-09-20-06:08:48 +110.564734 17.373363 2023-09-20-06:08:54 +110.564736 17.373362 2023-09-20-06:09:00 +110.564740 17.373361 2023-09-20-06:09:06 +110.564742 17.373363 2023-09-20-06:09:12 +110.564742 17.373364 2023-09-20-06:09:18 +110.564745 17.373368 2023-09-20-06:09:30 +110.564748 17.373369 2023-09-20-06:09:36 +110.564749 17.373370 2023-09-20-06:09:42 +110.564749 17.373370 2023-09-20-06:09:48 +110.564749 17.373369 2023-09-20-06:09:54 +110.564751 17.373369 2023-09-20-06:10:00 +110.564750 17.373368 2023-09-20-06:10:06 +110.564751 17.373369 2023-09-20-06:10:12 +110.564750 17.373369 2023-09-20-06:10:18 +110.564752 17.373369 2023-09-20-06:10:30 +110.564753 17.373373 2023-09-20-06:10:36 +110.564754 17.373378 2023-09-20-06:10:42 +110.564752 17.373381 2023-09-20-06:10:48 +110.564753 17.373384 2023-09-20-06:10:54 +110.564755 17.373385 2023-09-20-06:11:00 +110.564756 17.373391 2023-09-20-06:11:06 +110.564755 17.373389 2023-09-20-06:11:12 +110.564755 17.373390 2023-09-20-06:11:18 +110.564754 17.373389 2023-09-20-06:11:30 +110.564752 17.373389 2023-09-20-06:11:36 +110.564750 17.373389 2023-09-20-06:11:42 +110.564746 17.373384 2023-09-20-06:11:48 +110.564745 17.373386 2023-09-20-06:11:54 +110.564743 17.373382 2023-09-20-06:12:00 +110.564743 17.373383 2023-09-20-06:12:06 +110.564741 17.373382 2023-09-20-06:12:12 +110.564739 17.373381 2023-09-20-06:12:18 +110.564738 17.373379 2023-09-20-06:12:30 +110.564739 17.373376 2023-09-20-06:12:36 +110.564741 17.373377 2023-09-20-06:12:42 +110.564734 17.373378 2023-09-20-06:12:48 +110.564736 17.373374 2023-09-20-06:12:54 +110.564732 17.373373 2023-09-20-06:13:00 +110.564731 17.373372 2023-09-20-06:13:06 +110.564730 17.373371 2023-09-20-06:13:12 +110.564723 17.373369 2023-09-20-06:13:18 +110.564723 17.373368 2023-09-20-06:13:30 +110.564722 17.373368 2023-09-20-06:13:36 +110.564723 17.373364 2023-09-20-06:13:42 +110.564717 17.373366 2023-09-20-06:13:48 +110.564716 17.373366 2023-09-20-06:13:54 +110.564717 17.373365 2023-09-20-06:14:00 +110.564718 17.373367 2023-09-20-06:14:06 +110.564716 17.373366 2023-09-20-06:14:12 +110.564714 17.373370 2023-09-20-06:14:18 +110.564710 17.373368 2023-09-20-06:14:30 +110.564708 17.373370 2023-09-20-06:14:36 +110.564707 17.373371 2023-09-20-06:14:42 +110.564704 17.373372 2023-09-20-06:14:48 +110.564702 17.373374 2023-09-20-06:14:54 +110.564699 17.373373 2023-09-20-06:15:00 +110.564700 17.373374 2023-09-20-06:15:06 +110.564701 17.373373 2023-09-20-06:15:12 +110.564701 17.373374 2023-09-20-06:15:18 +110.564701 17.373374 2023-09-20-06:15:30 +110.564701 17.373376 2023-09-20-06:15:36 +110.564701 17.373376 2023-09-20-06:15:42 +110.564702 17.373376 2023-09-20-06:15:48 +110.564701 17.373380 2023-09-20-06:15:54 +110.564700 17.373380 2023-09-20-06:16:00 +110.564697 17.373382 2023-09-20-06:16:06 +110.564696 17.373380 2023-09-20-06:16:12 +110.564694 17.373381 2023-09-20-06:16:18 +110.564692 17.373383 2023-09-20-06:16:30 +110.564689 17.373384 2023-09-20-06:16:36 +110.564687 17.373387 2023-09-20-06:16:42 +110.564688 17.373386 2023-09-20-06:16:48 +110.564684 17.373388 2023-09-20-06:16:54 +110.564688 17.373390 2023-09-20-06:17:00 +110.564686 17.373391 2023-09-20-06:17:06 +110.564688 17.373392 2023-09-20-06:17:12 +110.564688 17.373387 2023-09-20-06:17:18 +110.564689 17.373391 2023-09-20-06:17:30 +110.564689 17.373390 2023-09-20-06:17:36 +110.564689 17.373392 2023-09-20-06:17:42 +110.564691 17.373389 2023-09-20-06:17:48 +110.564687 17.373387 2023-09-20-06:17:54 +110.564686 17.373387 2023-09-20-06:18:00 +110.564687 17.373389 2023-09-20-06:18:12 +110.564682 17.373386 2023-09-20-06:18:30 +110.564681 17.373388 2023-09-20-06:18:36 +110.564681 17.373388 2023-09-20-06:18:42 +110.564680 17.373390 2023-09-20-06:18:48 +110.564680 17.373391 2023-09-20-06:18:54 +110.564677 17.373387 2023-09-20-06:19:00 +110.564678 17.373391 2023-09-20-06:19:06 +110.564680 17.373390 2023-09-20-06:19:12 +110.564678 17.373390 2023-09-20-06:19:18 +110.564679 17.373390 2023-09-20-06:19:30 +110.564677 17.373392 2023-09-20-06:19:36 +110.564678 17.373394 2023-09-20-06:19:42 +110.564681 17.373394 2023-09-20-06:19:48 +110.564679 17.373394 2023-09-20-06:19:54 +110.564678 17.373398 2023-09-20-06:20:00 +110.564663 17.373402 2023-09-20-06:20:18 +110.564661 17.373404 2023-09-20-06:20:30 +110.564662 17.373405 2023-09-20-06:20:36 +110.564661 17.373408 2023-09-20-06:20:42 +110.564680 17.373428 2023-09-20-06:21:06 +110.564678 17.373430 2023-09-20-06:21:12 +110.564681 17.373427 2023-09-20-06:21:18 +110.564679 17.373426 2023-09-20-06:21:30 +110.564582 17.373464 2023-09-20-06:21:48 +110.564590 17.373472 2023-09-20-06:22:18 +110.564579 17.373474 2023-09-20-06:22:30 +110.564567 17.373469 2023-09-20-06:22:36 +110.564583 17.373479 2023-09-20-06:22:42 +110.564586 17.373485 2023-09-20-06:22:48 +110.564584 17.373477 2023-09-20-06:22:54 +110.564588 17.373478 2023-09-20-06:23:06 +110.564586 17.373477 2023-09-20-06:23:12 +110.564588 17.373470 2023-09-20-06:23:18 +110.564579 17.373482 2023-09-20-06:23:30 +110.564586 17.373474 2023-09-20-06:23:36 +110.564578 17.373477 2023-09-20-06:23:42 +110.564581 17.373475 2023-09-20-06:23:48 +110.564582 17.373471 2023-09-20-06:23:54 +110.564582 17.373475 2023-09-20-06:24:18 +110.564569 17.373457 2023-09-20-06:24:36 +110.564575 17.373471 2023-09-20-06:24:54 +110.564575 17.373458 2023-09-20-06:25:00 +110.564569 17.373454 2023-09-20-06:25:06 +110.564572 17.373454 2023-09-20-06:25:18 +110.564624 17.373392 2023-09-20-06:25:30 +110.564623 17.373384 2023-09-20-06:25:36 +110.564631 17.373392 2023-09-20-06:25:42 +110.564637 17.373389 2023-09-20-06:25:48 +110.564638 17.373390 2023-09-20-06:25:54 +110.564633 17.373390 2023-09-20-06:26:00 +110.564663 17.373388 2023-09-20-06:27:06 +110.564666 17.373388 2023-09-20-06:27:30 +110.564667 17.373388 2023-09-20-06:27:36 +110.564671 17.373389 2023-09-20-06:27:42 +110.564658 17.373393 2023-09-20-06:27:54 +110.564671 17.373387 2023-09-20-06:28:00 +110.564669 17.373385 2023-09-20-06:28:06 +110.564670 17.373384 2023-09-20-06:28:12 +110.564671 17.373386 2023-09-20-06:28:18 +110.564671 17.373384 2023-09-20-06:28:30 +110.564672 17.373385 2023-09-20-06:28:36 +110.564671 17.373385 2023-09-20-06:28:42 +110.564670 17.373388 2023-09-20-06:28:48 +110.564672 17.373387 2023-09-20-06:28:54 +110.564673 17.373390 2023-09-20-06:29:00 +110.564675 17.373390 2023-09-20-06:29:30 +110.564672 17.373389 2023-09-20-06:29:36 +110.564657 17.373399 2023-09-20-06:29:42 +110.564666 17.373393 2023-09-20-06:29:48 +110.564665 17.373397 2023-09-20-06:29:54 +110.564663 17.373394 2023-09-20-06:30:00 +110.564664 17.373395 2023-09-20-06:30:06 +110.564665 17.373397 2023-09-20-06:30:12 +110.564674 17.373394 2023-09-20-06:30:18 +110.564675 17.373392 2023-09-20-06:30:30 +110.564675 17.373389 2023-09-20-06:30:36 +110.564675 17.373388 2023-09-20-06:30:42 +110.564675 17.373385 2023-09-20-06:30:48 +110.564674 17.373381 2023-09-20-06:30:54 +110.564676 17.373378 2023-09-20-06:31:00 +110.564676 17.373377 2023-09-20-06:31:06 +110.564678 17.373375 2023-09-20-06:31:12 +110.564679 17.373375 2023-09-20-06:31:18 +110.564680 17.373373 2023-09-20-06:31:30 +110.564683 17.373373 2023-09-20-06:31:36 +110.564683 17.373373 2023-09-20-06:31:42 +110.564683 17.373377 2023-09-20-06:31:48 +110.564694 17.373378 2023-09-20-06:32:00 +110.564696 17.373370 2023-09-20-06:32:06 +110.564690 17.373366 2023-09-20-06:32:12 +110.564697 17.373365 2023-09-20-06:32:18 +110.564700 17.373364 2023-09-20-06:32:30 +110.564693 17.373363 2023-09-20-06:32:48 +110.564692 17.373367 2023-09-20-06:32:54 +110.564691 17.373365 2023-09-20-06:33:00 +110.564696 17.373365 2023-09-20-06:33:06 +110.564694 17.373366 2023-09-20-06:33:12 +110.564694 17.373366 2023-09-20-06:33:18 +110.564695 17.373366 2023-09-20-06:33:30 +110.564694 17.373366 2023-09-20-06:33:36 +110.564695 17.373364 2023-09-20-06:33:42 +110.564694 17.373365 2023-09-20-06:33:48 +110.564696 17.373365 2023-09-20-06:33:54 +110.564695 17.373364 2023-09-20-06:34:00 +110.564695 17.373364 2023-09-20-06:34:06 +110.564695 17.373365 2023-09-20-06:34:12 +110.564696 17.373367 2023-09-20-06:34:18 +110.564698 17.373369 2023-09-20-06:34:30 +110.564700 17.373371 2023-09-20-06:34:36 +110.564701 17.373372 2023-09-20-06:34:42 +110.564702 17.373372 2023-09-20-06:34:48 +110.564704 17.373374 2023-09-20-06:35:00 +110.564704 17.373376 2023-09-20-06:35:06 +110.564705 17.373374 2023-09-20-06:35:12 +110.564706 17.373371 2023-09-20-06:35:18 +110.564708 17.373374 2023-09-20-06:35:30 +110.564709 17.373373 2023-09-20-06:35:36 +110.564709 17.373373 2023-09-20-06:35:42 +110.564711 17.373372 2023-09-20-06:35:48 +110.564712 17.373371 2023-09-20-06:35:54 +110.564713 17.373372 2023-09-20-06:36:00 +110.564711 17.373370 2023-09-20-06:36:06 +110.564711 17.373369 2023-09-20-06:36:12 +110.564711 17.373367 2023-09-20-06:36:18 +110.564714 17.373367 2023-09-20-06:36:30 +110.564714 17.373366 2023-09-20-06:36:36 +110.564716 17.373365 2023-09-20-06:36:42 +110.564718 17.373366 2023-09-20-06:36:48 +110.564719 17.373368 2023-09-20-06:36:54 +110.564725 17.373368 2023-09-20-06:37:00 +110.564723 17.373369 2023-09-20-06:37:06 +110.564724 17.373370 2023-09-20-06:37:12 +110.564724 17.373370 2023-09-20-06:37:18 +110.564722 17.373369 2023-09-20-06:37:30 +110.564721 17.373368 2023-09-20-06:37:36 +110.564720 17.373367 2023-09-20-06:37:42 +110.564719 17.373365 2023-09-20-06:37:48 +110.564722 17.373365 2023-09-20-06:37:54 +110.564720 17.373365 2023-09-20-06:38:00 +110.564722 17.373368 2023-09-20-06:38:06 +110.564722 17.373367 2023-09-20-06:38:12 +110.564723 17.373367 2023-09-20-06:38:18 +110.564727 17.373368 2023-09-20-06:38:30 +110.564726 17.373369 2023-09-20-06:38:36 +110.564727 17.373367 2023-09-20-06:38:42 +110.564726 17.373366 2023-09-20-06:38:48 +110.564728 17.373365 2023-09-20-06:38:54 +110.564727 17.373365 2023-09-20-06:39:00 +110.564727 17.373362 2023-09-20-06:39:06 +110.564724 17.373361 2023-09-20-06:39:12 +110.564726 17.373361 2023-09-20-06:39:18 +110.564726 17.373362 2023-09-20-06:39:30 +110.564724 17.373360 2023-09-20-06:39:36 +110.564725 17.373361 2023-09-20-06:39:42 +110.564723 17.373362 2023-09-20-06:39:48 +110.564724 17.373363 2023-09-20-06:39:54 +110.564724 17.373361 2023-09-20-06:40:00 +110.564721 17.373361 2023-09-20-06:40:06 +110.564718 17.373359 2023-09-20-06:40:12 +110.564718 17.373360 2023-09-20-06:40:18 +110.564717 17.373361 2023-09-20-06:40:30 +110.564714 17.373363 2023-09-20-06:40:36 +110.564717 17.373366 2023-09-20-06:40:42 +110.564718 17.373366 2023-09-20-06:40:48 +110.564717 17.373367 2023-09-20-06:40:54 +110.564716 17.373366 2023-09-20-06:41:00 +110.564716 17.373365 2023-09-20-06:41:06 +110.564719 17.373362 2023-09-20-06:41:12 +110.564718 17.373360 2023-09-20-06:41:18 +110.564717 17.373358 2023-09-20-06:41:30 +110.564717 17.373358 2023-09-20-06:41:36 +110.564717 17.373357 2023-09-20-06:41:42 +110.564718 17.373358 2023-09-20-06:41:48 +110.564716 17.373359 2023-09-20-06:41:54 +110.564718 17.373362 2023-09-20-06:42:00 +110.564717 17.373364 2023-09-20-06:42:06 +110.564716 17.373365 2023-09-20-06:42:12 +110.564717 17.373367 2023-09-20-06:42:18 +110.564718 17.373365 2023-09-20-06:42:30 +110.564718 17.373364 2023-09-20-06:42:36 +110.564718 17.373363 2023-09-20-06:42:42 +110.564717 17.373360 2023-09-20-06:42:48 +110.564718 17.373359 2023-09-20-06:42:54 +110.564716 17.373358 2023-09-20-06:43:00 +110.564717 17.373355 2023-09-20-06:43:06 +110.564716 17.373357 2023-09-20-06:43:12 +110.564715 17.373359 2023-09-20-06:43:18 +110.564716 17.373359 2023-09-20-06:43:30 +110.564717 17.373357 2023-09-20-06:43:36 +110.564718 17.373360 2023-09-20-06:43:42 +110.564718 17.373361 2023-09-20-06:43:48 +110.564720 17.373360 2023-09-20-06:43:54 +110.564719 17.373359 2023-09-20-06:44:00 +110.564718 17.373360 2023-09-20-06:44:06 +110.564717 17.373359 2023-09-20-06:44:12 +110.564718 17.373358 2023-09-20-06:44:18 +110.564716 17.373355 2023-09-20-06:44:30 +110.564717 17.373354 2023-09-20-06:44:36 +110.564717 17.373352 2023-09-20-06:44:42 +110.564717 17.373352 2023-09-20-06:44:48 +110.564718 17.373351 2023-09-20-06:44:54 +110.564715 17.373351 2023-09-20-06:45:00 +110.564718 17.373352 2023-09-20-06:45:06 +110.564717 17.373352 2023-09-20-06:45:12 +110.564716 17.373353 2023-09-20-06:45:18 +110.564718 17.373353 2023-09-20-06:45:30 +110.564718 17.373355 2023-09-20-06:45:36 +110.564717 17.373355 2023-09-20-06:45:42 +110.564715 17.373353 2023-09-20-06:45:48 +110.564715 17.373353 2023-09-20-06:45:54 +110.564718 17.373352 2023-09-20-06:46:00 +110.564715 17.373352 2023-09-20-06:46:06 +110.564713 17.373350 2023-09-20-06:46:12 +110.564716 17.373353 2023-09-20-06:46:18 +110.564717 17.373353 2023-09-20-06:46:30 +110.564715 17.373352 2023-09-20-06:46:36 +110.564716 17.373354 2023-09-20-06:46:42 +110.564716 17.373353 2023-09-20-06:46:48 +110.564717 17.373353 2023-09-20-06:46:54 +110.564717 17.373351 2023-09-20-06:47:00 +110.564716 17.373352 2023-09-20-06:47:06 +110.564717 17.373353 2023-09-20-06:47:12 +110.564717 17.373352 2023-09-20-06:47:18 +110.564718 17.373353 2023-09-20-06:47:30 +110.564718 17.373354 2023-09-20-06:47:36 +110.564717 17.373355 2023-09-20-06:47:42 +110.564717 17.373356 2023-09-20-06:47:48 +110.564717 17.373358 2023-09-20-06:47:54 +110.564718 17.373358 2023-09-20-06:48:00 +110.564720 17.373359 2023-09-20-06:48:06 +110.564720 17.373359 2023-09-20-06:48:12 +110.564720 17.373359 2023-09-20-06:48:18 +110.564717 17.373359 2023-09-20-06:48:30 +110.564719 17.373358 2023-09-20-06:48:36 +110.564719 17.373356 2023-09-20-06:48:42 +110.564719 17.373354 2023-09-20-06:48:48 +110.564716 17.373352 2023-09-20-06:48:54 +110.564714 17.373352 2023-09-20-06:49:00 +110.564713 17.373351 2023-09-20-06:49:06 +110.564713 17.373351 2023-09-20-06:49:12 +110.564710 17.373352 2023-09-20-06:49:18 +110.564706 17.373350 2023-09-20-06:49:30 +110.564706 17.373347 2023-09-20-06:49:36 +110.564703 17.373347 2023-09-20-06:49:42 +110.564704 17.373343 2023-09-20-06:49:48 +110.564703 17.373341 2023-09-20-06:49:54 +110.564703 17.373337 2023-09-20-06:50:00 +110.564702 17.373335 2023-09-20-06:50:06 +110.564705 17.373337 2023-09-20-06:50:12 +110.564707 17.373339 2023-09-20-06:50:18 +110.564706 17.373341 2023-09-20-06:50:30 +110.564707 17.373341 2023-09-20-06:50:36 +110.564706 17.373343 2023-09-20-06:50:42 +110.564709 17.373341 2023-09-20-06:50:54 +110.564708 17.373343 2023-09-20-06:51:00 +110.564707 17.373341 2023-09-20-06:51:06 +110.564709 17.373339 2023-09-20-06:51:12 +110.564708 17.373339 2023-09-20-06:51:18 +110.564707 17.373336 2023-09-20-06:51:24 +110.564706 17.373335 2023-09-20-06:51:30 +110.564704 17.373336 2023-09-20-06:51:36 +110.564704 17.373333 2023-09-20-06:51:42 +110.564701 17.373333 2023-09-20-06:51:48 +110.564700 17.373331 2023-09-20-06:51:54 +110.564699 17.373333 2023-09-20-06:52:00 +110.564699 17.373334 2023-09-20-06:52:06 +110.564698 17.373333 2023-09-20-06:52:12 +110.564698 17.373331 2023-09-20-06:52:18 +110.564698 17.373330 2023-09-20-06:52:30 +110.564698 17.373333 2023-09-20-06:52:36 +110.564697 17.373331 2023-09-20-06:52:48 +110.564697 17.373332 2023-09-20-06:52:54 +110.564697 17.373330 2023-09-20-06:53:00 +110.564700 17.373331 2023-09-20-06:53:06 +110.564701 17.373332 2023-09-20-06:53:12 +110.564699 17.373332 2023-09-20-06:53:18 +110.564701 17.373329 2023-09-20-06:53:24 +110.564702 17.373330 2023-09-20-06:53:30 +110.564703 17.373329 2023-09-20-06:53:36 +110.564700 17.373328 2023-09-20-06:53:42 +110.564701 17.373325 2023-09-20-06:53:48 +110.564703 17.373324 2023-09-20-06:53:54 +110.564702 17.373324 2023-09-20-06:54:00 +110.564703 17.373324 2023-09-20-06:54:06 +110.564703 17.373323 2023-09-20-06:54:12 +110.564703 17.373323 2023-09-20-06:54:18 +110.564704 17.373321 2023-09-20-06:54:30 +110.564703 17.373322 2023-09-20-06:54:36 +110.564703 17.373324 2023-09-20-06:54:42 +110.564705 17.373323 2023-09-20-06:54:48 +110.564706 17.373321 2023-09-20-06:54:54 +110.564707 17.373318 2023-09-20-06:55:00 +110.564707 17.373319 2023-09-20-06:55:06 +110.564707 17.373321 2023-09-20-06:55:12 +110.564707 17.373321 2023-09-20-06:55:18 +110.564708 17.373321 2023-09-20-06:55:30 +110.564707 17.373320 2023-09-20-06:55:36 +110.564705 17.373318 2023-09-20-06:55:42 +110.564707 17.373320 2023-09-20-06:55:48 +110.564708 17.373318 2023-09-20-06:55:54 +110.564710 17.373315 2023-09-20-06:56:00 +110.564710 17.373314 2023-09-20-06:56:06 +110.564711 17.373313 2023-09-20-06:56:12 +110.564714 17.373313 2023-09-20-06:56:18 +110.564717 17.373312 2023-09-20-06:56:30 +110.564718 17.373316 2023-09-20-06:56:36 +110.564721 17.373316 2023-09-20-06:56:42 +110.564722 17.373317 2023-09-20-06:56:48 +110.564723 17.373320 2023-09-20-06:56:54 +110.564727 17.373323 2023-09-20-06:57:00 +110.564729 17.373324 2023-09-20-06:57:06 +110.564731 17.373325 2023-09-20-06:57:12 +110.564733 17.373325 2023-09-20-06:57:18 +110.564735 17.373325 2023-09-20-06:57:30 +110.564738 17.373324 2023-09-20-06:57:36 +110.564740 17.373321 2023-09-20-06:57:42 +110.564740 17.373320 2023-09-20-06:57:48 +110.564742 17.373329 2023-09-20-06:57:54 +110.564739 17.373325 2023-09-20-06:58:00 +110.564741 17.373326 2023-09-20-06:58:06 +110.564738 17.373327 2023-09-20-06:58:12 +110.564740 17.373329 2023-09-20-06:58:18 +110.564742 17.373333 2023-09-20-06:58:30 +110.564744 17.373330 2023-09-20-06:58:36 +110.564746 17.373332 2023-09-20-06:58:42 +110.564751 17.373334 2023-09-20-06:58:48 +110.564756 17.373334 2023-09-20-06:58:54 +110.564759 17.373339 2023-09-20-06:59:00 +110.564761 17.373340 2023-09-20-06:59:06 +110.564763 17.373343 2023-09-20-06:59:12 +110.564765 17.373343 2023-09-20-06:59:18 +110.564761 17.373347 2023-09-20-06:59:30 +110.564762 17.373353 2023-09-20-06:59:36 +110.564760 17.373353 2023-09-20-06:59:42 +110.564758 17.373356 2023-09-20-06:59:48 +110.564757 17.373359 2023-09-20-06:59:54 +110.564753 17.373361 2023-09-20-07:00:00 +110.564755 17.373360 2023-09-20-07:00:06 +110.564751 17.373360 2023-09-20-07:00:12 +110.564749 17.373359 2023-09-20-07:00:18 +110.564745 17.373358 2023-09-20-07:00:30 +110.564744 17.373358 2023-09-20-07:00:36 +110.564744 17.373358 2023-09-20-07:00:42 +110.564741 17.373357 2023-09-20-07:00:48 +110.564741 17.373356 2023-09-20-07:00:54 +110.564741 17.373358 2023-09-20-07:01:00 +110.564743 17.373356 2023-09-20-07:01:06 +110.564740 17.373354 2023-09-20-07:01:12 +110.564739 17.373350 2023-09-20-07:01:18 +110.564739 17.373353 2023-09-20-07:01:30 +110.564738 17.373352 2023-09-20-07:01:36 +110.564735 17.373352 2023-09-20-07:01:42 +110.564734 17.373353 2023-09-20-07:01:48 +110.564734 17.373355 2023-09-20-07:01:54 +110.564733 17.373357 2023-09-20-07:02:00 +110.564733 17.373356 2023-09-20-07:02:06 +110.564730 17.373357 2023-09-20-07:02:12 +110.564727 17.373356 2023-09-20-07:02:18 +110.564726 17.373358 2023-09-20-07:02:30 +110.564724 17.373358 2023-09-20-07:02:36 +110.564722 17.373355 2023-09-20-07:02:42 +110.564721 17.373356 2023-09-20-07:02:48 +110.564718 17.373355 2023-09-20-07:02:54 +110.564718 17.373354 2023-09-20-07:03:00 +110.564715 17.373350 2023-09-20-07:03:06 +110.564714 17.373350 2023-09-20-07:03:12 +110.564710 17.373350 2023-09-20-07:03:18 +110.564708 17.373348 2023-09-20-07:03:30 +110.564706 17.373347 2023-09-20-07:03:36 +110.564706 17.373345 2023-09-20-07:03:42 +110.564705 17.373348 2023-09-20-07:03:48 +110.564701 17.373346 2023-09-20-07:03:54 +110.564700 17.373347 2023-09-20-07:04:00 +110.564696 17.373343 2023-09-20-07:04:06 +110.564693 17.373345 2023-09-20-07:04:12 +110.564689 17.373347 2023-09-20-07:04:18 +110.564687 17.373346 2023-09-20-07:04:30 +110.564684 17.373343 2023-09-20-07:04:36 +110.564683 17.373343 2023-09-20-07:04:42 +110.564684 17.373345 2023-09-20-07:04:48 +110.564681 17.373344 2023-09-20-07:04:54 +110.564682 17.373343 2023-09-20-07:05:00 +110.564681 17.373342 2023-09-20-07:05:06 +110.564680 17.373343 2023-09-20-07:05:12 +110.564681 17.373343 2023-09-20-07:05:18 +110.564679 17.373341 2023-09-20-07:05:30 +110.564680 17.373342 2023-09-20-07:05:36 +110.564680 17.373341 2023-09-20-07:05:42 +110.564679 17.373341 2023-09-20-07:05:48 +110.564679 17.373341 2023-09-20-07:05:54 +110.564677 17.373340 2023-09-20-07:06:00 +110.564678 17.373340 2023-09-20-07:06:06 +110.564677 17.373340 2023-09-20-07:06:12 +110.564677 17.373340 2023-09-20-07:06:18 +110.564680 17.373338 2023-09-20-07:06:30 +110.564680 17.373337 2023-09-20-07:06:36 +110.564681 17.373338 2023-09-20-07:06:42 +110.564681 17.373339 2023-09-20-07:06:48 +110.564683 17.373338 2023-09-20-07:06:54 +110.564685 17.373336 2023-09-20-07:07:00 +110.564683 17.373337 2023-09-20-07:07:06 +110.564685 17.373338 2023-09-20-07:07:12 +110.564685 17.373337 2023-09-20-07:07:18 +110.564687 17.373334 2023-09-20-07:07:30 +110.564688 17.373334 2023-09-20-07:07:36 +110.564688 17.373335 2023-09-20-07:07:42 +110.564690 17.373335 2023-09-20-07:07:48 +110.564691 17.373333 2023-09-20-07:07:54 +110.564694 17.373331 2023-09-20-07:08:00 +110.564695 17.373333 2023-09-20-07:08:06 +110.564699 17.373332 2023-09-20-07:08:12 +110.564701 17.373333 2023-09-20-07:08:18 +110.564704 17.373331 2023-09-20-07:08:30 +110.564704 17.373333 2023-09-20-07:08:36 +110.564707 17.373334 2023-09-20-07:08:42 +110.564707 17.373335 2023-09-20-07:08:48 +110.564704 17.373338 2023-09-20-07:08:54 +110.564704 17.373338 2023-09-20-07:09:00 +110.564703 17.373340 2023-09-20-07:09:06 +110.564704 17.373340 2023-09-20-07:09:12 +110.564703 17.373343 2023-09-20-07:09:18 +110.564705 17.373344 2023-09-20-07:09:30 +110.564704 17.373341 2023-09-20-07:09:36 +110.564706 17.373342 2023-09-20-07:09:42 +110.564707 17.373341 2023-09-20-07:09:48 +110.564708 17.373340 2023-09-20-07:09:54 +110.564710 17.373340 2023-09-20-07:10:00 +110.564711 17.373341 2023-09-20-07:10:06 +110.564713 17.373341 2023-09-20-07:10:12 +110.564712 17.373339 2023-09-20-07:10:18 +110.564712 17.373341 2023-09-20-07:10:30 +110.564712 17.373340 2023-09-20-07:10:36 +110.564711 17.373340 2023-09-20-07:10:42 +110.564710 17.373342 2023-09-20-07:10:48 +110.564711 17.373338 2023-09-20-07:10:54 +110.564711 17.373341 2023-09-20-07:11:00 +110.564712 17.373341 2023-09-20-07:11:06 +110.564712 17.373340 2023-09-20-07:11:12 +110.564713 17.373341 2023-09-20-07:11:18 +110.564714 17.373341 2023-09-20-07:11:30 +110.564711 17.373342 2023-09-20-07:11:36 +110.564712 17.373343 2023-09-20-07:11:42 +110.564711 17.373344 2023-09-20-07:11:48 +110.564711 17.373346 2023-09-20-07:11:54 +110.564711 17.373348 2023-09-20-07:12:00 +110.564711 17.373349 2023-09-20-07:12:06 +110.564713 17.373348 2023-09-20-07:12:12 +110.564713 17.373349 2023-09-20-07:12:18 +110.564712 17.373345 2023-09-20-07:12:30 +110.564712 17.373344 2023-09-20-07:12:36 +110.564713 17.373338 2023-09-20-07:12:42 +110.564710 17.373333 2023-09-20-07:12:48 +110.564708 17.373330 2023-09-20-07:12:54 +110.564703 17.373324 2023-09-20-07:13:00 +110.564703 17.373317 2023-09-20-07:13:06 +110.564700 17.373311 2023-09-20-07:13:12 +110.564697 17.373307 2023-09-20-07:13:18 +110.564695 17.373301 2023-09-20-07:13:30 +110.564690 17.373297 2023-09-20-07:13:36 +110.564688 17.373290 2023-09-20-07:13:42 +110.564689 17.373284 2023-09-20-07:13:48 +110.564689 17.373280 2023-09-20-07:13:54 +110.564686 17.373275 2023-09-20-07:14:00 +110.564687 17.373270 2023-09-20-07:14:06 +110.564689 17.373266 2023-09-20-07:14:12 +110.564693 17.373263 2023-09-20-07:14:18 +110.564692 17.373254 2023-09-20-07:14:30 +110.564691 17.373250 2023-09-20-07:14:36 +110.564690 17.373246 2023-09-20-07:14:42 +110.564690 17.373243 2023-09-20-07:14:48 +110.564687 17.373237 2023-09-20-07:14:54 +110.564682 17.373233 2023-09-20-07:15:00 +110.564680 17.373232 2023-09-20-07:15:06 +110.564672 17.373234 2023-09-20-07:15:12 +110.564620 17.373247 2023-09-20-07:15:30 +110.564604 17.373246 2023-09-20-07:15:36 +110.564579 17.373261 2023-09-20-07:15:42 +110.564575 17.373247 2023-09-20-07:15:48 +110.564569 17.373245 2023-09-20-07:15:54 +110.564551 17.373265 2023-09-20-07:16:06 +110.564539 17.373257 2023-09-20-07:16:12 +110.564538 17.373264 2023-09-20-07:16:18 +110.564533 17.373282 2023-09-20-07:16:30 +110.564531 17.373289 2023-09-20-07:16:36 +110.564526 17.373294 2023-09-20-07:16:42 +110.564533 17.373284 2023-09-20-07:16:48 +110.564534 17.373293 2023-09-20-07:16:54 +110.564528 17.373303 2023-09-20-07:17:00 +110.564527 17.373311 2023-09-20-07:17:06 +110.564527 17.373311 2023-09-20-07:17:12 +110.564527 17.373320 2023-09-20-07:17:18 +110.564526 17.373328 2023-09-20-07:17:30 +110.564522 17.373328 2023-09-20-07:17:36 +110.564524 17.373336 2023-09-20-07:17:42 +110.564528 17.373339 2023-09-20-07:17:48 +110.564525 17.373343 2023-09-20-07:17:54 +110.564525 17.373348 2023-09-20-07:18:00 +110.564522 17.373349 2023-09-20-07:18:06 +110.564520 17.373349 2023-09-20-07:18:12 +110.564515 17.373347 2023-09-20-07:18:18 +110.564512 17.373349 2023-09-20-07:18:30 +110.564509 17.373346 2023-09-20-07:18:36 +110.564504 17.373346 2023-09-20-07:18:48 +110.564501 17.373345 2023-09-20-07:18:54 +110.564500 17.373343 2023-09-20-07:19:00 +110.564503 17.373343 2023-09-20-07:19:06 +110.564501 17.373338 2023-09-20-07:19:12 +110.564506 17.373339 2023-09-20-07:19:18 +110.564511 17.373337 2023-09-20-07:19:24 +110.564512 17.373325 2023-09-20-07:19:30 +110.564522 17.373326 2023-09-20-07:19:36 +110.564527 17.373321 2023-09-20-07:19:42 +110.564536 17.373317 2023-09-20-07:19:48 +110.564540 17.373309 2023-09-20-07:19:54 +110.564551 17.373306 2023-09-20-07:20:00 +110.564561 17.373306 2023-09-20-07:20:06 +110.564569 17.373302 2023-09-20-07:20:12 +110.564576 17.373297 2023-09-20-07:20:18 +110.564585 17.373292 2023-09-20-07:20:30 +110.564598 17.373286 2023-09-20-07:20:42 +110.564602 17.373282 2023-09-20-07:20:48 +110.564604 17.373276 2023-09-20-07:20:54 +110.564608 17.373274 2023-09-20-07:21:00 +110.564609 17.373271 2023-09-20-07:21:06 +110.564609 17.373270 2023-09-20-07:21:12 +110.564609 17.373264 2023-09-20-07:21:18 +110.564606 17.373265 2023-09-20-07:21:30 +110.564605 17.373260 2023-09-20-07:21:36 +110.564601 17.373257 2023-09-20-07:21:48 +110.564595 17.373251 2023-09-20-07:22:00 +110.564594 17.373251 2023-09-20-07:22:06 +110.564590 17.373248 2023-09-20-07:22:12 +110.564587 17.373243 2023-09-20-07:22:18 +110.564584 17.373238 2023-09-20-07:22:30 +110.564583 17.373235 2023-09-20-07:22:36 +110.564583 17.373230 2023-09-20-07:22:42 +110.564583 17.373228 2023-09-20-07:22:48 +110.564582 17.373227 2023-09-20-07:22:54 +110.564585 17.373226 2023-09-20-07:23:00 +110.564586 17.373225 2023-09-20-07:23:06 +110.564588 17.373226 2023-09-20-07:23:12 +110.564587 17.373230 2023-09-20-07:23:18 +110.564589 17.373228 2023-09-20-07:23:30 +110.564590 17.373226 2023-09-20-07:23:36 +110.564590 17.373225 2023-09-20-07:23:42 +110.564588 17.373218 2023-09-20-07:23:48 +110.564586 17.373217 2023-09-20-07:23:54 +110.564586 17.373217 2023-09-20-07:24:00 +110.564586 17.373214 2023-09-20-07:24:06 +110.564589 17.373215 2023-09-20-07:24:12 +110.564590 17.373214 2023-09-20-07:24:18 +110.564590 17.373208 2023-09-20-07:24:36 +110.564598 17.373215 2023-09-20-07:24:42 +110.564608 17.373215 2023-09-20-07:24:48 +110.564605 17.373211 2023-09-20-07:24:54 +110.564612 17.373219 2023-09-20-07:25:00 +110.564627 17.373235 2023-09-20-07:25:06 +110.564619 17.373222 2023-09-20-07:25:12 +110.564623 17.373225 2023-09-20-07:25:18 +110.564629 17.373230 2023-09-20-07:25:30 +110.564634 17.373236 2023-09-20-07:25:36 +110.564640 17.373240 2023-09-20-07:25:42 +110.564643 17.373242 2023-09-20-07:25:48 +110.564647 17.373248 2023-09-20-07:25:54 +110.564651 17.373251 2023-09-20-07:26:00 +110.564656 17.373256 2023-09-20-07:26:06 +110.564660 17.373261 2023-09-20-07:26:12 +110.564666 17.373265 2023-09-20-07:26:18 +110.564673 17.373269 2023-09-20-07:26:24 +110.564678 17.373275 2023-09-20-07:26:30 +110.564685 17.373276 2023-09-20-07:26:36 +110.564694 17.373279 2023-09-20-07:26:42 +110.564700 17.373281 2023-09-20-07:26:48 +110.564710 17.373283 2023-09-20-07:26:54 +110.564718 17.373284 2023-09-20-07:27:00 +110.564726 17.373285 2023-09-20-07:27:06 +110.564734 17.373289 2023-09-20-07:27:12 +110.564738 17.373290 2023-09-20-07:27:18 +110.564744 17.373291 2023-09-20-07:27:30 +110.564744 17.373291 2023-09-20-07:27:36 +110.564746 17.373290 2023-09-20-07:27:42 +110.564746 17.373292 2023-09-20-07:27:48 +110.564748 17.373293 2023-09-20-07:27:54 +110.564748 17.373293 2023-09-20-07:28:00 +110.564748 17.373293 2023-09-20-07:28:06 +110.564751 17.373295 2023-09-20-07:28:12 +110.564750 17.373297 2023-09-20-07:28:18 +110.564752 17.373300 2023-09-20-07:28:30 +110.564754 17.373300 2023-09-20-07:28:36 +110.564754 17.373301 2023-09-20-07:28:42 +110.564752 17.373302 2023-09-20-07:28:48 +110.564751 17.373302 2023-09-20-07:28:54 +110.564750 17.373301 2023-09-20-07:29:00 +110.564748 17.373294 2023-09-20-07:29:06 +110.564745 17.373291 2023-09-20-07:29:12 +110.564741 17.373287 2023-09-20-07:29:18 +110.564738 17.373280 2023-09-20-07:29:30 +110.564733 17.373276 2023-09-20-07:29:36 +110.564732 17.373270 2023-09-20-07:29:42 +110.564727 17.373264 2023-09-20-07:29:48 +110.564724 17.373260 2023-09-20-07:29:54 +110.564719 17.373255 2023-09-20-07:30:00 +110.564717 17.373251 2023-09-20-07:30:06 +110.564713 17.373247 2023-09-20-07:30:12 +110.564708 17.373242 2023-09-20-07:30:18 +110.564704 17.373239 2023-09-20-07:30:30 +110.564700 17.373236 2023-09-20-07:30:36 +110.564698 17.373235 2023-09-20-07:30:42 +110.564697 17.373235 2023-09-20-07:30:48 +110.564694 17.373240 2023-09-20-07:30:54 +110.564690 17.373243 2023-09-20-07:31:00 +110.564690 17.373247 2023-09-20-07:31:06 +110.564689 17.373257 2023-09-20-07:31:12 +110.564692 17.373264 2023-09-20-07:31:18 +110.564691 17.373273 2023-09-20-07:31:30 +110.564691 17.373279 2023-09-20-07:31:36 +110.564692 17.373287 2023-09-20-07:31:42 +110.564691 17.373293 2023-09-20-07:31:48 +110.564693 17.373300 2023-09-20-07:31:54 +110.564690 17.373305 2023-09-20-07:32:00 +110.564692 17.373308 2023-09-20-07:32:06 +110.564690 17.373314 2023-09-20-07:32:12 +110.564693 17.373318 2023-09-20-07:32:18 +110.564694 17.373320 2023-09-20-07:32:30 +110.564694 17.373322 2023-09-20-07:32:36 +110.564700 17.373323 2023-09-20-07:32:42 +110.564699 17.373323 2023-09-20-07:32:48 +110.564702 17.373323 2023-09-20-07:32:54 +110.564703 17.373321 2023-09-20-07:33:00 +110.564703 17.373318 2023-09-20-07:33:06 +110.564702 17.373317 2023-09-20-07:33:12 +110.564700 17.373315 2023-09-20-07:33:18 +110.564695 17.373311 2023-09-20-07:33:30 +110.564693 17.373309 2023-09-20-07:33:36 +110.564691 17.373309 2023-09-20-07:33:42 +110.564689 17.373310 2023-09-20-07:33:48 +110.564687 17.373310 2023-09-20-07:33:54 +110.564685 17.373309 2023-09-20-07:34:00 +110.564686 17.373310 2023-09-20-07:34:06 +110.564688 17.373309 2023-09-20-07:34:12 +110.564688 17.373313 2023-09-20-07:34:18 +110.564691 17.373311 2023-09-20-07:34:30 +110.564691 17.373309 2023-09-20-07:34:36 +110.564693 17.373311 2023-09-20-07:34:42 +110.564693 17.373311 2023-09-20-07:34:48 +110.564695 17.373314 2023-09-20-07:34:54 +110.564699 17.373315 2023-09-20-07:35:00 +110.564699 17.373316 2023-09-20-07:35:06 +110.564701 17.373319 2023-09-20-07:35:12 +110.564706 17.373320 2023-09-20-07:35:18 +110.564708 17.373324 2023-09-20-07:35:30 +110.564711 17.373324 2023-09-20-07:35:36 +110.564714 17.373325 2023-09-20-07:35:42 +110.564714 17.373327 2023-09-20-07:35:48 +110.564716 17.373325 2023-09-20-07:35:54 +110.564718 17.373327 2023-09-20-07:36:00 +110.564721 17.373324 2023-09-20-07:36:06 +110.564724 17.373323 2023-09-20-07:36:12 +110.564723 17.373326 2023-09-20-07:36:18 +110.564727 17.373326 2023-09-20-07:36:30 +110.564731 17.373328 2023-09-20-07:36:36 +110.564730 17.373328 2023-09-20-07:36:42 +110.564732 17.373330 2023-09-20-07:36:48 +110.564730 17.373328 2023-09-20-07:36:54 +110.564728 17.373326 2023-09-20-07:37:00 +110.564725 17.373323 2023-09-20-07:37:06 +110.564724 17.373318 2023-09-20-07:37:12 +110.564721 17.373315 2023-09-20-07:37:18 +110.564719 17.373313 2023-09-20-07:37:30 +110.564719 17.373313 2023-09-20-07:37:36 +110.564717 17.373312 2023-09-20-07:37:42 +110.564715 17.373307 2023-09-20-07:37:48 +110.564713 17.373308 2023-09-20-07:37:54 +110.564710 17.373302 2023-09-20-07:38:00 +110.564710 17.373298 2023-09-20-07:38:06 +110.564709 17.373299 2023-09-20-07:38:12 +110.564708 17.373295 2023-09-20-07:38:18 +110.564708 17.373292 2023-09-20-07:38:30 +110.564709 17.373291 2023-09-20-07:38:36 +110.564710 17.373292 2023-09-20-07:38:42 +110.564709 17.373294 2023-09-20-07:38:48 +110.564709 17.373292 2023-09-20-07:38:54 +110.564706 17.373293 2023-09-20-07:39:00 +110.564707 17.373293 2023-09-20-07:39:06 +110.564707 17.373295 2023-09-20-07:39:12 +110.564707 17.373297 2023-09-20-07:39:18 +110.564709 17.373295 2023-09-20-07:39:30 +110.564707 17.373293 2023-09-20-07:39:36 +110.564710 17.373290 2023-09-20-07:39:42 +110.564710 17.373290 2023-09-20-07:39:48 +110.564706 17.373283 2023-09-20-07:39:54 +110.564708 17.373280 2023-09-20-07:40:00 +110.564702 17.373276 2023-09-20-07:40:06 +110.564698 17.373277 2023-09-20-07:40:12 +110.564692 17.373274 2023-09-20-07:40:18 +110.564684 17.373274 2023-09-20-07:40:30 +110.564677 17.373273 2023-09-20-07:40:36 +110.564669 17.373276 2023-09-20-07:40:42 +110.564661 17.373276 2023-09-20-07:40:48 +110.564655 17.373277 2023-09-20-07:40:54 +110.564651 17.373278 2023-09-20-07:41:00 +110.564647 17.373279 2023-09-20-07:41:06 +110.564650 17.373283 2023-09-20-07:41:12 +110.564654 17.373285 2023-09-20-07:41:18 +110.564663 17.373291 2023-09-20-07:41:30 +110.564676 17.373295 2023-09-20-07:41:36 +110.564687 17.373299 2023-09-20-07:41:42 +110.564697 17.373304 2023-09-20-07:41:48 +110.564706 17.373307 2023-09-20-07:41:54 +110.564715 17.373311 2023-09-20-07:42:00 +110.564721 17.373312 2023-09-20-07:42:06 +110.564724 17.373313 2023-09-20-07:42:12 +110.564729 17.373316 2023-09-20-07:42:18 +110.564734 17.373318 2023-09-20-07:42:30 +110.564741 17.373320 2023-09-20-07:42:36 +110.564745 17.373322 2023-09-20-07:42:42 +110.564748 17.373324 2023-09-20-07:42:48 +110.564753 17.373329 2023-09-20-07:43:00 +110.564753 17.373331 2023-09-20-07:43:06 +110.564757 17.373334 2023-09-20-07:43:12 +110.564757 17.373337 2023-09-20-07:43:18 +110.564753 17.373340 2023-09-20-07:43:30 +110.564752 17.373346 2023-09-20-07:43:36 +110.564750 17.373349 2023-09-20-07:43:42 +110.564749 17.373358 2023-09-20-07:43:48 +110.564747 17.373355 2023-09-20-07:43:54 +110.564745 17.373358 2023-09-20-07:44:00 +110.564745 17.373365 2023-09-20-07:44:06 +110.564741 17.373367 2023-09-20-07:44:18 +110.564736 17.373348 2023-09-20-07:44:30 +110.564734 17.373336 2023-09-20-07:44:36 +110.564729 17.373327 2023-09-20-07:44:42 +110.564723 17.373323 2023-09-20-07:44:48 +110.564721 17.373313 2023-09-20-07:44:54 +110.564717 17.373305 2023-09-20-07:45:00 +110.564714 17.373303 2023-09-20-07:45:06 +110.564711 17.373305 2023-09-20-07:45:12 +110.564708 17.373306 2023-09-20-07:45:18 +110.564701 17.373305 2023-09-20-07:45:30 +110.564698 17.373304 2023-09-20-07:45:36 +110.564695 17.373305 2023-09-20-07:45:42 +110.564694 17.373308 2023-09-20-07:45:48 +110.564691 17.373313 2023-09-20-07:45:54 +110.564691 17.373319 2023-09-20-07:46:00 +110.564695 17.373329 2023-09-20-07:46:06 +110.564697 17.373333 2023-09-20-07:46:12 +110.564699 17.373336 2023-09-20-07:46:18 +110.564702 17.373341 2023-09-20-07:46:30 +110.564704 17.373345 2023-09-20-07:46:36 +110.564704 17.373346 2023-09-20-07:46:42 +110.564704 17.373346 2023-09-20-07:46:48 +110.564704 17.373347 2023-09-20-07:46:54 +110.564699 17.373348 2023-09-20-07:47:00 +110.564694 17.373347 2023-09-20-07:47:06 +110.564689 17.373350 2023-09-20-07:47:12 +110.564685 17.373349 2023-09-20-07:47:18 +110.564676 17.373347 2023-09-20-07:47:30 +110.564667 17.373346 2023-09-20-07:47:36 +110.564662 17.373346 2023-09-20-07:47:42 +110.564657 17.373345 2023-09-20-07:47:48 +110.564654 17.373346 2023-09-20-07:47:54 +110.564653 17.373344 2023-09-20-07:48:00 +110.564657 17.373350 2023-09-20-07:48:06 +110.564656 17.373353 2023-09-20-07:48:12 +110.564666 17.373349 2023-09-20-07:48:18 +110.564665 17.373353 2023-09-20-07:48:30 +110.564664 17.373354 2023-09-20-07:48:36 +110.564667 17.373356 2023-09-20-07:48:42 +110.564667 17.373354 2023-09-20-07:48:48 +110.564666 17.373357 2023-09-20-07:48:54 +110.564665 17.373360 2023-09-20-07:49:00 +110.564666 17.373359 2023-09-20-07:49:06 +110.564669 17.373359 2023-09-20-07:49:12 +110.564672 17.373360 2023-09-20-07:49:18 +110.564676 17.373365 2023-09-20-07:49:30 +110.564680 17.373365 2023-09-20-07:49:36 +110.564680 17.373369 2023-09-20-07:49:42 +110.564686 17.373372 2023-09-20-07:49:48 +110.564689 17.373379 2023-09-20-07:49:54 +110.564695 17.373384 2023-09-20-07:50:00 +110.564700 17.373383 2023-09-20-07:50:06 +110.564703 17.373388 2023-09-20-07:50:12 +110.564712 17.373392 2023-09-20-07:50:18 +110.564719 17.373392 2023-09-20-07:50:30 +110.564727 17.373394 2023-09-20-07:50:36 +110.564730 17.373391 2023-09-20-07:50:42 +110.564740 17.373400 2023-09-20-07:50:48 +110.564756 17.373409 2023-09-20-07:51:00 +110.564769 17.373411 2023-09-20-07:51:06 +110.564782 17.373421 2023-09-20-07:51:12 +110.564794 17.373430 2023-09-20-07:51:18 +110.564842 17.373458 2023-09-20-07:51:30 +110.564841 17.373468 2023-09-20-07:51:36 +110.564859 17.373479 2023-09-20-07:51:48 +110.564879 17.373492 2023-09-20-07:51:54 +110.564896 17.373501 2023-09-20-07:52:00 +110.564910 17.373506 2023-09-20-07:52:06 +110.564910 17.373508 2023-09-20-07:52:12 +110.564930 17.373511 2023-09-20-07:52:18 +110.564945 17.373511 2023-09-20-07:52:30 +110.564952 17.373504 2023-09-20-07:52:36 +110.564958 17.373499 2023-09-20-07:52:42 +110.564958 17.373492 2023-09-20-07:52:48 +110.564960 17.373488 2023-09-20-07:52:54 +110.564956 17.373479 2023-09-20-07:53:00 +110.564948 17.373476 2023-09-20-07:53:06 +110.564944 17.373477 2023-09-20-07:53:12 +110.564939 17.373471 2023-09-20-07:53:18 +110.564931 17.373469 2023-09-20-07:53:30 +110.564925 17.373463 2023-09-20-07:53:36 +110.564922 17.373463 2023-09-20-07:53:42 +110.564918 17.373462 2023-09-20-07:53:48 +110.564911 17.373453 2023-09-20-07:53:54 +110.564904 17.373449 2023-09-20-07:54:00 +110.564896 17.373437 2023-09-20-07:54:06 +110.564890 17.373436 2023-09-20-07:54:12 +110.564880 17.373426 2023-09-20-07:54:18 +110.564868 17.373411 2023-09-20-07:54:30 +110.564858 17.373399 2023-09-20-07:54:36 +110.564848 17.373390 2023-09-20-07:54:42 +110.564841 17.373383 2023-09-20-07:54:48 +110.564831 17.373374 2023-09-20-07:54:54 +110.564828 17.373369 2023-09-20-07:55:00 +110.564823 17.373366 2023-09-20-07:55:06 +110.564819 17.373359 2023-09-20-07:55:12 +110.564816 17.373357 2023-09-20-07:55:18 +110.564812 17.373347 2023-09-20-07:55:30 +110.564809 17.373344 2023-09-20-07:55:36 +110.564805 17.373339 2023-09-20-07:55:42 +110.564802 17.373332 2023-09-20-07:55:48 +110.564800 17.373329 2023-09-20-07:55:54 +110.564788 17.373320 2023-09-20-07:56:06 +110.564777 17.373315 2023-09-20-07:56:12 +110.564787 17.373320 2023-09-20-07:56:18 +110.564785 17.373330 2023-09-20-07:56:30 +110.564791 17.373335 2023-09-20-07:56:36 +110.564782 17.373322 2023-09-20-07:56:42 +110.564782 17.373324 2023-09-20-07:56:54 +110.564780 17.373323 2023-09-20-07:57:06 +110.564777 17.373323 2023-09-20-07:57:12 +110.564789 17.373319 2023-09-20-07:57:18 +110.564780 17.373316 2023-09-20-07:57:24 +110.564777 17.373317 2023-09-20-07:57:30 +110.564771 17.373322 2023-09-20-07:57:36 +110.564766 17.373317 2023-09-20-07:57:48 +110.564763 17.373320 2023-09-20-07:57:54 +110.564750 17.373320 2023-09-20-07:58:00 +110.564741 17.373326 2023-09-20-07:58:06 +110.564733 17.373327 2023-09-20-07:58:12 +110.564727 17.373330 2023-09-20-07:58:18 +110.564729 17.373341 2023-09-20-07:58:36 +110.564734 17.373345 2023-09-20-07:58:42 +110.564735 17.373350 2023-09-20-07:58:48 +110.564737 17.373349 2023-09-20-07:58:54 +110.564744 17.373352 2023-09-20-07:59:00 +110.564745 17.373356 2023-09-20-07:59:06 +110.564749 17.373351 2023-09-20-07:59:12 +110.564741 17.373347 2023-09-20-07:59:18 +110.564731 17.373347 2023-09-20-07:59:30 +110.564726 17.373349 2023-09-20-07:59:36 +110.564714 17.373350 2023-09-20-07:59:42 +110.564705 17.373348 2023-09-20-07:59:48 +110.564689 17.373352 2023-09-20-07:59:54 +110.564676 17.373359 2023-09-20-08:00:00 +110.564672 17.373359 2023-09-20-08:00:06 +110.564660 17.373365 2023-09-20-08:00:12 +110.564656 17.373369 2023-09-20-08:00:18 +110.564650 17.373377 2023-09-20-08:00:30 +110.564652 17.373376 2023-09-20-08:00:36 +110.564652 17.373382 2023-09-20-08:00:42 +110.564648 17.373387 2023-09-20-08:00:48 +110.564658 17.373391 2023-09-20-08:00:54 +110.564660 17.373398 2023-09-20-08:01:00 +110.564661 17.373400 2023-09-20-08:01:06 +110.564662 17.373403 2023-09-20-08:01:12 +110.564665 17.373404 2023-09-20-08:01:18 +110.564669 17.373406 2023-09-20-08:01:30 +110.564666 17.373413 2023-09-20-08:01:36 +110.564668 17.373412 2023-09-20-08:01:42 +110.564670 17.373411 2023-09-20-08:01:48 +110.564671 17.373413 2023-09-20-08:01:54 +110.564674 17.373419 2023-09-20-08:02:00 +110.564673 17.373422 2023-09-20-08:02:06 +110.564678 17.373423 2023-09-20-08:02:12 +110.564682 17.373424 2023-09-20-08:02:18 +110.564686 17.373425 2023-09-20-08:02:30 +110.564691 17.373431 2023-09-20-08:02:36 +110.564698 17.373428 2023-09-20-08:02:42 +110.564703 17.373431 2023-09-20-08:02:48 +110.564711 17.373438 2023-09-20-08:02:54 +110.564721 17.373445 2023-09-20-08:03:00 +110.564735 17.373455 2023-09-20-08:03:06 +110.564751 17.373468 2023-09-20-08:03:12 +110.564769 17.373477 2023-09-20-08:03:18 +110.564880 17.373553 2023-09-20-08:03:36 +110.564898 17.373580 2023-09-20-08:03:42 +110.564904 17.373577 2023-09-20-08:03:48 +110.564913 17.373585 2023-09-20-08:03:54 +110.564931 17.373582 2023-09-20-08:04:00 +110.564971 17.373586 2023-09-20-08:04:12 +110.564999 17.373571 2023-09-20-08:04:18 +110.565007 17.373560 2023-09-20-08:04:30 +110.565019 17.373551 2023-09-20-08:04:36 +110.565010 17.373548 2023-09-20-08:04:42 +110.565003 17.373549 2023-09-20-08:04:48 +110.565004 17.373551 2023-09-20-08:04:54 +110.564997 17.373546 2023-09-20-08:05:00 +110.564991 17.373542 2023-09-20-08:05:06 +110.564977 17.373537 2023-09-20-08:05:12 +110.564965 17.373533 2023-09-20-08:05:18 +110.564946 17.373522 2023-09-20-08:05:30 +110.564927 17.373514 2023-09-20-08:05:36 +110.564911 17.373503 2023-09-20-08:05:42 +110.564892 17.373492 2023-09-20-08:05:48 +110.564876 17.373483 2023-09-20-08:05:54 +110.564862 17.373475 2023-09-20-08:06:00 +110.564852 17.373463 2023-09-20-08:06:06 +110.564835 17.373454 2023-09-20-08:06:12 +110.564824 17.373447 2023-09-20-08:06:18 +110.564811 17.373439 2023-09-20-08:06:30 +110.564799 17.373434 2023-09-20-08:06:36 +110.564790 17.373431 2023-09-20-08:06:42 +110.564777 17.373425 2023-09-20-08:06:48 +110.564771 17.373425 2023-09-20-08:06:54 +110.564758 17.373421 2023-09-20-08:07:00 +110.564748 17.373421 2023-09-20-08:07:06 +110.564740 17.373422 2023-09-20-08:07:12 +110.564734 17.373418 2023-09-20-08:07:18 +110.564721 17.373417 2023-09-20-08:07:30 +110.564710 17.373414 2023-09-20-08:07:36 +110.564696 17.373413 2023-09-20-08:07:42 +110.564686 17.373413 2023-09-20-08:07:48 +110.564677 17.373409 2023-09-20-08:07:54 +110.564664 17.373407 2023-09-20-08:08:00 +110.564654 17.373405 2023-09-20-08:08:06 +110.564646 17.373406 2023-09-20-08:08:12 +110.564637 17.373404 2023-09-20-08:08:18 +110.564626 17.373404 2023-09-20-08:08:30 +110.564613 17.373404 2023-09-20-08:08:36 +110.564604 17.373401 2023-09-20-08:08:42 +110.564595 17.373405 2023-09-20-08:08:48 +110.564585 17.373402 2023-09-20-08:08:54 +110.564578 17.373404 2023-09-20-08:09:00 +110.564570 17.373405 2023-09-20-08:09:06 +110.564563 17.373400 2023-09-20-08:09:12 +110.564554 17.373403 2023-09-20-08:09:18 +110.564547 17.373404 2023-09-20-08:09:30 +110.564541 17.373406 2023-09-20-08:09:36 +110.564532 17.373401 2023-09-20-08:09:42 +110.564525 17.373401 2023-09-20-08:09:48 +110.564519 17.373400 2023-09-20-08:09:54 +110.564515 17.373394 2023-09-20-08:10:00 +110.564515 17.373389 2023-09-20-08:10:06 +110.564514 17.373380 2023-09-20-08:10:12 +110.564509 17.373376 2023-09-20-08:10:18 +110.564503 17.373357 2023-09-20-08:10:30 +110.564495 17.373338 2023-09-20-08:10:36 +110.564487 17.373320 2023-09-20-08:10:42 +110.564478 17.373298 2023-09-20-08:10:48 +110.564464 17.373274 2023-09-20-08:10:54 +110.564455 17.373244 2023-09-20-08:11:00 +110.564444 17.373214 2023-09-20-08:11:06 +110.564434 17.373189 2023-09-20-08:11:12 +110.564424 17.373164 2023-09-20-08:11:18 +110.564417 17.373128 2023-09-20-08:11:30 +110.564412 17.373083 2023-09-20-08:11:42 +110.564431 17.373007 2023-09-20-08:11:54 +110.564445 17.372949 2023-09-20-08:12:00 +110.564460 17.372883 2023-09-20-08:12:06 +110.564432 17.372736 2023-09-20-08:12:18 +110.564457 17.372699 2023-09-20-08:12:30 +110.564474 17.372683 2023-09-20-08:12:36 +110.564485 17.372637 2023-09-20-08:12:42 +110.564479 17.372597 2023-09-20-08:12:48 +110.564489 17.372605 2023-09-20-08:13:00 +110.564498 17.372567 2023-09-20-08:13:06 +110.564514 17.372528 2023-09-20-08:13:12 +110.564524 17.372490 2023-09-20-08:13:18 +110.564660 17.372054 2023-09-20-08:14:06 +110.564774 17.371851 2023-09-20-08:14:36 +110.564798 17.371801 2023-09-20-08:14:42 +110.564814 17.371751 2023-09-20-08:14:48 +110.564815 17.371739 2023-09-20-08:14:54 +110.564837 17.371506 2023-09-20-08:15:06 +110.564828 17.371468 2023-09-20-08:15:12 +110.564810 17.371425 2023-09-20-08:15:18 +110.564793 17.371333 2023-09-20-08:15:30 +110.564805 17.371357 2023-09-20-08:15:42 +110.564798 17.371303 2023-09-20-08:15:48 +110.564792 17.371249 2023-09-20-08:15:54 +110.564790 17.371194 2023-09-20-08:16:00 +110.564787 17.371146 2023-09-20-08:16:06 +110.564785 17.371095 2023-09-20-08:16:12 +110.564785 17.371026 2023-09-20-08:16:24 +110.564783 17.370966 2023-09-20-08:16:30 +110.564784 17.370905 2023-09-20-08:16:36 +110.564782 17.370843 2023-09-20-08:16:42 +110.564785 17.370779 2023-09-20-08:16:48 +110.564785 17.370717 2023-09-20-08:16:54 +110.564786 17.370659 2023-09-20-08:17:00 +110.564789 17.370607 2023-09-20-08:17:06 +110.564786 17.370548 2023-09-20-08:17:12 +110.564786 17.370491 2023-09-20-08:17:18 +110.564785 17.370419 2023-09-20-08:17:30 +110.564785 17.370356 2023-09-20-08:17:36 +110.564784 17.370291 2023-09-20-08:17:42 +110.564786 17.370225 2023-09-20-08:17:48 +110.564789 17.370161 2023-09-20-08:17:54 +110.564794 17.370097 2023-09-20-08:18:00 +110.564796 17.370042 2023-09-20-08:18:06 +110.564800 17.369983 2023-09-20-08:18:12 +110.564802 17.369925 2023-09-20-08:18:18 +110.564803 17.369850 2023-09-20-08:18:30 +110.564804 17.369782 2023-09-20-08:18:36 +110.564803 17.369718 2023-09-20-08:18:42 +110.564802 17.369651 2023-09-20-08:18:48 +110.564802 17.369584 2023-09-20-08:18:54 +110.564804 17.369515 2023-09-20-08:19:00 +110.564805 17.369457 2023-09-20-08:19:06 +110.564806 17.369397 2023-09-20-08:19:12 +110.564808 17.369339 2023-09-20-08:19:18 +110.564809 17.369274 2023-09-20-08:19:30 +110.564809 17.369221 2023-09-20-08:19:36 +110.564809 17.369171 2023-09-20-08:19:42 +110.564810 17.369129 2023-09-20-08:19:48 +110.564807 17.369090 2023-09-20-08:19:54 +110.564808 17.369055 2023-09-20-08:20:00 +110.564804 17.369029 2023-09-20-08:20:06 +110.564801 17.369002 2023-09-20-08:20:12 +110.564799 17.368980 2023-09-20-08:20:18 +110.564794 17.368951 2023-09-20-08:20:30 +110.564790 17.368927 2023-09-20-08:20:36 +110.564786 17.368905 2023-09-20-08:20:42 +110.564783 17.368881 2023-09-20-08:20:48 +110.564778 17.368856 2023-09-20-08:21:00 +110.564808 17.368807 2023-09-20-08:22:00 +110.564814 17.368776 2023-09-20-08:22:06 +110.564810 17.368748 2023-09-20-08:22:12 +110.564816 17.368743 2023-09-20-08:22:18 +110.564807 17.368694 2023-09-20-08:22:30 +110.564821 17.368699 2023-09-20-08:22:36 +110.564817 17.368716 2023-09-20-08:22:42 +110.564821 17.368699 2023-09-20-08:22:48 +110.564822 17.368684 2023-09-20-08:22:54 +110.564824 17.368667 2023-09-20-08:23:00 +110.564831 17.368656 2023-09-20-08:23:06 +110.564832 17.368643 2023-09-20-08:23:12 +110.564835 17.368627 2023-09-20-08:23:18 +110.564833 17.368612 2023-09-20-08:23:30 +110.564839 17.368598 2023-09-20-08:23:36 +110.564845 17.368583 2023-09-20-08:23:42 +110.564846 17.368573 2023-09-20-08:23:48 +110.564851 17.368559 2023-09-20-08:23:54 +110.564854 17.368543 2023-09-20-08:24:00 +110.564856 17.368534 2023-09-20-08:24:06 +110.564859 17.368522 2023-09-20-08:24:12 +110.564860 17.368511 2023-09-20-08:24:18 +110.564865 17.368493 2023-09-20-08:24:30 +110.564867 17.368481 2023-09-20-08:24:36 +110.564870 17.368472 2023-09-20-08:24:42 +110.564869 17.368464 2023-09-20-08:24:48 +110.564871 17.368457 2023-09-20-08:24:54 +110.564876 17.368446 2023-09-20-08:25:00 +110.564880 17.368444 2023-09-20-08:25:06 +110.564880 17.368441 2023-09-20-08:25:12 +110.564881 17.368435 2023-09-20-08:25:18 +110.564880 17.368426 2023-09-20-08:25:30 +110.564882 17.368414 2023-09-20-08:25:36 +110.564881 17.368412 2023-09-20-08:25:42 +110.564882 17.368401 2023-09-20-08:25:48 +110.564881 17.368383 2023-09-20-08:25:54 +110.564881 17.368372 2023-09-20-08:26:00 +110.564881 17.368351 2023-09-20-08:26:06 +110.564885 17.368329 2023-09-20-08:26:12 +110.564888 17.368298 2023-09-20-08:26:18 +110.564898 17.368255 2023-09-20-08:26:30 +110.564907 17.368217 2023-09-20-08:26:36 +110.564916 17.368179 2023-09-20-08:26:42 +110.564922 17.368136 2023-09-20-08:26:48 +110.564926 17.368095 2023-09-20-08:26:54 +110.564932 17.368052 2023-09-20-08:27:00 +110.564928 17.368011 2023-09-20-08:27:06 +110.564920 17.367975 2023-09-20-08:27:12 +110.564917 17.367942 2023-09-20-08:27:18 +110.564701 17.367860 2023-09-20-08:27:42 +110.564702 17.367862 2023-09-20-08:27:48 +110.564687 17.367865 2023-09-20-08:27:54 +110.564670 17.367886 2023-09-20-08:28:30 +110.564676 17.367871 2023-09-20-08:28:36 +110.564658 17.367892 2023-09-20-08:28:54 +110.564635 17.367887 2023-09-20-08:29:06 +110.564640 17.367893 2023-09-20-08:29:18 +110.564615 17.367901 2023-09-20-08:29:24 +110.564606 17.367895 2023-09-20-08:29:30 +110.564593 17.367897 2023-09-20-08:29:36 +110.564586 17.367898 2023-09-20-08:29:42 +110.564599 17.367898 2023-09-20-08:29:48 +110.564588 17.367898 2023-09-20-08:29:54 +110.564576 17.367896 2023-09-20-08:30:00 +110.564565 17.367892 2023-09-20-08:30:06 +110.564554 17.367888 2023-09-20-08:30:12 +110.564545 17.367884 2023-09-20-08:30:18 +110.564531 17.367881 2023-09-20-08:30:24 +110.564518 17.367877 2023-09-20-08:30:30 +110.564504 17.367869 2023-09-20-08:30:36 +110.564492 17.367866 2023-09-20-08:30:42 +110.564483 17.367863 2023-09-20-08:30:48 +110.564471 17.367861 2023-09-20-08:30:54 +110.564460 17.367856 2023-09-20-08:31:00 +110.564447 17.367853 2023-09-20-08:31:06 +110.564437 17.367849 2023-09-20-08:31:12 +110.564426 17.367841 2023-09-20-08:31:30 +110.564347 17.367822 2023-09-20-08:32:00 +110.564323 17.367845 2023-09-20-08:32:18 +110.564306 17.367867 2023-09-20-08:32:30 +110.564311 17.367895 2023-09-20-08:32:36 +110.564320 17.367906 2023-09-20-08:32:42 +110.564341 17.367911 2023-09-20-08:32:48 +110.564358 17.367935 2023-09-20-08:32:54 +110.564341 17.367916 2023-09-20-08:33:00 +110.564441 17.367965 2023-09-20-08:33:12 +110.564454 17.367950 2023-09-20-08:33:18 +110.564475 17.367934 2023-09-20-08:33:30 +110.564476 17.367908 2023-09-20-08:33:36 +110.564468 17.367890 2023-09-20-08:33:42 +110.564466 17.367870 2023-09-20-08:33:48 +110.564463 17.367891 2023-09-20-08:34:00 +110.564462 17.367863 2023-09-20-08:34:06 +110.564457 17.367840 2023-09-20-08:34:12 +110.564449 17.367819 2023-09-20-08:34:18 +110.564443 17.367801 2023-09-20-08:34:24 +110.564433 17.367784 2023-09-20-08:34:30 +110.564426 17.367773 2023-09-20-08:34:36 +110.564418 17.367764 2023-09-20-08:34:42 +110.564410 17.367757 2023-09-20-08:34:48 +110.564397 17.367751 2023-09-20-08:34:54 +110.564392 17.367745 2023-09-20-08:35:00 +110.564381 17.367740 2023-09-20-08:35:06 +110.564373 17.367735 2023-09-20-08:35:12 +110.564360 17.367730 2023-09-20-08:35:18 +110.564352 17.367731 2023-09-20-08:35:24 +110.564345 17.367730 2023-09-20-08:35:30 +110.564337 17.367731 2023-09-20-08:35:36 +110.564332 17.367733 2023-09-20-08:35:48 +110.564324 17.367736 2023-09-20-08:35:54 +110.564321 17.367740 2023-09-20-08:36:00 +110.564317 17.367743 2023-09-20-08:36:06 +110.564314 17.367746 2023-09-20-08:36:12 +110.564311 17.367748 2023-09-20-08:36:18 +110.564306 17.367751 2023-09-20-08:36:30 +110.564306 17.367751 2023-09-20-08:36:36 +110.564304 17.367752 2023-09-20-08:36:42 +110.564301 17.367751 2023-09-20-08:36:48 +110.564302 17.367749 2023-09-20-08:36:54 +110.564304 17.367747 2023-09-20-08:37:00 +110.564307 17.367743 2023-09-20-08:37:06 +110.564308 17.367740 2023-09-20-08:37:12 +110.564310 17.367734 2023-09-20-08:37:18 +110.564313 17.367730 2023-09-20-08:37:30 +110.564316 17.367727 2023-09-20-08:37:36 +110.564318 17.367724 2023-09-20-08:37:42 +110.564318 17.367722 2023-09-20-08:37:48 +110.564313 17.367721 2023-09-20-08:37:54 +110.564314 17.367720 2023-09-20-08:38:00 +110.564312 17.367720 2023-09-20-08:38:06 +110.564309 17.367719 2023-09-20-08:38:12 +110.564309 17.367718 2023-09-20-08:38:18 +110.564309 17.367717 2023-09-20-08:38:30 +110.564311 17.367715 2023-09-20-08:38:36 +110.564313 17.367714 2023-09-20-08:38:42 +110.564313 17.367712 2023-09-20-08:38:48 +110.564315 17.367711 2023-09-20-08:38:54 +110.564314 17.367710 2023-09-20-08:39:00 +110.564314 17.367710 2023-09-20-08:39:06 +110.564313 17.367709 2023-09-20-08:39:12 +110.564310 17.367711 2023-09-20-08:39:18 +110.564308 17.367710 2023-09-20-08:39:24 +110.564306 17.367710 2023-09-20-08:39:30 +110.564304 17.367710 2023-09-20-08:39:36 +110.564301 17.367709 2023-09-20-08:39:42 +110.564299 17.367708 2023-09-20-08:39:48 +110.564297 17.367707 2023-09-20-08:39:54 +110.564294 17.367704 2023-09-20-08:40:00 +110.564292 17.367703 2023-09-20-08:40:06 +110.564290 17.367701 2023-09-20-08:40:12 +110.564287 17.367698 2023-09-20-08:40:18 +110.564285 17.367697 2023-09-20-08:40:30 +110.564282 17.367693 2023-09-20-08:40:36 +110.564280 17.367692 2023-09-20-08:40:42 +110.564276 17.367690 2023-09-20-08:40:48 +110.564270 17.367687 2023-09-20-08:40:54 +110.564267 17.367684 2023-09-20-08:41:00 +110.564263 17.367681 2023-09-20-08:41:06 +110.564260 17.367677 2023-09-20-08:41:12 +110.564260 17.367675 2023-09-20-08:41:18 +110.564259 17.367667 2023-09-20-08:41:30 +110.564260 17.367662 2023-09-20-08:41:36 +110.564259 17.367658 2023-09-20-08:41:42 +110.564261 17.367654 2023-09-20-08:41:48 +110.564261 17.367649 2023-09-20-08:41:54 +110.564260 17.367644 2023-09-20-08:42:00 +110.564259 17.367641 2023-09-20-08:42:06 +110.564260 17.367638 2023-09-20-08:42:12 +110.564259 17.367635 2023-09-20-08:42:18 +110.564260 17.367630 2023-09-20-08:42:30 +110.564259 17.367628 2023-09-20-08:42:36 +110.564259 17.367625 2023-09-20-08:42:42 +110.564258 17.367621 2023-09-20-08:42:48 +110.564258 17.367619 2023-09-20-08:42:54 +110.564259 17.367615 2023-09-20-08:43:00 +110.564255 17.367611 2023-09-20-08:43:06 +110.564251 17.367608 2023-09-20-08:43:12 +110.564247 17.367604 2023-09-20-08:43:18 +110.564243 17.367599 2023-09-20-08:43:30 +110.564240 17.367594 2023-09-20-08:43:36 +110.564236 17.367589 2023-09-20-08:43:42 +110.564234 17.367584 2023-09-20-08:43:48 +110.564233 17.367580 2023-09-20-08:43:54 +110.564231 17.367577 2023-09-20-08:44:00 +110.564230 17.367573 2023-09-20-08:44:06 +110.564226 17.367570 2023-09-20-08:44:12 +110.564225 17.367568 2023-09-20-08:44:18 +110.564224 17.367565 2023-09-20-08:44:30 +110.564221 17.367560 2023-09-20-08:44:36 +110.564218 17.367555 2023-09-20-08:44:42 +110.564216 17.367550 2023-09-20-08:44:48 +110.564214 17.367544 2023-09-20-08:44:54 +110.564213 17.367538 2023-09-20-08:45:00 +110.564214 17.367531 2023-09-20-08:45:06 +110.564214 17.367526 2023-09-20-08:45:12 +110.564216 17.367519 2023-09-20-08:45:18 +110.564213 17.367508 2023-09-20-08:45:30 +110.564212 17.367499 2023-09-20-08:45:36 +110.564210 17.367490 2023-09-20-08:45:42 +110.564205 17.367479 2023-09-20-08:45:48 +110.564201 17.367467 2023-09-20-08:45:54 +110.564197 17.367457 2023-09-20-08:46:00 +110.564191 17.367447 2023-09-20-08:46:06 +110.564185 17.367438 2023-09-20-08:46:12 +110.564183 17.367428 2023-09-20-08:46:18 +110.564177 17.367414 2023-09-20-08:46:30 +110.564173 17.367404 2023-09-20-08:46:36 +110.564168 17.367395 2023-09-20-08:46:42 +110.564165 17.367384 2023-09-20-08:46:48 +110.564161 17.367375 2023-09-20-08:46:54 +110.564156 17.367364 2023-09-20-08:47:00 +110.564152 17.367354 2023-09-20-08:47:12 +110.564147 17.367345 2023-09-20-08:47:18 +110.564142 17.367334 2023-09-20-08:47:30 +110.564138 17.367324 2023-09-20-08:47:36 +110.564135 17.367314 2023-09-20-08:47:42 +110.564131 17.367305 2023-09-20-08:47:48 +110.564128 17.367299 2023-09-20-08:47:54 +110.564124 17.367290 2023-09-20-08:48:00 +110.564118 17.367283 2023-09-20-08:48:06 +110.564112 17.367277 2023-09-20-08:48:12 +110.564105 17.367270 2023-09-20-08:48:18 +110.564099 17.367263 2023-09-20-08:48:30 +110.564092 17.367256 2023-09-20-08:48:36 +110.564084 17.367251 2023-09-20-08:48:42 +110.564077 17.367245 2023-09-20-08:48:48 +110.564069 17.367237 2023-09-20-08:49:00 +110.564061 17.367230 2023-09-20-08:49:06 +110.564053 17.367221 2023-09-20-08:49:12 +110.564040 17.367210 2023-09-20-08:49:18 +110.564049 17.367170 2023-09-20-08:49:24 +110.564029 17.367175 2023-09-20-08:49:30 +110.564018 17.367168 2023-09-20-08:49:36 +110.564008 17.367158 2023-09-20-08:49:42 +110.563998 17.367149 2023-09-20-08:49:48 +110.563988 17.367142 2023-09-20-08:49:54 +110.563965 17.367150 2023-09-20-08:50:00 +110.563953 17.367141 2023-09-20-08:50:06 +110.563947 17.367142 2023-09-20-08:50:12 +110.563936 17.367138 2023-09-20-08:50:18 +110.563928 17.367131 2023-09-20-08:50:30 +110.563917 17.367126 2023-09-20-08:50:36 +110.563911 17.367126 2023-09-20-08:50:42 +110.563907 17.367128 2023-09-20-08:50:48 +110.563900 17.367120 2023-09-20-08:50:54 +110.563890 17.367111 2023-09-20-08:51:00 +110.563891 17.367115 2023-09-20-08:51:06 +110.563889 17.367115 2023-09-20-08:51:12 +110.563881 17.367103 2023-09-20-08:51:18 +110.563876 17.367098 2023-09-20-08:51:24 +110.563869 17.367088 2023-09-20-08:51:30 +110.563868 17.367088 2023-09-20-08:51:36 +110.563861 17.367076 2023-09-20-08:51:42 +110.563851 17.367067 2023-09-20-08:51:48 +110.563847 17.367064 2023-09-20-08:51:54 +110.563837 17.367053 2023-09-20-08:52:00 +110.563832 17.367048 2023-09-20-08:52:06 +110.563824 17.367041 2023-09-20-08:52:12 +110.563828 17.367043 2023-09-20-08:52:18 +110.563826 17.367040 2023-09-20-08:52:24 +110.563817 17.367034 2023-09-20-08:52:30 +110.563816 17.367034 2023-09-20-08:52:36 +110.563812 17.367037 2023-09-20-08:52:42 +110.563810 17.367033 2023-09-20-08:52:48 +110.563805 17.367033 2023-09-20-08:52:54 +110.563795 17.367025 2023-09-20-08:53:00 +110.563796 17.367023 2023-09-20-08:53:06 +110.563785 17.367027 2023-09-20-08:53:12 +110.563779 17.367026 2023-09-20-08:53:18 +110.563770 17.367022 2023-09-20-08:53:24 +110.563766 17.367021 2023-09-20-08:53:30 +110.563752 17.367025 2023-09-20-08:53:36 +110.563738 17.367025 2023-09-20-08:53:42 +110.563736 17.367021 2023-09-20-08:53:48 +110.563726 17.367023 2023-09-20-08:53:54 +110.563717 17.367025 2023-09-20-08:54:00 +110.563709 17.367028 2023-09-20-08:54:06 +110.563701 17.367027 2023-09-20-08:54:12 +110.563699 17.367029 2023-09-20-08:54:18 +110.563701 17.366978 2023-09-20-08:54:30 +110.563696 17.366978 2023-09-20-08:54:36 +110.563684 17.366977 2023-09-20-08:54:42 +110.563678 17.366973 2023-09-20-08:54:48 +110.563670 17.366974 2023-09-20-08:54:54 +110.563638 17.367027 2023-09-20-08:55:00 +110.563625 17.367024 2023-09-20-08:55:06 +110.563614 17.367023 2023-09-20-08:55:12 +110.563602 17.367024 2023-09-20-08:55:18 +110.563590 17.367022 2023-09-20-08:55:24 +110.563582 17.367027 2023-09-20-08:55:30 +110.563573 17.367028 2023-09-20-08:55:36 +110.563565 17.367028 2023-09-20-08:55:42 +110.563554 17.367030 2023-09-20-08:55:48 +110.563546 17.367030 2023-09-20-08:55:54 +110.563537 17.367031 2023-09-20-08:56:00 +110.563527 17.367029 2023-09-20-08:56:06 +110.563517 17.367028 2023-09-20-08:56:12 +110.563508 17.367026 2023-09-20-08:56:18 +110.563502 17.367025 2023-09-20-08:56:24 +110.563490 17.367019 2023-09-20-08:56:30 +110.563483 17.367016 2023-09-20-08:56:36 +110.563476 17.367010 2023-09-20-08:56:42 +110.563465 17.367004 2023-09-20-08:56:48 +110.563453 17.367001 2023-09-20-08:56:54 +110.563445 17.366994 2023-09-20-08:57:00 +110.563436 17.366992 2023-09-20-08:57:06 +110.563428 17.366989 2023-09-20-08:57:12 +110.563418 17.366988 2023-09-20-08:57:18 +110.563416 17.366987 2023-09-20-08:57:24 +110.563411 17.366984 2023-09-20-08:57:30 +110.563402 17.366985 2023-09-20-08:57:36 +110.563398 17.366986 2023-09-20-08:57:42 +110.563394 17.366981 2023-09-20-08:57:48 +110.563385 17.366974 2023-09-20-08:57:54 +110.563378 17.366971 2023-09-20-08:58:00 +110.563373 17.366965 2023-09-20-08:58:06 +110.563371 17.366957 2023-09-20-08:58:12 +110.563356 17.366947 2023-09-20-08:58:18 +110.563344 17.366944 2023-09-20-08:58:24 +110.563341 17.366937 2023-09-20-08:58:36 +110.563313 17.366914 2023-09-20-08:58:48 +110.563263 17.366907 2023-09-20-08:59:00 +110.563281 17.366900 2023-09-20-08:59:06 +110.563257 17.366887 2023-09-20-08:59:12 +110.563250 17.366886 2023-09-20-08:59:18 +110.563240 17.366861 2023-09-20-08:59:30 +110.563255 17.366851 2023-09-20-08:59:36 +110.563249 17.366832 2023-09-20-08:59:42 +110.563257 17.366795 2023-09-20-08:59:48 +110.563245 17.366783 2023-09-20-08:59:54 +110.563247 17.366785 2023-09-20-09:00:00 +110.563246 17.366797 2023-09-20-09:00:06 +110.563239 17.366786 2023-09-20-09:00:12 +110.563234 17.366771 2023-09-20-09:00:18 +110.563222 17.366769 2023-09-20-09:00:24 +110.563213 17.366765 2023-09-20-09:00:30 +110.563198 17.366760 2023-09-20-09:00:36 +110.563187 17.366759 2023-09-20-09:00:42 +110.563174 17.366756 2023-09-20-09:00:48 +110.563155 17.366756 2023-09-20-09:01:00 +110.563142 17.366754 2023-09-20-09:01:06 +110.563128 17.366752 2023-09-20-09:01:12 +110.563119 17.366749 2023-09-20-09:01:18 +110.563107 17.366741 2023-09-20-09:01:24 +110.563101 17.366737 2023-09-20-09:01:30 +110.563095 17.366726 2023-09-20-09:01:36 +110.563091 17.366716 2023-09-20-09:01:42 +110.563083 17.366706 2023-09-20-09:01:48 +110.563073 17.366692 2023-09-20-09:01:54 +110.563062 17.366688 2023-09-20-09:02:00 +110.563051 17.366673 2023-09-20-09:02:06 +110.563036 17.366665 2023-09-20-09:02:12 +110.563024 17.366654 2023-09-20-09:02:18 +110.563011 17.366644 2023-09-20-09:02:24 +110.562996 17.366637 2023-09-20-09:02:30 +110.562976 17.366627 2023-09-20-09:02:36 +110.562961 17.366619 2023-09-20-09:02:42 +110.562940 17.366602 2023-09-20-09:02:48 +110.562934 17.366587 2023-09-20-09:02:54 +110.562909 17.366574 2023-09-20-09:03:00 +110.562885 17.366564 2023-09-20-09:03:06 +110.562861 17.366555 2023-09-20-09:03:12 +110.562830 17.366544 2023-09-20-09:03:23 +110.562801 17.366542 2023-09-20-09:03:29 +110.562770 17.366536 2023-09-20-09:03:35 +110.562752 17.366521 2023-09-20-09:03:41 +110.562671 17.366408 2023-09-20-09:04:05 +110.562664 17.366376 2023-09-20-09:04:11 diff --git a/src/main/webapp/template/航次参航人员模版.xlsx b/src/main/webapp/template/航次参航人员模版.xlsx new file mode 100644 index 0000000..3d4614e Binary files /dev/null and b/src/main/webapp/template/航次参航人员模版.xlsx differ diff --git a/src/main/webapp/template/航次导航文件模版.txt b/src/main/webapp/template/航次导航文件模版.txt new file mode 100644 index 0000000..f13f6a4 --- /dev/null +++ b/src/main/webapp/template/航次导航文件模版.txt @@ -0,0 +1,832 @@ +109.49100 18.23400 2023-09-18-21:58:35 +109.48983 18.23417 2023-09-18-21:59:26 +109.48867 18.23417 2023-09-18-22:00:06 +109.48767 18.23433 2023-09-18-22:00:35 +109.48650 18.23433 2023-09-18-22:01:06 +109.48550 18.23417 2023-09-18-22:01:35 +109.48417 18.23400 2023-09-18-22:02:06 +109.48333 18.23367 2023-09-18-22:02:32 +109.48317 18.23367 2023-09-18-22:02:40 +109.48217 18.23317 2023-09-18-22:03:06 +109.48117 18.23267 2023-09-18-22:03:35 +109.47900 18.23150 2023-09-18-22:04:35 +109.47800 18.23100 2023-09-18-22:05:06 +109.47700 18.23050 2023-09-18-22:05:35 +109.46933 18.22617 2023-09-18-22:09:06 +109.46833 18.22550 2023-09-18-22:09:35 +109.46733 18.22450 2023-09-18-22:10:06 +109.46633 18.22367 2023-09-18-22:10:35 +109.46483 18.22133 2023-09-18-22:11:36 +109.46183 18.21667 2023-09-18-22:13:36 +109.45883 18.21133 2023-09-18-22:15:45 +109.45817 18.21017 2023-09-18-22:16:16 +109.45500 18.20333 2023-09-18-22:18:56 +109.45483 18.20250 2023-09-18-22:19:16 +109.45467 18.20117 2023-09-18-22:19:46 +109.45483 18.20017 2023-09-18-22:20:07 +109.45500 18.19900 2023-09-18-22:20:36 +109.45600 18.19650 2023-09-18-22:21:36 +109.45717 18.19350 2023-09-18-22:22:46 +109.45850 18.19150 2023-09-18-22:23:35 +109.48283 18.16233 2023-09-18-22:36:45 +109.49183 18.15200 2023-09-18-22:41:37 +109.49350 18.15050 2023-09-18-22:42:25 +109.50017 18.14433 2023-09-18-22:45:36 +109.50417 18.14100 2023-09-18-22:47:15 +109.50500 18.14033 2023-09-18-22:47:36 +109.51067 18.13533 2023-09-18-22:49:57 +109.51133 18.13483 2023-09-18-22:50:15 +109.51267 18.13367 2023-09-18-22:50:45 +109.54250 18.10950 2023-09-18-23:02:47 +109.57167 18.08700 2023-09-18-23:14:17 +109.60983 18.06617 2023-09-18-23:27:36 +109.65333 18.04567 2023-09-18-23:42:06 +109.68317 18.02583 2023-09-18-23:53:06 +109.73717 17.98200 2023-09-19-00:14:16 +109.76983 17.95567 2023-09-19-00:27:06 +109.79717 17.93400 2023-09-19-00:37:46 +109.83583 17.90317 2023-09-19-00:52:37 +109.86750 17.87783 2023-09-19-01:05:07 +109.91233 17.84067 2023-09-19-01:23:27 +109.95300 17.80800 2023-09-19-01:39:27 +109.98133 17.78467 2023-09-19-01:50:37 +110.01383 17.75783 2023-09-19-02:03:37 +110.06983 17.71350 2023-09-19-02:25:27 +110.10667 17.68333 2023-09-19-02:40:07 +110.32667 17.52833 2023-09-19-04:01:07 +110.36833 17.50333 2023-09-19-04:16:09 +110.45167 17.45167 2023-09-19-04:46:07 +110.56500 17.36500 2023-09-19-10:40:11 +110.56400 17.37500 2023-09-19-11:24:32 +110.56333 17.37333 2023-09-19-11:25:06 +110.56333 17.37333 2023-09-19-14:28:12 +110.56000 17.37333 2023-09-19-19:34:14 +110.56833 17.37000 2023-09-19-23:22:10 +110.56333 17.36500 2023-09-19-23:28:08 +110.55667 17.36500 2023-09-19-23:37:15 +110.55667 17.38167 2023-09-20-01:16:14 +110.56167 17.36333 2023-09-20-01:52:14 +110.56833 17.36500 2023-09-20-02:01:08 +110.56667 17.36500 2023-09-20-02:04:08 +110.54833 17.36333 2023-09-20-02:49:11 +110.56667 17.37833 2023-09-20-03:28:11 +110.54833 17.37333 2023-09-20-04:22:10 +110.54500 17.37333 2023-09-20-04:31:12 +110.54833 17.37333 2023-09-20-04:52:09 +110.55950 17.37333 2023-09-20-05:40:54 +110.55950 17.37067 2023-09-20-05:59:34 +110.56450 17.36800 2023-09-20-07:01:45 +110.56650 17.36833 2023-09-20-07:45:33 +110.56650 17.36833 2023-09-20-08:18:44 +110.56667 17.36833 2023-09-20-09:49:15 +110.56333 17.37167 2023-09-20-12:16:14 +110.56333 17.37333 2023-09-20-13:16:08 +110.56333 17.37333 2023-09-20-14:04:13 +110.56500 17.37267 2023-09-20-15:21:18 +110.56333 17.36333 2023-09-20-16:55:13 +110.56317 17.36717 2023-09-20-17:11:37 +110.56567 17.37667 2023-09-20-18:29:08 +110.56617 17.37767 2023-09-20-20:26:28 +110.56833 17.38167 2023-09-20-20:40:17 +110.57050 17.38283 2023-09-20-20:43:52 +110.56667 17.36667 2023-09-20-21:10:10 +110.55633 17.37283 2023-09-20-21:30:57 +110.56833 17.38333 2023-09-20-22:07:11 +110.57000 17.38167 2023-09-20-22:10:09 +110.57000 17.38167 2023-09-20-22:31:13 +110.55667 17.37000 2023-09-20-23:07:12 +110.56667 17.36667 2023-09-20-23:22:14 +110.57333 17.38167 2023-09-20-23:55:12 +110.56667 17.37833 2023-09-21-00:04:15 +110.55667 17.37000 2023-09-21-00:19:14 +110.55333 17.38167 2023-09-21-00:46:13 +110.55833 17.38167 2023-09-21-00:55:13 +110.56167 17.37833 2023-09-21-01:07:10 +110.56833 17.37000 2023-09-21-01:19:10 +110.57667 17.37000 2023-09-21-01:34:10 +110.56000 17.36333 2023-09-21-02:13:14 +110.56500 17.36000 2023-09-21-02:22:12 +110.56833 17.36000 2023-09-21-02:25:10 +110.57333 17.36333 2023-09-21-02:34:13 +110.57167 17.36167 2023-09-21-03:01:09 +110.56667 17.37833 2023-09-21-03:37:10 +110.57667 17.37000 2023-09-21-03:58:10 +110.57000 17.37167 2023-09-21-04:16:11 +110.56500 17.36000 2023-09-21-04:43:12 +110.56500 17.37000 2023-09-21-05:16:10 +110.56650 17.36833 2023-09-21-07:57:13 +110.56750 17.36850 2023-09-21-08:41:13 +110.56600 17.36800 2023-09-21-09:30:12 +110.56433 17.37367 2023-09-21-09:58:07 +110.56500 17.37267 2023-09-21-10:13:14 +110.56333 17.37167 2023-09-21-10:28:14 +110.56533 17.37317 2023-09-21-11:31:14 +110.56450 17.37283 2023-09-21-11:47:33 +110.56483 17.37250 2023-09-21-12:07:54 +110.56333 17.37167 2023-09-21-13:19:12 +110.56167 17.37000 2023-09-21-15:01:11 +110.55667 17.36333 2023-09-21-18:46:15 +110.55167 17.36467 2023-09-21-19:08:53 +110.56467 17.37650 2023-09-21-19:44:39 +110.56500 17.36167 2023-09-21-21:10:12 +110.56833 17.36833 2023-09-21-21:22:12 +110.55833 17.36667 2023-09-21-22:16:15 +110.56167 17.36167 2023-09-21-23:55:15 +110.56000 17.36333 2023-09-22-00:28:17 +110.55667 17.37000 2023-09-22-02:10:15 +110.55650 17.37300 2023-09-22-02:36:56 +110.52333 17.36333 2023-09-22-05:04:15 +110.55667 17.36500 2023-09-22-06:55:13 +110.56667 17.36833 2023-09-22-08:58:17 +110.56333 17.36667 2023-09-22-09:52:18 +110.56400 17.37333 2023-09-22-10:42:59 +110.56433 17.37300 2023-09-22-10:58:09 +110.56467 17.37333 2023-09-22-11:13:10 +110.56433 17.37333 2023-09-22-11:28:20 +110.56400 17.37267 2023-09-22-11:43:29 +110.56500 17.37267 2023-09-22-11:58:40 +110.56500 17.37300 2023-09-22-12:13:41 +110.56483 17.37333 2023-09-22-12:28:48 +110.56500 17.37350 2023-09-22-12:43:49 +110.56333 17.37167 2023-09-22-12:52:21 +110.56433 17.37317 2023-09-22-12:58:50 +110.56400 17.37317 2023-09-22-13:13:58 +110.56500 17.37350 2023-09-22-13:28:58 +110.56483 17.37317 2023-09-22-13:44:08 +110.56500 17.37317 2023-09-22-13:59:10 +110.56433 17.37300 2023-09-22-14:14:20 +110.56467 17.37283 2023-09-22-14:29:29 +110.56517 17.37217 2023-09-22-14:44:39 +110.56450 17.37383 2023-09-22-15:00:20 +110.56500 17.37333 2023-09-22-15:16:16 +110.56433 17.37333 2023-09-22-15:42:27 +110.56467 17.37317 2023-09-22-16:33:36 +110.56333 17.37167 2023-09-22-17:04:14 +110.56467 17.37300 2023-09-22-17:36:27 +110.56467 17.37267 2023-09-22-17:47:26 +110.56617 17.36783 2023-09-22-17:56:50 +110.56567 17.36533 2023-09-22-18:07:17 +110.56550 17.36567 2023-09-22-18:16:56 +110.56517 17.36583 2023-09-22-18:18:36 +110.56483 17.36583 2023-09-22-18:20:36 +110.56417 17.36517 2023-09-22-18:27:06 +110.56317 17.36617 2023-09-22-18:36:06 +110.56417 17.36650 2023-09-22-18:40:17 +110.56350 17.36533 2023-09-22-18:55:16 +110.56000 17.36217 2023-09-22-19:05:06 +110.55900 17.36133 2023-09-22-19:07:46 +110.54900 17.35450 2023-09-22-19:33:07 +110.54167 17.34967 2023-09-22-19:50:56 +110.52633 17.33983 2023-09-22-20:28:16 +110.50833 17.33000 2023-09-22-21:10:16 +110.50167 17.32667 2023-09-22-21:22:16 +110.49583 17.32450 2023-09-22-21:38:37 +110.46150 17.30400 2023-09-22-23:01:57 +110.44333 17.29167 2023-09-22-23:46:19 +110.39750 17.24967 2023-09-23-02:04:26 +110.39333 17.24500 2023-09-23-02:13:15 +110.36833 17.20833 2023-09-23-04:10:17 +110.44167 17.26167 2023-09-23-05:16:15 +110.47833 17.29333 2023-09-23-05:49:20 +110.54500 17.35333 2023-09-23-06:58:20 +110.56333 17.37333 2023-09-23-10:46:20 +110.56333 17.37167 2023-09-23-11:58:19 +110.56333 17.37333 2023-09-23-12:28:21 +110.56333 17.37167 2023-09-23-13:46:20 +110.56333 17.37167 2023-09-23-14:16:20 +110.56333 17.37167 2023-09-23-15:49:20 +110.56500 17.36500 2023-09-23-16:31:16 +110.56333 17.36333 2023-09-23-17:40:21 +110.56667 17.36333 2023-09-23-18:22:15 +110.57167 17.36500 2023-09-23-18:58:18 +110.55833 17.35833 2023-09-23-19:34:19 +110.56950 17.37017 2023-09-23-20:36:03 +110.56833 17.36500 2023-09-23-20:40:19 +110.55167 17.36000 2023-09-23-21:04:15 +110.54817 17.36033 2023-09-23-21:39:57 +110.55033 17.36183 2023-09-23-22:10:06 +110.55317 17.36267 2023-09-23-23:14:51 +110.55333 17.36000 2023-09-23-23:55:15 +110.56167 17.35167 2023-09-24-02:28:18 +110.56167 17.35333 2023-09-24-03:19:18 +110.55833 17.35333 2023-09-24-04:40:23 +110.56500 17.36167 2023-09-24-06:52:21 +110.56833 17.36833 2023-09-24-07:37:19 +110.56883 17.36983 2023-09-24-08:11:17 +110.56833 17.36833 2023-09-24-09:07:20 +110.56333 17.37167 2023-09-24-11:04:17 +110.56333 17.37167 2023-09-24-11:46:17 +110.56333 17.37167 2023-09-24-12:40:19 +110.56333 17.37167 2023-09-24-13:19:18 +110.56500 17.37333 2023-09-24-13:55:16 +110.56333 17.37333 2023-09-24-14:28:19 +110.56333 17.37333 2023-09-24-15:10:18 +110.56333 17.37333 2023-09-24-15:46:17 +110.56667 17.36667 2023-09-24-16:25:17 +110.56333 17.36167 2023-09-24-17:34:20 +110.56683 17.36650 2023-09-24-18:07:48 +110.56667 17.36667 2023-09-24-18:10:17 +110.56883 17.37000 2023-09-24-18:25:16 +110.56883 17.37033 2023-09-24-18:28:58 +110.56833 17.37000 2023-09-24-18:55:21 +110.56917 17.36967 2023-09-24-19:29:47 +110.56783 17.36867 2023-09-24-20:01:48 +110.56783 17.36950 2023-09-24-20:17:28 +110.56733 17.36983 2023-09-24-20:36:56 +110.56667 17.37000 2023-09-24-21:25:21 +110.56667 17.36833 2023-09-24-21:58:22 +110.56667 17.36833 2023-09-24-23:25:21 +110.56667 17.36833 2023-09-24-23:58:20 +110.56500 17.37000 2023-09-25-00:34:21 +110.56833 17.36833 2023-09-25-01:04:25 +110.56833 17.36667 2023-09-25-01:55:20 +110.56667 17.36667 2023-09-25-02:31:20 +110.56667 17.36500 2023-09-25-03:04:21 +110.56667 17.36500 2023-09-25-03:34:25 +110.56667 17.36667 2023-09-25-04:10:19 +110.56717 17.36783 2023-09-25-04:41:50 +110.56667 17.36817 2023-09-25-05:00:20 +110.56550 17.36883 2023-09-25-05:15:50 +110.56450 17.36967 2023-09-25-05:30:51 +110.56383 17.37033 2023-09-25-05:46:01 +110.56283 17.37083 2023-09-25-06:01:12 +110.56183 17.37117 2023-09-25-06:16:21 +110.56050 17.37133 2023-09-25-06:31:21 +110.56050 17.37183 2023-09-25-06:46:31 +110.56083 17.37250 2023-09-25-07:01:40 +110.56200 17.37350 2023-09-25-07:16:42 +110.56150 17.37283 2023-09-25-07:31:42 +110.56167 17.37167 2023-09-25-07:49:19 +110.56250 17.37333 2023-09-25-07:52:00 +110.56217 17.37400 2023-09-25-08:11:40 +110.56167 17.37333 2023-09-25-08:25:24 +110.56500 17.37333 2023-09-25-10:31:23 +110.57000 17.37167 2023-09-25-11:52:19 +110.56833 17.37333 2023-09-25-13:58:19 +110.57000 17.37333 2023-09-25-14:40:23 +110.57000 17.37000 2023-09-25-15:58:26 +110.57333 17.37000 2023-09-25-16:40:22 +110.57167 17.37000 2023-09-25-17:46:21 +110.57833 17.37167 2023-09-25-19:58:19 +110.58167 17.37000 2023-09-25-21:43:21 +110.57333 17.36500 2023-09-26-00:04:22 +110.57833 17.36000 2023-09-26-01:07:22 +110.58167 17.35833 2023-09-26-01:22:20 +110.58667 17.36167 2023-09-26-01:58:20 +110.58667 17.36667 2023-09-26-02:07:23 +110.58167 17.37000 2023-09-26-04:28:20 +110.57167 17.36500 2023-09-26-04:55:21 +110.56667 17.37000 2023-09-26-06:10:22 +110.56667 17.36833 2023-09-26-06:52:24 +110.56833 17.36833 2023-09-26-07:25:23 +110.57000 17.36833 2023-09-26-08:19:22 +110.57067 17.36883 2023-09-26-08:34:26 +110.57100 17.36883 2023-09-26-08:57:42 +110.57167 17.36850 2023-09-26-09:12:53 +110.57033 17.36867 2023-09-26-09:28:02 +110.56567 17.36767 2023-09-26-09:43:11 +110.56467 17.37033 2023-09-26-09:58:21 +110.56383 17.37217 2023-09-26-10:13:22 +110.56350 17.37300 2023-09-26-10:19:23 +110.56400 17.37267 2023-09-26-10:28:23 +110.56333 17.37300 2023-09-26-10:43:31 +110.56333 17.37283 2023-09-26-10:52:03 +110.56383 17.37283 2023-09-26-11:07:55 +110.56400 17.37250 2023-09-26-11:28:52 +110.56383 17.37300 2023-09-26-11:44:02 +110.56383 17.37267 2023-09-26-11:51:44 +110.56400 17.37300 2023-09-26-11:59:03 +110.56417 17.37300 2023-09-26-12:07:23 +110.56450 17.37283 2023-09-26-12:14:12 +110.56417 17.37333 2023-09-26-12:28:45 +110.56417 17.37333 2023-09-26-12:29:13 +110.56333 17.37167 2023-09-26-12:31:22 +110.56467 17.37333 2023-09-26-12:43:53 +110.56467 17.37333 2023-09-26-12:44:22 +110.56517 17.37350 2023-09-26-12:59:22 +110.56517 17.37350 2023-09-26-13:00:05 +110.56500 17.37300 2023-09-26-13:14:32 +110.56483 17.37300 2023-09-26-13:17:07 +110.56500 17.37283 2023-09-26-13:29:41 +110.56467 17.37333 2023-09-26-13:36:54 +110.56500 17.37333 2023-09-26-13:44:42 +110.56333 17.37333 2023-09-26-13:49:23 +110.56483 17.37367 2023-09-26-13:52:35 +110.56450 17.37333 2023-09-26-14:04:32 +110.56450 17.37350 2023-09-26-14:08:05 +110.56467 17.37367 2023-09-26-14:23:34 +110.56483 17.37367 2023-09-26-14:25:23 +110.56483 17.37333 2023-09-26-14:32:51 +110.56533 17.37250 2023-09-26-14:40:24 +110.56533 17.37250 2023-09-26-14:40:32 +110.56517 17.37350 2023-09-26-14:55:43 +110.56517 17.37350 2023-09-26-14:56:24 +110.56450 17.37267 2023-09-26-15:11:27 +110.56433 17.37317 2023-09-26-15:29:04 +110.56450 17.37317 2023-09-26-15:31:41 +110.56467 17.37333 2023-09-26-15:46:34 +110.56467 17.37317 2023-09-26-16:03:33 +110.56433 17.37333 2023-09-26-16:19:34 +110.56467 17.37317 2023-09-26-16:34:44 +110.56417 17.37317 2023-09-26-16:50:03 +110.56450 17.37333 2023-09-26-17:01:21 +110.56450 17.37333 2023-09-26-17:05:15 +110.56400 17.37350 2023-09-26-17:20:34 +110.56333 17.37333 2023-09-26-17:22:21 +110.56667 17.36783 2023-09-26-17:34:21 +110.56683 17.36700 2023-09-26-17:35:35 +110.56367 17.36667 2023-09-26-17:52:21 +110.56367 17.36683 2023-09-26-18:05:55 +110.56317 17.36600 2023-09-26-18:09:01 +110.56167 17.36500 2023-09-26-18:13:21 +110.56483 17.36583 2023-09-26-18:20:55 +110.56583 17.36583 2023-09-26-18:24:11 +110.56500 17.36500 2023-09-26-18:28:23 +110.56717 17.36067 2023-09-26-18:39:11 +110.57067 17.35650 2023-09-26-18:54:19 +110.57117 17.35800 2023-09-26-19:10:42 +110.57117 17.35833 2023-09-26-19:11:24 +110.57067 17.35950 2023-09-26-19:26:25 +110.57017 17.36033 2023-09-26-19:41:00 +110.57000 17.36033 2023-09-26-19:42:45 +110.56917 17.36050 2023-09-26-19:56:51 +110.56883 17.35967 2023-09-26-20:12:29 +110.56833 17.35833 2023-09-26-21:07:24 +110.56833 17.35833 2023-09-26-21:40:24 +110.56667 17.36167 2023-09-26-22:19:23 +110.56500 17.36333 2023-09-26-22:52:24 +110.56500 17.36500 2023-09-26-23:22:28 +110.56667 17.36500 2023-09-27-00:25:23 +110.56667 17.36333 2023-09-27-01:19:31 +110.56833 17.36500 2023-09-27-01:52:21 +110.56833 17.36667 2023-09-27-02:22:24 +110.57000 17.36833 2023-09-27-02:52:26 +110.56833 17.37167 2023-09-27-03:31:23 +110.57000 17.37333 2023-09-27-04:07:22 +110.57167 17.37333 2023-09-27-04:37:23 +110.57167 17.37333 2023-09-27-05:19:23 +110.56833 17.37000 2023-09-27-07:19:23 +110.56867 17.36983 2023-09-27-07:28:13 +110.56500 17.37000 2023-09-27-09:16:30 +110.56500 17.37333 2023-09-27-10:28:22 +110.56333 17.37333 2023-09-27-12:22:25 +110.56500 17.37333 2023-09-27-13:46:24 +110.56333 17.37167 2023-09-27-14:37:23 +110.56333 17.37333 2023-09-27-16:07:22 +110.56333 17.37167 2023-09-27-17:04:22 +110.56333 17.36667 2023-09-27-17:43:27 +110.56667 17.36500 2023-09-27-18:16:25 +110.56500 17.36000 2023-09-27-18:34:33 +110.56333 17.36000 2023-09-27-18:37:26 +110.54667 17.36167 2023-09-27-19:34:30 +110.49833 17.35833 2023-09-27-21:31:26 +110.48083 17.35917 2023-09-27-22:15:42 +110.45833 17.35833 2023-09-27-23:07:32 +110.44067 17.36033 2023-09-27-23:46:42 +110.43500 17.36000 2023-09-27-23:58:25 +110.43417 17.36100 2023-09-28-00:01:47 +110.43167 17.36000 2023-09-28-00:07:27 +110.43333 17.35833 2023-09-28-00:13:26 +110.43667 17.35867 2023-09-28-00:17:02 +110.44767 17.35817 2023-09-28-00:32:12 +110.45917 17.35917 2023-09-28-00:47:21 +110.47117 17.36033 2023-09-28-01:02:31 +110.47167 17.36000 2023-09-28-01:04:28 +110.47333 17.36000 2023-09-28-01:07:24 +110.48300 17.36167 2023-09-28-01:17:31 +110.49500 17.36267 2023-09-28-01:32:40 +110.50683 17.36400 2023-09-28-01:47:41 +110.51667 17.36500 2023-09-28-02:01:23 +110.51933 17.36550 2023-09-28-02:02:51 +110.53183 17.36717 2023-09-28-02:17:51 +110.54167 17.36833 2023-09-28-02:28:24 +110.54817 17.36950 2023-09-28-02:33:11 +110.55717 17.36967 2023-09-28-02:41:54 +110.54500 17.36500 2023-09-28-03:16:26 +110.50667 17.36167 2023-09-28-05:04:30 +110.49667 17.36000 2023-09-28-05:28:26 +110.56683 17.36917 2023-09-28-07:26:48 +110.56833 17.36833 2023-09-28-08:07:24 +110.56917 17.36967 2023-09-28-08:22:50 +110.56917 17.36967 2023-09-28-08:24:58 +110.57000 17.37000 2023-09-28-08:58:29 +110.56717 17.36883 2023-09-28-09:09:30 +110.56633 17.36883 2023-09-28-09:13:51 +110.56333 17.37333 2023-09-28-10:34:29 +110.56400 17.37250 2023-09-28-11:27:21 +110.56467 17.37317 2023-09-28-12:23:08 +110.56467 17.37333 2023-09-28-12:39:09 +110.56433 17.37317 2023-09-28-12:55:48 +110.56450 17.37367 2023-09-28-13:21:57 +110.56517 17.37317 2023-09-28-13:46:28 +110.56533 17.37350 2023-09-28-14:05:27 +110.56333 17.37333 2023-09-28-14:19:27 +110.56467 17.37300 2023-09-28-14:31:48 +110.56333 17.37333 2023-09-28-15:43:30 +110.56333 17.36667 2023-09-28-16:28:33 +110.56667 17.36833 2023-09-28-17:19:28 +110.54833 17.36167 2023-09-28-18:10:30 +110.51333 17.35667 2023-09-28-19:31:28 +110.48333 17.35267 2023-09-28-20:42:29 +110.47333 17.35167 2023-09-28-21:01:34 +110.45250 17.35150 2023-09-28-21:46:01 +110.44500 17.34833 2023-09-28-22:01:26 +110.40667 17.34333 2023-09-28-23:28:29 +110.41167 17.34333 2023-09-29-00:01:27 +110.43333 17.34667 2023-09-29-00:22:29 +110.53167 17.36167 2023-09-29-02:01:29 +110.55167 17.36500 2023-09-29-02:22:28 +110.55333 17.36500 2023-09-29-02:31:27 +110.55833 17.36333 2023-09-29-03:04:26 +110.56167 17.36167 2023-09-29-03:43:27 +110.56167 17.36000 2023-09-29-04:13:31 +110.54333 17.34833 2023-09-29-06:16:27 +110.55667 17.36000 2023-09-29-06:55:28 +110.56833 17.36833 2023-09-29-08:10:31 +110.56333 17.37333 2023-09-29-10:40:26 +110.56333 17.37167 2023-09-29-11:46:29 +110.56500 17.37333 2023-09-29-12:19:28 +110.56333 17.37167 2023-09-29-13:31:27 +110.56333 17.37167 2023-09-29-14:46:28 +110.56333 17.37333 2023-09-29-15:25:30 +110.56333 17.37167 2023-09-29-16:13:28 +110.56333 17.36667 2023-09-29-17:10:28 +110.49333 17.40833 2023-09-29-17:43:30 +110.44167 17.44167 2023-09-29-18:01:30 +110.39667 17.46833 2023-09-29-18:16:31 +110.31833 17.51833 2023-09-29-18:43:29 +110.11067 17.67083 2023-09-29-19:57:31 +110.05267 17.71267 2023-09-29-20:17:41 +110.02233 17.73183 2023-09-29-20:27:41 +109.99483 17.75300 2023-09-29-20:37:31 +109.95083 17.79017 2023-09-29-20:53:50 +109.89817 17.83833 2023-09-29-21:14:01 +109.86117 17.86717 2023-09-29-21:27:00 +109.85833 17.86933 2023-09-29-21:28:00 +109.82400 17.89417 2023-09-29-21:39:40 +109.78817 17.92017 2023-09-29-21:51:51 +109.77567 17.92967 2023-09-29-21:56:10 +109.72667 17.96717 2023-09-29-22:13:21 +109.69700 17.98967 2023-09-29-22:23:50 +109.65217 18.02383 2023-09-29-22:39:51 +109.62050 18.04700 2023-09-29-22:51:01 +109.57533 18.07900 2023-09-29-23:06:21 +109.53250 18.11600 2023-09-29-23:23:01 +109.51383 18.13467 2023-09-29-23:31:01 +109.49067 18.16050 2023-09-29-23:41:40 +109.46267 18.19567 2023-09-29-23:55:31 +109.46267 18.21350 2023-09-30-00:01:24 +109.46300 18.21450 2023-09-30-00:01:44 +109.46450 18.21800 2023-09-30-00:02:53 +109.46967 18.22583 2023-09-30-00:06:06 +109.48733 18.23383 2023-09-30-00:13:40 +109.49150 18.23383 2023-09-30-00:19:50 +109.49167 18.23350 2023-09-30-00:25:07 +109.49167 18.23317 2023-09-30-06:59:50 +109.49067 18.23383 2023-09-30-07:02:50 +109.46517 18.22000 2023-09-30-07:14:03 +109.46367 18.19750 2023-09-30-07:21:40 +109.46717 18.18667 2023-09-30-07:25:20 +109.48300 18.16150 2023-09-30-07:35:00 +109.50550 18.13533 2023-09-30-07:45:39 +109.52983 18.10517 2023-09-30-07:57:28 +109.53033 18.10450 2023-09-30-07:57:48 +109.54917 18.07917 2023-09-30-08:07:28 +109.55017 18.07833 2023-09-30-08:07:52 +109.60033 18.03850 2023-09-30-08:28:20 +109.61850 18.02633 2023-09-30-08:35:30 +109.63517 18.01433 2023-09-30-08:42:10 +109.66483 17.99333 2023-09-30-08:53:49 +109.69517 17.97250 2023-09-30-09:05:29 +109.74033 17.94117 2023-09-30-09:22:48 +109.77817 17.91417 2023-09-30-09:37:29 +109.81000 17.89100 2023-09-30-09:49:49 +109.84600 17.86500 2023-09-30-10:03:40 +109.87550 17.84367 2023-09-30-10:14:59 +109.90900 17.81967 2023-09-30-10:27:49 +109.93950 17.79717 2023-09-30-10:39:40 +109.97583 17.77000 2023-09-30-10:53:50 +110.02667 17.73117 2023-09-30-11:13:50 +110.06667 17.70017 2023-09-30-11:29:49 +110.11500 17.66283 2023-09-30-11:49:20 +110.15167 17.63333 2023-09-30-12:04:30 +110.18167 17.61000 2023-09-30-12:16:33 +110.20917 17.59367 2023-09-30-12:26:39 +110.25967 17.58517 2023-09-30-12:43:20 +110.28667 17.58000 2023-09-30-12:52:31 +110.34250 17.57167 2023-09-30-13:10:19 +110.39667 17.56167 2023-09-30-13:28:32 +110.44483 17.55433 2023-09-30-13:43:40 +110.52300 17.53917 2023-09-30-14:09:00 +110.58333 17.52833 2023-09-30-14:28:31 +110.66833 17.51333 2023-09-30-14:55:32 +110.75133 17.49500 2023-09-30-15:46:06 +110.74167 17.48667 2023-09-30-17:10:33 +110.71250 17.47033 2023-09-30-18:22:57 +110.71000 17.46833 2023-09-30-18:28:35 +110.70167 17.46667 2023-09-30-19:28:36 +110.73167 17.48500 2023-09-30-21:04:35 +110.74833 17.49333 2023-10-01-06:22:35 +110.75167 17.49500 2023-10-01-07:22:32 +110.76667 17.51167 2023-10-01-10:16:33 +110.76833 17.50833 2023-10-01-11:22:30 +110.74833 17.49333 2023-10-01-15:10:35 +110.74667 17.49333 2023-10-01-15:43:31 +110.74533 17.49833 2023-10-01-17:04:14 +110.74517 17.49800 2023-10-01-17:19:23 +110.74517 17.49817 2023-10-01-17:34:24 +110.74500 17.49817 2023-10-01-17:49:54 +110.74533 17.49783 2023-10-01-18:05:13 +110.74533 17.49800 2023-10-01-18:20:13 +110.74533 17.49833 2023-10-01-18:35:23 +110.74483 17.49817 2023-10-01-18:50:24 +110.74517 17.49800 2023-10-01-19:05:24 +110.74500 17.49817 2023-10-01-19:20:34 +110.74567 17.49817 2023-10-01-19:36:34 +110.74450 17.49783 2023-10-01-19:51:43 +110.74500 17.49800 2023-10-01-20:06:53 +110.74533 17.49767 2023-10-01-20:13:39 +110.74550 17.49783 2023-10-01-20:22:02 +110.74567 17.49783 2023-10-01-20:37:13 +110.74567 17.49783 2023-10-01-20:54:29 +110.74517 17.49817 2023-10-01-21:22:48 +110.74833 17.49000 2023-10-01-22:52:36 +110.74667 17.49000 2023-10-01-22:58:33 +110.74667 17.49500 2023-10-01-23:31:32 +110.73833 17.49000 2023-10-01-23:49:32 +110.73667 17.48833 2023-10-01-23:52:33 +110.72167 17.47667 2023-10-02-00:31:32 +110.69167 17.45833 2023-10-02-01:55:32 +110.67583 17.44233 2023-10-02-02:20:09 +110.62533 17.39250 2023-10-02-03:36:09 +110.60667 17.38667 2023-10-02-04:22:33 +110.60500 17.38667 2023-10-02-04:28:31 +110.57833 17.37667 2023-10-02-06:40:40 +110.57000 17.37000 2023-10-02-07:16:31 +110.56833 17.37000 2023-10-02-07:19:31 +110.56833 17.36833 2023-10-02-07:40:38 +110.56833 17.36833 2023-10-02-08:16:34 +110.56667 17.36833 2023-10-02-08:46:35 +110.56667 17.36500 2023-10-02-09:31:38 +110.56333 17.37333 2023-10-02-10:04:31 +110.56500 17.37333 2023-10-02-11:01:39 +110.56333 17.37333 2023-10-02-11:52:34 +110.56500 17.37333 2023-10-02-12:40:33 +110.56333 17.37167 2023-10-02-13:25:34 +110.56333 17.37167 2023-10-02-15:13:32 +110.56333 17.36333 2023-10-02-16:40:38 +110.55167 17.36167 2023-10-02-17:43:35 +110.51333 17.32833 2023-10-02-19:28:34 +110.49167 17.31167 2023-10-02-20:16:36 +110.45167 17.28667 2023-10-02-21:46:38 +110.40833 17.26167 2023-10-02-23:22:35 +110.39833 17.25667 2023-10-03-00:13:33 +110.43667 17.27000 2023-10-03-00:58:39 +110.46667 17.29333 2023-10-03-01:40:38 +110.46167 17.28667 2023-10-03-01:58:35 +110.45667 17.30167 2023-10-03-03:37:35 +110.45833 17.30333 2023-10-03-03:46:34 +110.46833 17.30833 2023-10-03-04:04:35 +110.47333 17.31167 2023-10-03-04:13:36 +110.52150 17.34000 2023-10-03-05:28:19 +110.52850 17.34583 2023-10-03-05:46:49 +110.53167 17.34833 2023-10-03-05:58:34 +110.53833 17.35417 2023-10-03-06:17:57 +110.55033 17.35983 2023-10-03-06:48:10 +110.56833 17.36833 2023-10-03-07:37:38 +110.56867 17.36950 2023-10-03-08:00:30 +110.56733 17.36900 2023-10-03-09:02:58 +110.56333 17.37000 2023-10-03-09:52:41 +110.56333 17.37333 2023-10-03-10:46:40 +110.56333 17.37167 2023-10-03-12:07:38 +110.56333 17.37167 2023-10-03-13:55:38 +110.56333 17.37333 2023-10-03-14:25:39 +110.56467 17.37317 2023-10-03-14:46:47 +110.56450 17.37333 2023-10-03-15:18:39 +110.56333 17.37333 2023-10-03-15:55:40 +110.56400 17.36933 2023-10-03-16:12:25 +110.56500 17.36500 2023-10-03-16:28:39 +110.55167 17.36667 2023-10-03-18:01:37 +110.54667 17.36667 2023-10-03-18:52:35 +110.54500 17.36333 2023-10-03-19:40:41 +110.54500 17.36033 2023-10-03-20:20:18 +110.54333 17.36000 2023-10-03-21:04:39 +110.54483 17.36117 2023-10-03-21:28:09 +110.54500 17.36000 2023-10-03-22:01:36 +110.54517 17.36167 2023-10-03-22:17:59 +110.54333 17.36167 2023-10-03-22:49:37 +110.54500 17.36167 2023-10-03-23:19:39 +110.54667 17.36117 2023-10-03-23:49:39 +110.54683 17.36083 2023-10-03-23:56:38 +110.55033 17.36067 2023-10-04-00:52:50 +110.55333 17.35833 2023-10-04-01:31:39 +110.55667 17.35833 2023-10-04-02:04:41 +110.56667 17.35667 2023-10-04-03:16:40 +110.56667 17.35667 2023-10-04-03:49:42 +110.56733 17.35783 2023-10-04-04:01:00 +110.56900 17.35883 2023-10-04-04:32:00 +110.57100 17.36000 2023-10-04-05:12:19 +110.57417 17.36050 2023-10-04-05:58:39 +110.57583 17.36117 2023-10-04-06:32:39 +110.57533 17.36417 2023-10-04-06:57:16 +110.57117 17.36717 2023-10-04-07:06:12 +110.57000 17.36800 2023-10-04-07:16:50 +110.56867 17.36917 2023-10-04-07:27:10 +110.56867 17.36950 2023-10-04-07:57:19 +110.56867 17.36950 2023-10-04-08:17:26 +110.56867 17.36950 2023-10-04-08:27:19 +110.56917 17.37017 2023-10-04-08:41:18 +110.56983 17.37067 2023-10-04-08:43:30 +110.56967 17.37050 2023-10-04-08:53:00 +110.56900 17.37000 2023-10-04-08:57:09 +110.56817 17.36950 2023-10-04-09:12:40 +110.56700 17.36900 2023-10-04-09:23:49 +110.56717 17.36967 2023-10-04-09:28:09 +110.56600 17.37300 2023-10-04-09:50:20 +110.56500 17.37333 2023-10-04-10:00:26 +110.56467 17.37250 2023-10-04-10:06:39 +110.56483 17.37317 2023-10-04-10:47:49 +110.56333 17.37167 2023-10-04-11:22:42 +110.56500 17.37333 2023-10-04-12:40:37 +110.56517 17.37350 2023-10-04-12:42:59 +110.56467 17.37317 2023-10-04-14:05:50 +110.56417 17.37333 2023-10-04-14:38:19 +110.56333 17.37333 2023-10-04-15:13:41 +110.56417 17.37333 2023-10-04-15:39:50 +110.56417 17.37317 2023-10-04-15:55:09 +110.56417 17.37300 2023-10-04-16:25:09 +110.56433 17.37333 2023-10-04-16:56:30 +110.56517 17.37067 2023-10-04-17:07:49 +110.56583 17.36817 2023-10-04-17:15:20 +110.56567 17.36833 2023-10-04-17:45:39 +110.56550 17.36600 2023-10-04-17:57:19 +110.56550 17.36483 2023-10-04-18:08:53 +110.56550 17.36500 2023-10-04-18:23:39 +110.56417 17.36467 2023-10-04-18:32:49 +110.56367 17.36283 2023-10-04-18:43:30 +110.56400 17.36467 2023-10-04-18:53:30 +110.56350 17.36550 2023-10-04-19:23:39 +110.56183 17.36567 2023-10-04-19:54:39 +110.56283 17.36550 2023-10-04-20:24:49 +110.56283 17.36550 2023-10-04-20:25:45 +110.56317 17.36517 2023-10-04-20:41:22 +110.56333 17.36500 2023-10-04-20:55:10 +110.56333 17.36483 2023-10-04-20:57:25 +110.56333 17.36483 2023-10-04-20:58:14 +110.56333 17.36483 2023-10-04-21:12:37 +110.56333 17.36483 2023-10-04-21:14:05 +110.56383 17.36517 2023-10-04-21:25:10 +110.56400 17.36533 2023-10-04-21:27:44 +110.56417 17.36550 2023-10-04-21:31:46 +110.56417 17.36583 2023-10-04-21:37:10 +110.56400 17.36600 2023-10-04-21:43:42 +110.56400 17.36633 2023-10-04-21:55:19 +110.56333 17.36700 2023-10-04-22:25:20 +110.56333 17.36717 2023-10-04-22:28:13 +110.56383 17.36783 2023-10-04-22:47:32 +110.56383 17.36783 2023-10-04-22:48:35 +110.56367 17.36817 2023-10-04-22:55:20 +110.56383 17.36850 2023-10-04-23:04:22 +110.56483 17.36817 2023-10-04-23:20:45 +110.56483 17.36817 2023-10-04-23:21:12 +110.56517 17.36800 2023-10-04-23:26:09 +110.56767 17.36767 2023-10-04-23:56:20 +110.57117 17.36667 2023-10-05-00:32:34 +110.57250 17.36700 2023-10-05-00:47:34 +110.57283 17.36717 2023-10-05-00:52:19 +110.57600 17.36783 2023-10-05-01:22:40 +110.58000 17.36800 2023-10-05-01:50:39 +110.58283 17.36817 2023-10-05-02:08:50 +110.58383 17.36817 2023-10-05-02:15:13 +110.58417 17.36817 2023-10-05-02:17:09 +110.58717 17.36933 2023-10-05-02:37:00 +110.58783 17.37017 2023-10-05-02:45:49 +110.59367 17.37433 2023-10-05-03:12:30 +110.59567 17.37533 2023-10-05-03:22:20 +110.59717 17.37700 2023-10-05-03:32:50 +110.59883 17.37867 2023-10-05-03:43:50 +110.60117 17.38033 2023-10-05-03:53:00 +110.60417 17.38233 2023-10-05-04:03:10 +110.60500 17.38333 2023-10-05-04:10:42 +110.60733 17.38450 2023-10-05-04:15:20 +110.60950 17.38467 2023-10-05-04:20:53 +110.64467 17.38833 2023-10-05-05:51:49 +110.64867 17.38867 2023-10-05-06:04:56 +110.64183 17.38617 2023-10-05-06:19:09 +110.58000 17.37333 2023-10-05-07:19:40 +110.56833 17.36883 2023-10-05-07:31:30 +110.56883 17.36933 2023-10-05-07:41:39 +110.56850 17.36967 2023-10-05-08:21:39 +110.56933 17.37050 2023-10-05-08:43:39 +110.56950 17.37067 2023-10-05-08:56:39 +110.56883 17.36900 2023-10-05-09:26:39 +110.56617 17.36833 2023-10-05-09:41:40 +110.56500 17.37000 2023-10-05-09:49:38 +110.56433 17.37083 2023-10-05-09:54:39 +110.56400 17.37283 2023-10-05-10:28:19 +110.56450 17.37333 2023-10-05-10:58:20 +110.56467 17.37350 2023-10-05-11:31:18 +110.56467 17.37300 2023-10-05-12:02:38 +110.56483 17.37333 2023-10-05-12:34:20 +110.56433 17.37300 2023-10-05-13:10:19 +110.56333 17.37167 2023-10-05-13:49:40 +110.56450 17.37300 2023-10-05-14:21:20 +110.56417 17.37283 2023-10-05-14:51:39 +110.56417 17.37317 2023-10-05-15:22:20 +110.56450 17.37367 2023-10-05-15:56:39 +110.56433 17.37333 2023-10-05-16:30:18 +110.56450 17.37317 2023-10-05-17:00:40 +110.56433 17.37283 2023-10-05-17:31:00 +110.56583 17.37350 2023-10-05-17:40:39 +110.56567 17.37317 2023-10-05-17:50:40 +110.56550 17.37233 2023-10-05-17:52:39 +110.56567 17.36733 2023-10-05-18:00:39 +110.56433 17.36400 2023-10-05-18:30:39 +110.56450 17.36533 2023-10-05-18:41:20 +110.56450 17.36450 2023-10-05-18:53:00 +110.56217 17.36150 2023-10-05-19:12:39 +110.56233 17.36083 2023-10-05-19:23:40 +110.56217 17.35817 2023-10-05-19:32:19 +110.56033 17.35517 2023-10-05-19:52:59 +110.55400 17.34950 2023-10-05-20:23:20 +110.54900 17.34533 2023-10-05-20:47:00 +110.54700 17.34333 2023-10-05-20:58:19 +110.53867 17.33600 2023-10-05-21:37:40 +110.53817 17.33567 2023-10-05-21:39:40 +110.53533 17.33317 2023-10-05-21:55:00 +110.53433 17.33233 2023-10-05-22:00:40 +110.52983 17.32883 2023-10-05-22:23:00 +110.52933 17.32850 2023-10-05-22:25:20 +110.52417 17.32433 2023-10-05-22:51:19 +110.52183 17.32250 2023-10-05-23:03:39 +110.52017 17.32100 2023-10-05-23:13:39 +110.52000 17.32083 2023-10-05-23:15:19 +110.51883 17.32000 2023-10-05-23:22:11 +110.51350 17.31667 2023-10-05-23:53:00 +110.51250 17.31783 2023-10-06-00:06:58 +110.51250 17.31800 2023-10-06-00:07:58 +110.51367 17.32067 2023-10-06-00:39:39 +110.52167 17.33333 2023-10-06-03:07:43 +110.52833 17.33833 2023-10-06-03:46:45 +110.54167 17.34667 2023-10-06-04:55:42 +110.56917 17.36550 2023-10-06-07:15:39 +110.56833 17.36833 2023-10-06-08:01:42 +110.56833 17.36833 2023-10-06-08:40:40 +110.56767 17.37100 2023-10-06-09:03:00 +110.56483 17.37333 2023-10-06-09:53:20 +110.56467 17.37317 2023-10-06-10:40:19 +110.56467 17.37317 2023-10-06-11:10:39 +110.56333 17.37333 2023-10-06-11:49:41 +110.56333 17.37167 2023-10-06-12:31:40 +110.56333 17.37167 2023-10-06-14:07:45 +110.56333 17.37333 2023-10-06-14:58:43 +110.56333 17.37333 2023-10-06-15:28:44 +110.56333 17.37167 2023-10-06-16:13:47 +110.56333 17.37167 2023-10-06-16:52:45 +110.56450 17.36683 2023-10-06-18:01:39 +110.56167 17.36500 2023-10-06-18:34:49 +110.55667 17.36167 2023-10-06-18:49:42 +110.52333 17.34667 2023-10-06-20:19:40 +110.48667 17.33000 2023-10-06-21:55:42 +110.48000 17.32833 2023-10-06-22:16:40 +110.45833 17.32167 2023-10-06-23:40:45 +110.46167 17.32667 2023-10-07-00:55:43 +110.46167 17.33833 2023-10-07-02:49:42 +110.46833 17.34333 2023-10-07-03:34:43 +110.47333 17.34667 2023-10-07-04:01:42 +110.49833 17.35333 2023-10-07-04:43:45 +110.54667 17.36167 2023-10-07-06:16:49 +110.56667 17.36833 2023-10-07-07:28:48 +110.56850 17.36967 2023-10-07-08:35:10 +110.56850 17.36967 2023-10-07-08:50:10 +110.56850 17.36967 2023-10-07-09:09:31 +110.56750 17.36633 2023-10-07-09:49:10 +110.56667 17.36750 2023-10-07-10:04:29 +110.56583 17.36817 2023-10-07-10:19:30 +110.56567 17.37217 2023-10-07-10:34:50 +110.56500 17.37000 2023-10-07-10:37:43 +110.56450 17.37233 2023-10-07-10:49:50 +110.56500 17.37300 2023-10-07-11:05:09 +110.56533 17.37333 2023-10-07-11:20:30 +110.56483 17.37333 2023-10-07-12:10:39 +110.56333 17.37333 2023-10-07-12:52:45 +110.56433 17.37333 2023-10-07-13:25:54 +110.56333 17.37167 2023-10-07-13:37:44 +110.56483 17.37283 2023-10-07-13:49:12 +110.56483 17.37317 2023-10-07-14:04:13 +110.56383 17.37350 2023-10-07-14:22:13 +110.56467 17.37300 2023-10-07-14:38:33 +110.56467 17.37333 2023-10-07-15:12:34 +110.56467 17.37333 2023-10-07-15:13:33 +110.56333 17.37167 2023-10-07-15:31:44 +110.56433 17.37333 2023-10-07-16:06:13 +110.56433 17.37350 2023-10-07-16:24:33 +110.56433 17.37350 2023-10-07-16:41:34 +110.56333 17.37333 2023-10-07-16:46:49 +110.56433 17.37350 2023-10-07-16:53:33 +110.56417 17.37350 2023-10-07-17:02:14 +110.56433 17.37333 2023-10-07-17:14:53 +110.56333 17.37167 2023-10-07-17:31:48 +110.56433 17.36683 2023-10-07-18:10:39 +110.56367 17.36517 2023-10-07-18:26:19 +