From 77b324cd4c8e63521ab4b690f664bff3721d90a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=85=E6=88=BF?= Date: Sat, 10 Jan 2026 13:29:26 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=BA=E5=9C=BA=E9=A1=BA=E5=BA=8F=EF=BC=9A?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=A2=84=E8=AE=A1=E5=87=BA=E5=9C=BA=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E5=92=8C=E8=AF=84=E5=88=86=E5=AE=8C=E6=88=90=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - LineupParticipantVO添加estimatedTime字段 - 根据出场顺序计算预计出场时间(每人5分钟) - 根据martial_result.score_status判断已完成状态 Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> --- .../buckets/.bloomcycle.bin/xl.meta | Bin 743 -> 743 bytes .../buckets/.usage-cache.bin.bkp/xl.meta | Bin 637 -> 630 bytes .../buckets/.usage-cache.bin/xl.meta | Bin 637 -> 630 bytes .../.minio.sys/buckets/.usage.json/xl.meta | Bin 2360 -> 2360 bytes .../.usage-cache.bin.bkp/xl.meta | Bin 627 -> 636 bytes .../000000-assets/.usage-cache.bin/xl.meta | Bin 627 -> 636 bytes .../assets/.usage-cache.bin.bkp/xl.meta | Bin 575 -> 575 bytes .../buckets/assets/.usage-cache.bin/xl.meta | Bin 575 -> 575 bytes .../controller/MartialMiniController.java | 30 +++++++++++++++++- .../martial/pojo/vo/LineupParticipantVO.java | 3 +- 10 files changed, 31 insertions(+), 2 deletions(-) diff --git a/minio_data/.minio.sys/buckets/.bloomcycle.bin/xl.meta b/minio_data/.minio.sys/buckets/.bloomcycle.bin/xl.meta index c8adccc9db643494749d248ceb6b11414d254848..3af0a8cc09e4996900fe47d0883a0eaaadd3d9af 100644 GIT binary patch delta 447 zcmaFP`kZxwI&Y_Y^X`aCSB|jc%}vsuXksj|A&1RxQl?96+onQE&g+6E6U*z^p^7H{ zu~9HiOieX4HcLw}PEAZPGfGS}Fi1->OEOALN=Y+MGDw{q!KhdN$ZT^KW8;#%(wv;5 zjKLRuFES*Z-rRU#KF^uHr2XXjz_IT2z#pSHiF) zFSVlNY(Vw$;*!LolGK#rJgguUnTe0rt7^@uUYA^%oRjLDpIeZV3Y5LWAOKhJKwFK) ztNt82U5NZnb*VRS<46(4~*u)pFdl5Yo+R)3hxR-2G|+nj#49Z?#G_M>zMfxmqjZ69l(d Pt?1r11b4k*mUR&TU0j+e delta 447 zcmaFP`kZxwI&a7C&^bTC!;Y{_Jgj6n(ZpDwTknS2ml)5E8SNLOZ5lRgomgJS4plVq zkBx$bfnkbyYNDx;shMfAnMtZqqNP!?fr)vNd8$!bVxr;X2u8j7@H(jnjEzh3N^^3K zG6t*O61l!y^~B+-Ex|9VYL6G~-n4S7%KQ|?pD(PMCoNtzk=>gC3|f{amlhSJ=9Mrk z$xE#$IqS{7ytpK>s3bMzI1ejGMP|aBI>Y1N1lJ{3Cg-F&=jRsWqylB{FbKdE%=l%L zxwxJI&Yx*!)ay3`!7VbH``7}(UC(eNF&DvoWi%@}7|xxgW^_>b8G@T+^gCb~f;-RX zSnzKI_m7#f;h6_rRrR2N_*;zJTEN85{Z8Berr%UZOiD8}OEI-f zHBGimPE0g1OENbzHZU_zG)^)zOHMOfSavQw=`_Q+Td&1$F*YvAE6vF{@_4ywu<UHPx@t?bXo}3cvbm5|&*$?aD5|p|Mr}uM2}H!(3K|6wb*9871ojs#f_V z7MFw;q$HN49_L|Y0D{cK$LkFx=UJ}~&dx0GNKMSi%u7GC)HyLZBei*1VsUY5NpZ)b zwIvD5o6g=ZTPuHjBA(JR=b@w3!`{BG`8yhbzu-?xXQ}F!ZrCIqh!4|+bW;L z;*!vUl*E$M<2)Wn?3y!1m$ofDHYQk&NrfPrpeadB!% zamS+Mj0ua1t1dCN#(FHuFP2+WR?M(CB^O8(R~64@U}ECtU|7~9QnYpQ#C7^~({9~h#n3QH{mSSp|YMN}BoS0~2mSk>b zY+z=bXq;qbmYildIf7BoT3WcLhOu!;UTIFwk;ltbgN<+bY~1)^=dlY>s;PdBZm*7> zQ25nfld$a4X;*du4vnq)e_a?v8RoJwq;O6?$S7GKP_@b@vA86(ASJOR^*9eJ0}x~; zK3;DqInR1^aCT;aM`~hDW?uTCrOt`T8L7?75{rvdONu)dC1*@nR9wZdD8HCtQCTs= z;*?wCr5C~1Wx5GJvHa=NdCNT@c{r-2Zsp& delta 352 zcmeyy@|R_TI&a7C&^c2KJdUtf80Y?Di=;Sg_b+=?Ke0Sc{nV;} z#G(?%;LNJj;)xd-PAvhkfb>$|kj&iF%MwsSCjPNeFtadEHZ(O(Gfp%#NHk4Lu}Dm| zv`jKfHn1=PLesR#5sZ4)dOeF>7#o-5mFDCedFAbD7N=j9GoAaM&7u0!rE({I8-A`4 znivb5OU~JsV(;y~M&Vk=*NeeH6U*z^p^7H{ zF`XR2C|AEEwInh9rb3E^vAJn-nt^4Cfk}#SO0s2|VN!BpnsKT@lBuzUk;%fcbLmN^ z8P18nYdy`_xFoMMC+8^pn(aMIlTIz&tg+{A)5cXQ8!yUgt8aEt{+!L*kvA>pvAS=y zQchxVNoYYzVo9o!m6DNxk(sW6p{}7ph=Hk;OB> BOtk<2 delta 202 zcmdlXv_oiuI&a7C&^bR(MI2$7BXr@&L=$6ypOSM6mYnl`xYx&0)AZ91uZiV#>`+A$ z|Cp*TNi9iCzo}rDW@Kb)lwx6OVQyj$qLb3h&5|w6jZ9L2bV~AMLq@rzg=Oc`lTI_7 zJ74v3FJt49ywaSUqwH($d=32KsCYG9;IoS;!(-mPbJrPd)slJ3{k-GMucTk)t<_37 ziNz(M1u2OosY+H#Mg~S^x(0^229_ZPW>$vAR)!XO7G?$}#s)?v#+z?2Ca?nl0*X=J diff --git a/minio_data/.minio.sys/buckets/000000-assets/.usage-cache.bin.bkp/xl.meta b/minio_data/.minio.sys/buckets/000000-assets/.usage-cache.bin.bkp/xl.meta index 05e16cc9612dd43b61cc1510cbcf0e619799ce1b..067cbdf77801241a4e09549bb63dea99736fe02c 100644 GIT binary patch delta 336 zcmey&@`q)DI&Y_Y^RD~bOpmYx=HCmPXksjI;@w}9M^WCrJNeTkC+)e^KCwJb{p6~E z#G(?%;LNJj;)xd-PA&nlfb>$|kj&iF%MwsSCjK#<9KooTu_U!5G5w}Ol97R#v5`qq zQeu)}szp+2at& Ws-&jJzy4Uth8fCp7-t=EdJ6zbhKFVV delta 328 zcmeyv@|k6VI&a7C(Ak^+uRg+(nd$arqKUD<`_FSOoe^`rzC-Y(prZdmhl%BJ>IYT@ zBo>u824_~K7Eip$a9|0D1*DhyhGgcZUY39wGVzb8`jXU=#PpjAMrM|lX_n@R<_3ml z$%#ox7D+&mY;2a4Vrr3MoRl=#kWtNXVcEI#q|*%Nj=w3>V{BZKSDKS^{qWxUx|`6L#X zgchVEmZTo%VPyb<%!E00hX1)WCNYV`cPvWIn7Bp1v>+!xF=bJ46~m(ZVunR!#SDv6 za)Cr~Rq<>fH)A@(!sJ6BwG)79E-|*odH~hQF)?v-FtE!V=3r>xQ1H^&RoY^I;KC!b Q^x}}CCvNae+Rl{^0L*fVi~s-t diff --git a/minio_data/.minio.sys/buckets/000000-assets/.usage-cache.bin/xl.meta b/minio_data/.minio.sys/buckets/000000-assets/.usage-cache.bin/xl.meta index 42565458a16e194e0e8ddc2fdb9702b741bf38a8..a0b15a9a72ae38893a0256e449c3038c8d8b8af6 100644 GIT binary patch delta 336 zcmey&@`q)DI&Y_Y^RA_TZI7@_D15{^(Zq!Ro0oo6hofTe>bNc?NAdL&%j48ft_nyj zDsc?XtV%7Oc#+}c5)cbWFZB({%uT&40X1XdA5--usU?Z&Hx-hM49tv;Op=lklMGWW zl2VhCEzB(v4Ga?vjm%RFOj9QtGO9T)EIXH;beiE@%YTovjEzh3N^^3Kyi{BjxheWY z|HCPf?V+<{q?b!=N?ymivwcNYaiR0tu*PZ*jjj5BSs3oJGPrO}-p{Bi6Hv9vC$YFB zv>+w1B=tBCD+3T@CO%$ouz5|uBqouJE&8PeIr)hx9gC7PCM+thy2RKT>#-=mSZ+~S zF~j1NTp&?gRXm%4iHVzofgPlKQCY@xIS_+^VPW!NkiLmPeGEW73=D_Z85%eQB9a)Q VN@{xi>yM>un4vs}an=#1w*dEmgmnM_ delta 326 zcmeyv@|k6VI&a7C(AnO(ACIu4#!RZ2Xkx-&+{1ErwcppxjO-KbUcVNbSRSW-U{ye3 zQHf)4W>sqO#ET3EmVj75dZ}+nW^U?b38)zp|CmmWU{uRkl3J3OepA87%+fN=(mc`J zz|br?F)7I+2?&yn&5}|~EmDk=k`|VoOHVq@aPF{E}TVoQFNPNel4VXksj|npd;f?7g4U@~Jl`2$bqvm{?xN4plVq zPg1C*p>e9AiJ7TMa+-OXxkYM{X-aCMSz@B0xrs@Nk-6o+w1B=tBCD+3T@CO%%T8ny4yfX gkdj!EdYp%q0SGb^=F}M-o|!QDC!-U~!I{GP0KC&qu>b%7 diff --git a/minio_data/.minio.sys/buckets/assets/.usage-cache.bin/xl.meta b/minio_data/.minio.sys/buckets/assets/.usage-cache.bin/xl.meta index 71f54007e87e8ea37122cdcec8f3ba1418f5f407..07950d7a07abbc1e258d5d4928dd0fdc56277c27 100644 GIT binary patch delta 179 zcmdnbvY%ywI&Y_Y^Ln2v|BkRUD~Ya~Xksj2YTKD{A;Y0){|~)NS=MvkCYIN+LlsT@ zW20bcXq;+jVrFWRoMxV8ZjqW~nv$AmmY8U0Zeo&RWNtY*f>BTR%e?pR7#o-5mFDCe zS;Hy%^V-Ra?Ti2WCT}lau=>Y^O$Tl)ZGZ7oF1q%4rD^Ge$(tFqWCE&I`6L#XgchVE emZTo%VPyb<%*4m*RipMjn*5W|i6vOos|f)6UQLPs delta 179 zcmdnbvY%ywI&a7C&^dxj9geX4Xj&XU(ZpC_xx-|x?PhLw=GrcoUw-%Q`-$as>`+A$ z|JW#)8XB9J8l)JdCMBC0S{Rz8C7BzVCL0+fTLSrMX=aln81-~dJ4*R6HZI94&B-~k zCZ6Hxwx!p%a&Lbe+Hj=EFz>xK$5Nxl1F!apeOj?%Oa0Wzn;ErayxCUyBo>#17NjJW dq#oyCWdMTAggJFahi4{C{>kXXa&V@wJ^%oqNeuu1 diff --git a/src/main/java/org/springblade/modules/martial/controller/MartialMiniController.java b/src/main/java/org/springblade/modules/martial/controller/MartialMiniController.java index ee78def..55c2599 100644 --- a/src/main/java/org/springblade/modules/martial/controller/MartialMiniController.java +++ b/src/main/java/org/springblade/modules/martial/controller/MartialMiniController.java @@ -938,6 +938,15 @@ public class MartialMiniController extends BladeController { // 使用现有mapper查询编排详情 List details = scheduleGroupMapper.selectScheduleGroupDetails(competitionId); + // 查询已完成评分的选手ID(主裁判已确认) + LambdaQueryWrapper resultWrapper = new LambdaQueryWrapper<>(); + resultWrapper.eq(MartialResult::getCompetitionId, competitionId) + .eq(MartialResult::getScoreStatus, 1) // 主裁判已确认 + .eq(MartialResult::getIsDeleted, 0); + List completedResults = resultService.list(resultWrapper); + Set completedAthleteIds = completedResults.stream() + .map(MartialResult::getAthleteId) + .collect(Collectors.toSet()); System.out.println("details count: " + (details != null ? details.size() : 0)); if (details != null && !details.isEmpty()) { System.out.println("first detail participantId: " + details.get(0).getParticipantId()); @@ -984,7 +993,26 @@ public class MartialMiniController extends BladeController { participant.setPlayerName(detail.getPlayerName()); participant.setOrganization(detail.getOrganization()); participant.setIsMe(myAthleteIds.contains(detail.getParticipantId())); - participant.setStatus(detail.getScheduleStatus() != null ? detail.getScheduleStatus() : "waiting"); + // 根据评分状态判断:已完成 > 进行中 > 待出场 + if (completedAthleteIds.contains(detail.getParticipantId())) { + participant.setStatus("已完成"); + } else { + participant.setStatus("待出场"); + } + // 计算预计出场时间 + String baseTime = detail.getTimeSlot() != null ? detail.getTimeSlot() : "08:00"; + int orderNum = participant.getOrder() != null ? participant.getOrder() : 1; + int minutesOffset = (orderNum - 1) * 5; // 每人5分钟 + try { + String[] parts = baseTime.split(":"); + int hours = Integer.parseInt(parts[0]); + int minutes = Integer.parseInt(parts[1]) + minutesOffset; + hours += minutes / 60; + minutes = minutes % 60; + participant.setEstimatedTime(String.format("%02d:%02d", hours, minutes)); + } catch (Exception e) { + participant.setEstimatedTime(baseTime); + } group.getParticipants().add(participant); } } diff --git a/src/main/java/org/springblade/modules/martial/pojo/vo/LineupParticipantVO.java b/src/main/java/org/springblade/modules/martial/pojo/vo/LineupParticipantVO.java index 5c26ae6..a6b3863 100644 --- a/src/main/java/org/springblade/modules/martial/pojo/vo/LineupParticipantVO.java +++ b/src/main/java/org/springblade/modules/martial/pojo/vo/LineupParticipantVO.java @@ -15,5 +15,6 @@ public class LineupParticipantVO implements Serializable { private String playerName; private String organization; private String status; - private Boolean isMe; // 是否为当前用户 + private String estimatedTime; + private Boolean isMe; }