Merge remote-tracking branch 'origin/main'

# Conflicts:
#	src/main/resources/static/assets/platform/css/h5.css
This commit is contained in:
那些花儿
2025-09-05 15:16:10 +08:00
22 changed files with 771 additions and 484 deletions
@@ -1,11 +1,20 @@
package com.budwk.app.zhgh.activity.culture.controller;
import cn.dev33.satoken.annotation.SaCheckLogin;
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;
import com.budwk.app.flow.constant.FlowConst;
import com.budwk.app.flow.engine.FlowEngine;
import com.budwk.app.flow.entity.ProcessInstance;
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_user_role;
import com.budwk.app.web.commons.auth.utils.AuthUtil;
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
@@ -13,11 +22,15 @@ import com.budwk.app.zhgh.activity.culture.models.ActivityTissue;
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 com.budwk.app.zhgh.unionReimburse.model.UnionReimburse;
import io.swagger.annotations.ApiOperation;
import org.nutz.aop.interceptor.ioc.TransAop;
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.aop.Aop;
import org.nutz.ioc.loader.annotation.Inject;
import org.nutz.ioc.loader.annotation.IocBean;
import org.nutz.lang.Strings;
@@ -41,6 +54,17 @@ import java.util.stream.Collectors;
@At("/platform/activity/culture/applyActivity")
public class ActivityCultureApplyActivityController {
@Inject
private Dao dao;
@Inject
private FlowEngine flowEngine;
@Inject
private FlowCommonService flowCommonService;
@Inject
private SysClubService sysClubService;
@Inject
private ActivityCultureService activityCultureService;
@At("/school")
@Ok("beetl:platform/zhgh/activity/culture/school/applyActivity/index.html")
@SaCheckPermission("activity.culture.applyActivity.school")
@@ -59,12 +83,6 @@ public class ActivityCultureApplyActivityController {
public void clubIndex() {
}
@Inject
private ActivityCultureService activityCultureService;
@Inject
private SysClubService sysClubService;
/**
* @param activityScopeGroupId
@@ -94,6 +112,58 @@ public class ActivityCultureApplyActivityController {
return Result.success();
}
@At
@SaCheckLogin
@ApiOperation("提交申请")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission(value = {"activity.culture.applyActivity.school", "activity.culture.applyActivity.union", "activity.culture.applyActivity.club"}, mode = SaMode.OR)
public Result submit(@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 (tissue.getActivity_type() == 40002 || tissue.getActivity_type() == 40003){
// 开启流程实例
Dict args = Dict.create();
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
args.set(FlowConst.FORM_DATA, tissue);
ProcessInstance instance = flowEngine.startProcessInstanceByKey("WHHD", tissue.getId(), SecurityUtil.getUserId(), args);
// 自动完成第一个申请任务
List<ProcessTask> doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null);
for (ProcessTask task : doingTaskList) {
flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args);
}
return Result.success();
}
return Result.success();
}
@At
@SaCheckLogin
@ApiOperation("重新提交申请")
@Aop(TransAop.READ_COMMITTED)
@SaCheckPermission(value = {"activity.culture.applyActivity.school", "activity.culture.applyActivity.union", "activity.culture.applyActivity.club"}, mode = SaMode.OR)
public Result submitAgain(@Param("data") ActivityTissue tissue, @Param("taskId") Long taskId) {
if (tissue.getActivity_type() == 40002) {
tissue.setUnionId(SecurityUtil.getUnionId());
}
tissue.setUserId(SecurityUtil.getUserId());
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);
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)
@@ -7,6 +7,7 @@ import com.budwk.app.base.annotation.SLog;
import com.budwk.app.base.model.Audit;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
import com.budwk.app.flow.enums.ProcessTaskStateEnum;
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.service.ActivityCultureService;
@@ -20,6 +21,8 @@ import org.nutz.lang.Strings;
import org.nutz.mvc.annotation.At;
import org.nutz.mvc.annotation.Ok;
import java.util.List;
/**
* @ClassName ActivityCultureAuditActivityController
* @Description TODO
@@ -50,7 +53,7 @@ public class ActivityCultureAuditActivityController {
@At
@SaCheckPermission(value = {"activity.culture.auditActivity.union", "activity.culture.auditActivity.club"}, mode = SaMode.OR)
public Result pageData(PageForm page, Boolean state,
public Result pageData(PageForm page, boolean approval,
String year,
String name,
String unionId,
@@ -62,19 +65,46 @@ public class ActivityCultureAuditActivityController {
tissue.*,
uni.name unionname ,
club.clubName,
abs.`name` projectTypeName
abs.`name` projectTypeName,
ins.id AS instanceId,
ins.businessNo,
ins.state instanceState,
ins.variable instanceVariable,
ins.processDefineId instanceProcessDefineId,
t.id taskId,
t.taskName AS taskKey,
t.displayName taskName,
t.taskType,
t.performType taskPerformType,
t.taskState,
t.finishTime,
t.taskParentId,
t.variable taskVariable,
IFNULL(GROUP_CONCAT(DISTINCT nt.displayName),'结束') curTaskName,
IF(rt.id IS NOT NULL, 1, 0) AS canRevoke
FROM
activity_tissue tissue
wf_process_task t
LEFT JOIN wf_process_instance ins ON ins.id = t.processInstanceId
LEFT JOIN activity_tissue tissue ON tissue.id = ins.businessNo
LEFT JOIN sys_union uni ON uni.id = tissue.unionId
LEFT JOIN sys_club club ON club.id = tissue.clubId
LEFT JOIN activity_basic_settings abs ON abs.`code`=tissue.projectTypeCode
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
LEFT JOIN wf_process_task nt ON nt.processInstanceId = ins.id AND nt.taskState = 10
LEFT JOIN wf_process_task rt ON rt.processInstanceId = ins.id AND rt.taskParentId = t.id AND rt.taskState = 10
$condition
""");
cnd.and("t.taskName", "=", "76a03838-caa4-4561-ba0f-0da0d3a17c37");
cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId()));
cnd.andEX("YEAR(tissue.startTime)", "=", year);
cnd.andEX("tissue.unionId", "=", unionId);
cnd.andEX("tissue.activity_type", "=", activity_type);
cnd.andEX("tissue.state", state ? ">" : "=", 1);
if (approval) {
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(), ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
} else {
cnd.and("t.taskState", "=", ProcessTaskStateEnum.DOING.getCode());
}
if (Strings.isNotBlank(name)) {
cnd.where().andLike("tissue.name", name);
@@ -86,7 +116,7 @@ public class ActivityCultureAuditActivityController {
} else {
cnd.desc("tissue.startTime");
}
cnd.groupBy("t.id");
sql.setCondition(cnd);
return Result.success(activityCultureService.listPageMap(page.getPageNumber(), page.getPageSize(), sql));
}
@@ -133,17 +133,38 @@ public class ActivityCultureUserStatisticsController {
@SaCheckPermission(value = {"activity.culture.userStatistics.school", "activity.culture.userStatistics.union", "activity.culture.userStatistics.club"}, mode = SaMode.OR)
public Result getActivityByYearOrType(Integer year,
@Valid Integer activity_type) {
Cnd cnd = Cnd.where("activity_type", "=", activity_type);
cnd.and("projectTypeCode", "!=", 50004);
Sql sql = Sqls.create("""
SELECT
tissue.*,
uni.name unionname ,
club.clubName,
abs.`name` projectTypeName,
atp.applyUserId,
ins.state instanceState,
CASE WHEN atp.id IS NOT NULL THEN 1 ELSE 0 END AS isEnrolled
FROM
activity_tissue tissue
LEFT JOIN sys_union uni ON uni.id = tissue.unionId
LEFT JOIN sys_club club ON club.id = tissue.clubId
LEFT JOIN activity_basic_settings abs ON abs.`code`=tissue.projectTypeCode
LEFT JOIN activity_tissue_person atp on atp.tissueId=tissue.id AND (atp.applyUserId = @userId OR atp.userId = @userId)
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = tissue.id AND ins.state = 20
$condition
""").setParam("userId", SecurityUtil.getUserId());
Cnd cnd =Cnd.where("tissue.activity_type", "=", activity_type);
cnd.and("tissue.projectTypeCode", "!=", 50004);
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
cnd.and("signUpMethod", "in", List.of(1, 2, 3));
cnd.and("tissue.signUpMethod", "in", List.of(1, 2, 3));
if (activity_type == 40002) {
cnd.and("unionId", "=", SecurityUtil.getUnionId());
cnd.and("tissue.unionId", "=", SecurityUtil.getUnionId());
}
}
cnd.andEX("YEAR(startTime)", "=", year).desc("startTime");
List<ActivityTissue> list = activityCultureApplyUserService.dao().query(ActivityTissue.class, cnd);
return Result.success(list);
// 只查询流程实例状态为20的数据(已完成状态)
cnd.and("ins.state", "=", 20);
cnd.andEX("YEAR(tissue.startTime)", "=", year).desc("tissue.startTime");
sql.setCondition(cnd);
return Result.success(activityCultureApplyUserService.list(sql));
}
@@ -49,6 +49,7 @@ public class ActivityCultureApplyUserServiceImpl extends BaseServiceImpl<Activit
club.clubName,
abs.`name` projectTypeName,
atp.applyUserId,
ins.state instanceState,
CASE WHEN atp.id IS NOT NULL THEN 1 ELSE 0 END AS isEnrolled
FROM
activity_tissue tissue
@@ -56,16 +57,19 @@ public class ActivityCultureApplyUserServiceImpl extends BaseServiceImpl<Activit
LEFT JOIN sys_club club ON club.id = tissue.clubId
LEFT JOIN activity_basic_settings abs ON abs.`code`=tissue.projectTypeCode
LEFT JOIN activity_tissue_person atp on atp.tissueId=tissue.id AND (atp.applyUserId = @userId OR atp.userId = @userId)
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = tissue.id
$condition
""").setParam("userId", SecurityUtil.getUserId());
if (Strings.isNotBlank(name)) {
cnd.where().andLike("tissue.name", name);
}
// 只查询流程实例状态为20的数据(已完成状态)
cnd.and("ins.state", "=", 20);
cnd.andEX("YEAR(tissue.startTime)", "=", year);
cnd.andEX("tissue.isUnseal", "=", true);
cnd.andEX("tissue.activity_type", "=", activity_type);
cnd.andEX("tissue.state", "=", 3);
cnd.and("tissue.isEnrollSystem", "=", 1);
cnd.andEX("tissue.projectTypeCode", "!=", 50004);
cnd.andEX("tissue.signUpMethod", "in", List.of(1, 2, 3));
@@ -58,7 +58,7 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl<ActivityTissue>
gh.id,
gh.name unionname,
( SELECT count( 1 ) FROM `user` WHERE id IN ( SELECT userid FROM activity_user_scope WHERE groupId = @activityScopeGroupId ) AND unionId = gh.id ) as teacherCount
FROM
sys_union gh
LEFT JOIN `vw_user` u ON u.unionid = gh.id
@@ -85,12 +85,31 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl<ActivityTissue>
tissue.*,
uni.name unionname ,
club.clubName,
abs.`name` projectTypeName
abs.`name` projectTypeName,
ins.id AS instanceId,
ins.businessNo,
ins.state instanceState,
ins.variable instanceVariable,
ins.processDefineId instanceProcessDefineId,
t.id taskId,
t.taskName AS taskKey,
t.displayName taskName,
t.taskType,
t.performType taskPerformType,
t.taskState,
t.finishTime,
t.taskParentId,
t.variable taskVariable,
IF((SELECT taskName FROM wf_process_task tt WHERE tt.id = t.taskParentId) = 'startTask', 1, 0) canRevoke,
(select MAX(id) from wf_process_task where processInstanceId = ins.id and taskName = 'startTask') AS startTaskId
FROM
activity_tissue tissue
LEFT JOIN sys_union uni ON uni.id = tissue.unionId
LEFT JOIN sys_club club ON club.id = tissue.clubId
LEFT JOIN activity_basic_settings abs ON abs.`code`=tissue.projectTypeCode
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = tissue.id
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
$condition
""");
@@ -120,7 +139,7 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl<ActivityTissue>
} else {
cnd.desc("tissue.startTime");
}
//cnd.groupBy("tissue.id");
sql.setCondition(cnd);
return this.listPageMap(page.getPageNumber(), page.getPageSize(), sql);
}
@@ -179,7 +179,7 @@ public class ActivityWorksCollectionReadController {
response.setHeader("Content-Disposition", "attachment;filename=" + URLUtil.encode("作品征集数据.zip"));
Cnd cnd = Cnd.NEW();
cnd.andEX("up.activityId", "=", pageForm.getActivityId());
cnd.andEX("activityId", "=", pageForm.getActivityId());
cnd.andEX("typeName", "=", pageForm.getTypeName());
if (StrUtil.isAllNotBlank(pageForm.getSearchKeyword())) {
SqlExpressionGroup seg = new SqlExpressionGroup();
@@ -1,6 +1,7 @@
package com.budwk.app.zhgh.activity.workscollection.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.date.DateUtil;
import com.budwk.app.base.page.Pagination;
import com.budwk.app.base.param.PageForm;
import com.budwk.app.base.result.Result;
@@ -26,6 +27,7 @@ import org.nutz.mvc.annotation.Ok;
import org.nutz.mvc.annotation.Param;
import javax.validation.Valid;
import java.util.Date;
import java.util.List;
/**
@@ -56,7 +58,7 @@ public class ActivityWorksCollectionUploadController {
*/
@At
@SaCheckPermission("activity.workscollection.upload")
public Result pageData(@Valid PageForm pageForm, String activityId, String subjectId, String worksId) {
public Result pageData(@Valid PageForm pageForm, String activityId, String subjectId, String worksId, Long year) {
Sql sql = Sqls.create("""
select
up.*,
@@ -72,6 +74,7 @@ public class ActivityWorksCollectionUploadController {
""");
Cnd cnd = Cnd.NEW();
cnd.and("userId", "=", SecurityUtil.getUserId());
cnd.andEX("YEAR(co.startDateTime)","=",year);
cnd.andEX("up.activityId", "=", activityId);
cnd.andEX("up.subjectId", "=", subjectId);
cnd.andEX("up.worksId", "=", worksId);
@@ -9,7 +9,9 @@ import org.nutz.dao.interceptor.annotation.PrevInsert;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.util.Date;
import java.util.List;
@Data
@@ -97,4 +99,6 @@ public class Activity_works_collection_upload extends BaseModel {
@NotEmpty(message = "附件不能为空")
private List<JSONObject> files;
}
@@ -75,6 +75,7 @@ public class ClubUserJoinApplyController {
Sql sql = Sqls.create("""
SELECT
cua.*,
club.clubName,
u.loginname AS loginName,
u.username AS userName,
u.sex,
@@ -85,6 +86,7 @@ public class ClubUserJoinApplyController {
u.academicDegree
FROM
club_user_apply cua
LEFT JOIN sys_club club ON club.id = cua.clubId
LEFT JOIN vw_user u ON u.id = cua.userId
WHERE cua.id = @id
""").setParam("id", id);
@@ -149,6 +151,7 @@ public class ClubUserJoinApplyController {
Dict dict = Dict.create();
dict.set(FlowConst.PROCESS_TASK_ID_KEY, taskId);
dict.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.RE_APPLY.getCode());
dict.set("clubId", clubUserApply.getClubId());
flowCommonService.executeTask(dict);
return Result.success();
}
@@ -37,7 +37,7 @@ import org.nutz.mvc.annotation.Param;
@At("/platform/unionReimburse/mine")
@Api("工会报销我的")
@Ok("json:full")
public class UnionReimburseMineController {
public class UnionReimburseMineController {
@Inject
private UnionReimburseService unionReimburseService;
@@ -21,7 +21,7 @@ public class H5ChildManageController {
@At("")
@Ok("beetl:/platform/zhghh5/staffmanage/childmanage/")
@SaCheckPermission("childManage.h5")
@SaCheckPermission("h5.childManage")
public void index() {
}
}