Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
task3.0
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
首航-临时账号
task3.0
Commits
96673cc2
Commit
96673cc2
authored
Mar 19, 2021
by
java-李谡
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
航班执行监控更新最后执行时间定时任务更新
parent
d49b0900
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
219 additions
and
22 deletions
+219
-22
pom.xml
pom.xml
+1
-1
StatisticalTask.java
src/main/java/com/foc/StatisticalTask.java
+2
-1
StatisticalDao.java
src/main/java/com/foc/dao/StatisticalDao.java
+34
-0
Dynamics.java
src/main/java/com/foc/entity/Dynamics.java
+38
-0
StatisticalEntity.java
src/main/java/com/foc/entity/StatisticalEntity.java
+16
-0
DynamicFlightService.java
src/main/java/com/foc/service/DynamicFlightService.java
+45
-12
DateUtils.java
src/main/java/com/foc/util/DateUtils.java
+28
-4
StatisticalMapper.xml
src/main/resources/mapper/StatisticalMapper.xml
+55
-4
No files found.
pom.xml
View file @
96673cc2
...
...
@@ -104,7 +104,7 @@
<transformers>
<transformer
implementation=
"org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"
>
<mainClass>
com.foc.
DspReleaseInfo
Task
</mainClass>
<mainClass>
com.foc.
Statistical
Task
</mainClass>
</transformer>
</transformers>
</configuration>
...
...
src/main/java/com/foc/StatisticalTask.java
View file @
96673cc2
...
...
@@ -12,7 +12,8 @@ public class StatisticalTask {
public
static
void
main
(
String
[]
args
)
{
DynamicFlightService
.
init
();
DynamicFlightService
.
sta
();
DynamicFlightService
.
backupDynamicsTomorrow
();
// DynamicFlightService.sta();
}
}
src/main/java/com/foc/dao/StatisticalDao.java
View file @
96673cc2
package
com
.
foc
.
dao
;
import
com.foc.entity.DspReleaseInfo
;
import
com.foc.entity.Dynamics
;
import
com.foc.entity.StatisticalEntity
;
import
org.apache.ibatis.annotations.Param
;
...
...
@@ -81,7 +82,40 @@ public interface StatisticalDao {
/**
* 批量新增或修改
*
* @param list
*/
void
insertDspReleaseInfo
(
List
<
DspReleaseInfo
>
list
);
/**
* 根据日期获取航班动态数据
*
* @param date
* @return
*/
List
<
Dynamics
>
getDynamicsList
(
String
date
);
/**
* 批量添加航班动态数据
*
* @param list
*/
void
addDynamicsList
(
List
<
Dynamics
>
list
);
/**
* 从备份表查询是否有该航班
*
* @param statisticalEntity
* @return
*/
String
getFromBackUp
(
StatisticalEntity
statisticalEntity
);
/**
* 根据起飞地和目的地查询航班执行监控信息
*
* @param arrIata 到达地
* @param depIata 起飞地
* @return
*/
StatisticalEntity
getAirlineStatic
(
@Param
(
value
=
"arrIata"
)
String
arrIata
,
@Param
(
value
=
"depIata"
)
String
depIata
);
}
src/main/java/com/foc/entity/Dynamics.java
0 → 100644
View file @
96673cc2
package
com
.
foc
.
entity
;
import
lombok.Data
;
/**
* @author LEGION
*/
@Data
public
class
Dynamics
{
/**
* 航班日期
*/
private
String
datopChn
;
/**
* 计划起飞时间(北京时间)
*/
private
String
stdChn
;
/**
* 计划到达时间(北京时间)
*/
private
String
staChn
;
/**
* 起飞机场三字码
*/
private
String
depStn
;
/**
* 到达机场三字码
*/
private
String
arrStn
;
/**
* 航班号
*/
private
String
flightNo
;
/**
* 航班类型
*/
private
String
stc
;
}
src/main/java/com/foc/entity/StatisticalEntity.java
View file @
96673cc2
...
...
@@ -17,5 +17,21 @@ public class StatisticalEntity {
private
String
updateTime
;
private
String
airlineJson
;
private
Integer
delFlag
;
/**
* 航班日期
*/
private
String
datopChn
;
/**
* 计划起飞时间(北京时间)
*/
private
String
stdChn
;
/**
* 计划到达时间(北京时间)
*/
private
String
staChn
;
/**
* 航班号
*/
private
String
flightNo
;
}
src/main/java/com/foc/service/DynamicFlightService.java
View file @
96673cc2
...
...
@@ -3,6 +3,7 @@ package com.foc.service;
import
com.alibaba.fastjson.JSON
;
import
com.foc.dao.StatisticalDao
;
import
com.foc.entity.AcType
;
import
com.foc.entity.Dynamics
;
import
com.foc.entity.StatisticalEntity
;
import
com.foc.util.DateUtils
;
import
com.foc.util.PropertiesUtils
;
...
...
@@ -17,10 +18,7 @@ import org.springframework.util.CollectionUtils;
import
java.io.IOException
;
import
java.io.Reader
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Properties
;
import
java.util.*
;
/**
* @author LEGION
...
...
@@ -45,6 +43,16 @@ public class DynamicFlightService {
}
}
/**
* 备份明日航班动态数据 std-chn,sta-chn,航班号、起飞机场三字码、目的机场三字码字段
*/
public
static
void
backupDynamicsTomorrow
()
{
StatisticalDao
dao
=
session
.
getMapper
(
StatisticalDao
.
class
);
List
<
Dynamics
>
dynamicsList
=
dao
.
getDynamicsList
(
DateUtils
.
getTomorrow
());
dao
.
addDynamicsList
(
dynamicsList
);
session
.
commit
();
}
public
static
void
sta
()
{
//从配置文件中获取需要统计的大机型
Properties
properties
=
PropertiesUtils
.
getProperties
();
...
...
@@ -56,20 +64,39 @@ public class DynamicFlightService {
//总机型集合
List
<
String
>
verifyAcTypes
=
Arrays
.
asList
(
verifyAcType
.
split
(
","
));
StatisticalDao
dao
=
session
.
getMapper
(
StatisticalDao
.
class
);
//获取航班动态表中所有航班性质为
J,状态不为CNL,
机型为319/A320,321,320neo,330的航线的最后一班时间
//获取航班动态表中所有航班性质为
A,J,G,状态不为CNL,子
机型为319/A320,321,320neo,330的航线的最后一班时间
String
date
=
DateUtils
.
getLastDate
();
List
<
StatisticalEntity
>
list
=
dao
.
getFlightList
(
date
);
List
<
StatisticalEntity
>
slist
=
new
ArrayList
<>();
//根据论证机型获取机型下的子机型
List
<
String
>
acTypes
=
dao
.
getLacTypesByVerifyAcTypes
(
verifyAcTypes
);
list
.
forEach
(
e
->
{
//获取该航线所有论证机型(319/A320,321,320neo,330)的最后执行时间(实际起飞时间)
String
lastDate
=
dao
.
getFlightByDepAndArr
(
e
,
acTypes
,
date
);
StatisticalEntity
entity
=
new
StatisticalEntity
();
//根据航线查询航班执行监控数据
StatisticalEntity
entity
=
dao
.
getAirlineStatic
(
e
.
getArrIata
(),
e
.
getDepIata
());
//将机型数据放入到map中,机型为key,机型最后飞行时间为value
Map
<
String
,
String
>
map
=
new
HashMap
<>();
boolean
update
=
false
;
if
(
Objects
.
isNull
(
entity
))
{
entity
=
new
StatisticalEntity
();
}
else
{
String
json
=
entity
.
getAirlineJson
();
List
<
AcType
>
acTypeList
=
JSON
.
parseArray
(
json
,
AcType
.
class
);
for
(
AcType
acType
:
acTypeList
)
{
map
.
put
(
acType
.
getType
(),
acType
.
getLastTime
());
}
}
entity
.
setArrIata
(
e
.
getArrIata
());
entity
.
setArrIataName
(
e
.
getArrIataName
());
entity
.
setDepIata
(
e
.
getDepIata
());
entity
.
setDepIataName
(
e
.
getDepIataName
());
entity
.
setLastAirlineTime
(
lastDate
);
//从备份表中查询是否有该航班,如果有,更新最后执行时间
String
backupDate
=
dao
.
getFromBackUp
(
entity
);
if
(!
StringUtils
.
isEmpty
(
backupDate
))
{
entity
.
setLastAirlineTime
(
lastDate
);
update
=
true
;
}
List
<
AcType
>
acTypeList
=
new
ArrayList
<>();
//遍历论证机型查询对应小机型
for
(
String
str
:
verifyAcTypes
)
{
...
...
@@ -82,25 +109,30 @@ public class DynamicFlightService {
}
/**获取该航线特定机型下的最后执行时间
1.如果有航班动态时间(实际起飞时间):
状态显示动态日期
(status=1)
判断是否论证,没有(status=3),有
(status=1)
2. 如果没有航班动态时间:
(1)有论证记录(查询开航指令集中的航班性质为正班,且申请单类型为:新开重开国内国际)
(1)有论证记录(查询开航指令集中的航班性质为正班
包机加班
,且申请单类型为:新开重开国内国际)
状态可用(status=2)
(2)没有论证,状态不可用(status=3)
*/
String
acTypeLastTime
=
dao
.
getFlightByDepAndArr
(
e
,
lacTypes
,
date
);
String
verifyDate
=
dao
.
getSailingCommand
(
e
,
str
);
if
(
StringUtils
.
isEmpty
(
acTypeLastTime
))
{
//判断是否有论证
String
verifyDate
=
dao
.
getSailingCommand
(
e
,
str
);
//判断是否有论证,判断范围在verify_type为(01,02,03,04),flight_type为(01正班,02加班,03包机,对应前边航班动态中航班类型为J,G,A)
if
(
StringUtils
.
isEmpty
(
verifyDate
))
{
acType
.
setStatus
(
"3"
);
}
else
{
acType
.
setStatus
(
"2"
);
}
}
else
{
//如果机型最后执行时间和航班最后执行时间相等,则说明该机型执行了最后航班,根据update标识决定是否要更新
if
(
acTypeLastTime
.
equals
(
lastDate
)
&&
update
)
{
acType
.
setLastTime
(
acTypeLastTime
);
}
else
{
acType
.
setLastTime
(
map
.
get
(
str
));
}
acType
.
setStatus
(
"1"
);
acType
.
setLastTime
(
acTypeLastTime
);
}
acTypeList
.
add
(
acType
);
}
...
...
@@ -111,5 +143,6 @@ public class DynamicFlightService {
});
dao
.
insertOrUpdateBatch
(
slist
);
session
.
commit
();
session
.
close
();
}
}
src/main/java/com/foc/util/DateUtils.java
View file @
96673cc2
...
...
@@ -38,6 +38,32 @@ public class DateUtils {
return
time
;
}
public
static
String
getTomorrow
()
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
add
(
Calendar
.
DATE
,
1
);
Date
d
=
cal
.
getTime
();
SimpleDateFormat
sp
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
String
time
=
sp
.
format
(
d
);
return
time
;
}
public
static
String
getTomorrowDate
()
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
add
(
Calendar
.
DATE
,
1
);
Date
d
=
cal
.
getTime
();
String
time
=
new
SimpleDateFormat
(
"yyyy-MM-dd 00:00:00"
).
format
(
d
);
return
time
;
}
public
static
String
getAfterTomorrowDate
()
{
Calendar
cal
=
Calendar
.
getInstance
();
cal
.
add
(
Calendar
.
DATE
,
2
);
Date
d
=
cal
.
getTime
();
String
time
=
new
SimpleDateFormat
(
"yyyy-MM-dd 00:00:00"
).
format
(
d
);
return
time
;
}
public
static
boolean
compareTime
(
String
time1
,
String
time2
)
{
SimpleDateFormat
sp
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
Date
date1
=
null
;
...
...
@@ -85,9 +111,7 @@ public class DateUtils {
}
public
static
void
main
(
String
[]
args
)
{
LocalDate
startDate
=
LocalDate
.
now
();
LocalDate
endDate
=
LocalDate
.
now
().
plusDays
(
2
);
List
<
LocalDate
>
list
=
getDatesBetween
(
startDate
,
endDate
);
System
.
out
.
println
(
list
);
System
.
out
.
println
(
getTomorrow
());
System
.
out
.
println
(
getAfterTomorrowDate
());
}
}
src/main/resources/mapper/StatisticalMapper.xml
View file @
96673cc2
...
...
@@ -4,6 +4,10 @@
<select
id=
"getFlightList"
resultType=
"com.foc.entity.StatisticalEntity"
>
SELECT
d.datop_chn,
d.std_chn,
d.sta_chn,
d.flight_no,
d.dep_stn AS depIata,
a.city_name AS depIataName,
d.arr_stn AS arrIata,
...
...
@@ -13,7 +17,7 @@
LEFT JOIN foc_airports a ON d.dep_stn = a.airport_iata
LEFT JOIN foc_airports fa ON d.arr_stn = fa.airport_iata
WHERE
d.`stc` = 'J'
(d.`stc` = 'J' or d.`stc` = 'A' or d.`stc` = 'G')
AND d.`status`!='CNL'
AND d.`atd_chn`
<
= #{date}
GROUP BY
...
...
@@ -23,10 +27,10 @@
<select
id=
"getFlightByDepAndArr"
resultType=
"string"
>
SELECT
DATE_FORMAT(
a
td_chn,'%Y/%m/%d') as lastAirlineTime
DATE_FORMAT(
s
td_chn,'%Y/%m/%d') as lastAirlineTime
from foc_flight_dynamics
where dep_stn=#{entity.depIata} and arr_stn=#{entity.arrIata}
AND
`stc` = 'J'
AND
(`stc` = 'J' or `stc` = 'A' or `stc` = 'G')
AND `status`!='CNL'
AND `atd_chn`
<
= #{date}
and ac_type in
...
...
@@ -70,7 +74,8 @@
from foc_sailing_command sc
left join foc_airline_verify a on a.id = sc.verif_id
left join foc_aircraft_type b on a.aircraft_type = b.id
where a.verif_type in ('01','02','03','04') AND a.del_flag = 0 AND a.flight_type='01'
where a.verif_type in ('01','02','03','04') AND a.del_flag = 0 AND (a.flight_type='01' or a.flight_type='02' or
a.flight_type='03')
and a.depIata=#{entity.depIata} and a.arrIata=#{entity.arrIata} and b.del_flag=0
<choose>
<when
test=
"verifyAcType=='A319/A320'"
>
...
...
@@ -150,4 +155,49 @@
, update_date = values(update_date)
</insert>
<select
id=
"getDynamicsList"
resultType=
"com.foc.entity.Dynamics"
>
select datop_chn,dep_stn,arr_stn,std_chn,sta_chn,flight_no,stc
from foc_flight_dynamics
where datop_chn=#{date}
and (stc='A' or stc='J' or stc='G')
</select>
<insert
id=
"addDynamicsList"
parameterType=
"com.foc.entity.Dynamics"
>
insert into foc_flight_dynamics_backup
values
<foreach
collection=
"list"
item=
"item"
index=
"index"
separator=
","
>
(
#{item.datopChn},
#{item.depStn},
#{item.arrStn},
#{item.stdChn},
#{item.staChn},
#{item.flightNo},
#{item.stc}
)
</foreach>
ON DUPLICATE KEY UPDATE
datop_chn = values(datop_chn)
, dep_stn = values(dep_stn)
, arr_stn = values(arr_stn)
, std_chn = values(std_chn)
, sta_chn = values(sta_chn)
, flight_no = values(flight_no)
, stc = values(stc)
</insert>
<select
id=
"getFromBackUp"
parameterType=
"com.foc.entity.StatisticalEntity"
resultType=
"string"
>
select datop_chn
from foc_flight_dynamics_backup
where flight_no=#{flightNo}
and sta_chn=#{staChn}
and std_chn=#{stdChn}
and arr_stn=#{arrIata}
and dep_stn=#{depIata}
</select>
<select
id=
"getAirlineStatic"
resultType=
"com.foc.entity.StatisticalEntity"
>
select * from foc_airline_sta where dep_iata=#{depIata} and arr_iata=#{arrIata} and del_flag=0
</select>
</mapper>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment