change
This commit is contained in:
@@ -23,6 +23,7 @@ import com.budwk.app.zhgh.democratic.proposal.models.ProposalConfig;
|
|||||||
import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeOrigin;
|
import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeOrigin;
|
||||||
import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeType;
|
import com.budwk.app.zhgh.staffmanage.member.constant.MemberChangeType;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.nutz.aop.interceptor.ioc.TransAop;
|
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;
|
||||||
@@ -160,6 +161,10 @@ public class SysDataUserAllUpdateServiceImpl implements SysDataUserUpdateService
|
|||||||
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());
|
||||||
source.setMember(null);
|
source.setMember(null);
|
||||||
|
String unitId = source.getUnitId();
|
||||||
|
if (StringUtils.isNotBlank(unitId) && unitId.length() == 5) {
|
||||||
|
source.setUnitId(unitId.substring(0, 3));
|
||||||
|
}
|
||||||
|
|
||||||
// 创建用户对象
|
// 创建用户对象
|
||||||
Sys_user u = new Sys_user();
|
Sys_user u = new Sys_user();
|
||||||
|
|||||||
+49
@@ -0,0 +1,49 @@
|
|||||||
|
package com.budwk.app.zhgh.democratic.teachercongress.delegate.controller;
|
||||||
|
|
||||||
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import com.budwk.app.base.page.Pagination;
|
||||||
|
import com.budwk.app.base.result.Result;
|
||||||
|
import com.budwk.app.zhgh.democratic.teachercongress.delegate.param.RepresentativeChangeRecordPageParam;
|
||||||
|
import com.budwk.app.zhgh.democratic.teachercongress.delegate.service.RepresentativeChangeRecordService;
|
||||||
|
import org.nutz.ioc.loader.annotation.Inject;
|
||||||
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.nutz.lang.util.NutMap;
|
||||||
|
import org.nutz.mvc.annotation.At;
|
||||||
|
import org.nutz.mvc.annotation.Ok;
|
||||||
|
import org.nutz.mvc.annotation.Param;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 教代会代表变动记录页面及查询接口。
|
||||||
|
*/
|
||||||
|
@IocBean
|
||||||
|
@At("/platform/jdh/db/changeRecord")
|
||||||
|
@Ok("json:full")
|
||||||
|
public class RepresentativeChangeRecordController {
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private RepresentativeChangeRecordService representativeChangeRecordService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 打开代表变动记录页面。
|
||||||
|
*/
|
||||||
|
@At("")
|
||||||
|
@Ok("beetl:/platform/zhgh/democratic/teachercongress/delegate/changeRecord/index.html")
|
||||||
|
@SaCheckPermission("sys.jdh.db.changeRecord")
|
||||||
|
public void index() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询代表变动记录。
|
||||||
|
*
|
||||||
|
* @param pageForm 分页、关键字及组织筛选参数
|
||||||
|
* @return 代表变动记录分页结果
|
||||||
|
*/
|
||||||
|
@At
|
||||||
|
@SaCheckPermission("sys.jdh.db.changeRecord")
|
||||||
|
public Result pageData(@Valid @Param("pageForm") RepresentativeChangeRecordPageParam pageForm) {
|
||||||
|
Pagination<NutMap> pagination = representativeChangeRecordService.pageData(pageForm);
|
||||||
|
return Result.success(pagination);
|
||||||
|
}
|
||||||
|
}
|
||||||
+106
@@ -0,0 +1,106 @@
|
|||||||
|
package com.budwk.app.zhgh.democratic.teachercongress.delegate.models;
|
||||||
|
|
||||||
|
import com.budwk.app.base.model.BaseModel;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
import org.nutz.dao.entity.annotation.ColDefine;
|
||||||
|
import org.nutz.dao.entity.annotation.ColType;
|
||||||
|
import org.nutz.dao.entity.annotation.Column;
|
||||||
|
import org.nutz.dao.entity.annotation.Comment;
|
||||||
|
import org.nutz.dao.entity.annotation.Name;
|
||||||
|
import org.nutz.dao.entity.annotation.Table;
|
||||||
|
import org.nutz.dao.entity.annotation.TableMeta;
|
||||||
|
import org.nutz.dao.interceptor.annotation.PrevInsert;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 教代会届次延用时产生的代表异动记录。
|
||||||
|
* 记录代表在上一届与新一届之间单位、分工会及代表团的对应关系,供后续异动查询使用。
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
@Table("representative_change_record")
|
||||||
|
@TableMeta("{'mysql-charset':'utf8mb4'}")
|
||||||
|
@Comment("教代会代表异动记录")
|
||||||
|
public class RepresentativeChangeRecord extends BaseModel {
|
||||||
|
|
||||||
|
@Name
|
||||||
|
@Comment("ID")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
@PrevInsert(uu32 = true)
|
||||||
|
private String id;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("用户ID")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String userId;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("原教代会届次")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String oldJdhSession;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("新教代会届次")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String newJdhSession;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("原单位ID")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String oldUnitId;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("原单位名称")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 500)
|
||||||
|
private String oldUnitName;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("原工会ID")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String oldUnionId;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("原工会名称")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||||
|
private String oldUnionName;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("原代表团ID")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String oldDbtId;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("原代表团名称")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||||
|
private String oldDbtName;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("新单位ID")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String newUnitId;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("新单位名称")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 500)
|
||||||
|
private String newUnitName;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("新工会ID")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String newUnionId;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("新工会名称")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||||
|
private String newUnionName;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("新代表团ID")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 32)
|
||||||
|
private String newDbtId;
|
||||||
|
|
||||||
|
@Column
|
||||||
|
@Comment("新代表团名称")
|
||||||
|
@ColDefine(type = ColType.VARCHAR, width = 100)
|
||||||
|
private String newDbtName;
|
||||||
|
}
|
||||||
+22
@@ -0,0 +1,22 @@
|
|||||||
|
package com.budwk.app.zhgh.democratic.teachercongress.delegate.param;
|
||||||
|
|
||||||
|
import com.budwk.app.base.param.PageForm;
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 代表变动记录分页查询参数。
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@EqualsAndHashCode(callSuper = true)
|
||||||
|
public class RepresentativeChangeRecordPageParam extends PageForm {
|
||||||
|
|
||||||
|
/** 新教代会届次ID。 */
|
||||||
|
private String sessionId;
|
||||||
|
|
||||||
|
/** 代表变动后的所属单位ID。 */
|
||||||
|
private String unitId;
|
||||||
|
|
||||||
|
/** 代表变动后的所属分工会ID。 */
|
||||||
|
private String unionId;
|
||||||
|
}
|
||||||
+21
@@ -0,0 +1,21 @@
|
|||||||
|
package com.budwk.app.zhgh.democratic.teachercongress.delegate.service;
|
||||||
|
|
||||||
|
import com.budwk.app.base.page.Pagination;
|
||||||
|
import com.budwk.app.base.service.BaseService;
|
||||||
|
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.RepresentativeChangeRecord;
|
||||||
|
import com.budwk.app.zhgh.democratic.teachercongress.delegate.param.RepresentativeChangeRecordPageParam;
|
||||||
|
import org.nutz.lang.util.NutMap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 教代会代表变动记录服务。
|
||||||
|
*/
|
||||||
|
public interface RepresentativeChangeRecordService extends BaseService<RepresentativeChangeRecord> {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询代表变动记录,并关联人员及新旧届次名称。
|
||||||
|
*
|
||||||
|
* @param pageForm 分页、关键字及组织筛选条件
|
||||||
|
* @return 代表变动记录分页数据
|
||||||
|
*/
|
||||||
|
Pagination<NutMap> pageData(RepresentativeChangeRecordPageParam pageForm);
|
||||||
|
}
|
||||||
+96
@@ -0,0 +1,96 @@
|
|||||||
|
package com.budwk.app.zhgh.democratic.teachercongress.delegate.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.budwk.app.base.page.Pagination;
|
||||||
|
import com.budwk.app.base.service.impl.BaseServiceImpl;
|
||||||
|
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.RepresentativeChangeRecord;
|
||||||
|
import com.budwk.app.zhgh.democratic.teachercongress.delegate.param.RepresentativeChangeRecordPageParam;
|
||||||
|
import com.budwk.app.zhgh.democratic.teachercongress.delegate.service.RepresentativeChangeRecordService;
|
||||||
|
import org.nutz.dao.Cnd;
|
||||||
|
import org.nutz.dao.Dao;
|
||||||
|
import org.nutz.dao.Sqls;
|
||||||
|
import org.nutz.dao.sql.Sql;
|
||||||
|
import org.nutz.ioc.loader.annotation.IocBean;
|
||||||
|
import org.nutz.lang.util.NutMap;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 教代会代表变动记录服务实现。
|
||||||
|
*/
|
||||||
|
@IocBean(args = {"refer:dao"})
|
||||||
|
public class RepresentativeChangeRecordServiceImpl extends BaseServiceImpl<RepresentativeChangeRecord>
|
||||||
|
implements RepresentativeChangeRecordService {
|
||||||
|
|
||||||
|
/** 前端排序字段与查询字段映射,避免将未校验字段直接拼入 SQL。 */
|
||||||
|
private static final Map<String, String> SORT_COLUMNS = Map.of(
|
||||||
|
"username", "u.username",
|
||||||
|
"loginname", "u.loginname",
|
||||||
|
"oldJdhName", "oldSession.fullName",
|
||||||
|
"newJdhName", "newSession.fullName",
|
||||||
|
"oldUnitName", "c.oldUnitName",
|
||||||
|
"newUnitName", "c.newUnitName",
|
||||||
|
"oldDbtName", "c.oldDbtName",
|
||||||
|
"newDbtName", "c.newDbtName"
|
||||||
|
);
|
||||||
|
|
||||||
|
public RepresentativeChangeRecordServiceImpl(Dao dao) {
|
||||||
|
super(dao);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分页查询代表变动记录,并关联当前人员姓名、工号及新旧届次名称。
|
||||||
|
*
|
||||||
|
* @param pageForm 分页、关键字及组织筛选条件
|
||||||
|
* @return 可直接供列表展示的分页 Map 数据
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public Pagination<NutMap> pageData(RepresentativeChangeRecordPageParam pageForm) {
|
||||||
|
Sql sql = Sqls.create("""
|
||||||
|
SELECT
|
||||||
|
c.*,
|
||||||
|
u.username,
|
||||||
|
u.loginname,
|
||||||
|
oldSession.fullName AS oldJdhName,
|
||||||
|
newSession.fullName AS newJdhName
|
||||||
|
FROM representative_change_record c
|
||||||
|
LEFT JOIN sys_user u ON c.userId = u.id
|
||||||
|
LEFT JOIN teacher_congress_session oldSession ON oldSession.id = c.oldJdhSession
|
||||||
|
LEFT JOIN teacher_congress_session newSession ON newSession.id = c.newJdhSession
|
||||||
|
$condition
|
||||||
|
""");
|
||||||
|
sql.setCondition(buildCondition(pageForm));
|
||||||
|
return listPageMap(pageForm.getPageNumber(), pageForm.getPageSize(), sql);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 组装代表变动记录查询条件。单位和分工会均按变动后的组织信息筛选,保持与原系统口径一致。
|
||||||
|
*
|
||||||
|
* @param pageForm 页面查询参数
|
||||||
|
* @return SQL 查询条件及安全排序规则
|
||||||
|
*/
|
||||||
|
private Cnd buildCondition(RepresentativeChangeRecordPageParam pageForm) {
|
||||||
|
Cnd cnd = Cnd.NEW();
|
||||||
|
cnd.andEX("c.newJdhSession", "=", pageForm.getSessionId());
|
||||||
|
cnd.andEX("c.newUnionId", "=", pageForm.getUnionId());
|
||||||
|
cnd.andEX("c.newUnitId", "=", pageForm.getUnitId());
|
||||||
|
if (StrUtil.isNotBlank(pageForm.getSearchKeyword())) {
|
||||||
|
String keyword = "%" + pageForm.getSearchKeyword().trim() + "%";
|
||||||
|
cnd.and(Cnd.exps("u.username", "like", keyword)
|
||||||
|
.or("u.loginname", "like", keyword));
|
||||||
|
}
|
||||||
|
|
||||||
|
String sortColumn = SORT_COLUMNS.get(pageForm.getPageOrderName());
|
||||||
|
if (StrUtil.isNotBlank(sortColumn)) {
|
||||||
|
if ("ascending".equalsIgnoreCase(pageForm.getPageOrderBy())) {
|
||||||
|
cnd.asc(sortColumn);
|
||||||
|
} else {
|
||||||
|
cnd.desc(sortColumn);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cnd.desc("c.createdAt");
|
||||||
|
}
|
||||||
|
return cnd;
|
||||||
|
}
|
||||||
|
}
|
||||||
+72
@@ -17,6 +17,7 @@ import com.budwk.app.sys.services.SysRoleService;
|
|||||||
import com.budwk.app.sys.services.SysUserService;
|
import com.budwk.app.sys.services.SysUserService;
|
||||||
import com.budwk.app.sys.views.View_user;
|
import com.budwk.app.sys.views.View_user;
|
||||||
import com.budwk.app.zhgh.democratic.proposal.models.ProposalType;
|
import com.budwk.app.zhgh.democratic.proposal.models.ProposalType;
|
||||||
|
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.RepresentativeChangeRecord;
|
||||||
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.Teacher_congress_delegate;
|
import com.budwk.app.zhgh.democratic.teachercongress.delegate.models.Teacher_congress_delegate;
|
||||||
import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation;
|
import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation;
|
||||||
import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation_union;
|
import com.budwk.app.zhgh.democratic.teachercongress.delegation.models.Teacher_congress_delegation_union;
|
||||||
@@ -46,6 +47,8 @@ import java.util.Date;
|
|||||||
import java.util.LinkedHashSet;
|
import java.util.LinkedHashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@IocBean(args = {"refer:dao"})
|
@IocBean(args = {"refer:dao"})
|
||||||
public class TeacherCongressSessionServiceImpl extends BaseServiceImpl<Teacher_congress_session> implements TeacherCongressSessionService {
|
public class TeacherCongressSessionServiceImpl extends BaseServiceImpl<Teacher_congress_session> implements TeacherCongressSessionService {
|
||||||
@@ -131,6 +134,9 @@ public class TeacherCongressSessionServiceImpl extends BaseServiceImpl<Teacher_c
|
|||||||
|
|
||||||
//从代表团入手
|
//从代表团入手
|
||||||
List<Teacher_congress_delegation> lastDelegations = dao().query(Teacher_congress_delegation.class, Cnd.where("sessionId", "=", lastSession.getId()));
|
List<Teacher_congress_delegation> lastDelegations = dao().query(Teacher_congress_delegation.class, Cnd.where("sessionId", "=", lastSession.getId()));
|
||||||
|
// 保留上一届代表团ID与实体的对应关系,用于代表延用完成后判断代表团是否发生异动。
|
||||||
|
Map<String, Teacher_congress_delegation> lastDelegationsMap = lastDelegations.stream()
|
||||||
|
.collect(Collectors.toMap(Teacher_congress_delegation::getId, delegation -> delegation));
|
||||||
for (Teacher_congress_delegation lastDelegation : lastDelegations) {
|
for (Teacher_congress_delegation lastDelegation : lastDelegations) {
|
||||||
//代表团继承
|
//代表团继承
|
||||||
Teacher_congress_delegation newDelegation = BeanUtil.copyProperties(lastDelegation, Teacher_congress_delegation.class);
|
Teacher_congress_delegation newDelegation = BeanUtil.copyProperties(lastDelegation, Teacher_congress_delegation.class);
|
||||||
@@ -201,10 +207,17 @@ public class TeacherCongressSessionServiceImpl extends BaseServiceImpl<Teacher_c
|
|||||||
dao().fastInsert(newDelegationUnits);
|
dao().fastInsert(newDelegationUnits);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 新代表团已经全部生成,此时建立ID索引,后续可按新代表的 delegationId 获取新代表团编码。
|
||||||
|
List<Teacher_congress_delegation> newSessionDelegations = dao().query(Teacher_congress_delegation.class,
|
||||||
|
Cnd.where(Teacher_congress_delegation::getSessionId, "=", session.getId()));
|
||||||
|
Map<String, Teacher_congress_delegation> newDelegationsMap = newSessionDelegations.stream()
|
||||||
|
.collect(Collectors.toMap(Teacher_congress_delegation::getId, delegation -> delegation));
|
||||||
|
|
||||||
//代表数据 单位 分工会 要根据最新的设置来调整
|
//代表数据 单位 分工会 要根据最新的设置来调整
|
||||||
|
|
||||||
//代表数据
|
//代表数据
|
||||||
List<Teacher_congress_delegate> lastDelegates = dao().query(Teacher_congress_delegate.class, Cnd.where(Teacher_congress_delegate::getSessionId, "=", lastSession.getId()));
|
List<Teacher_congress_delegate> lastDelegates = dao().query(Teacher_congress_delegate.class, Cnd.where(Teacher_congress_delegate::getSessionId, "=", lastSession.getId()));
|
||||||
|
List<RepresentativeChangeRecord> changeRecords = new ArrayList<>();
|
||||||
List<Teacher_congress_delegate> newDelegates = lastDelegates.stream().map(lastDelegate -> {
|
List<Teacher_congress_delegate> newDelegates = lastDelegates.stream().map(lastDelegate -> {
|
||||||
Teacher_congress_delegate newDelegate = BeanUtil.copyProperties(lastDelegate, Teacher_congress_delegate.class);
|
Teacher_congress_delegate newDelegate = BeanUtil.copyProperties(lastDelegate, Teacher_congress_delegate.class);
|
||||||
newDelegate.setId(R.UU32());
|
newDelegate.setId(R.UU32());
|
||||||
@@ -241,9 +254,20 @@ public class TeacherCongressSessionServiceImpl extends BaseServiceImpl<Teacher_c
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 以代表团编码判断是否发生代表团异动,并完整保存延用前后的组织信息。
|
||||||
|
RepresentativeChangeRecord changeRecord = buildRepresentativeChangeRecord(
|
||||||
|
lastSession.getId(), session.getId(), lastDelegate, newDelegate,
|
||||||
|
lastDelegationsMap, newDelegationsMap);
|
||||||
|
if (changeRecord != null) {
|
||||||
|
changeRecords.add(changeRecord);
|
||||||
|
}
|
||||||
return newDelegate;
|
return newDelegate;
|
||||||
}).toList();
|
}).toList();
|
||||||
dao().insert(newDelegates);
|
dao().insert(newDelegates);
|
||||||
|
if (!changeRecords.isEmpty()) {
|
||||||
|
dao().fastInsert(changeRecords);
|
||||||
|
}
|
||||||
|
|
||||||
//代表权限数据
|
//代表权限数据
|
||||||
for (Teacher_congress_delegate newDelegate : newDelegates) {
|
for (Teacher_congress_delegate newDelegate : newDelegates) {
|
||||||
@@ -282,6 +306,51 @@ public class TeacherCongressSessionServiceImpl extends BaseServiceImpl<Teacher_c
|
|||||||
finishInsertSessionRoleStatus(session);
|
finishInsertSessionRoleStatus(session);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据延用前后的代表团编码生成代表异动记录。
|
||||||
|
* 旧数据缺少代表团或新届次无法匹配代表团时不生成记录,避免不完整历史数据导致新增届次失败。
|
||||||
|
*
|
||||||
|
* @param oldSessionId 原届次ID
|
||||||
|
* @param newSessionId 新届次ID
|
||||||
|
* @param oldDelegate 原届次代表数据
|
||||||
|
* @param newDelegate 延用后代表数据
|
||||||
|
* @param oldDelegationsMap 原届次代表团映射
|
||||||
|
* @param newDelegationsMap 新届次代表团映射
|
||||||
|
* @return 代表团编码发生变化时返回异动记录,否则返回 null
|
||||||
|
*/
|
||||||
|
private RepresentativeChangeRecord buildRepresentativeChangeRecord(
|
||||||
|
String oldSessionId,
|
||||||
|
String newSessionId,
|
||||||
|
Teacher_congress_delegate oldDelegate,
|
||||||
|
Teacher_congress_delegate newDelegate,
|
||||||
|
Map<String, Teacher_congress_delegation> oldDelegationsMap,
|
||||||
|
Map<String, Teacher_congress_delegation> newDelegationsMap) {
|
||||||
|
Teacher_congress_delegation oldDelegation = oldDelegationsMap.get(oldDelegate.getDelegationId());
|
||||||
|
Teacher_congress_delegation newDelegation = newDelegationsMap.get(newDelegate.getDelegationId());
|
||||||
|
if (oldDelegation == null || newDelegation == null
|
||||||
|
|| Objects.equals(oldDelegation.getCode(), newDelegation.getCode())) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
RepresentativeChangeRecord record = new RepresentativeChangeRecord();
|
||||||
|
record.setOldJdhSession(oldSessionId);
|
||||||
|
record.setNewJdhSession(newSessionId);
|
||||||
|
record.setUserId(oldDelegate.getUserId());
|
||||||
|
record.setOldUnitId(oldDelegate.getUnitId());
|
||||||
|
record.setOldUnitName(oldDelegate.getUnitName());
|
||||||
|
record.setOldUnionId(oldDelegate.getUnionId());
|
||||||
|
record.setOldUnionName(oldDelegate.getUnionName());
|
||||||
|
record.setOldDbtId(oldDelegate.getDelegationId());
|
||||||
|
record.setOldDbtName(oldDelegation.getName());
|
||||||
|
record.setNewUnitId(newDelegate.getUnitId());
|
||||||
|
record.setNewUnitName(newDelegate.getUnitName());
|
||||||
|
record.setNewUnionId(newDelegate.getUnionId());
|
||||||
|
record.setNewUnionName(newDelegate.getUnionName());
|
||||||
|
record.setNewDbtId(newDelegate.getDelegationId());
|
||||||
|
record.setNewDbtName(newDelegation.getName());
|
||||||
|
return record;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改届次基础信息。提案类型在保存前统一完成 JSON 解析、去重和长度校验,
|
* 修改届次基础信息。提案类型在保存前统一完成 JSON 解析、去重和长度校验,
|
||||||
* 避免新增与编辑使用不同的数据格式。
|
* 避免新增与编辑使用不同的数据格式。
|
||||||
@@ -492,6 +561,9 @@ public class TeacherCongressSessionServiceImpl extends BaseServiceImpl<Teacher_c
|
|||||||
dao().clear(Teacher_congress_prepare_file.class, Cnd.where("sessionId", "=", id));
|
dao().clear(Teacher_congress_prepare_file.class, Cnd.where("sessionId", "=", id));
|
||||||
//代表
|
//代表
|
||||||
dao().clear(Teacher_congress_delegate.class, Cnd.where("sessionId", "=", id));
|
dao().clear(Teacher_congress_delegate.class, Cnd.where("sessionId", "=", id));
|
||||||
|
//删除以当前届次为新届次的代表异动记录,保持与届次延用数据一致。
|
||||||
|
dao().clear(RepresentativeChangeRecord.class,
|
||||||
|
Cnd.where(RepresentativeChangeRecord::getNewJdhSession, "=", id));
|
||||||
|
|
||||||
//删除相关权限
|
//删除相关权限
|
||||||
dao().clear(Sys_user_role.class, Cnd.where(Sys_user_role::getTcSessionId, "=", id));
|
dao().clear(Sys_user_role.class, Cnd.where(Sys_user_role::getTcSessionId, "=", id));
|
||||||
|
|||||||
+155
@@ -0,0 +1,155 @@
|
|||||||
|
<!--#
|
||||||
|
layout("/layouts/platform.html"){
|
||||||
|
#-->
|
||||||
|
|
||||||
|
<div id="app" v-cloak>
|
||||||
|
<guava ref="guava">
|
||||||
|
<template>
|
||||||
|
<el-card shadow="never">
|
||||||
|
<search @search="doSearch">
|
||||||
|
<search-item label="姓名/工号">
|
||||||
|
<el-input v-model="pageForm.searchKeyword" clearable
|
||||||
|
placeholder="请输入姓名或工号"
|
||||||
|
@keyup.enter.native="doSearch"></el-input>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="教代会">
|
||||||
|
<el-select v-model="pageForm.sessionId" clearable filterable
|
||||||
|
placeholder="请选择教代会" style="width: 100%">
|
||||||
|
<el-option v-for="item in sessionOptions" :key="item.id"
|
||||||
|
:label="item.fullName" :value="item.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="所属工会">
|
||||||
|
<el-select v-model="pageForm.unionId" clearable filterable
|
||||||
|
placeholder="请选择所属工会" style="width: 100%"
|
||||||
|
@change="handleUnionChange">
|
||||||
|
<el-option v-for="item in unionOptions" :key="item.id"
|
||||||
|
:label="item.name" :value="item.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</search-item>
|
||||||
|
<search-item label="所属单位">
|
||||||
|
<el-select v-model="pageForm.unitId" clearable filterable
|
||||||
|
placeholder="请选择所属单位" style="width: 100%">
|
||||||
|
<el-option v-for="item in unitOptions" :key="item.id"
|
||||||
|
:label="item.name" :value="item.id"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</search-item>
|
||||||
|
</search>
|
||||||
|
</el-card>
|
||||||
|
|
||||||
|
<el-card class="mt10" shadow="never">
|
||||||
|
<table-tool label="代表变动记录"></table-tool>
|
||||||
|
<el-table v-loading="tableLoading" :data="tableData"
|
||||||
|
@sort-change="pageOrder" row-key="id" ref="tableRef"
|
||||||
|
style="width: 100%">
|
||||||
|
<el-table-column type="index" :index="indexMethod" label="序号"
|
||||||
|
align="center" header-align="center" width="70"></el-table-column>
|
||||||
|
<el-table-column label="姓名" prop="username" sortable="custom"
|
||||||
|
align="center" header-align="center" min-width="110"></el-table-column>
|
||||||
|
<el-table-column label="工号" prop="loginname" sortable="custom"
|
||||||
|
align="center" header-align="center" min-width="110"></el-table-column>
|
||||||
|
<el-table-column label="原教代会" prop="oldJdhName" sortable="custom"
|
||||||
|
align="center" header-align="center" min-width="130"
|
||||||
|
show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column label="新教代会" prop="newJdhName" sortable="custom"
|
||||||
|
align="center" header-align="center" min-width="130"
|
||||||
|
show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column label="原单位" prop="oldUnitName" sortable="custom"
|
||||||
|
align="center" header-align="center" min-width="180"
|
||||||
|
show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column label="新单位" prop="newUnitName" sortable="custom"
|
||||||
|
align="center" header-align="center" min-width="180"
|
||||||
|
show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column label="原代表团" prop="oldDbtName" sortable="custom"
|
||||||
|
align="center" header-align="center" min-width="140"
|
||||||
|
show-overflow-tooltip></el-table-column>
|
||||||
|
<el-table-column label="新代表团" prop="newDbtName" sortable="custom"
|
||||||
|
align="center" header-align="center" min-width="140"
|
||||||
|
show-overflow-tooltip></el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<!--#include("/layouts/pagination.html"){}#-->
|
||||||
|
</el-card>
|
||||||
|
</template>
|
||||||
|
</guava>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<script nonce="${cspNonce!}">
|
||||||
|
new Vue({
|
||||||
|
el: "#app",
|
||||||
|
mixins: [initTableMixins],
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
pageForm: {
|
||||||
|
searchKeyword: "",
|
||||||
|
sessionId: "",
|
||||||
|
unionId: "",
|
||||||
|
unitId: ""
|
||||||
|
},
|
||||||
|
sessionOptions: [],
|
||||||
|
unionOptions: [],
|
||||||
|
unitOptions: [],
|
||||||
|
pageRequestSequence: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
/** 查询分页数据;快速连续查询时只接收最后一次请求结果。 */
|
||||||
|
pageData() {
|
||||||
|
const requestSequence = ++this.pageRequestSequence
|
||||||
|
this.tableData = []
|
||||||
|
this.tableLoading = true
|
||||||
|
this.$axios.post(loc() + "/pageData", {
|
||||||
|
pageForm: JSON.stringify(this.pageForm)
|
||||||
|
}).then((res) => {
|
||||||
|
if (requestSequence !== this.pageRequestSequence) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.tableData = res.data.list || []
|
||||||
|
this.pageForm.totalCount = res.data.totalCount || 0
|
||||||
|
} else {
|
||||||
|
this.$message.error(res.msg)
|
||||||
|
}
|
||||||
|
}).finally(() => {
|
||||||
|
if (requestSequence === this.pageRequestSequence) {
|
||||||
|
this.tableLoading = false
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 切换工会时清空原单位条件,并重新加载该工会下的单位。 */
|
||||||
|
handleUnionChange() {
|
||||||
|
this.pageForm.unitId = ""
|
||||||
|
this.listUnit()
|
||||||
|
},
|
||||||
|
/** 加载教代会届次选项。 */
|
||||||
|
listSession() {
|
||||||
|
this.$axios.post("/platform/teacherCongress/common/listSession").then((res) => {
|
||||||
|
if (res.code === 0) {
|
||||||
|
this.sessionOptions = res.data || []
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 加载当前账号可见的工会选项。 */
|
||||||
|
listUnion() {
|
||||||
|
this.$businessTool.listUnion().then((data) => {
|
||||||
|
this.unionOptions = data || []
|
||||||
|
})
|
||||||
|
},
|
||||||
|
/** 按当前工会条件加载单位选项。 */
|
||||||
|
listUnit() {
|
||||||
|
this.$businessTool.listUnit(this.pageForm.unionId).then((data) => {
|
||||||
|
this.unitOptions = data || []
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.listSession()
|
||||||
|
this.listUnion()
|
||||||
|
this.listUnit()
|
||||||
|
this.pageData()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<!--#
|
||||||
|
}
|
||||||
|
#-->
|
||||||
Reference in New Issue
Block a user