From 1f97d842a0b93a4055ed9a52c5b616bea4617506 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=85=E6=88=BF?= Date: Sun, 18 Jan 2026 13:15:33 +0800 Subject: [PATCH] refactor: Delegate saveAndLockSchedule to ScheduleArrangeService MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Phase 5 Complete: - Delegate saveAndLockSchedule to ScheduleArrangeService (56 lines → 7 lines) - Implementation already exists in ScheduleArrangeServiceImpl - Method handles locking schedule and assigning player numbers File size: 769 lines → 720 lines (-49 lines, -6.4%) Total reduction: 996 lines → 720 lines (-276 lines, -27.7%) Delegation Status: ✅ exportSchedule - FULLY DELEGATED ✅ exportScheduleTemplate2 - FULLY DELEGATED ✅ updateParticipantCheckInStatus - FULLY DELEGATED ✅ getDispatchData - FULLY DELEGATED ✅ adjustOrder - FULLY DELEGATED ✅ saveDispatch - FULLY DELEGATED ✅ moveScheduleGroup - FULLY DELEGATED ✅ saveAndLockSchedule - FULLY DELEGATED (NEW) Progress: 8/10 methods (80%) Remaining: 2 methods (saveDraftSchedule, getScheduleResult) All tests passing (482 total) --- .../buckets/.bloomcycle.bin/xl.meta | Bin 743 -> 743 bytes .../buckets/.usage-cache.bin.bkp/xl.meta | Bin 630 -> 630 bytes .../buckets/.usage-cache.bin/xl.meta | Bin 630 -> 630 bytes .../.minio.sys/buckets/.usage.json/xl.meta | Bin 2360 -> 2360 bytes .../.usage-cache.bin.bkp/xl.meta | Bin 636 -> 636 bytes .../000000-assets/.usage-cache.bin/xl.meta | Bin 636 -> 636 bytes .../assets/.usage-cache.bin.bkp/xl.meta | Bin 575 -> 575 bytes .../buckets/assets/.usage-cache.bin/xl.meta | Bin 575 -> 575 bytes .../impl/MartialScheduleServiceImpl.java | 55 +----------------- 9 files changed, 3 insertions(+), 52 deletions(-) diff --git a/minio_data/.minio.sys/buckets/.bloomcycle.bin/xl.meta b/minio_data/.minio.sys/buckets/.bloomcycle.bin/xl.meta index 1d1862763bee854ee16e3e4aac90beb9f5eb3e56..1d0a0b16881461da9d75f8f9e7c5882314774d58 100644 GIT binary patch delta 251 zcmaFP`kZxwCU>l;N@vv(mVT2@>=R9l1$O(0A2F5mz2AGevM{uqNq=H_11ng`#6PB! zBN)}{m!y^?rr%UBFiJKzGD%BHGPN)>FilFcG%z!>NKG|LF*Z(128t{!JC~kxn&BL` zz@PJsjZ5-Mb8?O{25*17HAf-iLY5Rn7ng zEz6Tji;7b7N*I>prB;-jEuXc#xFoTtBsE3xI1ejGNoG!tJ6qfDign4A$vLUc`MCu- dsX*yF3<8rynJ&p8RB?0g=F}s&?(F|G8~~#~U7`R0 delta 251 zcmaFP`kZxwCby$XZCTI}7V*4TqlqTQ0tUCfp8etAy??P-kG_8OWR8jD4Xj`#6aSd1 zFG(#)Ouwm+YH5;Wk!EIOkZ6#YY?P8{ZfTmBmXeZcnv!Z@Vq|DK*^p7Keqq_U^rX`a z=T229>|ktMl2@9ObCfaIDsuf(#h(8~P0Kqr98kK#ohp3rUc>3cn|1YiF}!Ir9?U3b z0E3q0$)!a_sd*&~OY%}HO3s$gSYBL`SX7dla-4@1q#`pX`#f7|efYZM%H*6>=ltA) joK&Ff9R>l20tujs3~%<7`sr{D8SU%_yVg$r&Ugs`FmGS{ diff --git a/minio_data/.minio.sys/buckets/.usage-cache.bin.bkp/xl.meta b/minio_data/.minio.sys/buckets/.usage-cache.bin.bkp/xl.meta index de9fb94fabea79713d2e04fb194f48d118a4bf7f..6cd865943e42a93841edca3bc35a782dd9ebb8b9 100644 GIT binary patch delta 174 zcmeyy@{MJJCU>kTbI$A|EEkU)5}#;dEU+}O^OFLdb;Wx&POpeF3Bs+$vN_P z*}Lde)2Q9N8IgAO|K!Zmd`xv%4W+h!7QSE2Qsg|LcJgLM4e6Pyd=iUGLJLw7OHz;X aurdHaW=@Vf`_}8MlfN<6u&neuBL)D>KtX>1 delta 174 zcmeyy@{MJJCby$Xfc*UbvUyUnsYz0rfu*TQVv2D}Qlh!3k!7-lNm7zw^5h6cJ>8~ruf8%iF3Bs+$vN`4 z*UUAiDO8bTbC4)=UB=e$)rTVX++2E^eL~jD`2o8ug(q)j)R3OO$|te7B(xwUu_X04 a4=V!@Waea_XYUSqKlvMD4T~uEUugi~R7HRQ diff --git a/minio_data/.minio.sys/buckets/.usage-cache.bin/xl.meta b/minio_data/.minio.sys/buckets/.usage-cache.bin/xl.meta index f158d4293f8b8cad52c61745130e5140c99befcf..fd1de9327034a5ea8e6c72a985dff70e1844152d 100644 GIT binary patch delta 174 zcmeyy@{MJJCU>mJz3u0YupDmWxjE6qSU@4laoN_#K65>ynz+0Wa1wi z1!Kcx%e0hKqZA`!BjY5q)Z|2CgVdB{%Or!8RAX~fdb-_Vcaj(zm*kb^|J!KY1D4sj7U5Ce{$w&KBhXXhEm%<3*WD1DRQ1rJ9#sshV;x;K8eL8p#>?4C8@`G aSQ&sIGbhKLed~4B$=?`jSXTO-5d#3P4nrjX delta 174 zcmeyy@{MJJCby%C>WlA3SRC9HyeFC%3%pA4tc`r;CP`@qmZm0&DaI*DiRPw8mdO?-NlAvulOq`QbXDG7`p4L~B(F3l=g8w; zGuND^P(_Z-L88oc8C$bLnaJ30W`a2kf#Gp1he+LwfoupTy#l(1Mi2lGNio ZtPDVqnUj5bZk{(I#~H`;m8m1zi;= zA~2EsJRoE;IA&usVKy;1FgQ75Gcz<}HDWPgVKOl=H)JwmWH^&p0VXcb@OFp+fuwGA zY;45`tYqV(zJm{Px^>begPUkDE!y?xqBM)ZhU)lgJ$?W=%9E@C9u71*G&e3WGC4Cf MH#Ijiv)BP(2eMZ_iU0rr delta 158 zcmdlXv_oiuCby$XW6$OzEFtYL(k7Z13n=D!iWZx@ZCE7yUhu-oK;4Pu4Xj`#6aUyK z7$hbqnx~qZnOazwq^6}9r==OC7$zGeC7BzV7+ad8PL5zy)01Uw*I{g2l2@9ObCi8e z=lx$Yi<=hwJ0x|BH(P(wKLOYK`l*)hukJ6`%m|q#pf!07qa2@+m5I5Yp^=%XxuLnK K<>niV3G4t#uQ~bv 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 f749a1cde67365e3ad266a1a0d06ac57efa0ca1d..b5ac1d4188c5445a491d068d55ad2bec9346aa71 100644 GIT binary patch delta 187 zcmV;s07U=%1pEY$DGOZ`tCQBm1bTdPB9SyR5XVj!a_Oi{f0Pts;w>_T43T$$1zi-Y zlh%>^HIrBYCS0UtbYW-NATwiSV>mN4Vqq{gF*su}WH@9pIAb+pIb||2G&y8uH=%aU zXJX3$&L%+o*8zc~Zgp&I#OZw25t#~qi~Ih5UKhz&8tVA$r_W0{?S^&e%}eOCL*0|J p0Wuqzs!U;XbX9OCI5=ZAWi~f6HD+NrIbmWlF*h=0GBqkzn+VqtmW!LLeJ7e23wVX4hxhb4Y-rnY{i*S^<=qp@8(6_gCjPNe zFiuWQwlFqLN;EJtv`98gu}CqpNH$HfOf@nzu}n!bpB%xcr@Lw5uaAt4OY%x{a*n*L zxh6Q1tG@g9zq&Z_lMzy{e!N+J-rMqRTj`6l-Y>Q|-<`af(MWpcDxbvSlF)*b#FEtG ZJgf{rkeQR?&K_&;H;Ji&g@gCSMgWw?Miu}7 delta 173 zcmeyv@`q)DCby&Vxno&JSPYiF7My5eETH#RyX=#-v)Z~DHx6g98D&l^Z(s#0nfS*> z!PL;e!Xnu$)y&-3G%eA>GBL@>(A+51$kf=>*f7yDZE^&op6-k{KLQyWm*kb^cGIO%evl~y^I*F-*CHN4>DgYB9Lp}fi diff --git a/minio_data/.minio.sys/buckets/assets/.usage-cache.bin.bkp/xl.meta b/minio_data/.minio.sys/buckets/assets/.usage-cache.bin.bkp/xl.meta index e485b1b7114b25bf5b1372c3656322663e6fe546..a8d346a08b9d7569d8bbfb951b52bfd69be7d7ea 100644 GIT binary patch delta 174 zcmV;f08#(H1iu83DGOZ`F?qYh1SS>1m60?v5P0!^7oX2dqoEQlw5+81mXUXW1zi*| zdApJPJRmhOIc8xqWi>D~IWRObV>L54VK+BsH)CTkI5IP4Wnq(80WK}^;{BKbfuwGA zY;44=nA6J@#7nnWh@apld}OU8=0z1VRLj4pq2C_oUllcKc1ZEolKW@Q9CIA2c delta 174 zcmV;f08#(H1iu83DGNa(cg1GJ1h1FC-;p#k5H~SW*y$rq=cabnLO2B`>ydYW1wkWs z#b%NGJRmSPHe)wtG%`6iVrDlnIAmoqH843bHD)w6GB`J4IX0760WK}$+=aUVfuwGA zY;44=MohPKK)IYtNR+3iE$pvU;he6IP=N~|k0e@12vmxhld}OU8<(m~VRLj4oH2B*_allcKc1f3_myjn{{e*gdg 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 37c6668c5168963e54fe3226d8ccc0a9c9f51565..be7dfdb978616deb26337b5c67eff50557fc7eae 100644 GIT binary patch delta 174 zcmdnbvY%ywCU>mx?broJSbl`mU7ToQEHJ&L;eQmD*Sr;(^4vVN3t1R8(6_gCjPNe zFfcbuHcvA#vNTUhGdHwINi{MxurxGHGchx=Fi)~Hn;gNYr)yq%!Gy7KNnUAA&XF~4 zKHEzicFytkn6iAi?wj=?59h4w4`}38=vRsI;0WoOIe9aqw)FH>K8eL8p#>?4C8@`G aSQ&sIGbj5z+w#l4lYcTgvCLK9vj+g0VnF5q diff --git a/src/main/java/org/springblade/modules/martial/service/impl/MartialScheduleServiceImpl.java b/src/main/java/org/springblade/modules/martial/service/impl/MartialScheduleServiceImpl.java index 42f67b4..fda2cb1 100644 --- a/src/main/java/org/springblade/modules/martial/service/impl/MartialScheduleServiceImpl.java +++ b/src/main/java/org/springblade/modules/martial/service/impl/MartialScheduleServiceImpl.java @@ -609,60 +609,11 @@ public class MartialScheduleServiceImpl extends ServiceImpl groups = scheduleGroupMapper.selectList( - new QueryWrapper() - .eq("competition_id", competitionId) - .eq("is_deleted", 0) - ); - - if (groups.isEmpty()) { - // 没有分组数据,视为成功(可能是初始状态,尚未进行自动编排) - return true; - } - - // 2. 获取所有分组ID - List groupIds = groups.stream().map(MartialScheduleGroup::getId).collect(Collectors.toList()); - - // 3. 更新所有参赛者的编排状态为completed - List participants = scheduleParticipantMapper.selectList( - new QueryWrapper() - .in("schedule_group_id", groupIds) - .eq("is_deleted", 0) - ); - - // 按分组和出场顺序分配选手编号 - Map groupCounters = new HashMap<>(); - participants.sort((a, b) -> { - int groupCompare = a.getScheduleGroupId().compareTo(b.getScheduleGroupId()); - if (groupCompare != 0) return groupCompare; - return Integer.compare(a.getPerformanceOrder() != null ? a.getPerformanceOrder() : 0, - b.getPerformanceOrder() != null ? b.getPerformanceOrder() : 0); - }); - - for (MartialScheduleParticipant participant : participants) { - participant.setScheduleStatus("completed"); - scheduleParticipantMapper.updateById(participant); - - // 分配选手编号 - if (participant.getParticipantId() != null) { - Long groupId = participant.getScheduleGroupId(); - int counter = groupCounters.getOrDefault(groupId, 0) + 1; - groupCounters.put(groupId, counter); - - // 更新选手编号 (格式: 分组序号-出场序号) - MartialAthlete athlete = athleteMapper.selectById(participant.getParticipantId()); - if (athlete != null && (athlete.getPlayerNo() == null || athlete.getPlayerNo().isEmpty())) { - athlete.setPlayerNo(String.format("%03d", counter)); - athleteMapper.updateById(athlete); - } - } - } - - return true; + // Delegated to ScheduleArrangeService + return scheduleArrangeService.saveAndLockSchedule(competitionId); } + /** * 根据时间段字符串计算 timeSlotIndex * 按照时间从早到晚分配索引: 08:30=0, 13:30=1, 其他时间按字符串顺序排序