package Ġcom . tencent . devops . tur bo . service Ċ Ċ import Ġcom . tencent . devops . common . util . Math Util Ċ import Ġcom . tencent . devops . tur bo . dao . mong ot emplate . Tur bo Summary Dao Ċ import Ġcom . tencent . devops . tur bo . dao . repository . Tur bo Day Summary Repository Ċ import Ġcom . tencent . devops . tur bo . enums . Enum Dist cc Task Status Ċ import Ġcom . tencent . devops . tur bo . model . TT ur bo Day Summary Entity Ċ import Ġcom . tencent . devops . tur bo . pojo . Tur bo Day Summary Overview Model Ċ import Ġcom . tencent . devops . tur bo . pojo . Tur bo Plan Instance Model Ċ import Ġcom . tencent . devops . tur bo . vo . Tur bo Overview Stat Row VO Ċ import Ġcom . tencent . devops . tur bo . vo . Tur bo Overview Trend VO Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġjava . time . temporal . Ch rono Unit Ċ Ċ @ Suppress (" Max Line Length ") Ċ @ Service Ċ class ĠTur bo Summary Service Ġ@ Autowired Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġtur bo Summary Dao : ĠTur bo Summary Dao , ĊĠĠĠ Ġprivate Ġval Ġtur bo Plan Service : ĠTur bo Plan Service , ĊĠĠĠ Ġprivate Ġval Ġtur bo Day Summary Repository : ĠTur bo Day Summary Repository Ċ ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( Tur bo Summary Service :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæĽ´æĸ° æĮī æĹ¥ ç»Łè®¡ ï¼Į ç¼ĸè¯ĳ åĬł éĢŁ æĸ¹æ¡Ī åĴĮ æĸ¹æ¡Ī å®ŀä¾ĭ ä¿¡æģ¯ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate Summary Plan And Instance Info ( ĊĠĠĠĠĠĠĠ Ġtur bo Plan Instance Model : ĠTur bo Plan Instance Model , ĊĠĠĠĠĠĠĠ Ġuser : ĠString ĊĠĠĠ Ġ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 . ĠæĽ´æĸ° æĮī æĹ¥ ç»Łè®¡ ä¿¡æģ¯ ĊĠĠĠĠĠĠĠ Ġtur bo Summary Dao . upsert Tur bo Summary ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprojectId Ġ= Ġtur bo Plan Instance Model . projectId !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Time Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġestimate Time Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Flag Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ// Ġ 2 . ĠæĽ´æĸ° æĸ¹æ¡Ī ï¼Į æĸ¹æ¡Ī å®ŀä¾ĭ ä¿¡æģ¯ ĊĠĠĠĠĠĠĠ Ġreturn Ġtur bo Plan Service . add Instance And Count ById ( tur bo Plan Instance Model , Ġuser ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæı Ĵ åħ¥ æĽ´æĸ° ç¼ĸè¯ĳ åĬł éĢŁ æĮī æĹ¥ ç»Łè®¡ ä¿¡æģ¯ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupsert Summary Info ( ĊĠĠĠĠĠĠĠ ĠprojectId : ĠString , ĊĠĠĠĠĠĠĠ Ġstatus : ĠString , ĊĠĠĠĠĠĠĠ Ġexecute Time : ĠDouble ?, ĊĠĠĠĠĠĠĠ Ġestimate Time : ĠDouble ?, ĊĠĠĠĠĠĠĠ Ġcreate Flag : ĠBoolean ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( status Ġ!= ĠEnum Dist cc Task Status . FIN ISH . getT BS Status () Ġ&& Ġ! create Flag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" status Ġis Ġnot Ġfinish Ġand Ġcreate Ġflag Ġis Ġfalse ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtur bo Summary Dao . upsert Tur bo Summary ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprojectId Ġ= ĠprojectId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Time Ġ= Ġexecute Time , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġestimate Time Ġ= Ġestimate Time , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Flag Ġ= Ġcreate Flag ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ æĢ» è§Ī é¡µéĿ¢ ç»Łè®¡ æłı æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Overview Stat Row Data ( projectId : ĠString ): ĠTur bo Overview Stat Row VO Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ åĬł éĢŁ æĸ¹æ¡Ī æķ° ĠåĴĮ Ġ åĬł éĢŁ æ¬¡æķ° ĊĠĠĠĠĠĠĠ Ġval Ġengine Count And Execute Count Ġ= Ġtur bo Plan Service . getInstance Num And Execute Count ( projectId ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( engine Count And Execute Count . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ å®ŀéĻħ æĢ» èĢĹ æĹ¶ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexecute Time Hour Ġ= Ġengine Count And Execute Count [ 0 ]. execute Time !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ é¢Ħ ä¼° æĢ» èĢĹ æĹ¶ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġestimate Time Hour Ġ= Ġengine Count And Execute Count [ 0 ]. estimate Time !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance Num Ġ= Ġengine Count And Execute Count [ 0 ]. instance Num !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexecute Count Ġ= Ġengine Count And Execute Count [ 0 ]. execute Count !! ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠTur bo Overview Stat Row VO ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Num Ġ= Ġinstance Num , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Count Ġ= Ġexecute Count , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ æĢ» èĢĹ æĹ¶ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Time Hour Ġ= ĠMath Util . round To Two Digits ( execute Time Hour ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsaving Rate Ġ= Ġif Ġ( estimate Time Hour Ġ== Ġ 0 . 0 ) Ġ" 0 . 0 0 " Ġelse ĠMath Util . round To Two Digits (( estimate Time Hour Ġ- Ġexecute Time Hour ). div ( estimate Time Hour ). times ( 1 0 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTur bo Overview Stat Row VO () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ æĢ» è§Ī é¡µéĿ¢ èĢĹ æĹ¶ åĪĨå¸ĥ è¶ ĭ åĬ¿ åĽ¾ æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetTime Consum ing Trend Data ( date Type : ĠString , ĠprojectId : ĠString ): ĠList < Tur bo Overview Trend VO > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstart Day Ġ= Ġget StartTime And EndTime By Date type ( date Type ) ĊĠĠĠĠĠĠĠ Ġ// ĠæŁ¥è¯¢ å¼Ģå§ĭ æĹ¶éĹ´ åĴĮ ç»ĵæĿŁ æĹ¶éĹ´ ä¹ĭéĹ´ Ġ å®ŀéĻħ èĢĹ æĹ¶ æķ°æį® Ġ åıĬ Ġ é¢Ħ ä¼° èĢĹ æĹ¶ æķ°æį® Ġ å¹¶ ä»¥ æĹ¥æľŁ åĪĨ ç»Ħ ĊĠĠĠĠĠĠĠ Ġval Ġtime Consum ing Trend DataList Ġ= Ġtur bo Summary Dao . getTime Consum ing Trend Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprojectId , Ġstart Day , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDate . now () ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġget Compile Number And Time Consum ing Trend Data ( time Consum ing Trend DataList , Ġstart Day ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ æĢ» è§Ī é¡µéĿ¢ ç¼ĸè¯ĳ æ¬¡æķ° è¶ ĭ åĬ¿ åĽ¾ æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Compile Number Trend Data ( date Type : ĠString , ĠprojectId : ĠString ): ĠList < Tur bo Overview Trend VO > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġstart Day Ġ= Ġget StartTime And EndTime By Date type ( date Type ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠæŁ¥è¯¢ å¼Ģå§ĭ æĹ¶éĹ´ åĴĮ ç»ĵæĿŁ æĹ¶éĹ´ ä¹ĭéĹ´ çļĦæķ°æį® Ġ å¹¶ ä»¥ æĹ¶éĹ´ åĪĨ ç»Ħ ĊĠĠĠĠĠĠĠ Ġval Ġcompile Number Trend DataList Ġ= Ġtur bo Summary Dao . get Compile Number Trend Data ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠprojectId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Day , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDate . now () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġget Compile Number And Time Consum ing Trend Data ( compile Number Trend DataList , Ġstart Day ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæł¹æį® åıĤæķ° Date type èİ·åıĸ å¼Ģå§ĭ æĹ¶éĹ´ åĴĮ ç»ĵæĿŁ æĹ¶éĹ´ åıĬ æĹ¶éĹ´ æ®µ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget StartTime And EndTime By Date type ( date Type : ĠString ): ĠLocalDate Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( date Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" week " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ Date Type Ġ= Ġ åĳ¨ Ġ åĪĻ èİ·åıĸ æľĢè¿ĳ ä¸Ģ åĳ¨ çļĦ æĹ¥æľŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDate . now (). minus Days ( 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" month " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ Date Type Ġ= Ġ æľĪ Ġ åĪĻ èİ·åıĸ æľĢè¿ĳ ä¸Ģ æľĪ çļĦ æĹ¥æľŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDate . now (). minus Months ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġå¦Ĥæŀľ Date Type Ġ= Ġå¹´ Ġ åĪĻ èİ·åıĸ æľĢè¿ĳ ä¸Ģ å¹´ çļĦ æĹ¥æľŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLocalDate . now (). minus Years ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ Ġ ç¼ĸè¯ĳ æ¬¡æķ° / èĢĹ æĹ¶ åĪĨå¸ĥ Ġ è¶ ĭ åĬ¿ åĽ¾ æķ°æį® ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġget Compile Number And Time Consum ing Trend Data ( compile Number And Time Consum ing Trend DataList : ĠList < Tur bo Day Summary Overview Model >, Ġstart Day : ĠLocalDate ): ĠMutable List < Tur bo Overview Trend VO > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcompile Number Trend DataMap Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile Number And Time Consum ing Trend DataList . groupBy Ġ{ ĠDateTime Formatter . of Pattern (" yyyy - MM - dd "). format ( it . summary Day ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġcompile Number And Time Consum ing Trend Data Ġ= Ġmutable ListOf < Tur bo Overview Trend VO >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. start Day . until ( LocalDate . now (), ĠCh rono Unit . DAYS )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġday Str Ġ= ĠDateTime Formatter . of Pattern (" yyyy - MM - dd "). format ( start Day . plus Days ( i )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtur bo Day Summary Overview List Ġ= Ġcompile Number Trend DataMap [ day Str ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtur bo Day Summary Overview Model Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tur bo Day Summary Overview List . isNull OrEmpty ()) Ġnull Ġelse Ġtur bo Day Summary Overview List [ 0 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompile Number And Time Consum ing Trend Data . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTur bo Overview Trend VO ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdate Ġ= Ġday Str , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Count Ġ= Ġtur bo Day Summary Overview Model ?. execute Count Ġ?: Ġ 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Time Ġ= Ġtur bo Day Summary Overview Model ?. execute Time Ġ?: Ġ 0 . 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġestimate Time Ġ= Ġtur bo Day Summary Overview Model ?. estimate Time Ġ?: Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcompile Number And Time Consum ing Trend Data ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæŁ¥è¯¢ æīĢæľī æĢ» ç»ĵ æ¸ħ åįķ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠfindAll Summary List ( projectId : ĠString ): ĠList < TT ur bo Day Summary Entity > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtur bo Day Summary Repository . findAll () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠæĽ´æĸ° é¢Ħ ä¼° æĹ¶éĹ´ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate Estimate Time ( ĊĠĠĠĠĠĠĠ ĠprojectId : ĠString , ĊĠĠĠĠĠĠĠ Ġsummary Day : ĠLocalDate , ĊĠĠĠĠĠĠĠ Ġestimate Time : ĠDouble ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtur bo Summary Dao . update Estimate Time ( projectId , Ġsummary Day , Ġestimate Time ) ĊĠĠĠ Ġ} Ċ } Ċ