diff --git a/src/main/java/com/budwk/app/flow/handler/FlowUnitManagerHandler.java b/src/main/java/com/budwk/app/flow/handler/FlowUnitManagerHandler.java index 635f630..6d2e086 100644 --- a/src/main/java/com/budwk/app/flow/handler/FlowUnitManagerHandler.java +++ b/src/main/java/com/budwk/app/flow/handler/FlowUnitManagerHandler.java @@ -1,5 +1,6 @@ package com.budwk.app.flow.handler; +import cn.hutool.core.util.StrUtil; import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.flow.engine.AssignmentHandler; import com.budwk.app.flow.engine.core.Execution; @@ -24,6 +25,10 @@ public class FlowUnitManagerHandler implements AssignmentHandler { @Override public List assign(TaskModel model, Execution execution) { String unitId = SecurityUtil.getUnitId(); + String argsUnitId = execution.getArgs().getStr("argsUnitId"); + if (StrUtil.isNotBlank(argsUnitId)){ + unitId = argsUnitId; + } SysRoleService sysRoleService = ServiceContext.find(SysRoleService.class); Sys_role role = sysRoleService.getByCode(RoleConstant.UNIT_MANAGER); @@ -42,7 +47,7 @@ public class FlowUnitManagerHandler implements AssignmentHandler { @Override public String getMessage() { - return "获取当前登录用户所在单位负责人"; + return "获取当前登录用户所在单位负责人(如果argsUnitId存在则查询argsUnitId单位的单位负责人)"; } public int getOrder() { diff --git a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteePushController.java b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteePushController.java index 73a754a..cc6d88f 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteePushController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/executiveCommittee/controller/ExecutiveCommitteePushController.java @@ -140,7 +140,7 @@ public class ExecutiveCommitteePushController { ExecutiveCommitteeConfig config = dao.fetch(ExecutiveCommitteeConfig.class, Cnd.where("teacherMeetId", "=", teacherMeetId)); - /* if (ObjectUtil.isEmpty(config)) { + if (ObjectUtil.isEmpty(config)) { return Result.error("请先配置基础信息"); } if (config.getFirstStartTime().getTime() > System.currentTimeMillis()) { @@ -148,7 +148,7 @@ public class ExecutiveCommitteePushController { } if (config.getFirstEndTime().getTime() < System.currentTimeMillis()) { return Result.error("一次预选已结束"); - }*/ + } int dbCount = dao.count(ExecutiveCommitteeOnePush.class, Cnd.where("teacherMeetId", "=", teacherMeetId) diff --git a/src/main/java/com/budwk/app/zhgh/democratic/grassrootscongress/controller/material/GrassrootsCongressMaterialApprovalController.java b/src/main/java/com/budwk/app/zhgh/democratic/grassrootscongress/controller/material/GrassrootsCongressMaterialApprovalController.java index 99c7cff..39eb642 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/grassrootscongress/controller/material/GrassrootsCongressMaterialApprovalController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/grassrootscongress/controller/material/GrassrootsCongressMaterialApprovalController.java @@ -1,6 +1,7 @@ package com.budwk.app.zhgh.democratic.grassrootscongress.controller.material; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.page.Pagination; @@ -76,7 +77,8 @@ public class GrassrootsCongressMaterialApprovalController { Cnd cnd = Cnd.NEW(); cnd.and("t.taskName", "=", "zlsh"); - if(!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())){ + if (!StpUtil.hasRole(RoleConstant.SYSADMIN.name()) && + !StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name())) { cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/grassrootscongress/controller/meeting/GrassrootsCongressMeetingApprovalController.java b/src/main/java/com/budwk/app/zhgh/democratic/grassrootscongress/controller/meeting/GrassrootsCongressMeetingApprovalController.java index 2d4e3c1..9e10301 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/grassrootscongress/controller/meeting/GrassrootsCongressMeetingApprovalController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/grassrootscongress/controller/meeting/GrassrootsCongressMeetingApprovalController.java @@ -1,6 +1,7 @@ package com.budwk.app.zhgh.democratic.grassrootscongress.controller.meeting; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.dev33.satoken.stp.StpUtil; import cn.hutool.core.util.StrUtil; import com.budwk.app.base.constant.RoleConstant; import com.budwk.app.base.page.Pagination; @@ -76,7 +77,8 @@ public class GrassrootsCongressMeetingApprovalController { Cnd cnd = Cnd.NEW(); cnd.and("t.taskName", "=", "8384aafd-3cdb-49ab-a11f-c5d145b1672c"); - if(!AuthUtil.hasRole(RoleConstant.SYSADMIN.name())){ + if (!StpUtil.hasRole(RoleConstant.SYSADMIN.name()) && + !StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name())) { cnd.and("ta.actorId", "in", List.of(SecurityUtil.getUserId())); } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalSecondedController.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalSecondedController.java index fdcffad..b60cf00 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalSecondedController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/controller/transact/ProposalSecondedController.java @@ -66,6 +66,7 @@ public class ProposalSecondedController { Sql sql = Sqls.create(""" SELECT us.unionName, + us.unitId, info.*, type.name AS typeName, tcs.fullName AS sessionName, diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/handler/ProposalMasterUnitAssignmentHandler.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/handler/ProposalMasterUnitAssignmentHandler.java index 0390a3a..6cba947 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/handler/ProposalMasterUnitAssignmentHandler.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/handler/ProposalMasterUnitAssignmentHandler.java @@ -60,7 +60,7 @@ public class ProposalMasterUnitAssignmentHandler implements AssignmentHandler { } // 获取负责人 - Sys_role sysRole = sysRoleService.getByCode(RoleConstant.PROPOSAL_UNIT_LEADER); + Sys_role sysRole = sysRoleService.getByCode(RoleConstant.UNIT_MANAGER); List sysUserRoles = dao.query(Sys_user_role.class, Cnd.where(Sys_user_role::getRoleId, "=", sysRole.getId()).and(Sys_user_role::getUnderTakeId, "=", undertake.getId())); List selectUserIds = sysUserRoles.stream().map(Sys_user_role::getUserId).toList(); diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonServiceImpl.java index f6b9cf2..43ca5d9 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/common/ProposalCommonServiceImpl.java @@ -177,6 +177,7 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp info.code, info.brief, info.measures, + info.researchFindings, info.createUserName, DATE_FORMAT(info.createTime, '%Y年%m月%d日') AS createTime, info.unitName, @@ -199,6 +200,8 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp //处理下富文本 String brief = docData.getString("brief"); String measures = docData.getString("measures"); + String researchFindings = docData.getString("researchFindings"); + docData.put("researchFindings", sysOfficeTemplateUtil.convertRichTextToDocText(researchFindings)); docData.put("brief", sysOfficeTemplateUtil.convertRichTextToDocText(brief)); docData.put("measures", sysOfficeTemplateUtil.convertRichTextToDocText(measures)); @@ -218,8 +221,27 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp // 按任务节点分组 Map> taskGroups = doneTaskVos.stream().collect(Collectors.groupingBy(ProcessTaskVO::getDisplayName)); - docData.putAll(taskGroups); + + Optional> optionalList = taskGroups.entrySet().stream() + .filter(entry -> entry.getKey().contains("党委书记审核")) + .map(Map.Entry::getValue) + .findFirst(); + + if (optionalList.isPresent()) { + List tasks = optionalList.get(); + docData.put("auditName","党委书记审核"); + taskGroups.put("auditInfo",tasks); + }else{ + Optional> optionalList2 = taskGroups.entrySet().stream() + .filter(entry -> entry.getKey().contains("单位负责人审核")) + .map(Map.Entry::getValue) + .findFirst(); + List tasks = optionalList2.get(); + docData.put("auditName","单位负责人审核"); + taskGroups.put("auditInfo",tasks); + } + docData.putAll(taskGroups); LoopRowTableRenderPolicy policy = new LoopRowTableRenderPolicy(); HtmlRenderPolicy htmlRenderPolicy = new HtmlRenderPolicy(); htmlRenderPolicy.getConfig().setShowDefaultTableBorderInTableCell(true); @@ -227,6 +249,7 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl imp Configure config = Configure.builder() .bind("seconders", policy) .bind("提案附议", policy) + .bind("researchFindings", htmlRenderPolicy) .bind("brief", htmlRenderPolicy) .bind("measures", htmlRenderPolicy) .bind("taskFormData.tf_opinion", htmlRenderPolicy) diff --git a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java index 19270e7..c21b653 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/proposal/service/impl/ProposalExportServiceImpl.java @@ -41,10 +41,7 @@ import org.nutz.lang.util.NutMap; import javax.servlet.http.HttpServletResponse; import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -193,8 +190,18 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp // 添加序号,去除富文本,获取附议人 for (int i = 0; i < list.size(); i++) { list.get(i).put("index", i + 1); - list.get(i).put("brief", HtmlUtil.cleanHtmlTag(list.get(i).getString("brief"))); - list.get(i).put("measures", HtmlUtil.cleanHtmlTag(list.get(i).getString("measures"))); + if (StrUtil.isNotBlank(list.get(i).getString("researchFindings"))) { + list.get(i).put("researchFindings", + HtmlUtil.unescape(HtmlUtil.cleanHtmlTag(list.get(i).getString("researchFindings"))) + .replaceAll("\\s+", " ") + .trim()); + } + list.get(i).put("brief", HtmlUtil.unescape(HtmlUtil.cleanHtmlTag(list.get(i).getString("brief"))) + .replaceAll("\\s+", " ") + .trim()); + list.get(i).put("measures", HtmlUtil.unescape(HtmlUtil.cleanHtmlTag(list.get(i).getString("measures"))) + .replaceAll("\\s+", " ") + .trim()); list.get(i).put("suggestUnits", list.get(i).getString("suggestUnits").replace("[", "").replace("]", "")); @@ -211,11 +218,16 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp if (inviteTask != null) { NutMap variable = Json.fromJson(NutMap.class, inviteTask.getVariable()); - List seconders = variable.getAsList(FlowConst.TASK_FORM_DATA_PREFIX + "seconder", NutMap.class); - list.get(i).put("secondedUserNames", seconders.stream().map(v -> v.getString("userName")).collect(Collectors.joining(","))); + if (StrUtil.isNotBlank(variable.getString("variable"))) { + List seconders = variable.getAsList(FlowConst.TASK_FORM_DATA_PREFIX + "seconder", NutMap.class); + list.get(i).put("secondedUserNames", seconders.stream().map(v -> v.getString("userName")).collect(Collectors.joining(","))); + } } } - + List> safeList = list.stream().map(nutMap -> { + Map map = new HashMap<>(nutMap); + return map; + }).collect(Collectors.toList()); List exportEntities = new ArrayList<>(); exportEntities.add(new ExcelExportEntity("序号", "index", 10)); exportEntities.add(new ExcelExportEntity("提案编号", "code", 20)); @@ -235,7 +247,7 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp ExportParams exportParams = new ExportParams(); exportParams.setType(ExcelType.XSSF); exportParams.setTitle(title); - Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, safeList); CommonDownloadUtil.download(title + ".xlsx", workbook, response); } @@ -250,7 +262,7 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp List list = listMap(sql); for (NutMap row : list) { - String content = HtmlUtil.cleanHtmlTag(StrUtil.blankToDefault(row.getString("masterUnderTakeReply"), "")); + String content = HtmlUtil.removeHtmlTag(StrUtil.blankToDefault(row.getString("masterUnderTakeReply"), "")); row.put("masterUnderTakeReply", content); } @@ -421,6 +433,7 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp NutMap info = (NutMap) sql.getResult(); // 处理富文本内容 + info.put("researchFindings", sysOfficeTemplateUtil.convertRichTextToDocText(info.getString("researchFindings"))); info.put("brief", sysOfficeTemplateUtil.convertRichTextToDocText(info.getString("brief"))); info.put("measures", sysOfficeTemplateUtil.convertRichTextToDocText(info.getString("measures"))); @@ -478,6 +491,7 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp .bind("seconders", policy) .bind("brief", htmlRenderPolicy) .bind("measures", htmlRenderPolicy) + .bind("researchFindings", htmlRenderPolicy) .build(); try { @@ -541,6 +555,7 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp info.name, info.code, info.researchFindings, + info.suggestUnits, info.brief, info.measures, info.createUserName, @@ -573,8 +588,18 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp // 添加序号,去除富文本,获取附议人 for (int i = 0; i < list.size(); i++) { list.get(i).put("index", i + 1); - list.get(i).put("brief", HtmlUtil.cleanHtmlTag(list.get(i).getString("brief"))); - list.get(i).put("measures", HtmlUtil.cleanHtmlTag(list.get(i).getString("measures"))); + if (StrUtil.isNotBlank(list.get(i).getString("researchFindings"))) { + list.get(i).put("researchFindings", HtmlUtil.unescape(HtmlUtil.cleanHtmlTag(list.get(i).getString("researchFindings"))) + .replaceAll("\\s+", " ") + .trim()); + } + list.get(i).put("brief", HtmlUtil.unescape(HtmlUtil.cleanHtmlTag(list.get(i).getString("brief"))) + .replaceAll("\\s+", " ") + .trim()); + list.get(i).put("measures", HtmlUtil.unescape(HtmlUtil.cleanHtmlTag(list.get(i).getString("measures"))) + .replaceAll("\\s+", " ") + .trim()); + list.get(i).put("suggestUnits", list.get(i).getString("suggestUnits").replace("[", "").replace("]", "")); // 流程实例 // ProcessInstance instance = dao().fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", list.get(i).getString("id"))); @@ -610,6 +635,11 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp row.put("instanceState", processInstanceStateMap.get(row.getString("instanceState"))); } + List> safeList = list.stream().map(nutMap -> { + Map map = new HashMap<>(nutMap); + return map; + }).collect(Collectors.toList()); + List exportEntities = new ArrayList<>(); for (ExportTableColumns column : tableColumns) { @@ -622,7 +652,7 @@ public class ProposalExportServiceImpl extends BaseServiceImpl imp ExportParams exportParams = new ExportParams(); exportParams.setType(ExcelType.XSSF); exportParams.setTitle(title); - Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list); + Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, safeList); CommonDownloadUtil.download(title + ".xlsx", workbook, response); } } diff --git a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegation/controller/TeacherCongressDelegationController.java b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegation/controller/TeacherCongressDelegationController.java index 2f7be70..bd3e3c0 100644 --- a/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegation/controller/TeacherCongressDelegationController.java +++ b/src/main/java/com/budwk/app/zhgh/democratic/teachercongress/delegation/controller/TeacherCongressDelegationController.java @@ -33,6 +33,7 @@ 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.Lang; import org.nutz.lang.util.NutMap; import org.nutz.mvc.annotation.At; import org.nutz.mvc.annotation.Ok; @@ -40,6 +41,7 @@ import org.nutz.mvc.annotation.POST; import org.nutz.mvc.annotation.Param; import javax.validation.Valid; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Optional; @@ -285,6 +287,9 @@ public class TeacherCongressDelegationController { } if (type.equals("TEACHER_CONGRESS_VICE_DELEGATION_HEAD")){ List recordList = dao.query("sys_user_role", Cnd.where("tcSessionId", "=", sessionId).and("tcDelegationId", "=", delegationId).and("roleId", "=", role.getId())); + if (Lang.isEmpty(recordList)) { + return Result.success(new ArrayList<>()); + } List userIdList = recordList.stream().map(record -> record.getString("userId")).toList(); String userIds = userIdList.stream() .map(s -> "'" + s + "'") // 给每个元素加上单引号 @@ -307,7 +312,9 @@ public class TeacherCongressDelegationController { }else{ Record record = dao.fetch("sys_user_role", Cnd.where("tcSessionId", "=", sessionId).and("tcDelegationId", "=", delegationId).and("roleId", "=", role.getId())); String userId = Optional.ofNullable(record).map(r -> r.getString("userId")).orElse(null); - + if (Lang.isEmpty(userId)) { + return Result.success(new NutMap()); + } Sql sql = Sqls.create(""" SELECT u.id as userId, @@ -338,7 +345,7 @@ public class TeacherCongressDelegationController { * @param delegationId 代表团ID * @param sessionId 届次ID * @param userId 团长id - * @param viceUserId 副团长id + * @param viceUserIds 副团长id * @param contactUserId 联络人 * @return */ diff --git a/src/main/resources/views/layouts/v4/home.html b/src/main/resources/views/layouts/v4/home.html index caec602..3369f6a 100644 --- a/src/main/resources/views/layouts/v4/home.html +++ b/src/main/resources/views/layouts/v4/home.html @@ -1965,7 +1965,7 @@ layout("/layouts/v4/baseLayout.html"){
-

基层动态

+

工会动态

@@ -1988,8 +1988,8 @@ layout("/layouts/v4/baseLayout.html"){
-
暂无基层动态
-
当前没有可用的基层动态内容
+
暂无工会动态
+
当前没有可用的工会动态内容
diff --git a/src/main/resources/views/layouts/v4/home/jcdt.js b/src/main/resources/views/layouts/v4/home/jcdt.js index 736f7b1..2a740ad 100644 --- a/src/main/resources/views/layouts/v4/home/jcdt.js +++ b/src/main/resources/views/layouts/v4/home/jcdt.js @@ -3,7 +3,7 @@ const jcdt = {
- 基层动态 + 工会动态
diff --git a/src/main/resources/views/platform/zhgh/democratic/proposal/export/comprehensive/index.html b/src/main/resources/views/platform/zhgh/democratic/proposal/export/comprehensive/index.html index 910d4a2..0c597f1 100644 --- a/src/main/resources/views/platform/zhgh/democratic/proposal/export/comprehensive/index.html +++ b/src/main/resources/views/platform/zhgh/democratic/proposal/export/comprehensive/index.html @@ -148,6 +148,15 @@ layout("/layouts/platform.html"){ + + +