diff --git a/src/main/java/com/budwk/app/flow/controller/FlowCommonController.java b/src/main/java/com/budwk/app/flow/controller/FlowCommonController.java index c5031cac..4f7f65be 100644 --- a/src/main/java/com/budwk/app/flow/controller/FlowCommonController.java +++ b/src/main/java/com/budwk/app/flow/controller/FlowCommonController.java @@ -4,6 +4,8 @@ import cn.dev33.satoken.annotation.SaCheckLogin; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.lang.Dict; import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONObject; +import cn.hutool.json.JSONUtil; import com.budwk.app.base.result.Result; import com.budwk.app.base.vo.LabelValueVO; import com.budwk.app.flow.constant.FlowConst; @@ -12,10 +14,7 @@ import com.budwk.app.flow.engine.event.ProcessEvent; import com.budwk.app.flow.engine.event.ProcessPublisher; import com.budwk.app.flow.engine.model.ProcessModel; import com.budwk.app.flow.engine.model.TaskModel; -import com.budwk.app.flow.entity.Candidate; -import com.budwk.app.flow.entity.ProcessDefine; -import com.budwk.app.flow.entity.ProcessInstance; -import com.budwk.app.flow.entity.ProcessTask; +import com.budwk.app.flow.entity.*; import com.budwk.app.flow.enums.ProcessEventTypeEnum; import com.budwk.app.flow.enums.ProcessInstanceStateEnum; import com.budwk.app.flow.enums.ProcessTaskPerformTypeEnum; @@ -147,7 +146,7 @@ public class FlowCommonController { @ApiOperation("获取流程定义的审批记录") public Result approvalRecord(Long instanceId) { List processTaskList = dao.query(ProcessTask.class, Cnd.where(ProcessTask::getProcessInstanceId, "=", instanceId) - .and(ProcessTask::getTaskState, "not in", List.of(ProcessTaskStateEnum.DOING, ProcessTaskStateEnum.WITHDRAW, ProcessTaskStateEnum.ABANDON)) + .and(ProcessTask::getTaskState, "not in", List.of(ProcessTaskStateEnum.WITHDRAW, ProcessTaskStateEnum.ABANDON)) .asc(ProcessTask::getUpdatedAt)); List res = new ArrayList<>(); processTaskList.forEach(processTask -> { @@ -155,6 +154,11 @@ public class FlowCommonController { if (vo.getTaskState().equals(ProcessTaskStateEnum.FINISHED.getCode()) && StrUtil.isNotBlank(vo.getOperator())) { } + if(vo.getTaskState().equals(ProcessTaskStateEnum.DOING.getCode())) { + List taskActorList = dao.query(ProcessTaskActor.class, Cnd.where(ProcessTaskActor::getProcessTaskId, "=", processTask.getId())); + List list = JSONUtil.toList(JSONUtil.toJsonStr(taskActorList), JSONObject.class); + vo.setTaskActorList(list); + } res.add(vo); }); diff --git a/src/main/java/com/budwk/app/sys/controller/v4/SysV4AppsController.java b/src/main/java/com/budwk/app/sys/controller/v4/SysV4AppsController.java index bba025eb..3f2993ac 100644 --- a/src/main/java/com/budwk/app/sys/controller/v4/SysV4AppsController.java +++ b/src/main/java/com/budwk/app/sys/controller/v4/SysV4AppsController.java @@ -50,17 +50,7 @@ public class SysV4AppsController { @SaCheckLogin @ApiOperation("获取应用分类") public Result categories(@Param(value = "platform", df = "PC") String platform) { - List list; - if (AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) { - list = dao.query(Sys_module.class, Cnd.where(Sys_module::getPlatform, "=", platform).asc(Sys_module::getSortNum)); - } else { - list = dao.query( - Sys_module.class, - Cnd.where(Sys_module::getPlatform, "=", platform) - .and(Sys_module::getId, "=", "2") - .asc(Sys_module::getSortNum) - ); - } + List list = dao.query(Sys_module.class, Cnd.where(Sys_module::getPlatform, "=", platform).asc(Sys_module::getSortNum)); List> categories = list.stream().map(module -> { Map category = new HashMap<>(); category.put("id", module.getId()); diff --git a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/manage/TrainSignUpApplyController.java b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/manage/TrainSignUpApplyController.java index 5a0dce09..24220887 100644 --- a/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/manage/TrainSignUpApplyController.java +++ b/src/main/java/com/budwk/app/zhgh/activity/trainSignUp/controller/manage/TrainSignUpApplyController.java @@ -2,6 +2,8 @@ package com.budwk.app.zhgh.activity.trainSignUp.controller.manage; import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.date.DateField; +import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.annotation.SLog; @@ -34,10 +36,7 @@ import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; import org.nutz.mvc.annotation.Param; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.concurrent.locks.ReentrantLock; import java.util.stream.Collectors; @@ -100,7 +99,7 @@ public class TrainSignUpApplyController { cnd.and("activityMode", "=", 2).and("createdBy", "=", SecurityUtil.getUserId()); } - if("mine".equals(dataType)) { + if ("mine".equals(dataType)) { cnd.and(new Static("id in (select activityId from train_sign_up_user where userId = '%s')".formatted(SecurityUtil.getUserId()))); } @@ -155,7 +154,7 @@ public class TrainSignUpApplyController { cnd.and("tsuc.assort", "in", assortTypes); } - if("mine".equals(dataType)) { + if ("mine".equals(dataType)) { cnd.and(new Static("tsuc.id in (select courseId from train_sign_up_user where userId = '%s')".formatted(SecurityUtil.getUserId()))); } @@ -423,4 +422,36 @@ public class TrainSignUpApplyController { .and("courseId", "=", courseId).and("userId", "=", userId)); return Result.success(); } + + @At + @ApiOperation("判断缺席次数") + @SaCheckPermission(value = {"trainSignUp.apply", "h5.trainSignUp.apply"}, mode = SaMode.OR) + @SLog(tag = "品牌活动-活动报名", msg = "判断缺席次数") + public Result validSignCount(@Param("activityId") String activityId) { + // 缺席2次,就1年内不能报名 + // 查询今天,然后往前推1年,这段时间有没有缺席超过2次 + DateTime today = DateUtil.date(); + DateTime lastYear = DateUtil.offset(today, DateField.YEAR, -1); + + // 找需要签到的分活动 + List activityList = dao.query(TrainSignUpActivity.class, Cnd.where("year", "in", Lang.array(DateUtil.thisYear(), DateUtil.thisYear() - 1))); + List activityIdList = activityList.stream().map(TrainSignUpActivity::getId).toList(); + + List courses = dao.query(TrainSignUpCourse.class, Cnd.where("isMobileSign", "=", true).and("activityId", "in", activityIdList)); + List courseIdList = courses.stream().map(TrainSignUpCourse::getId).toList(); + + int count = dao.count( + TrainSignUpUserCourse.class, + Cnd.where("userId", "=", SecurityUtil.getUserId()) + .and("courseStartTime", ">", DateUtil.format(lastYear, "yyyy-MM-dd HH:mm:ss")) + .and("courseEndTime", "<", DateUtil.format(today, "yyyy-MM-dd HH:mm:ss")) + .and("isAttend", "=", false) + .and("courseId", "in", courseIdList) + ); + + if(count >= 2) { + return Result.error(99, "您已连续2次未签到活动,不能报名,请联系校工会"); + } + return Result.success(); + } } diff --git a/src/main/resources/views/platform/flow/define/preview.html b/src/main/resources/views/platform/flow/define/preview.html index 4823c555..c0c12168 100644 --- a/src/main/resources/views/platform/flow/define/preview.html +++ b/src/main/resources/views/platform/flow/define/preview.html @@ -187,6 +187,9 @@ {{approvalInfo.ext?.initiatorName}}({{approvalInfo.ext?.initiatorAccount}}) + + {{ approvalInfo.taskActorList.map(u => u.actorName + '(' + u.actorAccount + ')').join('、') }} + {{approvalInfo.taskFormData.userName}}({{approvalInfo.taskFormData?.loginName}}) @@ -196,16 +199,22 @@
提交结果: - {{getSubmitTypeText(approvalInfo.ext.submitType)}} + + {{getSubmitTypeText(approvalInfo.ext.submitType)}} + + + 暂未处理 +
提交意见: - {{approvalInfo.taskFormData.opinion}} + {{approvalInfo.taskFormData.opinion}} + 暂未处理
提交时间: - {{approvalInfo.finishTime}} + {{approvalInfo.finishTime || '暂未处理'}}
@@ -290,7 +299,7 @@ if (data.type !== "snaker:task") return - const approvalInfos = this.hisApproval.filter((item) => item.taskName === data.id && item.taskState === 20) + const approvalInfos = this.hisApproval.filter((item) => item.taskName === data.id && [10, 20].includes(item.taskState)) if (approvalInfos && approvalInfos.length > 0) { this.approvalInfos = approvalInfos diff --git a/src/main/resources/views/platform/zhghh5/activity/trainSignUp/apply/index.html b/src/main/resources/views/platform/zhghh5/activity/trainSignUp/apply/index.html index eefe286a..c72818a5 100644 --- a/src/main/resources/views/platform/zhghh5/activity/trainSignUp/apply/index.html +++ b/src/main/resources/views/platform/zhghh5/activity/trainSignUp/apply/index.html @@ -126,11 +126,16 @@ layout("/layouts/platform_h5.html"){ this.time = this.$moment().diff(this.$moment(row.activitySignUpStartTime), 'milliseconds') this.infoVisible = true }, - onApply(row) { - if(this.$moment().isBefore(this.$moment(row.activitySignUpStartTime))) { + async onApply(row) { + if (this.$moment().isBefore(this.$moment(row.activitySignUpStartTime))) { this.onView(row) return } + const res = await this.$axios.post('/platform/trainSignUp/apply/validSignCount') + if (res.code !== 0) { + this.$dialog.alert({ title: "温馨提示", message: res.msg }) + return + } this.$pjaxReplace('/platform/trainSignUp/apply/list/h5?id=' + row.id) }, fetchOne() {