Compare commits
16
Commits
52d5591d11
..
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5da96a8117 | ||
|
|
3c7e80c428 | ||
|
|
d2d3fe9a3f | ||
|
|
e9e6a4d4be | ||
|
|
726ae57b96 | ||
|
|
56fe0c2933 | ||
|
|
1b98a1a24f | ||
|
|
3a23146903 | ||
|
|
782426a428 | ||
|
|
f441623aec | ||
|
|
07b38a2251 | ||
|
|
8df60b9c5c | ||
|
|
a3cac78d1d | ||
|
|
89d3475401 | ||
|
|
c5df88bd92 | ||
|
|
ccc29fee66 |
@@ -86,6 +86,7 @@ public class MainLauncher {
|
|||||||
ioc.get(GlobalMessageSendService.class);
|
ioc.get(GlobalMessageSendService.class);
|
||||||
|
|
||||||
AppIocUtil.setIoc(ioc);
|
AppIocUtil.setIoc(ioc);
|
||||||
|
ioc.get(com.budwk.app.sys.services.impl.SysUserDailySyncService.class).register();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void init_auth() {
|
public void init_auth() {
|
||||||
|
|||||||
@@ -0,0 +1,44 @@
|
|||||||
|
package com.budwk.app.base.config;
|
||||||
|
|
||||||
|
import com.alibaba.druid.pool.DruidDataSource;
|
||||||
|
import org.nutz.dao.Dao;
|
||||||
|
import org.nutz.dao.impl.NutDao;
|
||||||
|
import org.nutz.ioc.impl.PropertiesProxy;
|
||||||
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
|
||||||
|
/** 推送库独立连接池,仅供人员、单位中间表查询,不能代替系统默认 DAO。 */
|
||||||
|
@IocBean(create = "init", depose = "close")
|
||||||
|
public class UserSourceDatabase {
|
||||||
|
@Inject
|
||||||
|
private PropertiesProxy conf;
|
||||||
|
private DruidDataSource dataSource;
|
||||||
|
private Dao dao;
|
||||||
|
|
||||||
|
/** 根据 user-source.jdbc 配置初始化来源连接;连接按需建立,使用只读模式。 */
|
||||||
|
public void init() {
|
||||||
|
dataSource = new DruidDataSource();
|
||||||
|
dataSource.setUrl(conf.get("user-source.jdbc.url"));
|
||||||
|
dataSource.setUsername(conf.get("user-source.jdbc.username"));
|
||||||
|
dataSource.setPassword(conf.get("user-source.jdbc.password"));
|
||||||
|
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
|
||||||
|
dataSource.setDefaultReadOnly(true);
|
||||||
|
dataSource.setMaxActive(3);
|
||||||
|
dataSource.setMaxWait(10000);
|
||||||
|
dataSource.setValidationQuery("select 1");
|
||||||
|
dataSource.setTestWhileIdle(true);
|
||||||
|
dao = new NutDao(dataSource);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 返回来源库 DAO;调用方只能查询中间表,业务写入继续使用默认 DAO。 */
|
||||||
|
public Dao dao() {
|
||||||
|
return dao;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 应用退出时释放来源库连接。 */
|
||||||
|
public void close() {
|
||||||
|
if (dataSource != null) {
|
||||||
|
dataSource.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -26,14 +26,15 @@ RoleConstant {
|
|||||||
SCHOOL_UNION_DC_ADMIN("校工会民主管理员"),
|
SCHOOL_UNION_DC_ADMIN("校工会民主管理员"),
|
||||||
SCHOOL_UNION_PROPOSAL_ADMIN("校工会提案管理员"),
|
SCHOOL_UNION_PROPOSAL_ADMIN("校工会提案管理员"),
|
||||||
APPEAL_COMMITTEE_MEMBER("申诉处理委员会成员"),
|
APPEAL_COMMITTEE_MEMBER("申诉处理委员会成员"),
|
||||||
SCHOOL_UNION_CLUB_ADMIN("校工会协会管理员"),
|
SCHOOL_UNION_CLUB_ADMIN("校工会俱乐部管理员"),
|
||||||
SCHOOL_UNION_ACTIVITY_ADMIN("校工会活动管理员"),
|
SCHOOL_UNION_ACTIVITY_ADMIN("校工会活动管理员"),
|
||||||
SCHOOL_UNION_ARTICLE_CLUB_ADMIN("校工会协会新闻审批管理员"),
|
SCHOOL_UNION_ARTICLE_CLUB_ADMIN("校工会俱乐部新闻审批管理员"),
|
||||||
SCHOOL_UNION_ARTICLE_FGH_ADMIN("校工会分工会新闻审批管理员"),
|
SCHOOL_UNION_ARTICLE_FGH_ADMIN("校工会分工会新闻审批管理员"),
|
||||||
SCHOOL_UNION_ARTICLE_ADMIN("校工会新闻审批管理员"),
|
SCHOOL_UNION_ARTICLE_ADMIN("校工会新闻审批管理员"),
|
||||||
SCHOOL_OUTLAY_ADMIN("校工会经费管理员"),
|
SCHOOL_OUTLAY_ADMIN("校工会经费管理员"),
|
||||||
|
|
||||||
BRANCH_UNION_ADMIN("分工会管理员"),
|
BRANCH_UNION_ADMIN("分工会管理员"),
|
||||||
|
BRANCH_UNION_CADRE("基层干部"),
|
||||||
BRANCH_UNION_CHAIRMAN("分工会主席"),
|
BRANCH_UNION_CHAIRMAN("分工会主席"),
|
||||||
BRANCH_UNION_VICE_CHAIRMAN("分工会副主席"),
|
BRANCH_UNION_VICE_CHAIRMAN("分工会副主席"),
|
||||||
BRANCH_UNION_OPERATOR("分工会操作员"),
|
BRANCH_UNION_OPERATOR("分工会操作员"),
|
||||||
@@ -79,15 +80,15 @@ RoleConstant {
|
|||||||
SCHOOL_HOSPITAL_LEADER("校医院负责人"),
|
SCHOOL_HOSPITAL_LEADER("校医院负责人"),
|
||||||
|
|
||||||
/*协会模块*/
|
/*协会模块*/
|
||||||
CLUB_MEMBER("协会会员"),
|
CLUB_MEMBER("俱乐部会员"),
|
||||||
CLUB_MANAGER("协会负责人"),
|
CLUB_MANAGER("俱乐部负责人"),
|
||||||
CLUB_PRESIDENT("协会会长"),
|
CLUB_PRESIDENT("俱乐部会长"),
|
||||||
CLUB_VICE_PRESIDENT("协会副会长"),
|
CLUB_VICE_PRESIDENT("俱乐部副会长"),
|
||||||
CLUB_SECRETARY("协会秘书长"),
|
CLUB_SECRETARY("俱乐部秘书长"),
|
||||||
CLUB_VICE_SECRETARY("协会副秘书长"),
|
CLUB_VICE_SECRETARY("俱乐部副秘书长"),
|
||||||
// SCHOOL_UNION_CLUB_ADMIN("校工会协会管理员"),
|
// SCHOOL_UNION_CLUB_ADMIN("校工会协会管理员"),
|
||||||
CLUB_AUDIT_LEADER("协会分管领导"),
|
CLUB_AUDIT_LEADER("俱乐部分管领导"),
|
||||||
CLUB_OPERATOR("协会操作员"),
|
CLUB_OPERATOR("俱乐部操作员"),
|
||||||
|
|
||||||
/*大病基金会员*/
|
/*大病基金会员*/
|
||||||
AID_FUND_MEMBER("大病基金会员"),
|
AID_FUND_MEMBER("大病基金会员"),
|
||||||
@@ -101,7 +102,7 @@ RoleConstant {
|
|||||||
LEGAL_DOCTOR("法律顾问"),
|
LEGAL_DOCTOR("法律顾问"),
|
||||||
|
|
||||||
UNION_REIMBURSEMENT_MANAGER("分工会报销负责人"),
|
UNION_REIMBURSEMENT_MANAGER("分工会报销负责人"),
|
||||||
CLUB_REIMBURSEMENT_MANAGER("协会报销负责人"),
|
CLUB_REIMBURSEMENT_MANAGER("俱乐部报销负责人"),
|
||||||
SCHOOL_REIMBURSEMENT_MANAGER("校工会报销负责人"),
|
SCHOOL_REIMBURSEMENT_MANAGER("校工会报销负责人"),
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.budwk.app.base.event.role;
|
package com.budwk.app.base.event.role;
|
||||||
|
|
||||||
import org.nutz.mvc.Mvcs;
|
import com.budwk.app.base.utils.AppIocUtil;
|
||||||
|
import org.nutz.ioc.Ioc;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
@@ -11,10 +12,19 @@ import org.nutz.mvc.Mvcs;
|
|||||||
*/
|
*/
|
||||||
public class RoleEventPublisher {
|
public class RoleEventPublisher {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 同步发布角色变更,兼容 HTTP 请求与 Quartz 后台线程。
|
||||||
|
* 无返回值;监听器异常继续向调用方抛出,使外层业务事务可以回滚。
|
||||||
|
*
|
||||||
|
* @param event 角色事件:roleCode 为角色编码,userIds 或 unitId 指定人员范围,
|
||||||
|
* operationType 为 ADD_ROLE、REMOVE_ROLE 或 RENEW_ROLE
|
||||||
|
*/
|
||||||
public static void broadcast(RoleEventMsg event){
|
public static void broadcast(RoleEventMsg event){
|
||||||
String[] names = Mvcs.getIoc().getNamesByType(RoleEventListener.class);
|
// 使用应用启动时保存的全局容器,避免后台线程依赖 HTTP 请求上下文。
|
||||||
|
Ioc ioc = AppIocUtil.get();
|
||||||
|
String[] names = ioc.getNamesByType(RoleEventListener.class);
|
||||||
for (String name : names) {
|
for (String name : names) {
|
||||||
RoleEventListener listener = Mvcs.getIoc().get(RoleEventListener.class, name);
|
RoleEventListener listener = ioc.get(RoleEventListener.class, name);
|
||||||
listener.receive(event);
|
listener.receive(event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -34,7 +34,7 @@ public class FlowClubPresidentByArgsAssignmentHandler implements AssignmentHandl
|
|||||||
}
|
}
|
||||||
|
|
||||||
CommonService commonService = ServiceContext.find(CommonService.class);
|
CommonService commonService = ServiceContext.find(CommonService.class);
|
||||||
List<Sys_user> users = commonService.findUserInfoByRoleCode(Sys_user_role::getClubId, clubId, RoleConstant.CLUB_PRESIDENT);
|
List<Sys_user> users = commonService.findUserInfoByRoleCode(Sys_user_role::getClubId, clubId, RoleConstant.CLUB_MANAGER);
|
||||||
|
|
||||||
if(Lang.isEmpty(users)) {
|
if(Lang.isEmpty(users)) {
|
||||||
throw new BaseException("未查询到相关审批人");
|
throw new BaseException("未查询到相关审批人");
|
||||||
@@ -45,7 +45,7 @@ public class FlowClubPresidentByArgsAssignmentHandler implements AssignmentHandl
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getMessage() {
|
public String getMessage() {
|
||||||
return "获取协会会长(根据args中的clubId)";
|
return "获取俱乐部负责人(根据args中的clubId)";
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -204,23 +204,24 @@ public class SysHomeController {
|
|||||||
FROM sys_home_activity
|
FROM sys_home_activity
|
||||||
WHERE enable = 1
|
WHERE enable = 1
|
||||||
ORDER BY
|
ORDER BY
|
||||||
-- 第一优先级:活动状态分组(进行中 → 未开始 → 已结束)
|
-- 第一优先级:活动状态分组(未开始 → 进行中 → 已结束)
|
||||||
CASE
|
CASE
|
||||||
WHEN startDate <= NOW() AND NOW() <= endDate THEN 0 -- 进行中
|
WHEN startDate <= NOW() AND NOW() <= endDate THEN 1 -- 进行中
|
||||||
WHEN startDate > NOW() THEN 1 -- 未开始
|
WHEN startDate > NOW() THEN 0 -- 未开始
|
||||||
ELSE 2 -- 已结束
|
ELSE 2 -- 已结束
|
||||||
END ASC,
|
END ASC,
|
||||||
-- 第二优先级:置顶(如果需要置顶在各自分组内生效)
|
-- 第二优先级:进行中、未开始按开始时间升序,已结束按结束时间降序
|
||||||
top DESC,
|
|
||||||
-- 第三优先级:每组内按时间排序
|
|
||||||
-- 进行中:按开始时间升序(越早开始的越靠前)
|
|
||||||
-- 未开始:按开始时间升序(快开始的靠前)
|
|
||||||
-- 已结束:按结束时间降序(最近结束的靠前)或开始时间降序
|
|
||||||
CASE
|
CASE
|
||||||
WHEN startDate <= NOW() AND NOW() <= endDate THEN startDate
|
WHEN startDate <= NOW() AND NOW() <= endDate THEN startDate
|
||||||
WHEN startDate > NOW() THEN startDate
|
WHEN startDate > NOW() THEN startDate
|
||||||
ELSE endDate
|
ELSE NULL
|
||||||
END ASC;
|
END ASC,
|
||||||
|
CASE
|
||||||
|
WHEN endDate < NOW() THEN endDate
|
||||||
|
ELSE NULL
|
||||||
|
END DESC,
|
||||||
|
-- 时间相同时置顶优先
|
||||||
|
top DESC;
|
||||||
""");
|
""");
|
||||||
List<NutMap> listMap = sysUserService.listMap(activitySql);
|
List<NutMap> listMap = sysUserService.listMap(activitySql);
|
||||||
List<Sys_home_activity> list = listMap.stream()
|
List<Sys_home_activity> list = listMap.stream()
|
||||||
|
|||||||
@@ -1,5 +1,9 @@
|
|||||||
package com.budwk.app.sys.controller;
|
package com.budwk.app.sys.controller;
|
||||||
|
|
||||||
|
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||||
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||||
|
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||||
|
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.lang.Dict;
|
import cn.hutool.core.lang.Dict;
|
||||||
@@ -12,6 +16,7 @@ import com.budwk.app.base.exception.BaseException;
|
|||||||
import com.budwk.app.base.page.Pagination;
|
import com.budwk.app.base.page.Pagination;
|
||||||
import com.budwk.app.base.param.PageForm;
|
import com.budwk.app.base.param.PageForm;
|
||||||
import com.budwk.app.base.result.Result;
|
import com.budwk.app.base.result.Result;
|
||||||
|
import com.budwk.app.base.utils.CommonDownloadUtil;
|
||||||
import com.budwk.app.base.utils.PageUtil;
|
import com.budwk.app.base.utils.PageUtil;
|
||||||
import com.budwk.app.flow.constant.FlowConst;
|
import com.budwk.app.flow.constant.FlowConst;
|
||||||
import com.budwk.app.flow.engine.FlowEngine;
|
import com.budwk.app.flow.engine.FlowEngine;
|
||||||
@@ -27,6 +32,7 @@ import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
|||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
import org.nutz.dao.Chain;
|
import org.nutz.dao.Chain;
|
||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
@@ -44,6 +50,7 @@ import org.nutz.mvc.annotation.At;
|
|||||||
import org.nutz.mvc.annotation.Ok;
|
import org.nutz.mvc.annotation.Ok;
|
||||||
import org.nutz.mvc.annotation.Param;
|
import org.nutz.mvc.annotation.Param;
|
||||||
|
|
||||||
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@@ -357,26 +364,30 @@ public class SysUnionController {
|
|||||||
unionCadre.setIsJoin(true);
|
unionCadre.setIsJoin(true);
|
||||||
dao.insert(unionCadre);
|
dao.insert(unionCadre);
|
||||||
|
|
||||||
// 去走工作流
|
boolean isAdmin = AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(),
|
||||||
boolean isAdmin = AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name());
|
RoleConstant.SCHOOL_UNION_CHAIRMAN.name());
|
||||||
Dict args = Dict.create();
|
|
||||||
args.set("submit", isAdmin ? "admin" : "branch");
|
|
||||||
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
|
|
||||||
args.set(FlowConst.FORM_DATA, unionCadre);
|
|
||||||
|
|
||||||
ProcessInstance instance = flowEngine.startProcessInstanceByKey("JCGHWY", unionCadre.getId(), SecurityUtil.getUserId(), args);
|
|
||||||
// 自动完成第一个申请任务
|
|
||||||
List<ProcessTask> doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null);
|
|
||||||
for (ProcessTask task : doingTaskList) {
|
|
||||||
flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isAdmin) {
|
if (isAdmin) {
|
||||||
// 如果是管理员,直接加角色
|
// 如果是管理员,直接加角色
|
||||||
sysRoleService.clear("sys_user_role", Cnd.where("roleId", "=", role.getId()).and("userId", "=", userId).and("unionId", "=", unionId));
|
sysRoleService.clear("sys_user_role", Cnd.where("roleId", "=", role.getId()).and("userId", "=", userId).and("unionId", "=", unionId));
|
||||||
sysRoleService.insert("sys_user_role", Chain.make("roleId", role.getId()).add("userId", userId).add("unionId", unionId));
|
sysRoleService.insert("sys_user_role", Chain.make("roleId", role.getId()).add("userId", userId).add("unionId", unionId));
|
||||||
|
Sys_role cadreRole = sysRoleService.getByCode(RoleConstant.BRANCH_UNION_CADRE);
|
||||||
|
sysRoleService.clear("sys_user_role", Cnd.where("roleId", "=", cadreRole.getId()).and("userId", "=", userId).and("unionId", "=", unionId));
|
||||||
|
sysRoleService.insert("sys_user_role", Chain.make("roleId", cadreRole.getId()).add("userId", userId).add("unionId", unionId));
|
||||||
sysRoleService.clearCache();
|
sysRoleService.clearCache();
|
||||||
sysUserService.clearCache();
|
sysUserService.clearCache();
|
||||||
|
} else {
|
||||||
|
// 分工会管理员添加干部时提交校工会审核。
|
||||||
|
Dict args = Dict.create();
|
||||||
|
args.set("submit", "branch");
|
||||||
|
args.set(FlowConst.SUBMIT_TYPE, ProcessSubmitTypeEnum.APPLY.getCode());
|
||||||
|
args.set(FlowConst.FORM_DATA, unionCadre);
|
||||||
|
|
||||||
|
ProcessInstance instance = flowEngine.startProcessInstanceByKey("JCGHWY", unionCadre.getId(), SecurityUtil.getUserId(), args);
|
||||||
|
// 自动完成第一个申请任务
|
||||||
|
List<ProcessTask> doingTaskList = flowEngine.processTaskService().getDoingTaskList(instance.getId(), null);
|
||||||
|
for (ProcessTask task : doingTaskList) {
|
||||||
|
flowEngine.executeProcessTask(task.getId(), SecurityUtil.getUserId(), args);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Result.success();
|
return Result.success();
|
||||||
@@ -385,11 +396,19 @@ public class SysUnionController {
|
|||||||
@At
|
@At
|
||||||
@ApiOperation("删除分工会人员角色")
|
@ApiOperation("删除分工会人员角色")
|
||||||
@SaCheckPermission("sys.manager.union.branchOfficer")
|
@SaCheckPermission("sys.manager.union.branchOfficer")
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
public Result deleteBranchUnionUserRole(String userId, String roleCode, String unionId) {
|
public Result deleteBranchUnionUserRole(String userId, String roleCode, String unionId) {
|
||||||
Sys_role role = sysRoleService.fetch(Cnd.where("code", "=", roleCode));
|
Sys_role role = sysRoleService.fetch(Cnd.where("code", "=", roleCode));
|
||||||
if (Lang.isEmpty(role)) {
|
if (Lang.isEmpty(role)) {
|
||||||
throw new BaseException("无法找到{}对应编码的角色", roleCode);
|
throw new BaseException("无法找到{}对应编码的角色", roleCode);
|
||||||
}
|
}
|
||||||
|
Cnd unionCadreCnd = Cnd.where("userId", "=", userId)
|
||||||
|
.and("unionId", "=", unionId).and("roleCode", "=", roleCode);
|
||||||
|
List<Sys_union_cadre> unionCadres = dao.query(Sys_union_cadre.class, unionCadreCnd);
|
||||||
|
// 删除干部申请时同步删除流程,避免审核列表残留空白待办。
|
||||||
|
for (Sys_union_cadre unionCadre : unionCadres) {
|
||||||
|
flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(unionCadre.getId());
|
||||||
|
}
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
cnd.and("roleId", "=", role.getId());
|
cnd.and("roleId", "=", role.getId());
|
||||||
if (StrUtil.isNotBlank(userId)) {
|
if (StrUtil.isNotBlank(userId)) {
|
||||||
@@ -401,8 +420,20 @@ public class SysUnionController {
|
|||||||
|
|
||||||
sysRoleService.clear("sys_user_role", cnd);
|
sysRoleService.clear("sys_user_role", cnd);
|
||||||
|
|
||||||
dao.clear(Sys_union_cadre.class, Cnd.where("userId", "=", userId)
|
dao.clear(Sys_union_cadre.class, unionCadreCnd);
|
||||||
.and("unionId", "=", unionId).and("roleCode", "=", roleCode));
|
|
||||||
|
List<String> branchUnionRoleCodes = sysDictService.getSubListByCode("BRANCH_UNION_ROLES")
|
||||||
|
.stream().map(Sys_dict::getCode).toList();
|
||||||
|
List<String> branchUnionRoleIds = CollUtil.isEmpty(branchUnionRoleCodes) ? List.of() :
|
||||||
|
sysRoleService.query(Cnd.where("code", "in", branchUnionRoleCodes))
|
||||||
|
.stream().map(Sys_role::getId).toList();
|
||||||
|
int branchUnionRoleCount = CollUtil.isEmpty(branchUnionRoleIds) ? 0 : dao.count(Sys_user_role.class,
|
||||||
|
Cnd.where("userId", "=", userId).and("unionId", "=", unionId).and("roleId", "in", branchUnionRoleIds));
|
||||||
|
if (branchUnionRoleCount == 0) {
|
||||||
|
Sys_role cadreRole = sysRoleService.getByCode(RoleConstant.BRANCH_UNION_CADRE);
|
||||||
|
sysRoleService.clear("sys_user_role", Cnd.where("roleId", "=", cadreRole.getId())
|
||||||
|
.and("userId", "=", userId).and("unionId", "=", unionId));
|
||||||
|
}
|
||||||
|
|
||||||
sysRoleService.clearCache();
|
sysRoleService.clearCache();
|
||||||
sysUserService.clearCache();
|
sysUserService.clearCache();
|
||||||
@@ -470,6 +501,57 @@ public class SysUnionController {
|
|||||||
return Result.success(pagination.getList());
|
return Result.success(pagination.getList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@At
|
||||||
|
@Ok("void")
|
||||||
|
@ApiOperation("导出基层干部")
|
||||||
|
@SaCheckPermission("sys.manager.union")
|
||||||
|
public void exportCadre(HttpServletResponse response) {
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
u.loginname AS loginName,
|
||||||
|
u.username AS userName,
|
||||||
|
IFNULL(MAX(branchUnion.`name`), '') AS unionName,
|
||||||
|
u.mobile,
|
||||||
|
GROUP_CONCAT(DISTINCT role.`name` ORDER BY role.sort ASC SEPARATOR '、') AS roleName
|
||||||
|
FROM
|
||||||
|
sys_role role
|
||||||
|
INNER JOIN sys_user_role ur ON role.id = ur.roleId
|
||||||
|
INNER JOIN sys_user u ON u.id = ur.userId
|
||||||
|
LEFT JOIN vw_user currentUser ON currentUser.id = u.id
|
||||||
|
LEFT JOIN sys_union branchUnion ON branchUnion.id = COALESCE(NULLIF(currentUser.unionId, ''), NULLIF(ur.unionId, ''))
|
||||||
|
INNER JOIN sys_dict roleDict ON roleDict.`code` = role.`code`
|
||||||
|
INNER JOIN sys_dict roleParent ON roleParent.id = roleDict.parentId
|
||||||
|
AND roleParent.`code` = 'BRANCH_UNION_ROLES'
|
||||||
|
$condition
|
||||||
|
""");
|
||||||
|
Cnd cnd = Cnd.NEW();
|
||||||
|
if (AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) {
|
||||||
|
cnd.and("COALESCE(NULLIF(currentUser.unionId, ''), NULLIF(ur.unionId, ''))", "=", SecurityUtil.getUnionId());
|
||||||
|
}
|
||||||
|
cnd.groupBy("ur.userId");
|
||||||
|
cnd.asc("MIN(branchUnion.unionCode)");
|
||||||
|
cnd.asc("u.loginname");
|
||||||
|
sql.setCondition(cnd);
|
||||||
|
List<NutMap> list = sysUnionService.listMap(sql);
|
||||||
|
for (int i = 0; i < list.size(); i++) {
|
||||||
|
list.get(i).put("no", i + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<ExcelExportEntity> exportEntities = new ArrayList<>();
|
||||||
|
exportEntities.add(new ExcelExportEntity("序号", "no", 10));
|
||||||
|
exportEntities.add(new ExcelExportEntity("工号", "loginName", 20));
|
||||||
|
exportEntities.add(new ExcelExportEntity("姓名", "userName", 20));
|
||||||
|
exportEntities.add(new ExcelExportEntity("所属工会", "unionName", 30));
|
||||||
|
exportEntities.add(new ExcelExportEntity("联系方式", "mobile", 20));
|
||||||
|
exportEntities.add(new ExcelExportEntity("职务", "roleName", 30));
|
||||||
|
|
||||||
|
ExportParams exportParams = new ExportParams();
|
||||||
|
exportParams.setSheetName("基层干部");
|
||||||
|
exportParams.setType(ExcelType.XSSF);
|
||||||
|
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list);
|
||||||
|
CommonDownloadUtil.download("基层干部.xlsx", workbook, response);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 基层干部审核相关
|
* 基层干部审核相关
|
||||||
@@ -510,6 +592,7 @@ public class SysUnionController {
|
|||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
cnd.and("t.taskName", "=", "2978a74a-75c1-4f95-99f9-9c08c480f1b5");
|
cnd.and("t.taskName", "=", "2978a74a-75c1-4f95-99f9-9c08c480f1b5");
|
||||||
|
cnd.and("info.id", "is not", null);
|
||||||
if (pageForm.getAudit()) {
|
if (pageForm.getAudit()) {
|
||||||
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(),
|
cnd.and("t.taskState", "in", List.of(ProcessTaskStateEnum.FINISHED.getCode(),
|
||||||
ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
ProcessTaskStateEnum.WITHDRAW.getCode(), ProcessTaskStateEnum.INTERRUPT.getCode()));
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.budwk.app.sys.interceptor;
|
package com.budwk.app.sys.interceptor;
|
||||||
|
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.budwk.app.base.constant.RoleConstant;
|
||||||
import com.budwk.app.flow.constant.FlowConst;
|
import com.budwk.app.flow.constant.FlowConst;
|
||||||
import com.budwk.app.flow.engine.FlowInterceptor;
|
import com.budwk.app.flow.engine.FlowInterceptor;
|
||||||
import com.budwk.app.flow.engine.core.Execution;
|
import com.budwk.app.flow.engine.core.Execution;
|
||||||
@@ -44,6 +45,13 @@ public class SysUnionSchoolAuditInterceptor implements FlowInterceptor {
|
|||||||
sysRoleService.insert("sys_user_role", Chain.make("roleId", role.getId())
|
sysRoleService.insert("sys_user_role", Chain.make("roleId", role.getId())
|
||||||
.add("userId", unionBean.getUserId()).add("unionId", unionBean.getUnionId()));
|
.add("userId", unionBean.getUserId()).add("unionId", unionBean.getUnionId()));
|
||||||
|
|
||||||
|
// 分工会干部统一增加基层干部角色,便于按干部身份集中管理。
|
||||||
|
Sys_role cadreRole = sysRoleService.getByCode(RoleConstant.BRANCH_UNION_CADRE);
|
||||||
|
sysRoleService.clear("sys_user_role", Cnd.where("roleId", "=", cadreRole.getId())
|
||||||
|
.and("userId", "=", unionBean.getUserId()).and("unionId", "=", unionBean.getUnionId()));
|
||||||
|
sysRoleService.insert("sys_user_role", Chain.make("roleId", cadreRole.getId())
|
||||||
|
.add("userId", unionBean.getUserId()).add("unionId", unionBean.getUnionId()));
|
||||||
|
|
||||||
// 清除缓存
|
// 清除缓存
|
||||||
sysRoleService.clearCache();
|
sysRoleService.clearCache();
|
||||||
sysUserService.clearCache();
|
sysUserService.clearCache();
|
||||||
|
|||||||
@@ -41,6 +41,9 @@ import java.util.stream.Collectors;
|
|||||||
@IocBean(args = {"refer:dao"})
|
@IocBean(args = {"refer:dao"})
|
||||||
public class SysDataUnitPullServiceImpl extends BaseServiceImpl<Sys_unit> implements SysDataUnitPullService {
|
public class SysDataUnitPullServiceImpl extends BaseServiceImpl<Sys_unit> implements SysDataUnitPullService {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private com.budwk.app.base.config.UserSourceDatabase userSourceDatabase;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private DataCenterProperties dcPro;
|
private DataCenterProperties dcPro;
|
||||||
|
|
||||||
@@ -66,7 +69,7 @@ public class SysDataUnitPullServiceImpl extends BaseServiceImpl<Sys_unit> implem
|
|||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
public void updateUnits(List<String> unitIds) {
|
public void updateUnits(List<String> unitIds) {
|
||||||
// 中间表数据
|
// 中间表数据
|
||||||
List<Record> unitMiddleList = dao().query("unit_middle", Cnd.NEW());
|
List<Record> unitMiddleList = userSourceDatabase.dao().query("unit_middle", Cnd.NEW());
|
||||||
List<Sys_unit> sysUnits = dao().query(Sys_unit.class, Cnd.NEW());
|
List<Sys_unit> sysUnits = dao().query(Sys_unit.class, Cnd.NEW());
|
||||||
Map<String, Sys_unit> unitMapById = sysUnits.stream()
|
Map<String, Sys_unit> unitMapById = sysUnits.stream()
|
||||||
.filter(unit -> StrUtil.isNotBlank(unit.getId()))
|
.filter(unit -> StrUtil.isNotBlank(unit.getId()))
|
||||||
@@ -84,7 +87,14 @@ public class SysDataUnitPullServiceImpl extends BaseServiceImpl<Sys_unit> implem
|
|||||||
Map<String, String> api2db = Arrays.stream(Api2UnitFiledMap.values())
|
Map<String, String> api2db = Arrays.stream(Api2UnitFiledMap.values())
|
||||||
.collect(Collectors.toMap(e -> e.apiField, e -> e.dbColumn));
|
.collect(Collectors.toMap(e -> e.apiField, e -> e.dbColumn));
|
||||||
for (Record row : unitMiddleList) {
|
for (Record row : unitMiddleList) {
|
||||||
JSONObject jsonRow = JSONUtil.parseObj(JSONUtil.toJsonStr(row));
|
JSONObject jsonRow = new JSONObject();
|
||||||
|
// 用映射中的原始键构建 JSON,避免 Record 转 JSON 后列名变小写导致取值失败。
|
||||||
|
for (String key : api2db.keySet()) {
|
||||||
|
jsonRow.set(key, row.get(key));
|
||||||
|
}
|
||||||
|
jsonRow.set("dwdm", row.get("dwdm"));
|
||||||
|
jsonRow.set("dwdj", row.get("dwdj"));
|
||||||
|
jsonRow.set("sjdwmcdm", row.get("sjdwmcdm"));
|
||||||
String unitCode = getDataCenterField(jsonRow, "dwdm");
|
String unitCode = getDataCenterField(jsonRow, "dwdm");
|
||||||
String unitLevel = getDataCenterField(jsonRow, "dwdj");
|
String unitLevel = getDataCenterField(jsonRow, "dwdj");
|
||||||
if (StrUtil.isBlank(unitCode)) {
|
if (StrUtil.isBlank(unitCode)) {
|
||||||
@@ -135,6 +145,7 @@ public class SysDataUnitPullServiceImpl extends BaseServiceImpl<Sys_unit> implem
|
|||||||
*
|
*
|
||||||
* @param updateList 需要更新的单位数据
|
* @param updateList 需要更新的单位数据
|
||||||
*/
|
*/
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
private void updateDataCenterUnitFields(List<Sys_unit> updateList) {
|
private void updateDataCenterUnitFields(List<Sys_unit> updateList) {
|
||||||
for (Sys_unit unit : updateList) {
|
for (Sys_unit unit : updateList) {
|
||||||
Chain chain = Chain.make("unitcode", unit.getUnitcode());
|
Chain chain = Chain.make("unitcode", unit.getUnitcode());
|
||||||
|
|||||||
+95
-110
@@ -2,7 +2,6 @@ package com.budwk.app.sys.services.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.ListUtil;
|
import cn.hutool.core.collection.ListUtil;
|
||||||
import cn.hutool.core.date.DateField;
|
|
||||||
import cn.hutool.core.date.DateUtil;
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
@@ -13,6 +12,8 @@ import com.budwk.app.base.event.role.RoleEventPublisher;
|
|||||||
import com.budwk.app.base.event.user.UserChangeMsg;
|
import com.budwk.app.base.event.user.UserChangeMsg;
|
||||||
import com.budwk.app.base.event.user.UserChangePublisher;
|
import com.budwk.app.base.event.user.UserChangePublisher;
|
||||||
import com.budwk.app.base.utils.PwdUtil;
|
import com.budwk.app.base.utils.PwdUtil;
|
||||||
|
import com.budwk.app.base.exception.BaseException;
|
||||||
|
import com.budwk.app.base.utils.ConditionGroupUtil;
|
||||||
import com.budwk.app.sys.annotation.DataCenterColumn;
|
import com.budwk.app.sys.annotation.DataCenterColumn;
|
||||||
import com.budwk.app.sys.models.*;
|
import com.budwk.app.sys.models.*;
|
||||||
import com.budwk.app.sys.param.SysDataUserUpdateParam;
|
import com.budwk.app.sys.param.SysDataUserUpdateParam;
|
||||||
@@ -128,7 +129,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
if (dataCenterUpdateFields == null) {
|
if (dataCenterUpdateFields == null) {
|
||||||
dataCenterUpdateFields = getFieldMappings().stream()
|
dataCenterUpdateFields = getFieldMappings().stream()
|
||||||
.map(mapping -> mapping.field.getName())
|
.map(mapping -> mapping.field.getName())
|
||||||
.collect(Collectors.joining("|", "^(id|", ")$"));
|
.collect(Collectors.joining("|", "^(id|member|", ")$"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -136,31 +137,16 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 检查用户是否符合会员条件
|
* 判断本次来源记录是否可自动设为会员。
|
||||||
*
|
* @param userState 在职状态,接受“在职”或“在岗”,忽略首尾空格
|
||||||
* @param userState 用户状态
|
* @param personType 人员类型,必须非空且不是“临时聘用人员”
|
||||||
* @param preparedBy 编制类别
|
* @return true 表示授予会员资格;false 表示取消会员资格(包括状态或人员类型为空)
|
||||||
* @param postDoctoralJoinDate 博士后进站时间
|
|
||||||
* @return 是否符合会员条件
|
|
||||||
*/
|
*/
|
||||||
private boolean checkMembershipEligibility(String userState, String preparedBy, Date postDoctoralJoinDate) {
|
private boolean checkMembershipEligibility(String userState, String personType) {
|
||||||
// 博士后单独判断:只要进站时间在两年内就是会员
|
String state = StrUtil.trimToNull(userState);
|
||||||
if ("博士后".equals(preparedBy)) {
|
String type = StrUtil.trimToNull(personType);
|
||||||
if (postDoctoralJoinDate != null) {
|
return ("在职".equals(state) || "在岗".equals(state))
|
||||||
Date twoYearsAgo = DateUtil.offset(DateUtil.date(), DateField.YEAR, -2).toJdkDate();
|
&& type != null && !"临时聘用人员".equals(type);
|
||||||
return postDoctoralJoinDate.after(twoYearsAgo);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 其他人员需要判断在岗状态和聘用方式
|
|
||||||
if (!"在岗".equals(userState)) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 判断聘用方式
|
|
||||||
Set<String> memberPreparedByTypes = new HashSet<>(Arrays.asList("新人事代理", "校聘合同制", "事业编制"));
|
|
||||||
return memberPreparedByTypes.contains(preparedBy);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -172,6 +158,9 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
@Override
|
@Override
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
public String update(SysDataUserUpdateParam updateParam) {
|
public String update(SysDataUserUpdateParam updateParam) {
|
||||||
|
if (updateParam == null || StrUtil.isBlank(updateParam.getPullTime())) {
|
||||||
|
throw new BaseException("全量更新必须指定拉取批次");
|
||||||
|
}
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
log.info("开始全量更新用户数据");
|
log.info("开始全量更新用户数据");
|
||||||
|
|
||||||
@@ -179,6 +168,10 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
Sys_role publicRole = sysRoleService.getByCode(RoleConstant.PUBLIC);
|
Sys_role publicRole = sysRoleService.getByCode(RoleConstant.PUBLIC);
|
||||||
Sys_role memberRole = sysRoleService.getByCode(RoleConstant.MEMBER);
|
Sys_role memberRole = sysRoleService.getByCode(RoleConstant.MEMBER);
|
||||||
|
|
||||||
|
if (publicRole == null || memberRole == null) {
|
||||||
|
throw new BaseException("公共角色或会员角色不存在,已停止全量更新");
|
||||||
|
}
|
||||||
|
|
||||||
// 获取单位信息,后续判断单位变更
|
// 获取单位信息,后续判断单位变更
|
||||||
List<Sys_unit> unitList = dao.query(Sys_unit.class, Cnd.where("unitTypeCode", "=", "1"));
|
List<Sys_unit> unitList = dao.query(Sys_unit.class, Cnd.where("unitTypeCode", "=", "1"));
|
||||||
unitIdNameMap = unitList.stream().collect(Collectors.toMap(Sys_unit::getId, Sys_unit::getName));
|
unitIdNameMap = unitList.stream().collect(Collectors.toMap(Sys_unit::getId, Sys_unit::getName));
|
||||||
@@ -188,30 +181,59 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
|
|
||||||
// 处理复杂条件
|
// 处理复杂条件
|
||||||
if (updateParam.getConditionGroup() != null) {
|
if (updateParam.getConditionGroup() != null) {
|
||||||
// cnd = ConditionGroupUtil.applyConditionGroup(cnd, updateParam.getConditionGroup());
|
cnd = ConditionGroupUtil.applyConditionGroup(cnd, updateParam.getConditionGroup());
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Sys_user_source> sources = dao.query(Sys_user_source.class, cnd.groupBy("loginname"));
|
List<Sys_user_source> sources = dao.query(Sys_user_source.class, cnd);
|
||||||
|
if (sources.isEmpty() || sources.stream().anyMatch(v -> StrUtil.isBlank(v.getLoginname()) || StrUtil.isBlank(v.getUsername()))) {
|
||||||
|
throw new BaseException("当前批次为空或包含空工号、空姓名,不能执行全量更新");
|
||||||
|
}
|
||||||
|
// 不使用 SELECT * GROUP BY,兼容 MySQL 严格模式;重复工号中止,避免随意覆盖。
|
||||||
|
if (sources.stream().map(Sys_user::getLoginname).distinct().count() != sources.size()) {
|
||||||
|
throw new BaseException("当前批次存在重复工号,已停止全量更新");
|
||||||
|
}
|
||||||
log.info("符合条件的数据源记录数: {}", sources.size());
|
log.info("符合条件的数据源记录数: {}", sources.size());
|
||||||
|
|
||||||
// 查询系统用户
|
// 查询系统用户
|
||||||
List<Sys_user> sysUsers = dao.query(Sys_user.class, Cnd.NEW().groupBy("loginname"));
|
List<Sys_user> sysUsers = dao.query(Sys_user.class, Cnd.NEW());
|
||||||
Map<String, Sys_user> userMap = sysUsers.stream().collect(Collectors.toMap(Sys_user::getLoginname, sysUser -> sysUser));
|
Map<String, Sys_user> userMap = new HashMap<>();
|
||||||
|
for (Sys_user user : sysUsers) {
|
||||||
|
if (StrUtil.isNotBlank(user.getLoginname()) && userMap.putIfAbsent(user.getLoginname(), user) != null) {
|
||||||
|
throw new BaseException("系统存在重复工号,已停止全量更新");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 准备数据集合
|
// 准备数据集合
|
||||||
List<Sys_user> needDoUpdateList = new CopyOnWriteArrayList<>();
|
List<Sys_user> needDoUpdateList = new ArrayList<>();
|
||||||
List<Sys_user> needInitUserList = new CopyOnWriteArrayList<>();
|
List<Sys_user> needInitUserList = new ArrayList<>();
|
||||||
List<Sys_user_history> histories = new CopyOnWriteArrayList<>();
|
List<Sys_user_history> histories = new ArrayList<>();
|
||||||
|
|
||||||
|
int newMemberCount = 0;
|
||||||
|
int withdrawnMemberCount = 0;
|
||||||
|
List<String> nonMemberUserIds = new ArrayList<>();
|
||||||
// 处理每条数据
|
// 处理每条数据
|
||||||
for (Sys_user_source source : sources) {
|
for (Sys_user_source source : sources) {
|
||||||
Sys_user user = userMap.get(source.getLoginname());
|
Sys_user user = userMap.get(source.getLoginname());
|
||||||
|
|
||||||
// 创建只包含数据中心字段的用户对象,避免覆盖本地维护的会员、登录、积分等业务字段。
|
// 仅更新数据中心字段和明确授权同步的会员标记,保留登录、积分等本地字段。
|
||||||
Sys_user u = buildDataCenterUser(source);
|
Sys_user u = buildDataCenterUser(source);
|
||||||
|
boolean eligible = checkMembershipEligibility(source.getUserState(), source.getPersonType());
|
||||||
|
// 本批次人员严格按来源条件设置会员;不符合条件时同步撤销会员角色。
|
||||||
|
u.setMember(eligible);
|
||||||
|
if (eligible && (user == null || !Boolean.TRUE.equals(user.getMember()))) {
|
||||||
|
newMemberCount++;
|
||||||
|
}
|
||||||
|
if (!eligible && user != null) {
|
||||||
|
nonMemberUserIds.add(user.getId());
|
||||||
|
if (Boolean.TRUE.equals(user.getMember())) {
|
||||||
|
withdrawnMemberCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
source.setMember(u.getMember());
|
||||||
|
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
// 新增用户,初始化数据
|
// 新增用户,初始化数据
|
||||||
|
u.setId(R.UU32());
|
||||||
String salt = R.UU32();
|
String salt = R.UU32();
|
||||||
u.setSalt(salt);
|
u.setSalt(salt);
|
||||||
u.setPassword(PwdUtil.getPassword(PwdUtil.generate(12), salt));
|
u.setPassword(PwdUtil.getPassword(PwdUtil.generate(12), salt));
|
||||||
@@ -235,58 +257,18 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 使用CompletableFuture处理并行任务
|
// 人员、角色、历史在当前事务线程同步写入,任一失败抛出异常并回滚。
|
||||||
List<CompletableFuture<Void>> updateTasks = new ArrayList<>();
|
log.info("全量批次 {}:新增 {} 人,更新 {} 人,新设会员 {} 人,取消会员 {} 人", updateParam.getPullTime(),
|
||||||
|
needInitUserList.size(), needDoUpdateList.size(), newMemberCount, withdrawnMemberCount);
|
||||||
// 1. 新增用户 - 使用批量处理
|
for (List<Sys_user> batch : ListUtil.split(needInitUserList, 500)) {
|
||||||
if (Lang.isNotEmpty(needInitUserList)) {
|
dao.fastInsert(batch);
|
||||||
CompletableFuture<Void> insertTask = CompletableFuture.runAsync(() -> {
|
}
|
||||||
log.info("新增用户: {} 个", needInitUserList.size());
|
Dao extDao = Daos.ext(dao, FieldFilter.create(Sys_user.class, getDataCenterUpdateFields()));
|
||||||
// 分批处理,每批200条
|
for (List<Sys_user> batch : ListUtil.split(needDoUpdateList, 500)) {
|
||||||
List<List<Sys_user>> batches = ListUtil.split(needInitUserList, 500);
|
extDao.updateIgnoreNull(batch);
|
||||||
batches.forEach(batch -> {
|
|
||||||
try {
|
|
||||||
dao.fastInsert(batch);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("批量新增用户异常", e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, executorService);
|
|
||||||
updateTasks.add(insertTask);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. 更新现有用户 - 使用批量处理
|
// 根据更新后的会员标记补齐基础角色,不移除其他已有权限。
|
||||||
if (Lang.isNotEmpty(needDoUpdateList)) {
|
|
||||||
CompletableFuture<Void> updateTask = CompletableFuture.runAsync(() -> {
|
|
||||||
log.info("更新用户: {} 个", needDoUpdateList.size());
|
|
||||||
// 分批处理,每批200条
|
|
||||||
List<List<Sys_user>> batches = ListUtil.split(needDoUpdateList, 500);
|
|
||||||
batches.forEach(batch -> {
|
|
||||||
try {
|
|
||||||
Dao extDao = Daos.ext(dao, FieldFilter.create(Sys_user.class, getDataCenterUpdateFields()));
|
|
||||||
extDao.updateIgnoreNull(batch);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("批量更新用户异常", e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, executorService);
|
|
||||||
updateTasks.add(updateTask);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 等待用户数据更新完成
|
|
||||||
try {
|
|
||||||
// 设置超时时间,避免无限等待
|
|
||||||
CompletableFuture.allOf(updateTasks.toArray(new CompletableFuture[0]))
|
|
||||||
.get(5, TimeUnit.MINUTES);
|
|
||||||
} catch (TimeoutException e) {
|
|
||||||
log.warn("更新用户数据超时");
|
|
||||||
return "更新超时,请检查数据处理情况";
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("更新用户数据异常", e);
|
|
||||||
return "更新失败: " + e.getMessage();
|
|
||||||
}
|
|
||||||
|
|
||||||
// 3. 全量同步不变更会员状态,只按当前用户会员标记补齐基础角色。
|
|
||||||
List<Sys_user> roleUsers = dao.query(Sys_user.class, Cnd.NEW());
|
List<Sys_user> roleUsers = dao.query(Sys_user.class, Cnd.NEW());
|
||||||
List<String> publicRoleUserIds = roleUsers.stream().map(Sys_user::getId).toList();
|
List<String> publicRoleUserIds = roleUsers.stream().map(Sys_user::getId).toList();
|
||||||
List<String> memberRoleUserIds = roleUsers.stream()
|
List<String> memberRoleUserIds = roleUsers.stream()
|
||||||
@@ -295,36 +277,37 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
.toList();
|
.toList();
|
||||||
int addPublicRoleCount = addMissingUserRole(publicRole.getId(), publicRoleUserIds, "公共角色");
|
int addPublicRoleCount = addMissingUserRole(publicRole.getId(), publicRoleUserIds, "公共角色");
|
||||||
int addMemberRoleCount = addMissingUserRole(memberRole.getId(), memberRoleUserIds, "会员角色");
|
int addMemberRoleCount = addMissingUserRole(memberRole.getId(), memberRoleUserIds, "会员角色");
|
||||||
|
// 仅删除本次来源中不符合条件人员的 MEMBER 关系,包括历史残留的会员角色。
|
||||||
|
// 明确限制 roleId,公共角色和其他业务角色不受本次退会操作影响。
|
||||||
|
int removedMemberRoleCount = 0;
|
||||||
|
for (List<String> batch : ListUtil.split(nonMemberUserIds, 500)) {
|
||||||
|
removedMemberRoleCount += dao.clear(Sys_user_role.class,
|
||||||
|
Cnd.where(Sys_user_role::getRoleId, "=", memberRole.getId())
|
||||||
|
.and(Sys_user_role::getUserId, "in", batch));
|
||||||
|
}
|
||||||
|
log.info("取消会员 {} 人,移除会员角色关系 {} 条", withdrawnMemberCount, removedMemberRoleCount);
|
||||||
sysRoleService.clearCache();
|
sysRoleService.clearCache();
|
||||||
|
|
||||||
// 4. 异步添加历史记录 - 不等待完成
|
// 历史记录必须随业务事务完成,不能在任务报告成功后异步写入。
|
||||||
if (Lang.isNotEmpty(histories)) {
|
for (List<Sys_user_history> batch : ListUtil.split(histories, 500)) {
|
||||||
executorService.execute(() -> {
|
dao.fastInsert(batch);
|
||||||
log.info("添加历史记录: {} 条", histories.size());
|
|
||||||
// 分批处理历史记录
|
|
||||||
List<List<Sys_user_history>> batches = ListUtil.split(histories, 500);
|
|
||||||
batches.forEach(batch -> {
|
|
||||||
try {
|
|
||||||
dao.fastInsert(batch);
|
|
||||||
} catch (Exception e) {
|
|
||||||
log.error("批量添加历史记录异常", e);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 5. 处理其他任务
|
// 5. 处理其他任务
|
||||||
// 5.1 更新提案的校领导角色,发送订阅
|
// 5.1 更新提案的校领导角色,发送订阅
|
||||||
ProposalConfig config = dao.fetch(ProposalConfig.class, Cnd.where("delFlag", "=", false).desc("updatedAt"));
|
ProposalConfig config = dao.fetch(ProposalConfig.class, Cnd.where("delFlag", "=", false).desc("updatedAt"));
|
||||||
for (String unitId : config.getSchoolLeaderUnitIds()) {
|
if (config != null && config.getSchoolLeaderUnitIds() != null) {
|
||||||
RoleEventPublisher.broadcast(new RoleEventMsg(unitId, RoleConstant.PROPOSAL_BRANCH_SCHOOL_LEADER.name(), RoleEventMsg.RENEW_ROLE));
|
for (String unitId : config.getSchoolLeaderUnitIds()) {
|
||||||
|
RoleEventPublisher.broadcast(new RoleEventMsg(unitId, RoleConstant.PROPOSAL_BRANCH_SCHOOL_LEADER.name(), RoleEventMsg.RENEW_ROLE));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
long endTime = System.currentTimeMillis();
|
long endTime = System.currentTimeMillis();
|
||||||
log.info("全量更新用户数据完成,耗时: {} 毫秒", (endTime - startTime));
|
log.info("全量更新用户数据完成,耗时: {} 毫秒", (endTime - startTime));
|
||||||
|
|
||||||
return "更新完成: 新增用户 " + needInitUserList.size() + " 个, 更新用户 " + needDoUpdateList.size()
|
return "更新完成: 新增用户 " + needInitUserList.size() + " 个, 更新用户 " + needDoUpdateList.size()
|
||||||
+ " 个, 补齐公共角色 " + addPublicRoleCount + " 个, 补齐会员角色 " + addMemberRoleCount + " 个";
|
+ " 个, 新设会员 " + newMemberCount + " 个, 取消会员 " + withdrawnMemberCount
|
||||||
|
+ " 个, 移除会员角色 " + removedMemberRoleCount + " 条, 补齐公共角色 " + addPublicRoleCount + " 个, 补齐会员角色 " + addMemberRoleCount + " 个";
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -335,6 +318,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
* @param roleName 日志中的角色名称
|
* @param roleName 日志中的角色名称
|
||||||
* @return 本次新增的角色关系数量
|
* @return 本次新增的角色关系数量
|
||||||
*/
|
*/
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
private int addMissingUserRole(String roleId, List<String> userIds, String roleName) {
|
private int addMissingUserRole(String roleId, List<String> userIds, String roleName) {
|
||||||
List<String> distinctUserIds = userIds.stream()
|
List<String> distinctUserIds = userIds.stream()
|
||||||
.filter(Objects::nonNull)
|
.filter(Objects::nonNull)
|
||||||
@@ -443,6 +427,7 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
* @param user 系统用户
|
* @param user 系统用户
|
||||||
* @return 历史记录
|
* @return 历史记录
|
||||||
*/
|
*/
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
private Sys_user_history createHistory(Sys_user_source source, Sys_user user) {
|
private Sys_user_history createHistory(Sys_user_source source, Sys_user user) {
|
||||||
List<String> changeTypes = new ArrayList<>();
|
List<String> changeTypes = new ArrayList<>();
|
||||||
List<NutMap> changeList = new ArrayList<>();
|
List<NutMap> changeList = new ArrayList<>();
|
||||||
@@ -494,15 +479,15 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
changeTypes.add(MemberChangeType.BASIC_CHANGE.name());
|
changeTypes.add(MemberChangeType.BASIC_CHANGE.name());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 特殊字段变更处理
|
// 会员标记实际发生变化时记录入会或退会,重复同步不重复生成会员变更历史。
|
||||||
// 1. 会员状态变更
|
boolean oldMember = Boolean.TRUE.equals(user.getMember());
|
||||||
// if (!ObjectUtil.equals(user.getMember(), source.getMember())) {
|
boolean newMember = Boolean.TRUE.equals(source.getMember());
|
||||||
// if (source.getMember()) {
|
if (oldMember != newMember) {
|
||||||
// changeTypes.add(MemberChangeType.RESTORE.name());
|
changeTypes.add(newMember ? MemberChangeType.RESTORE.name() : MemberChangeType.WITHDRAWAL.name());
|
||||||
// } else {
|
changeList.add(NutMap.NEW().addv("fieldName", "会员状态").addv("field", "member")
|
||||||
// changeTypes.add(MemberChangeType.WITHDRAWAL.name());
|
.addv("sourceValue", oldMember ? "会员" : "非会员")
|
||||||
// }
|
.addv("newValue", newMember ? "会员" : "非会员"));
|
||||||
// }
|
}
|
||||||
|
|
||||||
// 2. 单位变更
|
// 2. 单位变更
|
||||||
String oldUnitId = normalizeSecondLevelUnitId(user.getUnitId());
|
String oldUnitId = normalizeSecondLevelUnitId(user.getUnitId());
|
||||||
|
|||||||
+35
-22
@@ -2,8 +2,6 @@ package com.budwk.app.sys.services.impl;
|
|||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.ListUtil;
|
import cn.hutool.core.collection.ListUtil;
|
||||||
import cn.hutool.core.thread.AsyncUtil;
|
|
||||||
import cn.hutool.core.thread.ThreadUtil;
|
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.budwk.app.base.constant.RoleConstant;
|
import com.budwk.app.base.constant.RoleConstant;
|
||||||
import com.budwk.app.base.event.role.RoleEventMsg;
|
import com.budwk.app.base.event.role.RoleEventMsg;
|
||||||
@@ -15,10 +13,12 @@ import com.budwk.app.sys.param.SysDataUserUpdateParam;
|
|||||||
import com.budwk.app.sys.services.SysDataUserUpdateService;
|
import com.budwk.app.sys.services.SysDataUserUpdateService;
|
||||||
import com.budwk.app.sys.services.SysRoleService;
|
import com.budwk.app.sys.services.SysRoleService;
|
||||||
import com.budwk.app.zhgh.democratic.proposal.models.ProposalConfig;
|
import com.budwk.app.zhgh.democratic.proposal.models.ProposalConfig;
|
||||||
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
|
import org.nutz.ioc.aop.Aop;
|
||||||
|
import com.budwk.app.base.exception.BaseException;
|
||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
import org.nutz.dao.Sqls;
|
import org.nutz.dao.Sqls;
|
||||||
import org.nutz.dao.sql.Sql;
|
|
||||||
import org.nutz.ioc.loader.annotation.Inject;
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
import org.nutz.lang.random.R;
|
import org.nutz.lang.random.R;
|
||||||
@@ -27,7 +27,6 @@ import java.util.List;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
import java.util.concurrent.CompletableFuture;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 增量更新系统用户数据
|
* 增量更新系统用户数据
|
||||||
@@ -40,21 +39,38 @@ public class SysDataUserIncrUpdateServiceImpl implements SysDataUserUpdateServic
|
|||||||
@Inject
|
@Inject
|
||||||
private SysRoleService sysRoleService;
|
private SysRoleService sysRoleService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按 pullTime(yyyy-MM-dd HH:mm:ss)批次新增工号,conditionGroup 为可选筛选条件。
|
||||||
|
* 返回新增人员、单位、会员数量的说明字符串;所有业务写入在同一事务线程执行。
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
public String update(SysDataUserUpdateParam updateParam) {
|
public String update(SysDataUserUpdateParam updateParam) {
|
||||||
// 基本SQL查询
|
if (updateParam == null || StrUtil.isBlank(updateParam.getPullTime())) {
|
||||||
|
throw new BaseException("拉取批次不能为空");
|
||||||
|
}
|
||||||
|
// 空工号不参与新增,系统中的空值也不能干扰 NOT IN 判断。
|
||||||
Cnd cnd = Cnd.where("pullTime", "=", updateParam.getPullTime())
|
Cnd cnd = Cnd.where("pullTime", "=", updateParam.getPullTime())
|
||||||
.and("loginname", "NOT IN", Sqls.create("SELECT loginname FROM sys_user"));
|
.and("loginname", "NOT IN", Sqls.create("SELECT loginname FROM sys_user WHERE loginname IS NOT NULL"));
|
||||||
|
|
||||||
// 处理复杂条件
|
// 处理复杂条件
|
||||||
if (updateParam.getConditionGroup() != null) {
|
if (updateParam.getConditionGroup() != null) {
|
||||||
cnd = ConditionGroupUtil.applyConditionGroup(cnd, updateParam.getConditionGroup());
|
cnd = ConditionGroupUtil.applyConditionGroup(cnd, updateParam.getConditionGroup());
|
||||||
}
|
}
|
||||||
|
|
||||||
cnd.groupBy("loginname");
|
cnd.and("loginname", "IS NOT", null).and("loginname", "!=", "");
|
||||||
|
|
||||||
// 执行查询
|
// 执行查询
|
||||||
List<Sys_user_source> userSources = dao.query(Sys_user_source.class, cnd);
|
List<Sys_user_source> userSources = new java.util.ArrayList<>(dao.query(Sys_user_source.class, cnd).stream()
|
||||||
|
.collect(java.util.stream.Collectors.toMap(Sys_user_source::getLoginname,
|
||||||
|
v -> v, (first, duplicate) -> first, java.util.LinkedHashMap::new)).values());
|
||||||
|
if (userSources.isEmpty()) {
|
||||||
|
return "增量更新成功,本次无新增人员。";
|
||||||
|
}
|
||||||
|
Sys_role publicRole = sysRoleService.getByCode(RoleConstant.PUBLIC);
|
||||||
|
if (publicRole == null) {
|
||||||
|
throw new BaseException("公共角色不存在,已停止新增人员");
|
||||||
|
}
|
||||||
|
|
||||||
//加入到系统用户表
|
//加入到系统用户表
|
||||||
List<Sys_user> sysUsers = BeanUtil.copyToList(userSources, Sys_user.class);
|
List<Sys_user> sysUsers = BeanUtil.copyToList(userSources, Sys_user.class);
|
||||||
@@ -98,11 +114,10 @@ public class SysDataUserIncrUpdateServiceImpl implements SysDataUserUpdateServic
|
|||||||
}
|
}
|
||||||
|
|
||||||
List<List<Sys_user>> splitSysUsers = ListUtil.split(sysUsers, 500);
|
List<List<Sys_user>> splitSysUsers = ListUtil.split(sysUsers, 500);
|
||||||
List<CompletableFuture<List<Sys_user>>> splitSysUsersFutures = splitSysUsers.stream().map(v -> CompletableFuture.supplyAsync(() -> dao.fastInsert(v))).toList();
|
// 分批同步写入,避免异步线程脱离当前事务造成部分成功。
|
||||||
//等待任务全部完成
|
for (List<Sys_user> batch : splitSysUsers) {
|
||||||
AsyncUtil.waitAll(CompletableFuture.allOf(splitSysUsersFutures.toArray(new CompletableFuture[0])));
|
dao.fastInsert(batch);
|
||||||
|
}
|
||||||
Sys_role publicRole = sysRoleService.getByCode(RoleConstant.PUBLIC);
|
|
||||||
|
|
||||||
//添加公共角色
|
//添加公共角色
|
||||||
List<Sys_user_role> sysUserRoles = sysUsers.stream().map(user -> {
|
List<Sys_user_role> sysUserRoles = sysUsers.stream().map(user -> {
|
||||||
@@ -111,13 +126,11 @@ public class SysDataUserIncrUpdateServiceImpl implements SysDataUserUpdateServic
|
|||||||
sysUserRole.setRoleId(publicRole.getId());
|
sysUserRole.setRoleId(publicRole.getId());
|
||||||
return sysUserRole;
|
return sysUserRole;
|
||||||
}).toList();
|
}).toList();
|
||||||
ThreadUtil.execAsync(() -> {
|
dao.insert(sysUserRoles);
|
||||||
dao.insert(sysUserRoles);
|
|
||||||
});
|
|
||||||
sysRoleService.clearCache();
|
sysRoleService.clearCache();
|
||||||
|
|
||||||
//比较单位数据
|
//比较单位数据
|
||||||
List<Sys_unit> sysUnits = dao.query(Sys_unit.class, Cnd.where(Sys_unit::getUnitLevel, "=", 2));
|
List<Sys_unit> sysUnits = dao.query(Sys_unit.class, Cnd.NEW());
|
||||||
List<String> sysUnitIds = sysUnits.stream().map(Sys_unit::getId).toList();
|
List<String> sysUnitIds = sysUnits.stream().map(Sys_unit::getId).toList();
|
||||||
|
|
||||||
//信息中心的数据 转为单位代码 ->单位名称 map
|
//信息中心的数据 转为单位代码 ->单位名称 map
|
||||||
@@ -139,17 +152,17 @@ public class SysDataUserIncrUpdateServiceImpl implements SysDataUserUpdateServic
|
|||||||
sysUnit.setUnitLevel(2);
|
sysUnit.setUnitLevel(2);
|
||||||
return sysUnit;
|
return sysUnit;
|
||||||
}).toList();
|
}).toList();
|
||||||
ThreadUtil.execAsync(() -> {
|
dao.insert(insertUnits);
|
||||||
dao.insert(insertUnits);
|
|
||||||
});
|
|
||||||
|
|
||||||
// 计算设置为会员的人数
|
// 计算设置为会员的人数
|
||||||
long memberCount = sysUsers.stream().filter(Sys_user::getMember).count();
|
long memberCount = sysUsers.stream().filter(Sys_user::getMember).count();
|
||||||
|
|
||||||
// 6.1 更新提案的校领导角色,发送订阅
|
// 6.1 更新提案的校领导角色,发送订阅
|
||||||
ProposalConfig config = dao.fetch(ProposalConfig.class, Cnd.where("delFlag", "=", false).desc("updatedAt"));
|
ProposalConfig config = dao.fetch(ProposalConfig.class, Cnd.where("delFlag", "=", false).desc("updatedAt"));
|
||||||
for (String unitId : config.getSchoolLeaderUnitIds()) {
|
if (config != null && config.getSchoolLeaderUnitIds() != null) {
|
||||||
RoleEventPublisher.broadcast(new RoleEventMsg(unitId, RoleConstant.PROPOSAL_BRANCH_SCHOOL_LEADER.name(), RoleEventMsg.RENEW_ROLE));
|
for (String unitId : config.getSchoolLeaderUnitIds()) {
|
||||||
|
RoleEventPublisher.broadcast(new RoleEventMsg(unitId, RoleConstant.PROPOSAL_BRANCH_SCHOOL_LEADER.name(), RoleEventMsg.RENEW_ROLE));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return StrUtil.format("增量更新成功,本次更新新入职老师{}人,新增单位{}个,设置为会员{}人。", sysUsers.size(), insertUnits.size(), memberCount);
|
return StrUtil.format("增量更新成功,本次更新新入职老师{}人,新增单位{}个,设置为会员{}人。", sysUsers.size(), insertUnits.size(), memberCount);
|
||||||
|
|||||||
@@ -49,6 +49,9 @@ import java.util.stream.Collectors;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source> implements SysDataUserPullService {
|
public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source> implements SysDataUserPullService {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private com.budwk.app.base.config.UserSourceDatabase userSourceDatabase;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private SysDictService sysDictService;
|
private SysDictService sysDictService;
|
||||||
@Inject
|
@Inject
|
||||||
@@ -110,42 +113,43 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
|||||||
public Date pull() {
|
public Date pull() {
|
||||||
try {
|
try {
|
||||||
// 中间表数据
|
// 中间表数据
|
||||||
List<NutMap> userMiddleList = sysDataUnitPullService.listMap(Sqls.create("select * from user_middle"));
|
List<Record> userMiddleList = userSourceDatabase.dao().query("user_middle", Cnd.NEW());
|
||||||
|
|
||||||
List<JSONObject> rawDataList = new ArrayList<>();
|
if (userMiddleList.isEmpty()) {
|
||||||
if (!userMiddleList.isEmpty()) {
|
throw new BaseException("来源人员中间表为空,本次同步已停止");
|
||||||
// 先收集所有原始数据
|
|
||||||
rawDataList = userMiddleList.stream().map(v -> JSONUtil.parseObj(JSONUtil.toJsonStr(v))).toList();
|
|
||||||
log.info("数据拉取进度: {}/{}", rawDataList.size(), userMiddleList.size());
|
|
||||||
} else {
|
|
||||||
log.warn("当前未获取到数据");
|
|
||||||
}
|
}
|
||||||
|
log.info("来源人员记录数:{}", userMiddleList.size());
|
||||||
|
|
||||||
Date nowDate = new Date();
|
// 与 DATETIME 批次精度保持一致,后续增量更新只消费本次批次。
|
||||||
|
Date nowDate = new Date(System.currentTimeMillis() / 1000 * 1000);
|
||||||
|
|
||||||
// 赋值
|
// 赋值
|
||||||
List<Sys_user_source> latestSourceList = rawDataList.stream().map(raw -> {
|
List<Sys_user_source> latestSourceList = userMiddleList.stream().map(raw -> {
|
||||||
Sys_user_source sysUser = new Sys_user_source();
|
Sys_user_source sysUser = new Sys_user_source();
|
||||||
|
|
||||||
// 使用缓存的字段映射
|
// Record.get 忽略列名大小写;禁止转成普通 JSON 后用大写键读取小写列。
|
||||||
for (FieldMapping mapping : getFieldMappings()) {
|
for (FieldMapping mapping : getFieldMappings()) {
|
||||||
try {
|
try {
|
||||||
// 根据字段类型设置值
|
// 根据字段类型设置值
|
||||||
if (mapping.field.getType() == String.class) {
|
if (mapping.field.getType() == String.class) {
|
||||||
mapping.field.set(sysUser, raw.getStr(mapping.key));
|
mapping.field.set(sysUser, StrUtil.trimToNull(raw.getString(mapping.key)));
|
||||||
} else if (mapping.field.getType() == Date.class) {
|
} else if (mapping.field.getType() == Date.class) {
|
||||||
mapping.field.set(sysUser, raw.getDate(mapping.key));
|
mapping.field.set(sysUser, cn.hutool.core.convert.Convert.toDate(raw.get(mapping.key)));
|
||||||
}
|
}
|
||||||
} catch (IllegalAccessException e) {
|
} catch (IllegalAccessException e) {
|
||||||
log.error("设置字段值失败: {}", mapping.field.getName(), e);
|
throw new BaseException("来源字段映射失败:" + mapping.field.getName());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 在写入批次前拦截映射异常,不能把空工号批次当成“无新增”成功返回。
|
||||||
|
if (StrUtil.isBlank(sysUser.getLoginname()) || StrUtil.isBlank(sysUser.getUsername())) {
|
||||||
|
throw new BaseException("来源人员工号或姓名为空,请检查 ZGH/XM 字段映射;本批次未写入");
|
||||||
|
}
|
||||||
sysUser.setPullTime(nowDate);
|
sysUser.setPullTime(nowDate);
|
||||||
return sysUser;
|
return sysUser;
|
||||||
}).toList();
|
}).toList();
|
||||||
|
|
||||||
log.info("用户数据初始化完成,等待插入,当前数据条数{}", latestSourceList.size());
|
log.info("人员映射校验通过,批次:{},有效人数:{}", DateUtil.formatDateTime(nowDate), latestSourceList.size());
|
||||||
// 插入到数据库
|
// 插入到数据库
|
||||||
dao().insert(latestSourceList);
|
dao().insert(latestSourceList);
|
||||||
// 更新字典数据
|
// 更新字典数据
|
||||||
@@ -162,13 +166,38 @@ public class SysDataUserPullServiceImpl extends BaseServiceImpl<Sys_user_source>
|
|||||||
log.info("单位需要更新,正在同步更新");
|
log.info("单位需要更新,正在同步更新");
|
||||||
sysDataUnitPullService.updateUnits(unitIds);
|
sysDataUnitPullService.updateUnits(unitIds);
|
||||||
}
|
}
|
||||||
|
// 新批次及关联数据写入成功后,在当前拉取事务内清理过期来源批次。
|
||||||
|
retainLatestPullBatches();
|
||||||
return nowDate;
|
return nowDate;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new BaseException("数据拉取失败,{}", e.getMessage());
|
throw new BaseException("数据拉取失败,{}", e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Async
|
/**
|
||||||
|
* 保留最近十个非空 pullTime 对应的完整批次,空时间记录无法归属批次,一并清理。
|
||||||
|
* 无参数、无返回值;由 pull() 在现有事务内调用,清理失败会使本次拉取回滚。
|
||||||
|
* 第十批时间作为严格小于的删除边界,避免误删该批次内的其他人员记录。
|
||||||
|
*/
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
private void retainLatestPullBatches() {
|
||||||
|
Sql sql = Sqls.create("SELECT DISTINCT pullTime FROM sys_user_source "
|
||||||
|
+ "WHERE pullTime IS NOT NULL ORDER BY pullTime DESC LIMIT 1 OFFSET 9");
|
||||||
|
sql.setCallback((conn, rs, sqlObject) -> rs.next() ? rs.getTimestamp("pullTime") : null);
|
||||||
|
dao().execute(sql);
|
||||||
|
Date oldestRetainedTime = sql.getObject(Date.class);
|
||||||
|
|
||||||
|
// 不足十批时没有时间边界,只删除空时间记录;严禁退化为无条件清表。
|
||||||
|
Cnd expired = Cnd.where(Sys_user_source::getPullTime, "IS", null);
|
||||||
|
if (oldestRetainedTime != null) {
|
||||||
|
expired.or(Sys_user_source::getPullTime, "<", oldestRetainedTime);
|
||||||
|
}
|
||||||
|
int deletedRows = dao().clear(Sys_user_source.class, expired);
|
||||||
|
log.info("来源批次清理:保留最近10批,最早保留时间:{},删除记录:{}条(随当前事务提交)",
|
||||||
|
oldestRetainedTime == null ? "不足10批" : DateUtil.formatDateTime(oldestRetainedTime), deletedRows);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
private void updateDict(List<Sys_user_source> userSources) {
|
private void updateDict(List<Sys_user_source> userSources) {
|
||||||
//判断是否要更新在职状态字典
|
//判断是否要更新在职状态字典
|
||||||
List<String> sourceUserStates = userSources.stream().map(Sys_user::getUserState).filter(StrUtil::isNotBlank).distinct().toList();
|
List<String> sourceUserStates = userSources.stream().map(Sys_user::getUserState).filter(StrUtil::isNotBlank).distinct().toList();
|
||||||
|
|||||||
@@ -0,0 +1,109 @@
|
|||||||
|
package com.budwk.app.sys.services.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import com.budwk.app.sys.enums.SysDataUpdateMode;
|
||||||
|
import com.budwk.app.sys.models.Sys_task;
|
||||||
|
import com.budwk.app.sys.param.SysDataUserUpdateParam;
|
||||||
|
import com.budwk.app.sys.services.SysDataUserPullService;
|
||||||
|
import com.budwk.app.sys.services.SysTaskService;
|
||||||
|
import com.budwk.app.task.job.SysUserIncrRenewJob;
|
||||||
|
import com.budwk.app.task.services.TaskPlatformService;
|
||||||
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
|
import org.nutz.dao.Chain;
|
||||||
|
import org.nutz.dao.Cnd;
|
||||||
|
import org.nutz.ioc.aop.Aop;
|
||||||
|
import org.nutz.ioc.impl.PropertiesProxy;
|
||||||
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
|
||||||
|
/** 每日人员同步的编排及任务登记,复用手动拉取与全量更新服务。 */
|
||||||
|
@IocBean
|
||||||
|
@Slf4j
|
||||||
|
public class SysUserDailySyncService {
|
||||||
|
@Inject private SysDataUserPullService sysDataUserPullService;
|
||||||
|
@Inject("refer:sysDataUserAllUpdateServiceImpl")
|
||||||
|
private SysDataUserAllUpdateServiceImpl sysDataUserAllUpdateService;
|
||||||
|
@Inject private SysTaskService sysTaskService;
|
||||||
|
@Inject private TaskPlatformService taskPlatformService;
|
||||||
|
@Inject private PropertiesProxy conf;
|
||||||
|
|
||||||
|
/** 无参数;返回本批次新增统计。拉取失败时抛出异常,不消费历史批次。 */
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
public String sync() {
|
||||||
|
Date pullTime = sysDataUserPullService.pull();
|
||||||
|
log.info("人员拉取完成,开始全量更新,批次:{}", DateUtil.formatDateTime(pullTime));
|
||||||
|
SysDataUserUpdateParam param = new SysDataUserUpdateParam();
|
||||||
|
param.setPullTime(DateUtil.formatDateTime(pullTime));
|
||||||
|
param.setUpdateMode(SysDataUpdateMode.ALL.name());
|
||||||
|
return sysDataUserAllUpdateService.update(param);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 启动时复用同执行类的真实任务 ID;旧增量任务只更新名称说明,保留页面设置的执行时间。
|
||||||
|
* 重复的历史任务保留记录但禁用;后续重启保留页面设置的时间和禁用状态。
|
||||||
|
*/
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
public void register() {
|
||||||
|
if (!conf.getBoolean("user-source.sync.enabled", false)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String jobClass = SysUserIncrRenewJob.class.getName();
|
||||||
|
List<Sys_task> tasks = sysTaskService.query(Cnd.where("jobClass", "=", jobClass)
|
||||||
|
.asc("disabled").asc("createdAt").asc("id"));
|
||||||
|
String name = "每日人员拉取及全量更新";
|
||||||
|
String cron = conf.get("user-source.sync.cron", "0 0 17 * * ?");
|
||||||
|
String note = "从推送库全量同步;按在职状态及人员类型同步会员身份和会员角色";
|
||||||
|
Sys_task task;
|
||||||
|
if (tasks.isEmpty()) {
|
||||||
|
task = new Sys_task();
|
||||||
|
task.setName(name);
|
||||||
|
task.setJobClass(jobClass);
|
||||||
|
task.setCron(cron);
|
||||||
|
task.setNote(note);
|
||||||
|
task.setData("{}");
|
||||||
|
task.setDisabled(false);
|
||||||
|
// Sys_task 插入时自动生成 UUID,必须使用返回的真实 ID 注册和记录执行结果。
|
||||||
|
task = sysTaskService.insert(task);
|
||||||
|
} else {
|
||||||
|
task = tasks.get(0);
|
||||||
|
if ("每日人员拉取及增量新增".equals(task.getName()) || name.equals(task.getName())) {
|
||||||
|
task.setName(name);
|
||||||
|
task.setNote(note);
|
||||||
|
sysTaskService.update(Chain.make("name", name).add("note", note),
|
||||||
|
Cnd.where("id", "=", task.getId()));
|
||||||
|
}
|
||||||
|
// 兼容旧版本重启生成的重复任务,不删除用户可追溯的任务记录。
|
||||||
|
for (int i = 1; i < tasks.size(); i++) {
|
||||||
|
Sys_task duplicate = tasks.get(i);
|
||||||
|
sysTaskService.update(Chain.make("disabled", true), Cnd.where("id", "=", duplicate.getId()));
|
||||||
|
if (taskPlatformService.isExist(duplicate.getId(), duplicate.getId())) {
|
||||||
|
taskPlatformService.delete(duplicate.getId(), duplicate.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String legacyId = "sys-user-daily-incr-sync";
|
||||||
|
if (taskPlatformService.isExist(legacyId, legacyId)) {
|
||||||
|
taskPlatformService.delete(legacyId, legacyId);
|
||||||
|
}
|
||||||
|
String id = task.getId();
|
||||||
|
// 使用数据库保存的 Cron 重建调度;配置默认值只用于首次创建,不覆盖页面设置。
|
||||||
|
if (taskPlatformService.isExist(id, id)) {
|
||||||
|
taskPlatformService.delete(id, id);
|
||||||
|
}
|
||||||
|
if (!task.isDisabled()) {
|
||||||
|
taskPlatformService.add(id, id, task.getJobClass(), task.getCron(), task.getNote(), task.getData());
|
||||||
|
}
|
||||||
|
log.info("人员全量同步任务就绪,任务ID:{},Cron:{},禁用:{},JVM时区:{}",
|
||||||
|
id, task.getCron(), task.isDisabled(), java.util.TimeZone.getDefault().getID());
|
||||||
|
}
|
||||||
|
|
||||||
|
/** taskId 为调度任务主键,result 为统计或失败说明;结果显示在系统任务列表。 */
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
public void recordResult(String taskId, String result) {
|
||||||
|
sysTaskService.update(Chain.make("exeAt", System.currentTimeMillis() / 1000)
|
||||||
|
.add("exeResult", result), Cnd.where("id", "=", taskId));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
package com.budwk.app.task.job;
|
||||||
|
|
||||||
|
import com.budwk.app.sys.services.impl.SysUserDailySyncService;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.quartz.*;
|
||||||
|
|
||||||
|
/** 每天拉取推送库并全量更新;保留原类名以兼容线上已有任务记录。 */
|
||||||
|
@IocBean
|
||||||
|
@Slf4j
|
||||||
|
@DisallowConcurrentExecution
|
||||||
|
public class SysUserIncrRenewJob implements Job {
|
||||||
|
@Inject
|
||||||
|
private SysUserDailySyncService sysUserDailySyncService;
|
||||||
|
|
||||||
|
/** Quartz 上下文提供任务 ID;失败交由调度器记录,不立即循环重试。 */
|
||||||
|
@Override
|
||||||
|
public void execute(JobExecutionContext context) throws JobExecutionException {
|
||||||
|
String taskId = context.getJobDetail().getKey().getName();
|
||||||
|
long startTime = System.currentTimeMillis();
|
||||||
|
log.info("每日人员全量同步开始,任务ID:{}", taskId);
|
||||||
|
try {
|
||||||
|
String result = sysUserDailySyncService.sync();
|
||||||
|
sysUserDailySyncService.recordResult(taskId, result);
|
||||||
|
log.info("每日人员同步完成,任务ID:{},耗时:{}ms,{}", taskId, System.currentTimeMillis() - startTime, result);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("每日人员同步失败,任务ID:" + taskId, e);
|
||||||
|
// 记录结果失败不能掩盖最初的同步异常。
|
||||||
|
try {
|
||||||
|
sysUserDailySyncService.recordResult(taskId, "人员同步失败,请检查来源连接、数据及应用日志。");
|
||||||
|
} catch (Exception recordError) {
|
||||||
|
log.error("同步失败结果写入失败,任务ID:" + taskId, recordError);
|
||||||
|
}
|
||||||
|
throw new JobExecutionException("每日人员同步失败", e, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
+4
-20
@@ -206,7 +206,7 @@ public class ActivityBasicScopeController {
|
|||||||
if (!StpUtil.hasRole(RoleConstant.SYSADMIN.name()) && !StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
if (!StpUtil.hasRole(RoleConstant.SYSADMIN.name()) && !StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||||
SqlExpressionGroup group = new SqlExpressionGroup();
|
SqlExpressionGroup group = new SqlExpressionGroup();
|
||||||
group.or("creator", "=", SecurityUtil.getUserId());
|
group.or("creator", "=", SecurityUtil.getUserId());
|
||||||
if(AuthUtil.hasRole(RoleConstant.CLUB_PRESIDENT.name())) {
|
if(AuthUtil.hasRole(RoleConstant.CLUB_MANAGER.name())) {
|
||||||
group.or("groupName", "like", "%社%");
|
group.or("groupName", "like", "%社%");
|
||||||
}
|
}
|
||||||
cnd.and(group);
|
cnd.and(group);
|
||||||
@@ -250,7 +250,7 @@ public class ActivityBasicScopeController {
|
|||||||
addv("is_A06", StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name()));
|
addv("is_A06", StpUtil.hasRole(RoleConstant.SCHOOL_UNION_ADMIN.name()));
|
||||||
addv("is_H04", StpUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name()));
|
addv("is_H04", StpUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name()));
|
||||||
addv("is_H02", StpUtil.hasRole(RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name()));
|
addv("is_H02", StpUtil.hasRole(RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name()));
|
||||||
addv("is_CLUB_PRESIDENT", StpUtil.hasRole(RoleConstant.CLUB_PRESIDENT.name()));
|
addv("is_CLUB_MANAGER", StpUtil.hasRole(RoleConstant.CLUB_MANAGER.name()));
|
||||||
addv("is_sysadmin", StpUtil.hasRole(RoleConstant.SYSADMIN.name()));
|
addv("is_sysadmin", StpUtil.hasRole(RoleConstant.SYSADMIN.name()));
|
||||||
addv("unionid", SecurityUtil.getUnionId());
|
addv("unionid", SecurityUtil.getUnionId());
|
||||||
}});
|
}});
|
||||||
@@ -383,24 +383,8 @@ public class ActivityBasicScopeController {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())){
|
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.CLUB_MANAGER.name())) {
|
||||||
boolean isBranchUnionChairman = AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name());
|
cnd.andEX("u.unionid", "=", SecurityUtil.getUnionId());
|
||||||
boolean isClubPresident = AuthUtil.hasRole(RoleConstant.CLUB_PRESIDENT.name());
|
|
||||||
List<String> manageClubIdList = sysClubService.getMyManageClub().stream().map(SysClub::getId).toList();
|
|
||||||
if (isBranchUnionChairman && isClubPresident) {
|
|
||||||
// Users with both roles can search their union users and their managed club members.
|
|
||||||
SqlExpressionGroup scopeGroup = new SqlExpressionGroup();
|
|
||||||
scopeGroup.or("u.unionid", "=", SecurityUtil.getUnionId());
|
|
||||||
if (Lang.isNotEmpty(manageClubIdList)) {
|
|
||||||
scopeGroup.or("clubuser.clubid", "in", manageClubIdList);
|
|
||||||
}
|
|
||||||
cnd.and(scopeGroup);
|
|
||||||
} else if (isClubPresident) {
|
|
||||||
// Club presidents can only search members from clubs they manage.
|
|
||||||
cnd.and("clubuser.clubid", "in", Lang.isNotEmpty(manageClubIdList) ? manageClubIdList : List.of("__EMPTY_CLUB_ID__"));
|
|
||||||
} else {
|
|
||||||
cnd.andEX("u.unionid", "=", SecurityUtil.getUnionId());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
cnd.andEX("u.unionid", EQ_OR_NEQ_OP, activityUserScopePageParam.getUnionId());
|
cnd.andEX("u.unionid", EQ_OR_NEQ_OP, activityUserScopePageParam.getUnionId());
|
||||||
cnd.andEX("u.unitid", EQ_OR_NEQ_OP, activityUserScopePageParam.getUnitId());
|
cnd.andEX("u.unitid", EQ_OR_NEQ_OP, activityUserScopePageParam.getUnitId());
|
||||||
|
|||||||
+6
-6
@@ -26,6 +26,7 @@ import org.nutz.mvc.annotation.Ok;
|
|||||||
import org.nutz.mvc.annotation.Param;
|
import org.nutz.mvc.annotation.Param;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -78,13 +79,12 @@ public class ActivityBasicUnitController {
|
|||||||
|
|
||||||
List<TreeNode<String>> nodeList = CollUtil.newArrayList();
|
List<TreeNode<String>> nodeList = CollUtil.newArrayList();
|
||||||
for (int i = 0; i < list.size(); i++) {
|
for (int i = 0; i < list.size(); i++) {
|
||||||
|
// 活动单位的部门类别允许为空,使用可接收 null 的 Map 保存树节点扩展属性。
|
||||||
|
Map<String, Object> extra = new HashMap<>();
|
||||||
|
extra.put("unitType", list.get(i).getUnitType());
|
||||||
|
extra.put("unitTypeCode", list.get(i).getUnitTypeCode());
|
||||||
nodeList.add(new TreeNode<>(list.get(i).getId(), list.get(i).getParentId(), list.get(i).getName(), i)
|
nodeList.add(new TreeNode<>(list.get(i).getId(), list.get(i).getParentId(), list.get(i).getName(), i)
|
||||||
.setExtra(
|
.setExtra(extra));
|
||||||
Map.of(
|
|
||||||
"unitType", list.get(i).getUnitType(),
|
|
||||||
"unitTypeCode", list.get(i).getUnitTypeCode()
|
|
||||||
)
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
List<Tree<String>> treeList = TreeUtil.build(nodeList, StrUtil.blankToDefault(pid, "0"));
|
List<Tree<String>> treeList = TreeUtil.build(nodeList, StrUtil.blankToDefault(pid, "0"));
|
||||||
|
|
||||||
|
|||||||
+7
-4
@@ -10,7 +10,6 @@ import com.budwk.app.base.result.Result;
|
|||||||
import com.budwk.app.sys.models.Sys_home_activity;
|
import com.budwk.app.sys.models.Sys_home_activity;
|
||||||
import com.budwk.app.zhgh.activity.basic.models.ActivityBasicSettings;
|
import com.budwk.app.zhgh.activity.basic.models.ActivityBasicSettings;
|
||||||
import com.budwk.app.zhgh.activity.culture.models.ActivityTissue;
|
import com.budwk.app.zhgh.activity.culture.models.ActivityTissue;
|
||||||
import com.budwk.app.zhgh.activity.culture.models.ActivityTissuePerson;
|
|
||||||
import com.budwk.app.zhgh.activity.culture.service.ActivityCultureService;
|
import com.budwk.app.zhgh.activity.culture.service.ActivityCultureService;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
@@ -81,14 +80,18 @@ public class ActivityCultureInfoManageController {
|
|||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除指定文化活动及其关联流程。
|
||||||
|
*
|
||||||
|
* @param id 文化活动主表 ID,由活动列表当前行传入
|
||||||
|
* @return Result 成功响应,code 为 0;不返回业务数据
|
||||||
|
*/
|
||||||
@At
|
@At
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
@SLog(tag = "文化活动", msg = "删除了一条活动")
|
@SLog(tag = "文化活动", msg = "删除了一条活动")
|
||||||
@SaCheckPermission(value = {"activity.culture.infoManage.school", "activity.culture.infoManage.union", "activity.culture.infoManage.club"}, mode = SaMode.OR)
|
@SaCheckPermission(value = {"activity.culture.infoManage.school", "activity.culture.infoManage.union", "activity.culture.infoManage.club"}, mode = SaMode.OR)
|
||||||
public Result doDelete(@Valid String id) {
|
public Result doDelete(@Valid String id) {
|
||||||
activityCultureService.delete(id);
|
activityCultureService.doDeleteActivity(id);
|
||||||
activityCultureService.dao().clear(ActivityTissuePerson.class, Cnd.where(ActivityTissuePerson::getTissueId, "=", id));
|
|
||||||
activityCultureService.dao().delete(Sys_home_activity.class, id);
|
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,13 @@ public interface ActivityCultureService extends BaseService<ActivityTissue> {
|
|||||||
|
|
||||||
void doEditActivity(ActivityTissue tissue);
|
void doEditActivity(ActivityTissue tissue);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除文化活动及关联的 WF 流程任务、实例;未发起流程时仅删除业务数据。
|
||||||
|
*
|
||||||
|
* @param id 文化活动主表 ID,同时作为 WF 流程的 businessNo
|
||||||
|
*/
|
||||||
|
void doDeleteActivity(String id);
|
||||||
|
|
||||||
Object pageData(PageForm page, String year, String name, String unionId, Integer activity_type);
|
Object pageData(PageForm page, String year, String name, String unionId, Integer activity_type);
|
||||||
|
|
||||||
NutMap findOne(String id);
|
NutMap findOne(String id);
|
||||||
|
|||||||
+34
-2
@@ -5,6 +5,8 @@ import com.budwk.app.base.constant.RoleConstant;
|
|||||||
import com.budwk.app.base.model.Audit;
|
import com.budwk.app.base.model.Audit;
|
||||||
import com.budwk.app.base.param.PageForm;
|
import com.budwk.app.base.param.PageForm;
|
||||||
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||||
|
import com.budwk.app.flow.engine.FlowEngine;
|
||||||
|
import com.budwk.app.sys.models.Sys_home_activity;
|
||||||
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
import com.budwk.app.web.commons.auth.utils.AuthUtil;
|
||||||
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
import com.budwk.app.web.commons.auth.utils.SecurityUtil;
|
||||||
import com.budwk.app.zhgh.activity.culture.models.ActivityTissue;
|
import com.budwk.app.zhgh.activity.culture.models.ActivityTissue;
|
||||||
@@ -12,11 +14,13 @@ import com.budwk.app.zhgh.activity.culture.models.ActivityTissuePerson;
|
|||||||
import com.budwk.app.zhgh.activity.culture.service.ActivityCultureService;
|
import com.budwk.app.zhgh.activity.culture.service.ActivityCultureService;
|
||||||
import com.budwk.app.zhgh.club.model.SysClub;
|
import com.budwk.app.zhgh.club.model.SysClub;
|
||||||
import com.budwk.app.zhgh.club.service.SysClubService;
|
import com.budwk.app.zhgh.club.service.SysClubService;
|
||||||
|
import org.nutz.aop.interceptor.ioc.TransAop;
|
||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
import org.nutz.dao.Dao;
|
import org.nutz.dao.Dao;
|
||||||
import org.nutz.dao.Sqls;
|
import org.nutz.dao.Sqls;
|
||||||
import org.nutz.dao.sql.Sql;
|
import org.nutz.dao.sql.Sql;
|
||||||
import org.nutz.dao.util.cri.SqlExpressionGroup;
|
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.Inject;
|
||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
import org.nutz.lang.Strings;
|
import org.nutz.lang.Strings;
|
||||||
@@ -40,6 +44,9 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl<ActivityTissue>
|
|||||||
@Inject
|
@Inject
|
||||||
private SysClubService sysClubService;
|
private SysClubService sysClubService;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private FlowEngine flowEngine;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<NutMap> getUnionData(String activityScopeGroupId) {
|
public List<NutMap> getUnionData(String activityScopeGroupId) {
|
||||||
if (StrUtil.isBlank(activityScopeGroupId)) {
|
if (StrUtil.isBlank(activityScopeGroupId)) {
|
||||||
@@ -74,15 +81,41 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl<ActivityTissue>
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 在同一事务内删除活动、活动人员、首页活动展示及关联 WF 任务和实例。
|
||||||
|
*
|
||||||
|
* @param id 文化活动主表 ID,同时作为 WF 流程的 businessNo
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
|
public void doDeleteActivity(String id) {
|
||||||
|
delete(id);
|
||||||
|
dao().clear(ActivityTissuePerson.class, Cnd.where(ActivityTissuePerson::getTissueId, "=", id));
|
||||||
|
dao().delete(Sys_home_activity.class, id);
|
||||||
|
// 复用其他“我的申请”页面的删除能力;无流程实例的校工会活动、草稿会直接跳过流程清理。
|
||||||
|
flowEngine.processInstanceService().deleteProcessInstanceByBusinessKey(id);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void doEditActivity(ActivityTissue tissue) {
|
public void doEditActivity(ActivityTissue tissue) {
|
||||||
update(tissue);
|
update(tissue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 按当前用户的数据权限分页返回文化活动及其流程任务信息。
|
||||||
|
*
|
||||||
|
* @param page 分页及排序参数,包含页码、每页条数和排序字段、方向
|
||||||
|
* @param year 申请年份,如 2026;为空时不限定年份
|
||||||
|
* @param name 活动名称关键字;为空时不限定名称
|
||||||
|
* @param unionId 所属工会 ID;为空时不限定工会
|
||||||
|
* @param activity_type 活动类型:40001 校工会、40002 分工会、40003 协会
|
||||||
|
* @return Pagination 分页对象,list 包含活动、流程实例和任务字段,totalCount 为查询总条数
|
||||||
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Object pageData(PageForm page, String year, String name, String unionId, Integer activity_type) {
|
public Object pageData(PageForm page, String year, String name, String unionId, Integer activity_type) {
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
|
|
||||||
|
// 列表不使用任务参与人字段,不关联参与人表,避免同一任务因多名审批人重复显示。
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
tissue.*,
|
tissue.*,
|
||||||
@@ -112,7 +145,6 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl<ActivityTissue>
|
|||||||
LEFT JOIN activity_basic_settings abs ON abs.`code`=tissue.projectTypeCode
|
LEFT JOIN activity_basic_settings abs ON abs.`code`=tissue.projectTypeCode
|
||||||
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = tissue.id
|
LEFT JOIN `wf_process_instance` ins ON ins.businessNo = tissue.id
|
||||||
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
|
LEFT JOIN wf_process_task t ON t.processInstanceId = ins.id AND t.taskState = 10
|
||||||
LEFT JOIN wf_process_task_actor ta ON ta.processTaskId = t.id
|
|
||||||
$condition
|
$condition
|
||||||
""");
|
""");
|
||||||
|
|
||||||
@@ -131,7 +163,7 @@ public class ActivityCultureServiceImpl extends BaseServiceImpl<ActivityTissue>
|
|||||||
if (AuthUtil.hasRoleOr(RoleConstant.BRANCH_UNION_ADMIN.name(), RoleConstant.BRANCH_UNION_CHAIRMAN.name())) {
|
if (AuthUtil.hasRoleOr(RoleConstant.BRANCH_UNION_ADMIN.name(), RoleConstant.BRANCH_UNION_CHAIRMAN.name())) {
|
||||||
group.or("tissue.unionId", "=", SecurityUtil.getUnionId());
|
group.or("tissue.unionId", "=", SecurityUtil.getUnionId());
|
||||||
}
|
}
|
||||||
if (AuthUtil.hasRole(RoleConstant.CLUB_PRESIDENT.name())) {
|
if (AuthUtil.hasRole(RoleConstant.CLUB_MANAGER.name())) {
|
||||||
List<SysClub> myManageClub = sysClubService.getMyManageClub();
|
List<SysClub> myManageClub = sysClubService.getMyManageClub();
|
||||||
List<String> clubIds = myManageClub.stream().map(SysClub::getId).collect(Collectors.toList());
|
List<String> clubIds = myManageClub.stream().map(SysClub::getId).collect(Collectors.toList());
|
||||||
group.or("tissue.clubId", "in", clubIds);
|
group.or("tissue.clubId", "in", clubIds);
|
||||||
|
|||||||
+2
-1
@@ -223,7 +223,8 @@ public class ActivityDeclareMineController {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// 协会负责人审核
|
// 协会负责人审核
|
||||||
doneTaskVos.stream().filter(task -> "协会负责人审核".equals(task.getDisplayName()))
|
// 同时识别历史与新版节点名称,确保导出保留两种流程版本的负责人审批意见。
|
||||||
|
doneTaskVos.stream().filter(task -> ("协会负责人审核".equals(task.getDisplayName()) || "俱乐部负责人审核".equals(task.getDisplayName())))
|
||||||
.max(Comparator.comparing(ProcessTaskVO::getCreatedAt))
|
.max(Comparator.comparing(ProcessTaskVO::getCreatedAt))
|
||||||
.ifPresent(v -> {
|
.ifPresent(v -> {
|
||||||
Dict taskFormData = v.getTaskFormData();
|
Dict taskFormData = v.getTaskFormData();
|
||||||
|
|||||||
+1
-1
@@ -27,7 +27,7 @@ public enum ActivityDeclareReimbursement {
|
|||||||
/**
|
/**
|
||||||
* 协会
|
* 协会
|
||||||
*/
|
*/
|
||||||
CLUB("协会活动");
|
CLUB("俱乐部活动");
|
||||||
|
|
||||||
private final String typeName;
|
private final String typeName;
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -110,7 +110,7 @@ public class ActivityReimbursementBoardController {
|
|||||||
|
|
||||||
list.add(new NutMap() {{
|
list.add(new NutMap() {{
|
||||||
put("year", year);
|
put("year", year);
|
||||||
put("type", "社团活动");
|
put("type", "俱乐部活动");
|
||||||
put("num", activityReimbursementService.count(sql.setParam("type", "ACTIVITY_BUDGET_TYPE_THREE").setParam("year", year)));
|
put("num", activityReimbursementService.count(sql.setParam("type", "ACTIVITY_BUDGET_TYPE_THREE").setParam("year", year)));
|
||||||
}});
|
}});
|
||||||
}
|
}
|
||||||
@@ -145,7 +145,7 @@ public class ActivityReimbursementBoardController {
|
|||||||
put("num", activityReimbursementService.count(sql.setParam("type", "ACTIVITY_BUDGET_TYPE_TWO")));
|
put("num", activityReimbursementService.count(sql.setParam("type", "ACTIVITY_BUDGET_TYPE_TWO")));
|
||||||
}});
|
}});
|
||||||
list.add(new NutMap() {{
|
list.add(new NutMap() {{
|
||||||
put("type", "社团活动");
|
put("type", "俱乐部活动");
|
||||||
put("num", activityReimbursementService.count(sql.setParam("type", "ACTIVITY_BUDGET_TYPE_THREE")));
|
put("num", activityReimbursementService.count(sql.setParam("type", "ACTIVITY_BUDGET_TYPE_THREE")));
|
||||||
}});
|
}});
|
||||||
return Result.success(list);
|
return Result.success(list);
|
||||||
@@ -191,7 +191,7 @@ public class ActivityReimbursementBoardController {
|
|||||||
|
|
||||||
list.add(new NutMap() {{
|
list.add(new NutMap() {{
|
||||||
put("year", year);
|
put("year", year);
|
||||||
put("type", "社团费用");
|
put("type", "俱乐部费用");
|
||||||
put("num", activityReimbursementService.list(sql.setParam("type", "ACTIVITY_BUDGET_TYPE_THREE").setParam("year", year)).get(0).getDouble("money"));
|
put("num", activityReimbursementService.list(sql.setParam("type", "ACTIVITY_BUDGET_TYPE_THREE").setParam("year", year)).get(0).getDouble("money"));
|
||||||
}});
|
}});
|
||||||
}
|
}
|
||||||
@@ -218,7 +218,7 @@ public class ActivityReimbursementBoardController {
|
|||||||
put("num", activityReimbursementService.count(unionSql));
|
put("num", activityReimbursementService.count(unionSql));
|
||||||
}});
|
}});
|
||||||
list.add(new NutMap() {{
|
list.add(new NutMap() {{
|
||||||
put("type", "社团费用");
|
put("type", "俱乐部费用");
|
||||||
put("num", activityReimbursementService.count(clubSql));
|
put("num", activityReimbursementService.count(clubSql));
|
||||||
}});
|
}});
|
||||||
return Result.success().addData(list);
|
return Result.success().addData(list);
|
||||||
|
|||||||
+2
-1
@@ -325,7 +325,8 @@ public class ActivityReimbursementMineController {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// 协会负责人审核
|
// 协会负责人审核
|
||||||
doneTaskVos.stream().filter(task -> "协会负责人审核".equals(task.getDisplayName()))
|
// 同时识别历史与新版节点名称,确保导出保留两种流程版本的负责人审批意见。
|
||||||
|
doneTaskVos.stream().filter(task -> ("协会负责人审核".equals(task.getDisplayName()) || "俱乐部负责人审核".equals(task.getDisplayName())))
|
||||||
.max(Comparator.comparing(ProcessTaskVO::getCreatedAt))
|
.max(Comparator.comparing(ProcessTaskVO::getCreatedAt))
|
||||||
.ifPresent(v -> {
|
.ifPresent(v -> {
|
||||||
Dict taskFormData = v.getTaskFormData();
|
Dict taskFormData = v.getTaskFormData();
|
||||||
|
|||||||
+1
-1
@@ -57,7 +57,7 @@ public class CommonPageParam extends PageForm {
|
|||||||
RoleConstant.BRANCH_UNION_OPERATOR.name())) {
|
RoleConstant.BRANCH_UNION_OPERATOR.name())) {
|
||||||
group.or(prefix + "unionid", "=", SecurityUtil.getUnionId());
|
group.or(prefix + "unionid", "=", SecurityUtil.getUnionId());
|
||||||
}
|
}
|
||||||
if (AuthUtil.hasRoleOr(RoleConstant.CLUB_MANAGER.name(), RoleConstant.CLUB_PRESIDENT.name())) {
|
if (AuthUtil.hasRoleOr(RoleConstant.CLUB_MANAGER.name())) {
|
||||||
// cnd.and(prefix + "clubId", "=", );
|
// cnd.and(prefix + "clubId", "=", );
|
||||||
group.or(prefix + "clubId", "in", SecurityUtil.getClubIds());
|
group.or(prefix + "clubId", "in", SecurityUtil.getClubIds());
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -145,7 +145,7 @@ public class YearPlanController {
|
|||||||
@SaCheckPermission("planSummary.yearPlan.manage")
|
@SaCheckPermission("planSummary.yearPlan.manage")
|
||||||
public Result queryClub() {
|
public Result queryClub() {
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
if(!AuthUtil.hasRole(RoleConstant.SYSADMIN.name()) && AuthUtil.hasRole(RoleConstant.CLUB_PRESIDENT.name())) {
|
if(!AuthUtil.hasRole(RoleConstant.SYSADMIN.name()) && AuthUtil.hasRole(RoleConstant.CLUB_MANAGER.name())) {
|
||||||
List<SysClub> clubList = sysClubService.getMyManageClub();
|
List<SysClub> clubList = sysClubService.getMyManageClub();
|
||||||
List<String> list = clubList.stream().map(SysClub::getId).toList();
|
List<String> list = clubList.stream().map(SysClub::getId).toList();
|
||||||
cnd.and(SysClub::getId, "in", list);
|
cnd.and(SysClub::getId, "in", list);
|
||||||
|
|||||||
+1
-1
@@ -71,7 +71,7 @@ public class YearPlanServiceImpl extends BaseServiceImpl<YearPlan> implements Ye
|
|||||||
if(AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) {
|
if(AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) {
|
||||||
group.or("yp.tissueId", "=", SecurityUtil.getUnionId());
|
group.or("yp.tissueId", "=", SecurityUtil.getUnionId());
|
||||||
}
|
}
|
||||||
if(AuthUtil.hasRole(RoleConstant.CLUB_PRESIDENT.name())) {
|
if(AuthUtil.hasRole(RoleConstant.CLUB_MANAGER.name())) {
|
||||||
List<SysClub> clubList = sysClubService.getMyManageClub();
|
List<SysClub> clubList = sysClubService.getMyManageClub();
|
||||||
List<String> list = clubList.stream().map(SysClub::getId).toList();
|
List<String> list = clubList.stream().map(SysClub::getId).toList();
|
||||||
group.or("yp.tissueId", "in", list);
|
group.or("yp.tissueId", "in", list);
|
||||||
|
|||||||
+1
-1
@@ -68,7 +68,7 @@ public class YearSummaryServiceImpl extends BaseServiceImpl<YearSummary> impleme
|
|||||||
if(AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) {
|
if(AuthUtil.hasRole(RoleConstant.BRANCH_UNION_CHAIRMAN.name())) {
|
||||||
group.or("ys.tissueId", "=", SecurityUtil.getUnionId());
|
group.or("ys.tissueId", "=", SecurityUtil.getUnionId());
|
||||||
}
|
}
|
||||||
if(AuthUtil.hasRole(RoleConstant.CLUB_PRESIDENT.name())) {
|
if(AuthUtil.hasRole(RoleConstant.CLUB_MANAGER.name())) {
|
||||||
List<SysClub> clubList = sysClubService.getMyManageClub();
|
List<SysClub> clubList = sysClubService.getMyManageClub();
|
||||||
List<String> list = clubList.stream().map(SysClub::getId).toList();
|
List<String> list = clubList.stream().map(SysClub::getId).toList();
|
||||||
group.or("ys.tissueId", "in", list);
|
group.or("ys.tissueId", "in", list);
|
||||||
|
|||||||
+1
-1
@@ -132,7 +132,7 @@ public class TrainSignUpActivityStatisticsController {
|
|||||||
result.add(activity);
|
result.add(activity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(AuthUtil.hasRoleOr(RoleConstant.CLUB_PRESIDENT.name(), RoleConstant.CLUB_OPERATOR.name())) {
|
if(AuthUtil.hasRoleOr(RoleConstant.CLUB_MANAGER.name(), RoleConstant.CLUB_OPERATOR.name())) {
|
||||||
if(clubIds.stream().anyMatch(activity.getHostUnits()::contains) || clubIds.stream().anyMatch(activity.getHelpUnits()::contains)) {
|
if(clubIds.stream().anyMatch(activity.getHostUnits()::contains) || clubIds.stream().anyMatch(activity.getHelpUnits()::contains)) {
|
||||||
result.add(activity);
|
result.add(activity);
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -123,7 +123,7 @@ public class ClubUserJoinApplyController {
|
|||||||
if (ObjectUtil.isNotEmpty(userApply) && StrUtil.isBlank(userApply.getId())) {
|
if (ObjectUtil.isNotEmpty(userApply) && StrUtil.isBlank(userApply.getId())) {
|
||||||
ProcessInstance processInstance = dao.fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", userApply.getId()));
|
ProcessInstance processInstance = dao.fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", userApply.getId()));
|
||||||
if (!List.of(ProcessInstanceStateEnum.REJECT.getCode(),ProcessInstanceStateEnum.FINISHED.getCode()).contains(processInstance.getState())) {
|
if (!List.of(ProcessInstanceStateEnum.REJECT.getCode(),ProcessInstanceStateEnum.FINISHED.getCode()).contains(processInstance.getState())) {
|
||||||
return Result.error("您有该协会的申请记录尚未完成,请到我的申请里查看!");
|
return Result.error("您有该俱乐部的申请记录尚未完成,请到我的申请里查看!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -178,7 +178,7 @@ public class ClubUserJoinApplyController {
|
|||||||
|
|
||||||
ProcessInstance processInstance = dao.fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", userApply.getId()));
|
ProcessInstance processInstance = dao.fetch(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "=", userApply.getId()));
|
||||||
if (!List.of(ProcessInstanceStateEnum.REJECT.getCode(),ProcessInstanceStateEnum.FINISHED.getCode()).contains(processInstance.getState())) {
|
if (!List.of(ProcessInstanceStateEnum.REJECT.getCode(),ProcessInstanceStateEnum.FINISHED.getCode()).contains(processInstance.getState())) {
|
||||||
return Result.error(99, "您有该协会的申请记录尚未完成,请到我的申请里查看!");
|
return Result.error(99, "您有该俱乐部的申请记录尚未完成,请到我的申请里查看!");
|
||||||
}
|
}
|
||||||
return Result.success();
|
return Result.success();
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -63,7 +63,7 @@ public class ClubUserMineClubController {
|
|||||||
FROM
|
FROM
|
||||||
sys_club club
|
sys_club club
|
||||||
LEFT JOIN club_user uc ON club.id = uc.clubId
|
LEFT JOIN club_user uc ON club.id = uc.clubId
|
||||||
LEFT JOIN club_user presidentCu ON presidentCu.clubId = club.id AND JSON_CONTAINS(presidentCu.roleCode, '"CLUB_PRESIDENT"')
|
LEFT JOIN club_user presidentCu ON presidentCu.clubId = club.id AND JSON_CONTAINS(presidentCu.roleCode, '"CLUB_MANAGER"')
|
||||||
LEFT JOIN sys_user presidentUser ON presidentUser.id = presidentCu.userId
|
LEFT JOIN sys_user presidentUser ON presidentUser.id = presidentCu.userId
|
||||||
LEFT JOIN club_user secretaryCu ON secretaryCu.clubId = club.id AND JSON_CONTAINS(secretaryCu.roleCode, '"CLUB_SECRETARY"')
|
LEFT JOIN club_user secretaryCu ON secretaryCu.clubId = club.id AND JSON_CONTAINS(secretaryCu.roleCode, '"CLUB_SECRETARY"')
|
||||||
LEFT JOIN sys_user secretaryUser ON secretaryUser.id = secretaryCu.userId
|
LEFT JOIN sys_user secretaryUser ON secretaryUser.id = secretaryCu.userId
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ public class ClubCommonController {
|
|||||||
public Result listClubByRole() {
|
public Result listClubByRole() {
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||||
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_PRESIDENT);
|
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_MANAGER);
|
||||||
List<Sys_user_role> userRoles = sysClubService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
List<Sys_user_role> userRoles = sysClubService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
||||||
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
||||||
cnd.and("c.id", "in", myClubId);
|
cnd.and("c.id", "in", myClubId);
|
||||||
|
|||||||
+2
-2
@@ -63,7 +63,7 @@ public class ClubEvaluateClubAuditController {
|
|||||||
@At
|
@At
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
@SaCheckPermission("club.evaluate.clubAudit")
|
@SaCheckPermission("club.evaluate.clubAudit")
|
||||||
@SLog(tag = "协会管理系统-协会评优", msg = "会长审核评优申请")
|
@SLog(tag = "协会管理系统-协会评优", msg = "协会负责人审核评优申请")
|
||||||
public Result approval(@Valid @Param("approval") BpmTaskApprovalParam approvalParam) {
|
public Result approval(@Valid @Param("approval") BpmTaskApprovalParam approvalParam) {
|
||||||
approvalParam.getBpmTaskApprovalTypeEnum();
|
approvalParam.getBpmTaskApprovalTypeEnum();
|
||||||
Map<String, Object> variables = BeanUtil.beanToMap(approvalParam);
|
Map<String, Object> variables = BeanUtil.beanToMap(approvalParam);
|
||||||
@@ -80,7 +80,7 @@ public class ClubEvaluateClubAuditController {
|
|||||||
@At
|
@At
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
@SaCheckPermission("club.evaluate.clubAudit")
|
@SaCheckPermission("club.evaluate.clubAudit")
|
||||||
@SLog(tag = "协会管理系统-协会评优", msg = "会长撤回评优申请")
|
@SLog(tag = "协会管理系统-协会评优", msg = "协会负责人撤回评优申请")
|
||||||
public Result revoke(@Valid String taskId) {
|
public Result revoke(@Valid String taskId) {
|
||||||
bpmService.revokeTask(taskId);
|
bpmService.revokeTask(taskId);
|
||||||
return Result.success();
|
return Result.success();
|
||||||
|
|||||||
+5
-5
@@ -69,7 +69,7 @@ public class ClubExamineApplyController {
|
|||||||
@SaCheckLogin
|
@SaCheckLogin
|
||||||
public Result getCount(String id, Integer year) {
|
public Result getCount(String id, Integer year) {
|
||||||
if(StrUtil.isBlank(id)) {
|
if(StrUtil.isBlank(id)) {
|
||||||
return Result.error("协会信息为空,请核查");
|
return Result.error("俱乐部信息为空,请核查");
|
||||||
}
|
}
|
||||||
if(year == null) {
|
if(year == null) {
|
||||||
return Result.error("年份信息为空,请核查");
|
return Result.error("年份信息为空,请核查");
|
||||||
@@ -94,7 +94,7 @@ public class ClubExamineApplyController {
|
|||||||
@SaCheckLogin
|
@SaCheckLogin
|
||||||
public Result getClubUserNum(String clubId) {
|
public Result getClubUserNum(String clubId) {
|
||||||
if(StrUtil.isBlank(clubId)) {
|
if(StrUtil.isBlank(clubId)) {
|
||||||
return Result.error("协会信息为空,请核查");
|
return Result.error("俱乐部信息为空,请核查");
|
||||||
}
|
}
|
||||||
List<NutMap> result = sysClubExamineService.getClubUserNum(clubId);
|
List<NutMap> result = sysClubExamineService.getClubUserNum(clubId);
|
||||||
return Result.success(result);
|
return Result.success(result);
|
||||||
@@ -104,7 +104,7 @@ public class ClubExamineApplyController {
|
|||||||
@SaCheckLogin
|
@SaCheckLogin
|
||||||
public Result getJgUser(String clubId) {
|
public Result getJgUser(String clubId) {
|
||||||
if(StrUtil.isBlank(clubId)) {
|
if(StrUtil.isBlank(clubId)) {
|
||||||
return Result.error("协会信息为空,请核查");
|
return Result.error("俱乐部信息为空,请核查");
|
||||||
}
|
}
|
||||||
List<NutMap> result = sysClubExamineService.getJgUser(clubId);
|
List<NutMap> result = sysClubExamineService.getJgUser(clubId);
|
||||||
return Result.success(result);
|
return Result.success(result);
|
||||||
@@ -114,7 +114,7 @@ public class ClubExamineApplyController {
|
|||||||
@SaCheckLogin
|
@SaCheckLogin
|
||||||
public Result getClubMemberMoney(String clubId) {
|
public Result getClubMemberMoney(String clubId) {
|
||||||
if(StrUtil.isBlank(clubId)) {
|
if(StrUtil.isBlank(clubId)) {
|
||||||
return Result.error("协会信息为空,请核查");
|
return Result.error("俱乐部信息为空,请核查");
|
||||||
}
|
}
|
||||||
int count = dao.count(ClubUser.class, Cnd.where("clubId", "=", clubId));
|
int count = dao.count(ClubUser.class, Cnd.where("clubId", "=", clubId));
|
||||||
SysClub club = dao.fetch(SysClub.class, clubId);
|
SysClub club = dao.fetch(SysClub.class, clubId);
|
||||||
@@ -134,7 +134,7 @@ public class ClubExamineApplyController {
|
|||||||
@SaCheckLogin
|
@SaCheckLogin
|
||||||
public Result getLasYearSurplus(String clubId) {
|
public Result getLasYearSurplus(String clubId) {
|
||||||
if(StrUtil.isBlank(clubId)) {
|
if(StrUtil.isBlank(clubId)) {
|
||||||
return Result.error("协会信息为空,请核查");
|
return Result.error("俱乐部信息为空,请核查");
|
||||||
}
|
}
|
||||||
SysClubExamineRegister register = dao.fetch(SysClubExamineRegister.class, Cnd.where("clubId", "=", clubId)
|
SysClubExamineRegister register = dao.fetch(SysClubExamineRegister.class, Cnd.where("clubId", "=", clubId)
|
||||||
.and("YEAR(registerDate)", "=", DateUtil.thisYear() - 1));
|
.and("YEAR(registerDate)", "=", DateUtil.thisYear() - 1));
|
||||||
|
|||||||
+2
-2
@@ -57,7 +57,7 @@ public class ClubExamineClubAuditController {
|
|||||||
@At
|
@At
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
@SaCheckPermission("club.examine.clubAudit")
|
@SaCheckPermission("club.examine.clubAudit")
|
||||||
@SLog(tag = "协会管理系统-协会年审", msg = "会长审核年度考核")
|
@SLog(tag = "协会管理系统-协会年审", msg = "协会负责人审核年度考核")
|
||||||
public Result approval(@Valid @Param("approval") BpmTaskApprovalParam approvalParam) {
|
public Result approval(@Valid @Param("approval") BpmTaskApprovalParam approvalParam) {
|
||||||
approvalParam.getBpmTaskApprovalTypeEnum();
|
approvalParam.getBpmTaskApprovalTypeEnum();
|
||||||
Map<String, Object> variables = BeanUtil.beanToMap(approvalParam);
|
Map<String, Object> variables = BeanUtil.beanToMap(approvalParam);
|
||||||
@@ -74,7 +74,7 @@ public class ClubExamineClubAuditController {
|
|||||||
@At
|
@At
|
||||||
@Aop(TransAop.READ_COMMITTED)
|
@Aop(TransAop.READ_COMMITTED)
|
||||||
@SaCheckPermission("club.examine.clubAudit")
|
@SaCheckPermission("club.examine.clubAudit")
|
||||||
@SLog(tag = "协会管理系统-协会年审", msg = "会长撤回年度考核")
|
@SLog(tag = "协会管理系统-协会年审", msg = "协会负责人撤回年度考核")
|
||||||
public Result revoke(@Valid String taskId) {
|
public Result revoke(@Valid String taskId) {
|
||||||
bpmService.revokeTask(taskId);
|
bpmService.revokeTask(taskId);
|
||||||
return Result.success();
|
return Result.success();
|
||||||
|
|||||||
+1
-1
@@ -107,7 +107,7 @@ public class ClubExamineMineController {
|
|||||||
.bind("activityQk", activityQk).build();
|
.bind("activityQk", activityQk).build();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
String fileName = Globals.MyConfig.getString("AppName") + "教职工社团年度考核登记表";
|
String fileName = Globals.MyConfig.getString("AppName") + "教职工俱乐部年度考核登记表";
|
||||||
response.addHeader("Content-Type", "application/octet-stream");
|
response.addHeader("Content-Type", "application/octet-stream");
|
||||||
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) + "\".docx");
|
response.addHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1) + "\".docx");
|
||||||
XWPFTemplate.compile(officeTemplateUtil.getPath("club_examine_register"), config).render(map).writeAndClose(response.getOutputStream());
|
XWPFTemplate.compile(officeTemplateUtil.getPath("club_examine_register"), config).render(map).writeAndClose(response.getOutputStream());
|
||||||
|
|||||||
+26
-16
@@ -3,7 +3,11 @@ package com.budwk.app.zhgh.club.controller.infoManage;
|
|||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
import com.alibaba.excel.EasyExcel;
|
import cn.afterturn.easypoi.excel.ExcelExportUtil;
|
||||||
|
import cn.afterturn.easypoi.excel.entity.ExportParams;
|
||||||
|
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
|
||||||
|
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
|
||||||
|
import org.apache.poi.ss.usermodel.Workbook;
|
||||||
import com.budwk.app.base.annotation.SLog;
|
import com.budwk.app.base.annotation.SLog;
|
||||||
import com.budwk.app.base.constant.RoleConstant;
|
import com.budwk.app.base.constant.RoleConstant;
|
||||||
import com.budwk.app.base.page.Pagination;
|
import com.budwk.app.base.page.Pagination;
|
||||||
@@ -52,7 +56,6 @@ import org.nutz.mvc.upload.UploadAdaptor;
|
|||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -196,12 +199,12 @@ public class ClubInfoManageController {
|
|||||||
@SLog(tag = "协会管理系统-信息管理", msg = "修改身份")
|
@SLog(tag = "协会管理系统-信息管理", msg = "修改身份")
|
||||||
public Result updateRoleCode(@Param("id") String id, @Valid String[] roleCodes, @Valid String clubId) {
|
public Result updateRoleCode(@Param("id") String id, @Valid String[] roleCodes, @Valid String clubId) {
|
||||||
List<String> roleCodeList = Arrays.asList(roleCodes);
|
List<String> roleCodeList = Arrays.asList(roleCodes);
|
||||||
//查询社团是否存在会长或者秘书长
|
//查询社团是否存在协会负责人或者秘书长
|
||||||
if(Arrays.asList(roleCodes).contains(RoleConstant.CLUB_PRESIDENT.name())) {
|
if(Arrays.asList(roleCodes).contains(RoleConstant.CLUB_MANAGER.name())) {
|
||||||
int count = dao.count(ClubUser.class, Cnd.where("clubId", "=", clubId)
|
int count = dao.count(ClubUser.class, Cnd.where("clubId", "=", clubId)
|
||||||
.and(new Static("JSON_CONTAINS(roleCode, '\"%s\"')".formatted(RoleConstant.CLUB_PRESIDENT.name()))));
|
.and(new Static("JSON_CONTAINS(roleCode, '\"%s\"')".formatted(RoleConstant.CLUB_MANAGER.name()))));
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
// return Result.error("会长只能有一位");
|
// return Result.error("协会负责人只能有一位");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(Arrays.asList(roleCodes).contains(RoleConstant.CLUB_SECRETARY.name())) {
|
if(Arrays.asList(roleCodes).contains(RoleConstant.CLUB_SECRETARY.name())) {
|
||||||
@@ -272,12 +275,12 @@ public class ClubInfoManageController {
|
|||||||
@SLog(tag = "协会管理系统-信息管理", msg = "添加协会成员")
|
@SLog(tag = "协会管理系统-信息管理", msg = "添加协会成员")
|
||||||
public Result userDoAdd(@Valid String clubId, @Valid String[] users, @Valid String roleCode, @Valid Boolean payed) {
|
public Result userDoAdd(@Valid String clubId, @Valid String[] users, @Valid String roleCode, @Valid Boolean payed) {
|
||||||
|
|
||||||
//查询社团是否存在会长或者秘书长
|
//查询社团是否存在协会负责人或者秘书长
|
||||||
if (List.of(RoleConstant.CLUB_PRESIDENT.name(), RoleConstant.CLUB_SECRETARY.name()).contains(roleCode)) {
|
if (List.of(RoleConstant.CLUB_MANAGER.name(), RoleConstant.CLUB_SECRETARY.name()).contains(roleCode)) {
|
||||||
int count = clubInfoManageService.dao().count(ClubUser.class, Cnd.where("clubId", "=", clubId)
|
int count = clubInfoManageService.dao().count(ClubUser.class, Cnd.where("clubId", "=", clubId)
|
||||||
.and(new Static("JSON_CONTAINS(roleCode, '\"%s\"')".formatted(roleCode))));
|
.and(new Static("JSON_CONTAINS(roleCode, '\"%s\"')".formatted(roleCode))));
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
return Result.error((Objects.equals(roleCode, RoleConstant.CLUB_PRESIDENT.name()) ? "会长" : "秘书长") + "只能有一位");
|
return Result.error((Objects.equals(roleCode, RoleConstant.CLUB_MANAGER.name()) ? "俱乐部负责人" : "秘书长") + "只能有一位");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Sys_role sysRole = sysRoleService.getByCode(roleCode);
|
Sys_role sysRole = sysRoleService.getByCode(roleCode);
|
||||||
@@ -295,7 +298,7 @@ public class ClubInfoManageController {
|
|||||||
ClubUser clubUser = dao.fetch(ClubUser.class, Cnd.where("clubId", "=", clubId).and("userId", "=", user));
|
ClubUser clubUser = dao.fetch(ClubUser.class, Cnd.where("clubId", "=", clubId).and("userId", "=", user));
|
||||||
if(clubUser != null) {
|
if(clubUser != null) {
|
||||||
List<String> roleCodeList = clubUser.getRoleCode();
|
List<String> roleCodeList = clubUser.getRoleCode();
|
||||||
if (List.of(RoleConstant.CLUB_PRESIDENT.name(), RoleConstant.CLUB_VICE_PRESIDENT.name(), RoleConstant.CLUB_SECRETARY.name(), RoleConstant.CLUB_VICE_SECRETARY.name(), RoleConstant.CLUB_OPERATOR.name()).contains(roleCode)) {
|
if (List.of(RoleConstant.CLUB_MANAGER.name(), RoleConstant.CLUB_VICE_PRESIDENT.name(), RoleConstant.CLUB_SECRETARY.name(), RoleConstant.CLUB_VICE_SECRETARY.name(), RoleConstant.CLUB_OPERATOR.name()).contains(roleCode)) {
|
||||||
roleCodeList.remove(RoleConstant.CLUB_MEMBER.name());
|
roleCodeList.remove(RoleConstant.CLUB_MEMBER.name());
|
||||||
}
|
}
|
||||||
if(!roleCodeList.contains(roleCode)) {
|
if(!roleCodeList.contains(roleCode)) {
|
||||||
@@ -315,6 +318,7 @@ public class ClubInfoManageController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@At
|
@At
|
||||||
|
@Ok("void")
|
||||||
@SaCheckPermission("club.infoManage.manage")
|
@SaCheckPermission("club.infoManage.manage")
|
||||||
@ApiOperation("导出登记表")
|
@ApiOperation("导出登记表")
|
||||||
public void exportRegistrationDoc(@Valid String clubId, HttpServletResponse response){
|
public void exportRegistrationDoc(@Valid String clubId, HttpServletResponse response){
|
||||||
@@ -325,11 +329,17 @@ public class ClubInfoManageController {
|
|||||||
@Ok("void")
|
@Ok("void")
|
||||||
@SaCheckPermission("club.infoManage.manage")
|
@SaCheckPermission("club.infoManage.manage")
|
||||||
public void downloadUserImport(HttpServletResponse response) {
|
public void downloadUserImport(HttpServletResponse response) {
|
||||||
try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();){
|
// 模板保留工号、姓名两列及一行表头,兼容原有从第2行开始的导入逻辑。
|
||||||
EasyExcel.write(byteArrayOutputStream, ClubUserImportVo.class)
|
ExportParams exportParams = new ExportParams();
|
||||||
.sheet("协会会员导入模版")
|
exportParams.setType(ExcelType.XSSF);
|
||||||
.doWrite(ArrayList::new);
|
exportParams.setSheetName("俱乐部会员导入模版");
|
||||||
CommonDownloadUtil.download("协会会员导入模版.xlsx", byteArrayOutputStream.toByteArray() ,response);
|
exportParams.setAddIndex(false);
|
||||||
|
List<ExcelExportEntity> columns = Arrays.asList(
|
||||||
|
new ExcelExportEntity("工号", "loginname", 25),
|
||||||
|
new ExcelExportEntity("姓名", "username", 25));
|
||||||
|
try (Workbook workbook = ExcelExportUtil.exportExcel(exportParams, columns, Collections.emptyList())) {
|
||||||
|
workbook.getSheetAt(0).getRow(0).setHeightInPoints(20);
|
||||||
|
CommonDownloadUtil.download("俱乐部会员导入模版.xlsx", workbook, response);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
@@ -360,7 +370,7 @@ public class ClubInfoManageController {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (clubUsers.stream().anyMatch(s -> s.getUserId().equals(user.getId()))) {
|
if (clubUsers.stream().anyMatch(s -> s.getUserId().equals(user.getId()))) {
|
||||||
v.setErrorInfo("该用户已加入该协会");
|
v.setErrorInfo("该用户已加入该俱乐部");
|
||||||
errorInfos.add(v);
|
errorInfos.add(v);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -129,7 +129,7 @@ public class ClubRefreshReportController {
|
|||||||
List<String> idList = list.stream().map(SysClubRefresh::getId).toList();
|
List<String> idList = list.stream().map(SysClubRefresh::getId).toList();
|
||||||
int count = dao.count(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "in", idList).and(ProcessInstance::getState, "not in", List.of(ProcessInstanceStateEnum.FINISHED.getCode(), ProcessInstanceStateEnum.REJECT.getCode())));
|
int count = dao.count(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "in", idList).and(ProcessInstance::getState, "not in", List.of(ProcessInstanceStateEnum.FINISHED.getCode(), ProcessInstanceStateEnum.REJECT.getCode())));
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
return Result.error("您有该协会的申请记录尚未完成,请核对!");
|
return Result.error("您有该俱乐部的申请记录尚未完成,请核对!");
|
||||||
}
|
}
|
||||||
|
|
||||||
SysClub club = clubInfoManageService.dao().fetch(SysClub.class, clubRefresh.getClubId());
|
SysClub club = clubInfoManageService.dao().fetch(SysClub.class, clubRefresh.getClubId());
|
||||||
|
|||||||
+1
-1
@@ -128,7 +128,7 @@ public class ClubRuleUpdateController {
|
|||||||
List<String> idList = list.stream().map(SysClubRule::getId).toList();
|
List<String> idList = list.stream().map(SysClubRule::getId).toList();
|
||||||
int count = dao.count(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "in", idList).and(ProcessInstance::getState, "not in", List.of(ProcessInstanceStateEnum.FINISHED.getCode(), ProcessInstanceStateEnum.REJECT.getCode())));
|
int count = dao.count(ProcessInstance.class, Cnd.where(ProcessInstance::getBusinessNo, "in", idList).and(ProcessInstance::getState, "not in", List.of(ProcessInstanceStateEnum.FINISHED.getCode(), ProcessInstanceStateEnum.REJECT.getCode())));
|
||||||
if (count > 0) {
|
if (count > 0) {
|
||||||
return Result.error("您有该协会的申请记录尚未完成,请核对!");
|
return Result.error("您有该俱乐部的申请记录尚未完成,请核对!");
|
||||||
}
|
}
|
||||||
|
|
||||||
SysClub club = clubInfoManageService.dao().fetch(SysClub.class, clubRule.getClubId());
|
SysClub club = clubInfoManageService.dao().fetch(SysClub.class, clubRule.getClubId());
|
||||||
|
|||||||
+9
-9
@@ -98,7 +98,7 @@ public class ClubStatisticsController {
|
|||||||
cnd.and("id", auditState ? "in" : "not in", registers.stream().map(SysClubExamineRegister::getClubId).toList());
|
cnd.and("id", auditState ? "in" : "not in", registers.stream().map(SysClubExamineRegister::getClubId).toList());
|
||||||
}*/
|
}*/
|
||||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name())) {
|
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name())) {
|
||||||
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_PRESIDENT);
|
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_MANAGER);
|
||||||
List<Sys_user_role> userRoles = sysClubService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
List<Sys_user_role> userRoles = sysClubService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
||||||
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
||||||
cnd.and("id", "in", myClubId);
|
cnd.and("id", "in", myClubId);
|
||||||
@@ -136,7 +136,7 @@ public class ClubStatisticsController {
|
|||||||
$condition
|
$condition
|
||||||
ORDER BY
|
ORDER BY
|
||||||
CASE
|
CASE
|
||||||
WHEN JSON_CONTAINS(c.roleCode, '"CLUB_PRESIDENT"') THEN 1
|
WHEN JSON_CONTAINS(c.roleCode, '"CLUB_MANAGER"') THEN 1
|
||||||
WHEN JSON_CONTAINS(c.roleCode, '"CLUB_VICE_PRESIDENT"') THEN 2
|
WHEN JSON_CONTAINS(c.roleCode, '"CLUB_VICE_PRESIDENT"') THEN 2
|
||||||
WHEN JSON_CONTAINS(c.roleCode, '"CLUB_SECRETARY"') THEN 3
|
WHEN JSON_CONTAINS(c.roleCode, '"CLUB_SECRETARY"') THEN 3
|
||||||
WHEN JSON_CONTAINS(c.roleCode, '"CLUB_VICE_SECRETARY"') THEN 4
|
WHEN JSON_CONTAINS(c.roleCode, '"CLUB_VICE_SECRETARY"') THEN 4
|
||||||
@@ -186,7 +186,7 @@ public class ClubStatisticsController {
|
|||||||
$condition
|
$condition
|
||||||
ORDER BY
|
ORDER BY
|
||||||
CASE
|
CASE
|
||||||
WHEN JSON_CONTAINS(c.roleCode, '"CLUB_PRESIDENT"') THEN 1
|
WHEN JSON_CONTAINS(c.roleCode, '"CLUB_MANAGER"') THEN 1
|
||||||
WHEN JSON_CONTAINS(c.roleCode, '"CLUB_VICE_PRESIDENT"') THEN 2
|
WHEN JSON_CONTAINS(c.roleCode, '"CLUB_VICE_PRESIDENT"') THEN 2
|
||||||
WHEN JSON_CONTAINS(c.roleCode, '"CLUB_SECRETARY"') THEN 3
|
WHEN JSON_CONTAINS(c.roleCode, '"CLUB_SECRETARY"') THEN 3
|
||||||
WHEN JSON_CONTAINS(c.roleCode, '"CLUB_VICE_SECRETARY"') THEN 4
|
WHEN JSON_CONTAINS(c.roleCode, '"CLUB_VICE_SECRETARY"') THEN 4
|
||||||
@@ -196,7 +196,7 @@ public class ClubStatisticsController {
|
|||||||
""");
|
""");
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name())) {
|
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name())) {
|
||||||
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_PRESIDENT);
|
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_MANAGER);
|
||||||
List<Sys_user_role> userRoles = sysClubService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
List<Sys_user_role> userRoles = sysClubService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
||||||
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
||||||
cnd.and("c.clubId", "in", myClubId);
|
cnd.and("c.clubId", "in", myClubId);
|
||||||
@@ -268,9 +268,9 @@ public class ClubStatisticsController {
|
|||||||
List<NutMap> list = sysClubService.listMap(sql);
|
List<NutMap> list = sysClubService.listMap(sql);
|
||||||
|
|
||||||
List<ExcelExportEntity> exportEntities = new ArrayList<>();
|
List<ExcelExportEntity> exportEntities = new ArrayList<>();
|
||||||
exportEntities.add(new ExcelExportEntity("社团名称", "clubName", 20));
|
exportEntities.add(new ExcelExportEntity("俱乐部名称", "clubName", 20));
|
||||||
exportEntities.add(new ExcelExportEntity("编码", "clubCode", 20));
|
exportEntities.add(new ExcelExportEntity("编码", "clubCode", 20));
|
||||||
exportEntities.add(new ExcelExportEntity("社团总人数", "total", 20));
|
exportEntities.add(new ExcelExportEntity("俱乐部总人数", "total", 20));
|
||||||
exportEntities.add(new ExcelExportEntity("在职人数", "work", 20));
|
exportEntities.add(new ExcelExportEntity("在职人数", "work", 20));
|
||||||
exportEntities.add(new ExcelExportEntity("退休人数", "retire", 20));
|
exportEntities.add(new ExcelExportEntity("退休人数", "retire", 20));
|
||||||
exportEntities.add(new ExcelExportEntity("男", "man", 20));
|
exportEntities.add(new ExcelExportEntity("男", "man", 20));
|
||||||
@@ -279,7 +279,7 @@ public class ClubStatisticsController {
|
|||||||
ExportParams exportParams = new ExportParams();
|
ExportParams exportParams = new ExportParams();
|
||||||
exportParams.setType(ExcelType.XSSF);
|
exportParams.setType(ExcelType.XSSF);
|
||||||
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list);
|
Workbook workbook = ExcelExportUtil.exportExcel(exportParams, exportEntities, list);
|
||||||
CommonDownloadUtil.download("协会统计表.xlsx", workbook, response);
|
CommonDownloadUtil.download("俱乐部统计表.xlsx", workbook, response);
|
||||||
}
|
}
|
||||||
|
|
||||||
@At
|
@At
|
||||||
@@ -371,7 +371,7 @@ public class ClubStatisticsController {
|
|||||||
sum( CASE WHEN su.userState in ('退休') $myCondition THEN 1 ELSE 0 END ) AS retire,
|
sum( CASE WHEN su.userState in ('退休') $myCondition THEN 1 ELSE 0 END ) AS retire,
|
||||||
sum( CASE WHEN su.sex like '%男%' $myCondition THEN 1 ELSE 0 END ) AS man,
|
sum( CASE WHEN su.sex like '%男%' $myCondition THEN 1 ELSE 0 END ) AS man,
|
||||||
sum( CASE WHEN su.sex like '%女%' $myCondition THEN 1 ELSE 0 END ) AS woman,
|
sum( CASE WHEN su.sex like '%女%' $myCondition THEN 1 ELSE 0 END ) AS woman,
|
||||||
sum( CASE WHEN ('CLUB_PRESIDENT' MEMBER OF (cu.roleCode) or 'CLUB_VICE_PRESIDENT' MEMBER OF (cu.roleCode) or 'CLUB_SECRETARY' MEMBER OF (cu.roleCode) or 'CLUB_VICE_SECRETARY' MEMBER OF (cu.roleCode)) AND 1 = 1 $myCondition THEN 1 ELSE 0 END ) AS governing_body
|
sum( CASE WHEN ('CLUB_MANAGER' MEMBER OF (cu.roleCode) or 'CLUB_VICE_PRESIDENT' MEMBER OF (cu.roleCode) or 'CLUB_SECRETARY' MEMBER OF (cu.roleCode) or 'CLUB_VICE_SECRETARY' MEMBER OF (cu.roleCode)) AND 1 = 1 $myCondition THEN 1 ELSE 0 END ) AS governing_body
|
||||||
FROM
|
FROM
|
||||||
sys_club club
|
sys_club club
|
||||||
LEFT JOIN club_user cu ON cu.clubId = club.id
|
LEFT JOIN club_user cu ON cu.clubId = club.id
|
||||||
@@ -389,7 +389,7 @@ public class ClubStatisticsController {
|
|||||||
cnd.and("club.id", auditState ? "in" : "not in", businessNoList);
|
cnd.and("club.id", auditState ? "in" : "not in", businessNoList);
|
||||||
}
|
}
|
||||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name())) {
|
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name())) {
|
||||||
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_PRESIDENT);
|
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_MANAGER);
|
||||||
List<Sys_user_role> userRoles = sysClubService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
List<Sys_user_role> userRoles = sysClubService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
||||||
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
||||||
cnd.and("club.id", "in", myClubId);
|
cnd.and("club.id", "in", myClubId);
|
||||||
|
|||||||
@@ -34,19 +34,19 @@ public class SysClub extends BaseModel {
|
|||||||
@Column
|
@Column
|
||||||
@Comment("协会名称")
|
@Comment("协会名称")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||||
@NotEmpty(message = "协会名称不能为空")
|
@NotEmpty(message = "俱乐部名称不能为空")
|
||||||
private String clubName;
|
private String clubName;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@Comment("协会编码")
|
@Comment("协会编码")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 100)
|
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||||
@NotEmpty(message = "协会编码不能为空")
|
@NotEmpty(message = "俱乐部编码不能为空")
|
||||||
private String clubCode;
|
private String clubCode;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
@Comment("协会类型")
|
@Comment("协会类型")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 30)
|
@ColDefine(type = ColType.VARCHAR, width = 30)
|
||||||
@NotEmpty(message = "协会类型不能为空")
|
@NotEmpty(message = "俱乐部类型不能为空")
|
||||||
private String clubType;
|
private String clubType;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ public class SysClubEvaluate extends BaseModel {
|
|||||||
@Column
|
@Column
|
||||||
@Comment("协会id")
|
@Comment("协会id")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
@NotEmpty(message = "协会id不能为空")
|
@NotEmpty(message = "俱乐部id不能为空")
|
||||||
private String clubId;
|
private String clubId;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ public class SysClubSponsor extends BaseModel {
|
|||||||
@Column
|
@Column
|
||||||
@Comment("协会id")
|
@Comment("协会id")
|
||||||
@ColDefine(type = ColType.VARCHAR, width = 32)
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
@NotEmpty(message = "协会不能为空")
|
@NotEmpty(message = "俱乐部不能为空")
|
||||||
private String clubId;
|
private String clubId;
|
||||||
|
|
||||||
@Column
|
@Column
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ public class SysClubExamineServiceImpl extends BaseServiceImpl<SysClubExamineReg
|
|||||||
AND NOT JSON_CONTAINS(cl.roleCode, '"CLUB_MEMBER"')
|
AND NOT JSON_CONTAINS(cl.roleCode, '"CLUB_MEMBER"')
|
||||||
ORDER BY
|
ORDER BY
|
||||||
CASE
|
CASE
|
||||||
WHEN JSON_CONTAINS(cl.roleCode, '"CLUB_PRESIDENT"') THEN 1
|
WHEN JSON_CONTAINS(cl.roleCode, '"CLUB_MANAGER"') THEN 1
|
||||||
WHEN JSON_CONTAINS(cl.roleCode, '"CLUB_VICE_PRESIDENT"') THEN 2
|
WHEN JSON_CONTAINS(cl.roleCode, '"CLUB_VICE_PRESIDENT"') THEN 2
|
||||||
WHEN JSON_CONTAINS(cl.roleCode, '"CLUB_SECRETARY"') THEN 3
|
WHEN JSON_CONTAINS(cl.roleCode, '"CLUB_SECRETARY"') THEN 3
|
||||||
WHEN JSON_CONTAINS(cl.roleCode, '"CLUB_VICE_SECRETARY"') THEN 4
|
WHEN JSON_CONTAINS(cl.roleCode, '"CLUB_VICE_SECRETARY"') THEN 4
|
||||||
|
|||||||
+6
-6
@@ -86,7 +86,7 @@ public class SysClubInfoManageServiceImpl extends BaseServiceImpl<ClubCommonPage
|
|||||||
GROUP_CONCAT(secretaryUser.username) AS clubSecretary
|
GROUP_CONCAT(secretaryUser.username) AS clubSecretary
|
||||||
FROM
|
FROM
|
||||||
sys_club c
|
sys_club c
|
||||||
LEFT JOIN club_user presidentCu on presidentCu.clubId = c.id AND JSON_CONTAINS(presidentCu.roleCode, '"CLUB_PRESIDENT"')
|
LEFT JOIN club_user presidentCu on presidentCu.clubId = c.id AND JSON_CONTAINS(presidentCu.roleCode, '"CLUB_MANAGER"')
|
||||||
LEFT JOIN sys_user presidentUser on presidentUser.id = presidentCu.userId
|
LEFT JOIN sys_user presidentUser on presidentUser.id = presidentCu.userId
|
||||||
LEFT JOIN club_user secretaryCu on secretaryCu.clubId = c.id AND JSON_CONTAINS(secretaryCu.roleCode, '"CLUB_SECRETARY"')
|
LEFT JOIN club_user secretaryCu on secretaryCu.clubId = c.id AND JSON_CONTAINS(secretaryCu.roleCode, '"CLUB_SECRETARY"')
|
||||||
LEFT JOIN sys_user secretaryUser on secretaryUser.id = secretaryCu.userId
|
LEFT JOIN sys_user secretaryUser on secretaryUser.id = secretaryCu.userId
|
||||||
@@ -115,7 +115,7 @@ public class SysClubInfoManageServiceImpl extends BaseServiceImpl<ClubCommonPage
|
|||||||
cnd.and("ins.state", "=", ProcessInstanceStateEnum.FINISHED.getCode());
|
cnd.and("ins.state", "=", ProcessInstanceStateEnum.FINISHED.getCode());
|
||||||
// 校工会主席在协会管理界面按校级管理角色查看全部协会。
|
// 校工会主席在协会管理界面按校级管理角色查看全部协会。
|
||||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name(), RoleConstant.SCHOOL_UNION_CHAIRMAN.name())) {
|
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name(), RoleConstant.SCHOOL_UNION_CHAIRMAN.name())) {
|
||||||
List<String> roleList = commonService.findUserRoleByRoleCode(List.of(RoleConstant.CLUB_PRESIDENT.name(), RoleConstant.CLUB_VICE_PRESIDENT.name(), RoleConstant.CLUB_SECRETARY.name(), RoleConstant.CLUB_VICE_SECRETARY.name(), RoleConstant.CLUB_OPERATOR.name()));
|
List<String> roleList = commonService.findUserRoleByRoleCode(List.of(RoleConstant.CLUB_MANAGER.name(), RoleConstant.CLUB_VICE_PRESIDENT.name(), RoleConstant.CLUB_SECRETARY.name(), RoleConstant.CLUB_VICE_SECRETARY.name(), RoleConstant.CLUB_OPERATOR.name()));
|
||||||
List<Sys_user_role> clubList = dao().query(Sys_user_role.class, Cnd.where("roleId", "in", roleList).and("userId", "=", SecurityUtil.getUserId()).and("clubId", "is not", null));
|
List<Sys_user_role> clubList = dao().query(Sys_user_role.class, Cnd.where("roleId", "in", roleList).and("userId", "=", SecurityUtil.getUserId()).and("clubId", "is not", null));
|
||||||
List<String> clubIdList = clubList.stream().map(Sys_user_role::getClubId).toList();
|
List<String> clubIdList = clubList.stream().map(Sys_user_role::getClubId).toList();
|
||||||
|
|
||||||
@@ -167,7 +167,7 @@ public class SysClubInfoManageServiceImpl extends BaseServiceImpl<ClubCommonPage
|
|||||||
sql.setVar("order", """
|
sql.setVar("order", """
|
||||||
ORDER BY
|
ORDER BY
|
||||||
CASE
|
CASE
|
||||||
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_PRESIDENT"') THEN 1
|
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_MANAGER"') THEN 1
|
||||||
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_VICE_PRESIDENT"') THEN 2
|
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_VICE_PRESIDENT"') THEN 2
|
||||||
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_SECRETARY"') THEN 3
|
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_SECRETARY"') THEN 3
|
||||||
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_VICE_SECRETARY"') THEN 4
|
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_VICE_SECRETARY"') THEN 4
|
||||||
@@ -261,7 +261,7 @@ public class SysClubInfoManageServiceImpl extends BaseServiceImpl<ClubCommonPage
|
|||||||
FROM
|
FROM
|
||||||
sys_club c
|
sys_club c
|
||||||
LEFT JOIN club_user scu ON scu.clubId = c.id
|
LEFT JOIN club_user scu ON scu.clubId = c.id
|
||||||
AND JSON_CONTAINS(scu.roleCode, '"CLUB_PRESIDENT"')
|
AND JSON_CONTAINS(scu.roleCode, '"CLUB_MANAGER"')
|
||||||
LEFT JOIN vw_user u ON u.id = scu.userId
|
LEFT JOIN vw_user u ON u.id = scu.userId
|
||||||
WHERE
|
WHERE
|
||||||
c.id = @clubId
|
c.id = @clubId
|
||||||
@@ -288,7 +288,7 @@ public class SysClubInfoManageServiceImpl extends BaseServiceImpl<ClubCommonPage
|
|||||||
WHERE scu.clubId = @clubId
|
WHERE scu.clubId = @clubId
|
||||||
ORDER BY
|
ORDER BY
|
||||||
CASE
|
CASE
|
||||||
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_PRESIDENT"') THEN 1
|
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_MANAGER"') THEN 1
|
||||||
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_VICE_PRESIDENT"') THEN 2
|
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_VICE_PRESIDENT"') THEN 2
|
||||||
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_SECRETARY"') THEN 3
|
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_SECRETARY"') THEN 3
|
||||||
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_VICE_SECRETARY"') THEN 4
|
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_VICE_SECRETARY"') THEN 4
|
||||||
@@ -317,7 +317,7 @@ public class SysClubInfoManageServiceImpl extends BaseServiceImpl<ClubCommonPage
|
|||||||
|
|
||||||
try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
|
try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
|
||||||
XWPFTemplate.compile(sysOfficeTemplateUtil.getTemplate("clubRegis"), config).render(docData).writeAndClose(byteArrayOutputStream);
|
XWPFTemplate.compile(sysOfficeTemplateUtil.getTemplate("clubRegis"), config).render(docData).writeAndClose(byteArrayOutputStream);
|
||||||
CommonDownloadUtil.download("教职工文体协会登记表(" + clubInfo.getString("clubName") + ").docx", byteArrayOutputStream.toByteArray(), response);
|
CommonDownloadUtil.download("教职工文体俱乐部登记表(" + clubInfo.getString("clubName") + ").docx", byteArrayOutputStream.toByteArray(), response);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
log.error("协会登记表导出失败,id:{},错误信息:{}", clubId, e.getMessage());
|
log.error("协会登记表导出失败,id:{},错误信息:{}", clubId, e.getMessage());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ public class SysClubServiceImpl extends BaseServiceImpl<SysClub> implements SysC
|
|||||||
SELECT
|
SELECT
|
||||||
club.*,
|
club.*,
|
||||||
u.username as concatPersonName,
|
u.username as concatPersonName,
|
||||||
(select GROUP_CONCAT(username) from sys_user where id in (select userId from club_user u where u.clubId=club.id and JSON_CONTAINS(u.roleCode, '"CLUB_PRESIDENT"'))) as clubLeader,
|
(select GROUP_CONCAT(username) from sys_user where id in (select userId from club_user u where u.clubId=club.id and JSON_CONTAINS(u.roleCode, '"CLUB_MANAGER"'))) as clubLeader,
|
||||||
(select GROUP_CONCAT(username) from sys_user where id in (select userId from club_user u where u.clubId=club.id and JSON_CONTAINS(u.roleCode, '"CLUB_SECRETARY"'))) as clubSecretary,
|
(select GROUP_CONCAT(username) from sys_user where id in (select userId from club_user u where u.clubId=club.id and JSON_CONTAINS(u.roleCode, '"CLUB_SECRETARY"'))) as clubSecretary,
|
||||||
(SELECT count( DISTINCT scu.userId ) FROM club_user scu WHERE scu.clubId = club.id ) currentPeopleNum
|
(SELECT count( DISTINCT scu.userId ) FROM club_user scu WHERE scu.clubId = club.id ) currentPeopleNum
|
||||||
FROM
|
FROM
|
||||||
@@ -116,7 +116,7 @@ public class SysClubServiceImpl extends BaseServiceImpl<SysClub> implements SysC
|
|||||||
|
|
||||||
// 校工会主席在协会管理界面按校级管理角色查看全部协会。
|
// 校工会主席在协会管理界面按校级管理角色查看全部协会。
|
||||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name(), RoleConstant.SCHOOL_UNION_CHAIRMAN.name())) {
|
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name(), RoleConstant.SCHOOL_UNION_CHAIRMAN.name())) {
|
||||||
List<String> roleList = commonService.findUserRoleByRoleCode(List.of(RoleConstant.CLUB_PRESIDENT.name(), RoleConstant.CLUB_VICE_PRESIDENT.name(), RoleConstant.CLUB_SECRETARY.name(), RoleConstant.CLUB_VICE_SECRETARY.name(),RoleConstant.CLUB_OPERATOR.name()));
|
List<String> roleList = commonService.findUserRoleByRoleCode(List.of(RoleConstant.CLUB_MANAGER.name(), RoleConstant.CLUB_VICE_PRESIDENT.name(), RoleConstant.CLUB_SECRETARY.name(), RoleConstant.CLUB_VICE_SECRETARY.name(),RoleConstant.CLUB_OPERATOR.name()));
|
||||||
List<Sys_user_role> clubList = dao().query(Sys_user_role.class, Cnd.where("roleId", "in", roleList).and("userId", "=", SecurityUtil.getUserId()).and("clubId", "is not", null));
|
List<Sys_user_role> clubList = dao().query(Sys_user_role.class, Cnd.where("roleId", "in", roleList).and("userId", "=", SecurityUtil.getUserId()).and("clubId", "is not", null));
|
||||||
List<String> clubIdList = clubList.stream().map(Sys_user_role::getClubId).toList();
|
List<String> clubIdList = clubList.stream().map(Sys_user_role::getClubId).toList();
|
||||||
|
|
||||||
@@ -150,7 +150,7 @@ public class SysClubServiceImpl extends BaseServiceImpl<SysClub> implements SysC
|
|||||||
cnd.and("instance.state", "=", ProcessInstanceStateEnum.FINISHED.getCode());
|
cnd.and("instance.state", "=", ProcessInstanceStateEnum.FINISHED.getCode());
|
||||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name())) {
|
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name(), RoleConstant.SCHOOL_UNION_CLUB_ADMIN.name())) {
|
||||||
cnd.and("ur.userId", "=", SecurityUtil.getUserId());
|
cnd.and("ur.userId", "=", SecurityUtil.getUserId());
|
||||||
List<String> roleList = commonService.findUserRoleByRoleCode(List.of(RoleConstant.CLUB_PRESIDENT.name(), RoleConstant.CLUB_VICE_PRESIDENT.name(), RoleConstant.CLUB_SECRETARY.name(), RoleConstant.CLUB_VICE_SECRETARY.name(), RoleConstant.CLUB_OPERATOR.name()));
|
List<String> roleList = commonService.findUserRoleByRoleCode(List.of(RoleConstant.CLUB_MANAGER.name(), RoleConstant.CLUB_VICE_PRESIDENT.name(), RoleConstant.CLUB_SECRETARY.name(), RoleConstant.CLUB_VICE_SECRETARY.name(), RoleConstant.CLUB_OPERATOR.name()));
|
||||||
cnd.and("ur.roleId", "in", roleList);
|
cnd.and("ur.roleId", "in", roleList);
|
||||||
}
|
}
|
||||||
cnd.and("ex.year", "=", year);
|
cnd.and("ex.year", "=", year);
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ public class SysClubUserServiceImpl extends BaseServiceImpl<ClubUser> implements
|
|||||||
WHERE scu.clubId = @clubId
|
WHERE scu.clubId = @clubId
|
||||||
ORDER BY
|
ORDER BY
|
||||||
CASE
|
CASE
|
||||||
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_PRESIDENT"') THEN 1
|
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_MANAGER"') THEN 1
|
||||||
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_VICE_PRESIDENT"') THEN 2
|
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_VICE_PRESIDENT"') THEN 2
|
||||||
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_SECRETARY"') THEN 3
|
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_SECRETARY"') THEN 3
|
||||||
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_VICE_SECRETARY"') THEN 4
|
WHEN JSON_CONTAINS(scu.roleCode, '"CLUB_VICE_SECRETARY"') THEN 4
|
||||||
@@ -128,7 +128,7 @@ public class SysClubUserServiceImpl extends BaseServiceImpl<ClubUser> implements
|
|||||||
@Override
|
@Override
|
||||||
public String getClubLeader(String clubId) {
|
public String getClubLeader(String clubId) {
|
||||||
|
|
||||||
List<Sys_user> userList = commonService.findUserInfoByRoleCode("clubId", clubId, RoleConstant.CLUB_PRESIDENT.name());
|
List<Sys_user> userList = commonService.findUserInfoByRoleCode("clubId", clubId, RoleConstant.CLUB_MANAGER.name());
|
||||||
return userList.stream().map(Sys_user::getLoginname).collect(Collectors.joining(","));
|
return userList.stream().map(Sys_user::getLoginname).collect(Collectors.joining(","));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -93,7 +93,7 @@ public class ArticleAnalysisController {
|
|||||||
// 获取参与协会数量
|
// 获取参与协会数量
|
||||||
long clubCount = articleService.count(Sqls.create("SELECT COUNT(distinct clubId) FROM article WHERE clubId IS NOT NULL"));
|
long clubCount = articleService.count(Sqls.create("SELECT COUNT(distinct clubId) FROM article WHERE clubId IS NOT NULL"));
|
||||||
list.add(ArticleAnalysisOverviewVO.builder()
|
list.add(ArticleAnalysisOverviewVO.builder()
|
||||||
.label("参与协会")
|
.label("参与俱乐部")
|
||||||
.value(clubCount)
|
.value(clubCount)
|
||||||
.icon("el-icon-office-building")
|
.icon("el-icon-office-building")
|
||||||
.bgColor("rgba(230, 162, 60, 0.1)")
|
.bgColor("rgba(230, 162, 60, 0.1)")
|
||||||
|
|||||||
+2
-2
@@ -138,9 +138,9 @@ public class ArticleFirstExamineController {
|
|||||||
}
|
}
|
||||||
assignments.add(branchUnionApprovalLoginName);
|
assignments.add(branchUnionApprovalLoginName);
|
||||||
} else if (result.equals("BACK_TO_CLUB")) {
|
} else if (result.equals("BACK_TO_CLUB")) {
|
||||||
String branchClubApprovalLoginName = commonService.findUserLoginNameByRoleCode(RoleConstant.CLUB_PRESIDENT, Cnd.where(Sys_user_role::getClubId, "=", article.getClubId()));
|
String branchClubApprovalLoginName = commonService.findUserLoginNameByRoleCode(RoleConstant.CLUB_MANAGER, Cnd.where(Sys_user_role::getClubId, "=", article.getClubId()));
|
||||||
if (StrUtil.isBlank(branchClubApprovalLoginName)) {
|
if (StrUtil.isBlank(branchClubApprovalLoginName)) {
|
||||||
return Result.error("协会未配置审批人,请联系协会!");
|
return Result.error("俱乐部未配置审批人,请联系俱乐部!");
|
||||||
}
|
}
|
||||||
assignments.add(branchClubApprovalLoginName);
|
assignments.add(branchClubApprovalLoginName);
|
||||||
} else if (result.equals("PASS")) {
|
} else if (result.equals("PASS")) {
|
||||||
|
|||||||
@@ -133,7 +133,7 @@ public class UnionCareDataCon {
|
|||||||
double totalBudgetMoney3 = mapList3.stream().mapToDouble(map -> map.getDouble("totalBudgetMoney")).sum();
|
double totalBudgetMoney3 = mapList3.stream().mapToDouble(map -> map.getDouble("totalBudgetMoney")).sum();
|
||||||
list.add(new HashMap<String, Object>() {{
|
list.add(new HashMap<String, Object>() {{
|
||||||
put("year", year);
|
put("year", year);
|
||||||
put("type", "协会经费");
|
put("type", "俱乐部经费");
|
||||||
put("value", totalBudgetMoney3);
|
put("value", totalBudgetMoney3);
|
||||||
}});
|
}});
|
||||||
|
|
||||||
|
|||||||
+19
-1
@@ -17,6 +17,7 @@ import org.nutz.lang.Strings;
|
|||||||
import org.nutz.lang.util.NutMap;
|
import org.nutz.lang.util.NutMap;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -31,7 +32,14 @@ public class HealthCheckupSingleServiceImpl extends BaseServiceImpl<HealthChecku
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NutMap pageData(String projectId, String unionId) {
|
public NutMap pageData(String projectId, String unionId) {
|
||||||
|
// 未选择体检项目时返回稳定的空表格结构,避免继续查询并解引用空项目。
|
||||||
|
if (Strings.isBlank(projectId)) {
|
||||||
|
return emptyPageData();
|
||||||
|
}
|
||||||
HealthCheckupProject project = healthCheckupProjectService.findOne(projectId);
|
HealthCheckupProject project = healthCheckupProjectService.findOne(projectId);
|
||||||
|
if (project == null) {
|
||||||
|
return emptyPageData();
|
||||||
|
}
|
||||||
Sql sql = Sqls.create("""
|
Sql sql = Sqls.create("""
|
||||||
SELECT
|
SELECT
|
||||||
su.id,
|
su.id,
|
||||||
@@ -48,7 +56,9 @@ public class HealthCheckupSingleServiceImpl extends BaseServiceImpl<HealthChecku
|
|||||||
//分工会参加体检人数汇总
|
//分工会参加体检人数汇总
|
||||||
List<NutMap> healthCheckupList = listMap(sql);
|
List<NutMap> healthCheckupList = listMap(sql);
|
||||||
//该体检项目下的套餐
|
//该体检项目下的套餐
|
||||||
List<HealthCheckupProjectSubject> subjectList = project.getHealthCheckupProjectSubjects();
|
List<HealthCheckupProjectSubject> subjectList = project.getHealthCheckupProjectSubjects() == null
|
||||||
|
? Collections.emptyList()
|
||||||
|
: project.getHealthCheckupProjectSubjects();
|
||||||
|
|
||||||
//体检人员详情
|
//体检人员详情
|
||||||
List<NutMap> userSelectList = this.getUserSelectionByProjectId(projectId);
|
List<NutMap> userSelectList = this.getUserSelectionByProjectId(projectId);
|
||||||
@@ -94,6 +104,14 @@ public class HealthCheckupSingleServiceImpl extends BaseServiceImpl<HealthChecku
|
|||||||
return NutMap.NEW().addv("tableList", healthCheckupList).addv("tableColumn", labelList);
|
return NutMap.NEW().addv("tableList", healthCheckupList).addv("tableColumn", labelList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private NutMap emptyPageData() {
|
||||||
|
List<NutMap> labelList = new ArrayList<>();
|
||||||
|
labelList.add(NutMap.NEW().addv("label", "本次体检人数").addv("prop", "sumCount"));
|
||||||
|
labelList.add(NutMap.NEW().addv("label", "参加人数").addv("prop", "totalCount"));
|
||||||
|
labelList.add(NutMap.NEW().addv("label", "未选人数").addv("prop", "unselectedTeacherSum"));
|
||||||
|
return NutMap.NEW().addv("tableList", Collections.emptyList()).addv("tableColumn", labelList);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 体检参加人员
|
* 体检参加人员
|
||||||
*
|
*
|
||||||
|
|||||||
+1
-1
@@ -157,7 +157,7 @@ public class ActivityBudgetApplyController {
|
|||||||
public Result listClub(){
|
public Result listClub(){
|
||||||
Cnd cnd = Cnd.NEW();
|
Cnd cnd = Cnd.NEW();
|
||||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||||
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_PRESIDENT);
|
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_MANAGER);
|
||||||
List<Sys_user_role> userRoles = sysClubService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
List<Sys_user_role> userRoles = sysClubService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
||||||
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
||||||
cnd.and("id", "in", myClubId);
|
cnd.and("id", "in", myClubId);
|
||||||
|
|||||||
+1
-1
@@ -79,7 +79,7 @@ public class ActivityBudgetQueryStatisticsController {
|
|||||||
entities.add(new ExcelExportEntity("分工会", "unionName", 20));
|
entities.add(new ExcelExportEntity("分工会", "unionName", 20));
|
||||||
}else if (outlayManageSource.equals("ACTIVITY_BUDGET_TYPE_THREE")) {
|
}else if (outlayManageSource.equals("ACTIVITY_BUDGET_TYPE_THREE")) {
|
||||||
entities.add(new ExcelExportEntity("编码", "clubCode", 20));
|
entities.add(new ExcelExportEntity("编码", "clubCode", 20));
|
||||||
entities.add(new ExcelExportEntity("协会名称", "clubName", 20));
|
entities.add(new ExcelExportEntity("俱乐部名称", "clubName", 20));
|
||||||
}
|
}
|
||||||
ExcelExportEntity draftCodeEntity = new ExcelExportEntity("预算金额", "totalBudgetMoney", 20);
|
ExcelExportEntity draftCodeEntity = new ExcelExportEntity("预算金额", "totalBudgetMoney", 20);
|
||||||
draftCodeEntity.setType(10);
|
draftCodeEntity.setType(10);
|
||||||
|
|||||||
+1
-1
@@ -99,7 +99,7 @@ public class ActivityBudgetServiceImpl extends BaseServiceImpl<ActivityBudget> i
|
|||||||
group1.and("info.unionId", "=", SecurityUtil.getUnionId());
|
group1.and("info.unionId", "=", SecurityUtil.getUnionId());
|
||||||
group.or(group1);
|
group.or(group1);
|
||||||
}
|
}
|
||||||
if (AuthUtil.hasRoleOr(RoleConstant.CLUB_PRESIDENT.name(), RoleConstant.CLUB_SECRETARY.name())) {
|
if (AuthUtil.hasRoleOr(RoleConstant.CLUB_MANAGER.name(), RoleConstant.CLUB_SECRETARY.name())) {
|
||||||
List<SysClub> myManageClub = sysClubService.getMyManageClub();
|
List<SysClub> myManageClub = sysClubService.getMyManageClub();
|
||||||
List<String> clubIds = myManageClub.stream().map(SysClub::getId).toList();
|
List<String> clubIds = myManageClub.stream().map(SysClub::getId).toList();
|
||||||
SqlExpressionGroup group1 = new SqlExpressionGroup();
|
SqlExpressionGroup group1 = new SqlExpressionGroup();
|
||||||
|
|||||||
+1
-1
@@ -47,7 +47,7 @@ public class ActivityBudgetTemp extends ExcelImportError {
|
|||||||
@ExcelProperty("审核意见")
|
@ExcelProperty("审核意见")
|
||||||
private String auditOpinion;
|
private String auditOpinion;
|
||||||
|
|
||||||
@ExcelProperty("申报单位(仅社团申报时可在下拉菜单中选择,其他类型不用填写)")
|
@ExcelProperty("申报单位(仅俱乐部申报时可在下拉菜单中选择,其他类型不用填写)")
|
||||||
private String helpUnitName;
|
private String helpUnitName;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -66,7 +66,7 @@ public class OutlayManageClubController {
|
|||||||
""");
|
""");
|
||||||
cnd.andEX("year", "=", year);
|
cnd.andEX("year", "=", year);
|
||||||
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
if (!AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||||
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_PRESIDENT);
|
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_MANAGER);
|
||||||
List<Sys_user_role> userRoles = baseService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
List<Sys_user_role> userRoles = baseService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
||||||
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
||||||
cnd.andEX("clubId", "in", myClubId);
|
cnd.andEX("clubId", "in", myClubId);
|
||||||
|
|||||||
+1
-1
@@ -74,7 +74,7 @@ public class OutlayManageClubUseDetailController {
|
|||||||
if (AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
if (AuthUtil.hasRoleOr(RoleConstant.SYSADMIN.name(), RoleConstant.SCHOOL_UNION_ADMIN.name())) {
|
||||||
cnd.andEX("clubId", "=", clubId);
|
cnd.andEX("clubId", "=", clubId);
|
||||||
} else {
|
} else {
|
||||||
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_PRESIDENT);
|
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_MANAGER);
|
||||||
List<Sys_user_role> userRoles = baseService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
List<Sys_user_role> userRoles = baseService.dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
||||||
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
||||||
cnd.andEX("clubId", "in", myClubId);
|
cnd.andEX("clubId", "in", myClubId);
|
||||||
|
|||||||
+1
-1
@@ -123,7 +123,7 @@ public class OutlayReimburseApplyServiceImpl extends BaseServiceImpl<OutlayReimb
|
|||||||
.and("unionId", "=", StrUtil.isNotBlank(unionId) ? unionId : SecurityUtil.getUnionId()));
|
.and("unionId", "=", StrUtil.isNotBlank(unionId) ? unionId : SecurityUtil.getUnionId()));
|
||||||
map.put("budgetMoney", ObjectUtil.isNotEmpty(union) ? union.getTotalQuota().subtract(union.getUsedQuota()) : 0);
|
map.put("budgetMoney", ObjectUtil.isNotEmpty(union) ? union.getTotalQuota().subtract(union.getUsedQuota()) : 0);
|
||||||
} else if (outlayManageSource.equals("ACTIVITY_BUDGET_TYPE_THREE")) {
|
} else if (outlayManageSource.equals("ACTIVITY_BUDGET_TYPE_THREE")) {
|
||||||
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_PRESIDENT);
|
Sys_role sysRole = sysRoleService.getByCode(RoleConstant.CLUB_MANAGER);
|
||||||
List<Sys_user_role> userRoles = dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
List<Sys_user_role> userRoles = dao().query(Sys_user_role.class, Cnd.where("userId", "=", SecurityUtil.getUserId()).and("roleId", "=", sysRole.getId()));
|
||||||
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
List<String> myClubId = userRoles.stream().map(Sys_user_role::getClubId).toList();
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -137,7 +137,7 @@ public class SiteCugApplyServiceImpl extends BaseServiceImpl<SiteCugApply> imple
|
|||||||
ins.id AS instanceId,
|
ins.id AS instanceId,
|
||||||
ins.processDefineId instanceProcessDefineId,
|
ins.processDefineId instanceProcessDefineId,
|
||||||
CASE WHEN info.backOption LIKE 'YEARLY_BATCH:%' THEN 1 ELSE 0 END AS yearlyBatch,
|
CASE WHEN info.backOption LIKE 'YEARLY_BATCH:%' THEN 1 ELSE 0 END AS yearlyBatch,
|
||||||
CASE WHEN info.reserveType = 'club' THEN '协会预约' ELSE '分工会预约' END AS reserveTypeName,
|
CASE WHEN info.reserveType = 'club' THEN '俱乐部预约' ELSE '分工会预约' END AS reserveTypeName,
|
||||||
CASE WHEN info.reserveType = 'club' THEN info.clubName ELSE info.applyUnionName END AS reserveTargetName,
|
CASE WHEN info.reserveType = 'club' THEN info.clubName ELSE info.applyUnionName END AS reserveTargetName,
|
||||||
DATE_FORMAT(info.createdAt, '%Y-%m-%d %H:%i:%s') AS applyTime
|
DATE_FORMAT(info.createdAt, '%Y-%m-%d %H:%i:%s') AS applyTime
|
||||||
FROM
|
FROM
|
||||||
@@ -298,7 +298,7 @@ public class SiteCugApplyServiceImpl extends BaseServiceImpl<SiteCugApply> imple
|
|||||||
}
|
}
|
||||||
if (StrUtil.equals(apply.getReserveType(), "club")) {
|
if (StrUtil.equals(apply.getReserveType(), "club")) {
|
||||||
if (StrUtil.isBlank(apply.getClubId())) {
|
if (StrUtil.isBlank(apply.getClubId())) {
|
||||||
return Map.of(false, "请选择协会");
|
return Map.of(false, "请选择俱乐部");
|
||||||
}
|
}
|
||||||
// 协会预约直接复用项目现成能力;getMyManageClub() 对 SYSADMIN 已放开,因此超级管理员也能代任意协会预约
|
// 协会预约直接复用项目现成能力;getMyManageClub() 对 SYSADMIN 已放开,因此超级管理员也能代任意协会预约
|
||||||
List<SysClub> myManageClub = sysClubService.getMyManageClub();
|
List<SysClub> myManageClub = sysClubService.getMyManageClub();
|
||||||
@@ -307,7 +307,7 @@ public class SiteCugApplyServiceImpl extends BaseServiceImpl<SiteCugApply> imple
|
|||||||
.findFirst()
|
.findFirst()
|
||||||
.orElse(null);
|
.orElse(null);
|
||||||
if (club == null) {
|
if (club == null) {
|
||||||
return Map.of(false, "所选协会不是您当前管理的协会");
|
return Map.of(false, "所选俱乐部不是您当前管理的俱乐部");
|
||||||
}
|
}
|
||||||
apply.setClubName(club.getClubName());
|
apply.setClubName(club.getClubName());
|
||||||
apply.setApplyUnionId("");
|
apply.setApplyUnionId("");
|
||||||
|
|||||||
+1
-1
@@ -224,7 +224,7 @@ public class UnionReimburseApplyController {
|
|||||||
public Result getClubBudget(@Param("clubId") String clubId) {
|
public Result getClubBudget(@Param("clubId") String clubId) {
|
||||||
// 检查clubId参数是否为空
|
// 检查clubId参数是否为空
|
||||||
if (StrUtil.isBlank(clubId)) {
|
if (StrUtil.isBlank(clubId)) {
|
||||||
return Result.error("社团ID不能为空");
|
return Result.error("俱乐部ID不能为空");
|
||||||
}
|
}
|
||||||
// 根据社团ID和年份查询特定社团的经费信息
|
// 根据社团ID和年份查询特定社团的经费信息
|
||||||
OutlayManageClub outlayManageClub = dao.fetch(OutlayManageClub.class,
|
OutlayManageClub outlayManageClub = dao.fetch(OutlayManageClub.class,
|
||||||
|
|||||||
+3
-4
@@ -8,7 +8,6 @@ import com.budwk.app.zhgh.democratic.proposal.models.ProposalConfig;
|
|||||||
import com.budwk.app.zhgh.democratic.proposal.models.ProposalType;
|
import com.budwk.app.zhgh.democratic.proposal.models.ProposalType;
|
||||||
import com.budwk.app.zhgh.democratic.proposal.models.ProposalUndertake;
|
import com.budwk.app.zhgh.democratic.proposal.models.ProposalUndertake;
|
||||||
import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService;
|
import com.budwk.app.zhgh.democratic.proposal.service.common.ProposalCommonService;
|
||||||
import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation;
|
|
||||||
import com.budwk.app.zhgh.democratic.teachercongress.prepare.models.Teacher_congress_session;
|
import com.budwk.app.zhgh.democratic.teachercongress.prepare.models.Teacher_congress_session;
|
||||||
import io.swagger.annotations.ApiOperation;
|
import io.swagger.annotations.ApiOperation;
|
||||||
import org.nutz.dao.Cnd;
|
import org.nutz.dao.Cnd;
|
||||||
@@ -17,6 +16,7 @@ import org.nutz.ioc.loader.annotation.Inject;
|
|||||||
import org.nutz.ioc.loader.annotation.IocBean;
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
import org.nutz.mvc.annotation.At;
|
import org.nutz.mvc.annotation.At;
|
||||||
import org.nutz.mvc.annotation.Ok;
|
import org.nutz.mvc.annotation.Ok;
|
||||||
|
import org.nutz.mvc.annotation.Param;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
import javax.validation.Valid;
|
import javax.validation.Valid;
|
||||||
@@ -77,9 +77,8 @@ public class ProposalCommonController {
|
|||||||
@At
|
@At
|
||||||
@SaCheckLogin
|
@SaCheckLogin
|
||||||
@ApiOperation("查询当前教代会的代表团")
|
@ApiOperation("查询当前教代会的代表团")
|
||||||
public Result listDelegation(@Valid String sessionId) {
|
public Result listDelegation(String sessionId, @Param("sessionIds") String[] sessionIds) {
|
||||||
List<Teacher_congress_delegation> list = dao.query(Teacher_congress_delegation.class, Cnd.where("sessionId", "=", sessionId).asc("code"));
|
return Result.success(proposalCommonService.listDelegation(sessionId, sessionIds));
|
||||||
return Result.success(list);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@At
|
@At
|
||||||
|
|||||||
+10
@@ -3,6 +3,7 @@ package com.budwk.app.zhgh.democratic.proposal.service.common;
|
|||||||
import com.budwk.app.base.service.BaseService;
|
import com.budwk.app.base.service.BaseService;
|
||||||
import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo;
|
import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo;
|
||||||
import com.budwk.app.zhgh.democratic.proposal.models.ProposalUndertake;
|
import com.budwk.app.zhgh.democratic.proposal.models.ProposalUndertake;
|
||||||
|
import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation;
|
||||||
import org.nutz.lang.util.NutMap;
|
import org.nutz.lang.util.NutMap;
|
||||||
|
|
||||||
import javax.servlet.http.HttpServletResponse;
|
import javax.servlet.http.HttpServletResponse;
|
||||||
@@ -11,6 +12,15 @@ import java.util.List;
|
|||||||
|
|
||||||
public interface ProposalCommonService extends BaseService<ProposalInfo> {
|
public interface ProposalCommonService extends BaseService<ProposalInfo> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询指定教代会届次下的代表团。
|
||||||
|
*
|
||||||
|
* @param sessionId 单个教代会届次 ID,供原有单届次页面使用
|
||||||
|
* @param sessionIds 多个教代会届次 ID,供综合查询的届次多选使用
|
||||||
|
* @return 代表团列表;两个参数均为空时返回空列表
|
||||||
|
*/
|
||||||
|
List<Teacher_congress_delegation> listDelegation(String sessionId, String[] sessionIds);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询提案信息
|
* 查询提案信息
|
||||||
*/
|
*/
|
||||||
|
|||||||
+14
@@ -30,6 +30,7 @@ import com.budwk.app.zhgh.democratic.proposal.models.ProposalInfo;
|
|||||||
import com.budwk.app.zhgh.democratic.proposal.models.ProposalMerge;
|
import com.budwk.app.zhgh.democratic.proposal.models.ProposalMerge;
|
||||||
import com.budwk.app.zhgh.democratic.proposal.models.ProposalUndertake;
|
import com.budwk.app.zhgh.democratic.proposal.models.ProposalUndertake;
|
||||||
import com.budwk.app.zhgh.democratic.proposal.param.ProposalQueryComprehensiveParam;
|
import com.budwk.app.zhgh.democratic.proposal.param.ProposalQueryComprehensiveParam;
|
||||||
|
import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation;
|
||||||
import com.budwk.app.zhgh.democratic.teachercongress.prepare.models.Teacher_congress_session;
|
import com.budwk.app.zhgh.democratic.teachercongress.prepare.models.Teacher_congress_session;
|
||||||
import com.deepoove.poi.XWPFTemplate;
|
import com.deepoove.poi.XWPFTemplate;
|
||||||
import com.deepoove.poi.config.Configure;
|
import com.deepoove.poi.config.Configure;
|
||||||
@@ -75,6 +76,19 @@ public class ProposalCommonServiceImpl extends BaseServiceImpl<ProposalInfo> imp
|
|||||||
super(dao);
|
super(dao);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<Teacher_congress_delegation> listDelegation(String sessionId, String[] sessionIds) {
|
||||||
|
Cnd cnd = Cnd.NEW();
|
||||||
|
if (Lang.isNotEmpty(sessionIds)) {
|
||||||
|
cnd.and(Teacher_congress_delegation::getSessionId, "in", sessionIds);
|
||||||
|
} else if (StrUtil.isNotBlank(sessionId)) {
|
||||||
|
cnd.and(Teacher_congress_delegation::getSessionId, "=", sessionId);
|
||||||
|
} else {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
return dao().query(Teacher_congress_delegation.class, cnd.asc(Teacher_congress_delegation::getCode));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public NutMap info(String id) {
|
public NutMap info(String id) {
|
||||||
if (StrUtil.isBlank(id)) {
|
if (StrUtil.isBlank(id)) {
|
||||||
|
|||||||
+6
-4
@@ -43,13 +43,14 @@ public class MedicalMutualAidSummaryController {
|
|||||||
* @param deptName 所在单位
|
* @param deptName 所在单位
|
||||||
* @param userName 姓名
|
* @param userName 姓名
|
||||||
* @param joinYear 加入年份
|
* @param joinYear 加入年份
|
||||||
|
* @param submitYear 申报年份,按申请提交时间所在年份过滤
|
||||||
* @return 汇总分页数据
|
* @return 汇总分页数据
|
||||||
*/
|
*/
|
||||||
@At("/summary/page")
|
@At("/summary/page")
|
||||||
@ApiOperation("查询医疗互助汇总")
|
@ApiOperation("查询医疗互助汇总")
|
||||||
@SaCheckPermission("medicalMutualAid.apply.summary")
|
@SaCheckPermission("medicalMutualAid.apply.summary")
|
||||||
public Result page(PageForm pageForm, String deptName, String userName, Integer joinYear) {
|
public Result page(PageForm pageForm, String deptName, String userName, Integer joinYear, Integer submitYear) {
|
||||||
return Result.success(medicalMutualAidApplyService.summaryPage(pageForm, deptName, userName, joinYear));
|
return Result.success(medicalMutualAidApplyService.summaryPage(pageForm, deptName, userName, joinYear, submitYear));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -58,14 +59,15 @@ public class MedicalMutualAidSummaryController {
|
|||||||
* @param deptName 所在单位
|
* @param deptName 所在单位
|
||||||
* @param userName 姓名
|
* @param userName 姓名
|
||||||
* @param joinYear 加入年份
|
* @param joinYear 加入年份
|
||||||
|
* @param submitYear 申报年份,按申请提交时间所在年份过滤
|
||||||
* @param response HTTP 响应
|
* @param response HTTP 响应
|
||||||
*/
|
*/
|
||||||
@At("/summary/exportExcel")
|
@At("/summary/exportExcel")
|
||||||
@Ok("void")
|
@Ok("void")
|
||||||
@ApiOperation("导出医疗互助汇总")
|
@ApiOperation("导出医疗互助汇总")
|
||||||
@SaCheckPermission("medicalMutualAid.apply.summary")
|
@SaCheckPermission("medicalMutualAid.apply.summary")
|
||||||
public void exportExcel(String deptName, String userName, Integer joinYear, HttpServletResponse response) {
|
public void exportExcel(String deptName, String userName, Integer joinYear, Integer submitYear, HttpServletResponse response) {
|
||||||
Workbook workbook = medicalMutualAidApplyService.exportSummary(deptName, userName, joinYear);
|
Workbook workbook = medicalMutualAidApplyService.exportSummary(deptName, userName, joinYear, submitYear);
|
||||||
CommonDownloadUtil.download("医疗互助汇总.xlsx", workbook, response);
|
CommonDownloadUtil.download("医疗互助汇总.xlsx", workbook, response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-2
@@ -114,9 +114,10 @@ public interface MedicalMutualAidApplyService extends BaseService<MutualApply> {
|
|||||||
* @param deptName 所在单位
|
* @param deptName 所在单位
|
||||||
* @param userName 姓名
|
* @param userName 姓名
|
||||||
* @param joinYear 加入年份
|
* @param joinYear 加入年份
|
||||||
|
* @param submitYear 申报年份,按提交时间所属年份过滤
|
||||||
* @return 汇总分页列表
|
* @return 汇总分页列表
|
||||||
*/
|
*/
|
||||||
Pagination<NutMap> summaryPage(PageForm pageForm, String deptName, String userName, Integer joinYear);
|
Pagination<NutMap> summaryPage(PageForm pageForm, String deptName, String userName, Integer joinYear, Integer submitYear);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出医疗互助汇总,导出字段与汇总页面展示列保持一致,动态补助区间按当前查询结果生成。
|
* 导出医疗互助汇总,导出字段与汇总页面展示列保持一致,动态补助区间按当前查询结果生成。
|
||||||
@@ -124,7 +125,8 @@ public interface MedicalMutualAidApplyService extends BaseService<MutualApply> {
|
|||||||
* @param deptName 所在单位
|
* @param deptName 所在单位
|
||||||
* @param userName 姓名
|
* @param userName 姓名
|
||||||
* @param joinYear 加入年份
|
* @param joinYear 加入年份
|
||||||
|
* @param submitYear 申报年份,按提交时间所属年份过滤
|
||||||
* @return Excel 工作簿
|
* @return Excel 工作簿
|
||||||
*/
|
*/
|
||||||
Workbook exportSummary(String deptName, String userName, Integer joinYear);
|
Workbook exportSummary(String deptName, String userName, Integer joinYear, Integer submitYear);
|
||||||
}
|
}
|
||||||
|
|||||||
+19
-5
@@ -51,6 +51,8 @@ import java.io.ByteArrayOutputStream;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
import java.time.LocalDate;
|
||||||
|
import java.time.ZoneId;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
@@ -345,8 +347,8 @@ public class MedicalMutualAidApplyServiceImpl extends BaseServiceImpl<MutualAppl
|
|||||||
* 汇总页先返回审核通过的申请数据,并携带动态补助明细列表,前端按明细动态展示列。
|
* 汇总页先返回审核通过的申请数据,并携带动态补助明细列表,前端按明细动态展示列。
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Pagination<NutMap> summaryPage(PageForm pageForm, String deptName, String userName, Integer joinYear) {
|
public Pagination<NutMap> summaryPage(PageForm pageForm, String deptName, String userName, Integer joinYear, Integer submitYear) {
|
||||||
Cnd cnd = buildSummaryCnd(deptName, userName, joinYear);
|
Cnd cnd = buildSummaryCnd(deptName, userName, joinYear, submitYear);
|
||||||
Pagination<MutualApply> page = listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd.desc("auditTime"));
|
Pagination<MutualApply> page = listPage(pageForm.getPageNumber(), pageForm.getPageSize(), cnd.desc("auditTime"));
|
||||||
List<NutMap> rows = page.getList().stream()
|
List<NutMap> rows = page.getList().stream()
|
||||||
.map(this::buildSummaryRow)
|
.map(this::buildSummaryRow)
|
||||||
@@ -358,8 +360,8 @@ public class MedicalMutualAidApplyServiceImpl extends BaseServiceImpl<MutualAppl
|
|||||||
* 按汇总页当前展示列导出 Excel,动态补助区间列由当前查询结果中的补助明细生成。
|
* 按汇总页当前展示列导出 Excel,动态补助区间列由当前查询结果中的补助明细生成。
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Workbook exportSummary(String deptName, String userName, Integer joinYear) {
|
public Workbook exportSummary(String deptName, String userName, Integer joinYear, Integer submitYear) {
|
||||||
List<MutualApply> applies = query(buildSummaryCnd(deptName, userName, joinYear).desc("auditTime"));
|
List<MutualApply> applies = query(buildSummaryCnd(deptName, userName, joinYear, submitYear).desc("auditTime"));
|
||||||
List<String> rangeNames = collectSummaryRangeNames(applies);
|
List<String> rangeNames = collectSummaryRangeNames(applies);
|
||||||
List<ExcelExportEntity> exportEntities = buildSummaryExportEntities(rangeNames);
|
List<ExcelExportEntity> exportEntities = buildSummaryExportEntities(rangeNames);
|
||||||
List<Map<String, Object>> exportRows = buildSummaryExportRows(applies, rangeNames);
|
List<Map<String, Object>> exportRows = buildSummaryExportRows(applies, rangeNames);
|
||||||
@@ -592,7 +594,7 @@ public class MedicalMutualAidApplyServiceImpl extends BaseServiceImpl<MutualAppl
|
|||||||
/**
|
/**
|
||||||
* 构建汇总查询条件,列表和导出共用该条件,保证页面展示与 Excel 导出数据范围一致。
|
* 构建汇总查询条件,列表和导出共用该条件,保证页面展示与 Excel 导出数据范围一致。
|
||||||
*/
|
*/
|
||||||
private Cnd buildSummaryCnd(String deptName, String userName, Integer joinYear) {
|
private Cnd buildSummaryCnd(String deptName, String userName, Integer joinYear, Integer submitYear) {
|
||||||
Cnd cnd = Cnd.where("status", "=", 1);
|
Cnd cnd = Cnd.where("status", "=", 1);
|
||||||
if (StrUtil.isNotBlank(deptName)) {
|
if (StrUtil.isNotBlank(deptName)) {
|
||||||
cnd.and(Cnd.likeEX("deptName", StrUtil.trim(deptName)));
|
cnd.and(Cnd.likeEX("deptName", StrUtil.trim(deptName)));
|
||||||
@@ -603,9 +605,21 @@ public class MedicalMutualAidApplyServiceImpl extends BaseServiceImpl<MutualAppl
|
|||||||
if (joinYear != null) {
|
if (joinYear != null) {
|
||||||
cnd.and("joinYear", "=", joinYear);
|
cnd.and("joinYear", "=", joinYear);
|
||||||
}
|
}
|
||||||
|
if (submitYear != null) {
|
||||||
|
Date startDate = toStartDate(submitYear);
|
||||||
|
Date endDate = toStartDate(submitYear + 1);
|
||||||
|
cnd.and("submitTime", ">=", startDate).and("submitTime", "<", endDate);
|
||||||
|
}
|
||||||
return cnd;
|
return cnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将年度转换为该年第一天零点时间,汇总页按提交时间区间过滤,避免在数据库字段上套函数影响索引。
|
||||||
|
*/
|
||||||
|
private Date toStartDate(Integer year) {
|
||||||
|
return Date.from(LocalDate.of(year, 1, 1).atStartOfDay(ZoneId.systemDefault()).toInstant());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 收集导出数据中出现过的补助区间名称,顺序按明细排序和首次出现顺序保持稳定。
|
* 收集导出数据中出现过的补助区间名称,顺序按明细排序和首次出现顺序保持稳定。
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -0,0 +1,156 @@
|
|||||||
|
-- 清理当前人员表 sys_user 中已不存在提案人的测试提案。
|
||||||
|
-- 执行范围固定为本地核对确认的 7 条提案,避免按姓名模糊删除正常数据。
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
|
||||||
|
START TRANSACTION;
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS tmp_delete_proposal_ids;
|
||||||
|
CREATE TEMPORARY TABLE tmp_delete_proposal_ids (
|
||||||
|
id VARCHAR(32) NOT NULL PRIMARY KEY,
|
||||||
|
code VARCHAR(20) NOT NULL,
|
||||||
|
create_user_name VARCHAR(100) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
INSERT INTO tmp_delete_proposal_ids (id, code, create_user_name) VALUES
|
||||||
|
('b7b32848e35c45e2898d6ce292115830', '04-01', '王军英'),
|
||||||
|
('3980f17fc25c4fd5bf41c753ba1af8f0', '04-02', '王军英'),
|
||||||
|
('25ab0c74039a489f8fb3674c068f9e31', '04-03', '王军英'),
|
||||||
|
('83f37b3c46e140929300ad1906411293', '01-08', '钦嫣'),
|
||||||
|
('478bdd992af74dc0bbf550cceeb39d67', '01-09', '钦嫣'),
|
||||||
|
('da578f9e288f400ca22a5942d08ad263', '01-10', '钦嫣'),
|
||||||
|
('7dc386b6b8ce474f85d35c8ceca6e5be', '01-12', '黄宇锋');
|
||||||
|
|
||||||
|
-- 删除前请确认:应返回 7 条,且提案编号、提案人和名称与待清理数据一致。
|
||||||
|
SELECT p.id,
|
||||||
|
p.code,
|
||||||
|
p.createUserLoginName,
|
||||||
|
p.createUserName,
|
||||||
|
p.name
|
||||||
|
FROM proposal_info p
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = p.id
|
||||||
|
ORDER BY p.createdAt, p.code;
|
||||||
|
|
||||||
|
-- 清理 WF 流程关联数据。任务参与人和抄送记录必须先于任务、实例删除。
|
||||||
|
DELETE a
|
||||||
|
FROM wf_process_task_actor a
|
||||||
|
INNER JOIN wf_process_task t ON t.id = a.processTaskId
|
||||||
|
INNER JOIN wf_process_instance i ON i.id = t.processInstanceId
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = i.businessNo;
|
||||||
|
|
||||||
|
DELETE c
|
||||||
|
FROM wf_process_cc_instance c
|
||||||
|
INNER JOIN wf_process_instance i ON i.id = c.processInstanceId
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = i.businessNo;
|
||||||
|
|
||||||
|
DELETE t
|
||||||
|
FROM wf_process_task t
|
||||||
|
INNER JOIN wf_process_instance i ON i.id = t.processInstanceId
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = i.businessNo;
|
||||||
|
|
||||||
|
DELETE i
|
||||||
|
FROM wf_process_instance i
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = i.businessNo;
|
||||||
|
|
||||||
|
-- 兼容清理旧 BPM 流程数据。
|
||||||
|
DELETE t
|
||||||
|
FROM bpm_process_task t
|
||||||
|
INNER JOIN bpm_process_instance i ON i.id = t.processInstanceId
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = i.processInstanceBusinessId;
|
||||||
|
|
||||||
|
DELETE i
|
||||||
|
FROM bpm_process_instance i
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = i.processInstanceBusinessId;
|
||||||
|
|
||||||
|
-- 清理提案业务关联数据。
|
||||||
|
DELETE f
|
||||||
|
FROM proposal_reply_forward f
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = f.proposalId;
|
||||||
|
|
||||||
|
DELETE f
|
||||||
|
FROM proposal_reply_forward f
|
||||||
|
INNER JOIN proposal_reply r ON r.id = f.replyId
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = r.proposalId;
|
||||||
|
|
||||||
|
DELETE a
|
||||||
|
FROM proposal_reply_audit a
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = a.proposalId;
|
||||||
|
|
||||||
|
DELETE a
|
||||||
|
FROM proposal_branch_leader_audit a
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = a.proposalId;
|
||||||
|
|
||||||
|
DELETE o
|
||||||
|
FROM proposal_under_take_first_opinion o
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = o.proposalId;
|
||||||
|
|
||||||
|
DELETE o
|
||||||
|
FROM proposal_commissioner_opinion o
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = o.proposalId;
|
||||||
|
|
||||||
|
DELETE s
|
||||||
|
FROM proposal_undertake_suggestion s
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = s.proposalId;
|
||||||
|
|
||||||
|
DELETE u
|
||||||
|
FROM proposal_urge u
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = u.proposalId;
|
||||||
|
|
||||||
|
DELETE f
|
||||||
|
FROM proposal_feedback f
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = f.proposalId;
|
||||||
|
|
||||||
|
DELETE r
|
||||||
|
FROM proposal_reply r
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = r.proposalId;
|
||||||
|
|
||||||
|
DELETE r
|
||||||
|
FROM proposal_relation_undertake r
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = r.proposalId;
|
||||||
|
|
||||||
|
DELETE r
|
||||||
|
FROM proposal_reply_unit r
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = r.proposalId;
|
||||||
|
|
||||||
|
DELETE s
|
||||||
|
FROM proposal_second s
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = s.proposalId;
|
||||||
|
|
||||||
|
DELETE s
|
||||||
|
FROM proposal_seconded s
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = s.proposalId;
|
||||||
|
|
||||||
|
DELETE a
|
||||||
|
FROM proposal_audit a
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = a.proposalId;
|
||||||
|
|
||||||
|
DELETE c
|
||||||
|
FROM proposal_consolidation c
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = c.proposalId;
|
||||||
|
|
||||||
|
DELETE m
|
||||||
|
FROM proposal_merge m
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = m.proposalId;
|
||||||
|
|
||||||
|
DELETE a
|
||||||
|
FROM proposal_inst_app a
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = a.proposal_id;
|
||||||
|
|
||||||
|
DELETE t
|
||||||
|
FROM proposal_task t
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = t.proposal_id;
|
||||||
|
|
||||||
|
-- 最后删除提案主数据。
|
||||||
|
DELETE p
|
||||||
|
FROM proposal_info p
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = p.id;
|
||||||
|
|
||||||
|
-- 删除后校验:remaining_count 应为 0。
|
||||||
|
SELECT COUNT(*) AS remaining_count
|
||||||
|
FROM proposal_info p
|
||||||
|
INNER JOIN tmp_delete_proposal_ids d ON d.id = p.id;
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS tmp_delete_proposal_ids;
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
@@ -0,0 +1,168 @@
|
|||||||
|
-- 初始化“基层干部”角色,并修复误从角色管理页直接添加的历史分工会干部角色。
|
||||||
|
-- 修复对象仅限:BRANCH_UNION_ROLES 的直接子角色、unionId 为空、且其他业务作用域均为空的 sys_user_role 记录。
|
||||||
|
-- 人员当前所属分工会以 vw_user.unionId 为准;已有非空 unionId 的角色和已有干部档案均不改写。
|
||||||
|
-- 历史修复不补建审核流程。
|
||||||
|
|
||||||
|
SET @now := CAST(UNIX_TIMESTAMP(NOW()) * 1000 AS UNSIGNED);
|
||||||
|
|
||||||
|
START TRANSACTION;
|
||||||
|
|
||||||
|
-- 一、初始化“基层干部”角色。
|
||||||
|
INSERT INTO `sys_role`
|
||||||
|
(`id`, `name`, `code`, `aliasName`, `disabled`, `unitid`, `note`, `sort`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
||||||
|
SELECT
|
||||||
|
'c1d5a6e7b8f94032a1b2c3d4e5f60718', '基层干部', 'BRANCH_UNION_CADRE', 'BranchUnionCadre',
|
||||||
|
0, NULL, '分工会干部统一身份角色', 50, '', @now, '', @now, 0
|
||||||
|
FROM DUAL
|
||||||
|
WHERE NOT EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM `sys_role`
|
||||||
|
WHERE `code` = 'BRANCH_UNION_CADRE'
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS `tmp_role_manager_branch_cadre`;
|
||||||
|
|
||||||
|
-- 二、识别角色管理页直接添加的分工会干部角色。
|
||||||
|
-- 角色管理页只写 roleId、userId,因此这里以 unionId 和其他业务作用域均为空作为历史数据识别条件。
|
||||||
|
CREATE TEMPORARY TABLE `tmp_role_manager_branch_cadre` AS
|
||||||
|
SELECT DISTINCT
|
||||||
|
assigned_role.`roleId`,
|
||||||
|
assigned_role.`userId`,
|
||||||
|
business_role.`code` AS `roleCode`,
|
||||||
|
user_info.`unionId`,
|
||||||
|
branch_union.`name` AS `unionName`,
|
||||||
|
user_info.`username`,
|
||||||
|
user_info.`loginname`,
|
||||||
|
user_info.`mobile`
|
||||||
|
FROM `sys_user_role` assigned_role
|
||||||
|
INNER JOIN `sys_role` business_role
|
||||||
|
ON business_role.`id` = assigned_role.`roleId`
|
||||||
|
INNER JOIN `sys_dict` branch_role_parent
|
||||||
|
ON branch_role_parent.`code` = 'BRANCH_UNION_ROLES'
|
||||||
|
INNER JOIN `sys_dict` branch_role_item
|
||||||
|
ON branch_role_item.`parentId` = branch_role_parent.`id`
|
||||||
|
AND branch_role_item.`code` = business_role.`code`
|
||||||
|
INNER JOIN `vw_user` user_info
|
||||||
|
ON user_info.`id` = assigned_role.`userId`
|
||||||
|
INNER JOIN `sys_union` branch_union
|
||||||
|
ON branch_union.`id` = user_info.`unionId`
|
||||||
|
WHERE (assigned_role.`unionId` IS NULL OR assigned_role.`unionId` = '')
|
||||||
|
AND (assigned_role.`unitId` IS NULL OR assigned_role.`unitId` = '')
|
||||||
|
AND (assigned_role.`unionGroupId` IS NULL OR assigned_role.`unionGroupId` = '')
|
||||||
|
AND (assigned_role.`tcDelegationId` IS NULL OR assigned_role.`tcDelegationId` = '')
|
||||||
|
AND (assigned_role.`tcSessionId` IS NULL OR assigned_role.`tcSessionId` = '')
|
||||||
|
AND (assigned_role.`wcDelegationId` IS NULL OR assigned_role.`wcDelegationId` = '')
|
||||||
|
AND (assigned_role.`wcSessionId` IS NULL OR assigned_role.`wcSessionId` = '')
|
||||||
|
AND (assigned_role.`clubId` IS NULL OR assigned_role.`clubId` = '')
|
||||||
|
AND (assigned_role.`underTakeId` IS NULL OR assigned_role.`underTakeId` = '');
|
||||||
|
|
||||||
|
-- 将误从角色管理页添加的角色补成当前所属分工会的作用域角色。
|
||||||
|
INSERT INTO `sys_user_role` (`roleId`, `userId`, `unionId`)
|
||||||
|
SELECT
|
||||||
|
repair.`roleId`, repair.`userId`, repair.`unionId`
|
||||||
|
FROM `tmp_role_manager_branch_cadre` repair
|
||||||
|
WHERE NOT EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM `sys_user_role` existing_role
|
||||||
|
WHERE existing_role.`roleId` = repair.`roleId`
|
||||||
|
AND existing_role.`userId` = repair.`userId`
|
||||||
|
AND existing_role.`unionId` = repair.`unionId`
|
||||||
|
);
|
||||||
|
|
||||||
|
-- 确认分工会作用域角色存在后,删除同人员、同角色的原空作用域记录。
|
||||||
|
DELETE global_role
|
||||||
|
FROM `sys_user_role` global_role
|
||||||
|
INNER JOIN `tmp_role_manager_branch_cadre` repair
|
||||||
|
ON repair.`roleId` = global_role.`roleId`
|
||||||
|
AND repair.`userId` = global_role.`userId`
|
||||||
|
INNER JOIN `sys_user_role` scoped_role
|
||||||
|
ON scoped_role.`roleId` = repair.`roleId`
|
||||||
|
AND scoped_role.`userId` = repair.`userId`
|
||||||
|
AND scoped_role.`unionId` = repair.`unionId`
|
||||||
|
WHERE (global_role.`unionId` IS NULL OR global_role.`unionId` = '')
|
||||||
|
AND (global_role.`unitId` IS NULL OR global_role.`unitId` = '')
|
||||||
|
AND (global_role.`unionGroupId` IS NULL OR global_role.`unionGroupId` = '')
|
||||||
|
AND (global_role.`tcDelegationId` IS NULL OR global_role.`tcDelegationId` = '')
|
||||||
|
AND (global_role.`tcSessionId` IS NULL OR global_role.`tcSessionId` = '')
|
||||||
|
AND (global_role.`wcDelegationId` IS NULL OR global_role.`wcDelegationId` = '')
|
||||||
|
AND (global_role.`wcSessionId` IS NULL OR global_role.`wcSessionId` = '')
|
||||||
|
AND (global_role.`clubId` IS NULL OR global_role.`clubId` = '')
|
||||||
|
AND (global_role.`underTakeId` IS NULL OR global_role.`underTakeId` = '');
|
||||||
|
|
||||||
|
-- 角色管理页不会创建干部档案,为本次识别出的历史数据补建有效干部档案。
|
||||||
|
INSERT INTO `sys_union_cadre`
|
||||||
|
(`id`, `unionId`, `unionName`, `userId`, `userName`, `loginName`, `mobile`, `roleCode`, `applyDate`, `isJoin`,
|
||||||
|
`createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`)
|
||||||
|
SELECT
|
||||||
|
LOWER(REPLACE(UUID(), '-', '')),
|
||||||
|
repair.`unionId`,
|
||||||
|
repair.`unionName`,
|
||||||
|
repair.`userId`,
|
||||||
|
repair.`username`,
|
||||||
|
repair.`loginname`,
|
||||||
|
repair.`mobile`,
|
||||||
|
repair.`roleCode`,
|
||||||
|
NOW(),
|
||||||
|
1,
|
||||||
|
'', @now, '', @now, 0
|
||||||
|
FROM `tmp_role_manager_branch_cadre` repair
|
||||||
|
WHERE NOT EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM `sys_union_cadre` existing_cadre
|
||||||
|
WHERE existing_cadre.`userId` = repair.`userId`
|
||||||
|
AND existing_cadre.`unionId` = repair.`unionId`
|
||||||
|
AND existing_cadre.`roleCode` = repair.`roleCode`
|
||||||
|
AND (existing_cadre.`isJoin` = 1 OR existing_cadre.`isJoin` IS NULL)
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS `tmp_valid_branch_cadre`;
|
||||||
|
|
||||||
|
-- 三、汇总当前分工会范围内已经生效的干部角色,用于初始化“基层干部”角色。
|
||||||
|
CREATE TEMPORARY TABLE `tmp_valid_branch_cadre` AS
|
||||||
|
SELECT DISTINCT
|
||||||
|
assigned_role.`userId`,
|
||||||
|
assigned_role.`unionId`
|
||||||
|
FROM `sys_user_role` assigned_role
|
||||||
|
INNER JOIN `sys_role` business_role
|
||||||
|
ON business_role.`id` = assigned_role.`roleId`
|
||||||
|
INNER JOIN `sys_dict` branch_role_parent
|
||||||
|
ON branch_role_parent.`code` = 'BRANCH_UNION_ROLES'
|
||||||
|
INNER JOIN `sys_dict` branch_role_item
|
||||||
|
ON branch_role_item.`parentId` = branch_role_parent.`id`
|
||||||
|
AND branch_role_item.`code` = business_role.`code`
|
||||||
|
INNER JOIN `vw_user` user_info
|
||||||
|
ON user_info.`id` = assigned_role.`userId`
|
||||||
|
INNER JOIN `sys_union` branch_union
|
||||||
|
ON branch_union.`id` = assigned_role.`unionId`
|
||||||
|
WHERE assigned_role.`userId` IS NOT NULL
|
||||||
|
AND assigned_role.`unionId` IS NOT NULL
|
||||||
|
AND assigned_role.`unionId` <> ''
|
||||||
|
AND assigned_role.`unionId` = user_info.`unionId`
|
||||||
|
AND (assigned_role.`unitId` IS NULL OR assigned_role.`unitId` = '')
|
||||||
|
AND (assigned_role.`unionGroupId` IS NULL OR assigned_role.`unionGroupId` = '')
|
||||||
|
AND (assigned_role.`tcDelegationId` IS NULL OR assigned_role.`tcDelegationId` = '')
|
||||||
|
AND (assigned_role.`tcSessionId` IS NULL OR assigned_role.`tcSessionId` = '')
|
||||||
|
AND (assigned_role.`wcDelegationId` IS NULL OR assigned_role.`wcDelegationId` = '')
|
||||||
|
AND (assigned_role.`wcSessionId` IS NULL OR assigned_role.`wcSessionId` = '')
|
||||||
|
AND (assigned_role.`clubId` IS NULL OR assigned_role.`clubId` = '')
|
||||||
|
AND (assigned_role.`underTakeId` IS NULL OR assigned_role.`underTakeId` = '');
|
||||||
|
|
||||||
|
-- 给现有有效分工会干部及本次修复的干部补充同分工会范围的“基层干部”角色。
|
||||||
|
INSERT INTO `sys_user_role` (`roleId`, `userId`, `unionId`)
|
||||||
|
SELECT
|
||||||
|
cadre_role.`id`, valid_cadre.`userId`, valid_cadre.`unionId`
|
||||||
|
FROM `tmp_valid_branch_cadre` valid_cadre
|
||||||
|
INNER JOIN `sys_role` cadre_role
|
||||||
|
ON cadre_role.`code` = 'BRANCH_UNION_CADRE'
|
||||||
|
WHERE NOT EXISTS (
|
||||||
|
SELECT 1
|
||||||
|
FROM `sys_user_role` existing_cadre_role
|
||||||
|
WHERE existing_cadre_role.`roleId` = cadre_role.`id`
|
||||||
|
AND existing_cadre_role.`userId` = valid_cadre.`userId`
|
||||||
|
AND existing_cadre_role.`unionId` = valid_cadre.`unionId`
|
||||||
|
);
|
||||||
|
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS `tmp_valid_branch_cadre`;
|
||||||
|
DROP TEMPORARY TABLE IF EXISTS `tmp_role_manager_branch_cadre`;
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
@@ -0,0 +1,520 @@
|
|||||||
|
-- 医疗互助历史数据、互助补助菜单及权限初始化脚本
|
||||||
|
-- 生成来源:当前数据库 zhgh_squ 中 LSDBYL-% 历史导入数据与医疗互助菜单。
|
||||||
|
-- 执行说明:可重复执行;会重置 LSDBYL-% 历史申请、历史配置、互助补助菜单及其授权关系。
|
||||||
|
SET NAMES utf8mb4;
|
||||||
|
SET FOREIGN_KEY_CHECKS = 0;
|
||||||
|
START TRANSACTION;
|
||||||
|
|
||||||
|
-- 金额字段按两位金额保存,避免 100000.00 等历史金额写入时溢出。
|
||||||
|
ALTER TABLE `tb_mutual_apply` MODIFY `medical_total_amount` DECIMAL(12,2) NOT NULL DEFAULT 0.00 COMMENT '全年医疗费用总金额', MODIFY `self_pay_amount` DECIMAL(12,2) NOT NULL DEFAULT 0.00 COMMENT '自付金额', MODIFY `subsidy_total_amount` DECIMAL(12,2) NULL COMMENT '补助小计', MODIFY `bonus_ratio` DECIMAL(5,2) NULL COMMENT '奖励/补助系数', MODIFY `actual_subsidy_amount` DECIMAL(12,2) NULL COMMENT '实际补助金额', MODIFY `limit_amount` DECIMAL(12,2) NULL COMMENT '本次适用最高补助限额';
|
||||||
|
ALTER TABLE `tb_mutual_apply_subsidy` MODIFY `start_amount` DECIMAL(12,2) NOT NULL DEFAULT 0.00 COMMENT '区间开始金额', MODIFY `end_amount` DECIMAL(12,2) NULL COMMENT '区间结束金额(NULL表示无限)', MODIFY `ratio` DECIMAL(5,2) NOT NULL DEFAULT 0.00 COMMENT '补助比例(%)', MODIFY `base_amount` DECIMAL(12,2) NOT NULL DEFAULT 0.00 COMMENT '本区间参与计算金额', MODIFY `subsidy_amount` DECIMAL(12,2) NOT NULL DEFAULT 0.00 COMMENT '本区间补助金额';
|
||||||
|
|
||||||
|
-- 清理历史导入数据。
|
||||||
|
DELETE s FROM `tb_mutual_apply_subsidy` s INNER JOIN `tb_mutual_apply` a ON s.`apply_id` = a.`id` WHERE a.`apply_no` LIKE 'LSDBYL-%';
|
||||||
|
DELETE FROM `tb_mutual_apply` WHERE `apply_no` LIKE 'LSDBYL-%';
|
||||||
|
DELETE FROM `tb_mutual_bonus` WHERE `config_id` IN (SELECT `id` FROM `tb_mutual_config` WHERE `create_by` = 'historical_import' OR `config_name` LIKE '%历史导入%');
|
||||||
|
DELETE FROM `tb_mutual_ratio` WHERE `config_id` IN (SELECT `id` FROM `tb_mutual_config` WHERE `create_by` = 'historical_import' OR `config_name` LIKE '%历史导入%');
|
||||||
|
DELETE FROM `tb_mutual_config` WHERE `create_by` = 'historical_import' OR `config_name` LIKE '%历史导入%';
|
||||||
|
|
||||||
|
-- 清理并重建互助补助菜单及授权。
|
||||||
|
DELETE rm FROM `sys_role_menu` rm INNER JOIN `sys_menu` m ON rm.`menuId` = m.`id` WHERE m.`permission` IN ('fund','medicalMutualAid','medicalMutualAid.medical.diseaseType','medicalMutualAid.apply.form','medicalMutualAid.apply.mine','medicalMutualAid.apply.audit','medicalMutualAid.apply.summary','medicalMutualAid.config','h5.medicalMutualAid','h5.medicalMutualAid.medical.diseaseType');
|
||||||
|
DELETE FROM `sys_menu` WHERE `permission` IN ('fund','medicalMutualAid','medicalMutualAid.medical.diseaseType','medicalMutualAid.apply.form','medicalMutualAid.apply.mine','medicalMutualAid.apply.audit','medicalMutualAid.apply.summary','medicalMutualAid.config','h5.medicalMutualAid','h5.medicalMutualAid.medical.diseaseType');
|
||||||
|
|
||||||
|
INSERT INTO `tb_mutual_config` (`id`, `year`, `config_name`, `start_amount`, `first_year_max_amount`, `other_year_max_amount`, `status`, `remark`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES
|
||||||
|
('12', '2015', '2015年医疗互助补助配置(历史导入)', '10000', '100000', '50000', '1', '历史数据导入时自动创建', 'historical_import', '2026-09-14 15:38:14', 'historical_import', '2026-09-14 15:38:14'),
|
||||||
|
('13', '2016', '2016年医疗互助补助配置(历史导入)', '10000', '100000', '50000', '1', '历史数据导入时自动创建', 'historical_import', '2026-09-14 15:38:14', 'historical_import', '2026-09-14 15:38:14'),
|
||||||
|
('14', '2017', '2017年医疗互助补助配置(历史导入)', '10000', '100000', '50000', '1', '历史数据导入时自动创建', 'historical_import', '2026-09-14 15:38:14', 'historical_import', '2026-09-14 15:38:14'),
|
||||||
|
('15', '2018', '2018年医疗互助补助配置(历史导入)', '10000', '100000', '50000', '1', '历史数据导入时自动创建', 'historical_import', '2026-09-14 15:38:14', 'historical_import', '2026-09-14 15:38:14'),
|
||||||
|
('16', '2019', '2019年医疗互助补助配置(历史导入)', '10000', '100000', '50000', '1', '历史数据导入时自动创建', 'historical_import', '2026-09-14 15:38:14', 'historical_import', '2026-09-14 15:38:14'),
|
||||||
|
('17', '2020', '2020年医疗互助补助配置(历史导入)', '10000', '100000', '50000', '1', '历史数据导入时自动创建', 'historical_import', '2026-09-14 15:38:14', 'historical_import', '2026-09-14 15:38:14'),
|
||||||
|
('18', '2021', '2021年医疗互助补助配置(历史导入)', '10000', '100000', '50000', '1', '历史数据导入时自动创建', 'historical_import', '2026-09-14 15:38:14', 'historical_import', '2026-09-14 15:38:14'),
|
||||||
|
('19', '2022', '2022年医疗互助补助配置(历史导入)', '10000', '100000', '50000', '1', '历史数据导入时自动创建', 'historical_import', '2026-09-14 15:38:14', 'historical_import', '2026-09-14 15:38:14'),
|
||||||
|
('20', '2023', '2023年医疗互助补助配置(历史导入)', '10000', '100000', '50000', '1', '历史数据导入时自动创建', 'historical_import', '2026-09-14 15:38:14', 'historical_import', '2026-09-14 15:38:14'),
|
||||||
|
('21', '2024', '2024年医疗互助补助配置(历史导入)', '10000', '100000', '50000', '1', '历史数据导入时自动创建', 'historical_import', '2026-09-14 15:38:14', 'historical_import', '2026-09-14 15:38:14'),
|
||||||
|
('22', '2025', '2025年医疗互助补助配置(历史导入)', '10000', '100000', '50000', '1', '历史数据导入时自动创建', 'historical_import', '2026-09-14 15:38:14', 'historical_import', '2026-09-14 15:38:14');
|
||||||
|
|
||||||
|
INSERT INTO `tb_mutual_ratio` (`id`, `config_id`, `start_amount`, `end_amount`, `ratio`, `sort`, `remark`) VALUES
|
||||||
|
('45', '12', '10000', '30000', '50', '1', '1万-3万元之间补助50%'),
|
||||||
|
('46', '12', '30000', '40000', '60', '2', '3万-4万元之间补助60%'),
|
||||||
|
('47', '12', '40000', '50000', '70', '3', '4万-5万元之间补助70%'),
|
||||||
|
('48', '12', '50000', NULL, '80', '4', '5万元以上补助80%'),
|
||||||
|
('49', '13', '10000', '30000', '50', '1', '1万-3万元之间补助50%'),
|
||||||
|
('50', '13', '30000', '40000', '60', '2', '3万-4万元之间补助60%'),
|
||||||
|
('51', '13', '40000', '50000', '70', '3', '4万-5万元之间补助70%'),
|
||||||
|
('52', '13', '50000', NULL, '80', '4', '5万元以上补助80%'),
|
||||||
|
('53', '14', '10000', '30000', '50', '1', '1万-3万元之间补助50%'),
|
||||||
|
('54', '14', '30000', '40000', '60', '2', '3万-4万元之间补助60%'),
|
||||||
|
('55', '14', '40000', '50000', '70', '3', '4万-5万元之间补助70%'),
|
||||||
|
('56', '14', '50000', NULL, '80', '4', '5万元以上补助80%'),
|
||||||
|
('57', '15', '10000', '30000', '50', '1', '1万-3万元之间补助50%'),
|
||||||
|
('58', '15', '30000', '40000', '60', '2', '3万-4万元之间补助60%'),
|
||||||
|
('59', '15', '40000', '50000', '70', '3', '4万-5万元之间补助70%'),
|
||||||
|
('60', '15', '50000', NULL, '80', '4', '5万元以上补助80%'),
|
||||||
|
('61', '16', '10000', '30000', '50', '1', '1万-3万元之间补助50%'),
|
||||||
|
('62', '16', '30000', '40000', '60', '2', '3万-4万元之间补助60%'),
|
||||||
|
('63', '16', '40000', '50000', '70', '3', '4万-5万元之间补助70%'),
|
||||||
|
('64', '16', '50000', NULL, '80', '4', '5万元以上补助80%'),
|
||||||
|
('65', '17', '10000', '30000', '50', '1', '1万-3万元之间补助50%'),
|
||||||
|
('66', '17', '30000', '40000', '60', '2', '3万-4万元之间补助60%'),
|
||||||
|
('67', '17', '40000', '50000', '70', '3', '4万-5万元之间补助70%'),
|
||||||
|
('68', '17', '50000', NULL, '80', '4', '5万元以上补助80%'),
|
||||||
|
('69', '18', '10000', '30000', '50', '1', '1万-3万元之间补助50%'),
|
||||||
|
('70', '18', '30000', '40000', '60', '2', '3万-4万元之间补助60%'),
|
||||||
|
('71', '18', '40000', '50000', '70', '3', '4万-5万元之间补助70%'),
|
||||||
|
('72', '18', '50000', NULL, '80', '4', '5万元以上补助80%'),
|
||||||
|
('73', '19', '10000', '30000', '50', '1', '1万-3万元之间补助50%'),
|
||||||
|
('74', '19', '30000', '40000', '60', '2', '3万-4万元之间补助60%'),
|
||||||
|
('75', '19', '40000', '50000', '70', '3', '4万-5万元之间补助70%'),
|
||||||
|
('76', '19', '50000', NULL, '80', '4', '5万元以上补助80%'),
|
||||||
|
('77', '20', '10000', '30000', '50', '1', '1万-3万元之间补助50%'),
|
||||||
|
('78', '20', '30000', '40000', '60', '2', '3万-4万元之间补助60%'),
|
||||||
|
('79', '20', '40000', '50000', '70', '3', '4万-5万元之间补助70%'),
|
||||||
|
('80', '20', '50000', NULL, '80', '4', '5万元以上补助80%'),
|
||||||
|
('81', '21', '10000', '30000', '50', '1', '1万-3万元之间补助50%'),
|
||||||
|
('82', '21', '30000', '40000', '60', '2', '3万-4万元之间补助60%'),
|
||||||
|
('83', '21', '40000', '50000', '70', '3', '4万-5万元之间补助70%'),
|
||||||
|
('84', '21', '50000', NULL, '80', '4', '5万元以上补助80%'),
|
||||||
|
('85', '22', '10000', '30000', '50', '1', '1万-3万元之间补助50%'),
|
||||||
|
('86', '22', '30000', '40000', '60', '2', '3万-4万元之间补助60%'),
|
||||||
|
('87', '22', '40000', '50000', '70', '3', '4万-5万元之间补助70%'),
|
||||||
|
('88', '22', '50000', NULL, '80', '4', '5万元以上补助80%');
|
||||||
|
|
||||||
|
INSERT INTO `tb_mutual_bonus` (`id`, `config_id`, `continuous_year`, `increase_ratio`, `remark`) VALUES
|
||||||
|
('23', '12', '5', '10', '连续参加互助会5年以上未申请补助,补助金额增加10%'),
|
||||||
|
('24', '12', '10', '15', '连续参加互助会10年以上未申请补助,补助金额增加15%'),
|
||||||
|
('25', '13', '5', '10', '连续参加互助会5年以上未申请补助,补助金额增加10%'),
|
||||||
|
('26', '13', '10', '15', '连续参加互助会10年以上未申请补助,补助金额增加15%'),
|
||||||
|
('27', '14', '5', '10', '连续参加互助会5年以上未申请补助,补助金额增加10%'),
|
||||||
|
('28', '14', '10', '15', '连续参加互助会10年以上未申请补助,补助金额增加15%'),
|
||||||
|
('29', '15', '5', '10', '连续参加互助会5年以上未申请补助,补助金额增加10%'),
|
||||||
|
('30', '15', '10', '15', '连续参加互助会10年以上未申请补助,补助金额增加15%'),
|
||||||
|
('31', '16', '5', '10', '连续参加互助会5年以上未申请补助,补助金额增加10%'),
|
||||||
|
('32', '16', '10', '15', '连续参加互助会10年以上未申请补助,补助金额增加15%'),
|
||||||
|
('33', '17', '5', '10', '连续参加互助会5年以上未申请补助,补助金额增加10%'),
|
||||||
|
('34', '17', '10', '15', '连续参加互助会10年以上未申请补助,补助金额增加15%'),
|
||||||
|
('35', '18', '5', '10', '连续参加互助会5年以上未申请补助,补助金额增加10%'),
|
||||||
|
('36', '18', '10', '15', '连续参加互助会10年以上未申请补助,补助金额增加15%'),
|
||||||
|
('37', '19', '5', '10', '连续参加互助会5年以上未申请补助,补助金额增加10%'),
|
||||||
|
('38', '19', '10', '15', '连续参加互助会10年以上未申请补助,补助金额增加15%'),
|
||||||
|
('39', '20', '5', '10', '连续参加互助会5年以上未申请补助,补助金额增加10%'),
|
||||||
|
('40', '20', '10', '15', '连续参加互助会10年以上未申请补助,补助金额增加15%'),
|
||||||
|
('41', '21', '5', '10', '连续参加互助会5年以上未申请补助,补助金额增加10%'),
|
||||||
|
('42', '21', '10', '15', '连续参加互助会10年以上未申请补助,补助金额增加15%'),
|
||||||
|
('43', '22', '5', '10', '连续参加互助会5年以上未申请补助,补助金额增加10%'),
|
||||||
|
('44', '22', '10', '15', '连续参加互助会10年以上未申请补助,补助金额增加15%');
|
||||||
|
|
||||||
|
INSERT INTO `tb_mutual_apply` (`id`, `apply_no`, `user_id`, `login_name`, `user_name`, `sex`, `birthday`, `native_place`, `education`, `professional_title`, `dept_id`, `dept_name`, `id_card`, `mobile`, `bank_card_no`, `bank_name`, `join_date`, `join_year`, `disease_type_id`, `disease_name`, `hospital_desc`, `medical_total_amount`, `self_pay_amount`, `sign_file_id`, `sign_time`, `status`, `submit_time`, `audit_by`, `audit_time`, `audit_opinion`, `config_id`, `config_year`, `subsidy_total_amount`, `bonus_ratio`, `actual_subsidy_amount`, `continuous_unapply_year`, `limit_amount`, `remark`, `create_by`, `create_time`, `update_by`, `update_time`) VALUES
|
||||||
|
('1', 'LSDBYL-2015-001-20001', '2e6a86f0ae764dabaa17ec8e0fdeaccb', '20001', '邓森', '男', '1966-11-21 00:00:00', NULL, '研究生教育', '副教授', '3005', '外国语学院', NULL, '13228719780', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '10678.00', '10678.00', NULL, NULL, '1', '2015-12-31 00:00:00', 'historical_import', '2015-12-31 00:00:00', '历史数据导入,默认已审核', '12', '2015', '10678.00', '1.00', '10678.00', '1', '100000.00', NULL, '20001', '2015-12-31 00:00:00', 'historical_import', '2015-12-31 00:00:00'),
|
||||||
|
('2', 'LSDBYL-2016-001-20001', '2e6a86f0ae764dabaa17ec8e0fdeaccb', '20001', '邓森', '男', '1966-11-21 00:00:00', NULL, '研究生教育', '副教授', '3005', '外国语学院', NULL, '13228719780', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '50000.00', '50000.00', NULL, NULL, '1', '2016-12-31 00:00:00', 'historical_import', '2016-12-31 00:00:00', '历史数据导入,默认已审核', '13', '2016', '50000.00', '1.00', '50000.00', '1', '50000.00', NULL, '20001', '2016-12-31 00:00:00', 'historical_import', '2016-12-31 00:00:00'),
|
||||||
|
('3', 'LSDBYL-2017-001-20001', '2e6a86f0ae764dabaa17ec8e0fdeaccb', '20001', '邓森', '男', '1966-11-21 00:00:00', NULL, '研究生教育', '副教授', '3005', '外国语学院', NULL, '13228719780', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '50000.00', '50000.00', NULL, NULL, '1', '2017-12-31 00:00:00', 'historical_import', '2017-12-31 00:00:00', '历史数据导入,默认已审核', '14', '2017', '50000.00', '1.00', '50000.00', '1', '50000.00', NULL, '20001', '2017-12-31 00:00:00', 'historical_import', '2017-12-31 00:00:00'),
|
||||||
|
('4', 'LSDBYL-2018-001-20001', '2e6a86f0ae764dabaa17ec8e0fdeaccb', '20001', '邓森', '男', '1966-11-21 00:00:00', NULL, '研究生教育', '副教授', '3005', '外国语学院', NULL, '13228719780', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '50000.00', '50000.00', NULL, NULL, '1', '2018-12-31 00:00:00', 'historical_import', '2018-12-31 00:00:00', '历史数据导入,默认已审核', '15', '2018', '50000.00', '1.00', '50000.00', '1', '50000.00', NULL, '20001', '2018-12-31 00:00:00', 'historical_import', '2018-12-31 00:00:00'),
|
||||||
|
('5', 'LSDBYL-2018-002-20072', '6c34ff3b8abe440585a7fdeb2385a4b8', '20072', '刘丹', '女', '1980-06-27 00:00:00', NULL, '硕士研究生毕业', '讲师(高校)', '2001', '图书馆', NULL, '18800608511', NULL, NULL, '2004-01-01 00:00:00', '2004', NULL, '历史大病医疗补助', '历史大病医疗补助', '13875.38', '13875.38', NULL, NULL, '1', '2018-12-31 00:00:00', 'historical_import', '2018-12-31 00:00:00', '历史数据导入,默认已审核', '15', '2018', '13875.38', '1.00', '13875.38', '1', '50000.00', NULL, '20072', '2018-12-31 00:00:00', 'historical_import', '2018-12-31 00:00:00'),
|
||||||
|
('6', 'LSDBYL-2018-003-04004', '0374adeae8a64e6ca8e7ff1498c803d9', '04004', '孙以泽', '男', '1965-01-07 00:00:00', NULL, '大学本科毕业', '副教授', '4001', '党委宣传部', NULL, '18805249720', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '10142.77', '10142.77', NULL, NULL, '1', '2018-12-31 00:00:00', 'historical_import', '2018-12-31 00:00:00', '历史数据导入,默认已审核', '15', '2018', '10142.77', '1.00', '10142.77', '1', '50000.00', NULL, '04004', '2018-12-31 00:00:00', 'historical_import', '2018-12-31 00:00:00'),
|
||||||
|
('7', 'LSDBYL-2019-001-20001', '2e6a86f0ae764dabaa17ec8e0fdeaccb', '20001', '邓森', '男', '1966-11-21 00:00:00', NULL, '研究生教育', '副教授', '3005', '外国语学院', NULL, '13228719780', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '50000.00', '50000.00', NULL, NULL, '1', '2019-12-31 00:00:00', 'historical_import', '2019-12-31 00:00:00', '历史数据导入,默认已审核', '16', '2019', '50000.00', '1.00', '50000.00', '1', '50000.00', NULL, '20001', '2019-12-31 00:00:00', 'historical_import', '2019-12-31 00:00:00'),
|
||||||
|
('8', 'LSDBYL-2019-002-HT0321', '5485986c35384d748833e73507ba17c4', 'HT0321', '王超超', '男', '1980-01-01 00:00:00', NULL, '大学本科毕业', NULL, '2002', '信息化建设与管理中心', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '历史大病医疗补助', '历史大病医疗补助', '34070.75', '34070.75', NULL, NULL, '1', '2019-12-31 00:00:00', 'historical_import', '2019-12-31 00:00:00', '历史数据导入,默认已审核', '16', '2019', '34070.75', '1.00', '34070.75', '1', '50000.00', NULL, 'HT0321', '2019-12-31 00:00:00', 'historical_import', '2019-12-31 00:00:00'),
|
||||||
|
('9', 'LSDBYL-2019-003-04004', '0374adeae8a64e6ca8e7ff1498c803d9', '04004', '孙以泽', '男', '1965-01-07 00:00:00', NULL, '大学本科毕业', '副教授', '4001', '党委宣传部', NULL, '18805249720', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '11498.94', '11498.94', NULL, NULL, '1', '2019-12-31 00:00:00', 'historical_import', '2019-12-31 00:00:00', '历史数据导入,默认已审核', '16', '2019', '11498.94', '1.00', '11498.94', '1', '50000.00', NULL, '04004', '2019-12-31 00:00:00', 'historical_import', '2019-12-31 00:00:00'),
|
||||||
|
('10', 'LSDBYL-2019-004-09009', '79360f98be3b43a78acfa23abe33ff2c', '09009', '朱绍奇', '男', '1976-10-20 00:00:00', NULL, '大学本科毕业', '讲师(高校)', '3004', '建筑工程学院 智慧城市学院', NULL, '13056111520', NULL, NULL, '2002-01-01 00:00:00', '2002', NULL, '历史大病医疗补助', '历史大病医疗补助', '50000.00', '50000.00', NULL, NULL, '1', '2019-12-31 00:00:00', 'historical_import', '2019-12-31 00:00:00', '历史数据导入,默认已审核', '16', '2019', '50000.00', '1.00', '50000.00', '1', '50000.00', NULL, '09009', '2019-12-31 00:00:00', 'historical_import', '2019-12-31 00:00:00'),
|
||||||
|
('11', 'LSDBYL-2019-005-19047', 'add38a8623c740c7b961b9f83ba9a07f', '19047', '余腾', '男', '1985-07-29 00:00:00', NULL, '大学本科教育', '高级实验师', '3004', '建筑工程学院 智慧城市学院', NULL, '13228705196', NULL, NULL, '2006-01-01 00:00:00', '2006', NULL, '历史大病医疗补助', '历史大病医疗补助', '8610.61', '8610.61', NULL, NULL, '1', '2019-12-31 00:00:00', 'historical_import', '2019-12-31 00:00:00', '历史数据导入,默认已审核', '16', '2019', '8610.61', '1.00', '8610.61', '1', '50000.00', NULL, '19047', '2019-12-31 00:00:00', 'historical_import', '2019-12-31 00:00:00'),
|
||||||
|
('12', 'LSDBYL-2019-006-20072', '6c34ff3b8abe440585a7fdeb2385a4b8', '20072', '刘丹', '女', '1980-06-27 00:00:00', NULL, '硕士研究生毕业', '讲师(高校)', '2001', '图书馆', NULL, '18800608511', NULL, NULL, '2004-01-01 00:00:00', '2004', NULL, '历史大病医疗补助', '历史大病医疗补助', '7716.83', '7716.83', NULL, NULL, '1', '2019-12-31 00:00:00', 'historical_import', '2019-12-31 00:00:00', '历史数据导入,默认已审核', '16', '2019', '7716.83', '1.00', '7716.83', '1', '50000.00', NULL, '20072', '2019-12-31 00:00:00', 'historical_import', '2019-12-31 00:00:00'),
|
||||||
|
('13', 'LSDBYL-2020-001-20001', '2e6a86f0ae764dabaa17ec8e0fdeaccb', '20001', '邓森', '男', '1966-11-21 00:00:00', NULL, '研究生教育', '副教授', '3005', '外国语学院', NULL, '13228719780', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '50000.00', '50000.00', NULL, NULL, '1', '2020-12-31 00:00:00', 'historical_import', '2020-12-31 00:00:00', '历史数据导入,默认已审核', '17', '2020', '50000.00', '1.00', '50000.00', '1', '50000.00', NULL, '20001', '2020-12-31 00:00:00', 'historical_import', '2020-12-31 00:00:00'),
|
||||||
|
('14', 'LSDBYL-2020-002-HT0096', '34bc1dca42684807b67b4c1b60fd48fc', 'HT0096', '王超章', '男', '1976-05-20 00:00:00', NULL, '普通高中毕业', NULL, '1008', '后勤管理处(后勤服务公司)、基建处', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '历史大病医疗补助', '历史大病医疗补助', '9716.15', '9716.15', NULL, NULL, '1', '2020-12-31 00:00:00', 'historical_import', '2020-12-31 00:00:00', '历史数据导入,默认已审核', '17', '2020', '9716.15', '1.00', '9716.15', '1', '50000.00', NULL, 'HT0096', '2020-12-31 00:00:00', 'historical_import', '2020-12-31 00:00:00'),
|
||||||
|
('15', 'LSDBYL-2020-003-22017', '9953f6b10fcb4ebca53740103d848d7f', '22017', '桂媛', '女', '1981-09-30 00:00:00', NULL, '研究生教育', '副教授', '2001', '图书馆', NULL, '13365158080', NULL, NULL, NULL, NULL, NULL, '历史大病医疗补助', '历史大病医疗补助', '92271.87', '92271.87', NULL, NULL, '1', '2020-12-31 00:00:00', 'historical_import', '2020-12-31 00:00:00', '历史数据导入,默认已审核', '17', '2020', '92271.87', '1.00', '92271.87', '1', '50000.00', NULL, '22017', '2020-12-31 00:00:00', 'historical_import', '2020-12-31 00:00:00'),
|
||||||
|
('16', 'LSDBYL-2020-004-23024', '67f62cb5d6914153ba4ec16b588bdc0b', '23024', '刘岩', '男', '1968-03-14 00:00:00', NULL, '大学本科教育', '讲师(高校)', '3014', '教师教育学院', NULL, '13082588106', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '14529.56', '14529.56', NULL, NULL, '1', '2020-12-31 00:00:00', 'historical_import', '2020-12-31 00:00:00', '历史数据导入,默认已审核', '17', '2020', '14529.56', '1.00', '14529.56', '1', '50000.00', NULL, '23024', '2020-12-31 00:00:00', 'historical_import', '2020-12-31 00:00:00'),
|
||||||
|
('17', 'LSDBYL-2021-001-20001', '2e6a86f0ae764dabaa17ec8e0fdeaccb', '20001', '邓森', '男', '1966-11-21 00:00:00', NULL, '研究生教育', '副教授', '3005', '外国语学院', NULL, '13228719780', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '85260.92', '85260.92', NULL, NULL, '1', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00', '历史数据导入,默认已审核', '18', '2021', '50000.00', '1.00', '50000.00', '1', '50000.00', '计算金额为51208.736', '20001', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00'),
|
||||||
|
('18', 'LSDBYL-2021-002-22017', '9953f6b10fcb4ebca53740103d848d7f', '22017', '桂媛', '女', '1981-09-30 00:00:00', NULL, '研究生教育', '副教授', '2001', '图书馆', NULL, '13365158080', NULL, NULL, NULL, NULL, NULL, '历史大病医疗补助', '历史大病医疗补助', '20047.42', '20047.42', NULL, NULL, '1', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00', '历史数据导入,默认已审核', '18', '2021', '5023.71', '1.00', '5023.71', '1', '50000.00', NULL, '22017', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00'),
|
||||||
|
('19', 'LSDBYL-2021-003-20072', '6c34ff3b8abe440585a7fdeb2385a4b8', '20072', '刘丹', '女', '1980-06-27 00:00:00', NULL, '硕士研究生毕业', '讲师(高校)', '2001', '图书馆', NULL, '18800608511', NULL, NULL, '2004-01-01 00:00:00', '2004', NULL, '历史大病医疗补助', '历史大病医疗补助', '13780.86', '13780.86', NULL, NULL, '1', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00', '历史数据导入,默认已审核', '18', '2021', '1890.43', '1.00', '1890.43', '1', '50000.00', NULL, '20072', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00'),
|
||||||
|
('20', 'LSDBYL-2021-004-08012', '61cbfc6974504b72b4db3b48ff4cdd49', '08012', '耿国锋', '男', '1962-12-28 00:00:00', NULL, '普通高中毕业', NULL, '1008', '后勤管理处(后勤服务公司)、基建处', NULL, '18951368152', NULL, NULL, NULL, NULL, NULL, '历史大病医疗补助', '历史大病医疗补助', '55595.98', '55595.98', NULL, NULL, '1', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00', '历史数据导入,默认已审核', '18', '2021', '32036.38', '1.00', '32036.38', '1', '50000.00', NULL, '08012', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00'),
|
||||||
|
('21', 'LSDBYL-2021-005-08011', 'eb1b6780657111f1adbc0242ac120005', '08011', '韩庆金', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '54267.36', '54267.36', NULL, NULL, '1', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00', '历史数据导入,默认已审核', '18', '2021', '30840.62', '1.00', '30840.62', '1', '50000.00', NULL, '08011', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00'),
|
||||||
|
('22', 'LSDBYL-2021-006-19012', 'bdfab9ce31294d83b45a648030611699', '19012', '朱琴', '女', '1976-02-16 00:00:00', NULL, '大学本科毕业', '讲师(高校)', '1012', '党委保卫部、保卫处', NULL, '15506112196', NULL, NULL, '2002-01-01 00:00:00', '2002', NULL, '历史大病医疗补助', '历史大病医疗补助', '16730.98', '16730.98', NULL, NULL, '1', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00', '历史数据导入,默认已审核', '18', '2021', '4038.58', '1.00', '4038.58', '1', '50000.00', NULL, '19012', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00'),
|
||||||
|
('23', 'LSDBYL-2021-007-21035', '9eba5de2f08344bdbf811078de067137', '21035', '王孝刚', '男', '1980-06-29 00:00:00', NULL, '硕士研究生毕业', '副教授', '3001', '经济管理学院', NULL, '13485097681', NULL, NULL, '2021-01-01 00:00:00', '2021', NULL, '历史大病医疗补助', '历史大病医疗补助', '39340.36', '39340.36', NULL, NULL, '1', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00', '历史数据导入,默认已审核', '18', '2021', '18538.25', '1.00', '18538.25', '1', '100000.00', NULL, '21035', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00'),
|
||||||
|
('24', 'LSDBYL-2021-008-19128', '85dbf248897f43669d6760e91c0bc116', '19128', '乔永旭', '男', '1978-05-01 00:00:00', NULL, '博士研究生毕业', '教授', '3012', '生物与材料工程学院', NULL, '13933459550', NULL, NULL, '2021-01-01 00:00:00', '2021', NULL, '历史大病医疗补助', '历史大病医疗补助', '21550.40', '21550.40', NULL, NULL, '1', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00', '历史数据导入,默认已审核', '18', '2021', '5775.20', '1.00', '5775.20', '1', '100000.00', NULL, '19128', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00'),
|
||||||
|
('25', 'LSDBYL-2021-009-LP006', '784bc560e7c34c22a7273473d8e0b5c5', 'LP006', '肖斯波', '男', '1969-07-16 00:00:00', NULL, '大学专科毕业', '助理实验师', '3007', '机电工程学院', NULL, '13235116226', NULL, NULL, '2007-01-01 00:00:00', '2007', NULL, '历史大病医疗补助', '历史大病医疗补助', '108146.89', '108146.89', NULL, NULL, '1', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00', '历史数据导入,默认已审核', '18', '2021', '79332.20', '1.00', '79332.20', '1', '50000.00', NULL, 'LP006', '2021-12-31 00:00:00', 'historical_import', '2021-12-31 00:00:00'),
|
||||||
|
('26', 'LSDBYL-2022-001-20001', '2e6a86f0ae764dabaa17ec8e0fdeaccb', '20001', '邓森', '男', '1966-11-21 00:00:00', NULL, '研究生教育', '副教授', '3005', '外国语学院', NULL, '13228719780', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '81028.60', '81028.60', NULL, NULL, '1', '2022-12-31 00:00:00', 'historical_import', '2022-12-31 00:00:00', '历史数据导入,默认已审核', '19', '2022', '47822.88', '1.00', '47822.88', '1', '50000.00', NULL, '20001', '2022-12-31 00:00:00', 'historical_import', '2022-12-31 00:00:00'),
|
||||||
|
('27', 'LSDBYL-2022-002-08012', '61cbfc6974504b72b4db3b48ff4cdd49', '08012', '耿国锋', '男', '1962-12-28 00:00:00', NULL, '普通高中毕业', NULL, '1008', '后勤管理处(后勤服务公司)、基建处', NULL, '18951368152', NULL, NULL, NULL, NULL, NULL, '历史大病医疗补助', '历史大病医疗补助', '90753.55', '90753.55', NULL, NULL, '1', '2022-12-31 00:00:00', 'historical_import', '2022-12-31 00:00:00', '历史数据导入,默认已审核', '19', '2022', '50000.00', '1.00', '50000.00', '1', '50000.00', NULL, '08012', '2022-12-31 00:00:00', 'historical_import', '2022-12-31 00:00:00'),
|
||||||
|
('28', 'LSDBYL-2022-003-08009', '7bea7fc004204c8c976b360f34a80617', '08009', '徐建涛', '女', '1969-12-12 00:00:00', NULL, '大学本科毕业', '助理研究员(教育管理)', '1021', '国有资产管理处、招投标办公室', NULL, '13064817799', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '18124.33', '18124.33', NULL, NULL, '1', '2022-12-31 00:00:00', 'historical_import', '2022-12-31 00:00:00', '历史数据导入,默认已审核', '19', '2022', '4468.38', '1.00', '4468.38', '1', '50000.00', NULL, '08009', '2022-12-31 00:00:00', 'historical_import', '2022-12-31 00:00:00'),
|
||||||
|
('29', 'LSDBYL-2022-004-90002', 'c8a7b9afff1a45189f8a473500535d73', '90002', '崔银娜', '女', '1985-12-20 00:00:00', NULL, '研究生教育', '会计师', '3001', '经济管理学院', NULL, '19816496228', NULL, NULL, '2020-01-01 00:00:00', '2020', NULL, '历史大病医疗补助', '历史大病医疗补助', '20150.05', '20150.05', NULL, NULL, '1', '2022-12-31 00:00:00', 'historical_import', '2022-12-31 00:00:00', '历史数据导入,默认已审核', '19', '2022', '4991.34', '1.00', '4991.34', '1', '50000.00', '医惠保报销167.36', '90002', '2022-12-31 00:00:00', 'historical_import', '2022-12-31 00:00:00'),
|
||||||
|
('30', 'LSDBYL-2022-005-25007', '679d6452478c4d4eb1d22fd8cb298419', '25007', '孙莉', '女', '1971-12-04 00:00:00', NULL, '大学本科教育', '助理研究员(教育管理)', '2002', '信息化建设与管理中心', NULL, '13003492958', NULL, NULL, '2004-01-01 00:00:00', '2004', NULL, '历史大病医疗补助', '历史大病医疗补助', '53471.36', '53471.36', NULL, NULL, '1', '2022-12-31 00:00:00', 'historical_import', '2022-12-31 00:00:00', '历史数据导入,默认已审核', '19', '2022', '26804.34', '1.00', '26804.34', '1', '50000.00', '医惠保报销1761.88', '25007', '2022-12-31 00:00:00', 'historical_import', '2022-12-31 00:00:00'),
|
||||||
|
('31', 'LSDBYL-2022-006-18004', '7485db0f9f2e43aaa783d770632684d6', '18004', '汪勇', '男', '1979-07-08 00:00:00', NULL, '大学本科毕业', '讲师(高校)', '3007', '机电工程学院', NULL, '13327840868', NULL, NULL, '2002-01-01 00:00:00', '2002', NULL, '历史大病医疗补助', '历史大病医疗补助', '15084.50', '15084.50', NULL, NULL, '1', '2022-12-31 00:00:00', 'historical_import', '2022-12-31 00:00:00', '历史数据导入,默认已审核', '19', '2022', '2796.47', '1.00', '2796.47', '1', '50000.00', NULL, '18004', '2022-12-31 00:00:00', 'historical_import', '2022-12-31 00:00:00'),
|
||||||
|
('32', 'LSDBYL-2022-007-HT0019', 'e1179087db7c4ca18f0d21067dd4eebd', 'HT0019', '王冬冬', '女', '1978-02-02 00:00:00', NULL, '普通高中毕业', NULL, '1005', '党委学生工作部、学生工作处、人民武装部、招生就业办公室、校友会办公室', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '历史大病医疗补助', '历史大病医疗补助', '0.00', '0.00', NULL, NULL, '1', '2022-12-31 00:00:00', 'historical_import', '2022-12-31 00:00:00', '历史数据导入,默认已审核', '19', '2022', '0.00', '1.00', '0.00', '1', '50000.00', NULL, 'HT0019', '2022-12-31 00:00:00', 'historical_import', '2022-12-31 00:00:00'),
|
||||||
|
('33', 'LSDBYL-2023-001-23020', '0e6f550059c74b28a8406e3bc3a97407', '23020', '丁辉', '男', '1970-11-13 00:00:00', NULL, '研究生教育', '副教授', '3014', '文理学院', NULL, '15851169540', NULL, NULL, '2004-01-01 00:00:00', '2004', NULL, '历史大病医疗补助', '历史大病医疗补助', '22701.24', '22701.24', NULL, NULL, '1', '2023-12-31 00:00:00', 'historical_import', '2023-12-31 00:00:00', '历史数据导入,默认已审核', '20', '2023', '6985.68', '1.00', '6985.68', '1', '50000.00', '补助金额增加10%', '23020', '2023-12-31 00:00:00', 'historical_import', '2023-12-31 00:00:00'),
|
||||||
|
('34', 'LSDBYL-2023-002-20001', '2e6a86f0ae764dabaa17ec8e0fdeaccb', '20001', '邓森', '男', '1966-11-21 00:00:00', NULL, '研究生教育', '副教授', '3005', '外国语学院', NULL, '13228719780', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '67227.73', '67227.73', NULL, NULL, '1', '2023-12-31 00:00:00', 'historical_import', '2023-12-31 00:00:00', '历史数据导入,默认已审核', '20', '2023', '36782.18', '1.00', '36782.18', '1', '50000.00', NULL, '20001', '2023-12-31 00:00:00', 'historical_import', '2023-12-31 00:00:00'),
|
||||||
|
('35', 'LSDBYL-2023-003-20125', 'f76d1b58de62465e862a0f750f6a2544', '20125', '赵菊菊', '女', '1981-01-13 00:00:00', NULL, '大学本科教育', '讲师(高校)', '3005', '外国语学院', NULL, '15261207001', NULL, NULL, '2006-01-01 00:00:00', '2006', NULL, '历史大病医疗补助', '历史大病医疗补助', '13709.66', '13709.66', NULL, NULL, '1', '2023-12-31 00:00:00', 'historical_import', '2023-12-31 00:00:00', '历史数据导入,默认已审核', '20', '2023', '2040.31', '1.00', '2040.31', '1', '50000.00', '补助金额增加10%', '20125', '2023-12-31 00:00:00', 'historical_import', '2023-12-31 00:00:00'),
|
||||||
|
('36', 'LSDBYL-2023-004-LP006', '784bc560e7c34c22a7273473d8e0b5c5', 'LP006', '肖斯波', '男', '1969-07-16 00:00:00', NULL, '大学专科毕业', '助理实验师', '3007', '机电工程学院', NULL, '13235116226', NULL, NULL, '2007-01-01 00:00:00', '2007', NULL, '历史大病医疗补助', '历史大病医疗补助', '24678.70', '24678.70', NULL, NULL, '1', '2023-12-31 00:00:00', 'historical_import', '2023-12-31 00:00:00', '历史数据导入,默认已审核', '20', '2023', '7339.35', '1.00', '7339.35', '1', '50000.00', NULL, 'LP006', '2023-12-31 00:00:00', 'historical_import', '2023-12-31 00:00:00'),
|
||||||
|
('37', 'LSDBYL-2023-005-25007', '679d6452478c4d4eb1d22fd8cb298419', '25007', '孙莉', '女', '1971-12-04 00:00:00', NULL, '大学本科教育', '助理研究员(教育管理)', '2002', '信息化中心', NULL, '13003492958', NULL, NULL, '2004-01-01 00:00:00', '2004', NULL, '历史大病医疗补助', '历史大病医疗补助', '22517.75', '22517.75', NULL, NULL, '1', '2023-12-31 00:00:00', 'historical_import', '2023-12-31 00:00:00', '历史数据导入,默认已审核', '20', '2023', '6258.88', '1.00', '6258.88', '1', '50000.00', NULL, '25007', '2023-12-31 00:00:00', 'historical_import', '2023-12-31 00:00:00'),
|
||||||
|
('38', 'LSDBYL-2023-006-16001', '7aaa5310c32d46d4947d60a1854cb90e', '16001', '龚永刚', '男', '1963-04-13 00:00:00', NULL, '大学本科毕业', '副教授', '3001', '原管理学院 党委书记', NULL, '18805242819', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '55719.40', '55719.40', NULL, NULL, '1', '2023-12-31 00:00:00', 'historical_import', '2023-12-31 00:00:00', '历史数据导入,默认已审核', '20', '2023', '30333.07', '1.00', '30333.07', '1', '50000.00', '已退休,补助金额增加10%', '16001', '2023-12-31 00:00:00', 'historical_import', '2023-12-31 00:00:00'),
|
||||||
|
('39', 'LSDBYL-2023-007-王冬梅', NULL, NULL, '王冬梅', NULL, NULL, NULL, NULL, NULL, NULL, '学工处', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '历史大病医疗补助', '历史大病医疗补助', '17565.75', '17565.75', NULL, NULL, '1', '2023-12-31 00:00:00', 'historical_import', '2023-12-31 00:00:00', '历史数据导入,默认已审核', '20', '2023', '4161.16', '1.00', '4161.16', '1', '50000.00', '补助金额增加10%', 'historical_import', '2023-12-31 00:00:00', 'historical_import', '2023-12-31 00:00:00'),
|
||||||
|
('40', 'LSDBYL-2023-008-08012', '61cbfc6974504b72b4db3b48ff4cdd49', '08012', '耿国锋', '男', '1962-12-28 00:00:00', NULL, '普通高中毕业', NULL, '1008', '原后勤处绿化保洁科科长', NULL, '18951368152', NULL, NULL, NULL, NULL, NULL, '历史大病医疗补助', '历史大病医疗补助', '78065.85', '78065.85', NULL, NULL, '1', '2023-12-31 00:00:00', 'historical_import', '2023-12-31 00:00:00', '历史数据导入,默认已审核', '20', '2023', '45452.68', '1.00', '45452.68', '1', '50000.00', '已去世', '08012', '2023-12-31 00:00:00', 'historical_import', '2023-12-31 00:00:00'),
|
||||||
|
('59', 'LSDBYL-2024-001-17139', '4dc27a7fa6d041f9a1e29ad8d36c1b98', '17139', '陆晓东', '男', '1977-02-12 00:00:00', NULL, '研究生教育', '教授', '3003', '信息工程学院', NULL, '13591265296', NULL, NULL, '2021-01-01 00:00:00', '2021', NULL, '历史大病医疗补助', '历史大病医疗补助', '15027.03', '15027.03', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '2513.51', '1.00', '2513.51', '1', '50000.00', NULL, '17139', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('60', 'LSDBYL-2024-002-LP006', '784bc560e7c34c22a7273473d8e0b5c5', 'LP006', '肖斯波', '男', '1969-07-16 00:00:00', NULL, '大学专科毕业', '助理实验师', '3007', '机电工程学院', NULL, '13235116226', NULL, NULL, '2007-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '50099.07', '50099.07', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '23079.26', '1.00', '23079.26', '1', '50000.00', '已多次报销,不增加金额。', 'LP006', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('61', 'LSDBYL-2024-003-18113', 'f20d554cb9df4b29a7e6c3a6aa55ef88', '18113', '臧勇', '男', '1988-08-01 00:00:00', NULL, '硕士研究生毕业', '讲师(高校)', '3007', '机电工程学院', NULL, '13365251386', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '68737.30', '68737.30', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '37989.84', '1.10', '41788.82', '1', '50000.00', '15万无发票,首次报销补助金额增加10%', '18113', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('62', 'LSDBYL-2024-004-23024', '67f62cb5d6914153ba4ec16b588bdc0b', '23024', '刘岩', '男', '1968-03-14 00:00:00', NULL, '大学本科教育', '讲师(高校)', '3014', '教师教育学院', NULL, '13082588106', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '11516.82', '11516.82', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '758.41', '1.00', '758.41', '1', '50000.00', '2020年首次报销,不增加报销金额', '23024', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('63', 'LSDBYL-2024-005-23138', 'a19f981962ca4d8e9362da8413c087da', '23138', '阎乃胜', '男', '1971-05-06 00:00:00', NULL, '博士研究生毕业', '教授', '3014', '教师教育学院', NULL, '19805246559', NULL, NULL, '2021-01-01 00:00:00', '2021', NULL, '历史大病医疗补助', '历史大病医疗补助', '38866.38', '38866.38', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '15319.83', '1.00', '15319.83', '1', '50000.00', NULL, '23138', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('64', 'LSDBYL-2024-006-05043', '883aee9b7c4343bd9472c37569c9b8f1', '05043', '吴雨飞', '男', '1993-03-18 00:00:00', NULL, '硕士研究生毕业', '助教(高校)', '3008', '艺术与传媒 学院', NULL, '19895808660', NULL, NULL, '2021-01-01 00:00:00', '2021', NULL, '历史大病医疗补助', '历史大病医疗补助', '43189.01', '43189.01', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '18232.31', '1.00', '18232.31', '1', '50000.00', NULL, '05043', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('65', 'LSDBYL-2024-007-20001', '2e6a86f0ae764dabaa17ec8e0fdeaccb', '20001', '邓森', '男', '1966-11-21 00:00:00', NULL, '研究生教育', '副教授', '3005', '外国语学院', NULL, '13228719780', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '84645.77', '84645.77', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '50716.62', '0.99', '50000.00', '1', '50000.00', '已多次报销,不增加金额', '20001', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('66', 'LSDBYL-2024-008-20003', '53bfc1a02ca84eddb1e81a17ef0c3bdb', '20003', '于青', '女', '1966-02-07 00:00:00', NULL, '大学本科教育', '副教授', '3005', '外国语学院', NULL, '18800606009', NULL, NULL, '2002-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '12076.20', '12076.20', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '1038.10', '1.10', '1141.91', '1', '50000.00', '首次报销补助金额增加10%', '20003', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('67', 'LSDBYL-2024-009-20013', 'baeb8993d0134a88b07537c6a8d185d6', '20013', '仲荣', '女', '1979-10-02 00:00:00', NULL, '大学本科毕业', '讲师(高校)', '3005', '外国语学院', NULL, '13179565546', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '570851.69', '570851.69', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '439681.35', '0.23', '100000.00', '1', '50000.00', '首次报销补助金额增加10%', '20013', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('68', 'LSDBYL-2024-010-90073', 'd4c4c2d8ef204bc3afe579c2f73d7153', '90073', '赵雪彤', '女', '1993-08-13 00:00:00', NULL, '硕士研究生毕业', '研究实习员(教育管理)', '1006', '人事处', NULL, '15994333742', NULL, NULL, '2022-01-01 00:00:00', '2022', NULL, '历史大病医疗补助', '历史大病医疗补助', '17150.41', '17150.41', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '3575.20', '1.00', '3575.20', '1', '50000.00', NULL, '90073', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('69', 'LSDBYL-2024-011-20006', '78762dbb0291445f9694d6369ee76a68', '20006', '丁后银', '男', '1966-10-13 00:00:00', NULL, '大学本科毕业', '副教授', '2001', '图书馆', NULL, '13815771229', NULL, NULL, '2002-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '10064.08', '10064.08', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '32.04', '1.15', '36.85', '1', '50000.00', '首次报销补助金额增加10%', '20006', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('70', 'LSDBYL-2024-012-22017', '9953f6b10fcb4ebca53740103d848d7f', '22017', '桂媛', '女', '1981-09-30 00:00:00', NULL, '研究生教育', '副教授', '2001', '图书馆', NULL, '13365158080', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '109460.01', '109460.01', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '70568.01', '0.71', '50000.00', '1', '50000.00', '2020年首次报销,不增加金额,已去世。', '22017', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('71', 'LSDBYL-2024-013-25007', '679d6452478c4d4eb1d22fd8cb298419', '25007', '孙莉', '女', '1971-12-04 00:00:00', NULL, '大学本科教育', '助理研究员(教育管理)', '2002', '信息化中心', NULL, '13003492958', NULL, NULL, '2004-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '16005.54', '16005.54', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '3002.77', '1.00', '3002.77', '1', '50000.00', '2022年首次报销,不增加金额。', '25007', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('72', 'LSDBYL-2024-014-05002', '4079bb58c0f047e3a07c4a1bc45a3962', '05002', '韩军', '男', '1966-09-02 00:00:00', NULL, '大学本科毕业', '副研究员(教育管理)', '1014', '发展规划处', NULL, '13101866697', NULL, NULL, '2002-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '15737.34', '15737.34', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '2868.67', '1.10', '3155.54', '1', '50000.00', '首次报销补助金额增加10%', '05002', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('73', 'LSDBYL-2024-015-20035', '2dcae0d013b849288edda867e5969cba', '20035', '佘阿莉', '女', '1974-11-09 00:00:00', NULL, '大学本科教育', '副教授', '3005', '外国语学院', NULL, '13951392220', NULL, NULL, '2002-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '13199.17', '13199.17', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '1599.59', '1.10', '1759.54', '1', '50000.00', '首次报销补助金额增加10%', '20035', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('74', 'LSDBYL-2024-016-23016', 'd3aafe805b294cc286f569c4c1e6d54a', '23016', '徐宜会', '女', '1982-01-02 00:00:00', NULL, '大学本科教育', '副教授', '3002', '数理学院', NULL, '13235135202', NULL, NULL, '2002-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '28891.47', '28891.47', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '9445.74', '1.10', '10390.31', '1', '50000.00', '首次报销补助金额增加10%', '23016', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('75', 'LSDBYL-2024-017-21002', '2540537c75734f229c5ee565e214b357', '21002', '陈胜雷', '男', '1962-03-01 00:00:00', NULL, '大学本科毕业', '高级教师(中学)', '3004', '退休人员', NULL, '13179559668', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '23395.15', '23395.15', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '6697.57', '1.14', '7637.32', '1', '50000.00', '已退休,首次补助金额增加10%', '21002', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('76', 'LSDBYL-2024-018-02002', '16222d012f094bb384fc17115524a1ba', '02002', '武灵芝', '女', '1962-06-10 00:00:00', NULL, '硕士研究生毕业', NULL, '3001', '经济管理学院', NULL, '13013905098', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '历史大病医疗补助', '历史大病医疗补助', '107967.36', '107967.36', NULL, NULL, '1', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00', '2024年历史数据导入,默认已审核', '21', '2024', '69373.89', '1.10', '76311.28', '1', '50000.00', '已退休,首次补助金额增加10%', '02002', '2024-12-31 00:00:00', 'historical_import', '2024-12-31 00:00:00'),
|
||||||
|
('41', 'LSDBYL-2025-001-23138', 'a19f981962ca4d8e9362da8413c087da', '23138', '阎乃胜', '男', '1971-05-06 00:00:00', NULL, '博士研究生毕业', '教授', '3014', '教师教育学院', NULL, '19805246559', NULL, NULL, '2021-01-01 00:00:00', '2021', NULL, '上颌骨囊肿,已手术', '上颌骨囊肿,已手术', '15511.95', '15511.95', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '2755.98', '1.00', '2755.98', '1', '50000.00', NULL, '23138', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('42', 'LSDBYL-2025-002-23058', '9bfa92ddfcaf44b09a5de04dabc355aa', '23058', '朱沛雨', '男', '1969-09-03 00:00:00', NULL, '硕士研究生毕业', '副教授', '3014', '教师教育学院', NULL, '13228705096', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '左侧甲状腺恶性肿瘤,已手术', '左侧甲状腺恶性肿瘤,已手术', '12875.42', '12875.42', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '1437.71', '1.15', '1653.37', '1', '50000.00', NULL, '23058', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('43', 'LSDBYL-2025-003-23118', '349472a1f18b43d18294b5dbd7b1e8fa', '23118', '刘兰', '女', '1988-07-28 00:00:00', NULL, '研究生教育', '讲师(高校)', '3009', '体育学院', NULL, '18761960830', NULL, NULL, '2017-01-01 00:00:00', '2017', NULL, '双侧甲状腺癌,术后修养。', '双侧甲状腺癌,术后修养。', '43683.48', '43683.48', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '18210.09', '1.10', '20031.10', '1', '50000.00', NULL, '23118', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('44', 'LSDBYL-2025-004-23020', '0e6f550059c74b28a8406e3bc3a97407', '23020', '丁辉', '男', '1970-11-13 00:00:00', NULL, '研究生教育', '副教授', '3014', '教师教育学院', NULL, '15851169540', NULL, NULL, '2004-01-01 00:00:00', '2004', NULL, '老年性眼底黄斑变性,已手术', '老年性眼底黄斑变性,已手术', '13366.58', '13366.58', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '1683.29', '1.00', '1683.29', '1', '50000.00', NULL, '23020', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('45', 'LSDBYL-2025-005-23016', 'd3aafe805b294cc286f569c4c1e6d54a', '23016', '徐宜会', '女', '1982-01-02 00:00:00', NULL, '大学本科教育', '副教授', '3002', '数理学院', NULL, '13235135202', NULL, NULL, '2002-01-01 00:00:00', '2002', NULL, '鼻咽粘连手术', '鼻咽粘连手术', '13054.82', '13054.82', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '1527.41', '1.00', '1527.41', '1', '50000.00', NULL, '23016', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('46', 'LSDBYL-2025-006-18113', 'f20d554cb9df4b29a7e6c3a6aa55ef88', '18113', '臧勇', '男', '1988-08-01 00:00:00', NULL, '硕士研究生毕业', '讲师(高校)', '3007', '机电工程学院', NULL, '13365251386', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '2024年底肾脏移植手术,现进行康复治疗', '2024年底肾脏移植手术,现进行康复治疗', '13065.51', '13065.51', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '1532.76', '1.00', '1532.76', '1', '50000.00', NULL, '18113', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('47', 'LSDBYL-2025-007-05043', '883aee9b7c4343bd9472c37569c9b8f1', '05043', '吴雨飞', '男', '1993-03-18 00:00:00', NULL, '硕士研究生毕业', '助教(高校)', '3008', '艺术与传媒学院', NULL, '19895808660', NULL, NULL, '2021-01-01 00:00:00', '2021', NULL, '右肾恶性肿瘤,术后复查', '右肾恶性肿瘤,术后复查', '18655.01', '18655.01', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '4327.51', '1.00', '4327.51', '1', '50000.00', NULL, '05043', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('48', 'LSDBYL-2025-008-20051', 'ac4072ac9c604052ad2fd3bd9aa9a5c6', '20051', '蔡晓燕', '女', '1978-03-21 00:00:00', NULL, '大学本科毕业', '讲师(高校)', '3005', '外国语 学院', NULL, '13235140276', NULL, NULL, '2003-01-01 00:00:00', '2003', NULL, '中度抑郁,已治疗', '中度抑郁,已治疗', '33291.64', '33291.64', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '11974.98', '1.15', '13771.22', '1', '50000.00', NULL, '20051', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('49', 'LSDBYL-2025-009-20013', 'baeb8993d0134a88b07537c6a8d185d6', '20013', '仲荣', '女', '1979-10-02 00:00:00', NULL, '大学本科毕业', '讲师(高校)', '3005', '外国语学院', NULL, '13179565546', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '长期昏迷,无意识状态', '长期昏迷,无意识状态', '87284.43', '87284.43', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '52827.54', '1.00', '50000.00', '1', '50000.00', NULL, '20013', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('50', 'LSDBYL-2025-010-20001', '2e6a86f0ae764dabaa17ec8e0fdeaccb', '20001', '邓森', '男', '1966-11-21 00:00:00', NULL, '研究生教育', '副教授', '3005', '外国语学院', NULL, '13228719780', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '神经元病(渐冻症),长期住院', '神经元病(渐冻症),长期住院', '83092.23', '83092.23', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '49473.78', '1.00', '49473.78', '1', '50000.00', NULL, '20001', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('51', 'LSDBYL-2025-011-06005', '259a15f7a9ec401ea8e5314a5abd0e53', '06005', '朱青梅', '女', '1975-11-12 00:00:00', NULL, '大学本科教育', '研究馆员', '1001', '党办校办', NULL, '18800609935', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '颅内动脉瘤,术后修养', '颅内动脉瘤,术后修养', '25848.00', '25848.00', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '7924.00', '1.15', '9112.60', '1', '50000.00', NULL, '06005', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('52', 'LSDBYL-2025-012-09006', '575bf021e5d3427c83ab567d8d12b1d6', '09006', '叶敬奎', '男', '1975-02-10 00:00:00', NULL, '大学本科教育', '高级工程师', '1008', '后勤处', NULL, '13179564048', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '冠心病支架手术', '冠心病支架手术', '21050.47', '21050.47', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '5525.24', '1.15', '6354.02', '1', '50000.00', NULL, '09006', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('53', 'LSDBYL-2025-013-07004', '8307c61e27cc4015b54fe88cbd19940e', '07004', '李瑚', '男', '1972-11-27 00:00:00', NULL, '大学本科毕业', '高级会计师', '1007', '财务处', NULL, '13082589428', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '焦虑症,长期治疗', '焦虑症,长期治疗', '27365.47', '27365.47', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '8682.74', '1.15', '9985.14', '1', '50000.00', NULL, '07004', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('54', 'LSDBYL-2025-014-32003', '84fb0692ffd042af91b88ded18c9ed72', '32003', '朱乃云', '男', '1976-09-08 00:00:00', NULL, '大学本科教育', '未评职称(高校教师)', '1012', '保卫处', NULL, '13905249756', NULL, NULL, '2002-01-01 00:00:00', '2002', NULL, '心肌梗死,住院治疗', '心肌梗死,住院治疗', '13721.97', '13721.97', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '1860.99', '1.15', '2140.13', '1', '50000.00', NULL, '32003', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('55', 'LSDBYL-2025-015-16001', '7aaa5310c32d46d4947d60a1854cb90e', '16001', '龚永刚', '男', '1963-04-13 00:00:00', NULL, '大学本科毕业', '副教授', '3001', '退休人员', NULL, '18805242819', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '鼻咽恶性肿瘤,已手术,后期治疗中', '鼻咽恶性肿瘤,已手术,后期治疗中', '34069.30', '34069.30', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '12441.58', '1.00', '12441.58', '1', '50000.00', NULL, '16001', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('56', 'LSDBYL-2025-016-02002', '16222d012f094bb384fc17115524a1ba', '02002', '武灵芝', '女', '1962-06-10 00:00:00', NULL, '硕士研究生毕业', NULL, '3001', '经济管理学院', NULL, '13013905098', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '胰腺癌,长期治疗', '胰腺癌,长期治疗', '100521.06', '100521.06', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '63416.85', '1.00', '50000.00', '1', '50000.00', NULL, '02002', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('57', 'LSDBYL-2025-017-12005', '5e1663c95cf041dc99768d3a340ec73b', '12005', '邹艳丽', '女', '1972-05-17 00:00:00', NULL, '大学本科教育', '技师', '2001', '图书馆', NULL, '13218918648', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '肺癌,术后长期治疗', '肺癌,术后长期治疗', '23449.66', '23449.66', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '6724.83', '1.15', '7733.55', '1', '50000.00', NULL, '12005', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00'),
|
||||||
|
('58', 'LSDBYL-2025-018-18002', '5b5985e0cde6425681d1767fa80a0cf7', '18002', '徐频', '女', '1965-08-15 00:00:00', NULL, '大学本科毕业', '经济师', '1011', '工会(妇女联合会)', NULL, '15506100777', NULL, NULL, '2015-01-01 00:00:00', '2015', NULL, '因干燥综合征引起各类并发症', '因干燥综合征引起各类并发症', '26773.48', '26773.48', NULL, NULL, '1', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00', '历史数据导入,默认已审核', '22', '2025', '8386.74', '1.15', '9644.75', '1', '50000.00', NULL, '18002', '2025-12-31 00:00:00', 'historical_import', '2025-12-31 00:00:00');
|
||||||
|
|
||||||
|
INSERT INTO `tb_mutual_apply_subsidy` (`id`, `apply_id`, `ratio_id`, `range_name`, `start_amount`, `end_amount`, `ratio`, `base_amount`, `subsidy_amount`, `sort`, `create_time`) VALUES
|
||||||
|
('1', '1', '45', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('2', '1', '46', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('3', '1', '47', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('4', '1', '48', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('5', '2', '49', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('6', '2', '50', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('7', '2', '51', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('8', '2', '52', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('9', '3', '53', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('10', '3', '54', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('11', '3', '55', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('12', '3', '56', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('13', '4', '57', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('14', '4', '58', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('15', '4', '59', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('16', '4', '60', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('17', '5', '57', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('18', '5', '58', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('19', '5', '59', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('20', '5', '60', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('21', '6', '57', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('22', '6', '58', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('23', '6', '59', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('24', '6', '60', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('25', '7', '61', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('26', '7', '62', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('27', '7', '63', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('28', '7', '64', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('29', '8', '61', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('30', '8', '62', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('31', '8', '63', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('32', '8', '64', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('33', '9', '61', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('34', '9', '62', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('35', '9', '63', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('36', '9', '64', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('37', '10', '61', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('38', '10', '62', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('39', '10', '63', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('40', '10', '64', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('41', '11', '61', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('42', '11', '62', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('43', '11', '63', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('44', '11', '64', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('45', '12', '61', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('46', '12', '62', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('47', '12', '63', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('48', '12', '64', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('49', '13', '65', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('50', '13', '66', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('51', '13', '67', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('52', '13', '68', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('53', '14', '65', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('54', '14', '66', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('55', '14', '67', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('56', '14', '68', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('57', '15', '65', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('58', '15', '66', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('59', '15', '67', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('60', '15', '68', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('61', '16', '65', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('62', '16', '66', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('63', '16', '67', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('64', '16', '68', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('65', '17', '69', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('66', '17', '70', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('67', '17', '71', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('68', '17', '72', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('69', '18', '69', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('70', '18', '70', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('71', '18', '71', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('72', '18', '72', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('73', '19', '69', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('74', '19', '70', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('75', '19', '71', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('76', '19', '72', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('77', '20', '69', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('78', '20', '70', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('79', '20', '71', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('80', '20', '72', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('81', '21', '69', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('82', '21', '70', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('83', '21', '71', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('84', '21', '72', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('85', '22', '69', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('86', '22', '70', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('87', '22', '71', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('88', '22', '72', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('89', '23', '69', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('90', '23', '70', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('91', '23', '71', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('92', '23', '72', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('93', '24', '69', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('94', '24', '70', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('95', '24', '71', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('96', '24', '72', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('97', '25', '69', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('98', '25', '70', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('99', '25', '71', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('100', '25', '72', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('101', '26', '73', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('102', '26', '74', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('103', '26', '75', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('104', '26', '76', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('105', '27', '73', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('106', '27', '74', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('107', '27', '75', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('108', '27', '76', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('109', '28', '73', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('110', '28', '74', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('111', '28', '75', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('112', '28', '76', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('113', '29', '73', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('114', '29', '74', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('115', '29', '75', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('116', '29', '76', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('117', '30', '73', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('118', '30', '74', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('119', '30', '75', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('120', '30', '76', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('121', '31', '73', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('122', '31', '74', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('123', '31', '75', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('124', '31', '76', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('125', '32', '73', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '0.00', '0.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('126', '32', '74', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('127', '32', '75', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('128', '32', '76', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('129', '33', '77', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '12701.24', '6350.62', '1', '2026-09-14 15:38:14'),
|
||||||
|
('130', '33', '78', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('131', '33', '79', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('132', '33', '80', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('133', '34', '77', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('134', '34', '78', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '10000.00', '6000.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('135', '34', '79', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '10000.00', '7000.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('136', '34', '80', '5万元以上补助80%', '50000.00', NULL, '80.00', '17227.73', '13782.18', '4', '2026-09-14 15:38:14'),
|
||||||
|
('137', '35', '77', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '3709.66', '1854.83', '1', '2026-09-14 15:38:14'),
|
||||||
|
('138', '35', '78', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('139', '35', '79', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('140', '35', '80', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('141', '36', '77', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '14678.70', '7339.35', '1', '2026-09-14 15:38:14'),
|
||||||
|
('142', '36', '78', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('143', '36', '79', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('144', '36', '80', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('145', '37', '77', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '12517.76', '6258.88', '1', '2026-09-14 15:38:14'),
|
||||||
|
('146', '37', '78', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('147', '37', '79', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('148', '37', '80', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('149', '38', '77', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('150', '38', '78', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '10000.00', '6000.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('151', '38', '79', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '10000.00', '7000.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('152', '38', '80', '5万元以上补助80%', '50000.00', NULL, '80.00', '5719.40', '4575.52', '4', '2026-09-14 15:38:14'),
|
||||||
|
('153', '39', '77', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '7565.76', '3782.88', '1', '2026-09-14 15:38:14'),
|
||||||
|
('154', '39', '78', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('155', '39', '79', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('156', '39', '80', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('157', '40', '77', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('158', '40', '78', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '10000.00', '6000.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('159', '40', '79', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '10000.00', '7000.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('160', '40', '80', '5万元以上补助80%', '50000.00', NULL, '80.00', '28065.85', '22452.68', '4', '2026-09-14 15:38:14'),
|
||||||
|
('161', '41', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '5511.95', '2755.98', '1', '2026-09-14 15:38:14'),
|
||||||
|
('162', '41', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('163', '41', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('164', '41', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('165', '42', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '2875.42', '1437.71', '1', '2026-09-14 15:38:14'),
|
||||||
|
('166', '42', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('167', '42', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('168', '42', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('169', '43', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 15:38:14'),
|
||||||
|
('170', '43', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '13683.48', '8210.09', '2', '2026-09-14 15:38:14'),
|
||||||
|
('171', '43', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('172', '43', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('173', '44', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '3366.58', '1683.29', '1', '2026-09-14 15:38:14'),
|
||||||
|
('174', '44', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('175', '44', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('176', '44', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('177', '45', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '3054.82', '1527.41', '1', '2026-09-14 15:38:14'),
|
||||||
|
('178', '45', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('179', '45', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('180', '45', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('181', '46', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '3065.51', '1532.76', '1', '2026-09-14 15:38:14'),
|
||||||
|
('182', '46', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('183', '46', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:14'),
|
||||||
|
('184', '46', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:14'),
|
||||||
|
('185', '47', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '8655.01', '4327.51', '1', '2026-09-14 15:38:14'),
|
||||||
|
('186', '47', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:14'),
|
||||||
|
('187', '47', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:15'),
|
||||||
|
('188', '47', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:15'),
|
||||||
|
('189', '48', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 15:38:15'),
|
||||||
|
('190', '48', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '3291.64', '1974.98', '2', '2026-09-14 15:38:15'),
|
||||||
|
('191', '48', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:15'),
|
||||||
|
('192', '48', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:15'),
|
||||||
|
('193', '49', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 15:38:15'),
|
||||||
|
('194', '49', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '10000.00', '6000.00', '2', '2026-09-14 15:38:15'),
|
||||||
|
('195', '49', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '10000.00', '7000.00', '3', '2026-09-14 15:38:15'),
|
||||||
|
('196', '49', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '37284.43', '29827.54', '4', '2026-09-14 15:38:15'),
|
||||||
|
('197', '50', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 15:38:15'),
|
||||||
|
('198', '50', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '10000.00', '6000.00', '2', '2026-09-14 15:38:15'),
|
||||||
|
('199', '50', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '10000.00', '7000.00', '3', '2026-09-14 15:38:15'),
|
||||||
|
('200', '50', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '33092.23', '26473.78', '4', '2026-09-14 15:38:15'),
|
||||||
|
('201', '51', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '15848.00', '7924.00', '1', '2026-09-14 15:38:15'),
|
||||||
|
('202', '51', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:15'),
|
||||||
|
('203', '51', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:15'),
|
||||||
|
('204', '51', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:15'),
|
||||||
|
('205', '52', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '11050.47', '5525.24', '1', '2026-09-14 15:38:15'),
|
||||||
|
('206', '52', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:15'),
|
||||||
|
('207', '52', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:15'),
|
||||||
|
('208', '52', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:15'),
|
||||||
|
('209', '53', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '17365.47', '8682.74', '1', '2026-09-14 15:38:15'),
|
||||||
|
('210', '53', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:15'),
|
||||||
|
('211', '53', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:15'),
|
||||||
|
('212', '53', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:15'),
|
||||||
|
('213', '54', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '3721.97', '1860.99', '1', '2026-09-14 15:38:15'),
|
||||||
|
('214', '54', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:15'),
|
||||||
|
('215', '54', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:15'),
|
||||||
|
('216', '54', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:15'),
|
||||||
|
('217', '55', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 15:38:15'),
|
||||||
|
('218', '55', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '4069.30', '2441.58', '2', '2026-09-14 15:38:15'),
|
||||||
|
('219', '55', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:15'),
|
||||||
|
('220', '55', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:15'),
|
||||||
|
('221', '56', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 15:38:15'),
|
||||||
|
('222', '56', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '10000.00', '6000.00', '2', '2026-09-14 15:38:15'),
|
||||||
|
('223', '56', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '10000.00', '7000.00', '3', '2026-09-14 15:38:15'),
|
||||||
|
('224', '56', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '50521.06', '40416.85', '4', '2026-09-14 15:38:15'),
|
||||||
|
('225', '57', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '13449.66', '6724.83', '1', '2026-09-14 15:38:15'),
|
||||||
|
('226', '57', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:15'),
|
||||||
|
('227', '57', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:15'),
|
||||||
|
('228', '57', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:15'),
|
||||||
|
('229', '58', '85', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '16773.48', '8386.74', '1', '2026-09-14 15:38:15'),
|
||||||
|
('230', '58', '86', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 15:38:15'),
|
||||||
|
('231', '58', '87', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 15:38:15'),
|
||||||
|
('232', '58', '88', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 15:38:15'),
|
||||||
|
('233', '59', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '5027.02', '2513.51', '1', '2026-09-14 18:10:45'),
|
||||||
|
('234', '59', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('235', '59', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('236', '59', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 18:10:45'),
|
||||||
|
('237', '60', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 18:10:45'),
|
||||||
|
('238', '60', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '10000.00', '6000.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('239', '60', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '10000.00', '7000.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('240', '60', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '99.08', '79.26', '4', '2026-09-14 18:10:45'),
|
||||||
|
('241', '61', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 18:10:45'),
|
||||||
|
('242', '61', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '10000.00', '6000.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('243', '61', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '10000.00', '7000.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('244', '61', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '18737.30', '14989.84', '4', '2026-09-14 18:10:45'),
|
||||||
|
('245', '62', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '1516.82', '758.41', '1', '2026-09-14 18:10:45'),
|
||||||
|
('246', '62', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('247', '62', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('248', '62', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 18:10:45'),
|
||||||
|
('249', '63', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 18:10:45'),
|
||||||
|
('250', '63', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '8866.38', '5319.83', '2', '2026-09-14 18:10:45'),
|
||||||
|
('251', '63', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('252', '63', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 18:10:45'),
|
||||||
|
('253', '64', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 18:10:45'),
|
||||||
|
('254', '64', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '10000.00', '6000.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('255', '64', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '3189.01', '2232.31', '3', '2026-09-14 18:10:45'),
|
||||||
|
('256', '64', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 18:10:45'),
|
||||||
|
('257', '65', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 18:10:45'),
|
||||||
|
('258', '65', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '10000.00', '6000.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('259', '65', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '10000.00', '7000.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('260', '65', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '34645.78', '27716.62', '4', '2026-09-14 18:10:45'),
|
||||||
|
('261', '66', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '2076.20', '1038.10', '1', '2026-09-14 18:10:45'),
|
||||||
|
('262', '66', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('263', '66', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('264', '66', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 18:10:45'),
|
||||||
|
('265', '67', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 18:10:45'),
|
||||||
|
('266', '67', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '10000.00', '6000.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('267', '67', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '10000.00', '7000.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('268', '67', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '520851.69', '416681.35', '4', '2026-09-14 18:10:45'),
|
||||||
|
('269', '68', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '7150.40', '3575.20', '1', '2026-09-14 18:10:45'),
|
||||||
|
('270', '68', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('271', '68', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('272', '68', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 18:10:45'),
|
||||||
|
('273', '69', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '64.08', '32.04', '1', '2026-09-14 18:10:45'),
|
||||||
|
('274', '69', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('275', '69', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('276', '69', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 18:10:45'),
|
||||||
|
('277', '70', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 18:10:45'),
|
||||||
|
('278', '70', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '10000.00', '6000.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('279', '70', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '10000.00', '7000.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('280', '70', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '59460.01', '47568.01', '4', '2026-09-14 18:10:45'),
|
||||||
|
('281', '71', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '6005.54', '3002.77', '1', '2026-09-14 18:10:45'),
|
||||||
|
('282', '71', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('283', '71', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('284', '71', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 18:10:45'),
|
||||||
|
('285', '72', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '5737.34', '2868.67', '1', '2026-09-14 18:10:45'),
|
||||||
|
('286', '72', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('287', '72', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('288', '72', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 18:10:45'),
|
||||||
|
('289', '73', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '3199.17', '1599.59', '1', '2026-09-14 18:10:45'),
|
||||||
|
('290', '73', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('291', '73', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('292', '73', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 18:10:45'),
|
||||||
|
('293', '74', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '18891.48', '9445.74', '1', '2026-09-14 18:10:45'),
|
||||||
|
('294', '74', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('295', '74', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('296', '74', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 18:10:45'),
|
||||||
|
('297', '75', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '13395.14', '6697.57', '1', '2026-09-14 18:10:45'),
|
||||||
|
('298', '75', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '0.00', '0.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('299', '75', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '0.00', '0.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('300', '75', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '0.00', '0.00', '4', '2026-09-14 18:10:45'),
|
||||||
|
('301', '76', '81', '1万-3万元之间补助50%', '10000.00', '30000.00', '50.00', '20000.00', '10000.00', '1', '2026-09-14 18:10:45'),
|
||||||
|
('302', '76', '82', '3万-4万元之间补助60%', '30000.00', '40000.00', '60.00', '10000.00', '6000.00', '2', '2026-09-14 18:10:45'),
|
||||||
|
('303', '76', '83', '4万-5万元之间补助70%', '40000.00', '50000.00', '70.00', '10000.00', '7000.00', '3', '2026-09-14 18:10:45'),
|
||||||
|
('304', '76', '84', '5万元以上补助80%', '50000.00', NULL, '80.00', '57967.36', '46373.89', '4', '2026-09-14 18:10:45');
|
||||||
|
|
||||||
|
INSERT INTO `sys_menu` (`id`, `parentId`, `path`, `name`, `aliasName`, `type`, `href`, `target`, `icon`, `showit`, `disabled`, `permission`, `note`, `location`, `hasChildren`, `createdBy`, `createdAt`, `updatedBy`, `updatedAt`, `delFlag`, `processKey`, `platform`, `moduleId`, `isQuickEntry`, `picIcon`, `initialPinyinName`, `isRecommendApp`, `isRecommendService`, `opBy`, `opAt`) VALUES
|
||||||
|
('e5d7a110aa214cdf8505fd0000000004', '', '9908', '医疗互助', 'Medical Mutual Aid', 'menu', '', '', 'heart-o', '1', '0', 'h5.medicalMutualAid', NULL, '992', '1', '', '1789364680000', '', '1789364680000', '0', NULL, 'H5', NULL, '0', NULL, 'y', '0', '0', NULL, NULL),
|
||||||
|
('e5d7a110aa214cdf8505fd0000000005', 'e5d7a110aa214cdf8505fd0000000004', '99080001', '疾病种类', 'Disease Type', 'menu', '/platform/h5/medicalMutualAid/medical/diseaseType', 'data-pjax', '', '1', '0', 'h5.medicalMutualAid.medical.diseaseType', NULL, '1', '0', '', '1789364693000', '', '1789364693000', '0', NULL, 'H5', NULL, '0', NULL, 'j', '0', '0', NULL, NULL),
|
||||||
|
('0ef3682ba8ff463c81795b280e190723', '', '0156', '医疗互助', NULL, 'menu', NULL, NULL, NULL, '1', '0', 'fund', NULL, '526', '1', '17a7f8ad3ee947b4a26175049a9c253d', '1760668091490', '17a7f8ad3ee947b4a26175049a9c253d', '1784769604849', '0', NULL, 'PC', 'd9e3ed1efdec4eb58fc778f85e63a38e', '0', '/platform/sys/file/download?id=2hv0gsulo2iujpiqbv8g3dr5oa', 'y', '0', '0', NULL, NULL),
|
||||||
|
('78f3dbf8b00311f1afd500ff16058ae8', 'db644fbbbc964893b361f0dff09a1835', '01560002', '互助疾病类型', 'Disease Type', 'menu', '/platform/medicalMutualAid/medical/diseaseType', 'data-pjax', '', '1', '0', 'medicalMutualAid.medical.diseaseType', NULL, '541', '0', '17a7f8ad3ee947b4a26175049a9c253d', '1789366438000', '17a7f8ad3ee947b4a26175049a9c253d', '1789366959547', '0', NULL, 'PC', 'd9e3ed1efdec4eb58fc778f85e63a38e', '0', NULL, 'h', '0', '0', NULL, NULL),
|
||||||
|
('78f3fa6ab00311f1afd500ff16058ae8', 'db644fbbbc964893b361f0dff09a1835', '01560003', '互助金申请', 'Mutual Aid Apply', 'menu', '/platform/medicalMutualAid/apply/form', 'data-pjax', '', '1', '0', 'medicalMutualAid.apply.form', NULL, '537', '0', '17a7f8ad3ee947b4a26175049a9c253d', '1789366438000', '17a7f8ad3ee947b4a26175049a9c253d', '1789366950147', '0', NULL, 'PC', 'd9e3ed1efdec4eb58fc778f85e63a38e', '0', NULL, 'h', '0', '0', NULL, NULL),
|
||||||
|
('78f5b764b00311f1afd500ff16058ae8', 'db644fbbbc964893b361f0dff09a1835', '01560004', '我的申请', 'My Apply', 'menu', '/platform/medicalMutualAid/apply/mine', 'data-pjax', '', '1', '0', 'medicalMutualAid.apply.mine', NULL, '538', '0', '17a7f8ad3ee947b4a26175049a9c253d', '1789366438000', '17a7f8ad3ee947b4a26175049a9c253d', '1789366969467', '0', NULL, 'PC', 'd9e3ed1efdec4eb58fc778f85e63a38e', '0', NULL, 'w', '0', '0', NULL, NULL),
|
||||||
|
('78f5d59ab00311f1afd500ff16058ae8', 'db644fbbbc964893b361f0dff09a1835', '01560005', '互助会审核', 'Mutual Aid Audit', 'menu', '/platform/medicalMutualAid/apply/audit', 'data-pjax', '', '1', '0', 'medicalMutualAid.apply.audit', NULL, '539', '0', '17a7f8ad3ee947b4a26175049a9c253d', '1789366438000', '17a7f8ad3ee947b4a26175049a9c253d', '1789366979002', '0', NULL, 'PC', 'd9e3ed1efdec4eb58fc778f85e63a38e', '0', NULL, 'h', '0', '0', NULL, NULL),
|
||||||
|
('78f5f8ebb00311f1afd500ff16058ae8', 'db644fbbbc964893b361f0dff09a1835', '01560006', '互助汇总', 'Mutual Aid Summary', 'menu', '/platform/medicalMutualAid/apply/summary', 'data-pjax', '', '1', '0', 'medicalMutualAid.apply.summary', NULL, '540', '0', '17a7f8ad3ee947b4a26175049a9c253d', '1789366438000', '17a7f8ad3ee947b4a26175049a9c253d', '1789366990667', '0', NULL, 'PC', 'd9e3ed1efdec4eb58fc778f85e63a38e', '0', NULL, 'h', '0', '0', NULL, NULL),
|
||||||
|
('78f61a08b00311f1afd500ff16058ae8', '0ef3682ba8ff463c81795b280e190723', '01560007', '医疗互助配置', 'Medical Mutual Aid Config', 'menu', '/platform/medicalMutualAid/config', 'data-pjax', '', '1', '0', 'medicalMutualAid.config', NULL, '542', '0', '', '1789366438000', '', '1789366438000', '0', NULL, 'PC', NULL, '0', NULL, 'y', '0', '0', NULL, NULL),
|
||||||
|
('db644fbbbc964893b361f0dff09a1835', '0ef3682ba8ff463c81795b280e190723', '01560008', '互助补助', NULL, 'menu', NULL, NULL, NULL, '1', '0', 'medicalMutualAid', NULL, '536', '0', '17a7f8ad3ee947b4a26175049a9c253d', '1789366934322', '17a7f8ad3ee947b4a26175049a9c253d', '1789366934322', '0', NULL, 'PC', 'd9e3ed1efdec4eb58fc778f85e63a38e', '0', NULL, 'h', '0', '0', NULL, NULL);
|
||||||
|
|
||||||
|
-- 菜单权限授权:按角色 code 与菜单 permission 绑定,目标库缺少某个角色时自动跳过。
|
||||||
|
INSERT INTO `sys_role_menu` (`roleId`, `menuId`) SELECT r.`id`, m.`id` FROM `sys_role` r INNER JOIN `sys_menu` m ON m.`permission` = 'fund' WHERE r.`code` = 'DBYLHZGL' AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` rm WHERE rm.`roleId` = r.`id` AND rm.`menuId` = m.`id`);
|
||||||
|
INSERT INTO `sys_role_menu` (`roleId`, `menuId`) SELECT r.`id`, m.`id` FROM `sys_role` r INNER JOIN `sys_menu` m ON m.`permission` = 'fund' WHERE r.`code` = 'MEMBER' AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` rm WHERE rm.`roleId` = r.`id` AND rm.`menuId` = m.`id`);
|
||||||
|
INSERT INTO `sys_role_menu` (`roleId`, `menuId`) SELECT r.`id`, m.`id` FROM `sys_role` r INNER JOIN `sys_menu` m ON m.`permission` = 'fund' WHERE r.`code` = 'SCHOOL_UNION_ADMIN' AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` rm WHERE rm.`roleId` = r.`id` AND rm.`menuId` = m.`id`);
|
||||||
|
INSERT INTO `sys_role_menu` (`roleId`, `menuId`) SELECT r.`id`, m.`id` FROM `sys_role` r INNER JOIN `sys_menu` m ON m.`permission` = 'fund' WHERE r.`code` = 'SYSADMIN' AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` rm WHERE rm.`roleId` = r.`id` AND rm.`menuId` = m.`id`);
|
||||||
|
INSERT INTO `sys_role_menu` (`roleId`, `menuId`) SELECT r.`id`, m.`id` FROM `sys_role` r INNER JOIN `sys_menu` m ON m.`permission` = 'h5.medicalMutualAid' WHERE r.`code` = 'SYSADMIN' AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` rm WHERE rm.`roleId` = r.`id` AND rm.`menuId` = m.`id`);
|
||||||
|
INSERT INTO `sys_role_menu` (`roleId`, `menuId`) SELECT r.`id`, m.`id` FROM `sys_role` r INNER JOIN `sys_menu` m ON m.`permission` = 'h5.medicalMutualAid.medical.diseaseType' WHERE r.`code` = 'SYSADMIN' AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` rm WHERE rm.`roleId` = r.`id` AND rm.`menuId` = m.`id`);
|
||||||
|
INSERT INTO `sys_role_menu` (`roleId`, `menuId`) SELECT r.`id`, m.`id` FROM `sys_role` r INNER JOIN `sys_menu` m ON m.`permission` = 'medicalMutualAid' WHERE r.`code` = 'SYSADMIN' AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` rm WHERE rm.`roleId` = r.`id` AND rm.`menuId` = m.`id`);
|
||||||
|
INSERT INTO `sys_role_menu` (`roleId`, `menuId`) SELECT r.`id`, m.`id` FROM `sys_role` r INNER JOIN `sys_menu` m ON m.`permission` = 'medicalMutualAid.apply.audit' WHERE r.`code` = 'SYSADMIN' AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` rm WHERE rm.`roleId` = r.`id` AND rm.`menuId` = m.`id`);
|
||||||
|
INSERT INTO `sys_role_menu` (`roleId`, `menuId`) SELECT r.`id`, m.`id` FROM `sys_role` r INNER JOIN `sys_menu` m ON m.`permission` = 'medicalMutualAid.apply.form' WHERE r.`code` = 'SYSADMIN' AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` rm WHERE rm.`roleId` = r.`id` AND rm.`menuId` = m.`id`);
|
||||||
|
INSERT INTO `sys_role_menu` (`roleId`, `menuId`) SELECT r.`id`, m.`id` FROM `sys_role` r INNER JOIN `sys_menu` m ON m.`permission` = 'medicalMutualAid.apply.mine' WHERE r.`code` = 'SYSADMIN' AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` rm WHERE rm.`roleId` = r.`id` AND rm.`menuId` = m.`id`);
|
||||||
|
INSERT INTO `sys_role_menu` (`roleId`, `menuId`) SELECT r.`id`, m.`id` FROM `sys_role` r INNER JOIN `sys_menu` m ON m.`permission` = 'medicalMutualAid.apply.summary' WHERE r.`code` = 'SYSADMIN' AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` rm WHERE rm.`roleId` = r.`id` AND rm.`menuId` = m.`id`);
|
||||||
|
INSERT INTO `sys_role_menu` (`roleId`, `menuId`) SELECT r.`id`, m.`id` FROM `sys_role` r INNER JOIN `sys_menu` m ON m.`permission` = 'medicalMutualAid.config' WHERE r.`code` = 'SYSADMIN' AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` rm WHERE rm.`roleId` = r.`id` AND rm.`menuId` = m.`id`);
|
||||||
|
INSERT INTO `sys_role_menu` (`roleId`, `menuId`) SELECT r.`id`, m.`id` FROM `sys_role` r INNER JOIN `sys_menu` m ON m.`permission` = 'medicalMutualAid.medical.diseaseType' WHERE r.`code` = 'SYSADMIN' AND NOT EXISTS (SELECT 1 FROM `sys_role_menu` rm WHERE rm.`roleId` = r.`id` AND rm.`menuId` = m.`id`);
|
||||||
|
|
||||||
|
COMMIT;
|
||||||
|
SET FOREIGN_KEY_CHECKS = 1;
|
||||||
|
|
||||||
|
-- 校验参考:历史申请 76 条,补助明细 304 条,年度配置 11 条。
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row class="query-row" v-if="is_A06 === true || is_sysadmin === true || is_H02 === true">
|
<el-row class="query-row" v-if="is_A06 === true || is_sysadmin === true || is_H02 === true || is_CLUB_MANAGER === true">
|
||||||
<el-col class="query-title hidden-xs-only">会员类型:</el-col>
|
<el-col class="query-title hidden-xs-only">会员类型:</el-col>
|
||||||
<el-col class="query-content">
|
<el-col class="query-content">
|
||||||
<el-tag
|
<el-tag
|
||||||
@@ -53,7 +53,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row class="query-row" v-if="is_A06 === true || is_sysadmin === true || is_H04 === true">
|
<el-row class="query-row" v-if="is_A06 === true || is_sysadmin === true || is_H04 === true || is_CLUB_MANAGER === true">
|
||||||
<el-col class="query-title">教职工类别:</el-col>
|
<el-col class="query-title">教职工类别:</el-col>
|
||||||
<el-col class="query-content">
|
<el-col class="query-content">
|
||||||
<el-tag
|
<el-tag
|
||||||
@@ -92,7 +92,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row class="query-row" v-if="is_A06 === true || is_sysadmin === true || is_H04 === true">
|
<el-row class="query-row" v-if="is_A06 === true || is_sysadmin === true || is_H04 === true || is_CLUB_MANAGER === true">
|
||||||
<el-col class="query-title">在职状态:</el-col>
|
<el-col class="query-title">在职状态:</el-col>
|
||||||
<el-col class="query-content">
|
<el-col class="query-content">
|
||||||
<el-tag
|
<el-tag
|
||||||
@@ -130,7 +130,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row class="query-row" v-if="is_A06 === true || is_sysadmin === true || is_H04 === true">
|
<el-row class="query-row" v-if="is_A06 === true || is_sysadmin === true || is_H04 === true || is_CLUB_MANAGER === true">
|
||||||
<el-col class="query-title">部门查询:</el-col>
|
<el-col class="query-title">部门查询:</el-col>
|
||||||
<el-col class="query-content">
|
<el-col class="query-content">
|
||||||
<el-row :gutter="20">
|
<el-row :gutter="20">
|
||||||
@@ -144,7 +144,7 @@
|
|||||||
flushUnits()
|
flushUnits()
|
||||||
doSearch()
|
doSearch()
|
||||||
"
|
"
|
||||||
:clearable="is_A06 === true || is_sysadmin === true"
|
:clearable="is_A06 === true || is_sysadmin === true || is_CLUB_MANAGER === true"
|
||||||
filterable
|
filterable
|
||||||
placeholder="所属工会"
|
placeholder="所属工会"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
@@ -170,7 +170,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<template v-if="is_A06 === true || is_sysadmin === true">
|
<template v-if="is_A06 === true || is_sysadmin === true || is_CLUB_MANAGER === true">
|
||||||
<!--<el-row class="query-row">
|
<!--<el-row class="query-row">
|
||||||
<el-col class="query-title">活动部门:</el-col>
|
<el-col class="query-title">活动部门:</el-col>
|
||||||
<el-col class="query-content">
|
<el-col class="query-content">
|
||||||
@@ -228,12 +228,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<el-row class="query-row"
|
<el-row class="query-row"
|
||||||
v-if="is_A06===true||is_sysadmin===true||is_H02===true||is_CLUB_PRESIDENT===true">
|
v-if="is_A06===true||is_sysadmin===true||is_H02===true||is_CLUB_MANAGER===true">
|
||||||
<el-col class="query-title">协会:</el-col>
|
<el-col class="query-title">协会:</el-col>
|
||||||
<el-col class="query-content">
|
<el-col class="query-content">
|
||||||
<el-select v-model="pageForm.clubId" placeholder="请选择协会" @change="doSearch"
|
<el-select v-model="pageForm.clubId" placeholder="请选择协会" @change="doSearch"
|
||||||
filterable
|
filterable
|
||||||
:clearable="is_A06===true||is_sysadmin===true||is_CLUB_PRESIDENT===true||(is_H04===true&&is_H02===true)"
|
:clearable="is_A06===true||is_sysadmin===true||is_CLUB_MANAGER===true||(is_H04===true&&is_H02===true)"
|
||||||
style="width: 100%">
|
style="width: 100%">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in clubOptions"
|
v-for="item in clubOptions"
|
||||||
@@ -265,7 +265,7 @@
|
|||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-row class="query-row" v-if="is_A06 === true || is_sysadmin === true || is_H04 === true">
|
<el-row class="query-row" v-if="is_A06 === true || is_sysadmin === true || is_H04 === true || is_CLUB_MANAGER === true">
|
||||||
<el-col class="query-title">年龄范围:</el-col>
|
<el-col class="query-title">年龄范围:</el-col>
|
||||||
<el-col class="query-content">
|
<el-col class="query-content">
|
||||||
<el-row type="flex" style="align-items: center">
|
<el-row type="flex" style="align-items: center">
|
||||||
@@ -317,7 +317,7 @@
|
|||||||
align="center"
|
align="center"
|
||||||
header-align="center"
|
header-align="center"
|
||||||
show-overflow-tooltip
|
show-overflow-tooltip
|
||||||
v-for="column in tableColumns"
|
v-for="column in visibleTableColumns"
|
||||||
></el-table-column>
|
></el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
<el-row class="el-pagination-container">
|
<el-row class="el-pagination-container">
|
||||||
@@ -470,6 +470,9 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
visibleTableColumns() {
|
||||||
|
return this.tableColumns.filter(column => column.prop !== "mobile" || this.is_CLUB_MANAGER !== true)
|
||||||
|
},
|
||||||
is_H10() {
|
is_H10() {
|
||||||
return this.roleData.is_H10
|
return this.roleData.is_H10
|
||||||
},
|
},
|
||||||
@@ -482,8 +485,8 @@ module.exports = {
|
|||||||
is_H02() {
|
is_H02() {
|
||||||
return this.roleData.is_H02
|
return this.roleData.is_H02
|
||||||
},
|
},
|
||||||
is_CLUB_PRESIDENT() {
|
is_CLUB_MANAGER() {
|
||||||
return this.roleData.is_CLUB_PRESIDENT
|
return this.roleData.is_CLUB_MANAGER
|
||||||
},
|
},
|
||||||
is_sysadmin() {
|
is_sysadmin() {
|
||||||
return this.roleData.is_sysadmin
|
return this.roleData.is_sysadmin
|
||||||
@@ -564,7 +567,7 @@ module.exports = {
|
|||||||
},
|
},
|
||||||
async flushUnits() {
|
async flushUnits() {
|
||||||
this.$set(this.pageForm, "unitId", "")
|
this.$set(this.pageForm, "unitId", "")
|
||||||
if (this.is_sysadmin || this.is_A06) {
|
if (this.is_sysadmin || this.is_A06 || this.is_CLUB_MANAGER) {
|
||||||
this.units = await this.$businessTool.listUnit(this.pageForm.unionId)
|
this.units = await this.$businessTool.listUnit(this.pageForm.unionId)
|
||||||
// this.activityUnits = await getActivityUnits(this.pageForm.activityUnionId)
|
// this.activityUnits = await getActivityUnits(this.pageForm.activityUnionId)
|
||||||
} else {
|
} else {
|
||||||
@@ -664,25 +667,22 @@ module.exports = {
|
|||||||
async created() {
|
async created() {
|
||||||
this.listSession()
|
this.listSession()
|
||||||
await this.getRolesAndUnion()
|
await this.getRolesAndUnion()
|
||||||
if (this.is_CLUB_PRESIDENT === true && (this.is_sysadmin || this.is_A06 || this.is_H02) === false) {
|
if (this.is_CLUB_MANAGER === true) {
|
||||||
this.clubOptions = await this.$businessTool.listManageClubByRole()
|
this.clubOptions = await this.$businessTool.listClub()
|
||||||
} else {
|
} else {
|
||||||
this.clubOptions = await this.$businessTool.listCLubByRole()
|
this.clubOptions = await this.$businessTool.listCLubByRole()
|
||||||
}
|
}
|
||||||
if ((this.is_sysadmin || this.is_A06 || this.is_H02 || this.is_CLUB_PRESIDENT) === false && this.is_H04 === true) {
|
if ((this.is_sysadmin || this.is_A06 || this.is_H02 || this.is_CLUB_MANAGER) === false && this.is_H04 === true) {
|
||||||
this.unions = await this.$businessTool.listUnion(this.unionid)
|
this.unions = await this.$businessTool.listUnion(this.unionid)
|
||||||
this.$set(this.pageForm, "unionId", this.unions[0].id)
|
this.$set(this.pageForm, "unionId", this.unions[0].id)
|
||||||
} else {
|
} else {
|
||||||
this.unions = await this.$businessTool.listUnion()
|
this.unions = await this.$businessTool.listUnion()
|
||||||
}
|
}
|
||||||
if (this.is_H04 === false && this.is_H02 === true) {
|
if (this.is_H04 === false && this.is_H02 === true && this.is_CLUB_MANAGER !== true) {
|
||||||
if (this.clubOptions.length > 0) {
|
if (this.clubOptions.length > 0) {
|
||||||
this.$set(this.pageForm, "clubId", this.clubOptions[0].id)
|
this.$set(this.pageForm, "clubId", this.clubOptions[0].id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.is_H04 === false && this.is_H02 === false && this.is_CLUB_PRESIDENT === true && this.clubOptions.length === 1) {
|
|
||||||
this.$set(this.pageForm, "clubId", this.clubOptions[0].id)
|
|
||||||
}
|
|
||||||
await this.flushUnits()
|
await this.flushUnits()
|
||||||
await this.getActivityGroup()
|
await this.getActivityGroup()
|
||||||
this.personTypeOptions = await this.$businessTool.getDictOptions("USER_PERSON_TYPE")
|
this.personTypeOptions = await this.$businessTool.getDictOptions("USER_PERSON_TYPE")
|
||||||
|
|||||||
@@ -2,6 +2,9 @@
|
|||||||
layout("/layouts/v4/baseLayout.html"){
|
layout("/layouts/v4/baseLayout.html"){
|
||||||
#-->
|
#-->
|
||||||
|
|
||||||
|
<link href="${base!}/assets/platform/plugins/vue-cron/vcrontab.css" rel="stylesheet"/>
|
||||||
|
<script src="${base!}/assets/platform/plugins/vue-cron/vcrontab.umd.min.js"></script>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
.sub-app-container {
|
.sub-app-container {
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
|||||||
@@ -84,7 +84,7 @@
|
|||||||
vant.ActionSheet.props.lazyRender.default = false
|
vant.ActionSheet.props.lazyRender.default = false
|
||||||
|
|
||||||
function toggleShowBar() {
|
function toggleShowBar() {
|
||||||
if (["/platform/h5/home", "/platform/home"].includes(window.location.pathname)) {
|
if (["/platform/h5", "/platform/h5/", "/platform/h5/home", "/platform/home"].includes(window.location.pathname)) {
|
||||||
document.querySelector("body>.main-page").classList.add("page-showtabbar")
|
document.querySelector("body>.main-page").classList.add("page-showtabbar")
|
||||||
} else {
|
} else {
|
||||||
document.querySelector("body>.main-page").classList.remove("page-showtabbar")
|
document.querySelector("body>.main-page").classList.remove("page-showtabbar")
|
||||||
|
|||||||
@@ -73,7 +73,17 @@ layout("/layouts/v4/baseLayout.html"){
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="" style="padding-bottom: 20px">
|
<div class="" style="padding-bottom: 20px">
|
||||||
<user></user>
|
<!-- 用户资料只在 HTML 中由 Beetl 渲染,避免与 JS 模板字符串的插值语法冲突。 -->
|
||||||
|
<user
|
||||||
|
user-name="${@auth.getPrincipalProperty('username'),escape}"
|
||||||
|
login-name="${@auth.getPrincipalProperty('loginname'),escape}"
|
||||||
|
<!--#if(!isEmpty(@auth.getPrincipalProperty('unit'))){#-->
|
||||||
|
unit-name="${@auth.getPrincipalProperty('unit').getName(),escape}"
|
||||||
|
<!--#}#-->
|
||||||
|
<!--#if(!isEmpty(@auth.getPrincipalProperty('union'))){#-->
|
||||||
|
union-name="${@auth.getPrincipalProperty('union').getName(),escape}"
|
||||||
|
<!--#}#-->
|
||||||
|
></user>
|
||||||
|
|
||||||
<div class="home-grid">
|
<div class="home-grid">
|
||||||
<div class="act-card">
|
<div class="act-card">
|
||||||
|
|||||||
@@ -6,14 +6,14 @@ const user = {
|
|||||||
<!-- 左侧:用户信息卡片 -->
|
<!-- 左侧:用户信息卡片 -->
|
||||||
<div class="user-info-card">
|
<div class="user-info-card">
|
||||||
<div class="user-details">
|
<div class="user-details">
|
||||||
<div class="user-name">${@auth.getPrincipalProperty('username')}</div>
|
<div class="user-name">{{ userName }}</div>
|
||||||
|
|
||||||
<div class="user-meta-grid">
|
<div class="user-meta-grid">
|
||||||
<div class="meta-row">
|
<div class="meta-row">
|
||||||
<span class="meta-icon">🆔</span>
|
<span class="meta-icon">🆔</span>
|
||||||
<div>
|
<div>
|
||||||
<span class="meta-label">工号</span>
|
<span class="meta-label">工号</span>
|
||||||
<span class="meta-value">${@auth.getPrincipalProperty('loginname')}</span>
|
<span class="meta-value">{{ loginName }}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -22,14 +22,7 @@ const user = {
|
|||||||
<div>
|
<div>
|
||||||
<span class="meta-label">单位信息</span>
|
<span class="meta-label">单位信息</span>
|
||||||
<span class="meta-value">
|
<span class="meta-value">
|
||||||
<!--#if(!isEmpty(@auth.getPrincipalProperty('unit'))){#-->
|
{{ unitName }} ({{ unionName }})
|
||||||
${@auth.getPrincipalProperty('unit').getName()}
|
|
||||||
<!--#}#-->
|
|
||||||
(
|
|
||||||
<!--#if(!isEmpty(@auth.getPrincipalProperty('union'))){#-->
|
|
||||||
${@auth.getPrincipalProperty('union').getName()}
|
|
||||||
<!--#}#-->
|
|
||||||
)
|
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -113,6 +106,13 @@ const user = {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`,
|
`,
|
||||||
|
// 用户资料由首页经过 HTML 转义后传入;缺少单位或工会时使用空字符串。
|
||||||
|
props: {
|
||||||
|
userName: { type: String, default: '' },
|
||||||
|
loginName: { type: String, default: '' },
|
||||||
|
unitName: { type: String, default: '' },
|
||||||
|
unionName: { type: String, default: '' }
|
||||||
|
},
|
||||||
mixins: [initTableMixins],
|
mixins: [initTableMixins],
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
@@ -251,14 +251,19 @@ const user = {
|
|||||||
console.log('切换到:', tab.name);
|
console.log('切换到:', tab.name);
|
||||||
},
|
},
|
||||||
// 处理任务
|
// 处理任务
|
||||||
async openView(task) {
|
openView(task) {
|
||||||
console.log(task)
|
|
||||||
const {taskId, taskKey, taskState, instanceId, businessNo, formKey} = task
|
const {taskId, taskKey, taskState, instanceId, businessNo, formKey} = task
|
||||||
if (!formKey) {
|
if (!formKey) {
|
||||||
this.$message.warning("当前流程没有配置地址")
|
this.$message.warning("当前流程没有配置地址")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
window.open(formKey + "?taskId=" + taskId + "bizId=" + businessNo + "taskKey=" + taskKey + "&tab=" + this.activeTab)
|
// 保留节点地址已有参数,分别传递任务、业务记录和页签,避免参数粘连导致无法定位申请。
|
||||||
|
const targetUrl = new URL(formKey, window.location.origin)
|
||||||
|
if (taskId) targetUrl.searchParams.set("taskId", taskId)
|
||||||
|
if (businessNo) targetUrl.searchParams.set("bizId", businessNo)
|
||||||
|
if (taskKey) targetUrl.searchParams.set("taskKey", taskKey)
|
||||||
|
targetUrl.searchParams.set("tab", this.activeTab)
|
||||||
|
window.open(targetUrl.href)
|
||||||
},
|
},
|
||||||
getRoleNames() {
|
getRoleNames() {
|
||||||
$.post("/platform/sys/role/getRoleNames").then(res => {
|
$.post("/platform/sys/role/getRoleNames").then(res => {
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ const branchUnionManage = {
|
|||||||
<el-input placeholder="请输入分工会名称" clearable size="small" style="width: 300px" v-model="pageForm.searchKeyword"></el-input>
|
<el-input placeholder="请输入分工会名称" clearable size="small" style="width: 300px" v-model="pageForm.searchKeyword"></el-input>
|
||||||
|
|
||||||
<el-button type="primary" class="ml5" size="small" icon="el-icon-search" @click="doSearch"></el-button>
|
<el-button type="primary" class="ml5" size="small" icon="el-icon-search" @click="doSearch"></el-button>
|
||||||
<el-button @click="openAudit" icon="el-icon-s-check" type="primary" style="margin-left: auto" size="small">基层干部审核</el-button>
|
<el-button @click="exportCadre" icon="el-icon-download" type="primary" style="margin-left: auto" size="small">导出基层干部</el-button>
|
||||||
|
<el-button @click="openAudit" icon="el-icon-s-check" type="primary" size="small">基层干部审核</el-button>
|
||||||
<el-button @click="openAdd" icon="ti-plus" type="primary" size="small" v-if="$auth.hasPermission('sys.manager.union.add')">新建分工会</el-button>
|
<el-button @click="openAdd" icon="ti-plus" type="primary" size="small" v-if="$auth.hasPermission('sys.manager.union.add')">新建分工会</el-button>
|
||||||
</el-row>
|
</el-row>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -79,6 +80,10 @@ const branchUnionManage = {
|
|||||||
openAudit() {
|
openAudit() {
|
||||||
this.$emit('union-cadre')
|
this.$emit('union-cadre')
|
||||||
},
|
},
|
||||||
|
// 导出基层干部
|
||||||
|
exportCadre() {
|
||||||
|
this.$downLoad("/platform/sys/union/exportCadre")
|
||||||
|
},
|
||||||
openAdd() {
|
openAdd() {
|
||||||
this.dialogFormVisible = true
|
this.dialogFormVisible = true
|
||||||
this.$nextTick(() => {
|
this.$nextTick(() => {
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ const branchUnionUserManage = {
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="userId" label="人员">
|
<el-form-item prop="userId" label="人员">
|
||||||
<user-select
|
<user-select
|
||||||
|
:key="union_id"
|
||||||
v-model="formData.userId"
|
v-model="formData.userId"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
api="/platform/sys/union/listUnion"
|
api="/platform/sys/union/listUnion"
|
||||||
@@ -86,6 +87,7 @@ const branchUnionUserManage = {
|
|||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
union_id(val) {
|
union_id(val) {
|
||||||
|
this.$set(this.formData, "userId", "")
|
||||||
this.doSearch()
|
this.doSearch()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -60,9 +60,9 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
|
|||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="12" v-if="activity_type===40003">
|
<el-col :span="12" v-if="activity_type===40003">
|
||||||
<el-form-item prop="clubId" label="活动所属协会">
|
<el-form-item prop="clubId" label="活动所属俱乐部">
|
||||||
<el-select v-model="formData.clubId" clearable filterable
|
<el-select v-model="formData.clubId" clearable filterable
|
||||||
placeholder="请选择活动所属协会"
|
placeholder="请选择活动所属俱乐部"
|
||||||
style="width: 100%">
|
style="width: 100%">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in clubOptions"
|
v-for="item in clubOptions"
|
||||||
@@ -652,7 +652,7 @@ const ACTIVITY_CULTURE_APPLY_ACTIVITY = {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (!this.formData.clubId && this.activity_type === 40003) {
|
if (!this.formData.clubId && this.activity_type === 40003) {
|
||||||
this.$message.error("请选择活动所属协会")
|
this.$message.error("请选择活动所属俱乐部")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.$confirm("您确定保存吗?", "提示", {
|
this.$confirm("您确定保存吗?", "提示", {
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ const ACTIVITY_CULTURE_INFO_ACTIVITY = {
|
|||||||
{{ viewData.activity_type === 40001 ? '校工会活动' : viewData.activity_type === 40002 ?
|
{{ viewData.activity_type === 40001 ? '校工会活动' : viewData.activity_type === 40002 ?
|
||||||
'分工会活动'
|
'分工会活动'
|
||||||
:
|
:
|
||||||
'协会/社团活动' }}
|
'俱乐部活动' }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<!-- <el-descriptions-item label="活动计划时间">-->
|
<!-- <el-descriptions-item label="活动计划时间">-->
|
||||||
<!-- {{ viewData.startPlannedDate + ' - ' + viewData.endPlannedDate }}-->
|
<!-- {{ viewData.startPlannedDate + ' - ' + viewData.endPlannedDate }}-->
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ const singleSignUp = {
|
|||||||
<el-descriptions-item label="活动类型" :span="2">
|
<el-descriptions-item label="活动类型" :span="2">
|
||||||
{{ viewData.activity_type === 40001 ? '校工会活动' : viewData.activity_type === 40002 ? '分工会活动'
|
{{ viewData.activity_type === 40001 ? '校工会活动' : viewData.activity_type === 40002 ? '分工会活动'
|
||||||
:
|
:
|
||||||
'协会/社团活动' }}
|
'俱乐部活动' }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<!-- <el-descriptions-item label="活动计划时间">-->
|
<!-- <el-descriptions-item label="活动计划时间">-->
|
||||||
<!-- {{ viewData.startPlannedDate + ' - ' + viewData.endPlannedDate }}-->
|
<!-- {{ viewData.startPlannedDate + ' - ' + viewData.endPlannedDate }}-->
|
||||||
|
|||||||
+3
-3
@@ -28,9 +28,9 @@
|
|||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<template v-if="formData.activityType == 'CLUB'">
|
<template v-if="formData.activityType == 'CLUB'">
|
||||||
<el-descriptions-item label="申请协会">
|
<el-descriptions-item label="申请俱乐部">
|
||||||
<el-form-item prop="clubId" label="申请协会">
|
<el-form-item prop="clubId" label="申请俱乐部">
|
||||||
<el-select v-model="formData.clubId" placeholder="请选择协会"
|
<el-select v-model="formData.clubId" placeholder="请选择俱乐部"
|
||||||
@change="setDeclareUnitName" style="width: 100%">
|
@change="setDeclareUnitName" style="width: 100%">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in clubList"
|
v-for="item in clubList"
|
||||||
|
|||||||
+7
-7
@@ -43,9 +43,9 @@ layout("/layouts/platform.html"){
|
|||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
<template v-if="formData.activityType == 'CLUB'">
|
<template v-if="formData.activityType == 'CLUB'">
|
||||||
<el-descriptions-item label="申请协会">
|
<el-descriptions-item label="申请俱乐部">
|
||||||
<el-form-item prop="clubId" label="申请协会">
|
<el-form-item prop="clubId" label="申请俱乐部">
|
||||||
<el-select v-model="formData.clubId" placeholder="请选择协会"
|
<el-select v-model="formData.clubId" placeholder="请选择俱乐部"
|
||||||
@change="setDeclareUnitName" style="width: 100%">
|
@change="setDeclareUnitName" style="width: 100%">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in clubList"
|
v-for="item in clubList"
|
||||||
@@ -332,7 +332,7 @@ layout("/layouts/platform.html"){
|
|||||||
const club = this.clubList.find(v => v.id === val)
|
const club = this.clubList.find(v => v.id === val)
|
||||||
this.$set(this.formData, "declareUnitName", club ? club.clubName : null)
|
this.$set(this.formData, "declareUnitName", club ? club.clubName : null)
|
||||||
|
|
||||||
// 清空当前预算选择,因为社团变更会影响可选的预算
|
// 清空当前预算选择,因为俱乐部变更会影响可选的预算
|
||||||
this.$set(this.formData, "deductionBudgetId", null)
|
this.$set(this.formData, "deductionBudgetId", null)
|
||||||
|
|
||||||
// 获取新的预算数据
|
// 获取新的预算数据
|
||||||
@@ -346,7 +346,7 @@ layout("/layouts/platform.html"){
|
|||||||
this.$set(this.formData, "declareUnitName", this.$store.state.user.union.name)
|
this.$set(this.formData, "declareUnitName", this.$store.state.user.union.name)
|
||||||
this.$set(this.formData, "unionId", this.$store.state.user.union.id)
|
this.$set(this.formData, "unionId", this.$store.state.user.union.id)
|
||||||
} else if (val === "CLUB") {
|
} else if (val === "CLUB") {
|
||||||
// 当活动类型变为社团时,清空已选择的预算
|
// 当活动类型变为俱乐部时,清空已选择的预算
|
||||||
this.$set(this.formData, "deductionBudgetId", null)
|
this.$set(this.formData, "deductionBudgetId", null)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -403,7 +403,7 @@ layout("/layouts/platform.html"){
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
if (this.$auth.hasRoleOr(["CLUB_PRESIDENT"])) {
|
if (this.$auth.hasRoleOr(["CLUB_MANAGER"])) {
|
||||||
this.activityDeclareReimbursementList.map(v => {
|
this.activityDeclareReimbursementList.map(v => {
|
||||||
if (["CLUB"].includes(v.name)) {
|
if (["CLUB"].includes(v.name)) {
|
||||||
activityDeclareReimbursementList.push(v)
|
activityDeclareReimbursementList.push(v)
|
||||||
@@ -430,7 +430,7 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
async created() {
|
async created() {
|
||||||
this.init()
|
this.init()
|
||||||
//社团查询
|
//俱乐部查询
|
||||||
this.$businessTool.listCLubByRole().then((res) => (this.clubList = res))
|
this.$businessTool.listCLubByRole().then((res) => (this.clubList = res))
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
<el-descriptions-item label="活动类型">{{ getActivityTypeName(viewData.activityType) }}</el-descriptions-item>
|
<el-descriptions-item label="活动类型">{{ getActivityTypeName(viewData.activityType) }}</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}</el-descriptions-item>
|
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}</el-descriptions-item>
|
||||||
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请协会' : '申请单位'">{{ viewData.declareUnitName }}</el-descriptions-item>
|
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请俱乐部' : '申请单位'">{{ viewData.declareUnitName }}</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="联系方式">{{ viewData.mobile }}</el-descriptions-item>
|
<el-descriptions-item label="联系方式">{{ viewData.mobile }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="申请时间">{{ viewData.applyTime }}</el-descriptions-item>
|
<el-descriptions-item label="申请时间">{{ viewData.applyTime }}</el-descriptions-item>
|
||||||
|
|||||||
+1
-1
@@ -135,7 +135,7 @@ layout("/layouts/platform.html"){
|
|||||||
{ prop: "mobile", label: "联系方式"},
|
{ prop: "mobile", label: "联系方式"},
|
||||||
{ prop: "activityName", label: "活动名称"},
|
{ prop: "activityName", label: "活动名称"},
|
||||||
{ prop: "activityType", label: "活动类型"},
|
{ prop: "activityType", label: "活动类型"},
|
||||||
{ prop: "declareUnitName", label: "申报单位/协会", sortable: true },
|
{ prop: "declareUnitName", label: "申报单位/俱乐部", sortable: true },
|
||||||
{ prop: "activityNumber", label: "活动人数", sortable: true },
|
{ prop: "activityNumber", label: "活动人数", sortable: true },
|
||||||
{ prop: "applyTime", label: "申报时间", sortable: true },
|
{ prop: "applyTime", label: "申报时间", sortable: true },
|
||||||
{ prop: "curTaskName", label: "当前节点"},
|
{ prop: "curTaskName", label: "当前节点"},
|
||||||
|
|||||||
+3
-3
@@ -19,8 +19,8 @@ layout("/layouts/platform.html"){
|
|||||||
<el-input placeholder="请输入申请人工号或姓名" clearable v-model="pageForm.searchKeyword"></el-input>
|
<el-input placeholder="请输入申请人工号或姓名" clearable v-model="pageForm.searchKeyword"></el-input>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
<search-item label="所属协会">
|
<search-item label="所属俱乐部">
|
||||||
<el-select clearable filterable placeholder="所属协会"
|
<el-select clearable filterable placeholder="所属俱乐部"
|
||||||
style="width: 100%;" v-model="pageForm.clubId">
|
style="width: 100%;" v-model="pageForm.clubId">
|
||||||
<el-option :label="item.clubName" :value="item.id"
|
<el-option :label="item.clubName" :value="item.id"
|
||||||
v-for="item in clubs"></el-option>
|
v-for="item in clubs"></el-option>
|
||||||
@@ -122,7 +122,7 @@ layout("/layouts/platform.html"){
|
|||||||
{ prop: "mobile", label: "联系方式"},
|
{ prop: "mobile", label: "联系方式"},
|
||||||
{ prop: "activityName", label: "活动名称"},
|
{ prop: "activityName", label: "活动名称"},
|
||||||
{ prop: "activityType", label: "活动类型"},
|
{ prop: "activityType", label: "活动类型"},
|
||||||
{ prop: "declareUnitName", label: "申报单位/协会", sortable: true },
|
{ prop: "declareUnitName", label: "申报单位/俱乐部", sortable: true },
|
||||||
{ prop: "activityNumber", label: "活动人数", sortable: true },
|
{ prop: "activityNumber", label: "活动人数", sortable: true },
|
||||||
{ prop: "applyTime", label: "申报时间", sortable: true },
|
{ prop: "applyTime", label: "申报时间", sortable: true },
|
||||||
{ prop: "curTaskName", label: "当前节点"},
|
{ prop: "curTaskName", label: "当前节点"},
|
||||||
|
|||||||
+1
-1
@@ -11,7 +11,7 @@ const INFO = {
|
|||||||
|
|
||||||
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}
|
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请协会' : '申请单位'">{{
|
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请俱乐部' : '申请单位'">{{
|
||||||
viewData.declareUnitName }}
|
viewData.declareUnitName }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -40,9 +40,9 @@ layout("/layouts/platform.html"){
|
|||||||
</search-item>
|
</search-item>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, CLUB_MANAGER, CLUB_PRESIDENT')">
|
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, CLUB_MANAGER')">
|
||||||
<search-item label="所属协会">
|
<search-item label="所属俱乐部">
|
||||||
<el-select clearable filterable placeholder="所属协会"
|
<el-select clearable filterable placeholder="所属俱乐部"
|
||||||
style="width: 100%;" v-model="pageForm.clubId">
|
style="width: 100%;" v-model="pageForm.clubId">
|
||||||
<el-option :label="item.clubName" :value="item.id"
|
<el-option :label="item.clubName" :value="item.id"
|
||||||
v-for="item in clubs"></el-option>
|
v-for="item in clubs"></el-option>
|
||||||
@@ -128,7 +128,7 @@ layout("/layouts/platform.html"){
|
|||||||
{ prop: "mobile", label: "联系方式"},
|
{ prop: "mobile", label: "联系方式"},
|
||||||
{ prop: "activityName", label: "活动名称"},
|
{ prop: "activityName", label: "活动名称"},
|
||||||
{ prop: "activityType", label: "活动类型"},
|
{ prop: "activityType", label: "活动类型"},
|
||||||
{ prop: "declareUnitName", label: "申报单位/协会", sortable: true },
|
{ prop: "declareUnitName", label: "申报单位/俱乐部", sortable: true },
|
||||||
{ prop: "activityNumber", label: "活动人数", sortable: true },
|
{ prop: "activityNumber", label: "活动人数", sortable: true },
|
||||||
{ prop: "applyTime", label: "申报时间", sortable: true },
|
{ prop: "applyTime", label: "申报时间", sortable: true },
|
||||||
{ prop: "taskName", label: "当前节点"},
|
{ prop: "taskName", label: "当前节点"},
|
||||||
@@ -206,7 +206,7 @@ layout("/layouts/platform.html"){
|
|||||||
this.unions = await this.$businessTool.listUnion()
|
this.unions = await this.$businessTool.listUnion()
|
||||||
this.clubs = await this.$businessTool.listClub()
|
this.clubs = await this.$businessTool.listClub()
|
||||||
} else {
|
} else {
|
||||||
if (this.$auth.hasRoleOr('CLUB_MANAGER, CLUB_PRESIDENT')) {
|
if (this.$auth.hasRoleOr('CLUB_MANAGER')) {
|
||||||
this.clubs = await this.$businessTool.listClub()
|
this.clubs = await this.$businessTool.listClub()
|
||||||
}
|
}
|
||||||
this.unions = await this.$businessTool.listUnion(this.$store.state.user.union.id)
|
this.unions = await this.$businessTool.listUnion(this.$store.state.user.union.id)
|
||||||
|
|||||||
+3
-3
@@ -30,8 +30,8 @@ layout("/layouts/platform.html"){
|
|||||||
v-for="item in unions"></el-option>
|
v-for="item in unions"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="所属协会">
|
<search-item label="所属俱乐部">
|
||||||
<el-select clearable filterable placeholder="所属协会"
|
<el-select clearable filterable placeholder="所属俱乐部"
|
||||||
style="width: 100%;" v-model="pageForm.clubId">
|
style="width: 100%;" v-model="pageForm.clubId">
|
||||||
<el-option :label="item.clubName" :value="item.id"
|
<el-option :label="item.clubName" :value="item.id"
|
||||||
v-for="item in clubs"></el-option>
|
v-for="item in clubs"></el-option>
|
||||||
@@ -142,7 +142,7 @@ layout("/layouts/platform.html"){
|
|||||||
{ prop: "mobile", label: "联系方式"},
|
{ prop: "mobile", label: "联系方式"},
|
||||||
{ prop: "activityName", label: "活动名称"},
|
{ prop: "activityName", label: "活动名称"},
|
||||||
{ prop: "activityType", label: "活动类型"},
|
{ prop: "activityType", label: "活动类型"},
|
||||||
{ prop: "declareUnitName", label: "申报单位/协会", sortable: true },
|
{ prop: "declareUnitName", label: "申报单位/俱乐部", sortable: true },
|
||||||
{ prop: "activityNumber", label: "活动人数", sortable: true },
|
{ prop: "activityNumber", label: "活动人数", sortable: true },
|
||||||
{ prop: "applyTime", label: "申报时间", sortable: true },
|
{ prop: "applyTime", label: "申报时间", sortable: true },
|
||||||
{ prop: "curTaskName", label: "当前节点"},
|
{ prop: "curTaskName", label: "当前节点"},
|
||||||
|
|||||||
+3
-3
@@ -30,8 +30,8 @@ layout("/layouts/platform.html"){
|
|||||||
v-for="item in unions"></el-option>
|
v-for="item in unions"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item label="所属协会">
|
<search-item label="所属俱乐部">
|
||||||
<el-select clearable filterable placeholder="所属协会"
|
<el-select clearable filterable placeholder="所属俱乐部"
|
||||||
style="width: 100%;" v-model="pageForm.clubId">
|
style="width: 100%;" v-model="pageForm.clubId">
|
||||||
<el-option :label="item.clubName" :value="item.id"
|
<el-option :label="item.clubName" :value="item.id"
|
||||||
v-for="item in clubs"></el-option>
|
v-for="item in clubs"></el-option>
|
||||||
@@ -142,7 +142,7 @@ layout("/layouts/platform.html"){
|
|||||||
{ prop: "mobile", label: "联系方式"},
|
{ prop: "mobile", label: "联系方式"},
|
||||||
{ prop: "activityName", label: "活动名称"},
|
{ prop: "activityName", label: "活动名称"},
|
||||||
{ prop: "activityType", label: "活动类型"},
|
{ prop: "activityType", label: "活动类型"},
|
||||||
{ prop: "declareUnitName", label: "申报单位/协会", sortable: true },
|
{ prop: "declareUnitName", label: "申报单位/俱乐部", sortable: true },
|
||||||
{ prop: "activityNumber", label: "活动人数", sortable: true },
|
{ prop: "activityNumber", label: "活动人数", sortable: true },
|
||||||
{ prop: "applyTime", label: "申报时间", sortable: true },
|
{ prop: "applyTime", label: "申报时间", sortable: true },
|
||||||
{ prop: "curTaskName", label: "当前节点"},
|
{ prop: "curTaskName", label: "当前节点"},
|
||||||
|
|||||||
+5
-5
@@ -36,12 +36,12 @@ layout("/layouts/platform.html"){
|
|||||||
</el-radio-group>
|
</el-radio-group>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item label="所属协会"
|
<el-descriptions-item label="所属俱乐部"
|
||||||
v-if="['ACTIVITY_BUDGET_TYPE_THREE'].includes(formData.outlayManageSource)">
|
v-if="['ACTIVITY_BUDGET_TYPE_THREE'].includes(formData.outlayManageSource)">
|
||||||
<el-form-item label="所属协会" prop="clubId"
|
<el-form-item label="所属俱乐部" prop="clubId"
|
||||||
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
:rules="[{required:true,message:'必填',trigger:['change','blur']}]">
|
||||||
<el-select
|
<el-select
|
||||||
placeholder="请选择协会"
|
placeholder="请选择俱乐部"
|
||||||
style="width: 100%;" v-model="formData.clubId"
|
style="width: 100%;" v-model="formData.clubId"
|
||||||
@change="clubIdChange">
|
@change="clubIdChange">
|
||||||
<el-option
|
<el-option
|
||||||
@@ -379,7 +379,7 @@ layout("/layouts/platform.html"){
|
|||||||
hasClubRole() {
|
hasClubRole() {
|
||||||
return this.$auth.hasRoleOr([
|
return this.$auth.hasRoleOr([
|
||||||
"CLUB_REIMBURSEMENT_MANAGER",
|
"CLUB_REIMBURSEMENT_MANAGER",
|
||||||
"CLUB_PRESIDENT"
|
"CLUB_MANAGER"
|
||||||
]);
|
]);
|
||||||
},
|
},
|
||||||
|
|
||||||
@@ -606,7 +606,7 @@ layout("/layouts/platform.html"){
|
|||||||
budgetTypeCloseOption.push(typeTwoOption)
|
budgetTypeCloseOption.push(typeTwoOption)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.$auth.hasRoleOr(["CLUB_REIMBURSEMENT_MANAGER", "CLUB_PRESIDENT"])) {
|
if (this.$auth.hasRoleOr(["CLUB_REIMBURSEMENT_MANAGER", "CLUB_MANAGER"])) {
|
||||||
const typeThreeOption = resp.find(v => v.code === "ACTIVITY_BUDGET_TYPE_THREE")
|
const typeThreeOption = resp.find(v => v.code === "ACTIVITY_BUDGET_TYPE_THREE")
|
||||||
if (typeThreeOption && !budgetTypeCloseOption.some(existing => existing.code === "ACTIVITY_BUDGET_TYPE_THREE")) {
|
if (typeThreeOption && !budgetTypeCloseOption.some(existing => existing.code === "ACTIVITY_BUDGET_TYPE_THREE")) {
|
||||||
budgetTypeCloseOption.push(typeThreeOption)
|
budgetTypeCloseOption.push(typeThreeOption)
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
<el-descriptions-item label="活动类型">{{ getActivityTypeName(viewData.activityType) }}</el-descriptions-item>
|
<el-descriptions-item label="活动类型">{{ getActivityTypeName(viewData.activityType) }}</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}</el-descriptions-item>
|
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}</el-descriptions-item>
|
||||||
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请协会' : '申请单位'">{{ viewData.declareUnitName }}</el-descriptions-item>
|
<el-descriptions-item :label="viewData.activityType == 'CLUB' ? '申请俱乐部' : '申请单位'">{{ viewData.declareUnitName }}</el-descriptions-item>
|
||||||
|
|
||||||
<el-descriptions-item label="联系方式">{{ viewData.mobile }}</el-descriptions-item>
|
<el-descriptions-item label="联系方式">{{ viewData.mobile }}</el-descriptions-item>
|
||||||
<el-descriptions-item label="申请时间">{{ viewData.applyTime }}</el-descriptions-item>
|
<el-descriptions-item label="申请时间">{{ viewData.applyTime }}</el-descriptions-item>
|
||||||
|
|||||||
+6
-6
@@ -80,7 +80,7 @@ layout("/layouts/platform.html"){
|
|||||||
<div class="cut-off-line"></div>
|
<div class="cut-off-line"></div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="4" style="position: relative">
|
<el-col :span="4" style="position: relative">
|
||||||
<div class="top_title">协会活动总人数</div>
|
<div class="top_title">俱乐部活动总人数</div>
|
||||||
<div class="top_num">{{numData.clubSignNum?numData.clubSignNum:'0'}}</div>
|
<div class="top_num">{{numData.clubSignNum?numData.clubSignNum:'0'}}</div>
|
||||||
<div class="cut-off-line"></div>
|
<div class="cut-off-line"></div>
|
||||||
</el-col>-->
|
</el-col>-->
|
||||||
@@ -99,7 +99,7 @@ layout("/layouts/platform.html"){
|
|||||||
<div class="cut-off-line"></div>
|
<div class="cut-off-line"></div>
|
||||||
</el-col>
|
</el-col>
|
||||||
<el-col :span="8">
|
<el-col :span="8">
|
||||||
<div class="top_title">社团活动报销费用(元)
|
<div class="top_title">俱乐部活动报销费用(元)
|
||||||
</div>
|
</div>
|
||||||
<div class="top_num">{{numData.clubActivityMoney?numData.clubActivityMoney:'0'}}</div>
|
<div class="top_num">{{numData.clubActivityMoney?numData.clubActivityMoney:'0'}}</div>
|
||||||
</el-col>
|
</el-col>
|
||||||
@@ -217,7 +217,7 @@ layout("/layouts/platform.html"){
|
|||||||
</div>
|
</div>
|
||||||
<el-col :span="24" style="padding: 0 20px"
|
<el-col :span="24" style="padding: 0 20px"
|
||||||
v-loading="all_club_loading">
|
v-loading="all_club_loading">
|
||||||
<div class="chartTitle" style="margin-bottom: 50px">{{allClubYear}}年社团报销费用及活动情况
|
<div class="chartTitle" style="margin-bottom: 50px">{{allClubYear}}年俱乐部报销费用及活动情况
|
||||||
<el-tooltip class="item" effect="dark" :content="'点击切换为' + clubTip " placement="top">
|
<el-tooltip class="item" effect="dark" :content="'点击切换为' + clubTip " placement="top">
|
||||||
<el-button type="text" icon="el-icon-sort" @click="doClubSwitch"></el-button>
|
<el-button type="text" icon="el-icon-sort" @click="doClubSwitch"></el-button>
|
||||||
</el-tooltip>
|
</el-tooltip>
|
||||||
@@ -262,7 +262,7 @@ layout("/layouts/platform.html"){
|
|||||||
isUnionJf:true,
|
isUnionJf:true,
|
||||||
|
|
||||||
all_club_loading: false,
|
all_club_loading: false,
|
||||||
clubTip:'协会活动数',
|
clubTip:'俱乐部活动数',
|
||||||
allClubYear: moment().format('YYYY'),
|
allClubYear: moment().format('YYYY'),
|
||||||
isClubJf:true,
|
isClubJf:true,
|
||||||
}
|
}
|
||||||
@@ -485,7 +485,7 @@ layout("/layouts/platform.html"){
|
|||||||
},
|
},
|
||||||
async doClubSwitch(){
|
async doClubSwitch(){
|
||||||
this.isClubJf = !this.isClubJf
|
this.isClubJf = !this.isClubJf
|
||||||
this.clubTip = this.isClubJf ? '协会活动数' : '协会经费详情'
|
this.clubTip = this.isClubJf ? '俱乐部活动数' : '俱乐部经费详情'
|
||||||
await this.allClubActivityAndJf();
|
await this.allClubActivityAndJf();
|
||||||
},
|
},
|
||||||
async allClubActivityAndJf(){
|
async allClubActivityAndJf(){
|
||||||
@@ -533,7 +533,7 @@ layout("/layouts/platform.html"){
|
|||||||
"yAxis": {},
|
"yAxis": {},
|
||||||
meta: {
|
meta: {
|
||||||
clubName: {
|
clubName: {
|
||||||
alias: '协会',
|
alias: '俱乐部',
|
||||||
},
|
},
|
||||||
money: {
|
money: {
|
||||||
alias: this.isClubJf?'金额':'活动数',
|
alias: this.isClubJf?'金额':'活动数',
|
||||||
|
|||||||
+1
-1
@@ -158,7 +158,7 @@ layout("/layouts/platform.html"){
|
|||||||
{prop: "outlayManageSource", label: "经费类型"},
|
{prop: "outlayManageSource", label: "经费类型"},
|
||||||
{prop: "budgetReimburseType", label: "预算条目"},
|
{prop: "budgetReimburseType", label: "预算条目"},
|
||||||
{prop: "actualMoney", label: "报销金额(元)"},
|
{prop: "actualMoney", label: "报销金额(元)"},
|
||||||
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
{prop: "declareUnitName", label: "申报单位/俱乐部", sortable: true},
|
||||||
{prop: "applyTime", label: "申报时间", sortable: true},
|
{prop: "applyTime", label: "申报时间", sortable: true},
|
||||||
{prop: "curTaskName", label: "当前节点"},
|
{prop: "curTaskName", label: "当前节点"},
|
||||||
{prop: "instanceState", label: "流程状态"}
|
{prop: "instanceState", label: "流程状态"}
|
||||||
|
|||||||
+3
-3
@@ -35,8 +35,8 @@ layout("/layouts/platform.html"){
|
|||||||
placeholder="请选择预算条目"></dict-select>
|
placeholder="请选择预算条目"></dict-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
<search-item label="所属协会">
|
<search-item label="所属俱乐部">
|
||||||
<el-select clearable filterable placeholder="所属协会"
|
<el-select clearable filterable placeholder="所属俱乐部"
|
||||||
style="width: 100%;" v-model="pageForm.clubId">
|
style="width: 100%;" v-model="pageForm.clubId">
|
||||||
<el-option :label="item.clubName" :value="item.id"
|
<el-option :label="item.clubName" :value="item.id"
|
||||||
v-for="item in clubs"></el-option>
|
v-for="item in clubs"></el-option>
|
||||||
@@ -149,7 +149,7 @@ layout("/layouts/platform.html"){
|
|||||||
{prop: "outlayManageSource", label: "经费类型"},
|
{prop: "outlayManageSource", label: "经费类型"},
|
||||||
{prop: "budgetReimburseType", label: "预算条目"},
|
{prop: "budgetReimburseType", label: "预算条目"},
|
||||||
{prop: "actualMoney", label: "报销金额(元)"},
|
{prop: "actualMoney", label: "报销金额(元)"},
|
||||||
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
{prop: "declareUnitName", label: "申报单位/俱乐部", sortable: true},
|
||||||
{prop: "applyTime", label: "申报时间", sortable: true},
|
{prop: "applyTime", label: "申报时间", sortable: true},
|
||||||
{prop: "curTaskName", label: "当前节点"},
|
{prop: "curTaskName", label: "当前节点"},
|
||||||
{prop: "instanceState", label: "流程状态"}
|
{prop: "instanceState", label: "流程状态"}
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@ const INFO = {
|
|||||||
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}
|
<el-descriptions-item label="申请人">{{ viewData.userName + '(' + viewData.loginName + ')' }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
<el-descriptions-item
|
<el-descriptions-item
|
||||||
:label="viewData.outlayManageSource == 'ACTIVITY_BUDGET_TYPE_THREE' ? '申请协会' : '申请单位'">
|
:label="viewData.outlayManageSource == 'ACTIVITY_BUDGET_TYPE_THREE' ? '申请俱乐部' : '申请单位'">
|
||||||
{{viewData.declareUnitName }}
|
{{viewData.declareUnitName }}
|
||||||
</el-descriptions-item>
|
</el-descriptions-item>
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -47,8 +47,8 @@ layout("/layouts/platform.html"){
|
|||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
<search-item label="所属协会">
|
<search-item label="所属俱乐部">
|
||||||
<el-select clearable filterable placeholder="所属协会"
|
<el-select clearable filterable placeholder="所属俱乐部"
|
||||||
style="width: 100%;" v-model="pageForm.clubId">
|
style="width: 100%;" v-model="pageForm.clubId">
|
||||||
<el-option :label="item.clubName" :value="item.id"
|
<el-option :label="item.clubName" :value="item.id"
|
||||||
v-for="item in clubs"></el-option>
|
v-for="item in clubs"></el-option>
|
||||||
@@ -162,7 +162,7 @@ layout("/layouts/platform.html"){
|
|||||||
{prop: "outlayManageSource", label: "经费类型"},
|
{prop: "outlayManageSource", label: "经费类型"},
|
||||||
{prop: "budgetReimburseType", label: "预算条目"},
|
{prop: "budgetReimburseType", label: "预算条目"},
|
||||||
{prop: "actualMoney", label: "报销金额(元)"},
|
{prop: "actualMoney", label: "报销金额(元)"},
|
||||||
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
{prop: "declareUnitName", label: "申报单位/俱乐部", sortable: true},
|
||||||
{prop: "applyTime", label: "申报时间", sortable: true},
|
{prop: "applyTime", label: "申报时间", sortable: true},
|
||||||
{prop: "curTaskName", label: "当前节点"},
|
{prop: "curTaskName", label: "当前节点"},
|
||||||
{prop: "instanceState", label: "流程状态"}
|
{prop: "instanceState", label: "流程状态"}
|
||||||
|
|||||||
+5
-5
@@ -41,9 +41,9 @@ layout("/layouts/platform.html"){
|
|||||||
</search-item>
|
</search-item>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, CLUB_MANAGER, CLUB_PRESIDENT')">
|
<template v-if="$auth.hasRoleOr('SYSADMIN, SCHOOL_UNION_ADMIN, CLUB_MANAGER')">
|
||||||
<search-item label="所属协会">
|
<search-item label="所属俱乐部">
|
||||||
<el-select clearable filterable placeholder="所属协会"
|
<el-select clearable filterable placeholder="所属俱乐部"
|
||||||
style="width: 100%;" v-model="pageForm.clubId">
|
style="width: 100%;" v-model="pageForm.clubId">
|
||||||
<el-option :label="item.clubName" :value="item.id"
|
<el-option :label="item.clubName" :value="item.id"
|
||||||
v-for="item in clubs"></el-option>
|
v-for="item in clubs"></el-option>
|
||||||
@@ -136,7 +136,7 @@ layout("/layouts/platform.html"){
|
|||||||
{prop: "activityReimbursementMode", label: "报销模式"},
|
{prop: "activityReimbursementMode", label: "报销模式"},
|
||||||
{prop: "outlayManageSource", label: "经费类型"},
|
{prop: "outlayManageSource", label: "经费类型"},
|
||||||
{prop: "actualMoney", label: "报销金额(元)"},
|
{prop: "actualMoney", label: "报销金额(元)"},
|
||||||
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
{prop: "declareUnitName", label: "申报单位/俱乐部", sortable: true},
|
||||||
{prop: "applyTime", label: "申报时间", sortable: true},
|
{prop: "applyTime", label: "申报时间", sortable: true},
|
||||||
{prop: "taskName", label: "当前节点"},
|
{prop: "taskName", label: "当前节点"},
|
||||||
{prop: "instanceState", label: "流程状态"}
|
{prop: "instanceState", label: "流程状态"}
|
||||||
@@ -217,7 +217,7 @@ layout("/layouts/platform.html"){
|
|||||||
this.unions = await this.$businessTool.listUnion()
|
this.unions = await this.$businessTool.listUnion()
|
||||||
this.clubs = await this.$businessTool.listClub()
|
this.clubs = await this.$businessTool.listClub()
|
||||||
} else {
|
} else {
|
||||||
if (this.$auth.hasRoleOr('CLUB_MANAGER, CLUB_PRESIDENT')) {
|
if (this.$auth.hasRoleOr('CLUB_MANAGER')) {
|
||||||
this.clubs = await this.$businessTool.listClub()
|
this.clubs = await this.$businessTool.listClub()
|
||||||
}
|
}
|
||||||
this.unions = await this.$businessTool.listUnion(this.$store.state.user.union.id)
|
this.unions = await this.$businessTool.listUnion(this.$store.state.user.union.id)
|
||||||
|
|||||||
+3
-3
@@ -47,8 +47,8 @@ layout("/layouts/platform.html"){
|
|||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
<search-item label="所属协会">
|
<search-item label="所属俱乐部">
|
||||||
<el-select clearable filterable placeholder="所属协会"
|
<el-select clearable filterable placeholder="所属俱乐部"
|
||||||
style="width: 100%;" v-model="pageForm.clubId">
|
style="width: 100%;" v-model="pageForm.clubId">
|
||||||
<el-option :label="item.clubName" :value="item.id"
|
<el-option :label="item.clubName" :value="item.id"
|
||||||
v-for="item in clubs"></el-option>
|
v-for="item in clubs"></el-option>
|
||||||
@@ -162,7 +162,7 @@ layout("/layouts/platform.html"){
|
|||||||
{prop: "outlayManageSource", label: "经费类型"},
|
{prop: "outlayManageSource", label: "经费类型"},
|
||||||
{prop: "budgetReimburseType", label: "预算条目"},
|
{prop: "budgetReimburseType", label: "预算条目"},
|
||||||
{prop: "actualMoney", label: "报销金额(元)"},
|
{prop: "actualMoney", label: "报销金额(元)"},
|
||||||
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
{prop: "declareUnitName", label: "申报单位/俱乐部", sortable: true},
|
||||||
{prop: "applyTime", label: "申报时间", sortable: true},
|
{prop: "applyTime", label: "申报时间", sortable: true},
|
||||||
{prop: "curTaskName", label: "当前节点"},
|
{prop: "curTaskName", label: "当前节点"},
|
||||||
{prop: "instanceState", label: "流程状态"}
|
{prop: "instanceState", label: "流程状态"}
|
||||||
|
|||||||
+3
-3
@@ -47,8 +47,8 @@ layout("/layouts/platform.html"){
|
|||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
<search-item label="所属协会">
|
<search-item label="所属俱乐部">
|
||||||
<el-select clearable filterable placeholder="所属协会"
|
<el-select clearable filterable placeholder="所属俱乐部"
|
||||||
style="width: 100%;" v-model="pageForm.clubId">
|
style="width: 100%;" v-model="pageForm.clubId">
|
||||||
<el-option :label="item.clubName" :value="item.id"
|
<el-option :label="item.clubName" :value="item.id"
|
||||||
v-for="item in clubs"></el-option>
|
v-for="item in clubs"></el-option>
|
||||||
@@ -163,7 +163,7 @@ layout("/layouts/platform.html"){
|
|||||||
{prop: "outlayManageSource", label: "经费类型"},
|
{prop: "outlayManageSource", label: "经费类型"},
|
||||||
{prop: "budgetReimburseType", label: "预算条目"},
|
{prop: "budgetReimburseType", label: "预算条目"},
|
||||||
{prop: "actualMoney", label: "报销金额(元)"},
|
{prop: "actualMoney", label: "报销金额(元)"},
|
||||||
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
{prop: "declareUnitName", label: "申报单位/俱乐部", sortable: true},
|
||||||
{prop: "applyTime", label: "申报时间", sortable: true},
|
{prop: "applyTime", label: "申报时间", sortable: true},
|
||||||
{prop: "curTaskName", label: "当前节点"},
|
{prop: "curTaskName", label: "当前节点"},
|
||||||
{prop: "instanceState", label: "流程状态"}
|
{prop: "instanceState", label: "流程状态"}
|
||||||
|
|||||||
+3
-3
@@ -46,8 +46,8 @@ layout("/layouts/platform.html"){
|
|||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
|
|
||||||
<search-item label="所属协会">
|
<search-item label="所属俱乐部">
|
||||||
<el-select clearable filterable placeholder="所属协会"
|
<el-select clearable filterable placeholder="所属俱乐部"
|
||||||
style="width: 100%;" v-model="pageForm.clubId">
|
style="width: 100%;" v-model="pageForm.clubId">
|
||||||
<el-option :label="item.clubName" :value="item.id"
|
<el-option :label="item.clubName" :value="item.id"
|
||||||
v-for="item in clubs"></el-option>
|
v-for="item in clubs"></el-option>
|
||||||
@@ -167,7 +167,7 @@ layout("/layouts/platform.html"){
|
|||||||
{prop: "outlayManageSource", label: "经费类型"},
|
{prop: "outlayManageSource", label: "经费类型"},
|
||||||
{prop: "budgetReimburseType", label: "预算条目"},
|
{prop: "budgetReimburseType", label: "预算条目"},
|
||||||
{prop: "actualMoney", label: "报销金额(元)"},
|
{prop: "actualMoney", label: "报销金额(元)"},
|
||||||
{prop: "declareUnitName", label: "申报单位/协会", sortable: true},
|
{prop: "declareUnitName", label: "申报单位/俱乐部", sortable: true},
|
||||||
{prop: "applyTime", label: "申报时间", sortable: true},
|
{prop: "applyTime", label: "申报时间", sortable: true},
|
||||||
{prop: "curTaskName", label: "当前节点"},
|
{prop: "curTaskName", label: "当前节点"},
|
||||||
{prop: "instanceState", label: "流程状态"}
|
{prop: "instanceState", label: "流程状态"}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ const basicForm = {
|
|||||||
style="width: 100%">
|
style="width: 100%">
|
||||||
<el-option v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('SCHOOL_UNION_ADMIN')" label="校工会" value="40001"></el-option>
|
<el-option v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('SCHOOL_UNION_ADMIN')" label="校工会" value="40001"></el-option>
|
||||||
<el-option v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('BRANCH_UNION_CHAIRMAN')" label="分工会" value="40002"></el-option>
|
<el-option v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('BRANCH_UNION_CHAIRMAN')" label="分工会" value="40002"></el-option>
|
||||||
<el-option v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('CLUB_PRESIDENT')" label="协会/社团" value="40003"></el-option>
|
<el-option v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('CLUB_MANAGER')" label="俱乐部" value="40003"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
@@ -24,8 +24,8 @@ const basicForm = {
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
<el-form-item v-if="formData.planType === '40003'" prop="tissueId" label="所属协会/社团">
|
<el-form-item v-if="formData.planType === '40003'" prop="tissueId" label="所属俱乐部">
|
||||||
<el-select v-model="formData.tissueId" placeholder="请选择所属协会/社团" filterable clearable
|
<el-select v-model="formData.tissueId" placeholder="请选择所属俱乐部" filterable clearable
|
||||||
@change="(val) => {formData.tissueName = clubList.find(o => o.id === formData.tissueId).clubName}"
|
@change="(val) => {formData.tissueName = clubList.find(o => o.id === formData.tissueId).clubName}"
|
||||||
style="width: 100%">
|
style="width: 100%">
|
||||||
<el-option
|
<el-option
|
||||||
|
|||||||
@@ -41,8 +41,8 @@ layout("/layouts/platform.html"){
|
|||||||
</el-option>
|
</el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</search-item>
|
</search-item>
|
||||||
<search-item v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('CLUB_PRESIDENT')" label="协会/社团:">
|
<search-item v-if="$auth.hasRole('SYSADMIN') || $auth.hasRole('CLUB_MANAGER')" label="俱乐部:">
|
||||||
<el-select v-model="pageForm.tissueIdByClub" placeholder="请选择所属协会/社团" filterable clearable
|
<el-select v-model="pageForm.tissueIdByClub" placeholder="请选择所属俱乐部" filterable clearable
|
||||||
@change="doSearch" style="width: 100%">
|
@change="doSearch" style="width: 100%">
|
||||||
<el-option
|
<el-option
|
||||||
v-for="item in clubList"
|
v-for="item in clubList"
|
||||||
@@ -82,7 +82,7 @@ layout("/layouts/platform.html"){
|
|||||||
<template v-slot="{ row }" v-if="column.prop === 'planType'">
|
<template v-slot="{ row }" v-if="column.prop === 'planType'">
|
||||||
<span v-if="row.planType === '40001'">校工会</span>
|
<span v-if="row.planType === '40001'">校工会</span>
|
||||||
<span v-if="row.planType === '40002'">分工会</span>
|
<span v-if="row.planType === '40002'">分工会</span>
|
||||||
<span v-if="row.planType === '40003'">协会/社团</span>
|
<span v-if="row.planType === '40003'">俱乐部</span>
|
||||||
</template>
|
</template>
|
||||||
<template v-slot="{ row }" v-else-if="column.prop === 'tissueName'">
|
<template v-slot="{ row }" v-else-if="column.prop === 'tissueName'">
|
||||||
{{ row.tissueName || '校工会' }}
|
{{ row.tissueName || '校工会' }}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user