From 7c304c71edba7ef62268047749befe9d8de30bdc Mon Sep 17 00:00:00 2001 From: JyuHsin <729757837@qq.com> Date: Thu, 26 Feb 2026 15:13:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../school/ActivityApplyController.java | 4 +- .../listener/SysActivityUnitListener.java | 6 +- .../service/impl/SourceUserServiceImpl.java | 131 ++---------------- .../listener/ProposalUnderTakeListener.java | 6 +- .../io/v/nutz/zhgh/qsv/models/QsvSubject.java | 6 + ...ainSignUpActivityStatisticsController.java | 12 +- .../trainSignUp/models/TrainSignUpCourse.java | 5 + .../views/mobile/qsv/survey/index.html | 7 + .../views/mobile/train/trainInfo.html | 4 +- .../views/mobile/welfare/list/receive.html | 8 +- .../activity/school/ActivityApply.html | 2 +- .../platform/qsv/activity/subjectForm.js | 4 + .../trainSingUp/manage/activity_add.html | 6 +- .../platform/trainSingUp/manage/apply.html | 2 +- .../manage/include_activity_edit.html | 11 ++ .../views/platform/welfare/userChoose.html | 6 +- 16 files changed, 72 insertions(+), 148 deletions(-) diff --git a/src/main/java/io/v/nutz/zhgh/activity/controller/school/ActivityApplyController.java b/src/main/java/io/v/nutz/zhgh/activity/controller/school/ActivityApplyController.java index ce8171d..f54ecff 100644 --- a/src/main/java/io/v/nutz/zhgh/activity/controller/school/ActivityApplyController.java +++ b/src/main/java/io/v/nutz/zhgh/activity/controller/school/ActivityApplyController.java @@ -156,7 +156,7 @@ public class ActivityApplyController { } - if (!ShiroUtil.hasAnyRoles("H04,gh08,sysadmin")) { + if (!ShiroUtil.hasAnyRoles("gh01,H04,gh08,sysadmin")) { cnd.and(new Static("JSON_CONTAINS(school.applyWay,JSON_ARRAY( 1))>0")); cnd.and(new Static("(SELECT COUNT(1) FROM activity_user_scope WHERE groupId=school.activityGroupId AND userId='%s') >0".formatted(ShiroUtil.getUserId()))); } @@ -649,7 +649,7 @@ public class ActivityApplyController { """).setParam("unionId", getUnionId()).setParam("userId", ShiroUtil.getUserId()); - if (!ShiroUtil.hasAnyRoles("H04,sysadmin")) { + if (!ShiroUtil.hasAnyRoles("gh01,H04,sysadmin")) { cnd.where().andLike("school.applyWay ", "1"); cnd.and(new Static("(SELECT COUNT(1) FROM activity_user_scope WHERE groupId=school.activityGroupId AND userId='%s') >0".formatted(ShiroUtil.getUserId()))); diff --git a/src/main/java/io/v/nutz/zhgh/activity/listener/SysActivityUnitListener.java b/src/main/java/io/v/nutz/zhgh/activity/listener/SysActivityUnitListener.java index 4fd61f8..890b9f3 100644 --- a/src/main/java/io/v/nutz/zhgh/activity/listener/SysActivityUnitListener.java +++ b/src/main/java/io/v/nutz/zhgh/activity/listener/SysActivityUnitListener.java @@ -33,8 +33,10 @@ public class SysActivityUnitListener implements SysCommonDataChange { case UPDATE -> { Sys_unit sys_unit = dao.fetch(Sys_unit.class, bizId); ActivityBasicUnit basicUnit = dao.fetch(ActivityBasicUnit.class, Cnd.where("id", "=", sys_unit.getId())); - BeanUtil.copyProperties(sys_unit, basicUnit, "id"); - dao.update(basicUnit); + if(basicUnit != null) { + BeanUtil.copyProperties(sys_unit, basicUnit, "id"); + dao.update(basicUnit); + } } case DELETE -> { dao.clear(ActivityBasicUnit.class, Cnd.where("id", "=", bizId)); diff --git a/src/main/java/io/v/nutz/zhgh/data/service/impl/SourceUserServiceImpl.java b/src/main/java/io/v/nutz/zhgh/data/service/impl/SourceUserServiceImpl.java index fbafa7f..4555eaf 100644 --- a/src/main/java/io/v/nutz/zhgh/data/service/impl/SourceUserServiceImpl.java +++ b/src/main/java/io/v/nutz/zhgh/data/service/impl/SourceUserServiceImpl.java @@ -346,130 +346,14 @@ public class SourceUserServiceImpl extends ViServiceImpl implements private void checkMemberOrWelfareMember(SourceChangeConfig config, UserSource source, Sys_user user, List addMemberUserIds, List deleteMemberUserIds, List addWelfareMemberUserIds, List deleteWelfareMemberUserIds){ - if (config == null || config.getMemberSiftList() == null) { + if (StrUtil.isBlank(source.getUserState())) { return; } - config.getMemberSiftList().forEach(memberSift -> { - String siftName = memberSift.getSiftName(); - Object siftValue = memberSift.getSiftValue(); - boolean shouldAdd = false; - boolean shouldRemove = false; - - // 提前检查 userState 条件(如果存在) - boolean userStateConditionMet = true; - if ("userState".equals(siftName)) { - userStateConditionMet = checkListCondition(siftValue, source, "userState"); - } - - switch (siftName) { - case "userState": - // 如果 userState 不满足条件,则直接设置 shouldRemove - shouldAdd = userStateConditionMet; - shouldRemove = !shouldAdd && user != null && user.getMember() == 1; - break; - - case "personType": - // 检查 personType 条件 - // 必须同时满足 userState 和 personType 条件 - shouldAdd = checkListCondition(siftValue, source, "personType"); - shouldRemove = !shouldAdd && user != null && user.getMember() == 1; - break; - - case "loginNameStart": - case "loginNameEnd": - shouldAdd = checkLoginNameCondition(siftValue, source, siftName); - shouldRemove = !shouldAdd && user != null && user.getMember() == 1; - break; - - case "userQuery": - shouldAdd = checkUserQueryCondition(siftValue, user); - break; - } - - if (shouldAdd) { - addUserToMemberList(user, source, addMemberUserIds); - source.setMember(1); - } else if (shouldRemove) { - deleteMemberUserIds.add(user.getId()); - source.setMember(0); - } - }); - - if (config.getWelfareMemberSiftList() == null) { - return; + if (user != null && ObjectUtil.equals(user.getMember(), 1) && List.of("退休", "离职", "辞职").contains(source.getUserState())) { + deleteMemberUserIds.add(user.getId()); + deleteWelfareMemberUserIds.add(user.getId()); } - config.getWelfareMemberSiftList().forEach(welfareMember -> { - String siftName = welfareMember.getSiftName(); - Object siftValue = welfareMember.getSiftValue(); - boolean shouldAdd = false; - boolean shouldRemove = false; - - // 提前检查 userState 条件(如果存在) - boolean userStateConditionMet = true; - if ("userState".equals(siftName) && siftValue instanceof List) { - List userStateList = (List) siftValue; - userStateConditionMet = source != null && source.getUserState() != null && userStateList.contains(source.getUserState()); - } - - switch (siftName) { - case "member": - if ((user != null && addMemberUserIds.contains(user.getId())) || addMemberUserIds.contains(source.getId())) { - shouldAdd = true; - } else { - shouldRemove = true; - } - break; - - case "userState": - shouldAdd = userStateConditionMet; - shouldRemove = !shouldAdd && user != null && user.getMember() == 1; - break; - - case "personType": - if (siftValue instanceof List && source != null && source.getPersonType() != null) { - List personTypeList = (List) siftValue; - // 必须同时满足 userState 和 personType 条件 - shouldAdd = personTypeList.contains(source.getPersonType()); - shouldRemove = !shouldAdd && user != null && user.getMember() == 1; - } - break; - - case "loginNameStart": - if (siftValue instanceof String loginNameStart && source != null && source.getLoginname() != null) { - shouldAdd = source.getLoginname().startsWith(loginNameStart); - shouldRemove = !shouldAdd && user != null && user.getMember() == 1; - } - break; - - case "loginNameEnd": - if (siftValue instanceof String loginNameEnd && source != null && source.getLoginname() != null) { - shouldAdd = source.getLoginname().endsWith(loginNameEnd); - shouldRemove = !shouldAdd && user != null && user.getMember() == 1; - } - break; - - case "userQuery": - if (siftValue instanceof List && user != null) { - List userIds = (List) siftValue; - shouldAdd = userIds.contains(user.getId()) && user.getMember() != 1; - } - break; - } - - if (shouldAdd) { - if (user == null) { - addWelfareMemberUserIds.add(source.getId()); - } else if (user.getMember() != 1) { - addWelfareMemberUserIds.add(user.getId()); - } - source.setWelfareMember(1); - } else if (shouldRemove && user != null) { - deleteWelfareMemberUserIds.add(user.getId()); - source.setWelfareMember(0); - } - }); - } // 提取公共方法 @@ -584,9 +468,11 @@ public class SourceUserServiceImpl extends ViServiceImpl implements history.setId(R.UU32()); history.setChangeTime(DateUtil.date()); history.setChangeOrigin(MemberChangeOrigin.SYSTEM.name()); + // 新入职教职工 if (user == null) { changeTypes.add(MemberChangeType.NEW.getType()); history.setChangeTypes(RESIGN_AND_OUT_WORK.contains(source.getUserState()) ? null : changeTypes); + history.setChangeInfosStr("新入职"); return history; } // 获取变更记录 @@ -595,6 +481,7 @@ public class SourceUserServiceImpl extends ViServiceImpl implements if (StrUtil.isBlank(newMap.getString("member"))) { sourceMap.put("member", null); } + // 变更记录 List changeList = new ArrayList<>(); for (String fieldName : allowChangeFieldNames) { if (List.of("retireDate", "welfareStopDate", "personalStatus").contains(fieldName)) { @@ -687,9 +574,9 @@ public class SourceUserServiceImpl extends ViServiceImpl implements private void deleteMemberUser(List deleteMemberUserIds, Boolean isDeleteMemberActivityScope){ if (Lang.isNotEmpty(deleteMemberUserIds)) { dao().clear(Sys_user_role.class, Cnd.where("userId", "in", deleteMemberUserIds).and("roleId", "=", Roles.MEMBER)); - if (isDeleteMemberActivityScope) { + /* if (isDeleteMemberActivityScope) { dao().clear(ActivityUserScope.class, Cnd.where("userId", "in", deleteMemberUserIds).and("groupId", "=", 1)); - } + }*/ } } diff --git a/src/main/java/io/v/nutz/zhgh/proposal/listener/ProposalUnderTakeListener.java b/src/main/java/io/v/nutz/zhgh/proposal/listener/ProposalUnderTakeListener.java index 29ab94c..108c5f0 100644 --- a/src/main/java/io/v/nutz/zhgh/proposal/listener/ProposalUnderTakeListener.java +++ b/src/main/java/io/v/nutz/zhgh/proposal/listener/ProposalUnderTakeListener.java @@ -33,8 +33,10 @@ public class ProposalUnderTakeListener implements SysCommonDataChange { case UPDATE -> { Sys_unit sys_unit = dao.fetch(Sys_unit.class, bizId); ProposalUndertake undertake = dao.fetch(ProposalUndertake.class, Cnd.where("unitCode", "=", sys_unit.getUnitcode())); - undertake.setUnitName(sys_unit.getName()); - dao.updateIgnoreNull(undertake); + if(undertake != null) { + undertake.setUnitName(sys_unit.getName()); + dao.updateIgnoreNull(undertake); + } } case DELETE -> { dao.clear(ProposalUndertake.class, Cnd.where("id", "=", bizId)); diff --git a/src/main/java/io/v/nutz/zhgh/qsv/models/QsvSubject.java b/src/main/java/io/v/nutz/zhgh/qsv/models/QsvSubject.java index 431aa4d..583d729 100644 --- a/src/main/java/io/v/nutz/zhgh/qsv/models/QsvSubject.java +++ b/src/main/java/io/v/nutz/zhgh/qsv/models/QsvSubject.java @@ -57,6 +57,12 @@ public class QsvSubject extends BaseModel { @ColDefine(type = ColType.INT, width = 1) private Integer maxMulti; + @Column + @Comment("多选,最少选几个") + @ColDefine(type = ColType.INT, width = 1) + @Default(value = "1") + private Integer minMulti; + @Column @Comment("排序") @ColDefine(type = ColType.INT, width = 1) 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 d463472..f26bd7e 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 @@ -178,14 +178,14 @@ public class TrainSignUpActivityStatisticsController { }); List excelCommonExportEntity = new ArrayList<>(); - excelCommonExportEntity.add(new ExcelExportEntity("姓名", "username", 20)); + excelCommonExportEntity.add(new ExcelExportEntity("姓名", "username", 10)); excelCommonExportEntity.add(new ExcelExportEntity("工号", "loginname", 20)); - excelCommonExportEntity.add(new ExcelExportEntity("单位", "unitname", 20)); - excelCommonExportEntity.add(new ExcelExportEntity("分工会", "unionname", 20)); - excelCommonExportEntity.add(new ExcelExportEntity("性别", "sex", 20)); + excelCommonExportEntity.add(new ExcelExportEntity("单位", "unitname", 30)); + excelCommonExportEntity.add(new ExcelExportEntity("分工会", "unionname", 30)); + excelCommonExportEntity.add(new ExcelExportEntity("性别", "sex", 10)); excelCommonExportEntity.add(new ExcelExportEntity("手机号", "mobile", 20)); - excelCommonExportEntity.add(new ExcelExportEntity("报名时间", "signUpTime", 20)); - //excelCommonExportEntity.add(new ExcelExportEntity("报名时段", "courseTime", 20)); + excelCommonExportEntity.add(new ExcelExportEntity("报名时间", "signUpTime", 30)); + excelCommonExportEntity.add(new ExcelExportEntity("报名时段", "courseTime", 30)); // excelCommonExportEntity.add(new ExcelExportEntity("生日", "birthday", 20)); excelCommonExportEntity.add(new ExcelExportEntity("报名状态", "stateName", 20)); diff --git a/src/main/java/io/v/nutz/zhgh/trainSignUp/models/TrainSignUpCourse.java b/src/main/java/io/v/nutz/zhgh/trainSignUp/models/TrainSignUpCourse.java index ae7cc6b..e58b2b3 100644 --- a/src/main/java/io/v/nutz/zhgh/trainSignUp/models/TrainSignUpCourse.java +++ b/src/main/java/io/v/nutz/zhgh/trainSignUp/models/TrainSignUpCourse.java @@ -145,4 +145,9 @@ public class TrainSignUpCourse extends BaseModel implements Serializable { private String courseTimeName; + + @Column + @Comment("二维码") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String classQrCode; } diff --git a/src/main/resources/views/mobile/qsv/survey/index.html b/src/main/resources/views/mobile/qsv/survey/index.html index 753db45..c7e7a1d 100644 --- a/src/main/resources/views/mobile/qsv/survey/index.html +++ b/src/main/resources/views/mobile/qsv/survey/index.html @@ -122,6 +122,7 @@ layout("/mobile/platform.html"){ v-model="subject.userSelectOptionIds" :ref="'subject'+subject.id" :max="subject.maxMulti ? subject.maxMulti : 0" + :min="subject.minMulti ? subject.minMulti : 0" v-if="['radio','checkbox'].includes(subject.type)" > @@ -304,10 +305,15 @@ layout("/mobile/platform.html"){ for (let i = 0; i < this.subjects.length; i++) { const subject = this.subjects[i] if (["radio", "checkbox"].includes(subject.type)) { + console.log(subject) if (!subject.userSelectOptionIds || subject.userSelectOptionIds.length === 0) { this.$toast.fail("第" + (i + 1) + "题未做答") return } + if(subject.minMulti && subject.userSelectOptionIds.length < subject.minMulti) { + this.$toast.fail("第" + (i + 1) + "题最少需要选择" + subject.minMulti + "项") + return + } } else if ("text" === subject.type) { if (!subject.userFillContent) { this.$toast.fail("第" + (i + 1) + "题未作答") @@ -315,6 +321,7 @@ layout("/mobile/platform.html"){ } } } + this.autoSubmit() }, diff --git a/src/main/resources/views/mobile/train/trainInfo.html b/src/main/resources/views/mobile/train/trainInfo.html index 147613d..cf60fb5 100644 --- a/src/main/resources/views/mobile/train/trainInfo.html +++ b/src/main/resources/views/mobile/train/trainInfo.html @@ -226,8 +226,8 @@ layout("/mobile/platform.html"){
- 点我查看微信群二维码
-
1.本次慰问品共2种套餐,教职工可任选其中1种套餐快递(分2个快递发货),快递地址仅限江浙沪(江苏,浙江,上海)。
-
2.快递预计于9月29日前投递完成(),请保持联系电话畅通并及时接听。
-
3.填写截止时间:9月10日10点。
+
1.本次慰问品共3种套餐,教职工可任选其中1种套餐快递(1个快递发货),快递地址仅限江浙沪(江苏,浙江,上海)。
+
2.快递预计于2026年1月10日前投递完成,请保持联系电话畅通并及时接听。
+
3.填写截止时间:12月16日12点,没有在规定时间内选套餐的默认套餐二,并统一快递瓯江囗校区自取。
@@ -258,7 +258,7 @@ layout("/mobile/platform.html"){ 备注:{{option.simpleDesc}}
-
套餐详情
diff --git a/src/main/resources/views/platform/activity/school/ActivityApply.html b/src/main/resources/views/platform/activity/school/ActivityApply.html index ba4ec58..aafbdc0 100644 --- a/src/main/resources/views/platform/activity/school/ActivityApply.html +++ b/src/main/resources/views/platform/activity/school/ActivityApply.html @@ -358,7 +358,7 @@ layout("/layouts/platform.html"){ type="primary" v-if="row.applyWay.includes(2)">项目报名 - + 删除报名人员 diff --git a/src/main/resources/views/platform/qsv/activity/subjectForm.js b/src/main/resources/views/platform/qsv/activity/subjectForm.js index 5fbee5f..43de2bb 100644 --- a/src/main/resources/views/platform/qsv/activity/subjectForm.js +++ b/src/main/resources/views/platform/qsv/activity/subjectForm.js @@ -42,6 +42,10 @@ const subjectForm = {
+ +
+ 最小选择数: +
最大选择数: diff --git a/src/main/resources/views/platform/trainSingUp/manage/activity_add.html b/src/main/resources/views/platform/trainSingUp/manage/activity_add.html index f11abb6..d138202 100644 --- a/src/main/resources/views/platform/trainSingUp/manage/activity_add.html +++ b/src/main/resources/views/platform/trainSingUp/manage/activity_add.html @@ -55,8 +55,8 @@ layout("/layouts/platform.html"){ notice: false, isIntegral: false, courseList: [ - {courseName: '1', courseTimeList: [], isMobileSign: false, isReceiveGift: false, reserveMode: 1}, - {courseName: '2', courseTimeList: [], isMobileSign: false, isReceiveGift: false, reserveMode: 1} + {courseName: '1', courseTimeList: [], isMobileSign: false, isReceiveGift: false, reserveMode: 1, classQrCode: ''}, + {courseName: '2', courseTimeList: [], isMobileSign: false, isReceiveGift: false, reserveMode: 1, classQrCode: ''} ], conditionStructure: { method: "AND", @@ -162,7 +162,7 @@ layout("/layouts/platform.html"){ }, //添加培训班 addCourse() { - this.formData.courseList.push({courseTimeList: [], isMobileSign: false, isReceiveGift: false, reserveMode: 1, courseIsLimitApply: false}) + this.formData.courseList.push({courseTimeList: [], isMobileSign: false, isReceiveGift: false, reserveMode: 1, courseIsLimitApply: false, classQrCode: ''}) }, //删除培训班 async removeTableCourse(index) { diff --git a/src/main/resources/views/platform/trainSingUp/manage/apply.html b/src/main/resources/views/platform/trainSingUp/manage/apply.html index 753cd59..82cc07a 100644 --- a/src/main/resources/views/platform/trainSingUp/manage/apply.html +++ b/src/main/resources/views/platform/trainSingUp/manage/apply.html @@ -294,7 +294,7 @@ layout("/layouts/platform.html"){