From b3f86d779a5c38ba08b926149111d5619206d91b Mon Sep 17 00:00:00 2001 From: "@jyuhsin" <729757837@qq.com> Date: Mon, 9 Jun 2025 16:13:00 +0800 Subject: [PATCH] commit --- .../constant/ColumnFormTypeEnum.java | 1 + ...ainSignUpActivityStatisticsController.java | 12 +++- .../trainSignUp/models/TrainSignUpType.java | 6 ++ .../TrainSignUpActivityStatisticsService.java | 2 + .../impl/TrainSignUpActivityServiceImpl.java | 9 ++- ...inSignUpActivityStatisticsServiceImpl.java | 62 ++++++++++++++++++- .../mobile/common/TrainDynamicForm.vue | 52 ++++++++-------- .../trainSingUp/manage/trainSignUpType.html | 18 ++++-- .../trainSingUp/manage/userAdjust.html | 22 +++++-- .../trainSingUp/statistics/activity.html | 36 +++++++++-- 10 files changed, 170 insertions(+), 50 deletions(-) diff --git a/src/main/java/io/v/nutz/zhgh/trainSignUp/constant/ColumnFormTypeEnum.java b/src/main/java/io/v/nutz/zhgh/trainSignUp/constant/ColumnFormTypeEnum.java index 4a459f0..5dfb7f8 100644 --- a/src/main/java/io/v/nutz/zhgh/trainSignUp/constant/ColumnFormTypeEnum.java +++ b/src/main/java/io/v/nutz/zhgh/trainSignUp/constant/ColumnFormTypeEnum.java @@ -16,6 +16,7 @@ public enum ColumnFormTypeEnum { INPUT("INPUT", "输入框"), SELECT("SELECT", "选择框"),//选项数组, + STEPPER("STEPPER", "步进器"), //RADIO("RADIO", "单选框"),//选项数组 FILE("FILE", "文件");//上传个数,格式 diff --git a/src/main/java/io/v/nutz/zhgh/trainSignUp/controller/statistics/TrainSignUpActivityStatisticsController.java b/src/main/java/io/v/nutz/zhgh/trainSignUp/controller/statistics/TrainSignUpActivityStatisticsController.java index b22e8e8..d463472 100644 --- a/src/main/java/io/v/nutz/zhgh/trainSignUp/controller/statistics/TrainSignUpActivityStatisticsController.java +++ b/src/main/java/io/v/nutz/zhgh/trainSignUp/controller/statistics/TrainSignUpActivityStatisticsController.java @@ -111,6 +111,14 @@ public class TrainSignUpActivityStatisticsController { return trainSignUpActivityStatisticsService.registerUserList(courseId); } + @At + @ViReturn + @Ok("json:full") + @RequiresPermissions("trainSingUp.statistics.activity") + public Object getTaleColumnInfo(@Param(value = "courseId") String courseId) { + return trainSignUpActivityStatisticsService.getTaleColumnInfo(courseId); + } + /** * 培训班上课签到信息 * @@ -177,7 +185,7 @@ public class TrainSignUpActivityStatisticsController { excelCommonExportEntity.add(new ExcelExportEntity("性别", "sex", 20)); excelCommonExportEntity.add(new ExcelExportEntity("手机号", "mobile", 20)); excelCommonExportEntity.add(new ExcelExportEntity("报名时间", "signUpTime", 20)); - excelCommonExportEntity.add(new ExcelExportEntity("报名时段", "courseTime", 20)); + //excelCommonExportEntity.add(new ExcelExportEntity("报名时段", "courseTime", 20)); // excelCommonExportEntity.add(new ExcelExportEntity("生日", "birthday", 20)); excelCommonExportEntity.add(new ExcelExportEntity("报名状态", "stateName", 20)); @@ -198,7 +206,7 @@ public class TrainSignUpActivityStatisticsController { TrainSignUpCourse course = courseMap.get(k); //查询课程类型 TrainSignUpType trainSignUpType = dao.fetch(TrainSignUpType.class, Cnd.where("id", "=", course.getCourseType())); - dao.fetchLinks(trainSignUpType, "^trainMobileSignColumnList$"); + dao.fetchLinks(trainSignUpType, "^trainMobileSignColumnList$", Cnd.NEW().asc("columnIndex")); ExcelExportService service = new ExcelExportService(); ExportParams userExportParams = new ExportParams(); diff --git a/src/main/java/io/v/nutz/zhgh/trainSignUp/models/TrainSignUpType.java b/src/main/java/io/v/nutz/zhgh/trainSignUp/models/TrainSignUpType.java index d806936..f00e0f0 100644 --- a/src/main/java/io/v/nutz/zhgh/trainSignUp/models/TrainSignUpType.java +++ b/src/main/java/io/v/nutz/zhgh/trainSignUp/models/TrainSignUpType.java @@ -50,6 +50,12 @@ public class TrainSignUpType extends BaseModel implements Serializable { @ColDefine(type = ColType.BOOLEAN) private Boolean isAddFamily; + @Column + @Comment("本人纳入总人数") + @ColDefine(type = ColType.BOOLEAN) + @Default("1") + private Boolean selfAddFamily; + @Many(field = "typeId") private List trainMobileSignColumnList; } diff --git a/src/main/java/io/v/nutz/zhgh/trainSignUp/service/TrainSignUpActivityStatisticsService.java b/src/main/java/io/v/nutz/zhgh/trainSignUp/service/TrainSignUpActivityStatisticsService.java index e0873cc..88d3cc6 100644 --- a/src/main/java/io/v/nutz/zhgh/trainSignUp/service/TrainSignUpActivityStatisticsService.java +++ b/src/main/java/io/v/nutz/zhgh/trainSignUp/service/TrainSignUpActivityStatisticsService.java @@ -33,6 +33,8 @@ public interface TrainSignUpActivityStatisticsService extends ViService registerUserList(String courseId); + List getTaleColumnInfo(String courseId); + /** * 该课程下的报名人员信息 * diff --git a/src/main/java/io/v/nutz/zhgh/trainSignUp/service/impl/TrainSignUpActivityServiceImpl.java b/src/main/java/io/v/nutz/zhgh/trainSignUp/service/impl/TrainSignUpActivityServiceImpl.java index e7e2f1e..c2e09a9 100644 --- a/src/main/java/io/v/nutz/zhgh/trainSignUp/service/impl/TrainSignUpActivityServiceImpl.java +++ b/src/main/java/io/v/nutz/zhgh/trainSignUp/service/impl/TrainSignUpActivityServiceImpl.java @@ -272,7 +272,9 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl signUpUsers = dao().query(TrainSignUpUser.class, Cnd.where("courseId", "=", c.getId())); signUpUsers.forEach(item -> { - hasRegisterNum.getAndIncrement(); + if(type.getSelfAddFamily()) { + hasRegisterNum.getAndIncrement(); + } if (type.getIsBringFamily() && type.getIsAddFamily()) { List mapList = item.getMobileColumnsValue(); if (Lang.isNotEmpty(mapList)) { @@ -449,7 +451,7 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl signUpUsers = listMap(sql); - int hasRegisterNum = signUpUsers.size() + 1;//+1是算自己 + int hasRegisterNum = signUpType.getSelfAddFamily() ? signUpUsers.size() + 1 : 0;//+1是算自己 //课程已报人数(携带的家属) int hasFamilyNum = 0; //如果携带家属,并且纳入人数,则mdzz @@ -481,7 +483,8 @@ public class TrainSignUpActivityServiceImpl extends ViServiceImpl signUpUsers = dao().query(TrainSignUpUser.class, Cnd.where("courseId", "=", courseId)); - int hasRegisterNum = signUpUsers.size() + 1;//+1是算自己 + //如果本人纳入总人数,则正常,但是如果不纳入,统计报名人数的时候就不算 + int hasRegisterNum = type.getSelfAddFamily() ? signUpUsers.size() + 1 : 0;//+1是算自己 //课程已报人数(携带的家属) int hasFamilyNum = 0; //如果这个类型携带家属并且计入总人数 diff --git a/src/main/java/io/v/nutz/zhgh/trainSignUp/service/impl/TrainSignUpActivityStatisticsServiceImpl.java b/src/main/java/io/v/nutz/zhgh/trainSignUp/service/impl/TrainSignUpActivityStatisticsServiceImpl.java index 6805179..f9f6c72 100644 --- a/src/main/java/io/v/nutz/zhgh/trainSignUp/service/impl/TrainSignUpActivityStatisticsServiceImpl.java +++ b/src/main/java/io/v/nutz/zhgh/trainSignUp/service/impl/TrainSignUpActivityStatisticsServiceImpl.java @@ -1,23 +1,31 @@ package io.v.nutz.zhgh.trainSignUp.service.impl; +import cn.hutool.core.util.StrUtil; import cn.wizzer.framework.page.Pagination; import io.v.nutz.base.dao.CndPlus; import io.v.nutz.base.query.PageForm; import io.v.nutz.base.service.impl.ViServiceImpl; import io.v.nutz.base.utils.Vi; +import io.v.nutz.zhgh.trainSignUp.models.TrainMobileSignColumn; +import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpCourse; +import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpType; import io.v.nutz.zhgh.trainSignUp.models.TrainSignUpUser; import io.v.nutz.zhgh.trainSignUp.service.TrainSignUpActivityStatisticsService; import lombok.extern.slf4j.Slf4j; +import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.json.Json; +import org.nutz.lang.Lang; import org.nutz.lang.util.NutMap; import java.util.Comparator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.atomic.AtomicReference; import java.util.stream.Collectors; /** @@ -42,6 +50,9 @@ public class TrainSignUpActivityStatisticsServiceImpl extends ViServiceImpl listMap = list.getList(NutMap.class); + + //找活动报的人 + List upUsers = dao().query(TrainSignUpUser.class, Cnd.where("activityId", "=", activityId)); + Map> signUsers = upUsers.stream().collect(Collectors.groupingBy(TrainSignUpUser::getCourseId)); + + for (NutMap item : listMap) { + AtomicReference familyCount = new AtomicReference<>(0); + List users = signUsers.get(item.getString("id")); + if (Lang.isNotEmpty(users)) { + users.forEach(u -> { + List mobileColumnsValue = u.getMobileColumnsValue(); + if (Lang.isNotEmpty(mobileColumnsValue)) { + NutMap nutMap = mobileColumnsValue.stream().filter(o -> "xdqsrs".equals(o.getString("columnCode"))).findFirst().orElse(null); + if (nutMap != null) { + familyCount.updateAndGet(v -> v + (StrUtil.isNotBlank(nutMap.getString("columnValue")) ? nutMap.getInt("columnValue") : 0)); + } + } + }); + } + item.setv("familyCount", familyCount.get()); + } + list.setList(listMap); + return list; } @Override @@ -70,7 +105,8 @@ public class TrainSignUpActivityStatisticsServiceImpl extends ViServiceImpl { + o.put(m.getString("columnCode"), m.getString("columnValue")); + }); + } + }); + return list; + } + + @Override + public List getTaleColumnInfo(String courseId) { + TrainSignUpCourse course = dao().fetch(TrainSignUpCourse.class, courseId); + TrainSignUpType upType = dao().fetch(TrainSignUpType.class, course.getCourseType()); + dao().fetchLinks(upType, "trainMobileSignColumnList", Cnd.NEW().asc("columnIndex")); + + List columnList = upType.getTrainMobileSignColumnList(); + List columnTableList = columnList.stream().map(o -> NutMap.NEW().setv("label", o.getColumnName()).setv("prop", o.getColumnCode())).collect(Collectors.toList()); + return columnTableList; } @Override diff --git a/src/main/resources/static/components/mobile/common/TrainDynamicForm.vue b/src/main/resources/static/components/mobile/common/TrainDynamicForm.vue index ce3adbc..4e32276 100644 --- a/src/main/resources/static/components/mobile/common/TrainDynamicForm.vue +++ b/src/main/resources/static/components/mobile/common/TrainDynamicForm.vue @@ -8,42 +8,44 @@