|
|
@@ -6,36 +6,24 @@ import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import cn.hutool.core.convert.Convert;
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
+import com.alibaba.fastjson.JSONArray;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.StringPool;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.github.yulichang.base.MPJBaseServiceImpl;
|
|
|
import com.github.yulichang.wrapper.MPJLambdaWrapper;
|
|
|
import com.xjrsoft.common.constant.GlobalConstant;
|
|
|
-import com.xjrsoft.common.enums.DeleteMark;
|
|
|
-import com.xjrsoft.common.enums.EnabledMark;
|
|
|
-import com.xjrsoft.common.enums.GenderDictionaryEnum;
|
|
|
-import com.xjrsoft.common.enums.JobStateEnum;
|
|
|
-import com.xjrsoft.common.enums.RoleEnum;
|
|
|
-import com.xjrsoft.common.enums.TeaChangeTypeEnum;
|
|
|
+import com.xjrsoft.common.enums.*;
|
|
|
import com.xjrsoft.common.exception.MyException;
|
|
|
import com.xjrsoft.common.utils.RedisUtil;
|
|
|
import com.xjrsoft.common.utils.VoToColumnUtil;
|
|
|
import com.xjrsoft.config.CommonPropertiesConfig;
|
|
|
import com.xjrsoft.module.hikvision.util.DataUtil;
|
|
|
-import com.xjrsoft.module.organization.entity.Department;
|
|
|
-import com.xjrsoft.module.organization.entity.Post;
|
|
|
-import com.xjrsoft.module.organization.entity.User;
|
|
|
-import com.xjrsoft.module.organization.entity.UserDeptRelation;
|
|
|
-import com.xjrsoft.module.organization.entity.UserPostRelation;
|
|
|
-import com.xjrsoft.module.organization.entity.UserRoleRelation;
|
|
|
+import com.xjrsoft.module.organization.entity.*;
|
|
|
import com.xjrsoft.module.organization.mapper.UserDeptRelationMapper;
|
|
|
import com.xjrsoft.module.organization.mapper.UserRoleRelationMapper;
|
|
|
-import com.xjrsoft.module.organization.service.IDepartmentService;
|
|
|
-import com.xjrsoft.module.organization.service.IPostService;
|
|
|
-import com.xjrsoft.module.organization.service.IUserDeptRelationService;
|
|
|
-import com.xjrsoft.module.organization.service.IUserPostRelationService;
|
|
|
-import com.xjrsoft.module.organization.service.IUserService;
|
|
|
+import com.xjrsoft.module.organization.service.*;
|
|
|
import com.xjrsoft.module.personnel.entity.CarMessageApply;
|
|
|
import com.xjrsoft.module.personnel.mapper.CarMessageApplyMapper;
|
|
|
import com.xjrsoft.module.personnel.service.ITeacherFaceProcessService;
|
|
|
@@ -43,47 +31,36 @@ import com.xjrsoft.module.system.entity.DictionaryDetail;
|
|
|
import com.xjrsoft.module.system.entity.DictionaryItem;
|
|
|
import com.xjrsoft.module.system.service.IDictionarydetailService;
|
|
|
import com.xjrsoft.module.teacher.dto.AddXjrUserDto;
|
|
|
+import com.xjrsoft.module.teacher.dto.BaseTeacherPageDto;
|
|
|
import com.xjrsoft.module.teacher.dto.UpdateXjrUserDto;
|
|
|
-import com.xjrsoft.module.teacher.entity.BaseTeacher;
|
|
|
-import com.xjrsoft.module.teacher.entity.BaseTeacherChangeRecord;
|
|
|
-import com.xjrsoft.module.teacher.entity.BaseTeacherContact;
|
|
|
-import com.xjrsoft.module.teacher.entity.BaseTeacherEducation;
|
|
|
-import com.xjrsoft.module.teacher.entity.BaseTeacherEmploy;
|
|
|
-import com.xjrsoft.module.teacher.entity.BaseTeacherFamily;
|
|
|
-import com.xjrsoft.module.teacher.entity.BaseTeacherFamilyMember;
|
|
|
-import com.xjrsoft.module.teacher.entity.BaseTeacherRegular;
|
|
|
-import com.xjrsoft.module.teacher.entity.WfTeacherDepart;
|
|
|
-import com.xjrsoft.module.teacher.entity.XjrUser;
|
|
|
-import com.xjrsoft.module.teacher.mapper.BaseTeacherChangeRecordMapper;
|
|
|
-import com.xjrsoft.module.teacher.mapper.BaseTeacherContactMapper;
|
|
|
-import com.xjrsoft.module.teacher.mapper.BaseTeacherEducationMapper;
|
|
|
-import com.xjrsoft.module.teacher.mapper.BaseTeacherEmployMapper;
|
|
|
-import com.xjrsoft.module.teacher.mapper.BaseTeacherFamilyMapper;
|
|
|
-import com.xjrsoft.module.teacher.mapper.BaseTeacherFamilyMemberMapper;
|
|
|
-import com.xjrsoft.module.teacher.mapper.BaseTeacherMapper;
|
|
|
-import com.xjrsoft.module.teacher.mapper.BaseTeacherRegularMapper;
|
|
|
-import com.xjrsoft.module.teacher.mapper.WfTeacherDepartMapper;
|
|
|
-import com.xjrsoft.module.teacher.mapper.XjrUserMapper;
|
|
|
+import com.xjrsoft.module.teacher.entity.*;
|
|
|
+import com.xjrsoft.module.teacher.mapper.*;
|
|
|
import com.xjrsoft.module.teacher.service.ITeacherbaseManagerService;
|
|
|
+import com.xjrsoft.module.teacher.vo.*;
|
|
|
import com.xjrsoft.module.workflow.entity.WorkflowFormRelation;
|
|
|
import com.xjrsoft.module.workflow.mapper.WorkflowFormRelationMapper;
|
|
|
import lombok.AllArgsConstructor;
|
|
|
import org.apache.commons.collections.CollectionUtils;
|
|
|
+import org.apache.commons.collections.MapUtils;
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.camunda.bpm.engine.history.HistoricProcessInstance;
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
+import org.springframework.web.multipart.MultipartFile;
|
|
|
|
|
|
+import java.io.IOException;
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.time.LocalDate;
|
|
|
import java.time.LocalDateTime;
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
+import static com.xjrsoft.module.veb.util.ImportExcelUtil.isRequiredFieldsFilled;
|
|
|
+
|
|
|
/**
|
|
|
* @title: service
|
|
|
* @Author 管理员
|
|
|
@@ -95,13 +72,13 @@ import java.util.stream.Collectors;
|
|
|
public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMapper, XjrUser> implements ITeacherbaseManagerService {
|
|
|
private final XjrUserMapper teacherbaseManagerXjrUserMapper;
|
|
|
|
|
|
- private final BaseTeacherMapper teacherbaseManagerBaseTeacherMapper;
|
|
|
- private final BaseTeacherContactMapper teacherbaseManagerBaseTeacherContactMapper;
|
|
|
- private final BaseTeacherEducationMapper teacherbaseManagerBaseTeacherEducationMapper;
|
|
|
- private final BaseTeacherEmployMapper teacherbaseManagerBaseTeacherEmployMapper;
|
|
|
- private final BaseTeacherFamilyMapper teacherbaseManagerBaseTeacherFamilyMapper;
|
|
|
- private final BaseTeacherFamilyMemberMapper teacherbaseManagerBaseTeacherFamilyMemberMapper;
|
|
|
- private final BaseTeacherRegularMapper teacherbaseManagerBaseTeacherRegularMapper;
|
|
|
+ private final BaseTeacherMapper teacherMapper;
|
|
|
+ private final BaseTeacherContactMapper teacherContactMapper;
|
|
|
+ private final BaseTeacherEducationMapper teacherEducationMapper;
|
|
|
+ private final BaseTeacherEmployMapper teacherEmployMapper;
|
|
|
+ private final BaseTeacherFamilyMapper baseTeacherFamilyMapper;
|
|
|
+ private final BaseTeacherFamilyMemberMapper familyMemberMapper;
|
|
|
+ private final BaseTeacherRegularMapper teacherRegularMapper;
|
|
|
|
|
|
private final UserRoleRelationMapper userRoleRelationMapper;
|
|
|
private final IUserDeptRelationService userDeptRelationService;
|
|
|
@@ -113,18 +90,22 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
private final IDictionarydetailService dictionaryService;
|
|
|
private final IDepartmentService departmentService;
|
|
|
private final IPostService postService;
|
|
|
- private final BaseTeacherMapper baseTeacherMapper;
|
|
|
+ private final ITeacherFaceProcessService teacherFaceProcessService;
|
|
|
+ private final CarMessageApplyMapper carMessageApplyMapper;
|
|
|
private IDictionarydetailService dictionarydetailService;
|
|
|
-
|
|
|
private WfTeacherDepartMapper wfTeacherDepartMapper;
|
|
|
-
|
|
|
private BaseTeacherChangeRecordMapper baseTeacherChangeRecordMapper;
|
|
|
-
|
|
|
private WorkflowFormRelationMapper workflowFormRelationMapper;
|
|
|
|
|
|
- private final ITeacherFaceProcessService teacherFaceProcessService;
|
|
|
- private final CarMessageApplyMapper carMessageApplyMapper;
|
|
|
-
|
|
|
+ private ProfessionalTitleMapper professionalTitleMapper;
|
|
|
+ private TeacherCertificationMapper teacherCertificationMapper;
|
|
|
+ private EvaluatorInformationMapper evaluatorInformationMapper;
|
|
|
+ private LanguageCompetenceMapper languageCompetenceMapper;
|
|
|
+ private FacultyContractMapper facultyContractMapper;
|
|
|
+ private OutsideAssociationsMapper outsideAssociationsMapper;
|
|
|
+ private CoreTeacherMapper coreTeacherMapper;
|
|
|
+ private ScientificResearchMapper scientificResearchMapper;
|
|
|
+ private JobInformationMapper jobInformationMapper;
|
|
|
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@@ -157,31 +138,31 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- teacherbaseManagerBaseTeacherMapper.insert(baseTeacher);
|
|
|
+ teacherMapper.insert(baseTeacher);
|
|
|
}
|
|
|
for (BaseTeacherContact baseTeacherContact : xjrUser.getBaseTeacherContactList()) {
|
|
|
baseTeacherContact.setUserId(xjrUser.getId());
|
|
|
- teacherbaseManagerBaseTeacherContactMapper.insert(baseTeacherContact);
|
|
|
+ teacherContactMapper.insert(baseTeacherContact);
|
|
|
}
|
|
|
for (BaseTeacherEducation baseTeacherEducation : xjrUser.getBaseTeacherEducationList()) {
|
|
|
baseTeacherEducation.setUserId(xjrUser.getId());
|
|
|
- teacherbaseManagerBaseTeacherEducationMapper.insert(baseTeacherEducation);
|
|
|
+ teacherEducationMapper.insert(baseTeacherEducation);
|
|
|
}
|
|
|
for (BaseTeacherEmploy baseTeacherEmploy : xjrUser.getBaseTeacherEmployList()) {
|
|
|
baseTeacherEmploy.setUserId(xjrUser.getId());
|
|
|
- teacherbaseManagerBaseTeacherEmployMapper.insert(baseTeacherEmploy);
|
|
|
+ teacherEmployMapper.insert(baseTeacherEmploy);
|
|
|
}
|
|
|
for (BaseTeacherFamily baseTeacherFamily : xjrUser.getBaseTeacherFamilyList()) {
|
|
|
baseTeacherFamily.setUserId(xjrUser.getId());
|
|
|
- teacherbaseManagerBaseTeacherFamilyMapper.insert(baseTeacherFamily);
|
|
|
+ baseTeacherFamilyMapper.insert(baseTeacherFamily);
|
|
|
}
|
|
|
for (BaseTeacherFamilyMember baseTeacherFamilyMember : xjrUser.getBaseTeacherFamilyMemberList()) {
|
|
|
baseTeacherFamilyMember.setUserId(xjrUser.getId());
|
|
|
- teacherbaseManagerBaseTeacherFamilyMemberMapper.insert(baseTeacherFamilyMember);
|
|
|
+ familyMemberMapper.insert(baseTeacherFamilyMember);
|
|
|
}
|
|
|
for (BaseTeacherRegular baseTeacherRegular : xjrUser.getBaseTeacherRegularList()) {
|
|
|
baseTeacherRegular.setUserId(xjrUser.getId());
|
|
|
- teacherbaseManagerBaseTeacherRegularMapper.insert(baseTeacherRegular);
|
|
|
+ teacherRegularMapper.insert(baseTeacherRegular);
|
|
|
}
|
|
|
|
|
|
List<UserDeptRelation> userDeptRelationList = new ArrayList<>();
|
|
|
@@ -240,7 +221,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean update(UpdateXjrUserDto dto) {
|
|
|
XjrUser old = this.getByIdDeep(dto.getId());
|
|
|
- if(ObjectUtils.isEmpty(old)){
|
|
|
+ if (ObjectUtils.isEmpty(old)) {
|
|
|
throw new MyException("教职工信息不存在");
|
|
|
}
|
|
|
|
|
|
@@ -298,7 +279,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
baseTeacherChangeRecordMapper.insert(insetBaseTeacherChangeRecord);
|
|
|
|
|
|
//如果在职状态改为了非在职,禁用账号,并清空海康相关信息
|
|
|
- if(!JobStateEnum.isBeOnTheJobByCode(oldJobState)){
|
|
|
+ if (!JobStateEnum.isBeOnTheJobByCode(oldJobState)) {
|
|
|
disabledUser(dto.getId());
|
|
|
}
|
|
|
}
|
|
|
@@ -345,7 +326,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
//********************************* BaseTeacher 增删改 开始 *******************************************/
|
|
|
{
|
|
|
// 查出所有子级的id
|
|
|
- List<BaseTeacher> baseTeacherList = teacherbaseManagerBaseTeacherMapper.selectList(Wrappers.lambdaQuery(BaseTeacher.class).eq(BaseTeacher::getUserId, xjrUser.getId()).select(BaseTeacher::getId));
|
|
|
+ List<BaseTeacher> baseTeacherList = teacherMapper.selectList(Wrappers.lambdaQuery(BaseTeacher.class).eq(BaseTeacher::getUserId, xjrUser.getId()).select(BaseTeacher::getId));
|
|
|
List<Long> baseTeacherIds = baseTeacherList.stream().map(BaseTeacher::getId).collect(Collectors.toList());
|
|
|
//原有子表单 没有被删除的主键
|
|
|
List<Long> baseTeacherOldIds = xjrUser.getBaseTeacherList().stream().map(BaseTeacher::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
@@ -373,18 +354,18 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
|
|
|
//如果不等于空则修改
|
|
|
if (baseTeacher.getId() != null) {
|
|
|
- teacherbaseManagerBaseTeacherMapper.updateById(baseTeacher);
|
|
|
+ teacherMapper.updateById(baseTeacher);
|
|
|
}
|
|
|
//如果等于空 则新增
|
|
|
else {
|
|
|
//已经不存在的id 删除
|
|
|
baseTeacher.setUserId(xjrUser.getId());
|
|
|
- teacherbaseManagerBaseTeacherMapper.insert(baseTeacher);
|
|
|
+ teacherMapper.insert(baseTeacher);
|
|
|
}
|
|
|
}
|
|
|
//已经不存在的id 删除
|
|
|
if (baseTeacherRemoveIds.size() > 0) {
|
|
|
- teacherbaseManagerBaseTeacherMapper.deleteBatchIds(baseTeacherRemoveIds);
|
|
|
+ teacherMapper.deleteBatchIds(baseTeacherRemoveIds);
|
|
|
}
|
|
|
}
|
|
|
//********************************* BaseTeacher 增删改 结束 *******************************************/
|
|
|
@@ -392,7 +373,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
//********************************* BaseTeacherContact 增删改 开始 *******************************************/
|
|
|
{
|
|
|
// 查出所有子级的id
|
|
|
- List<BaseTeacherContact> baseTeacherContactList = teacherbaseManagerBaseTeacherContactMapper.selectList(Wrappers.lambdaQuery(BaseTeacherContact.class).eq(BaseTeacherContact::getUserId, xjrUser.getId()).select(BaseTeacherContact::getId));
|
|
|
+ List<BaseTeacherContact> baseTeacherContactList = teacherContactMapper.selectList(Wrappers.lambdaQuery(BaseTeacherContact.class).eq(BaseTeacherContact::getUserId, xjrUser.getId()).select(BaseTeacherContact::getId));
|
|
|
List<Long> baseTeacherContactIds = baseTeacherContactList.stream().map(BaseTeacherContact::getId).collect(Collectors.toList());
|
|
|
//原有子表单 没有被删除的主键
|
|
|
List<Long> baseTeacherContactOldIds = xjrUser.getBaseTeacherContactList().stream().map(BaseTeacherContact::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
@@ -402,18 +383,18 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
for (BaseTeacherContact baseTeacherContact : xjrUser.getBaseTeacherContactList()) {
|
|
|
//如果不等于空则修改
|
|
|
if (baseTeacherContact.getId() != null) {
|
|
|
- teacherbaseManagerBaseTeacherContactMapper.updateById(baseTeacherContact);
|
|
|
+ teacherContactMapper.updateById(baseTeacherContact);
|
|
|
}
|
|
|
//如果等于空 则新增
|
|
|
else {
|
|
|
//已经不存在的id 删除
|
|
|
baseTeacherContact.setUserId(xjrUser.getId());
|
|
|
- teacherbaseManagerBaseTeacherContactMapper.insert(baseTeacherContact);
|
|
|
+ teacherContactMapper.insert(baseTeacherContact);
|
|
|
}
|
|
|
}
|
|
|
//已经不存在的id 删除
|
|
|
if (baseTeacherContactRemoveIds.size() > 0) {
|
|
|
- teacherbaseManagerBaseTeacherContactMapper.deleteBatchIds(baseTeacherContactRemoveIds);
|
|
|
+ teacherContactMapper.deleteBatchIds(baseTeacherContactRemoveIds);
|
|
|
}
|
|
|
}
|
|
|
//********************************* BaseTeacherContact 增删改 结束 *******************************************/
|
|
|
@@ -421,7 +402,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
//********************************* BaseTeacherEducation 增删改 开始 *******************************************/
|
|
|
{
|
|
|
// 查出所有子级的id
|
|
|
- List<BaseTeacherEducation> baseTeacherEducationList = teacherbaseManagerBaseTeacherEducationMapper.selectList(Wrappers.lambdaQuery(BaseTeacherEducation.class).eq(BaseTeacherEducation::getUserId, xjrUser.getId()).select(BaseTeacherEducation::getId));
|
|
|
+ List<BaseTeacherEducation> baseTeacherEducationList = teacherEducationMapper.selectList(Wrappers.lambdaQuery(BaseTeacherEducation.class).eq(BaseTeacherEducation::getUserId, xjrUser.getId()).select(BaseTeacherEducation::getId));
|
|
|
List<Long> baseTeacherEducationIds = baseTeacherEducationList.stream().map(BaseTeacherEducation::getId).collect(Collectors.toList());
|
|
|
//原有子表单 没有被删除的主键
|
|
|
List<Long> baseTeacherEducationOldIds = xjrUser.getBaseTeacherEducationList().stream().map(BaseTeacherEducation::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
@@ -431,18 +412,18 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
for (BaseTeacherEducation baseTeacherEducation : xjrUser.getBaseTeacherEducationList()) {
|
|
|
//如果不等于空则修改
|
|
|
if (baseTeacherEducation.getId() != null) {
|
|
|
- teacherbaseManagerBaseTeacherEducationMapper.updateById(baseTeacherEducation);
|
|
|
+ teacherEducationMapper.updateById(baseTeacherEducation);
|
|
|
}
|
|
|
//如果等于空 则新增
|
|
|
else {
|
|
|
//已经不存在的id 删除
|
|
|
baseTeacherEducation.setUserId(xjrUser.getId());
|
|
|
- teacherbaseManagerBaseTeacherEducationMapper.insert(baseTeacherEducation);
|
|
|
+ teacherEducationMapper.insert(baseTeacherEducation);
|
|
|
}
|
|
|
}
|
|
|
//已经不存在的id 删除
|
|
|
if (baseTeacherEducationRemoveIds.size() > 0) {
|
|
|
- teacherbaseManagerBaseTeacherEducationMapper.deleteBatchIds(baseTeacherEducationRemoveIds);
|
|
|
+ teacherEducationMapper.deleteBatchIds(baseTeacherEducationRemoveIds);
|
|
|
}
|
|
|
}
|
|
|
//********************************* BaseTeacherEducation 增删改 结束 *******************************************/
|
|
|
@@ -450,7 +431,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
//********************************* BaseTeacherEmploy 增删改 开始 *******************************************/
|
|
|
{
|
|
|
// 查出所有子级的id
|
|
|
- List<BaseTeacherEmploy> baseTeacherEmployList = teacherbaseManagerBaseTeacherEmployMapper.selectList(Wrappers.lambdaQuery(BaseTeacherEmploy.class).eq(BaseTeacherEmploy::getUserId, xjrUser.getId()).select(BaseTeacherEmploy::getId));
|
|
|
+ List<BaseTeacherEmploy> baseTeacherEmployList = teacherEmployMapper.selectList(Wrappers.lambdaQuery(BaseTeacherEmploy.class).eq(BaseTeacherEmploy::getUserId, xjrUser.getId()).select(BaseTeacherEmploy::getId));
|
|
|
List<Long> baseTeacherEmployIds = baseTeacherEmployList.stream().map(BaseTeacherEmploy::getId).collect(Collectors.toList());
|
|
|
//原有子表单 没有被删除的主键
|
|
|
List<Long> baseTeacherEmployOldIds = xjrUser.getBaseTeacherEmployList().stream().map(BaseTeacherEmploy::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
@@ -460,18 +441,18 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
for (BaseTeacherEmploy baseTeacherEmploy : xjrUser.getBaseTeacherEmployList()) {
|
|
|
//如果不等于空则修改
|
|
|
if (baseTeacherEmploy.getId() != null) {
|
|
|
- teacherbaseManagerBaseTeacherEmployMapper.updateById(baseTeacherEmploy);
|
|
|
+ teacherEmployMapper.updateById(baseTeacherEmploy);
|
|
|
}
|
|
|
//如果等于空 则新增
|
|
|
else {
|
|
|
//已经不存在的id 删除
|
|
|
baseTeacherEmploy.setUserId(xjrUser.getId());
|
|
|
- teacherbaseManagerBaseTeacherEmployMapper.insert(baseTeacherEmploy);
|
|
|
+ teacherEmployMapper.insert(baseTeacherEmploy);
|
|
|
}
|
|
|
}
|
|
|
//已经不存在的id 删除
|
|
|
if (baseTeacherEmployRemoveIds.size() > 0) {
|
|
|
- teacherbaseManagerBaseTeacherEmployMapper.deleteBatchIds(baseTeacherEmployRemoveIds);
|
|
|
+ teacherEmployMapper.deleteBatchIds(baseTeacherEmployRemoveIds);
|
|
|
}
|
|
|
}
|
|
|
//********************************* BaseTeacherEmploy 增删改 结束 *******************************************/
|
|
|
@@ -479,7 +460,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
//********************************* BaseTeacherFamily 增删改 开始 *******************************************/
|
|
|
{
|
|
|
// 查出所有子级的id
|
|
|
- List<BaseTeacherFamily> baseTeacherFamilyList = teacherbaseManagerBaseTeacherFamilyMapper.selectList(Wrappers.lambdaQuery(BaseTeacherFamily.class).eq(BaseTeacherFamily::getUserId, xjrUser.getId()).select(BaseTeacherFamily::getId));
|
|
|
+ List<BaseTeacherFamily> baseTeacherFamilyList = baseTeacherFamilyMapper.selectList(Wrappers.lambdaQuery(BaseTeacherFamily.class).eq(BaseTeacherFamily::getUserId, xjrUser.getId()).select(BaseTeacherFamily::getId));
|
|
|
List<Long> baseTeacherFamilyIds = baseTeacherFamilyList.stream().map(BaseTeacherFamily::getId).collect(Collectors.toList());
|
|
|
//原有子表单 没有被删除的主键
|
|
|
List<Long> baseTeacherFamilyOldIds = xjrUser.getBaseTeacherFamilyList().stream().map(BaseTeacherFamily::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
@@ -489,18 +470,18 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
for (BaseTeacherFamily baseTeacherFamily : xjrUser.getBaseTeacherFamilyList()) {
|
|
|
//如果不等于空则修改
|
|
|
if (baseTeacherFamily.getId() != null) {
|
|
|
- teacherbaseManagerBaseTeacherFamilyMapper.updateById(baseTeacherFamily);
|
|
|
+ baseTeacherFamilyMapper.updateById(baseTeacherFamily);
|
|
|
}
|
|
|
//如果等于空 则新增
|
|
|
else {
|
|
|
//已经不存在的id 删除
|
|
|
baseTeacherFamily.setUserId(xjrUser.getId());
|
|
|
- teacherbaseManagerBaseTeacherFamilyMapper.insert(baseTeacherFamily);
|
|
|
+ baseTeacherFamilyMapper.insert(baseTeacherFamily);
|
|
|
}
|
|
|
}
|
|
|
//已经不存在的id 删除
|
|
|
if (baseTeacherFamilyRemoveIds.size() > 0) {
|
|
|
- teacherbaseManagerBaseTeacherFamilyMapper.deleteBatchIds(baseTeacherFamilyRemoveIds);
|
|
|
+ baseTeacherFamilyMapper.deleteBatchIds(baseTeacherFamilyRemoveIds);
|
|
|
}
|
|
|
}
|
|
|
//********************************* BaseTeacherFamily 增删改 结束 *******************************************/
|
|
|
@@ -508,7 +489,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
//********************************* BaseTeacherFamilyMember 增删改 开始 *******************************************/
|
|
|
{
|
|
|
// 查出所有子级的id
|
|
|
- List<BaseTeacherFamilyMember> baseTeacherFamilyMemberList = teacherbaseManagerBaseTeacherFamilyMemberMapper.selectList(Wrappers.lambdaQuery(BaseTeacherFamilyMember.class).eq(BaseTeacherFamilyMember::getUserId, xjrUser.getId()).select(BaseTeacherFamilyMember::getId));
|
|
|
+ List<BaseTeacherFamilyMember> baseTeacherFamilyMemberList = familyMemberMapper.selectList(Wrappers.lambdaQuery(BaseTeacherFamilyMember.class).eq(BaseTeacherFamilyMember::getUserId, xjrUser.getId()).select(BaseTeacherFamilyMember::getId));
|
|
|
List<Long> baseTeacherFamilyMemberIds = baseTeacherFamilyMemberList.stream().map(BaseTeacherFamilyMember::getId).collect(Collectors.toList());
|
|
|
//原有子表单 没有被删除的主键
|
|
|
List<Long> baseTeacherFamilyMemberOldIds = xjrUser.getBaseTeacherFamilyMemberList().stream().map(BaseTeacherFamilyMember::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
@@ -518,18 +499,18 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
for (BaseTeacherFamilyMember baseTeacherFamilyMember : xjrUser.getBaseTeacherFamilyMemberList()) {
|
|
|
//如果不等于空则修改
|
|
|
if (baseTeacherFamilyMember.getId() != null) {
|
|
|
- teacherbaseManagerBaseTeacherFamilyMemberMapper.updateById(baseTeacherFamilyMember);
|
|
|
+ familyMemberMapper.updateById(baseTeacherFamilyMember);
|
|
|
}
|
|
|
//如果等于空 则新增
|
|
|
else {
|
|
|
//已经不存在的id 删除
|
|
|
baseTeacherFamilyMember.setUserId(xjrUser.getId());
|
|
|
- teacherbaseManagerBaseTeacherFamilyMemberMapper.insert(baseTeacherFamilyMember);
|
|
|
+ familyMemberMapper.insert(baseTeacherFamilyMember);
|
|
|
}
|
|
|
}
|
|
|
//已经不存在的id 删除
|
|
|
if (baseTeacherFamilyMemberRemoveIds.size() > 0) {
|
|
|
- teacherbaseManagerBaseTeacherFamilyMemberMapper.deleteBatchIds(baseTeacherFamilyMemberRemoveIds);
|
|
|
+ familyMemberMapper.deleteBatchIds(baseTeacherFamilyMemberRemoveIds);
|
|
|
}
|
|
|
}
|
|
|
//********************************* BaseTeacherFamilyMember 增删改 结束 *******************************************/
|
|
|
@@ -537,7 +518,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
//********************************* BaseTeacherRegular 增删改 开始 *******************************************/
|
|
|
{
|
|
|
// 查出所有子级的id
|
|
|
- List<BaseTeacherRegular> baseTeacherRegularList = teacherbaseManagerBaseTeacherRegularMapper.selectList(Wrappers.lambdaQuery(BaseTeacherRegular.class).eq(BaseTeacherRegular::getUserId, xjrUser.getId()).select(BaseTeacherRegular::getId));
|
|
|
+ List<BaseTeacherRegular> baseTeacherRegularList = teacherRegularMapper.selectList(Wrappers.lambdaQuery(BaseTeacherRegular.class).eq(BaseTeacherRegular::getUserId, xjrUser.getId()).select(BaseTeacherRegular::getId));
|
|
|
List<Long> baseTeacherRegularIds = baseTeacherRegularList.stream().map(BaseTeacherRegular::getId).collect(Collectors.toList());
|
|
|
//原有子表单 没有被删除的主键
|
|
|
List<Long> baseTeacherRegularOldIds = xjrUser.getBaseTeacherRegularList().stream().map(BaseTeacherRegular::getId).filter(Objects::nonNull).collect(Collectors.toList());
|
|
|
@@ -547,18 +528,18 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
for (BaseTeacherRegular baseTeacherRegular : xjrUser.getBaseTeacherRegularList()) {
|
|
|
//如果不等于空则修改
|
|
|
if (baseTeacherRegular.getId() != null) {
|
|
|
- teacherbaseManagerBaseTeacherRegularMapper.updateById(baseTeacherRegular);
|
|
|
+ teacherRegularMapper.updateById(baseTeacherRegular);
|
|
|
}
|
|
|
//如果等于空 则新增
|
|
|
else {
|
|
|
//已经不存在的id 删除
|
|
|
baseTeacherRegular.setUserId(xjrUser.getId());
|
|
|
- teacherbaseManagerBaseTeacherRegularMapper.insert(baseTeacherRegular);
|
|
|
+ teacherRegularMapper.insert(baseTeacherRegular);
|
|
|
}
|
|
|
}
|
|
|
//已经不存在的id 删除
|
|
|
if (baseTeacherRegularRemoveIds.size() > 0) {
|
|
|
- teacherbaseManagerBaseTeacherRegularMapper.deleteBatchIds(baseTeacherRegularRemoveIds);
|
|
|
+ teacherRegularMapper.deleteBatchIds(baseTeacherRegularRemoveIds);
|
|
|
}
|
|
|
}
|
|
|
//********************************* BaseTeacherRegular 增删改 结束 *******************************************/
|
|
|
@@ -570,13 +551,13 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Boolean delete(List<Long> ids) {
|
|
|
teacherbaseManagerXjrUserMapper.deleteBatchIds(ids);
|
|
|
- teacherbaseManagerBaseTeacherMapper.delete(Wrappers.lambdaQuery(BaseTeacher.class).in(BaseTeacher::getUserId, ids));
|
|
|
- teacherbaseManagerBaseTeacherContactMapper.delete(Wrappers.lambdaQuery(BaseTeacherContact.class).in(BaseTeacherContact::getUserId, ids));
|
|
|
- teacherbaseManagerBaseTeacherEducationMapper.delete(Wrappers.lambdaQuery(BaseTeacherEducation.class).in(BaseTeacherEducation::getUserId, ids));
|
|
|
- teacherbaseManagerBaseTeacherEmployMapper.delete(Wrappers.lambdaQuery(BaseTeacherEmploy.class).in(BaseTeacherEmploy::getUserId, ids));
|
|
|
- teacherbaseManagerBaseTeacherFamilyMapper.delete(Wrappers.lambdaQuery(BaseTeacherFamily.class).in(BaseTeacherFamily::getUserId, ids));
|
|
|
- teacherbaseManagerBaseTeacherFamilyMemberMapper.delete(Wrappers.lambdaQuery(BaseTeacherFamilyMember.class).in(BaseTeacherFamilyMember::getUserId, ids));
|
|
|
- teacherbaseManagerBaseTeacherRegularMapper.delete(Wrappers.lambdaQuery(BaseTeacherRegular.class).in(BaseTeacherRegular::getUserId, ids));
|
|
|
+ teacherMapper.delete(Wrappers.lambdaQuery(BaseTeacher.class).in(BaseTeacher::getUserId, ids));
|
|
|
+ teacherContactMapper.delete(Wrappers.lambdaQuery(BaseTeacherContact.class).in(BaseTeacherContact::getUserId, ids));
|
|
|
+ teacherEducationMapper.delete(Wrappers.lambdaQuery(BaseTeacherEducation.class).in(BaseTeacherEducation::getUserId, ids));
|
|
|
+ teacherEmployMapper.delete(Wrappers.lambdaQuery(BaseTeacherEmploy.class).in(BaseTeacherEmploy::getUserId, ids));
|
|
|
+ baseTeacherFamilyMapper.delete(Wrappers.lambdaQuery(BaseTeacherFamily.class).in(BaseTeacherFamily::getUserId, ids));
|
|
|
+ familyMemberMapper.delete(Wrappers.lambdaQuery(BaseTeacherFamilyMember.class).in(BaseTeacherFamilyMember::getUserId, ids));
|
|
|
+ teacherRegularMapper.delete(Wrappers.lambdaQuery(BaseTeacherRegular.class).in(BaseTeacherRegular::getUserId, ids));
|
|
|
|
|
|
return true;
|
|
|
}
|
|
|
@@ -591,16 +572,16 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
*/
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
- public Boolean importData(List<Map<Integer, Object>> excelDataList) {
|
|
|
+ public Boolean importData(List<Map<Integer, Object>> excelDataList) throws ParseException {
|
|
|
List<User> userList = userService.list(
|
|
|
new MPJLambdaWrapper<User>()
|
|
|
.select(User::getId)
|
|
|
.select(User.class, x -> VoToColumnUtil.fieldsToColumns(User.class).contains(x.getProperty()))
|
|
|
.innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
|
|
|
);
|
|
|
- Map<String, User> userMap = userList.stream().collect(Collectors.toMap(User::getUserName, x -> x));
|
|
|
+ Map<String, User> userMap = userList.stream().collect(Collectors.toMap(User::getCredentialNumber, x -> x));
|
|
|
|
|
|
- List<BaseTeacher> teacherList = teacherbaseManagerBaseTeacherMapper.selectJoinList(BaseTeacher.class,
|
|
|
+ List<BaseTeacher> teacherList = teacherMapper.selectJoinList(BaseTeacher.class,
|
|
|
new MPJLambdaWrapper<BaseTeacher>()
|
|
|
.select(BaseTeacher::getId)
|
|
|
.select(BaseTeacher.class, x -> VoToColumnUtil.fieldsToColumns(BaseTeacher.class).contains(x.getProperty()))
|
|
|
@@ -611,6 +592,8 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
List<Long> itemList = new ArrayList<>();
|
|
|
itemList.add(2023000000000000016L);
|
|
|
itemList.add(2023000000000000006L);
|
|
|
+ itemList.add(2023000000000000005L);
|
|
|
+ itemList.add(2023000000000000020L);
|
|
|
|
|
|
List<DictionaryDetail> dictionaryList = dictionaryService.list(
|
|
|
new QueryWrapper<DictionaryDetail>().lambda()
|
|
|
@@ -648,18 +631,30 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
.innerJoin(User.class, User::getId, UserDeptRelation::getUserId)
|
|
|
.innerJoin(BaseTeacher.class, BaseTeacher::getUserId, User::getId)
|
|
|
);
|
|
|
- Map<Long, List<Long>> userDeptMap = postRelations.stream()
|
|
|
- .collect(Collectors.groupingBy(UserPostRelation::getUserId, Collectors.mapping(UserPostRelation::getPostId, Collectors.toList())));
|
|
|
+ Map<Long, List<Long>> userDeptMap = deptRelations.stream()
|
|
|
+ .collect(Collectors.groupingBy(UserDeptRelation::getUserId, Collectors.mapping(UserDeptRelation::getDeptId, Collectors.toList())));
|
|
|
+
|
|
|
+ List<BaseTeacherRegular> regularList = teacherRegularMapper.selectList(
|
|
|
+ new MPJLambdaWrapper<BaseTeacherRegular>()
|
|
|
+ .select(BaseTeacherRegular::getId)
|
|
|
+ .select(BaseTeacherRegular.class, x -> VoToColumnUtil.fieldsToColumns(BaseTeacherRegular.class).contains(x.getProperty()))
|
|
|
+ .innerJoin(User.class, User::getId, BaseTeacherRegular::getUserId)
|
|
|
+ );
|
|
|
+ Map<Long, BaseTeacherRegular> regularMap = regularList.stream()
|
|
|
+ .collect(Collectors.toMap(BaseTeacherRegular::getUserId, x -> x));
|
|
|
|
|
|
List<User> updateUserList = new ArrayList<>();
|
|
|
List<BaseTeacher> updateTeacherList = new ArrayList<>();
|
|
|
List<UserDeptRelation> updateDeptList = new ArrayList<>();
|
|
|
List<UserPostRelation> updatePostList = new ArrayList<>();
|
|
|
+ List<BaseTeacherRegular> updateBaseTeacherRegularList = new ArrayList<>();
|
|
|
+
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
|
|
|
|
|
|
for (Map<Integer, Object> rowData : excelDataList) {
|
|
|
- String jobCode = rowData.get(0).toString();
|
|
|
- if (userMap.containsKey(jobCode)) {
|
|
|
- User user = userMap.get(jobCode);
|
|
|
+ String credentialNumber = rowData.get(4).toString();
|
|
|
+ if (userMap.containsKey(credentialNumber)) {
|
|
|
+ User user = userMap.get(credentialNumber);
|
|
|
user.setName(rowData.get(1).toString());
|
|
|
user.setGender(GenderDictionaryEnum.getCode(rowData.get(2).toString()));
|
|
|
user.setCredentialType(dictionaryMap.get(rowData.get(3).toString()));
|
|
|
@@ -669,8 +664,24 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
|
|
|
BaseTeacher teacher = teacherMap.get(user.getId());
|
|
|
teacher.setEmployType(dictionaryMap.get(rowData.get(6).toString()));
|
|
|
+ if(rowData.get(9) != null && StrUtil.isNotEmpty(rowData.get(9).toString())){
|
|
|
+ teacher.setJobState(dictionaryMap.get(rowData.get(9).toString()));
|
|
|
+ }
|
|
|
+ if(rowData.get(10) != null && StrUtil.isNotEmpty(rowData.get(10).toString())){
|
|
|
+ teacher.setJoinTime(sdf.parse(rowData.get(10).toString()));
|
|
|
+ }
|
|
|
+
|
|
|
updateTeacherList.add(teacher);
|
|
|
|
|
|
+ if(rowData.get(11) != null && StrUtil.isNotEmpty(rowData.get(11).toString())){
|
|
|
+ BaseTeacherRegular teacherRegular = regularMap.get(user.getId());
|
|
|
+ JSONArray teachingStatus = teacherRegular.getTeachingStatus();
|
|
|
+ teachingStatus.add(dictionaryMap.get(rowData.get(11).toString()));
|
|
|
+ teacherRegular.setTeachingStatus(teachingStatus);
|
|
|
+ updateBaseTeacherRegularList.add(teacherRegular);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
List<Long> deptIds = userDeptMap.get(user.getId());
|
|
|
if (deptIds == null || !deptIds.contains(departmentMap.get(rowData.get(7).toString()))) {
|
|
|
UserDeptRelation userDeptRelation = new UserDeptRelation();
|
|
|
@@ -705,7 +716,28 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
teacher.setEmployType(dictionaryMap.get(rowData.get(6).toString()));
|
|
|
teacher.setUserId(user.getId());
|
|
|
teacher.setCreateDate(LocalDateTime.now());
|
|
|
- teacherbaseManagerBaseTeacherMapper.insert(teacher);
|
|
|
+ if(rowData.get(9) != null && StrUtil.isNotEmpty(rowData.get(9).toString())){
|
|
|
+ teacher.setJobState(dictionaryMap.get(rowData.get(9).toString()));
|
|
|
+ }
|
|
|
+
|
|
|
+ if(rowData.get(10) != null && StrUtil.isNotEmpty(rowData.get(10).toString())){
|
|
|
+ teacher.setJoinTime(sdf.parse(rowData.get(10).toString()));
|
|
|
+ }
|
|
|
+
|
|
|
+ teacherMapper.insert(teacher);
|
|
|
+
|
|
|
+ if(rowData.get(11) != null && StrUtil.isNotEmpty(rowData.get(11).toString())){
|
|
|
+ BaseTeacherRegular teacherRegular = new BaseTeacherRegular();
|
|
|
+ JSONArray teachingStatus = new JSONArray();
|
|
|
+ teachingStatus.add(dictionaryMap.get(rowData.get(11).toString()));
|
|
|
+ teacherRegular.setTeachingStatus(teachingStatus);
|
|
|
+ teacherRegular.setCreateDate(LocalDateTime.now());
|
|
|
+ teacherRegular.setCreateUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ teacherRegular.setUserId(user.getId());
|
|
|
+ teacherRegular.setDeleteMark(DeleteMark.NODELETE.getCode());
|
|
|
+ teacherRegular.setEnabledMark(EnabledMark.ENABLED.getCode());
|
|
|
+ teacherRegularMapper.insert(teacherRegular);
|
|
|
+ }
|
|
|
|
|
|
UserDeptRelation userDeptRelation = new UserDeptRelation();
|
|
|
userDeptRelation.setDeptId(departmentMap.get(rowData.get(7).toString()));
|
|
|
@@ -736,7 +768,13 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
}
|
|
|
if (!updateTeacherList.isEmpty()) {
|
|
|
for (BaseTeacher teacher : updateTeacherList) {
|
|
|
- teacherbaseManagerBaseTeacherMapper.updateById(teacher);
|
|
|
+ teacherMapper.updateById(teacher);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!updateBaseTeacherRegularList.isEmpty()) {
|
|
|
+ for (BaseTeacherRegular teacherRegular : updateBaseTeacherRegularList) {
|
|
|
+ teacherRegularMapper.updateById(teacherRegular);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -758,11 +796,11 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
@Override
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public void changeIsNormal(String jobState, Integer isNormal) {
|
|
|
- List<BaseTeacher> baseTeacherList = teacherbaseManagerBaseTeacherMapper.selectList(Wrappers.lambdaQuery(BaseTeacher.class)
|
|
|
+ List<BaseTeacher> baseTeacherList = teacherMapper.selectList(Wrappers.lambdaQuery(BaseTeacher.class)
|
|
|
.eq(BaseTeacher::getJobState, jobState));
|
|
|
for (BaseTeacher baseTeacher : baseTeacherList) {
|
|
|
baseTeacher.setIsNormal(isNormal);
|
|
|
- teacherbaseManagerBaseTeacherMapper.updateById(baseTeacher);
|
|
|
+ teacherMapper.updateById(baseTeacher);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -785,7 +823,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
&& HistoricProcessInstance.STATE_COMPLETED.equals(workflowFormRelation.getCurrentState())
|
|
|
) {
|
|
|
XjrUser old = this.getByIdDeep(wfTextbookRecede.getApplicantUserId());
|
|
|
- if(ObjectUtils.isEmpty(old)){
|
|
|
+ if (ObjectUtils.isEmpty(old)) {
|
|
|
throw new MyException("教职工信息不存在");
|
|
|
}
|
|
|
|
|
|
@@ -793,11 +831,11 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
// 更新教职工在职状态
|
|
|
List<BaseTeacher> baseTeacherList = old.getBaseTeacherList();
|
|
|
BaseTeacher updateBaseTeacher;
|
|
|
- for (BaseTeacher baseTeacher : baseTeacherList){
|
|
|
+ for (BaseTeacher baseTeacher : baseTeacherList) {
|
|
|
updateBaseTeacher = new BaseTeacher();
|
|
|
updateBaseTeacher.setId(baseTeacher.getId());
|
|
|
updateBaseTeacher.setJobState("JOB_LZ");
|
|
|
- baseTeacherMapper.updateById(updateBaseTeacher);
|
|
|
+ teacherMapper.updateById(updateBaseTeacher);
|
|
|
}
|
|
|
|
|
|
// 处理变更记录
|
|
|
@@ -878,4 +916,814 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
|
|
|
);
|
|
|
dataUtil.deleteCar(carList);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<XjrUserPageVo> getList(BaseTeacherPageDto dto) {
|
|
|
+ return teacherMapper.getList(dto);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String professionalTitle(MultipartFile file) throws IOException, IllegalAccessException {
|
|
|
+ // 读取 Excel 数据
|
|
|
+ List<ProfessionalTitleImportVo> excelDataList = EasyExcel.read(file.getInputStream())
|
|
|
+ .headRowNumber(1)
|
|
|
+ .head(ProfessionalTitleImportVo.class)
|
|
|
+ .sheet()
|
|
|
+ .doReadSync();
|
|
|
+
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+
|
|
|
+ Map<String, XjrUser> mapByUsernameAndName = getUserMap();
|
|
|
+
|
|
|
+ if (MapUtils.isEmpty(mapByUsernameAndName)) {
|
|
|
+ sb.append("系统教职工数据有误,请联系管理员");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 获取现有职称数据
|
|
|
+ List<ProfessionalTitle> oldList = professionalTitleMapper.selectList(
|
|
|
+ Wrappers.lambdaQuery(ProfessionalTitle.class)
|
|
|
+ .eq(ProfessionalTitle::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ );
|
|
|
+
|
|
|
+ // 分组处理现有数据
|
|
|
+ Map<Long, Map<String, ProfessionalTitle>> mapByUserIdThenNo = groupByUserIdAndKey(
|
|
|
+ oldList,
|
|
|
+ ProfessionalTitle::getUserId,
|
|
|
+ ProfessionalTitle::getProfessionalTitleNo
|
|
|
+ );
|
|
|
+
|
|
|
+ // 新增和更新列表
|
|
|
+ List<ProfessionalTitle> inserts = new ArrayList<>();
|
|
|
+ List<ProfessionalTitle> updates = new ArrayList<>();
|
|
|
+ for (int i = 0; i < excelDataList.size(); i++) {
|
|
|
+ ProfessionalTitleImportVo vo = excelDataList.get(i);
|
|
|
+
|
|
|
+ // 检查必填字段是否为空
|
|
|
+ if (isRequiredFieldsFilled(vo, sb, i + 2)) {
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查找对应的教职工
|
|
|
+ XjrUser user = mapByUsernameAndName.get(vo.getUserName() + "&" + vo.getUserIdCn());
|
|
|
+ if (user == null) {
|
|
|
+ sb.append("第").append(i + 2).append("行工号和姓名对应的教职工不存在,请核实");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 转换在职状态
|
|
|
+ String jobStatus = StringUtils.isNotEmpty(vo.getJobStatus()) && "是".equals(vo.getJobStatus()) ? "1" : "0";
|
|
|
+
|
|
|
+ // 判断是否需要新增或更新
|
|
|
+ Map<String, ProfessionalTitle> existingMap = mapByUserIdThenNo.getOrDefault(user.getId(), Collections.emptyMap());
|
|
|
+ ProfessionalTitle existing = existingMap.get(vo.getProfessionalTitleNo());
|
|
|
+
|
|
|
+ ProfessionalTitle insertOrUpdate = new ProfessionalTitle();
|
|
|
+ BeanUtils.copyProperties(vo, insertOrUpdate);
|
|
|
+ insertOrUpdate.setUserId(user.getId());
|
|
|
+ insertOrUpdate.setDeptId(user.getCode());
|
|
|
+ insertOrUpdate.setJobStatus(jobStatus);
|
|
|
+
|
|
|
+ if (existing != null) {
|
|
|
+ // 更新已有记录
|
|
|
+ insertOrUpdate.setId(existing.getId());
|
|
|
+ insertOrUpdate.setModifyDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setModifyUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ updates.add(insertOrUpdate);
|
|
|
+ } else {
|
|
|
+ // 新增记录
|
|
|
+ insertOrUpdate.setCreateDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setCreateUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ inserts.add(insertOrUpdate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //批量新增
|
|
|
+ if (!inserts.isEmpty()) {
|
|
|
+ for (ProfessionalTitle insert : inserts) {
|
|
|
+ professionalTitleMapper.insert(insert);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!updates.isEmpty()) {
|
|
|
+ for (ProfessionalTitle update : updates) {
|
|
|
+ professionalTitleMapper.updateById(update);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String teacherCertification(MultipartFile file) throws IOException, IllegalAccessException {
|
|
|
+ List<TeacherCertificationImportVo> excelDataList = EasyExcel.read(file.getInputStream())
|
|
|
+ .headRowNumber(1)
|
|
|
+ .head(TeacherCertificationImportVo.class)
|
|
|
+ .sheet()
|
|
|
+ .doReadSync();
|
|
|
+
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+
|
|
|
+ Map<String, XjrUser> mapByUsernameAndName = getUserMap();
|
|
|
+
|
|
|
+ if (MapUtils.isEmpty(mapByUsernameAndName)) {
|
|
|
+ sb.append("系统教职工数据有误,请联系管理员");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<TeacherCertification> oldList = teacherCertificationMapper.selectList(Wrappers.lambdaQuery(TeacherCertification.class)
|
|
|
+ .eq(TeacherCertification::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ );
|
|
|
+
|
|
|
+ // 分组处理现有数据
|
|
|
+ Map<Long, Map<String, TeacherCertification>> mapByUserIdThenNo = groupByUserIdAndKey(
|
|
|
+ oldList,
|
|
|
+ TeacherCertification::getUserId,
|
|
|
+ TeacherCertification::getCertificationNo
|
|
|
+ );
|
|
|
+
|
|
|
+ List<TeacherCertification> inserts = new ArrayList<>();
|
|
|
+ List<TeacherCertification> updates = new ArrayList<>();
|
|
|
+ for (int i = 0; i < excelDataList.size(); i++) {
|
|
|
+ TeacherCertificationImportVo vo = excelDataList.get(i);
|
|
|
+
|
|
|
+ // 检查必填字段是否为空
|
|
|
+ if (isRequiredFieldsFilled(vo, sb, i + 2)) {
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ XjrUser user = mapByUsernameAndName.get(vo.getUserName() + "&" + vo.getUserIdCn());
|
|
|
+
|
|
|
+ if (user == null) {
|
|
|
+ sb.append("第").append(i + 2).append("行工号和姓名对应的教职工不存在,请核实");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断是否需要新增或更新
|
|
|
+ Map<String, TeacherCertification> existingMap = mapByUserIdThenNo.getOrDefault(user.getId(), Collections.emptyMap());
|
|
|
+ TeacherCertification existing = existingMap.get(vo.getCertificationNo());
|
|
|
+
|
|
|
+ TeacherCertification insertOrUpdate = new TeacherCertification();
|
|
|
+ BeanUtils.copyProperties(vo, insertOrUpdate);
|
|
|
+ insertOrUpdate.setUserId(user.getId());
|
|
|
+ insertOrUpdate.setDeptId(user.getCode());
|
|
|
+
|
|
|
+ if (existing != null) {
|
|
|
+ // 更新已有记录
|
|
|
+ insertOrUpdate.setId(existing.getId());
|
|
|
+ insertOrUpdate.setModifyDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setModifyUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ updates.add(insertOrUpdate);
|
|
|
+ } else {
|
|
|
+ // 新增记录
|
|
|
+ insertOrUpdate.setCreateDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setCreateUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ inserts.add(insertOrUpdate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //批量新增
|
|
|
+ if (!inserts.isEmpty()) {
|
|
|
+ for (TeacherCertification insert : inserts) {
|
|
|
+ teacherCertificationMapper.insert(insert);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!updates.isEmpty()) {
|
|
|
+ for (TeacherCertification update : updates) {
|
|
|
+ teacherCertificationMapper.updateById(update);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String evaluatorInformation(MultipartFile file) throws IOException, IllegalAccessException {
|
|
|
+ List<EvaluatorInformationImportVo> excelDataList = EasyExcel.read(file.getInputStream())
|
|
|
+ .headRowNumber(1)
|
|
|
+ .head(EvaluatorInformationImportVo.class)
|
|
|
+ .sheet()
|
|
|
+ .doReadSync();
|
|
|
+
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+
|
|
|
+ Map<String, XjrUser> mapByUsernameAndName = getUserMap();
|
|
|
+
|
|
|
+ if (MapUtils.isEmpty(mapByUsernameAndName)) {
|
|
|
+ sb.append("系统教职工数据有误,请联系管理员");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<EvaluatorInformation> oldList = evaluatorInformationMapper.selectList(Wrappers.lambdaQuery(EvaluatorInformation.class)
|
|
|
+ .eq(EvaluatorInformation::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ );
|
|
|
+
|
|
|
+ // 分组处理现有数据
|
|
|
+ Map<Long, Map<String, EvaluatorInformation>> mapByUserIdThenNo = groupByUserIdAndKey(
|
|
|
+ oldList,
|
|
|
+ EvaluatorInformation::getUserId,
|
|
|
+ EvaluatorInformation::getCertificationNo
|
|
|
+ );
|
|
|
+
|
|
|
+ List<EvaluatorInformation> inserts = new ArrayList<>();
|
|
|
+ List<EvaluatorInformation> updates = new ArrayList<>();
|
|
|
+ for (int i = 0; i < excelDataList.size(); i++) {
|
|
|
+ EvaluatorInformationImportVo vo = excelDataList.get(i);
|
|
|
+
|
|
|
+ // 检查必填字段是否为空
|
|
|
+ if (isRequiredFieldsFilled(vo, sb, i + 2)) {
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ XjrUser user = mapByUsernameAndName.get(vo.getUserName() + "&" + vo.getUserIdCn());
|
|
|
+
|
|
|
+ if (user == null) {
|
|
|
+ sb.append("第").append(i + 2).append("行工号和姓名对应的教职工不存在,请核实");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断是否需要新增或更新
|
|
|
+ Map<String, EvaluatorInformation> existingMap = mapByUserIdThenNo.getOrDefault(user.getId(), Collections.emptyMap());
|
|
|
+ EvaluatorInformation existing = existingMap.get(vo.getCertificationNo());
|
|
|
+
|
|
|
+ EvaluatorInformation insertOrUpdate = new EvaluatorInformation();
|
|
|
+ BeanUtils.copyProperties(vo, insertOrUpdate);
|
|
|
+ insertOrUpdate.setUserId(user.getId());
|
|
|
+ insertOrUpdate.setDeptId(user.getCode());
|
|
|
+
|
|
|
+ if (existing != null) {
|
|
|
+ // 更新已有记录
|
|
|
+ insertOrUpdate.setId(existing.getId());
|
|
|
+ insertOrUpdate.setModifyDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setModifyUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ updates.add(insertOrUpdate);
|
|
|
+ } else {
|
|
|
+ // 新增记录
|
|
|
+ insertOrUpdate.setCreateDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setCreateUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ inserts.add(insertOrUpdate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //批量新增
|
|
|
+ if (!inserts.isEmpty()) {
|
|
|
+ for (EvaluatorInformation insert : inserts) {
|
|
|
+ evaluatorInformationMapper.insert(insert);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!updates.isEmpty()) {
|
|
|
+ for (EvaluatorInformation update : updates) {
|
|
|
+ evaluatorInformationMapper.updateById(update);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String languageCompetence(MultipartFile file) throws IOException, IllegalAccessException {
|
|
|
+ List<LanguageCompetenceImportVo> excelDataList = EasyExcel.read(file.getInputStream())
|
|
|
+ .headRowNumber(1)
|
|
|
+ .head(EvaluatorInformationImportVo.class)
|
|
|
+ .sheet()
|
|
|
+ .doReadSync();
|
|
|
+
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+
|
|
|
+ Map<String, XjrUser> mapByUsernameAndName = getUserMap();
|
|
|
+
|
|
|
+ if (MapUtils.isEmpty(mapByUsernameAndName)) {
|
|
|
+ sb.append("系统教职工数据有误,请联系管理员");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<LanguageCompetence> oldList = languageCompetenceMapper.selectList(Wrappers.lambdaQuery(LanguageCompetence.class)
|
|
|
+ .eq(LanguageCompetence::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ );
|
|
|
+
|
|
|
+ // 分组处理现有数据
|
|
|
+ Map<Long, Map<String, LanguageCompetence>> mapByUserIdThenNo = groupByUserIdAndKey(
|
|
|
+ oldList,
|
|
|
+ LanguageCompetence::getUserId,
|
|
|
+ LanguageCompetence::getCertificationNo
|
|
|
+ );
|
|
|
+
|
|
|
+ List<LanguageCompetence> inserts = new ArrayList<>();
|
|
|
+ List<LanguageCompetence> updates = new ArrayList<>();
|
|
|
+ for (int i = 0; i < excelDataList.size(); i++) {
|
|
|
+ LanguageCompetenceImportVo vo = excelDataList.get(i);
|
|
|
+
|
|
|
+ // 检查必填字段是否为空
|
|
|
+ if (isRequiredFieldsFilled(vo, sb, i + 2)) {
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ XjrUser user = mapByUsernameAndName.get(vo.getUserName() + "&" + vo.getUserIdCn());
|
|
|
+
|
|
|
+ if (user == null) {
|
|
|
+ sb.append("第").append(i + 2).append("行工号和姓名对应的教职工不存在,请核实");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断是否需要新增或更新
|
|
|
+ Map<String, LanguageCompetence> existingMap = mapByUserIdThenNo.getOrDefault(user.getId(), Collections.emptyMap());
|
|
|
+ LanguageCompetence existing = existingMap.get(vo.getCertificationNo());
|
|
|
+
|
|
|
+ LanguageCompetence insertOrUpdate = new LanguageCompetence();
|
|
|
+ BeanUtils.copyProperties(vo, insertOrUpdate);
|
|
|
+ insertOrUpdate.setUserId(user.getId());
|
|
|
+ insertOrUpdate.setDeptId(user.getCode());
|
|
|
+
|
|
|
+ if (existing != null) {
|
|
|
+ // 更新已有记录
|
|
|
+ insertOrUpdate.setId(existing.getId());
|
|
|
+ insertOrUpdate.setModifyDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setModifyUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ updates.add(insertOrUpdate);
|
|
|
+ } else {
|
|
|
+ // 新增记录
|
|
|
+ insertOrUpdate.setCreateDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setCreateUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ inserts.add(insertOrUpdate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //批量新增
|
|
|
+ if (!inserts.isEmpty()) {
|
|
|
+ for (LanguageCompetence insert : inserts) {
|
|
|
+ languageCompetenceMapper.insert(insert);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!updates.isEmpty()) {
|
|
|
+ for (LanguageCompetence update : updates) {
|
|
|
+ languageCompetenceMapper.updateById(update);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String facultyContract(MultipartFile file) throws IOException, IllegalAccessException {
|
|
|
+ List<FacultyContractImportVo> excelDataList = EasyExcel.read(file.getInputStream())
|
|
|
+ .headRowNumber(1)
|
|
|
+ .head(FacultyContractImportVo.class)
|
|
|
+ .sheet()
|
|
|
+ .doReadSync();
|
|
|
+
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+
|
|
|
+ Map<String, XjrUser> mapByUsernameAndName = getUserMap();
|
|
|
+
|
|
|
+ if (MapUtils.isEmpty(mapByUsernameAndName)) {
|
|
|
+ sb.append("系统教职工数据有误,请联系管理员");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<FacultyContract> oldList = facultyContractMapper.selectList(Wrappers.lambdaQuery(FacultyContract.class)
|
|
|
+ .eq(FacultyContract::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ );
|
|
|
+
|
|
|
+ // 分组处理现有数据
|
|
|
+ Map<Long, Map<LocalDate, FacultyContract>> mapByUserIdThenNo = oldList.stream()
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
+ FacultyContract::getUserId,
|
|
|
+ Collectors.toMap(
|
|
|
+ FacultyContract::getStartDate,
|
|
|
+ record -> record,
|
|
|
+ (existing, replacement) -> existing // 如果有重复键,保留第一个值
|
|
|
+ )
|
|
|
+ ));
|
|
|
+
|
|
|
+ List<FacultyContract> inserts = new ArrayList<>();
|
|
|
+ List<FacultyContract> updates = new ArrayList<>();
|
|
|
+ for (int i = 0; i < excelDataList.size(); i++) {
|
|
|
+ FacultyContractImportVo vo = excelDataList.get(i);
|
|
|
+
|
|
|
+ // 检查必填字段是否为空
|
|
|
+ if (isRequiredFieldsFilled(vo, sb, i + 2)) {
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ XjrUser user = mapByUsernameAndName.get(vo.getUserName() + "&" + vo.getUserIdCn());
|
|
|
+
|
|
|
+ if (user == null) {
|
|
|
+ sb.append("第").append(i + 2).append("行工号和姓名对应的教职工不存在,请核实");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断是否需要新增或更新
|
|
|
+ Map<LocalDate, FacultyContract> existingMap = mapByUserIdThenNo.getOrDefault(user.getId(), Collections.emptyMap());
|
|
|
+ FacultyContract existing = existingMap.get(vo.getStartDate());
|
|
|
+
|
|
|
+ FacultyContract insertOrUpdate = new FacultyContract();
|
|
|
+ BeanUtils.copyProperties(vo, insertOrUpdate);
|
|
|
+ insertOrUpdate.setUserId(user.getId());
|
|
|
+ insertOrUpdate.setDeptId(user.getCode());
|
|
|
+
|
|
|
+ if (existing != null) {
|
|
|
+ // 更新已有记录
|
|
|
+ insertOrUpdate.setId(existing.getId());
|
|
|
+ insertOrUpdate.setModifyDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setModifyUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ updates.add(insertOrUpdate);
|
|
|
+ } else {
|
|
|
+ // 新增记录
|
|
|
+ insertOrUpdate.setCreateDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setCreateUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ inserts.add(insertOrUpdate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //批量新增
|
|
|
+ if (!inserts.isEmpty()) {
|
|
|
+ for (FacultyContract insert : inserts) {
|
|
|
+ facultyContractMapper.insert(insert);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!updates.isEmpty()) {
|
|
|
+ for (FacultyContract update : updates) {
|
|
|
+ facultyContractMapper.updateById(update);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String outsideAssociations(MultipartFile file) throws IOException, IllegalAccessException {
|
|
|
+ List<OutsideAssociationsImportVo> excelDataList = EasyExcel.read(file.getInputStream())
|
|
|
+ .headRowNumber(1)
|
|
|
+ .head(OutsideAssociationsImportVo.class)
|
|
|
+ .sheet()
|
|
|
+ .doReadSync();
|
|
|
+
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+
|
|
|
+ Map<String, XjrUser> mapByUsernameAndName = getUserMap();
|
|
|
+
|
|
|
+ if (MapUtils.isEmpty(mapByUsernameAndName)) {
|
|
|
+ sb.append("系统教职工数据有误,请联系管理员");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<OutsideAssociations> oldList = outsideAssociationsMapper.selectList(Wrappers.lambdaQuery(OutsideAssociations.class)
|
|
|
+ .eq(OutsideAssociations::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ );
|
|
|
+
|
|
|
+ // 分组处理现有数据
|
|
|
+ Map<Long, Map<String, OutsideAssociations>> mapByUserIdThenNo = groupByUserIdAndKey(
|
|
|
+ oldList,
|
|
|
+ OutsideAssociations::getUserId,
|
|
|
+ OutsideAssociations::getName
|
|
|
+ );
|
|
|
+
|
|
|
+ List<OutsideAssociations> inserts = new ArrayList<>();
|
|
|
+ List<OutsideAssociations> updates = new ArrayList<>();
|
|
|
+ for (int i = 0; i < excelDataList.size(); i++) {
|
|
|
+ OutsideAssociationsImportVo vo = excelDataList.get(i);
|
|
|
+
|
|
|
+ // 检查必填字段是否为空
|
|
|
+ if (isRequiredFieldsFilled(vo, sb, i + 2)) {
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ XjrUser user = mapByUsernameAndName.get(vo.getUserName() + "&" + vo.getUserIdCn());
|
|
|
+
|
|
|
+ if (user == null) {
|
|
|
+ sb.append("第").append(i + 2).append("行工号和姓名对应的教职工不存在,请核实");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断是否需要新增或更新
|
|
|
+ Map<String, OutsideAssociations> existingMap = mapByUserIdThenNo.getOrDefault(user.getId(), Collections.emptyMap());
|
|
|
+ OutsideAssociations existing = existingMap.get(vo.getName());
|
|
|
+
|
|
|
+ OutsideAssociations insertOrUpdate = new OutsideAssociations();
|
|
|
+ BeanUtils.copyProperties(vo, insertOrUpdate);
|
|
|
+ insertOrUpdate.setUserId(user.getId());
|
|
|
+ insertOrUpdate.setDeptId(user.getCode());
|
|
|
+
|
|
|
+ if (existing != null) {
|
|
|
+ // 更新已有记录
|
|
|
+ insertOrUpdate.setId(existing.getId());
|
|
|
+ insertOrUpdate.setModifyDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setModifyUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ updates.add(insertOrUpdate);
|
|
|
+ } else {
|
|
|
+ // 新增记录
|
|
|
+ insertOrUpdate.setCreateDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setCreateUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ inserts.add(insertOrUpdate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //批量新增
|
|
|
+ if (!inserts.isEmpty()) {
|
|
|
+ for (OutsideAssociations insert : inserts) {
|
|
|
+ outsideAssociationsMapper.insert(insert);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!updates.isEmpty()) {
|
|
|
+ for (OutsideAssociations update : updates) {
|
|
|
+ outsideAssociationsMapper.updateById(update);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String coreTeacher(MultipartFile file) throws IOException, IllegalAccessException {
|
|
|
+ List<CoreTeacherImportVo> excelDataList = EasyExcel.read(file.getInputStream())
|
|
|
+ .headRowNumber(1)
|
|
|
+ .head(CoreTeacherImportVo.class)
|
|
|
+ .sheet()
|
|
|
+ .doReadSync();
|
|
|
+
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+
|
|
|
+ Map<String, XjrUser> mapByUsernameAndName = getUserMap();
|
|
|
+
|
|
|
+ if (MapUtils.isEmpty(mapByUsernameAndName)) {
|
|
|
+ sb.append("系统教职工数据有误,请联系管理员");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<CoreTeacher> oldList = coreTeacherMapper.selectList(Wrappers.lambdaQuery(CoreTeacher.class)
|
|
|
+ .eq(CoreTeacher::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ );
|
|
|
+
|
|
|
+ // 分组处理现有数据
|
|
|
+ Map<Long, Map<String, CoreTeacher>> mapByUserIdThenNo = groupByUserIdAndKey(
|
|
|
+ oldList,
|
|
|
+ CoreTeacher::getUserId,
|
|
|
+ CoreTeacher::getCertificationNo
|
|
|
+ );
|
|
|
+
|
|
|
+ List<CoreTeacher> inserts = new ArrayList<>();
|
|
|
+ List<CoreTeacher> updates = new ArrayList<>();
|
|
|
+ for (int i = 0; i < excelDataList.size(); i++) {
|
|
|
+ CoreTeacherImportVo vo = excelDataList.get(i);
|
|
|
+
|
|
|
+ // 检查必填字段是否为空
|
|
|
+ if (isRequiredFieldsFilled(vo, sb, i + 2)) {
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ XjrUser user = mapByUsernameAndName.get(vo.getUserName() + "&" + vo.getUserIdCn());
|
|
|
+
|
|
|
+ if (user == null) {
|
|
|
+ sb.append("第").append(i + 2).append("行工号和姓名对应的教职工不存在,请核实");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断是否需要新增或更新
|
|
|
+ Map<String, CoreTeacher> existingMap = mapByUserIdThenNo.getOrDefault(user.getId(), Collections.emptyMap());
|
|
|
+ CoreTeacher existing = existingMap.get(vo.getCertificationNo());
|
|
|
+
|
|
|
+ CoreTeacher insertOrUpdate = new CoreTeacher();
|
|
|
+ BeanUtils.copyProperties(vo, insertOrUpdate);
|
|
|
+ insertOrUpdate.setUserId(user.getId());
|
|
|
+ insertOrUpdate.setDeptId(user.getCode());
|
|
|
+
|
|
|
+ if (existing != null) {
|
|
|
+ // 更新已有记录
|
|
|
+ insertOrUpdate.setId(existing.getId());
|
|
|
+ insertOrUpdate.setModifyDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setModifyUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ updates.add(insertOrUpdate);
|
|
|
+ } else {
|
|
|
+ // 新增记录
|
|
|
+ insertOrUpdate.setCreateDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setCreateUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ inserts.add(insertOrUpdate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //批量新增
|
|
|
+ if (!inserts.isEmpty()) {
|
|
|
+ for (CoreTeacher insert : inserts) {
|
|
|
+ coreTeacherMapper.insert(insert);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!updates.isEmpty()) {
|
|
|
+ for (CoreTeacher update : updates) {
|
|
|
+ coreTeacherMapper.updateById(update);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String scientificResearch(MultipartFile file) throws IOException, IllegalAccessException {
|
|
|
+ List<ScientificResearchImportVo> excelDataList = EasyExcel.read(file.getInputStream())
|
|
|
+ .headRowNumber(1)
|
|
|
+ .head(ScientificResearchImportVo.class)
|
|
|
+ .sheet()
|
|
|
+ .doReadSync();
|
|
|
+
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+
|
|
|
+ Map<String, XjrUser> mapByUsernameAndName = getUserMap();
|
|
|
+
|
|
|
+ if (MapUtils.isEmpty(mapByUsernameAndName)) {
|
|
|
+ sb.append("系统教职工数据有误,请联系管理员");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<ScientificResearch> oldList = scientificResearchMapper.selectList(Wrappers.lambdaQuery(ScientificResearch.class)
|
|
|
+ .eq(ScientificResearch::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ );
|
|
|
+
|
|
|
+ // 分组处理现有数据
|
|
|
+ Map<Long, Map<String, ScientificResearch>> mapByUserIdThenNo = groupByUserIdAndKey(
|
|
|
+ oldList,
|
|
|
+ ScientificResearch::getUserId,
|
|
|
+ ScientificResearch::getName
|
|
|
+ );
|
|
|
+
|
|
|
+ List<ScientificResearch> inserts = new ArrayList<>();
|
|
|
+ List<ScientificResearch> updates = new ArrayList<>();
|
|
|
+ for (int i = 0; i < excelDataList.size(); i++) {
|
|
|
+ ScientificResearchImportVo vo = excelDataList.get(i);
|
|
|
+
|
|
|
+ // 检查必填字段是否为空
|
|
|
+ if (isRequiredFieldsFilled(vo, sb, i + 2)) {
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ XjrUser user = mapByUsernameAndName.get(vo.getUserName() + "&" + vo.getUserIdCn());
|
|
|
+
|
|
|
+ if (user == null) {
|
|
|
+ sb.append("第").append(i + 2).append("行工号和姓名对应的教职工不存在,请核实");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断是否需要新增或更新
|
|
|
+ Map<String, ScientificResearch> existingMap = mapByUserIdThenNo.getOrDefault(user.getId(), Collections.emptyMap());
|
|
|
+ ScientificResearch existing = existingMap.get(vo.getName());
|
|
|
+
|
|
|
+ ScientificResearch insertOrUpdate = new ScientificResearch();
|
|
|
+ BeanUtils.copyProperties(vo, insertOrUpdate);
|
|
|
+ insertOrUpdate.setUserId(user.getId());
|
|
|
+ insertOrUpdate.setDeptId(user.getCode());
|
|
|
+
|
|
|
+ if (existing != null) {
|
|
|
+ // 更新已有记录
|
|
|
+ insertOrUpdate.setId(existing.getId());
|
|
|
+ insertOrUpdate.setModifyDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setModifyUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ updates.add(insertOrUpdate);
|
|
|
+ } else {
|
|
|
+ // 新增记录
|
|
|
+ insertOrUpdate.setCreateDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setCreateUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ inserts.add(insertOrUpdate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //批量新增
|
|
|
+ if (!inserts.isEmpty()) {
|
|
|
+ for (ScientificResearch insert : inserts) {
|
|
|
+ scientificResearchMapper.insert(insert);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!updates.isEmpty()) {
|
|
|
+ for (ScientificResearch update : updates) {
|
|
|
+ scientificResearchMapper.updateById(update);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public String jobInformation(MultipartFile file) throws IOException, IllegalAccessException {
|
|
|
+ List<JobInformationImportVo> excelDataList = EasyExcel.read(file.getInputStream())
|
|
|
+ .headRowNumber(1)
|
|
|
+ .head(JobInformationImportVo.class)
|
|
|
+ .sheet()
|
|
|
+ .doReadSync();
|
|
|
+
|
|
|
+ StringBuilder sb = new StringBuilder();
|
|
|
+
|
|
|
+ Map<String, XjrUser> mapByUsernameAndName = getUserMap();
|
|
|
+
|
|
|
+ if (MapUtils.isEmpty(mapByUsernameAndName)) {
|
|
|
+ sb.append("系统教职工数据有误,请联系管理员");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<JobInformation> oldList = jobInformationMapper.selectList(Wrappers.lambdaQuery(JobInformation.class)
|
|
|
+ .eq(JobInformation::getDeleteMark, DeleteMark.NODELETE.getCode())
|
|
|
+ );
|
|
|
+
|
|
|
+ // 分组处理现有数据
|
|
|
+ Map<Long, Map<String, JobInformation>> mapByUserIdThenNo = groupByUserIdAndKey(
|
|
|
+ oldList,
|
|
|
+ JobInformation::getUserId,
|
|
|
+ JobInformation::getJobName
|
|
|
+ );
|
|
|
+
|
|
|
+ List<JobInformation> inserts = new ArrayList<>();
|
|
|
+ List<JobInformation> updates = new ArrayList<>();
|
|
|
+ for (int i = 0; i < excelDataList.size(); i++) {
|
|
|
+ JobInformationImportVo vo = excelDataList.get(i);
|
|
|
+
|
|
|
+ // 检查必填字段是否为空
|
|
|
+ if (isRequiredFieldsFilled(vo, sb, i + 2)) {
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ String key = vo.getUserName() + "&" + vo.getUserIdCn();
|
|
|
+ XjrUser user = mapByUsernameAndName.get(key);
|
|
|
+
|
|
|
+ if (user == null) {
|
|
|
+ sb.append("第").append(i + 2).append("行工号和姓名对应的教职工不存在,请核实");
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ // 判断是否需要新增或更新
|
|
|
+ Map<String, JobInformation> existingMap = mapByUserIdThenNo.getOrDefault(user.getId(), Collections.emptyMap());
|
|
|
+ JobInformation existing = existingMap.get(vo.getJobName());
|
|
|
+
|
|
|
+ JobInformation insertOrUpdate = new JobInformation();
|
|
|
+ BeanUtils.copyProperties(vo, insertOrUpdate);
|
|
|
+ insertOrUpdate.setUserId(user.getId());
|
|
|
+ insertOrUpdate.setDeptId(user.getCode());
|
|
|
+
|
|
|
+ if (existing != null) {
|
|
|
+ // 更新已有记录
|
|
|
+ insertOrUpdate.setId(existing.getId());
|
|
|
+ insertOrUpdate.setModifyDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setModifyUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ updates.add(insertOrUpdate);
|
|
|
+ } else {
|
|
|
+ // 新增记录
|
|
|
+ insertOrUpdate.setCreateDate(LocalDateTime.now());
|
|
|
+ insertOrUpdate.setCreateUserId(StpUtil.getLoginIdAsLong());
|
|
|
+ inserts.add(insertOrUpdate);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //批量新增
|
|
|
+ if (!inserts.isEmpty()) {
|
|
|
+ for (JobInformation insert : inserts) {
|
|
|
+ jobInformationMapper.insert(insert);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!updates.isEmpty()) {
|
|
|
+ for (JobInformation update : updates) {
|
|
|
+ jobInformationMapper.updateById(update);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return sb.toString();
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取教职工数据并映射为 Map
|
|
|
+ */
|
|
|
+ private Map<String, XjrUser> getUserMap() {
|
|
|
+ // 获取所有教职工数据
|
|
|
+ MPJLambdaWrapper<XjrUser> userQueryWrapper = new MPJLambdaWrapper<>();
|
|
|
+ userQueryWrapper
|
|
|
+ .select(XjrUser::getId, XjrUser::getUserName, XjrUser::getName)
|
|
|
+ .select(" (SELECT GROUP_CONCAT(a.name) FROM xjr_department a" +
|
|
|
+ " INNER JOIN xjr_user_dept_relation b ON a.id = b.dept_id" +
|
|
|
+ " WHERE a.delete_mark = 0 AND b.user_id = t.id) as code")
|
|
|
+ .innerJoin(UserRoleRelation.class, UserRoleRelation::getUserId, XjrUser::getId)
|
|
|
+ .eq(UserRoleRelation::getRoleId, 2);
|
|
|
+
|
|
|
+ List<XjrUser> xjrUsers = this.selectJoinList(XjrUser.class, userQueryWrapper);
|
|
|
+
|
|
|
+ // 如果有重复键,保留第一个值
|
|
|
+ return xjrUsers.stream()
|
|
|
+ .collect(Collectors.toMap(
|
|
|
+ u -> u.getUserName() + "&" + u.getName(),
|
|
|
+ u -> u,
|
|
|
+ (u1, u2) -> u1 // 如果有重复键,保留第一个值
|
|
|
+ ));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 分组现有记录
|
|
|
+ */
|
|
|
+ private <T> Map<Long, Map<String, T>> groupByUserIdAndKey(
|
|
|
+ List<T> records,
|
|
|
+ Function<T, Long> userIdGetter,
|
|
|
+ Function<T, String> keyGetter
|
|
|
+ ) {
|
|
|
+ return records.stream()
|
|
|
+ .collect(Collectors.groupingBy(
|
|
|
+ userIdGetter,
|
|
|
+ Collectors.toMap(
|
|
|
+ keyGetter,
|
|
|
+ record -> record,
|
|
|
+ (existing, replacement) -> existing // 如果有重复键,保留第一个值
|
|
|
+ )
|
|
|
+ ));
|
|
|
+ }
|
|
|
}
|