This commit is contained in:
@jyuhsin
2026-03-11 15:39:04 +08:00
parent 58ea3f82ae
commit bdb3fbd13e
5 changed files with 67 additions and 28 deletions
@@ -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<ProcessTask> 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<ProcessTaskVO> 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<ProcessTaskActor> taskActorList = dao.query(ProcessTaskActor.class, Cnd.where(ProcessTaskActor::getProcessTaskId, "=", processTask.getId()));
List<JSONObject> list = JSONUtil.toList(JSONUtil.toJsonStr(taskActorList), JSONObject.class);
vo.setTaskActorList(list);
}
res.add(vo);
});
@@ -50,17 +50,7 @@ public class SysV4AppsController {
@SaCheckLogin
@ApiOperation("获取应用分类")
public Result categories(@Param(value = "platform", df = "PC") String platform) {
List<Sys_module> 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<Sys_module> list = dao.query(Sys_module.class, Cnd.where(Sys_module::getPlatform, "=", platform).asc(Sys_module::getSortNum));
List<Map<String, Object>> categories = list.stream().map(module -> {
Map<String, Object> category = new HashMap<>();
category.put("id", module.getId());
@@ -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<TrainSignUpActivity> activityList = dao.query(TrainSignUpActivity.class, Cnd.where("year", "in", Lang.array(DateUtil.thisYear(), DateUtil.thisYear() - 1)));
List<String> activityIdList = activityList.stream().map(TrainSignUpActivity::getId).toList();
List<TrainSignUpCourse> courses = dao.query(TrainSignUpCourse.class, Cnd.where("isMobileSign", "=", true).and("activityId", "in", activityIdList));
List<String> 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();
}
}