From dc3e67775b59dc18228cf64b2102b583cc534ce2 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Tue, 30 Jun 2026 08:43:01 +0800 Subject: [PATCH 1/2] commit --- .../ActivitySportsResultsController.java | 312 ++++++ ...tivitySportsScoreStatisticsController.java | 491 +++++++++ ...ySportsStatisticsTypeExportController.java | 494 +++++++++ ...MemberApplyRecordStatisticsController.java | 205 ++++ .../MemberApplyRecordStatisticsPageForm.java | 74 ++ .../vo/MemberApplyRecordStatisticsVO.java | 46 + src/main/resources/application-dev.yaml | 177 ++++ .../module/activity/score/isMaleFemale.vue | 144 +++ .../module/activity/score/scoreTopEight.vue | 75 ++ .../module/activity/score/topEight.vue | 91 ++ .../sports/ActivityResults/index.html | 957 ++++++++++++++++++ .../sports/scoreStatistics/index.html | 487 +++++++++ .../member/statistics/applyRecord/index.html | 318 ++++++ 13 files changed, 3871 insertions(+) create mode 100644 src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsResultsController.java create mode 100644 src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsScoreStatisticsController.java create mode 100644 src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsStatisticsTypeExportController.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/statistics/MemberApplyRecordStatisticsController.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberApplyRecordStatisticsPageForm.java create mode 100644 src/main/java/com/budwk/app/zhgh/staffmanage/member/vo/MemberApplyRecordStatisticsVO.java create mode 100644 src/main/resources/application-dev.yaml create mode 100644 src/main/resources/static/components/module/activity/score/isMaleFemale.vue create mode 100644 src/main/resources/static/components/module/activity/score/scoreTopEight.vue create mode 100644 src/main/resources/static/components/module/activity/score/topEight.vue create mode 100644 src/main/resources/views/platform/zhgh/activity/sports/ActivityResults/index.html create mode 100644 src/main/resources/views/platform/zhgh/activity/sports/scoreStatistics/index.html create mode 100644 src/main/resources/views/platform/zhgh/staffmanage/member/statistics/applyRecord/index.html diff --git a/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsResultsController.java b/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsResultsController.java new file mode 100644 index 0000000..555a896 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsResultsController.java @@ -0,0 +1,312 @@ +package com.budwk.app.zhgh.activity.sports.controller; + +import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.service.BaseService; +import com.budwk.app.base.utils.DateUtil; +import com.budwk.app.base.utils.PwdUtil; +import com.budwk.app.sys.models.Sys_user; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.activity.basic.models.ActivityBasicUnion; +import com.budwk.app.zhgh.activity.basic.models.ActivityBasicUnit; +import com.budwk.app.zhgh.activity.sports.models.ActivityResults; +import com.budwk.app.zhgh.activity.sports.models.ActivitySchoolApply; +import com.budwk.app.zhgh.activity.sports.service.ActivitySportsApplyUserService; +import org.nutz.dao.Cnd; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.SqlExpressionGroup; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.ioc.aop.Aop; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.random.R; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; +import org.nutz.trans.Trans; + +import java.util.Arrays; + +/** + * @author zhf + * @date 2021/5/19 14:58 + * @description 运动会成绩录入 + */ +@IocBean +@Ok("json:full") +@At("/platform/activity/results/input") +public class ActivitySportsResultsController { + + @Inject + private BaseService baseService; + + @Inject + private ActivitySportsApplyUserService activitySchoolApplyViService; + + + @At("") + @Ok("beetl:platform/zhgh/activity/sports/ActivityResults/index.html") + @SaCheckPermission("activity.results.input") + public void index() { + } + + @At + @SaCheckPermission("activity.results.input") + public Result pageData(String groupName, + PageForm page, + String activityId, + String eventId, + String[] isMenWomen) { + Cnd cnd = Cnd.NEW(); + Sql sql = Sqls.create(""" + SELECT + ase.id, + ase.activityId, + ase.eventId, + ae.projectType awardsMode, + ae.allName, + ae.isMenWomen, + school.`name` , + ( SELECT COUNT( 1 ) FROM activity_results ar WHERE ar.eventId = ase.eventId and ar.activityId=ase.activityId) rs + FROM + activity_school_event ase + LEFT JOIN activity_event ae ON ase.eventId = ae.id + LEFT JOIN activity_school school ON school.id = ase.activityId + LEFT JOIN activity_basic_settings abs ON abs.id=ae.competitionCategory + $condition + """); + cnd.and("ase.activityId", "=", activityId); + cnd.andEX("abs.`name`", "=", groupName); + cnd.andEX("ae.`id`", "=", eventId); + SqlExpressionGroup sqlExpressionGroup = new SqlExpressionGroup(); + if (isMenWomen != null) { + if (Arrays.stream(isMenWomen).anyMatch(a -> a.equals("2"))) { + sqlExpressionGroup.and("ae.isMenWomen", "=", 1); + } + if (Arrays.stream(isMenWomen).anyMatch(a -> a.equals("3"))) { + sqlExpressionGroup.or("ae.isMenWomen", "=", 2); + } + if (Arrays.stream(isMenWomen).anyMatch(a -> a.equals("4"))) { + sqlExpressionGroup.and("ae.projectType", "=", 1); + } + if (Arrays.stream(isMenWomen).anyMatch(a -> a.equals("5"))) { + sqlExpressionGroup.or("ae.projectType", "=", 2); + } + } + if (sqlExpressionGroup.getExps().size() > 0) { + cnd.and(sqlExpressionGroup); + } + cnd.desc("allName"); + sql.setCondition(cnd); + return Result.success(baseService.listPageMap(page.getPageNumber(), page.getPageSize(), sql)); + } + + + @At + @SaCheckPermission("activity.results.input") + @Aop(TransAop.READ_COMMITTED) + public Result doAdd(@Param(value = "activityResults") ActivityResults[] activityResults, String activityId, String eventId) { + + baseService.dao().clear(ActivityResults.class, Cnd.where("activityId", "=", activityId).and("eventId", "=", eventId)); + baseService.insert(activityResults); + + return Result.success(); + } + + @At + @SaCheckPermission("activity.results.input") + @Aop(TransAop.READ_COMMITTED) + public Result doAddUser(ActivitySchoolApply activitySchoolApply) { + + + Sys_user sysUser = baseService.dao().fetch(Sys_user.class, Cnd.where("loginname", "=", activitySchoolApply.getLoginname())); + + + if (sysUser != null && sysUser.getLoginname().equals(activitySchoolApply.getLoginname()) && !sysUser.getUsername().equals(activitySchoolApply.getUsername())) { + return Result.error("工号已存在,请检查姓名和工号是否一致!"); + } + if (sysUser == null) { + Trans.exec(() -> { + String pwd = "@dd3s#3618!"; + String salt = R.UU32(); + Sys_user user = new Sys_user(); + user.setId(R.UU32()); + user.setSalt(R.UU32()); + user.setPassword(PwdUtil.getPassword(pwd, salt)); + user.setUsername(activitySchoolApply.getUsername()); + user.setLoginname(activitySchoolApply.getLoginname()); + user.setSex(activitySchoolApply.getSex()); + user.setUnitId(activitySchoolApply.getUnitId()); + user.setMobile(activitySchoolApply.getMobile()); + baseService.insert(user); + ActivityBasicUnit activityBasicUnit = activitySchoolApplyViService.dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", user.getUnitId())); + ActivityBasicUnion basicUnion = activitySchoolApplyViService.dao().fetch(ActivityBasicUnion.class, Cnd.where("id", "=", activityBasicUnit.getUnionId())); + + activitySchoolApply.setUserId(user.getId()); + activitySchoolApply.setApplyUser(SecurityUtil.getUserId()); + activitySchoolApply.setApplyDate(DateUtil.getDate()); + activitySchoolApply.setSex(user.getSex()); + activitySchoolApply.setUnitId(user.getUnitId()); + activitySchoolApply.setActivityUnionId(basicUnion.getId()); + activitySchoolApply.setActivityUnionName(basicUnion.getName()); + activitySchoolApplyViService.insert(activitySchoolApply); + }); + return Result.success(); + } + sysUser.setSex(activitySchoolApply.getSex()); + baseService.update(sysUser); + ActivityBasicUnit activityBasicUnit = activitySchoolApplyViService.dao().fetch(ActivityBasicUnit.class, Cnd.where("id", "=", sysUser.getUnitId())); + ActivityBasicUnion basicUnion = activitySchoolApplyViService.dao().fetch(ActivityBasicUnion.class, Cnd.where("id", "=", activityBasicUnit.getUnionId())); + activitySchoolApply.setUserId(sysUser.getId()); + activitySchoolApply.setApplyUser(SecurityUtil.getUserId()); + activitySchoolApply.setApplyDate(DateUtil.getDate()); + activitySchoolApply.setUnitId(sysUser.getUnitId()); + activitySchoolApply.setActivityUnionId(basicUnion.getId()); + activitySchoolApply.setActivityUnionName(basicUnion.getName()); + activitySchoolApplyViService.insert(activitySchoolApply); + + return Result.success(); + } + + + /** + * 查询个人参赛人员 + * + * @param activityId + * @param eventId + * @param isMenWomen + * @return + */ + + @At + @SaCheckPermission("activity.results.input") + public Result getUserList(String activityId, + String eventId, + Integer isMenWomen) { + Cnd cnd = Cnd.NEW(); + Sql sql = Sqls.create(""" + SELECT + u.id,u.username,u.loginname,u.unionId, + u.unionname,u.sex + FROM + activity_school_apply asa + LEFT JOIN `vw_user` u ON u.id = asa.userId $condition + """); + + cnd.and("asa.activityId", "=", activityId); + cnd.and("asa.eventId", "=", eventId); + cnd.and("asa.awardsMode", "=", 1); + if (isMenWomen != null && isMenWomen == 1) cnd.and("u.sex", "=", "男性"); + if (isMenWomen != null && isMenWomen == 2) cnd.and("u.sex", "=", "女性"); + sql.setCondition(cnd); + return Result.success(activitySchoolApplyViService.listMap(sql)); + } + + @At + @SaCheckPermission("activity.results.input") + public Result getUnionDetails(String activityId, String eventId, String unionId) { + int count = activitySchoolApplyViService.count(Cnd.where("activityId", "=", activityId).and("eventId", "=", eventId).and("unionId", "=", unionId)); + return Result.success(count); + } + + + /** + * 查询团体参赛分工会 + * + * @param activityId + * @param eventId + * @return + */ + + @At + @SaCheckLogin + public Result getUnionList(String activityId, + String eventId) { + Sql sql = Sqls.create(""" + + SELECT + un.id, + un.name unionname + FROM + activity_school_apply asa + LEFT JOIN sys_union un ON un.id = asa.unionId + WHERE + asa.activityId = @activityId + AND asa.eventId = @eventId + GROUP BY + un.name + """).setParam("activityId", activityId).setParam("eventId", eventId); + return Result.success(activitySchoolApplyViService.list(sql)); + } + + + /** + * 根据活动项目性别查询有没有获奖人员 + * + * @return + */ + + @At + @SaCheckPermission("activity.results.input") + public Result getUserData(String activityId, + String eventId, + Integer isMenWomen) { + Cnd cnd = Cnd.NEW(); + Sql sql = Sqls.create(""" + SELECT + ar.id, + ar.userId, + ar.activityId, + ar.eventId, + u.username, + u.unionId unionId, + u.unionname, + u.sex, + ar.integral, + ar.numberOfPeople, + ar.ranking, + ar.isTeamPersonal + FROM + `activity_results` ar + LEFT JOIN `vw_user` u ON ar.userId = u.id $condition + """); + cnd.and("ar.activityId", "=", activityId); + cnd.and("ar.eventId", "=", eventId); + if (isMenWomen != null && isMenWomen == 1) cnd.and("u.sex", "=", "男性"); + if (isMenWomen != null && isMenWomen == 2) cnd.and("u.sex", "=", "女性"); + cnd.asc("ar.ranking"); + sql.setCondition(cnd); + return Result.success(baseService.listMap(sql)); + } + + + @At + @SaCheckPermission("activity.results.input") + public Result getUnionData(String activityId, + String eventId) { + Sql sql = Sqls.create(""" + SELECT + ar.id, + ar.activityId, + ar.eventId, + ar.ranking, + ar.unionId, + ar.numberOfPeople, + ar.integral, + ar.isTeamPersonal + FROM + activity_results ar + WHERE + ar.isTeamPersonal = 2 + AND ar.activityId = @activityId + AND ar.eventId = @eventId + ORDER BY ar.ranking asc + """).setParam("activityId", activityId).setParam("eventId", eventId); + return Result.success(baseService.listMap(sql)); + } + + +} diff --git a/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsScoreStatisticsController.java b/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsScoreStatisticsController.java new file mode 100644 index 0000000..bfc31df --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsScoreStatisticsController.java @@ -0,0 +1,491 @@ +package com.budwk.app.zhgh.activity.sports.controller; + +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; +import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.service.BaseService; +import com.budwk.app.base.utils.CommonDownloadUtil; +import com.budwk.app.sys.models.Sys_union; +import com.budwk.app.sys.services.SysUnionService; +import com.budwk.app.zhgh.activity.sports.models.ActivitySchool; +import com.budwk.app.zhgh.activity.sports.models.ActivitySchoolEvent; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.entity.Record; +import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.Static; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; + +/** + * @author zhf + * @date 2021/5/24 14:12 + * @description 运动会成绩统计 + */ +@IocBean +@Ok("json:full") +@At("/platform/activity/score/statistics") +public class ActivitySportsScoreStatisticsController { + + @Inject + private SysUnionService sysUnionService; + + @Inject + private BaseService baseService; + + +// @Inject +// private OfficeTemplateUtil officeTemplateUtil; + + + @At("") + @Ok("beetl:platform/zhgh/activity/sports/scoreStatistics/index.html") + @SaCheckPermission("activity.score.statistics") + public void index() { + } + + @At + @SaCheckPermission("activity.score.statistics") + @ApiOperation("男子项目分工会积分/女子项目分工会积分") + public Result isMaleFemale(String activityId, String sex, Integer awardsMode) { + + NutMap map = new NutMap(); + List result = new ArrayList<>(); + + //查询所有的工会 + List query = sysUnionService.query(); + Cnd cndX = Cnd.NEW(); + //查询所有的项目 + Sql sqlX = Sqls.create(""" + SELECT + ev.id, + ev.eventId, + ba.`name` baname, + eve.projectType awardsMode, + eve.allName label, + eve.isMenWomen + FROM + activity_school_event ev + LEFT JOIN activity_event eve ON ev.eventId = eve.id + LEFT JOIN activity_basic_settings ba ON eve.competitionCategory = ba.id $condition + """); + cndX.and("ev.activityId", "=", activityId); + if (awardsMode < 3) { + cndX.and("eve.projectType", "=", awardsMode); + cndX.and("eve.isInterest", "=", false); + cndX.and("eve.isMenWomen", "=", sex.equals("男") ? 1 : 2); + } + if (awardsMode == 3) { + cndX.and("eve.isInterest", "=", true); + } + if (awardsMode == 4) { + cndX.and(Cnd.exps("eve.isMenWomen", "=", sex.equals("男") ? 1 : 2).or("eve.isMenWomen", "is", null)); + } + cndX.and(new Static("1=1 order by case ba.`name` when '甲组' then 1 when '乙组' then 2 when '丙组' then 3 when '丁组' then 4 when '团体' then 5 end")); + sqlX.setCondition(cndX); + List eventList = baseService.list(sqlX); + + //查询每个工会下每个项目的成绩 + for (Sys_union sys_union : query) { + NutMap nutMap = new NutMap(); + //记录总积分 + double totalScore = 0; + nutMap.setv("unionname", sys_union.getName()); + for (Record event : eventList) { + Sql sqlC = Sqls.create(""" + SELECT + IF ( sum( integral ) IS NULL, 0, sum( integral )) AS integral, + ev.allName,ev.projectType,abs.`name` AS zb,ev.isInterest + FROM + activity_results ar + LEFT JOIN activity_event ev ON ar.eventId = ev.id + LEFT JOIN activity_basic_settings abs ON abs.id=ev.competitionCategory $condition + """); + Cnd cndC = Cnd.NEW(); + if ((awardsMode == 1 && event.getString("awardsMode").equals("1")) || (awardsMode == 2 && event.getString("awardsMode").equals("2"))) { + cndC.and("ev.isInterest", "=", false); + cndC.and("ev.isMenWomen", "=", sex.equals("男") ? 1 : 2); + } else if (awardsMode == 3) { + cndC.and("ev.isInterest", "=", true); + } else if (awardsMode == 4) { + cndC.and(Cnd.exps("ev.isMenWomen", "=", sex.equals("男") ? 1 : 2).or("ev.isMenWomen", "is", null)); + } + cndC.and("ar.eventId", "=", event.getString("eventid")); + cndC.and("ar.unionid", "=", sys_union.getId()); + cndC.and("ar.activityId", "=", activityId); + sqlC.setCondition(cndC); + Double score = 0.0; + List list = baseService.listMap(sqlC); + boolean isInterest = list.get(0).getBoolean("isInterest"); + + if (list.size() > 0) { + score = list.get(0).getDouble("integral"); + } + + if (list.get(0).getString("allName") != null) { + if (!isInterest) { + nutMap.setv(list.get(0).getString("allName"), score); + } else { + nutMap.setv(list.get(0).getString("allName"), score / 2); + } + } + totalScore += isInterest ? (score / 2) : score; + if (list.get(0).getString("zb") != null) { + nutMap.setv("projectType", list.get(0).getString("projectType")); + nutMap.setv("zb", list.get(0).getString("zb")); + } + } + nutMap.setv("totalScore", totalScore); + result.add(nutMap); + } + + map.put("score", result); + map.put("eventList", eventList); + return Result.success(map); + + } + + + @At + @SaCheckPermission("activity.score.statistics") + @ApiOperation("单子单项前八/女子单项前八/团体项目前八") + public Result isTopEight(String activityId, String sex, Integer awardsMode) { + NutMap map = new NutMap(); + Cnd cndX = Cnd.NEW(); + //查询所有的项目 + Sql sqlX = Sqls.create(""" + SELECT + ev.id, + ev.eventId, + ba.`name` baname, + eve.projectType awardsMode, + eve.allName label + FROM + activity_school_event ev + LEFT JOIN activity_event eve ON ev.eventId = eve.id + LEFT JOIN activity_basic_settings ba ON eve.competitionCategory = ba.id $condition + """); + cndX.and("ev.activityId", "=", activityId); + if (awardsMode == 1) { + cndX.and("eve.isMenWomen", "!=", sex.equals("男") ? 2 : 1); + cndX.and("eve.projectType", "=", 1); + + } else { + cndX.and("eve.projectType", "=", 2); + } + cndX.and(new Static("1=1 order by case ba.`name` when '甲组' then 1 when '乙组' then 2 when '丙组' then 3 when '丁组' then 4 when '团体' then 5 end")); + sqlX.setCondition(cndX); + List eventList = baseService.list(sqlX); + + + Sql sqlC = Sqls.create(""); + Cnd cnd = Cnd.NEW(); + if (awardsMode == 1) { + sqlC = Sqls.create(""" + SELECT + CONCAT( apply.username, '(', apply.activityUnionName, ')' ) username, + ar.integral, + ar.ranking, + eve.allName + FROM + activity_results ar + LEFT JOIN activity_event eve ON ar.eventId = eve.id + LEFT JOIN activity_school_apply apply ON apply.userId = ar.userId + AND ar.activityId = apply.activityId $condition + """); + cnd.and("ar.isTeamPersonal", "=", awardsMode); + cnd.and("apply.sex", "=", sex); + cnd.and("ar.activityId", "=", activityId); + cnd.and("ar.ranking", "<=", 8); + cnd.groupBy("ar.id"); + } else { + sqlC = Sqls.create(""" + SELECT + CONCAT(sun.name) username, + eve.allName,ar.ranking + FROM + activity_results ar + LEFT JOIN activity_event eve ON ar.eventId = eve.id + LEFT JOIN sys_union sun ON sun.id = ar.unionId $condition + """); + cnd.and("ar.isTeamPersonal", "=", awardsMode); + cnd.and("ar.activityId", "=", activityId); + cnd.and("ar.ranking", "<=", 8); + + + } + + sqlC.setCondition(cnd); + List list = baseService.list(sqlC); + + map.put("userList", list); + map.put("eventList", eventList); + return Result.success(map); + } + + @At + @SaCheckLogin + public Result getActivitys(Integer year) { + List schoolList = baseService.dao().query(ActivitySchool.class, Cnd.where("YEAR(applyEndTime)", "=", year)); + return Result.success(schoolList); + } + + + @At + @SaCheckPermission("activity.score.statistics") + @ApiOperation("男子总分前八/女子总分前八") + public Result isScoreTopEight(String activityId, String sex) { + + NutMap map = new NutMap(); + List result = new ArrayList<>(); + Cnd cndX = Cnd.NEW(); + //查询所有的项目 + Sql sqlX = Sqls.create(""" + SELECT + ev.id, + ev.eventId, + ba.`name` baname, + eve.projectType awardsMode, + eve.allName label + FROM + activity_school_event ev + LEFT JOIN activity_event eve ON ev.eventId = eve.id + LEFT JOIN activity_basic_settings ba ON eve.competitionCategory = ba.id $condition + """); + cndX.and("ev.activityId", "=", activityId); + cndX.and(Cnd.exps("eve.isMenWomen", "=", sex.equals("男") ? 1 : 2).or("eve.isMenWomen", "is", null)); + cndX.and(new Static("1=1 order by case ba.`name` when '甲组' then 1 when '乙组' then 2 when '丙组' then 3 when '丁组' then 4 when '团体' then 5 end")); + sqlX.setCondition(cndX); + List eventList = baseService.list(sqlX); + + //查询所有的工会 + List query = sysUnionService.query(); + + for (Sys_union sys_union : query) { + NutMap nutMap = new NutMap(); + + //记录总积分 + double totalScore = 0; + nutMap.setv("unionname", sys_union.getName()); + for (Record event : eventList) { + Sql sqlC = Sqls.create(""" + SELECT + IF ( sum( integral ) IS NULL, 0, sum( integral )) AS integral, + ev.allName,ev.isInterest + FROM + activity_results ar + LEFT JOIN activity_event ev ON ar.eventId = ev.id $condition + """); + Cnd cndC = Cnd.NEW(); + cndC.and(Cnd.exps("ev.isMenWomen", "=", sex.equals("男") ? 1 : 2).or("ev.isMenWomen", "is", null)); + cndC.and("ar.unionid", "=", sys_union.getId()); + cndC.and("ar.eventId", "=", event.getString("eventid")); + cndC.and("ar.activityId", "=", activityId); + sqlC.setCondition(cndC); + Double score = 0.0; + List list = baseService.listMap(sqlC); + boolean isInterest = list.get(0).getBoolean("isInterest"); + if (list.size() > 0) { + score = list.get(0).getDouble("integral"); + } + totalScore += isInterest ? (score / 2) : score; + + } + nutMap.setv("totalScore", totalScore); + result.add(nutMap); + + } + + map.put("score", result); + return Result.success(map); + } + + + @At + @SaCheckPermission("activity.score.statistics") + @ApiOperation("年度团体总分") + public Result getAnnualResults(Integer year) { + + ArrayList resultMap = new ArrayList<>(); + + + Dao dao = sysUnionService.dao(); + List unionList = sysUnionService.query(); + List activitySchoolList = dao.query(ActivitySchool.class, Cnd.where("YEAR(applyStartTime)", "=", year)); + + List labelList = activitySchoolList.stream().map(v -> v.getName()).collect(Collectors.toList()); + labelList.add(0, "分工会"); + + unionList.forEach(u -> { + NutMap unionMap = Lang.obj2nutmap(u); + AtomicReference scoreSum = new AtomicReference<>((double) 0); + activitySchoolList.forEach(x -> { + Sql sql = Sqls.create(""" + SELECT sum(integral) as sumScore FROM `activity_results` ar + where ar.activityId = @activityId and ar.unionId = @unionId + """); + sql.setParam("activityId", x.getId()); + sql.setParam("unionId", u.getId()); + sql.setCallback(Sqls.callback.map()); + dao.execute(sql); + NutMap scoreMap = (NutMap) sql.getResult(); + double score = scoreMap.getDouble("sumScore"); + scoreSum.updateAndGet(v -> v + score); + unionMap.put(x.getName(), score); + }); + unionMap.put("总分", scoreSum.get()); + unionMap.put("分工会", unionMap.getString("name")); + resultMap.add(unionMap); + }); + labelList.add("总分"); + + return Result.success(Map.of("label", labelList, "score", resultMap)); + + } + + @At + @ApiOperation("年度男子团体总分/年度女子团体总分") + @SaCheckPermission("activity.score.statistics") + public Result getYear8(Integer isMenWomen, Integer year) { + ArrayList resultMap = new ArrayList<>(); + + // int isMenWomen = sex.equals("男") ? 1 : 2; + + Dao dao = sysUnionService.dao(); + List unionList = sysUnionService.query(); + + List activityList = dao.query(ActivitySchool.class, Cnd.where("YEAR(applyStartTime)", "=", year)); + List activityIdList = activityList.stream().map(ActivitySchool::getId).collect(Collectors.toList()); + List activityNameList = activityList.stream().map(ActivitySchool::getName).collect(Collectors.toList()); + + List eventIdList = dao.query(ActivitySchoolEvent.class, Cnd.where("activityId", "in", activityIdList)).stream().map(v -> v.getEventId()).collect(Collectors.toList()); + + activityNameList.add(0, "分工会"); + + Sql sql = Sqls.create(""" + SELECT + ae.isMenWomen, + ae.isInterest, + ar.integral, + ar.unionId, + ar.activityId + FROM + activity_event ae + LEFT JOIN activity_results ar ON ar.eventId = ae.id + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and("ae.id", "in", eventIdList); + cnd.and("ar.activityId", "in", activityIdList); + + sql.setCondition(cnd); + sql.setCallback(Sqls.callback.maps()); + dao.execute(sql); + List list = sql.getList(NutMap.class); + + unionList.forEach(u -> { + NutMap unionMap = Lang.obj2nutmap(u); + AtomicReference scoreSum = new AtomicReference<>((double) 0); + + activityList.forEach(a -> { + double sexScore = list.stream().filter(x -> x.getString("unionId").equals(u.getId()) && x.getInt("isMenWomen") == isMenWomen && x.getString("activityId").equals(a.getId())).mapToDouble(h -> h.getDouble("integral")).sum(); + double qwScore = list.stream().filter(x -> x.getString("unionId").equals(u.getId()) && x.getInt("isInterest") == 1 && x.getString("activityId").equals(a.getId())).mapToDouble(h -> h.getDouble("integral")).sum(); + scoreSum.updateAndGet(v -> v + sexScore + qwScore * 0.5); + unionMap.put(a.getName(), sexScore + (qwScore * 0.5)); + }); + unionMap.put("总分", scoreSum.get()); + unionMap.put("分工会", unionMap.getString("name")); + resultMap.add(unionMap); + + }); + activityNameList.add("总分"); + return Result.success(Map.of("label", activityNameList, "score", resultMap)); + + } + public static Double getDouble(NutMap o) { + return o.getDouble("score"); + } + + + + @At + @Ok("void") + @SaCheckPermission("activity.score.statistics") + public void doExcelCj(String activityId, String unionId, HttpServletResponse response) throws IOException { + + Sql sql = Sqls.create(""" + SELECT + un.unioncode, + un.name unionname, + us.loginname, + us.username, + us.sex, + eve.projectCode, + abs.`name` competitionCategoryName, + eve.allName, + ar.integral, + CEILING( + IF + ( us.loginname IS NOT NULL, ar.integral, ar.integral / 2 )) jf, + ar.ranking + FROM + activity_results ar + LEFT JOIN activity_event eve ON ar.eventId = eve.id + LEFT JOIN activity_basic_settings abs ON abs.id = eve.competitionCategory + LEFT JOIN activity_school_apply apply ON apply.userId = ar.userId + AND ar.activityId = apply.activityId + LEFT JOIN sys_union un ON un.id = ar.unionId + LEFT JOIN sys_user us ON us.id = ar.userId + $condition + ORDER BY + un.unioncode ASC, + us.sex DESC, + FIELD( abs.`name`, '甲组', '乙组', '丙组', '丁组', '团体' ) ASC + """); + Cnd cnd = Cnd.NEW(); + cnd.and("ar.activityId", "=", activityId); + cnd.andEX("ar.unionId", "=", unionId); + cnd.groupBy("ar.id"); + sql.setCondition(cnd); + + List list = baseService.listMap(sql); + List entityList = new ArrayList<>(); + entityList.add(new ExcelExportEntity("分工会代码", "unioncode", 40)); + entityList.add(new ExcelExportEntity("分工会名称", "unionname", 20)); + entityList.add(new ExcelExportEntity("工号", "loginname", 20)); + entityList.add(new ExcelExportEntity("姓名", "username", 20)); + entityList.add(new ExcelExportEntity("性别", "sex", 20)); + entityList.add(new ExcelExportEntity("项目代码", "projectCode", 20)); + entityList.add(new ExcelExportEntity("组别", "competitionCategoryName", 20)); + entityList.add(new ExcelExportEntity("项目名称", "allName", 40)); + entityList.add(new ExcelExportEntity("成绩", "integral", 20)); + entityList.add(new ExcelExportEntity("名次", "ranking", 20)); + entityList.add(new ExcelExportEntity("积分", "jf", 20)); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, list); + CommonDownloadUtil.download("成绩名单.xlsx", workbook, response); + } + + +} diff --git a/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsStatisticsTypeExportController.java b/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsStatisticsTypeExportController.java new file mode 100644 index 0000000..9651f92 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsStatisticsTypeExportController.java @@ -0,0 +1,494 @@ +package com.budwk.app.zhgh.activity.sports.controller; + + +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; +import cn.dev33.satoken.annotation.SaCheckLogin; +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.budwk.app.base.service.BaseService; +import com.budwk.app.base.utils.CommonDownloadUtil; +import com.budwk.app.sys.models.Sys_union; +import com.budwk.app.sys.services.SysUnionService; +import com.budwk.app.zhgh.activity.sports.models.ActivitySchool; +import com.budwk.app.zhgh.activity.sports.models.ActivitySchoolEvent; +import io.swagger.annotations.ApiOperation; +import org.apache.poi.ss.usermodel.Workbook; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.entity.Record; +import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.Static; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +import javax.servlet.http.HttpServletResponse; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; +import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; +import java.util.stream.Collectors; + +@IocBean +@Ok("json:full") +@At("/platform/activity/statistics/export") +public class ActivitySportsStatisticsTypeExportController { + + @Inject + private SysUnionService sysUnionService; + + @Inject + private BaseService baseService; + + @Ok("void") + @At + @ApiOperation("年度男子团体总分/年度女子团体总分") + @SaCheckPermission("activity.score.statistics") + public void getYear8(Integer isMenWomen, Integer year, HttpServletResponse response) { + ArrayList resultMap = new ArrayList<>(); + List unionList = sysUnionService.query(); + + List activityList = baseService.dao().query(ActivitySchool.class, Cnd.where("YEAR(applyStartTime)", "=", year)); + List activityIdList = activityList.stream().map(ActivitySchool::getId).collect(Collectors.toList()); + List activityNameList = activityList.stream().map(ActivitySchool::getName).collect(Collectors.toList()); + + List eventIdList = baseService.dao().query(ActivitySchoolEvent.class, Cnd.where("activityId", "in", activityIdList)).stream().map(v -> v.getEventId()).collect(Collectors.toList()); + + activityNameList.add(0, "分工会"); + + Sql sql = Sqls.create(""" + SELECT + ae.isMenWomen, + ae.isInterest, + ar.integral, + ar.unionId, + ar.activityId + FROM + activity_event ae + LEFT JOIN activity_results ar ON ar.eventId = ae.id + $condition + """); + Cnd cnd = Cnd.NEW(); + cnd.and("ae.id", "in", eventIdList); + cnd.and("ar.activityId", "in", activityIdList); + + sql.setCondition(cnd); + List list = baseService.listMap(sql); + unionList.forEach(u -> { + NutMap unionMap = Lang.obj2nutmap(u); + AtomicReference scoreSum = new AtomicReference<>((double) 0); + + activityList.forEach(a -> { + double sexScore = list.stream().filter(x -> x.getString("unionId").equals(u.getId()) && x.getInt("isMenWomen") == isMenWomen && x.getString("activityId").equals(a.getId())).mapToDouble(h -> h.getDouble("integral")).sum(); + double qwScore = list.stream().filter(x -> x.getString("unionId").equals(u.getId()) && x.getInt("isInterest") == 1 && x.getString("activityId").equals(a.getId())).mapToDouble(h -> h.getDouble("integral")).sum(); + scoreSum.updateAndGet(v -> v + (sexScore + (qwScore * 0.5))); + unionMap.put(a.getName(), sexScore + (qwScore * 0.5)); + }); + unionMap.put("总分", scoreSum.get()); + unionMap.put("分工会", unionMap.getString("name")); + resultMap.add(unionMap); + + }); + activityNameList.add("总分"); + + resultMap.sort(Comparator.comparing((Map m) -> (new BigDecimal(m.get("总分").toString()))).reversed()); + for (int i = 0; i < resultMap.size(); i++) { + resultMap.get(i).put("名次", i + 1); + } + List entityList = new ArrayList<>(); + entityList.add(new ExcelExportEntity("名次", "名次", 20)); + activityNameList.forEach(v -> { + entityList.add(new ExcelExportEntity(v, v, 40)); + }); + try { + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, resultMap); + CommonDownloadUtil.download("年度" + (isMenWomen == 1 ? "男子" : "女子") + "团体总分.xlsx", workbook, response); + } catch (Exception e) { + e.printStackTrace(); + } + + + } + + + @Ok("void") + @At + @ApiOperation("年度团体总分") + @SaCheckPermission("activity.score.statistics") + public void getAnnualResults(Integer year, HttpServletResponse response) { + ArrayList resultMap = new ArrayList<>(); + + + Dao dao = sysUnionService.dao(); + List unionList = sysUnionService.query(); + List activitySchoolList = dao.query(ActivitySchool.class, Cnd.where("YEAR(applyStartTime)", "=", year)); + + List labelList = activitySchoolList.stream().map(v -> v.getName()).collect(Collectors.toList()); + labelList.add(0, "分工会"); + + unionList.forEach(u -> { + NutMap unionMap = Lang.obj2nutmap(u); + AtomicReference scoreSum = new AtomicReference<>((double) 0); + activitySchoolList.forEach(x -> { + Sql sql = Sqls.create(""" + SELECT sum(integral) as sumScore FROM `activity_results` ar + where ar.activityId = @activityId and ar.unionId = @unionId + """); + sql.setParam("activityId", x.getId()); + sql.setParam("unionId", u.getId()); + sql.setCallback(Sqls.callback.map()); + dao.execute(sql); + NutMap scoreMap = (NutMap) sql.getResult(); + double score = scoreMap.getDouble("sumScore"); + scoreSum.updateAndGet(v -> v + score); + unionMap.put(x.getName(), score); + }); + unionMap.put("总分", scoreSum.get()); + unionMap.put("分工会", unionMap.getString("name")); + resultMap.add(unionMap); + }); + labelList.add("总分"); + + resultMap.sort(Comparator.comparing((Map m) -> (new BigDecimal(m.get("总分").toString()))).reversed()); + for (int i = 0; i < resultMap.size(); i++) { + resultMap.get(i).put("名次", i + 1); + } + + List entityList = new ArrayList<>(); + entityList.add(new ExcelExportEntity("名次", "名次", 20)); + labelList.forEach(v -> { + entityList.add(new ExcelExportEntity(v, v, 40)); + + }); + try { + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, resultMap); + CommonDownloadUtil.download("年度团体总分.xlsx", workbook, response); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + + @At + @Ok("void") + @SaCheckPermission("activity.score.statistics") + @ApiOperation("男子项目分工会积分/女子项目分工会积分") + public void isMaleFemale(String activityId, String sex, Integer awardsMode, HttpServletResponse response) { + NutMap map = new NutMap(); + List result = new ArrayList<>(); + + //查询所有的工会 + List query = sysUnionService.query(); + Cnd cndX = Cnd.NEW(); + //查询所有的项目 + Sql sqlX = Sqls.create(""" + SELECT + ev.id, + ev.eventId, + ba.`name` baname, + eve.projectType awardsMode, + eve.allName label, + eve.isMenWomen + FROM + activity_school_event ev + LEFT JOIN activity_event eve ON ev.eventId = eve.id + LEFT JOIN activity_basic_settings ba ON eve.competitionCategory = ba.id $condition + """); + cndX.and("ev.activityId", "=", activityId); + if (awardsMode < 3) { + cndX.and("eve.projectType", "=", awardsMode); + cndX.and("eve.isInterest", "=", false); + cndX.and("eve.isMenWomen", "=", sex.equals("男") ? 1 : 2); + } + if (awardsMode == 3) { + cndX.and("eve.isInterest", "=", true); + } + if (awardsMode == 4) { + cndX.and(Cnd.exps("eve.isMenWomen", "=", sex.equals("男") ? 1 : 2).or("eve.isMenWomen", "is", null)); + } + cndX.and(new Static("1=1 order by case ba.`name` when '甲组' then 1 when '乙组' then 2 when '丙组' then 3 when '丁组' then 4 when '团体' then 5 end")); + sqlX.setCondition(cndX); + List eventList = baseService.list(sqlX); + + //查询每个工会下每个项目的成绩 + for (Sys_union sys_union : query) { + NutMap nutMap = new NutMap(); + //记录总积分 + double totalScore = 0; + nutMap.setv("unionname", sys_union.getName()); + for (Record event : eventList) { + Sql sqlC = Sqls.create(""" + SELECT + IF ( sum( integral ) IS NULL, 0, sum( integral )) AS integral, + ev.allName,ev.projectType,abs.`name` AS zb,ev.isInterest + FROM + activity_results ar + LEFT JOIN activity_event ev ON ar.eventId = ev.id + LEFT JOIN activity_basic_settings abs ON abs.id=ev.competitionCategory $condition + """); + Cnd cndC = Cnd.NEW(); + if ((awardsMode == 1 && event.getString("awardsMode").equals("1")) || (awardsMode == 2 && event.getString("awardsMode").equals("2"))) { + cndC.and("ev.isInterest", "=", false); + cndC.and("ev.isMenWomen", "=", sex.equals("男") ? 1 : 2); + } else if (awardsMode == 3) { + cndC.and("ev.isInterest", "=", true); + } else if (awardsMode == 4) { + cndC.and(Cnd.exps("ev.isMenWomen", "=", sex.equals("男") ? 1 : 2).or("ev.isMenWomen", "is", null)); + } + cndC.and("ar.eventId", "=", event.getString("eventid")); + cndC.and("ar.unionid", "=", sys_union.getId()); + cndC.and("ar.activityId", "=", activityId); + sqlC.setCondition(cndC); + Double score = 0.0; + List list = baseService.listMap(sqlC); + boolean isInterest = list.get(0).getBoolean("isInterest"); + + if (list.size() > 0) { + score = list.get(0).getDouble("integral"); + } + + if (list.get(0).getString("allName") != null) { + if (!isInterest) { + nutMap.setv(list.get(0).getString("allName"), score); + } else { + nutMap.setv(list.get(0).getString("allName"), score / 2); + } + } + totalScore += isInterest ? (score / 2) : score; + if (list.get(0).getString("zb") != null) { + nutMap.setv("projectType", list.get(0).getString("projectType")); + nutMap.setv("zb", list.get(0).getString("zb")); + } + } + nutMap.setv("totalScore", totalScore); + result.add(nutMap); + } + + result.sort(Comparator.comparing((Map m) -> (new BigDecimal(m.get("totalScore").toString()))).reversed()); + for (int i = 0; i < result.size(); i++) { + result.get(i).put("名次", i + 1); + } + + List entityList = new ArrayList<>(); + entityList.add(new ExcelExportEntity("名次", "名次", 20)); + entityList.add(new ExcelExportEntity("分工会", "unionname", 40)); + eventList.forEach(v -> { + entityList.add(new ExcelExportEntity(v.getString("label"), v.getString("label"), 40)); + }); + entityList.add(new ExcelExportEntity("总分", "totalScore", 40)); + try { + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, result); + CommonDownloadUtil.download("分工会" + sex + "项目积分.xlsx", workbook, response); + } catch (Exception e) { + e.printStackTrace(); + } + } + + + @At + @Ok("void") + @SaCheckPermission("activity.score.statistics") + @ApiOperation("单子单项前八/女子单项前八/团体项目前八") + public void isTopEight(String activityId, String sex, Integer awardsMode, HttpServletResponse response) { + Cnd cndX = Cnd.NEW(); + //查询所有的项目 + Sql sqlX = Sqls.create(""" + SELECT + ev.id, + ev.eventId, + ba.`name` baname, + eve.projectType awardsMode, + eve.allName label + FROM + activity_school_event ev + LEFT JOIN activity_event eve ON ev.eventId = eve.id + LEFT JOIN activity_basic_settings ba ON eve.competitionCategory = ba.id $condition + """); + cndX.and("ev.activityId", "=", activityId); + if (awardsMode == 1) { + cndX.and("eve.isMenWomen", "!=", sex.equals("男") ? 2 : 1); + cndX.and("eve.projectType", "=", 1); + + } else { + cndX.and("eve.projectType", "=", 2); + } + cndX.and(new Static("1=1 order by case ba.`name` when '甲组' then 1 when '乙组' then 2 when '丙组' then 3 when '丁组' then 4 when '团体' then 5 end")); + sqlX.setCondition(cndX); + List eventList = baseService.list(sqlX); + + + List nutMaps = new ArrayList<>(); + + for (int i = 0; i < 8; i++) { + NutMap nutMap = new NutMap(); + Sql sqlC; + Cnd cnd = Cnd.NEW(); + if (awardsMode == 1) { + sqlC = Sqls.create(""" + SELECT + CONCAT( apply.username, '(', apply.activityUnionName, ')' ) username, + ar.integral, + ar.ranking, + eve.allName + FROM + activity_results ar + LEFT JOIN activity_event eve ON ar.eventId = eve.id + LEFT JOIN activity_school_apply apply ON apply.userId = ar.userId + AND ar.activityId = apply.activityId $condition + """); + cnd.and("ar.isTeamPersonal", "=", awardsMode); + cnd.and("apply.sex", "=", sex); + cnd.and("ar.activityId", "=", activityId); + cnd.and("ar.ranking", "=", i + 1); + cnd.groupBy("ar.id"); + } else { + sqlC = Sqls.create(""" + SELECT + CONCAT(sun.name) username, + eve.allName,ar.ranking + FROM + activity_results ar + LEFT JOIN activity_event eve ON ar.eventId = eve.id + LEFT JOIN sys_union sun ON sun.id = ar.unionId $condition + """); + cnd.and("ar.isTeamPersonal", "=", awardsMode); + cnd.and("ar.activityId", "=", activityId); + cnd.and("ar.ranking", "=", i + 1); + + + } + + sqlC.setCondition(cnd); + List list = baseService.list(sqlC); + list.forEach(l -> { + nutMap.setv(l.getString("allName"), l.getString("username")); + }); + + nutMaps.add(nutMap); + } + + for (int i = 0; i < nutMaps.size(); i++) { + nutMaps.get(i).put("名次", i + 1); + } + + + List entityList = new ArrayList<>(); + entityList.add(new ExcelExportEntity("名次", "名次", 20)); + eventList.forEach(v -> { + entityList.add(new ExcelExportEntity(v.getString("label"), v.getString("label"), 40)); + }); + String sex2 = awardsMode == 2 ? "团体" : sex.equals("男") ? "男子" : "女子"; + try { + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, nutMaps); + CommonDownloadUtil.download(sex2 + "项目前八.xlsx", workbook, response); + } catch (Exception e) { + e.printStackTrace(); + } + + + } + + + @At + @Ok("void") + @SaCheckPermission("activity.score.statistics") + @ApiOperation("男子总分前八/女子总分前八") + public void isScoreTopEight(String activityId, String sex, HttpServletResponse response) { + + List result = new ArrayList<>(); + Cnd cndX = Cnd.NEW(); + //查询所有的项目 + Sql sqlX = Sqls.create(""" + SELECT + ev.id, + ev.eventId, + ba.`name` baname, + eve.projectType awardsMode, + eve.allName label + FROM + activity_school_event ev + LEFT JOIN activity_event eve ON ev.eventId = eve.id + LEFT JOIN activity_basic_settings ba ON eve.competitionCategory = ba.id $condition + """); + cndX.and("ev.activityId", "=", activityId); + cndX.and(Cnd.exps("eve.isMenWomen", "=", sex.equals("男") ? 1 : 2).or("eve.isMenWomen", "is", null)); + cndX.and(new Static("1=1 order by case ba.`name` when '甲组' then 1 when '乙组' then 2 when '丙组' then 3 when '丁组' then 4 when '团体' then 5 end")); + sqlX.setCondition(cndX); + List eventList = baseService.list(sqlX); + + //查询所有的工会 + List query = sysUnionService.query(); + + for (Sys_union sys_union : query) { + NutMap nutMap = new NutMap(); + + //记录总积分 + double totalScore = 0; + nutMap.setv("unionname", sys_union.getName()); + for (Record event : eventList) { + Sql sqlC = Sqls.create(""" + SELECT + IF ( sum( integral ) IS NULL, 0, sum( integral )) AS integral, + ev.allName,ev.isInterest + FROM + activity_results ar + LEFT JOIN activity_event ev ON ar.eventId = ev.id $condition + """); + Cnd cndC = Cnd.NEW(); + cndC.and(Cnd.exps("ev.isMenWomen", "=", sex.equals("男") ? 1 : 2).or("ev.isMenWomen", "is", null)); + cndC.and("ar.unionid", "=", sys_union.getId()); + cndC.and("ar.eventId", "=", event.getString("eventid")); + cndC.and("ar.activityId", "=", activityId); + sqlC.setCondition(cndC); + Double score = 0.0; + List list = baseService.listMap(sqlC); + boolean isInterest = list.get(0).getBoolean("isInterest"); + if (list.size() > 0) { + score = list.get(0).getDouble("integral"); + } + totalScore += isInterest ? (score / 2) : score; + + } + nutMap.setv("totalScore", totalScore); + result.add(nutMap); + } + + List entityList = new ArrayList<>(); + entityList.add(new ExcelExportEntity("名次", "名次", 20)); + entityList.add(new ExcelExportEntity("分工会", "unionname", 40)); + entityList.add(new ExcelExportEntity("总分", "totalScore", 40)); + + result.sort(Comparator.comparing((Map m) -> (new BigDecimal(m.get("totalScore").toString()))).reversed()); + for (int i = 0; i < result.size(); i++) { + result.get(i).put("名次", i + 1); + } + + try { + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, entityList, result); + CommonDownloadUtil.download("分工会" + sex + "子总分.xlsx", workbook, response); + } catch (Exception e) { + e.printStackTrace(); + } + } + + +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/statistics/MemberApplyRecordStatisticsController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/statistics/MemberApplyRecordStatisticsController.java new file mode 100644 index 0000000..2e879d4 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/statistics/MemberApplyRecordStatisticsController.java @@ -0,0 +1,205 @@ +package com.budwk.app.zhgh.staffmanage.member.controller.statistics; + +import cn.afterturn.easypoi.excel.ExcelExportUtil; +import cn.afterturn.easypoi.excel.entity.ExportParams; +import cn.afterturn.easypoi.excel.entity.enmus.ExcelType; +import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity; +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.constant.RoleConstant; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.utils.CommonDownloadUtil; +import com.budwk.app.base.utils.PageUtil; +import com.budwk.app.web.commons.auth.utils.AuthUtil; +import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.staffmanage.member.param.pageform.MemberApplyRecordStatisticsPageForm; +import com.budwk.app.zhgh.staffmanage.member.service.MemberApplyRecordService; +import com.budwk.app.zhgh.staffmanage.member.vo.MemberApplyRecordStatisticsVO; +import org.apache.poi.ss.usermodel.Workbook; +import org.nutz.dao.Cnd; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.Lang; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; + +import javax.servlet.http.HttpServletResponse; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 会员申请记录查询统计。 + */ +@At("/platform/member/apply/statistics") +@Ok("json:full") +@IocBean +public class MemberApplyRecordStatisticsController { + + private static final Map ORDER_COLUMN_MAP; + + static { + Map orderColumnMap = new HashMap<>(); + orderColumnMap.put("loginName", "info.loginName"); + orderColumnMap.put("userName", "info.userName"); + orderColumnMap.put("unitName", "info.unitName"); + orderColumnMap.put("unionName", "info.unionName"); + orderColumnMap.put("userState", "info.userState"); + orderColumnMap.put("preparedBy", "info.preparedBy"); + orderColumnMap.put("personType", "info.personType"); + orderColumnMap.put("origin", "info.origin"); + orderColumnMap.put("applyDateTime", "info.applyDateTime"); + orderColumnMap.put("instanceState", "ins.state"); + ORDER_COLUMN_MAP = Collections.unmodifiableMap(orderColumnMap); + } + + @Inject + private MemberApplyRecordService memberApplyRecordService; + + @At("") + @Ok("beetl:/platform/zhgh/staffmanage/member/statistics/applyRecord/index.html") + @SaCheckPermission("member.apply.statistics") + public void index() { + } + + /** + * 分页查询会员申请记录统计。 + * + * @param pageForm 查询参数:searchKeyword 传姓名/工号关键字,unionId/unitId 传工会和单位ID数组, + * userStates/personTypes/preparedBys 传人员字典值数组,instanceStates 传流程状态 code 数组, + * startApplyDate/endApplyDate 传申请日期范围;分页和排序使用 PageForm 公共字段 + * @return Result 包装的 Pagination,list 为申请记录,totalCount 为总条数 + */ + @At + @SaCheckPermission("member.apply.statistics") + public Result pageData(MemberApplyRecordStatisticsPageForm pageForm) { + Sql sql = getApplyRecordSql(pageForm); + Pagination pagination = memberApplyRecordService.listPageVO( + pageForm, sql, MemberApplyRecordStatisticsVO.class + ); + return Result.success(pagination); + } + + /** + * 导出会员申请记录统计。 + * + * @param pageForm 查询和导出参数:columns 为前端选择的导出列,prop 对应 MemberApplyRecordStatisticsVO 属性, + * label 为 Excel 表头;其他筛选参数与 pageData 保持一致 + * @param response 文件下载响应,返回 xlsx 格式 Excel 文件 + */ + @At + @Ok("void") + @SaCheckPermission("member.apply.statistics") + public void doExport(MemberApplyRecordStatisticsPageForm pageForm, HttpServletResponse response) { + Sql sql = getApplyRecordSql(pageForm); + List list = memberApplyRecordService.listVO(sql, MemberApplyRecordStatisticsVO.class); + try { + List exportEntities = buildExportColumns(pageForm); + ExportParams exportParams = new ExportParams(); + exportParams.setType(ExcelType.XSSF); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list); + CommonDownloadUtil.download("会员申请记录统计.xlsx", workbook, response); + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 构建申请记录统计 SQL,当前节点先在子查询中合并,避免一个申请存在多个待办时重复展示。 + */ + private Sql getApplyRecordSql(MemberApplyRecordStatisticsPageForm pageForm) { + Sql sql = Sqls.create("SELECT " + + "info.id, " + + "info.userName, " + + "info.loginName, " + + "info.unitName, " + + "info.unionName, " + + "info.userState, " + + "info.preparedBy, " + + "info.personType, " + + "info.origin, " + + "info.applyDateTime, " + + "CASE WHEN info.sign IS NOT NULL AND info.sign != '' THEN '已签字' ELSE '未签字' END signState, " + + "ins.id AS instanceId, " + + "ins.businessNo, " + + "ins.state AS instanceState, " + + "CASE ins.state " + + "WHEN 10 THEN '进行中' " + + "WHEN 20 THEN '已完成' " + + "WHEN 30 THEN '已撤回' " + + "WHEN 40 THEN '强行终止' " + + "WHEN 45 THEN '已拒绝' " + + "WHEN 50 THEN '挂起' " + + "WHEN 99 THEN '已废弃' " + + "ELSE '未知' END AS instanceStateName, " + + "ins.processDefineId AS instanceProcessDefineId, " + + "IFNULL(nt.curTaskName, '结束') AS curTaskName " + + "FROM member_apply_record info " + + "LEFT JOIN wf_process_instance ins ON ins.businessNo = info.id " + + "LEFT JOIN (SELECT processInstanceId, GROUP_CONCAT(DISTINCT displayName) AS curTaskName " + + "FROM wf_process_task WHERE taskState = 10 GROUP BY processInstanceId) nt ON nt.processInstanceId = ins.id " + + "$condition"); + Cnd cnd = Cnd.NEW(); + MemberApplyRecordStatisticsPageForm.buildSearch(cnd, pageForm); + buildDataScope(cnd); + buildOrder(cnd, pageForm); + sql.setCondition(cnd); + return sql; + } + + /** + * 按当前登录人的角色补充数据范围,避免普通用户通过统计入口看到无权限的申请记录。 + */ + private void buildDataScope(Cnd cnd) { + if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_MEMBER_ADMIN.name())) { + if (AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) { + cnd.and("info.unionId", "=", SecurityUtil.getUnionId()); + } else { + cnd.and("info.userId", "=", SecurityUtil.getUserId()); + } + } + } + + /** + * 仅允许前端按白名单字段排序,避免页面排序字段被拼接成非预期 SQL。 + */ + private void buildOrder(Cnd cnd, MemberApplyRecordStatisticsPageForm pageForm) { + if (StrUtil.isAllNotBlank(pageForm.getPageOrderName(), pageForm.getPageOrderBy()) + && ORDER_COLUMN_MAP.containsKey(pageForm.getPageOrderName())) { + cnd.orderBy(ORDER_COLUMN_MAP.get(pageForm.getPageOrderName()), PageUtil.getOrder(pageForm.getPageOrderBy())); + } else { + cnd.desc("info.applyDateTime"); + } + } + + /** + * 生成导出列;前端未传列设置时,使用申请记录统计的默认核心字段。 + */ + private List buildExportColumns(MemberApplyRecordStatisticsPageForm pageForm) { + List exportEntities = new ArrayList<>(); + if (Lang.isNotEmpty(pageForm.getColumns())) { + pageForm.getColumns().forEach(column -> { + exportEntities.add(new ExcelExportEntity(column.get("label"), column.get("prop"), 20)); + }); + return exportEntities; + } + exportEntities.add(new ExcelExportEntity("工号", "loginName", 20)); + exportEntities.add(new ExcelExportEntity("姓名", "userName", 20)); + exportEntities.add(new ExcelExportEntity("所属工会", "unionName", 20)); + exportEntities.add(new ExcelExportEntity("所属单位", "unitName", 20)); + exportEntities.add(new ExcelExportEntity("在职状态", "userState", 20)); + exportEntities.add(new ExcelExportEntity("教职工类别", "personType", 20)); + exportEntities.add(new ExcelExportEntity("编制类别", "preparedBy", 20)); + exportEntities.add(new ExcelExportEntity("来源", "origin", 20)); + exportEntities.add(new ExcelExportEntity("申请时间", "applyDateTime", 25)); + exportEntities.add(new ExcelExportEntity("签字状态", "signState", 20)); + exportEntities.add(new ExcelExportEntity("当前节点", "curTaskName", 20)); + exportEntities.add(new ExcelExportEntity("流程状态", "instanceStateName", 20)); + return exportEntities; + } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberApplyRecordStatisticsPageForm.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberApplyRecordStatisticsPageForm.java new file mode 100644 index 0000000..8a90717 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/param/pageform/MemberApplyRecordStatisticsPageForm.java @@ -0,0 +1,74 @@ +package com.budwk.app.zhgh.staffmanage.member.param.pageform; + +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.param.PageForm; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.Cnd; +import org.nutz.dao.util.cri.SqlExpressionGroup; + +import java.util.List; +import java.util.Map; + +/** + * 会员申请记录统计查询参数。 + */ +@Data +@EqualsAndHashCode(callSuper = true) +public class MemberApplyRecordStatisticsPageForm extends PageForm { + + @ApiModelProperty("所属工会ID,多个值由前端数组提交") + private List unionId; + + @ApiModelProperty("所属单位ID,多个值由前端数组提交") + private List unitId; + + @ApiModelProperty("在职状态字典值,多个值由前端数组提交") + private List userStates; + + @ApiModelProperty("教职工类别字典值,多个值由前端数组提交") + private List personTypes; + + @ApiModelProperty("编制类别字典值,多个值由前端数组提交") + private List preparedBys; + + @ApiModelProperty("流程实例状态,使用 ProcessInstanceStateEnum 的 code") + private List instanceStates; + + @ApiModelProperty("申请开始时间,格式 yyyy-MM-dd") + private String startApplyDate; + + @ApiModelProperty("申请结束时间,格式 yyyy-MM-dd") + private String endApplyDate; + + @ApiModelProperty("导出列,字段 prop 对应 VO 属性,label 为 Excel 表头") + private List> columns; + + /** + * 组装申请记录统计的公共查询条件。 + * + * @param cnd SQL 条件对象,由调用方继续追加权限、排序等条件 + * @param pageForm 查询参数,包含姓名/工号关键字、工会、单位、人员类别、申请时间和流程状态 + */ + public static void buildSearch(Cnd cnd, MemberApplyRecordStatisticsPageForm pageForm) { + if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) { + SqlExpressionGroup seg = new SqlExpressionGroup(); + seg.or("info.loginName", "like", "%" + pageForm.getSearchKeyword() + "%"); + seg.or("info.username", "like", "%" + pageForm.getSearchKeyword() + "%"); + cnd.and(seg); + } + cnd.andEX("info.unionId", "in", pageForm.getUnionId()); + cnd.andEX("info.unitId", "in", pageForm.getUnitId()); + cnd.andEX("info.userState", "in", pageForm.getUserStates()); + cnd.andEX("info.personType", "in", pageForm.getPersonTypes()); + cnd.andEX("info.preparedBy", "in", pageForm.getPreparedBys()); + cnd.andEX("ins.state", "in", pageForm.getInstanceStates()); + if (StrUtil.isNotBlank(pageForm.getStartApplyDate())) { + cnd.and("info.applyDateTime", ">=", pageForm.getStartApplyDate() + " 00:00:00"); + } + if (StrUtil.isNotBlank(pageForm.getEndApplyDate())) { + cnd.and("info.applyDateTime", "<=", pageForm.getEndApplyDate() + " 23:59:59"); + } + } +} diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/vo/MemberApplyRecordStatisticsVO.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/vo/MemberApplyRecordStatisticsVO.java new file mode 100644 index 0000000..ab4efb3 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/vo/MemberApplyRecordStatisticsVO.java @@ -0,0 +1,46 @@ +package com.budwk.app.zhgh.staffmanage.member.vo; + +import lombok.Data; + +import java.util.Date; + +/** + * 会员申请记录统计返回数据。 + */ +@Data +public class MemberApplyRecordStatisticsVO { + + private String id; + + private String userName; + + private String loginName; + + private String unitName; + + private String unionName; + + private String userState; + + private String preparedBy; + + private String personType; + + private String origin; + + private Date applyDateTime; + + private String signState; + + private String instanceId; + + private String businessNo; + + private Integer instanceState; + + private String instanceStateName; + + private String instanceProcessDefineId; + + private String curTaskName; +} diff --git a/src/main/resources/application-dev.yaml b/src/main/resources/application-dev.yaml new file mode 100644 index 0000000..7537864 --- /dev/null +++ b/src/main/resources/application-dev.yaml @@ -0,0 +1,177 @@ +nutz: + application: + name: zhgh_jshvc + mvc: + ignore: ^(.+[.])(jsp|png|gif|jpg|js|css|jspx|jpeg|html|mp3|mp4|ico|svg|vue)$ + exclusions: /favicon/*,/assets/*,/druid/*,/upload/*,/components/* +server: + port: 80 + host: 0.0.0.0 + +jetty: + contextPath: / + threadpool: + idleTimeout: 60000 + minThreads: 10 + maxThreads: 500 + page: + 403: /error/403.html + 404: /error/404.html + 500: /error/500.html + #结合ftp使用,或用nginx代理ftp路径 + #staticPath: /Users/wizzer/temp/files + #开发模式静态资源 + staticPathLocal: E:/projects/zhgh_jshvc/src/main/resources/static + +security: + tokenName: saToken + timeout: 36000 + # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) + # 允许同一账号并发登录,则系统参数 SessionOnlyOne 有效,亦可踢人下线并多了弹框提示功能 + isConcurrent: true + # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) + isShare: false + +wxwork: + enable: true + corpId: wwaca81b3016b9a58c + corpSecret: Auc7919Su1Uds5ZErfZybBrt-8FkP5NA-dldZyQuOrM + agentId: 1000131 + redirectUri : /platform/wxwork/oauth2/callback + +wx: + enable: false + appID: wx4f65ff5f1b72e99d + appSecret: a65cec4fb69980bd88258fc8433a3eef + redirectUri: /platform/wx/oauth2/callback + +cas: + enable: false + server-url-prefix: https://i.njupt.edu.cn/cas + server-login-url: https://i.njupt.edu.cn/cas/login + client-host-url: https://zhgh.njupt.edu.cn + client-call-back-url: /platform/sso/login + validation-type: cas + +todo-platform: + token-url: /accessToken + base-url: https://gateway.jshvc.edu.cn + save-or-update-url: /saveOrUpdate + modify-url: /modifyInfo + delete-task-url: /delete + delete-instance-url: /realDelete + app-id: XXXXXXXXXXXXXXXXXXXXXX + app-secret: XXXXXXXXXXXXXXXXXXXXXX + request-timeout: 5000 + +redis: + host: 127.0.0.1 + port: 6379 + timeout: 2000 + max_redir: 10 + database: 1 + maxTotal: 500 + pool: + maxTotal: 500 + maxIdle: 50 + minIdle: 10 + #password: test123 + mode: normal + #cluster + #nodes=192.168.6.31:6377,192.168.6.31:6378,192.168.6.28:6377,192.168.6.28:6378,192.168.6.34:6377,192.168.6.34:6378 + +jdbc: + url: jdbc:mysql://127.0.0.1:3306/zhgh_jshvc?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true + username: root + password: 123456 + validationQuery: select 1 + maxActive: 1000 + testWhileIdle: true + connectionProperties: druid.stat.slowSqlMillis=2000 + defaultAutoCommit: true + +xsssql: + ignore: + urls: /platform/cms/content/article/addDo,/platform/sys/app/conf/addDo,/platform/sys/app/conf/editDo + +beetl: + RESOURCE: + #本地路径,开发时设置本地路径,便于调试 + rootLocal: E:/projects/zhgh_jshvc/src/main/resources/views/ + root: views/ + DELIMITER_STATEMENT_START: "" + FT: + #用法: ${"wizzer",escape} + escape: com.budwk.app.web.commons.ext.beetl.HtmlEscapeFormat + #用法: ${10241024,filesize} + filesize: com.budwk.app.web.commons.ext.beetl.FileSizeFormat + #用法: ${"",html2txt="100"} 截取100字符 + html2txt: com.budwk.app.web.commons.ext.beetl.Html2TxtFormat + #用法: ${"",strlen="100"} 截取100字符 + strlen: com.budwk.app.web.commons.ext.beetl.StrlenFormat + +#============================================================== +#Configure Main Scheduler Properties +#============================================================== +#quartz延迟启动秒数 +quartz: + startupDelay: 10 + scheduler: + instanceName: defaultScheduler + instanceId: AUTO + #============================================================== + #Skip Check Update + #update:true + #not update:false + #============================================================== + skipUpdateCheck: true + #============================================================== + #Configure JobStore isClustered=启用集群模式 + #============================================================== + jobStore: + class: org.quartz.impl.jdbcjobstore.JobStoreTX + driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate + #driverDelegateClass: org.quartz.impl.jdbcjobstore.PostgreSQLDelegate + #driverDelegateClass: org.quartz.impl.jdbcjobstore.oracle.OracleDelegate + #Other delegates can see: http://www.quartz-scheduler.org/documentation/quartz-2.x/tutorials/tutorial-lesson-09.html + dataSource: myDS + tablePrefix: SYS_QRTZ_ + isClustered: false + clusterCheckinInterval: 20000 + maxMisfiresToHandleAtATime: 120 + misfireThreshold: 120000 + txIsolationLevelSerializable: false + + #============================================================== + #Configure ThreadPool + #============================================================== + threadPool: + class: org.quartz.simpl.SimpleThreadPool + threadCount: 2 + threadPriority: 5 + threadsInheritContextClassLoaderOfInitializingThread: true + + #============================================================================ + # Configure Plugins + #============================================================================ + plugin: + triggHistory: + class: org.quartz.plugins.history.LoggingJobHistoryPlugin + shutdownhook: + class: org.quartz.plugins.management.ShutdownHookPlugin + cleanShutdown: true + #============================================================================ + # NutDao dataSource + #============================================================================ + dataSource: + myDS: + connectionProvider: + class: com.budwk.app.task.conn.NutConnectionProvider + +minio: + accessKey: minioadmin + secretKey: minioadmin + endPoint: http://192.168.21.214:9000 + bucket: njupt + diff --git a/src/main/resources/static/components/module/activity/score/isMaleFemale.vue b/src/main/resources/static/components/module/activity/score/isMaleFemale.vue new file mode 100644 index 0000000..ce06f3d --- /dev/null +++ b/src/main/resources/static/components/module/activity/score/isMaleFemale.vue @@ -0,0 +1,144 @@ + + + diff --git a/src/main/resources/static/components/module/activity/score/scoreTopEight.vue b/src/main/resources/static/components/module/activity/score/scoreTopEight.vue new file mode 100644 index 0000000..421c38a --- /dev/null +++ b/src/main/resources/static/components/module/activity/score/scoreTopEight.vue @@ -0,0 +1,75 @@ + + + diff --git a/src/main/resources/static/components/module/activity/score/topEight.vue b/src/main/resources/static/components/module/activity/score/topEight.vue new file mode 100644 index 0000000..f046c40 --- /dev/null +++ b/src/main/resources/static/components/module/activity/score/topEight.vue @@ -0,0 +1,91 @@ + + + + diff --git a/src/main/resources/views/platform/zhgh/activity/sports/ActivityResults/index.html b/src/main/resources/views/platform/zhgh/activity/sports/ActivityResults/index.html new file mode 100644 index 0000000..8b4018d --- /dev/null +++ b/src/main/resources/views/platform/zhgh/activity/sports/ActivityResults/index.html @@ -0,0 +1,957 @@ + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取 消 + 确 定 + + +
+ + + + + diff --git a/src/main/resources/views/platform/zhgh/activity/sports/scoreStatistics/index.html b/src/main/resources/views/platform/zhgh/activity/sports/scoreStatistics/index.html new file mode 100644 index 0000000..2d907fb --- /dev/null +++ b/src/main/resources/views/platform/zhgh/activity/sports/scoreStatistics/index.html @@ -0,0 +1,487 @@ + + + +
+ + + +
+ + + + + + diff --git a/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/applyRecord/index.html b/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/applyRecord/index.html new file mode 100644 index 0000000..2636d01 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/staffmanage/member/statistics/applyRecord/index.html @@ -0,0 +1,318 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 导出 + +
+ 全选 + 反选 +
+
+ + + {{ column.label }} + + +
+ + 列设置 + +
+
+ + + + + + + + + + + + + +
+ + +
+
+ + From 7260e1f2d3e702c4eacd5b8fed7c6289f294c662 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Tue, 30 Jun 2026 08:43:12 +0800 Subject: [PATCH 2/2] commit --- .../member/controller/apply/MemberApplyMineController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyMineController.java b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyMineController.java index a1c4d23..15b1c14 100644 --- a/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyMineController.java +++ b/src/main/java/com/budwk/app/zhgh/staffmanage/member/controller/apply/MemberApplyMineController.java @@ -140,7 +140,7 @@ public class MemberApplyMineController { */ @At @ApiOperation("获取申请信息") - @SaCheckPermission(value = {"member.apply.mine", "member.apply.branchUnionApproval", "member.apply.branchUnionApproval"}, mode = SaMode.OR) + @SaCheckPermission(value = {"member.apply.mine", "member.apply.branchUnionApproval", "member.apply.branchUnionApproval", "member.apply.statistics"}, mode = SaMode.OR) public Result findMemberApplyRecord(@Valid String id) { MemberApplyRecord record = dao.fetch(MemberApplyRecord.class, id); return Result.success().addData(record);