From c9e825ecb9addb04fdbf7f9c5d215576a24dfeb7 Mon Sep 17 00:00:00 2001 From: zhouhefeng Date: Sun, 19 Oct 2025 13:43:18 +0800 Subject: [PATCH] commit --- ...ctivityCultureApplyActivityController.java | 40 +++-- .../impl/ActivityCultureServiceImpl.java | 16 +- .../ActivitySportsInfoManageController.java | 17 ++ .../impl/AssetStocktakingServiceImpl.java | 2 +- .../activity/culture/common/applyActivity.js | 40 +++-- .../asset/stocktakingPlan/index.html | 2 +- .../prepare/quotaAllocation/index.html | 2 + .../quotaAllocation/manualAllocationDialog.js | 159 ++++++++++++++++-- 8 files changed, 227 insertions(+), 51 deletions(-) diff --git a/src/main/java/com/budwk/app/zhgh/activity/culture/controller/ActivityCultureApplyActivityController.java b/src/main/java/com/budwk/app/zhgh/activity/culture/controller/ActivityCultureApplyActivityController.java index 642c253d..e13bd2b6 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/culture/controller/ActivityCultureApplyActivityController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/culture/controller/ActivityCultureApplyActivityController.java @@ -5,6 +5,7 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaMode; import cn.hutool.core.date.DateUtil; import cn.hutool.core.lang.Dict; +import cn.hutool.core.util.StrUtil; import com.budwk.app.base.annotation.SLog; import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.result.Result; @@ -15,10 +16,10 @@ import com.budwk.app.flow.entity.ProcessTask; import com.budwk.app.flow.enums.ProcessSubmitTypeEnum; import com.budwk.app.flow.service.FlowCommonService; import com.budwk.app.sys.models.Sys_home_activity; -import com.budwk.app.sys.models.Sys_user_role; import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.zhgh.activity.culture.models.ActivityTissue; +import com.budwk.app.zhgh.activity.culture.models.ActivityTissuePerson; import com.budwk.app.zhgh.activity.culture.service.ActivityCultureService; import com.budwk.app.zhgh.club.model.ClubUser; import com.budwk.app.zhgh.club.model.SysClub; @@ -100,15 +101,24 @@ public class ActivityCultureApplyActivityController { @At @ApiOperation("保存活动申报") - @SLog( tag = "文化活动-活动申报", msg = "保存了一条文化活动记录") + @SLog(tag = "文化活动-活动申报", msg = "保存了一条文化活动记录") @SaCheckPermission(value = {"activity.culture.applyActivity.school", "activity.culture.applyActivity.union", "activity.culture.applyActivity.club"}, mode = SaMode.OR) public Result save(@Param("data") ActivityTissue tissue) { + if (tissue.getActivity_type() == 40002) { tissue.setUnionId(SecurityUtil.getUnionId()); } tissue.setUserId(SecurityUtil.getUserId()); tissue.setApplyTime(DateUtil.now()); - activityCultureService.insertOrUpdate(tissue); + if (StrUtil.isBlank(tissue.getId())){ + activityCultureService.insertWith(tissue, "tissuePersonList"); + }else{ + tissue.getTissuePersonList().forEach(tissuePerson -> tissuePerson.setTissueId(tissue.getId())); + activityCultureService.insertOrUpdate(tissue); + activityCultureService.dao().clear(ActivityTissuePerson.class, Cnd.where(ActivityTissuePerson::getTissueId, "=", tissue.getId())); + activityCultureService.insert(tissue.getTissuePersonList()); + } + return Result.success(); } @@ -125,7 +135,7 @@ public class ActivityCultureApplyActivityController { tissue.setApplyTime(DateUtil.now()); activityCultureService.insertOrUpdate(tissue); - if (tissue.getActivity_type() == 40002 || tissue.getActivity_type() == 40003){ + if (List.of(40002, 40003).contains(tissue.getActivity_type()) && tissue.getIsEnrollSystem()) { // 开启流程实例 Dict args = Dict.create(); args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode()); @@ -138,11 +148,10 @@ public class ActivityCultureApplyActivityController { flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args); } return Result.success(); - }else{ - if (tissue.getIsUnseal()) { - Sys_home_activity sysHomeActivity = tissue.covertToSysHomeActivity(); - activityCultureService.insertOrUpdate(sysHomeActivity); - } + } + if (tissue.getIsUnseal() && tissue.getIsEnrollSystem()) { + Sys_home_activity sysHomeActivity = tissue.covertToSysHomeActivity(); + activityCultureService.insertOrUpdate(sysHomeActivity); } return Result.success(); } @@ -160,15 +169,14 @@ public class ActivityCultureApplyActivityController { tissue.setApplyTime(DateUtil.now()); activityCultureService.insertOrUpdate(tissue); - Dict dict = Dict.create(); - dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId); - dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.RE_APPLY.getCode()); - flowCommonService.executeTask(dict); + Dict dict = Dict.create(); + dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId); + dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.RE_APPLY.getCode()); + flowCommonService.executeTask(dict); return Result.success(); } - @At @SLog(tag = "文化活动", msg = "编辑了一条文化活动记录", param = true, result = true) @SaCheckPermission(value = {"activity.culture.applyActivity.school", "activity.culture.applyActivity.union", "activity.culture.applyActivity.club"}, mode = SaMode.OR) @@ -196,9 +204,9 @@ public class ActivityCultureApplyActivityController { List myManageClub = sysClubService.getMyManageClub(); List clubIds = myManageClub.stream().map(SysClub::getId).collect(Collectors.toList()); - List list = sysClubService.dao().query(ClubUser.class, Cnd.where(ClubUser::getClubId, "in", clubIds)); + List list = sysClubService.dao().query(ClubUser.class, Cnd.where(ClubUser::getClubId, "in", clubIds)); - List clubUserIds = list.stream().map(ClubUser::getUserId).toList(); + List clubUserIds = list.stream().map(ClubUser::getUserId).toList(); cnd.and("id", "in", clubUserIds); } } diff --git a/src/main/java/com/budwk/app/zhgh/activity/culture/service/impl/ActivityCultureServiceImpl.java b/src/main/java/com/budwk/app/zhgh/activity/culture/service/impl/ActivityCultureServiceImpl.java index 2a387545..a8bd3c37 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/culture/service/impl/ActivityCultureServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/activity/culture/service/impl/ActivityCultureServiceImpl.java @@ -10,17 +10,20 @@ import com.budwk.app.web.commons.auth.utils.SecurityUtil; import com.budwk.app.zhgh.activity.culture.models.ActivityTissue; import com.budwk.app.zhgh.activity.culture.models.ActivityTissuePerson; import com.budwk.app.zhgh.activity.culture.service.ActivityCultureService; +import com.budwk.app.zhgh.club.model.SysClub; import com.budwk.app.zhgh.club.service.SysClubService; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; import org.nutz.dao.sql.Sql; +import org.nutz.dao.util.cri.SqlExpressionGroup; import org.nutz.ioc.loader.annotation.Inject; import org.nutz.ioc.loader.annotation.IocBean; import org.nutz.lang.Strings; import org.nutz.lang.util.NutMap; import java.util.List; +import java.util.stream.Collectors; /** * @ClassName ActivityCultureServiceImpl @@ -122,16 +125,19 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl cnd.where().andLike("tissue.name", name); } + SqlExpressionGroup group = new SqlExpressionGroup(); if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) { - cnd.and("tissue.userId", "=", SecurityUtil.getUserId()); - /* if (AuthUtil.hasRoleOr(RoleConstant.BRANCH_UNION_ADMIN.name(), RoleConstant.BRANCH_UNION_CHAIRMAN.name())) { - cnd.and("tissue.unionId", "=", SecurityUtil.getUnionId()); + if (AuthUtil.hasRoleOr(RoleConstant.BRANCH_UNION_ADMIN.name(), RoleConstant.BRANCH_UNION_CHAIRMAN.name())) { + group.or("tissue.unionId", "=", SecurityUtil.getUnionId()); } else if (AuthUtil.hasRole(RoleConstant.CLUB_PRESIDENT.name())) { List myManageClub = sysClubService.getMyManageClub(); List clubIds = myManageClub.stream().map(SysClub::getId).collect(Collectors.toList()); - cnd.and("tissue.clubId", "in", clubIds); - }*/ + group.or("tissue.clubId", "in", clubIds); + } else { + group.or("tissue.userId", "=", SecurityUtil.getUserId()); + } + cnd.and(group); } if (StrUtil.isNotBlank(page.getPageOrderName()) && StrUtil.isNotBlank(page.getPageOrderBy())) { diff --git a/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsInfoManageController.java b/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsInfoManageController.java index 26a58281..0892ef8c 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsInfoManageController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/sports/controller/ActivitySportsInfoManageController.java @@ -9,9 +9,11 @@ import com.budwk.app.base.param.PageForm; import com.budwk.app.base.result.Result; import com.budwk.app.web.commons.auth.utils.AuthUtil; import com.budwk.app.web.commons.auth.utils.SecurityUtil; +import com.budwk.app.zhgh.activity.basic.models.ActivityEvent; import com.budwk.app.zhgh.activity.sports.models.ActivitySchool; import com.budwk.app.zhgh.activity.sports.models.ActivitySchoolEvent; import com.budwk.app.zhgh.activity.sports.service.ActivitySportsService; +import io.swagger.annotations.ApiOperation; import org.nutz.dao.Cnd; import org.nutz.dao.Dao; import org.nutz.dao.Sqls; @@ -195,6 +197,21 @@ public class ActivitySportsInfoManageController { return Result.success(); } + @At + @ApiOperation("根据比赛项目基础表统一赋年龄限制") + @SaCheckPermission("activity.sports.info") + public Object doAssignmentDate(ActivitySchoolEvent[] events) { + for (ActivitySchoolEvent event : events) { + ActivityEvent activityEvent = dao.fetch(ActivityEvent.class,event.getEventId()); + if (!event.getEventId().equals("allItems")) { + event.setStartAgeDate(activityEvent.getStartAgeDate()); + event.setEndAgeDate(activityEvent.getEndAgeDate()); + activitySportsService.updateIgnoreNull(event); + } + } + return Result.success(events); + } + @At @Ok("void") diff --git a/src/main/java/com/budwk/app/zhgh/dayofficework/asset/service/impl/AssetStocktakingServiceImpl.java b/src/main/java/com/budwk/app/zhgh/dayofficework/asset/service/impl/AssetStocktakingServiceImpl.java index e1e44b5d..6ff7f2dd 100644 --- a/src/main/java/com/budwk/app/zhgh/dayofficework/asset/service/impl/AssetStocktakingServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/dayofficework/asset/service/impl/AssetStocktakingServiceImpl.java @@ -53,7 +53,7 @@ public class AssetStocktakingServiceImpl extends BaseServiceImpl 活动报名 + 活动管理 @@ -326,7 +327,8 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = { - + @@ -352,10 +354,10 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = { - - - - - @@ -83,7 +132,7 @@ const MANUAL_ALLOCATION_DIALOG = { :precision="0" :step="1" :min="0" - :max="row.quota" + :max="row.allocationNum" > @@ -95,7 +144,7 @@ const MANUAL_ALLOCATION_DIALOG = { :precision="0" :step="1" :min="0" - :max="row.quota" + :max="row.allocationNum" > @@ -107,7 +156,7 @@ const MANUAL_ALLOCATION_DIALOG = { :precision="0" :step="1" :min="0" - :max="row.quota" + :max="row.allocationNum" > --> @@ -119,7 +168,7 @@ const MANUAL_ALLOCATION_DIALOG = { :precision="0" :step="1" :min="0" - :max="row.quota" + :max="row.allocationNum" > @@ -131,7 +180,7 @@ const MANUAL_ALLOCATION_DIALOG = { :precision="0" :step="1" :min="0" - :max="row.quota" + :max="row.allocationNum" > @@ -150,12 +199,94 @@ const MANUAL_ALLOCATION_DIALOG = { data() { return { unionUserNumOneKeyRatio: null, + settingsType: "allocationNum", sessionId: "", unionLimit: [], manualAllocationDialog: false, + unionUserNumCalc: [{}], + unionUserNumCalcTips: [], + settingsTypeOptions: [ + {label: "分配人数", value: "allocationNum"}, + {label: "高级职称代表数", value: "seniorTeaNum"}, + {label: "中级职称及以下代表数", value: "intermediateBelowNum"}, + {label: "干部代表数", value: "cadreNum"}, + {label: "工人代表数", value: "workerNum"}, + {label: "女代表数", value: "femaleNum"}, + {label: "45岁以下代表数", value: "less45Num"}, + ] } }, methods: { + getSummaries(param) { + const {columns, data} = param; + const sums = []; + columns.forEach((column, index) => { + if (index === 0) { + sums[index] = '占代表总数的'; + return; + } + const values = data.map(item => Number(item[column.property])); + if (!values.every(value => isNaN(value))) { + if (index === 2) { + sums[index] = null; + } else if ([1, 3].includes(index)) { + sums[index] = values.reduce((prev, curr) => { + const value = Number(curr); + if (!isNaN(value)) { + return Math.floor((prev + curr) * 100) / 100; + } else { + return prev; + } + }, 0); + sums[index] += ' 人'; + } else { + const part = values.reduce((prev, curr) => { + const value = Number(curr); + if (!isNaN(value)) { + return Math.floor((prev + curr) * 100) / 100; + } else { + return prev; + } + }, 0); + const totalValues = data.map(item => Number(item.allocationNum)); + const total = totalValues.reduce((prev, curr) => { + const value = Number(curr); + if (!isNaN(value)) { + return Math.floor((prev + curr) * 100) / 100; + } else { + return prev; + } + }, 0); + + sums[index] = ((part / total) * 100).toFixed(2) + ' %' + console.log(((part / total) * 100).toFixed(2)) + } + } else { + sums[index] = null; + } + }); + + return sums; + }, + unionLimitQuickSetting() { + this.unionUserNumCalc.forEach((v, i) => { + const startNum = v.startNum + const endNum = v.endNum + const resultNum = v.resultNum + if (startNum > endNum) { + this.notifyWarning("第" + (i + 1) + "行设置错误") + } else { + this.unionLimit.forEach((x) => { + if (x.memberCount >= startNum && x.memberCount <= endNum) { + x.ratio = resultNum + const num = parseFloat((v.memberCount * x.ratio / 100).toFixed(0)) + v.allocationNum = (num === 0 ? 1 : num) + } + }) + this.$forceUpdate() + } + }) + }, async doManualAllocationSub() { const hasNull = this.unionLimit.some(v => v.allocationNum === undefined) if (hasNull) { @@ -196,12 +327,13 @@ const MANUAL_ALLOCATION_DIALOG = { } }, applyScaleSettings() { + const settingsType = this.settingsTypeOptions.find(v => v.value === this.settingsType) this.unionLimit.forEach(v => { - v.ratio = this.unionUserNumOneKeyRatio - if (v.ratio) { - const num = parseFloat((v.memberCount * v.ratio / 100).toFixed(0)) - v.allocationNum = (num === 0 ? 1 : num) + if (settingsType.value === "allocationNum") { + v.ratio = this.unionUserNumOneKeyRatio } + const num = parseFloat((v.memberCount * this.unionUserNumOneKeyRatio / 100).toFixed(0)) + v[settingsType.value] = (num === 0 ? 1 : num) }) }, ratioChange(val, index) { @@ -219,7 +351,10 @@ const MANUAL_ALLOCATION_DIALOG = { }, async onOpen(sessionId) { this.sessionId = sessionId + this.unionUserNumCalc = [{}] this.manualAllocationDialog = true + this.unionUserNumOneKeyRatio = 0 + this.settingsType = "allocationNum" this.getUnionUsers() } }