diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressMaterialsManageController.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressMaterialsManageController.java new file mode 100644 index 00000000..66e3c453 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressMaterialsManageController.java @@ -0,0 +1,170 @@ +package com.budwk.app.zhgh.democratic.congress.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.zhgh.democratic.congress.service.CongressManageService; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.aop.Aop; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.random.R; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +import java.util.Date; +@IocBean +@At("/platform/congress/materials/manage") +@Ok("json:full") +public class CongressMaterialsManageController { + + @Inject + private Dao dao; + + @Inject + private CongressManageService congressManageService; + + @At("/index") + @Ok("beetl:/platform/zhgh/democratic/congress/materials/manage/index.html") + @SaCheckPermission("congress.materials.manage") + public void index() { + } + @At("/sessions") + @SaCheckPermission("congress.materials.manage") + public Result sessions() { + return Result.success(congressManageService.sessionOptions()); + } + + @At("/types") + @SaCheckPermission("congress.materials.manage") + public Result types() { + return Result.success(congressManageService.typeOptions()); + } + + @At("/pageData") + @SaCheckPermission("congress.materials.manage") + public Result materialsPageData(PageForm pageForm, + @Param("sessionId") String sessionId, + @Param("typeId") String typeId, + @Param("name") String name) { + StringBuilder text = new StringBuilder(""" + SELECT + m.id, + m.name, + m.session_id AS sessionId, + m.time_id AS timeId, + m.type_id AS typeId, + m.sort_no AS sortNo, + m.file_name AS fileName, + m.file_url AS fileUrl, + m.file_type AS fileType, + m.file_size AS fileSize, + m.create_time AS createTime, + mt.name AS typeName, + tcs.fullName AS sessionName + FROM congress_materials m + LEFT JOIN congress_materials_type mt ON mt.id = m.type_id + LEFT JOIN teacher_congress_session tcs ON tcs.id = m.session_id + WHERE COALESCE(m.deleted, 0) = 0 + """); + NutMap params = NutMap.NEW(); + congressManageService.appendEquals(text, params, "m.session_id", "sessionId", sessionId); + congressManageService.appendEquals(text, params, "m.type_id", "typeId", typeId); + if (StrUtil.isNotBlank(name)) { + text.append(" AND m.name LIKE @name"); + params.addv("name", "%" + name.trim() + "%"); + } + text.append(" ORDER BY m.sort_no, m.create_time DESC, m.id DESC"); + return congressManageService.page(pageForm, text.toString(), params); + } + + @At("/get") + @SaCheckPermission("congress.materials.manage") + public Result materialsGet(@Param("id") String id) { + return Result.success(congressManageService.fetchMap(""" + SELECT + id, + name, + session_id AS sessionId, + time_id AS timeId, + type_id AS typeId, + sort_no AS sortNo, + file_name AS fileName, + file_url AS fileUrl, + file_type AS fileType, + file_size AS fileSize + FROM congress_materials + WHERE id = @id + AND COALESCE(deleted, 0) = 0 + """, NutMap.NEW().addv("id", id))); + } + + @At("/save") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("congress.materials.manage") + @SLog(tag = "职代会-会议资料", msg = "保存会议资料") + public Result materialsSave(@Param("id") String id, + @Param("name") String name, + @Param("sessionId") String sessionId, + @Param("typeId") String typeId, + @Param("sortNo") Integer sortNo, + @Param("fileName") String fileName, + @Param("fileUrl") String fileUrl, + @Param("fileType") String fileType, + @Param("fileSize") String fileSize) { + if (StrUtil.hasBlank(name, sessionId, typeId, fileUrl)) { + return Result.error("届次、资料名称、资料类型和文件不能为空"); + } + Date now = new Date(); + Chain chain = Chain.make("name", name.trim()) + .add("session_id", sessionId) + .add("time_id", null) + .add("type_id", typeId) + .add("sort_no", sortNo == null ? 0 : sortNo) + .add("file_name", StrUtil.blankToDefault(fileName, name.trim())) + .add("file_url", fileUrl) + .add("file_type", StrUtil.blankToDefault(fileType, null)) + .add("file_size", StrUtil.blankToDefault(fileSize, null)) + .add("update_time", now); + if (StrUtil.isBlank(id)) { + String newId = R.UU32(); + chain.add("id", newId) + .add("create_time", now) + .add("deleted", 0); + dao.insert("congress_materials", chain); + return Result.success(newId); + } + dao.update("congress_materials", chain, + Cnd.where("id", "=", id).and("deleted", "=", 0)); + return Result.success(id); + } + + @At("/delete") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("congress.materials.manage") + @SLog(tag = "职代会-会议资料", msg = "删除会议资料") + public Result materialsDelete(@Param("id") String id) { + if (congressManageService.count(""" + SELECT COUNT(1) + FROM congress_voting_issue + WHERE materials_id = @id + AND COALESCE(deleted, 0) = 0 + """, NutMap.NEW().addv("id", id)) > 0) { + return Result.error("该资料已关联投票议题,不能删除"); + } + congressManageService.softDelete("congress_materials", id); + return Result.success(); + } + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressMaterialsTypeController.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressMaterialsTypeController.java new file mode 100644 index 00000000..467b508b --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressMaterialsTypeController.java @@ -0,0 +1,132 @@ +package com.budwk.app.zhgh.democratic.congress.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.zhgh.democratic.congress.service.CongressManageService; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.aop.Aop; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.random.R; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +import java.util.Date; +@IocBean +@At("/platform/congress/materials/type") +@Ok("json:full") +public class CongressMaterialsTypeController { + + @Inject + private Dao dao; + + @Inject + private CongressManageService congressManageService; + + @At("/index") + @Ok("beetl:/platform/zhgh/democratic/congress/materials/type/index.html") + @SaCheckPermission("congress.materials.type") + public void index() { + } + @At("/pageData") + @SaCheckPermission("congress.materials.type") + public Result typePageData(PageForm pageForm, + @Param("name") String name, + @Param("isVote") String isVote) { + StringBuilder text = new StringBuilder(""" + SELECT id, name, is_vote AS isVote, sort_no AS sortNo, create_time AS createTime + FROM congress_materials_type + WHERE COALESCE(deleted, 0) = 0 + """); + NutMap params = NutMap.NEW(); + if (StrUtil.isNotBlank(name)) { + text.append(" AND name LIKE @name"); + params.addv("name", "%" + name.trim() + "%"); + } + if (StrUtil.isNotBlank(isVote)) { + text.append(" AND is_vote = @isVote"); + params.addv("isVote", "1".equals(isVote) || "true".equalsIgnoreCase(isVote) ? 1 : 0); + } + text.append(" ORDER BY sort_no, create_time, id"); + return congressManageService.page(pageForm, text.toString(), params); + } + + @At("/get") + @SaCheckPermission("congress.materials.type") + public Result typeGet(@Param("id") String id) { + return Result.success(congressManageService.fetchMap(""" + SELECT id, name, is_vote AS isVote, sort_no AS sortNo + FROM congress_materials_type + WHERE id = @id + AND COALESCE(deleted, 0) = 0 + """, NutMap.NEW().addv("id", id))); + } + + @At("/save") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("congress.materials.type") + @SLog(tag = "职代会-资料类型", msg = "保存资料类型") + public Result typeSave(@Param("id") String id, + @Param("name") String name, + @Param("isVote") boolean isVote, + @Param("sortNo") Integer sortNo) { + if (StrUtil.isBlank(name)) { + return Result.error("资料类型不能为空"); + } + int repeat = congressManageService.count(""" + SELECT COUNT(1) + FROM congress_materials_type + WHERE name = @name + AND COALESCE(deleted, 0) = 0 + AND (@id IS NULL OR id <> @id) + """, NutMap.NEW().addv("name", name.trim()).addv("id", StrUtil.blankToDefault(id, null))); + if (repeat > 0) { + return Result.error("资料类型已存在"); + } + Date now = new Date(); + Chain chain = Chain.make("name", name.trim()) + .add("is_vote", isVote ? 1 : 0) + .add("sort_no", sortNo == null ? 0 : sortNo) + .add("update_time", now); + if (StrUtil.isBlank(id)) { + chain.add("id", R.UU32()) + .add("create_time", now) + .add("deleted", 0); + dao.insert("congress_materials_type", chain); + } else { + dao.update("congress_materials_type", chain, + Cnd.where("id", "=", id).and("deleted", "=", 0)); + } + return Result.success(); + } + + @At("/delete") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("congress.materials.type") + @SLog(tag = "职代会-资料类型", msg = "删除资料类型") + public Result typeDelete(@Param("id") String id) { + if (congressManageService.count(""" + SELECT COUNT(1) + FROM congress_materials + WHERE type_id = @id + AND COALESCE(deleted, 0) = 0 + """, NutMap.NEW().addv("id", id)) > 0) { + return Result.error("该类型下已有资料,不能删除"); + } + congressManageService.softDelete("congress_materials_type", id); + return Result.success(); + } + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressRecordController.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressRecordController.java new file mode 100644 index 00000000..34ee0f8d --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressRecordController.java @@ -0,0 +1,92 @@ +package com.budwk.app.zhgh.democratic.congress.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.zhgh.democratic.congress.service.CongressManageService; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.aop.Aop; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.random.R; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +import java.util.Date; +@IocBean +@At("/platform/congress/record") +@Ok("json:full") +public class CongressRecordController { + + @Inject + private Dao dao; + + @Inject + private CongressManageService congressManageService; + + @At("/index") + @Ok("beetl:/platform/zhgh/democratic/congress/record/index.html") + @SaCheckPermission("congress.signIn.record") + public void index() { + } + @At("/sessions") + @SaCheckPermission("congress.signIn.record") + public Result sessions() { + return Result.success(congressManageService.sessionOptions()); + } + + @At("/meetings") + @SaCheckPermission("congress.signIn.record") + public Result meetings(@Param("sessionId") String sessionId) { + return Result.success(congressManageService.meetingOptions(sessionId)); + } + + @At("/pageData") + @SaCheckPermission("congress.signIn.record") + public Result recordPageData(PageForm pageForm, + @Param("sessionId") String sessionId, + @Param("meetingId") String meetingId, + @Param("keyword") String keyword) { + StringBuilder text = new StringBuilder(""" + SELECT + si.id, + si.emplid, + si.name, + si.create_time AS signInTime, + si.meeting_id AS meetingId, + si.time_id AS timeId, + m.meeting_name AS meetingName, + m.sign_in_start_time AS signInStartTime, + m.sign_in_end_time AS signInEndTime, + tcs.fullName AS sessionName, + COALESCE(r.delegation_name, d.name) AS delegationName + FROM congress_sign_in si + LEFT JOIN congress_sign_in_meeting m ON m.id = si.meeting_id + LEFT JOIN teacher_congress_session tcs ON tcs.id = si.session_id AND tcs.delFlag = 0 + LEFT JOIN congress_rep r ON r.id = si.rep_id + LEFT JOIN congress_delegation d ON d.id = si.delegation_id + WHERE COALESCE(si.deleted, 0) = 0 + """); + NutMap params = NutMap.NEW(); + congressManageService.appendEquals(text, params, "si.session_id", "sessionId", sessionId); + congressManageService.appendEquals(text, params, "si.meeting_id", "meetingId", meetingId); + if (StrUtil.isNotBlank(keyword)) { + text.append(" AND (si.emplid LIKE @keyword OR si.name LIKE @keyword)"); + params.addv("keyword", "%" + keyword.trim() + "%"); + } + text.append(" ORDER BY si.create_time DESC, si.id DESC"); + return congressManageService.page(pageForm, text.toString(), params); + } + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressSignInController.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressSignInController.java new file mode 100644 index 00000000..c1c6fa64 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressSignInController.java @@ -0,0 +1,155 @@ +package com.budwk.app.zhgh.democratic.congress.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.annotation.SaMode; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.zhgh.democratic.congress.service.CongressManageService; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.aop.Aop; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.random.R; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +import java.util.Date; +@IocBean +@At("/platform/congress/signIn") +@Ok("json:full") +public class CongressSignInController { + + @Inject + private Dao dao; + + @Inject + private CongressManageService congressManageService; + + @At("/index") + @Ok("beetl:/platform/zhgh/democratic/congress/signIn/index.html") + @SaCheckPermission("congress.signIn.manage") + public void index() { + } + @At("/sessions") + @SaCheckPermission("congress.signIn.manage") + public Result sessions() { + return Result.success(congressManageService.sessionOptions()); + } + + @At("/pageData") + @SaCheckPermission("congress.signIn.manage") + public Result signInPageData(PageForm pageForm, @Param("sessionId") String sessionId) { + StringBuilder text = new StringBuilder(""" + SELECT + m.id, + m.meeting_name AS meetingName, + m.sign_in_start_time AS signInStartTime, + m.sign_in_end_time AS signInEndTime, + m.session_id AS sessionId, + m.time_id AS timeId, + m.remark, + tcs.fullName AS sessionName, + ( + SELECT COUNT(1) + FROM congress_sign_in si + WHERE si.meeting_id = m.id + AND COALESCE(si.deleted, 0) = 0 + ) AS signInCount + FROM congress_sign_in_meeting m + LEFT JOIN teacher_congress_session tcs ON tcs.id = m.session_id AND tcs.delFlag = 0 + WHERE COALESCE(m.deleted, 0) = 0 + """); + NutMap params = NutMap.NEW(); + congressManageService.appendEquals(text, params, "m.session_id", "sessionId", sessionId); + text.append(" ORDER BY m.sign_in_start_time DESC, m.create_time DESC, m.id DESC"); + return congressManageService.page(pageForm, text.toString(), params); + } + + @At("/get") + @SaCheckPermission("congress.signIn.manage") + public Result signInGet(@Param("id") String id) { + return Result.success(congressManageService.fetchMap(""" + SELECT + id, + meeting_name AS meetingName, + sign_in_start_time AS signInStartTime, + sign_in_end_time AS signInEndTime, + session_id AS sessionId, + time_id AS timeId, + remark + FROM congress_sign_in_meeting + WHERE id = @id + AND COALESCE(deleted, 0) = 0 + """, NutMap.NEW().addv("id", id))); + } + + @At("/save") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("congress.signIn.manage") + @SLog(tag = "职代会-会议签到", msg = "保存会议签到配置") + public Result signInSave(@Param("id") String id, + @Param("meetingName") String meetingName, + @Param("sessionId") String sessionId, + @Param("signInStartTime") String signInStartTime, + @Param("signInEndTime") String signInEndTime, + @Param("remark") String remark) { + if (StrUtil.hasBlank(meetingName, sessionId, signInStartTime, signInEndTime)) { + return Result.error("届次、会议名称和签到时间不能为空"); + } + Date startTime = congressManageService.parseDate(signInStartTime); + Date endTime = congressManageService.parseDate(signInEndTime); + if (startTime == null || endTime == null) { + return Result.error("签到时间格式不正确"); + } + if (!endTime.after(startTime)) { + return Result.error("签到结束时间必须晚于开始时间"); + } + Date now = new Date(); + Chain chain = Chain.make("meeting_name", meetingName.trim()) + .add("session_id", sessionId) + .add("time_id", null) + .add("sign_in_start_time", startTime) + .add("sign_in_end_time", endTime) + .add("remark", StrUtil.blankToDefault(remark, null)) + .add("update_time", now); + if (StrUtil.isBlank(id)) { + chain.add("id", R.UU32()) + .add("sign_in_count", 0) + .add("create_time", now) + .add("deleted", 0); + dao.insert("congress_sign_in_meeting", chain); + } else { + dao.update("congress_sign_in_meeting", chain, + Cnd.where("id", "=", id).and("deleted", "=", 0)); + } + return Result.success(); + } + + @At("/delete") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("congress.signIn.manage") + @SLog(tag = "职代会-会议签到", msg = "删除会议签到配置") + public Result signInDelete(@Param("id") String id) { + if (congressManageService.count(""" + SELECT COUNT(1) + FROM congress_sign_in + WHERE meeting_id = @id + AND COALESCE(deleted, 0) = 0 + """, NutMap.NEW().addv("id", id)) > 0) { + return Result.error("该会议已有签到记录,不能删除"); + } + congressManageService.softDelete("congress_sign_in_meeting", id); + return Result.success(); + } + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressVotingIssueController.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressVotingIssueController.java new file mode 100644 index 00000000..75939a37 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressVotingIssueController.java @@ -0,0 +1,217 @@ +package com.budwk.app.zhgh.democratic.congress.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.zhgh.democratic.congress.service.CongressManageService; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.aop.Aop; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.random.R; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +import java.util.Date; +@IocBean +@At("/platform/congress/materials/issue") +@Ok("json:full") +public class CongressVotingIssueController { + + @Inject + private Dao dao; + + @Inject + private CongressManageService congressManageService; + + @At("/index") + @Ok("beetl:/platform/zhgh/democratic/congress/materials/issue/index.html") + @SaCheckPermission("congress.vote.issue") + public void index() { + } + @At("/sessions") + @SaCheckPermission("congress.vote.issue") + public Result sessions() { + return Result.success(congressManageService.sessionOptions()); + } + + @At("/types") + @SaCheckPermission("congress.vote.issue") + public Result types() { + return Result.success(congressManageService.typeOptions()); + } + + @At("/materials") + @SaCheckPermission("congress.vote.issue") + public Result materials(@Param("sessionId") String sessionId, @Param("typeId") String typeId) { + return Result.success(congressManageService.materialOptions(sessionId, typeId)); + } + + @At("/pageData") + @SaCheckPermission("congress.vote.issue") + public Result issuePageData(PageForm pageForm, + @Param("sessionId") String sessionId, + @Param("name") String name) { + StringBuilder text = new StringBuilder(""" + SELECT + i.id, + i.name, + i.description, + i.session_id AS sessionId, + i.time_id AS timeId, + i.type_id AS typeId, + i.materials_id AS materialsId, + i.voting_start_time AS votingStartTime, + i.voting_end_time AS votingEndTime, + mt.name AS typeName, + m.name AS materialsName, + m.file_name AS fileName, + m.file_url AS fileUrl, + tcs.fullName AS sessionName, + ( + SELECT COUNT(1) + FROM congress_voting_record r + WHERE r.issue_id = i.id + AND COALESCE(r.deleted, 0) = 0 + ) AS voteCount + FROM congress_voting_issue i + LEFT JOIN congress_materials_type mt ON mt.id = i.type_id + LEFT JOIN congress_materials m ON m.id = i.materials_id + LEFT JOIN teacher_congress_session tcs ON tcs.id = i.session_id AND tcs.delFlag = 0 + WHERE COALESCE(i.deleted, 0) = 0 + """); + NutMap params = NutMap.NEW(); + congressManageService.appendEquals(text, params, "i.session_id", "sessionId", sessionId); + if (StrUtil.isNotBlank(name)) { + text.append(" AND i.name LIKE @name"); + params.addv("name", "%" + name.trim() + "%"); + } + text.append(" ORDER BY i.create_time DESC, i.id DESC"); + return congressManageService.page(pageForm, text.toString(), params); + } + + @At("/get") + @SaCheckPermission("congress.vote.issue") + public Result issueGet(@Param("id") String id) { + return Result.success(congressManageService.fetchMap(""" + SELECT + id, + name, + description, + content, + session_id AS sessionId, + time_id AS timeId, + type_id AS typeId, + materials_id AS materialsId, + voting_type AS votingType, + voting_start_time AS votingStartTime, + voting_end_time AS votingEndTime, + voting_content AS votingContent, + voting_content_item_header AS votingContentItemHeader, + voting_content_option_header AS votingContentOptionHeader + FROM congress_voting_issue + WHERE id = @id + AND COALESCE(deleted, 0) = 0 + """, NutMap.NEW().addv("id", id))); + } + + @At("/save") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("congress.vote.issue") + @SLog(tag = "职代会-投票管理", msg = "保存投票议题") + public Result issueSave(@Param("id") String id, + @Param("name") String name, + @Param("description") String description, + @Param("sessionId") String sessionId, + @Param("typeId") String typeId, + @Param("materialsId") String materialsId, + @Param("votingStartTime") String votingStartTime, + @Param("votingEndTime") String votingEndTime, + @Param("votingContent") String votingContent, + @Param("votingContentItemHeader") String votingContentItemHeader, + @Param("votingContentOptionHeader") String votingContentOptionHeader) { + if (StrUtil.hasBlank(name, sessionId, typeId, materialsId, + votingStartTime, votingEndTime, votingContent)) { + return Result.error("届次、会议名称、投票类型、资料、投票时间和投票内容不能为空"); + } + Date startTime = congressManageService.parseDate(votingStartTime); + Date endTime = congressManageService.parseDate(votingEndTime); + if (startTime == null || endTime == null || !endTime.after(startTime)) { + return Result.error("投票结束时间必须晚于开始时间"); + } + if (!JSONUtil.isTypeJSONArray(votingContent) || JSONUtil.parseArray(votingContent).isEmpty()) { + return Result.error("请至少配置一个投票事项"); + } + NutMap session = congressManageService.fetchMap(""" + SELECT id, fullName AS `sessionName` + FROM teacher_congress_session + WHERE id = @id + AND delFlag = 0 + """, NutMap.NEW().addv("id", sessionId)); + if (session == null) { + return Result.error("所选届次不存在"); + } + Date now = new Date(); + Chain chain = Chain.make("name", name.trim()) + .add("description", StrUtil.blankToDefault(description, null)) + .add("session_id", sessionId) + .add("session_name", session.getString("sessionName")) + .add("time_id", null) + .add("time_name", null) + .add("type_id", typeId) + .add("materials_id", materialsId) + .add("voting_type", 1) + .add("voting_start_time", startTime) + .add("voting_end_time", endTime) + .add("voting_content", votingContent) + .add("voting_content_item_header", StrUtil.blankToDefault(votingContentItemHeader, "表决事项")) + .add("voting_content_option_header", StrUtil.blankToDefault(votingContentOptionHeader, "表决内容")) + .add("update_time", now); + if (StrUtil.isBlank(id)) { + chain.add("id", R.UU32()) + .add("create_time", now) + .add("deleted", 0); + dao.insert("congress_voting_issue", chain); + } else { + if (congressManageService.count(""" + SELECT COUNT(1) + FROM congress_voting_record + WHERE issue_id = @id + AND COALESCE(deleted, 0) = 0 + """, NutMap.NEW().addv("id", id)) > 0) { + return Result.error("该议题已有投票记录,不能修改"); + } + dao.update("congress_voting_issue", chain, + Cnd.where("id", "=", id).and("deleted", "=", 0)); + } + return Result.success(); + } + + @At("/delete") + @Aop(TransAop.READ_COMMITTED) + @SaCheckPermission("congress.vote.issue") + @SLog(tag = "职代会-投票管理", msg = "删除投票议题") + public Result issueDelete(@Param("id") String id) { + if (congressManageService.count(""" + SELECT COUNT(1) + FROM congress_voting_record + WHERE issue_id = @id + AND COALESCE(deleted, 0) = 0 + """, NutMap.NEW().addv("id", id)) > 0) { + return Result.error("该议题已有投票记录,不能删除"); + } + congressManageService.softDelete("congress_voting_issue", id); + return Result.success(); + } + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressVotingStatisticalController.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressVotingStatisticalController.java new file mode 100644 index 00000000..b7c43c89 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/controller/CongressVotingStatisticalController.java @@ -0,0 +1,134 @@ +package com.budwk.app.zhgh.democratic.congress.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.util.StrUtil; +import cn.hutool.json.JSONUtil; +import com.budwk.app.base.annotation.SLog; +import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.zhgh.democratic.congress.service.CongressManageService; +import org.nutz.aop.interceptor.ioc.TransAop; +import org.nutz.dao.Chain; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.aop.Aop; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.random.R; +import org.nutz.lang.util.NutMap; +import org.nutz.mvc.annotation.At; +import org.nutz.mvc.annotation.Ok; +import org.nutz.mvc.annotation.Param; + +import java.util.Date; +@IocBean +@At("/platform/congress/materials/statistical") +@Ok("json:full") +public class CongressVotingStatisticalController { + + @Inject + private Dao dao; + + @Inject + private CongressManageService congressManageService; + + @At("/index") + @Ok("beetl:/platform/zhgh/democratic/congress/materials/statistical/index.html") + @SaCheckPermission("congress.vote.statistical") + public void index() { + } + @At("/sessions") + @SaCheckPermission("congress.vote.statistical") + public Result sessions() { + return Result.success(congressManageService.sessionOptions()); + } + + @At("/pageData") + @SaCheckPermission("congress.vote.statistical") + public Result statisticalPageData(PageForm pageForm, + @Param("sessionId") String sessionId, + @Param("name") String name) { + StringBuilder text = new StringBuilder(""" + SELECT + i.id, + i.name, + i.description, + i.session_id AS sessionId, + i.time_id AS timeId, + i.type_id AS typeId, + i.materials_id AS materialsId, + i.voting_start_time AS votingStartTime, + i.voting_end_time AS votingEndTime, + mt.name AS typeName, + m.name AS materialsName, + m.file_name AS fileName, + m.file_url AS fileUrl, + tcs.fullName AS sessionName, + ( + SELECT COUNT(1) + FROM congress_voting_record r + WHERE r.issue_id = i.id + AND COALESCE(r.deleted, 0) = 0 + ) AS voteCount + FROM congress_voting_issue i + LEFT JOIN congress_materials_type mt ON mt.id = i.type_id + LEFT JOIN congress_materials m ON m.id = i.materials_id + LEFT JOIN teacher_congress_session tcs ON tcs.id = i.session_id AND tcs.delFlag = 0 + WHERE COALESCE(i.deleted, 0) = 0 + """); + NutMap params = NutMap.NEW(); + congressManageService.appendEquals(text, params, "i.session_id", "sessionId", sessionId); + if (StrUtil.isNotBlank(name)) { + text.append(" AND i.name LIKE @name"); + params.addv("name", "%" + name.trim() + "%"); + } + text.append(" ORDER BY i.create_time DESC, i.id DESC"); + return congressManageService.page(pageForm, text.toString(), params); + } + + @At("/records") + @SaCheckPermission("congress.vote.statistical") + public Result voteRecords(@Param("issueId") String issueId) { + Sql sql = Sqls.create(""" + SELECT + r.id, + r.emplid, + r.name, + r.vote_result AS voteResult, + r.create_time AS createTime, + COALESCE(rep.union_id, du.union_id) AS unionId, + du.union_name AS unionName, + COALESCE(rep.delegation_name, d.name) AS delegationName + FROM congress_voting_record r + LEFT JOIN congress_rep rep ON rep.id = r.rep_id + LEFT JOIN congress_delegation d ON d.id = r.delegation_id + LEFT JOIN ( + SELECT delegation_id, time_id, union_id, union_name + FROM ( + SELECT + delegation_id, + time_id, + union_id, + union_name, + ROW_NUMBER() OVER ( + PARTITION BY delegation_id, time_id + ORDER BY create_time DESC, id DESC + ) AS row_num + FROM congress_delegation_union + WHERE COALESCE(deleted, 0) = 0 + ) latest_union + WHERE row_num = 1 + ) du ON du.delegation_id = r.delegation_id AND du.time_id = r.time_id + WHERE r.issue_id = @issueId + AND COALESCE(r.deleted, 0) = 0 + ORDER BY r.create_time DESC, r.id DESC + """); + sql.setParam("issueId", issueId); + sql.setCallback(Sqls.callback.maps()); + dao.execute(sql); + return Result.success(sql.getList(NutMap.class)); + } + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressBaseModel.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressBaseModel.java new file mode 100644 index 00000000..ebfd068c --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressBaseModel.java @@ -0,0 +1,48 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import org.nutz.dao.entity.annotation.ColDefine; +import org.nutz.dao.entity.annotation.ColType; +import org.nutz.dao.entity.annotation.Column; +import org.nutz.dao.entity.annotation.Comment; +import org.nutz.dao.entity.annotation.Default; + +import java.io.Serializable; +import java.util.Date; + +/** + * 职代会历史表公共审计字段。 + * + *

这些表使用下划线字段和 DATETIME 时间,不能继承使用驼峰字段、时间戳的通用 BaseModel。

+ */ +@Data +public abstract class CongressBaseModel implements Serializable { + + private static final long serialVersionUID = 1L; + + @Column("create_by") + @Comment("创建人") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String createBy; + + @Column("create_time") + @Comment("创建时间") + @ColDefine(type = ColType.DATETIME) + private Date createTime; + + @Column("update_by") + @Comment("修改人") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String updateBy; + + @Column("update_time") + @Comment("修改时间") + @ColDefine(type = ColType.DATETIME) + private Date updateTime; + + @Column("deleted") + @Comment("删除标记") + @ColDefine(type = ColType.BOOLEAN) + @Default("0") + private Boolean deleted; +} \ No newline at end of file diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressCommitteeElectQuota.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressCommitteeElectQuota.java new file mode 100644 index 00000000..13e9f2a9 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressCommitteeElectQuota.java @@ -0,0 +1,74 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_committee_elect_quota") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会委员预选分配") +@TableIndexes({ + @Index(name = "idx_congress_committee_elect_quota_session", fields = {"sessionId"}, unique = false) +}) +public class CongressCommitteeElectQuota extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("zbztjmes") + @Comment("筹备组推荐名额数") + @ColDefine(type = ColType.INT) + @Default("0") + private Integer zbztjmes; + + @Column("wyhyxrs") + @Comment("委员会预选人数") + @ColDefine(type = ColType.INT) + @Default("0") + private Integer wyhyxrs; + + @Column("dbttjzs") + @Comment("代表团推荐总数") + @ColDefine(type = ColType.INT) + @Default("0") + private Integer dbttjzs; + + @Column("session_id") + @Comment("届次ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sessionId; + + @Column("session_name") + @Comment("届次名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String sessionName; + + @Column("first_preselected_begin_time") + @Comment("第一次预选开始时间") + @ColDefine(type = ColType.DATETIME) + private Date firstPreselectedBeginTime; + + @Column("first_preselected_end_time") + @Comment("第一次预选结束时间") + @ColDefine(type = ColType.DATETIME) + private Date firstPreselectedEndTime; + + @Column("second_preselected_begin_time") + @Comment("第二次预选开始时间") + @ColDefine(type = ColType.DATETIME) + private Date secondPreselectedBeginTime; + + @Column("second_preselected_end_time") + @Comment("第二次预选结束时间") + @ColDefine(type = ColType.DATETIME) + private Date secondPreselectedEndTime; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressCommitteeElectRep.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressCommitteeElectRep.java new file mode 100644 index 00000000..3135bf04 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressCommitteeElectRep.java @@ -0,0 +1,62 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_committee_elect_rep") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会委员推选") +@TableIndexes({ + @Index(name = "idx_congress_committee_elect_rep_session", fields = {"sessionId"}, unique = false), + @Index(name = "idx_congress_committee_elect_rep_delegation", fields = {"delegationId"}, unique = false) +}) +public class CongressCommitteeElectRep extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("rep_id") + @Comment("代表ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String repId; + + @Column("type") + @Comment("推选类型") + @ColDefine(type = ColType.INT) + private Integer type; + + @Column("times") + @Comment("第几次") + @ColDefine(type = ColType.INT) + private Integer times; + + @Column("user_id") + @Comment("团长用户ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String userId; + + @Column("session_id") + @Comment("届次ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sessionId; + + @Column("time_id") + @Comment("会议ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String timeId; + + @Column("delegation_id") + @Comment("代表团ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String delegationId; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressDelegation.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressDelegation.java new file mode 100644 index 00000000..0e667fc8 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressDelegation.java @@ -0,0 +1,80 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_delegation") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会代表团") +@TableIndexes({ + @Index(name = "idx_congress_delegation_time", fields = {"timeId"}, unique = false) +}) +public class CongressDelegation extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("name") + @Comment("代表团名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String name; + + @Column("session_id") + @Comment("届次ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sessionId; + + @Column("session_name") + @Comment("届次名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String sessionName; + + @Column("time_id") + @Comment("会议ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String timeId; + + @Column("time_name") + @Comment("会议名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String timeName; + + @Column("code") + @Comment("编码") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String code; + + @Column("official_number") + @Comment("正式代表人数") + @ColDefine(type = ColType.INT) + @Default("0") + private Integer officialNumber; + + @Column("attendance_number") + @Comment("列席代表人数") + @ColDefine(type = ColType.INT) + @Default("0") + private Integer attendanceNumber; + + @Column("invite_number") + @Comment("特邀代表人数") + @ColDefine(type = ColType.INT) + @Default("0") + private Integer inviteNumber; + + @Column("committee_allot_number") + @Comment("委员分配人数") + @ColDefine(type = ColType.INT) + @Default("0") + private Integer committeeAllotNumber; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressDelegationHead.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressDelegationHead.java new file mode 100644 index 00000000..e4dfcc26 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressDelegationHead.java @@ -0,0 +1,76 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_delegation_head") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会代表团团长") +@TableIndexes({ + @Index(name = "idx_congress_delegation_head_delegation", fields = {"delegationId"}, unique = false) +}) +public class CongressDelegationHead extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("session_id") + @Comment("届次ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sessionId; + + @Column("time_id") + @Comment("会议ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String timeId; + + @Column("delegation_id") + @Comment("代表团ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String delegationId; + + @Column("user_id") + @Comment("用户ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String userId; + + @Column("emplid") + @Comment("工号") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String emplid; + + @Column("name") + @Comment("姓名") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String name; + + @Column("unit") + @Comment("单位") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String unit; + + @Column("mobile") + @Comment("电话") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String mobile; + + @Column("sex") + @Comment("性别") + @ColDefine(type = ColType.INT) + private Integer sex; + + @Column("identity") + @Comment("身份") + @ColDefine(type = ColType.INT) + private Integer identity; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressDelegationRep.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressDelegationRep.java new file mode 100644 index 00000000..0907b35f --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressDelegationRep.java @@ -0,0 +1,66 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_delegation_rep") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会代表团代表") +@TableIndexes({ + @Index(name = "idx_congress_delegation_rep_delegation", fields = {"delegationId"}, unique = false) +}) +public class CongressDelegationRep extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("delegation_id") + @Comment("代表团ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String delegationId; + + @Column("user_id") + @Comment("用户ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String userId; + + @Column("empid") + @Comment("工号") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String empid; + + @Column("name") + @Comment("姓名") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String name; + + @Column("unit") + @Comment("单位") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String unit; + + @Column("mobile") + @Comment("电话") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String mobile; + + @Column("sex") + @Comment("性别") + @ColDefine(type = ColType.INT) + private Integer sex; + + @Column("identity") + @Comment("身份") + @ColDefine(type = ColType.INT) + private Integer identity; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressDelegationUnion.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressDelegationUnion.java new file mode 100644 index 00000000..6527cbba --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressDelegationUnion.java @@ -0,0 +1,47 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_delegation_union") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会代表团工会") +@TableIndexes({ + @Index(name = "idx_congress_delegation_union_delegation", fields = {"delegationId"}, unique = false), + @Index(name = "idx_congress_delegation_union_time", fields = {"timeId"}, unique = false) +}) +public class CongressDelegationUnion extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("delegation_id") + @Comment("代表团ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String delegationId; + + @Column("time_id") + @Comment("会议ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String timeId; + + @Column("union_id") + @Comment("工会ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String unionId; + + @Column("union_name") + @Comment("工会名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String unionName; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressMaterials.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressMaterials.java new file mode 100644 index 00000000..1d5daf57 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressMaterials.java @@ -0,0 +1,72 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_materials") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会资料") +@TableIndexes({ + @Index(name = "idx_congress_materials_time_type", fields = {"timeId", "typeId"}, unique = false) +}) +public class CongressMaterials extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("session_id") + @Comment("届次ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sessionId; + + @Column("time_id") + @Comment("会议ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String timeId; + + @Column("type_id") + @Comment("资料类型ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String typeId; + + @Column("sort_no") + @Comment("排序") + @ColDefine(type = ColType.INT) + @Default("0") + private Integer sortNo; + + @Column("name") + @Comment("资料名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String name; + + @Column("file_name") + @Comment("文件名") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String fileName; + + @Column("file_url") + @Comment("文件地址") + @ColDefine(type = ColType.VARCHAR, width = 1000) + private String fileUrl; + + @Column("file_type") + @Comment("文件类型") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String fileType; + + @Column("file_size") + @Comment("文件大小") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String fileSize; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressMaterialsType.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressMaterialsType.java new file mode 100644 index 00000000..87b267a5 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressMaterialsType.java @@ -0,0 +1,40 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_materials_type") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会资料类型") +public class CongressMaterialsType extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("sort_no") + @Comment("排序") + @ColDefine(type = ColType.INT) + @Default("0") + private Integer sortNo; + + @Column("name") + @Comment("名称") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String name; + + @Column("is_vote") + @Comment("是否表决类") + @ColDefine(type = ColType.BOOLEAN) + @Default("0") + private Boolean isVote; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressOrg.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressOrg.java new file mode 100644 index 00000000..503d09d5 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressOrg.java @@ -0,0 +1,62 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_org") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会机构") +@TableIndexes({ + @Index(name = "idx_congress_org_session", fields = {"sessionId"}, unique = false), + @Index(name = "idx_congress_org_parent", fields = {"parentId"}, unique = false) +}) +public class CongressOrg extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("name") + @Comment("机构名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String name; + + @Column("code") + @Comment("机构代码") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String code; + + @Column("type") + @Comment("机构类别") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String type; + + @Column("remark") + @Comment("备注") + @ColDefine(type = ColType.VARCHAR, width = 1000) + private String remark; + + @Column("parent_id") + @Comment("父节点") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String parentId; + + @Column("session_id") + @Comment("届次ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sessionId; + + @Column("session_name") + @Comment("届次名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String sessionName; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressOrgMember.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressOrgMember.java new file mode 100644 index 00000000..a8728bcf --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressOrgMember.java @@ -0,0 +1,87 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_org_member") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会机构成员") +@TableIndexes({ + @Index(name = "idx_congress_org_member_org", fields = {"orgId"}, unique = false), + @Index(name = "idx_congress_org_member_session", fields = {"sessionId"}, unique = false) +}) +public class CongressOrgMember extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("user_id") + @Comment("用户ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String userId; + + @Column("empid") + @Comment("工号") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String empid; + + @Column("name") + @Comment("姓名") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String name; + + @Column("unit") + @Comment("单位") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String unit; + + @Column("mobile") + @Comment("电话") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String mobile; + + @Column("sex") + @Comment("性别") + @ColDefine(type = ColType.INT) + private Integer sex; + + @Column("identity") + @Comment("身份") + @ColDefine(type = ColType.INT) + private Integer identity; + + @Column("session_id") + @Comment("届次ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sessionId; + + @Column("session_name") + @Comment("届次名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String sessionName; + + @Column("org_id") + @Comment("机构ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String orgId; + + @Column("role_id") + @Comment("角色ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String roleId; + + @Column("role_name") + @Comment("角色名称") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String roleName; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressRep.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressRep.java new file mode 100644 index 00000000..d06c7079 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressRep.java @@ -0,0 +1,171 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_rep") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会代表") +@TableIndexes({ + @Index(name = "idx_congress_rep_emplid", fields = {"emplid"}, unique = false), + @Index(name = "idx_congress_rep_time_emplid", fields = {"timeId", "emplid"}, unique = false), + @Index(name = "idx_congress_rep_session_id", fields = {"sessionId"}, unique = false) +}) +public class CongressRep extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("session_id") + @Comment("届次ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sessionId; + + @Column("time_id") + @Comment("会议ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String timeId; + + @Column("session_name") + @Comment("届次名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String sessionName; + + @Column("time_name") + @Comment("会议名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String timeName; + + @Column("user_id") + @Comment("用户ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String userId; + + @Column("name") + @Comment("姓名") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String name; + + @Column("emplid") + @Comment("工号") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String emplid; + + @Column("sex") + @Comment("性别") + @ColDefine(type = ColType.VARCHAR, width = 16) + private String sex; + + @Column("birthdate") + @Comment("出生日期") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String birthdate; + + @Column("politics_status") + @Comment("政治面貌") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String politicsStatus; + + @Column("position") + @Comment("职务") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String position; + + @Column("education") + @Comment("学历") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String education; + + @Column("work_unit") + @Comment("工作单位") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String workUnit; + + @Column("work_experience") + @Comment("工作经历") + @ColDefine(type = ColType.TEXT) + private String workExperience; + + @Column("tags") + @Comment("标签") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String tags; + + @Column("filling_status") + @Comment("填报状态") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String fillingStatus; + + @Column("identity") + @Comment("身份") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String identity; + + @Column("type") + @Comment("代表类型") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String type; + + @Column("is_gdh") + @Comment("是否工代会代表") + @ColDefine(type = ColType.BOOLEAN) + @Default("0") + private Boolean isGdh; + + @Column("is_zdh") + @Comment("是否职代会代表") + @ColDefine(type = ColType.BOOLEAN) + @Default("0") + private Boolean isZdh; + + @Column("union_id") + @Comment("工会ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String unionId; + + @Column("delegation_id") + @Comment("代表团ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String delegationId; + + @Column("delegation_name") + @Comment("代表团名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String delegationName; + + @Column("supplement") + @Comment("补充说明") + @ColDefine(type = ColType.TEXT) + private String supplement; + + @Column("status") + @Comment("状态") + @ColDefine(type = ColType.INT) + @Default("0") + private Integer status; + + @Column("precinct_union_id") + @Comment("选区工会ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String precinctUnionId; + + @Column("precinct_union_name") + @Comment("选区工会名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String precinctUnionName; + + @Column("nation") + @Comment("民族") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String nation; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressRepSupplement.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressRepSupplement.java new file mode 100644 index 00000000..338c146d --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressRepSupplement.java @@ -0,0 +1,111 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_rep_supplement") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会代表增补") +@TableIndexes({ + @Index(name = "idx_congress_rep_supplement_time", fields = {"timeId"}, unique = false) +}) +public class CongressRepSupplement extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("session_id") + @Comment("届次ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sessionId; + + @Column("precinct_union_id") + @Comment("选区") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String precinctUnionId; + + @Column("time_id") + @Comment("会议ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String timeId; + + @Column("time_name") + @Comment("会议名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String timeName; + + @Column("add_user_id") + @Comment("增加代表用户ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String addUserId; + + @Column("add_user_union_id") + @Comment("增加代表工会ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String addUserUnionId; + + @Column("add_user_name") + @Comment("增加代表姓名") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String addUserName; + + @Column("add_emplid") + @Comment("增加代表工号") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String addEmplid; + + @Column("sub_user_id") + @Comment("替换代表用户ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String subUserId; + + @Column("sub_user_name") + @Comment("替换代表姓名") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String subUserName; + + @Column("sub_emplid") + @Comment("替换代表工号") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String subEmplid; + + @Column("reason") + @Comment("原因") + @ColDefine(type = ColType.VARCHAR, width = 1000) + private String reason; + + @Column("add_precinct_union_id") + @Comment("增加选区工会ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String addPrecinctUnionId; + + @Column("add_precinct_union_name") + @Comment("增加选区工会名") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String addPrecinctUnionName; + + @Column("sub_precinct_union_id") + @Comment("替换选区工会ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String subPrecinctUnionId; + + @Column("sub_precinct_union_name") + @Comment("替换选区工会名") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String subPrecinctUnionName; + + @Column("type") + @Comment("类型") + @ColDefine(type = ColType.INT) + private Integer type; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressSessions.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressSessions.java new file mode 100644 index 00000000..b1986f2d --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressSessions.java @@ -0,0 +1,66 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_sessions") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会届次") +@TableIndexes({ + @Index(name = "idx_congress_sessions_union_id", fields = {"unionId"}, unique = false) +}) +public class CongressSessions extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("name") + @Comment("届次名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String name; + + @Column("year") + @Comment("年份") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String year; + + @Column("description") + @Comment("描述") + @ColDefine(type = ColType.VARCHAR, width = 1000) + private String description; + + @Column("sc_session") + @Comment("省产届次") + @ColDefine(type = ColType.INT) + private Integer scSession; + + @Column("uc_session") + @Comment("校产届次") + @ColDefine(type = ColType.INT) + private Integer ucSession; + + @Column("union_id") + @Comment("工会ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String unionId; + + @Column("type") + @Comment("会类型") + @ColDefine(type = ColType.INT) + private Integer type; + + @Column("union_name") + @Comment("工会名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String unionName; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressSignIn.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressSignIn.java new file mode 100644 index 00000000..30b7ddc8 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressSignIn.java @@ -0,0 +1,62 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_sign_in") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会签到记录") +@TableIndexes({ + @Index(name = "uk_congress_sign_in_rep_meeting", fields = {"repId", "meetingId", "deleted"}, unique = true), + @Index(name = "idx_congress_sign_in_meeting", fields = {"meetingId"}, unique = false) +}) +public class CongressSignIn extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("session_id") + @Comment("届次ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sessionId; + + @Column("time_id") + @Comment("会议ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String timeId; + + @Column("meeting_id") + @Comment("签到会议ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String meetingId; + + @Column("delegation_id") + @Comment("代表团ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String delegationId; + + @Column("rep_id") + @Comment("代表ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String repId; + + @Column("emplid") + @Comment("工号") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String emplid; + + @Column("name") + @Comment("姓名") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String name; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressSignInMeeting.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressSignInMeeting.java new file mode 100644 index 00000000..57106e19 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressSignInMeeting.java @@ -0,0 +1,62 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_sign_in_meeting") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会签到会议") +@TableIndexes({ + @Index(name = "idx_congress_sign_in_meeting_time", fields = {"timeId"}, unique = false) +}) +public class CongressSignInMeeting extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("meeting_name") + @Comment("会议名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String meetingName; + + @Column("sign_in_start_time") + @Comment("签到开始时间") + @ColDefine(type = ColType.DATETIME) + private Date signInStartTime; + + @Column("sign_in_end_time") + @Comment("签到结束时间") + @ColDefine(type = ColType.DATETIME) + private Date signInEndTime; + + @Column("session_id") + @Comment("届次ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sessionId; + + @Column("time_id") + @Comment("会议ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String timeId; + + @Column("remark") + @Comment("备注") + @ColDefine(type = ColType.VARCHAR, width = 1000) + private String remark; + + @Column("sign_in_count") + @Comment("签到人数") + @ColDefine(type = ColType.INT) + @Default("0") + private Integer signInCount; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressTimes.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressTimes.java new file mode 100644 index 00000000..0abcc041 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressTimes.java @@ -0,0 +1,56 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_times") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会会议") +@TableIndexes({ + @Index(name = "idx_congress_times_session_id", fields = {"sessionId"}, unique = false) +}) +public class CongressTimes extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("year") + @Comment("年份") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String year; + + @Column("name") + @Comment("会议名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String name; + + @Column("session_id") + @Comment("届次ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sessionId; + + @Column("session_name") + @Comment("届次名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String sessionName; + + @Column("sc_times") + @Comment("省产次数") + @ColDefine(type = ColType.INT) + private Integer scTimes; + + @Column("uc_times") + @Comment("校产次数") + @ColDefine(type = ColType.INT) + private Integer ucTimes; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressUnion.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressUnion.java new file mode 100644 index 00000000..61182e1d --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressUnion.java @@ -0,0 +1,69 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_union") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会工会名额") +@TableIndexes({ + @Index(name = "idx_congress_union_session", fields = {"sessionId"}, unique = false), + @Index(name = "idx_congress_union_delegation", fields = {"delegationId"}, unique = false) +}) +public class CongressUnion extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("session_id") + @Comment("届次ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sessionId; + + @Column("session_name") + @Comment("届次名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String sessionName; + + @Column("union_id") + @Comment("工会ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String unionId; + + @Column("union_name") + @Comment("工会名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String unionName; + + @Column("quota_config") + @Comment("名额配置") + @ColDefine(type = ColType.TEXT) + private String quotaConfig; + + @Column("member_number") + @Comment("会员数") + @ColDefine(type = ColType.INT) + @Default("0") + private Integer memberNumber; + + @Column("delegation_id") + @Comment("代表团ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String delegationId; + + @Column("sort_no") + @Comment("排序") + @ColDefine(type = ColType.INT) + @Default("0") + private Integer sortNo; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressVotingIssue.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressVotingIssue.java new file mode 100644 index 00000000..b8c688ba --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressVotingIssue.java @@ -0,0 +1,107 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_voting_issue") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会议题表决") +@TableIndexes({ + @Index(name = "idx_congress_voting_issue_materials", fields = {"materialsId"}, unique = false), + @Index(name = "idx_congress_voting_issue_time", fields = {"timeId"}, unique = false) +}) +public class CongressVotingIssue extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("session_id") + @Comment("届次ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sessionId; + + @Column("session_name") + @Comment("届次名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String sessionName; + + @Column("time_id") + @Comment("会议ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String timeId; + + @Column("time_name") + @Comment("会议名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String timeName; + + @Column("name") + @Comment("议题名称") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String name; + + @Column("description") + @Comment("描述") + @ColDefine(type = ColType.VARCHAR, width = 1000) + private String description; + + @Column("content") + @Comment("内容") + @ColDefine(type = ColType.TEXT) + private String content; + + @Column("voting_type") + @Comment("表决类型") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String votingType; + + @Column("voting_start_time") + @Comment("表决开始时间") + @ColDefine(type = ColType.DATETIME) + private Date votingStartTime; + + @Column("voting_end_time") + @Comment("表决结束时间") + @ColDefine(type = ColType.DATETIME) + private Date votingEndTime; + + @Column("voting_content") + @Comment("表决内容") + @ColDefine(type = ColType.TEXT) + private String votingContent; + + @Column("voting_content_item_header") + @Comment("表决项表头") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String votingContentItemHeader; + + @Column("voting_content_option_header") + @Comment("表决选项表头") + @ColDefine(type = ColType.VARCHAR, width = 255) + private String votingContentOptionHeader; + + @Column("materials_id") + @Comment("资料ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String materialsId; + + @Column("type_id") + @Comment("资料类型ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String typeId; + + @Column("delegation_id") + @Comment("代表团ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String delegationId; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressVotingRecord.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressVotingRecord.java new file mode 100644 index 00000000..50eb797a --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/models/CongressVotingRecord.java @@ -0,0 +1,72 @@ +package com.budwk.app.zhgh.democratic.congress.models; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.nutz.dao.entity.annotation.*; +import org.nutz.dao.interceptor.annotation.PrevInsert; + +import java.util.Date; + +@Data +@EqualsAndHashCode(callSuper = true) +@Table("congress_voting_record") +@TableMeta("{'mysql-charset':'utf8mb4'}") +@Comment("职代会表决记录") +@TableIndexes({ + @Index(name = "uk_congress_voting_record_rep_issue", fields = {"repId", "issueId", "deleted"}, unique = true), + @Index(name = "idx_congress_voting_record_issue", fields = {"issueId"}, unique = false) +}) +public class CongressVotingRecord extends CongressBaseModel { + + @Name + @Comment("主键") + @ColDefine(type = ColType.VARCHAR, width = 32) + @PrevInsert(uu32 = true) + private String id; + + @Column("issue_id") + @Comment("议题ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String issueId; + + @Column("rep_id") + @Comment("代表ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String repId; + + @Column("emplid") + @Comment("工号") + @ColDefine(type = ColType.VARCHAR, width = 64) + private String emplid; + + @Column("name") + @Comment("姓名") + @ColDefine(type = ColType.VARCHAR, width = 100) + private String name; + + @Column("session_id") + @Comment("届次ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String sessionId; + + @Column("time_id") + @Comment("会议ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String timeId; + + @Column("delegation_id") + @Comment("代表团ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String delegationId; + + @Column("vote_result") + @Comment("表决结果") + @ColDefine(type = ColType.TEXT) + private String voteResult; + + @Column("user_id") + @Comment("用户ID") + @ColDefine(type = ColType.VARCHAR, width = 32) + private String userId; + +} diff --git a/src/main/java/com/budwk/app/zhgh/democratic/congress/service/CongressManageService.java b/src/main/java/com/budwk/app/zhgh/democratic/congress/service/CongressManageService.java new file mode 100644 index 00000000..6b293c45 --- /dev/null +++ b/src/main/java/com/budwk/app/zhgh/democratic/congress/service/CongressManageService.java @@ -0,0 +1,151 @@ +package com.budwk.app.zhgh.democratic.congress.service; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.budwk.app.base.page.Pagination; +import com.budwk.app.base.param.PageForm; +import com.budwk.app.base.result.Result; +import com.budwk.app.base.service.BaseService; +import org.nutz.dao.Chain; +import org.nutz.dao.Cnd; +import org.nutz.dao.Dao; +import org.nutz.dao.Sqls; +import org.nutz.dao.sql.Sql; +import org.nutz.ioc.loader.annotation.Inject; +import org.nutz.ioc.loader.annotation.IocBean; +import org.nutz.lang.util.NutMap; + +import java.util.Date; +import java.util.List; + +/** + * 职代会管理公共服务类。 + * + *

本服务不注册页面路由,只集中维护六个菜单控制器共用的查询和基础操作。

+ */ +@IocBean +public class CongressManageService { + + @Inject + private Dao dao; + + @Inject + private BaseService baseService; + + + public List sessionOptions() { + return listMaps(""" + SELECT id AS `id`, fullName AS `fullName` + FROM teacher_congress_session + WHERE delFlag = 0 + ORDER BY startDate desc, createdAt desc + """); + } + + public List typeOptions() { + return listMaps(""" + SELECT id, name, sort_no AS sortNo, is_vote AS isVote + FROM congress_materials_type + WHERE COALESCE(deleted, 0) = 0 + ORDER BY sort_no, create_time, id + """); + } + + public List meetingOptions(String sessionId) { + Sql sql = Sqls.create(""" + SELECT id, meeting_name AS meetingName + FROM congress_sign_in_meeting + WHERE COALESCE(deleted, 0) = 0 + AND session_id = @sessionId + ORDER BY sign_in_start_time DESC, create_time DESC + """); + sql.setParam("sessionId", sessionId); + sql.setCallback(Sqls.callback.maps()); + dao.execute(sql); + return sql.getList(NutMap.class); + } + + public List materialOptions(String sessionId, String typeId) { + StringBuilder sqlText = new StringBuilder(""" + SELECT + m.id, + m.name, + m.type_id AS typeId, + m.file_name AS fileName, + m.file_url AS fileUrl + FROM congress_materials m + WHERE COALESCE(m.deleted, 0) = 0 + AND m.session_id = @sessionId + """); + if (StrUtil.isNotBlank(typeId)) { + sqlText.append(" AND m.type_id = @typeId"); + } + sqlText.append(" ORDER BY m.sort_no, m.create_time DESC"); + Sql sql = Sqls.create(sqlText.toString()); + sql.setParam("sessionId", sessionId); + sql.setParam("typeId", typeId); + sql.setCallback(Sqls.callback.maps()); + dao.execute(sql); + return sql.getList(NutMap.class); + } + + public Result page(PageForm pageForm, String sqlText, NutMap params) { + Sql sql = Sqls.create(sqlText); + params.forEach(sql::setParam); + Pagination pagination = baseService.listPageMap( + pageForm.getPageNumber(), pageForm.getPageSize(), sql); + return Result.success(pagination); + } + + public List listMaps(String sqlText) { + Sql sql = Sqls.create(sqlText); + sql.setCallback(Sqls.callback.maps()); + dao.execute(sql); + return sql.getList(NutMap.class); + } + + public NutMap fetchMap(String sqlText, NutMap params) { + Sql sql = Sqls.create(sqlText); + params.forEach(sql::setParam); + sql.setCallback(Sqls.callback.map()); + dao.execute(sql); + return sql.getObject(NutMap.class); + } + + public int count(String sqlText, NutMap params) { + Sql sql = Sqls.create(sqlText); + params.forEach(sql::setParam); + sql.setCallback(Sqls.callback.integer()); + dao.execute(sql); + return sql.getInt(); + } + + public void softDelete(String tableName, String id) { + dao.update(tableName, + Chain.make("deleted", 1).add("update_time", new Date()), + Cnd.where("id", "=", id).and("deleted", "=", 0)); + } + + public Date parseDate(String value) { + if (StrUtil.isBlank(value)) { + return null; + } + try { + return DateUtil.parse(value); + } catch (Exception e) { + return null; + } + } + + public void appendEquals(StringBuilder sql, NutMap params, + String column, String paramName, Object value) { + if (value instanceof String && StrUtil.isBlank((String) value)) { + return; + } + if (value == null) { + return; + } + sql.append(" AND ").append(column).append(" = @").append(paramName); + params.addv(paramName, value); + } +} \ No newline at end of file diff --git a/src/main/resources/db/congress/init_congress_pc_menu.sql b/src/main/resources/db/congress/init_congress_pc_menu.sql new file mode 100644 index 00000000..d68ed0b9 --- /dev/null +++ b/src/main/resources/db/congress/init_congress_pc_menu.sql @@ -0,0 +1,228 @@ +-- 职代会电脑端菜单(MySQL 8)。 +-- 不包含库名前缀,可重复执行。 + +INSERT INTO sys_menu ( + id, parentId, path, name, aliasName, type, href, target, icon, + showit, disabled, permission, note, location, hasChildren, + createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, + moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService +) +SELECT + 'congress_pc_root', '', + LPAD(IFNULL(MAX(CAST(`path` AS UNSIGNED)), 0) + 1, 4, '0'), + '职代会管理', 'Congress', 'menu', '', '', 'ti-agenda', + 1, 0, 'congress', NULL, 1, 1, + '', UNIX_TIMESTAMP(NOW()) * 1000, + '', UNIX_TIMESTAMP(NOW()) * 1000, + 0, 'PC', NULL, NULL, 'z', 0, 0 +FROM sys_menu +WHERE (parentId IS NULL OR parentId = '') AND CHAR_LENGTH(path) = 4 +HAVING NOT EXISTS ( + SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'congress') t +); + +-- 一级分组:会议资料(排序 6)。 +INSERT INTO sys_menu ( + id, parentId, path, name, aliasName, type, href, target, icon, + showit, disabled, permission, note, location, hasChildren, + createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, + moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService +) +SELECT + 'congress_pc_materials', p.id, CONCAT(p.path, '0006'), + '会议资料', 'Congress Materials', 'menu', '', '', 'ti-file', + 1, 0, 'congress.materials', NULL, 6, 1, + '', UNIX_TIMESTAMP(NOW()) * 1000, + '', UNIX_TIMESTAMP(NOW()) * 1000, + 0, 'PC', NULL, NULL, 'h', 0, 0 +FROM sys_menu p +WHERE p.permission = 'congress' + AND NOT EXISTS ( + SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'congress.materials') t + ); + +-- 一级分组:会议签到(排序 7)。 +INSERT INTO sys_menu ( + id, parentId, path, name, aliasName, type, href, target, icon, + showit, disabled, permission, note, location, hasChildren, + createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, + moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService +) +SELECT + 'congress_pc_signin', p.id, CONCAT(p.path, '0007'), + '会议签到', 'Congress Sign In', 'menu', '', '', 'ti-calendar', + 1, 0, 'congress.signIn', NULL, 7, 1, + '', UNIX_TIMESTAMP(NOW()) * 1000, + '', UNIX_TIMESTAMP(NOW()) * 1000, + 0, 'PC', NULL, NULL, 'h', 0, 0 +FROM sys_menu p +WHERE p.permission = 'congress' + AND NOT EXISTS ( + SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'congress.signIn') t + ); + +-- 一级分组:会议投票(排序 8)。 +INSERT INTO sys_menu ( + id, parentId, path, name, aliasName, type, href, target, icon, + showit, disabled, permission, note, location, hasChildren, + createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, + moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService +) +SELECT + 'congress_pc_vote', p.id, CONCAT(p.path, '0008'), + '会议投票', 'Congress Vote', 'menu', '', '', 'ti-bar-chart', + 1, 0, 'congress.vote', NULL, 8, 1, + '', UNIX_TIMESTAMP(NOW()) * 1000, + '', UNIX_TIMESTAMP(NOW()) * 1000, + 0, 'PC', NULL, NULL, 'h', 0, 0 +FROM sys_menu p +WHERE p.permission = 'congress' + AND NOT EXISTS ( + SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'congress.vote') t + ); + +-- 二级页面菜单。 +INSERT INTO sys_menu ( + id, parentId, path, name, aliasName, type, href, target, icon, + showit, disabled, permission, note, location, hasChildren, + createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, + moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService +) +SELECT + 'congress_pc_signin_manage', p.id, CONCAT(p.path, '0001'), + '会议管理', 'Meeting Manage', 'menu', '/platform/congress/signIn/index', 'data-pjax', 'ti-layout-grid2', + 1, 0, 'congress.signIn.manage', NULL, 1, 0, + '', UNIX_TIMESTAMP(NOW()) * 1000, + '', UNIX_TIMESTAMP(NOW()) * 1000, + 0, 'PC', NULL, NULL, 'h', 0, 0 +FROM sys_menu p +WHERE p.permission = 'congress.signIn' + AND NOT EXISTS ( + SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'congress.signIn.manage') t + ); + +INSERT INTO sys_menu ( + id, parentId, path, name, aliasName, type, href, target, icon, + showit, disabled, permission, note, location, hasChildren, + createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, + moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService +) +SELECT + 'congress_pc_signin_record', p.id, CONCAT(p.path, '0002'), + '签到记录', 'Sign In Record', 'menu', '/platform/congress/record/index', 'data-pjax', 'ti-layout-grid2', + 1, 0, 'congress.signIn.record', NULL, 2, 0, + '', UNIX_TIMESTAMP(NOW()) * 1000, + '', UNIX_TIMESTAMP(NOW()) * 1000, + 0, 'PC', NULL, NULL, 'q', 0, 0 +FROM sys_menu p +WHERE p.permission = 'congress.signIn' + AND NOT EXISTS ( + SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'congress.signIn.record') t + ); + +INSERT INTO sys_menu ( + id, parentId, path, name, aliasName, type, href, target, icon, + showit, disabled, permission, note, location, hasChildren, + createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, + moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService +) +SELECT + 'congress_pc_vote_issue', p.id, CONCAT(p.path, '0001'), + '投票管理', 'Vote Manage', 'menu', '/platform/congress/materials/issue/index', 'data-pjax', 'ti-menu-alt', + 1, 0, 'congress.vote.issue', NULL, 1, 0, + '', UNIX_TIMESTAMP(NOW()) * 1000, + '', UNIX_TIMESTAMP(NOW()) * 1000, + 0, 'PC', NULL, NULL, 't', 0, 0 +FROM sys_menu p +WHERE p.permission = 'congress.vote' + AND NOT EXISTS ( + SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'congress.vote.issue') t + ); + +INSERT INTO sys_menu ( + id, parentId, path, name, aliasName, type, href, target, icon, + showit, disabled, permission, note, location, hasChildren, + createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, + moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService +) +SELECT + 'congress_pc_vote_statistics', p.id, CONCAT(p.path, '0002'), + '投票统计', 'Vote Statistics', 'menu', '/platform/congress/materials/statistical/index', 'data-pjax', 'ti-menu-alt', + 1, 0, 'congress.vote.statistical', NULL, 2, 0, + '', UNIX_TIMESTAMP(NOW()) * 1000, + '', UNIX_TIMESTAMP(NOW()) * 1000, + 0, 'PC', NULL, NULL, 't', 0, 0 +FROM sys_menu p +WHERE p.permission = 'congress.vote' + AND NOT EXISTS ( + SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'congress.vote.statistical') t + ); + +INSERT INTO sys_menu ( + id, parentId, path, name, aliasName, type, href, target, icon, + showit, disabled, permission, note, location, hasChildren, + createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, + moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService +) +SELECT + 'congress_pc_materials_manage', p.id, CONCAT(p.path, '0002'), + '资料管理', 'Materials Manage', 'menu', '/platform/congress/materials/manage/index', 'data-pjax', 'ti-file', + 1, 0, 'congress.materials.manage', NULL, 2, 0, + '', UNIX_TIMESTAMP(NOW()) * 1000, + '', UNIX_TIMESTAMP(NOW()) * 1000, + 0, 'PC', NULL, NULL, 'z', 0, 0 +FROM sys_menu p +WHERE p.permission = 'congress.materials' + AND NOT EXISTS ( + SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'congress.materials.manage') t + ); + +INSERT INTO sys_menu ( + id, parentId, path, name, aliasName, type, href, target, icon, + showit, disabled, permission, note, location, hasChildren, + createdBy, createdAt, updatedBy, updatedAt, delFlag, platform, + moduleId, picIcon, initialPinyinName, isRecommendApp, isRecommendService +) +SELECT + 'congress_pc_materials_type', p.id, CONCAT(p.path, '0001'), + '资料类型', 'Materials Type', 'menu', '/platform/congress/materials/type/index', 'data-pjax', 'ti-share-alt', + 1, 0, 'congress.materials.type', NULL, 1, 0, + '', UNIX_TIMESTAMP(NOW()) * 1000, + '', UNIX_TIMESTAMP(NOW()) * 1000, + 0, 'PC', NULL, NULL, 'z', 0, 0 +FROM sys_menu p +WHERE p.permission = 'congress.materials' + AND NOT EXISTS ( + SELECT 1 FROM (SELECT id FROM sys_menu WHERE permission = 'congress.materials.type') t + ); + +-- 兼容已执行过旧版脚本的数据:根菜单和分组菜单只负责展开,不请求后台地址。 +UPDATE sys_menu +SET href = '', + target = '', + updatedBy = '', + updatedAt = UNIX_TIMESTAMP(NOW()) * 1000 +WHERE id IN ( + 'congress_pc_root', + 'congress_pc_materials', + 'congress_pc_signin', + 'congress_pc_vote' +); +-- 系统管理员默认拥有模块菜单,其他角色在角色管理中按需授权。 +INSERT INTO sys_role_menu (roleId, menuId) +SELECT r.id, m.id +FROM sys_role r +JOIN sys_menu m ON m.permission IN ( + 'congress', + 'congress.signIn', + 'congress.signIn.manage', + 'congress.signIn.record', + 'congress.vote', + 'congress.vote.issue', + 'congress.vote.statistical', + 'congress.materials', + 'congress.materials.manage', + 'congress.materials.type' +) +LEFT JOIN sys_role_menu rm ON rm.roleId = r.id AND rm.menuId = m.id +WHERE r.code = 'SYSADMIN' AND rm.roleId IS NULL; diff --git a/src/main/resources/views/platform/zhgh/democratic/congress/materials/issue/index.html b/src/main/resources/views/platform/zhgh/democratic/congress/materials/issue/index.html new file mode 100644 index 00000000..f484f3fe --- /dev/null +++ b/src/main/resources/views/platform/zhgh/democratic/congress/materials/issue/index.html @@ -0,0 +1,295 @@ + +
+ + + + + + + + + + + + + + + 新增 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 添加表决事项 + + + + + + + 取消 + 确定 + + +
+ + diff --git a/src/main/resources/views/platform/zhgh/democratic/congress/materials/manage/index.html b/src/main/resources/views/platform/zhgh/democratic/congress/materials/manage/index.html new file mode 100644 index 00000000..3a305d74 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/democratic/congress/materials/manage/index.html @@ -0,0 +1,231 @@ + +
+ + + + + + + + + + + + + + + + + + + + 新增 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取消 + 确定 + + +
+ + diff --git a/src/main/resources/views/platform/zhgh/democratic/congress/materials/statistical/index.html b/src/main/resources/views/platform/zhgh/democratic/congress/materials/statistical/index.html new file mode 100644 index 00000000..8c98b79b --- /dev/null +++ b/src/main/resources/views/platform/zhgh/democratic/congress/materials/statistical/index.html @@ -0,0 +1,170 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + {{currentIssue.name}} + {{currentIssue.sessionName}} + {{currentIssue.typeName}} + {{currentIssue.voteCount}} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + diff --git a/src/main/resources/views/platform/zhgh/democratic/congress/materials/type/index.html b/src/main/resources/views/platform/zhgh/democratic/congress/materials/type/index.html new file mode 100644 index 00000000..18f9f6ad --- /dev/null +++ b/src/main/resources/views/platform/zhgh/democratic/congress/materials/type/index.html @@ -0,0 +1,130 @@ + +
+ + + + + + + + + + + + + + + + 新增 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取消 + 确定 + + +
+ + diff --git a/src/main/resources/views/platform/zhgh/democratic/congress/record/index.html b/src/main/resources/views/platform/zhgh/democratic/congress/record/index.html new file mode 100644 index 00000000..7eb83f2f --- /dev/null +++ b/src/main/resources/views/platform/zhgh/democratic/congress/record/index.html @@ -0,0 +1,84 @@ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + diff --git a/src/main/resources/views/platform/zhgh/democratic/congress/signIn/index.html b/src/main/resources/views/platform/zhgh/democratic/congress/signIn/index.html new file mode 100644 index 00000000..8e7f5f55 --- /dev/null +++ b/src/main/resources/views/platform/zhgh/democratic/congress/signIn/index.html @@ -0,0 +1,162 @@ + +
+ + + + + + + + + + + + + 新增 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 取消 + 确定 + + +
+ + +