Browse Source

Merge remote-tracking branch 'origin/dev' into dev

大数据与最优化研究所 7 months ago
parent
commit
e6f239ed6f

+ 15 - 23
src/main/java/com/xjrsoft/module/base/controller/BaseClassTeacherChangeController.java

@@ -1,41 +1,38 @@
 package com.xjrsoft.module.base.controller;
 
+import cn.dev33.satoken.annotation.SaCheckPermission;
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.xjrsoft.common.constant.GlobalConstant;
-import com.baomidou.mybatisplus.core.toolkit.StringPool;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xjrsoft.common.annotation.XjrLog;
+import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
-import com.xjrsoft.common.model.result.RT;
-import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.base.dto.AddBaseClassTeacherChangeDto;
-import com.xjrsoft.module.base.dto.UpdateBaseClassTeacherChangeDto;
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import com.xjrsoft.common.annotation.XjrLog;
-
 import com.xjrsoft.module.base.dto.BaseClassTeacherChangePageDto;
+import com.xjrsoft.module.base.dto.UpdateBaseClassTeacherChangeDto;
 import com.xjrsoft.module.base.entity.BaseClassTeacherChange;
 import com.xjrsoft.module.base.service.IBaseClassTeacherChangeService;
 import com.xjrsoft.module.base.vo.BaseClassTeacherChangePageVo;
-
 import com.xjrsoft.module.base.vo.BaseClassTeacherChangeVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
-import org.springframework.web.bind.annotation.*;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
 import java.util.List;
 
 /**
 * @title: 班主任异动记录表
 * @Author dzx
-* @Date: 2025-04-27
+* @Date: 2025-04-24
 * @Version 1.0
 */
 @RestController
@@ -53,11 +50,7 @@ public class BaseClassTeacherChangeController {
     @XjrLog(value = "班主任异动记录表列表(分页)")
     public RT<PageOutput<BaseClassTeacherChangePageVo>> page(@Valid BaseClassTeacherChangePageDto dto){
 
-        LambdaQueryWrapper<BaseClassTeacherChange> queryWrapper = new LambdaQueryWrapper<>();
-        queryWrapper
-                    .orderByDesc(BaseClassTeacherChange::getId)
-                .select(BaseClassTeacherChange.class,x -> VoToColumnUtil.fieldsToColumns(BaseClassTeacherChangePageVo.class).contains(x.getProperty()));
-        IPage<BaseClassTeacherChange> page = baseClassTeacherChangeService.page(ConventPage.getPage(dto), queryWrapper);
+        Page<BaseClassTeacherChangePageVo> page = baseClassTeacherChangeService.getPage(new Page<>(dto.getLimit(), dto.getSize()), dto);
         PageOutput<BaseClassTeacherChangePageVo> pageOutput = ConventPage.getPageOutput(page, BaseClassTeacherChangePageVo.class);
         return RT.ok(pageOutput);
     }
@@ -102,7 +95,6 @@ public class BaseClassTeacherChangeController {
     @XjrLog(value = "删除班主任异动记录表")
     public RT<Boolean> delete(@Valid @RequestBody List<Long> ids){
         return RT.ok(baseClassTeacherChangeService.removeBatchByIds(ids));
-
     }
 
 }

+ 2 - 8
src/main/java/com/xjrsoft/module/base/dto/AddBaseClassTeacherChangeDto.java

@@ -2,21 +2,15 @@ package com.xjrsoft.module.base.dto;
 
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import java.io.Serializable;
-import com.fasterxml.jackson.annotation.JsonFormat;
 
-import java.time.LocalTime;
-import java.time.LocalDateTime;
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Date;
+import java.io.Serializable;
 
 
 
 /**
 * @title: 班主任异动记录表
 * @Author dzx
-* @Date: 2025-04-27
+* @Date: 2025-04-24
 * @Version 1.0
 */
 @Data

+ 25 - 5
src/main/java/com/xjrsoft/module/base/dto/BaseClassTeacherChangePageDto.java

@@ -6,21 +6,41 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springframework.format.annotation.DateTimeFormat;
 
-import java.time.LocalTime;
-import java.time.LocalDateTime;
-import java.math.BigDecimal;
-import java.util.Date;
+import java.time.LocalDate;
 
 
 /**
 * @title: 班主任异动记录表分页查询入参
 * @Author dzx
-* @Date: 2025-04-27
+* @Date: 2025-04-24
 * @Version 1.0
 */
 @Data
 @EqualsAndHashCode(callSuper = false)
 public class BaseClassTeacherChangePageDto extends PageInput {
 
+    @ApiModelProperty("班级名称")
+    private String className;
+
+    @ApiModelProperty("班级代码")
+    private String classCode;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("异动时间-开始")
+    private LocalDate createDateStart;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @ApiModelProperty("异动时间-结束")
+    private LocalDate createDateEnd;
+
+    @ApiModelProperty("异动前班主任")
+    private String beforeTeacherName;
+
+    @ApiModelProperty("异动后班主任")
+    private String afterTeacherName;
+
+    @ApiModelProperty("年级")
+    private Long gradeId;
+
 
 }

+ 6 - 2
src/main/java/com/xjrsoft/module/base/mapper/BaseClassTeacherChangeMapper.java

@@ -1,17 +1,21 @@
 package com.xjrsoft.module.base.mapper;
 
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseMapper;
+import com.xjrsoft.module.base.dto.BaseClassTeacherChangePageDto;
 import com.xjrsoft.module.base.entity.BaseClassTeacherChange;
+import com.xjrsoft.module.base.vo.BaseClassTeacherChangePageVo;
 import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
 
 /**
 * @title: 班主任异动记录表
 * @Author dzx
-* @Date: 2025-04-27
+* @Date: 2025-04-24
 * @Version 1.0
 */
 @Mapper
 public interface BaseClassTeacherChangeMapper extends MPJBaseMapper<BaseClassTeacherChange> {
 
+    Page<BaseClassTeacherChangePageVo> getPage(Page<BaseClassTeacherChangePageVo> page, @Param("dto") BaseClassTeacherChangePageDto dto);
 }

+ 7 - 4
src/main/java/com/xjrsoft/module/base/service/IBaseClassTeacherChangeService.java

@@ -1,17 +1,20 @@
 package com.xjrsoft.module.base.service;
 
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseService;
+import com.xjrsoft.module.base.dto.BaseClassTeacherChangePageDto;
 import com.xjrsoft.module.base.entity.BaseClassTeacherChange;
-import lombok.Data;
-import java.util.List;
+import com.xjrsoft.module.base.vo.BaseClassTeacherChangePageVo;
+import org.apache.ibatis.annotations.Param;
 
 /**
 * @title: 班主任异动记录表
 * @Author dzx
-* @Date: 2025-04-27
+* @Date: 2025-04-24
 * @Version 1.0
 */
 
 public interface IBaseClassTeacherChangeService extends MPJBaseService<BaseClassTeacherChange> {
+
+    Page<BaseClassTeacherChangePageVo> getPage(Page<BaseClassTeacherChangePageVo> page, @Param("dto") BaseClassTeacherChangePageDto dto);
 }

+ 8 - 7
src/main/java/com/xjrsoft/module/base/service/impl/BaseClassTeacherChangeServiceImpl.java

@@ -1,25 +1,26 @@
 package com.xjrsoft.module.base.service.impl;
 
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
+import com.xjrsoft.module.base.dto.BaseClassTeacherChangePageDto;
 import com.xjrsoft.module.base.entity.BaseClassTeacherChange;
 import com.xjrsoft.module.base.mapper.BaseClassTeacherChangeMapper;
 import com.xjrsoft.module.base.service.IBaseClassTeacherChangeService;
+import com.xjrsoft.module.base.vo.BaseClassTeacherChangePageVo;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import java.util.List;
-import java.util.Objects;
-import java.util.stream.Collectors;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 
 /**
 * @title: 班主任异动记录表
 * @Author dzx
-* @Date: 2025-04-27
+* @Date: 2025-04-24
 * @Version 1.0
 */
 @Service
 @AllArgsConstructor
 public class BaseClassTeacherChangeServiceImpl extends MPJBaseServiceImpl<BaseClassTeacherChangeMapper, BaseClassTeacherChange> implements IBaseClassTeacherChangeService {
+    @Override
+    public Page<BaseClassTeacherChangePageVo> getPage(Page<BaseClassTeacherChangePageVo> page, BaseClassTeacherChangePageDto dto) {
+        return this.baseMapper.getPage(page, dto);
+    }
 }

+ 23 - 55
src/main/java/com/xjrsoft/module/base/vo/BaseClassTeacherChangePageVo.java

@@ -1,74 +1,42 @@
 package com.xjrsoft.module.base.vo;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import com.xjrsoft.common.annotation.Trans;
-import com.xjrsoft.common.enums.TransType;
-import java.time.LocalTime;
 import java.time.LocalDateTime;
-import java.math.BigDecimal;
-import java.util.Date;
 
 /**
 * @title: 班主任异动记录表分页列表出参
 * @Author dzx
-* @Date: 2025-04-27
+* @Date: 2025-04-24
 * @Version 1.0
 */
 @Data
 public class BaseClassTeacherChangePageVo {
 
-    /**
-    * 
-    */
-    @ApiModelProperty("")
+
+    @ApiModelProperty("主键编号")
     private String id;
-    /**
-    * 创建人
-    */
-    @ApiModelProperty("创建人")
-    private Long createUserId;
-    /**
-    * 创建时间
-    */
-    @ApiModelProperty("创建时间")
+
+    @ApiModelProperty("年级名称")
+    private String gradeName;
+
+    @ApiModelProperty("班级名称")
+    private String className;
+
+    @ApiModelProperty("班级代码")
+    private String classCode;
+
+    @ApiModelProperty("异动时间")
     private LocalDateTime createDate;
-    /**
-    * 修改人
-    */
-    @ApiModelProperty("修改人")
-    private Long modifyUserId;
-    /**
-    * 修改日期
-    */
-    @ApiModelProperty("修改日期")
-    private LocalDateTime modifyDate;
-    /**
-    * 删除标记
-    */
-    @ApiModelProperty("删除标记")
-    private Integer deleteMark;
-    /**
-    * 有效标记
-    */
-    @ApiModelProperty("有效标记")
-    private Integer enabledMark;
-    /**
-    * 班级id(base_class)
-    */
-    @ApiModelProperty("班级id(base_class)")
-    private Long classId;
-    /**
-    * 异动前班主任(xjr_user)
-    */
-    @ApiModelProperty("异动前班主任(xjr_user)")
-    private Long beforeTeacherId;
-    /**
-    * 异动后班主任(xjr_user)
-    */
-    @ApiModelProperty("异动后班主任(xjr_user)")
-    private Long afterTeacherId;
+
+    @ApiModelProperty("操作人")
+    private String createUserName;
+
+    @ApiModelProperty("异动前班主任")
+    private String beforeTeacherName;
+
+    @ApiModelProperty("异动后班主任")
+    private String afterTeacherName;
 
 }

+ 1 - 7
src/main/java/com/xjrsoft/module/base/vo/BaseClassTeacherChangeVo.java

@@ -3,16 +3,10 @@ package com.xjrsoft.module.base.vo;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import java.time.LocalTime;
-import java.time.LocalDateTime;
-import java.math.BigDecimal;
-import java.util.List;
-import java.util.Date;
-
 /**
 * @title: 班主任异动记录表表单出参
 * @Author dzx
-* @Date: 2025-04-27
+* @Date: 2025-04-24
 * @Version 1.0
 */
 @Data

+ 52 - 3
src/main/java/com/xjrsoft/module/teacher/controller/TeacherbaseManagerController.java

@@ -50,7 +50,9 @@ import javax.validation.Valid;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.text.ParseException;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -84,7 +86,7 @@ public class TeacherbaseManagerController {
                 .like(StrUtil.isNotBlank(dto.getMobile()), XjrUser::getMobile, dto.getMobile())
                 .like(StrUtil.isNotBlank(dto.getName()), XjrUser::getName, dto.getName())
                 .like(StrUtil.isNotBlank(dto.getEmail()), XjrUser::getEmail, dto.getEmail())
-
+                .eq(StrUtil.isNotEmpty(dto.getCredentialNumber()), XjrUser::getCredentialNumber, dto.getCredentialNumber())
                 .orderByDesc(XjrUser::getId)
 
                 .select(XjrUser::getId)
@@ -221,9 +223,56 @@ public class TeacherbaseManagerController {
     @PostMapping("/import")
     @ApiOperation(value = "导入教职工信息")
     @XjrLog(value = "导入教职工信息", saveRequestData = false, saveResponseData = true)
-    public RT<Boolean> importData(@RequestParam("file") MultipartFile file) throws IOException, ParseException {
+    public RT<List<Map<String, String>>> importData(@RequestParam("file") MultipartFile file) throws IOException, ParseException {
         List<Map<Integer, Object>> excelDataList = EasyExcel.read(file.getInputStream()).sheet().headRowNumber(3).doReadSync();
-        return RT.ok(teacherbaseManagerService.importData(excelDataList));
+        List<Map<Integer, Object>> errorList = teacherbaseManagerService.importData(excelDataList);
+        List<Map<String, String>> result = new ArrayList<>();
+        for (Map<Integer, Object> objectMap : errorList) {
+            Map<String, String> object = new LinkedHashMap<>();
+            List<String> errorMsg = new ArrayList<>();
+            if (objectMap.get(0) == null) {
+                errorMsg.add("工号未填写");
+            }
+            if (objectMap.get(1) == null) {
+                errorMsg.add("姓名未填写");
+            }
+            if (objectMap.get(2) == null) {
+                errorMsg.add("性别未填写");
+            }
+            if (objectMap.get(3) == null) {
+                errorMsg.add("证件类型未填写");
+            }
+            if (objectMap.get(4) == null) {
+                errorMsg.add("身份证未填写");
+            }
+            if (objectMap.get(5) == null) {
+                errorMsg.add("手机号未填写");
+            }
+            if (objectMap.get(6) == null) {
+                errorMsg.add("聘用类型未填写");
+            }
+            if (objectMap.get(7) == null) {
+                errorMsg.add("所属机构未填写");
+            }
+            if (objectMap.get(8) == null) {
+                errorMsg.add("岗位未填写");
+            }
+            if (objectMap.get(9) == null) {
+                errorMsg.add("在职状态未填写");
+            }
+            if (objectMap.get(10) == null) {
+                errorMsg.add("来校时间未填写");
+            }
+            if (objectMap.get(11) == null) {
+                errorMsg.add("任课状况未填写");
+            }
+            object.put("姓名", objectMap.get(1) == null ? "" : objectMap.get(1).toString());
+            object.put("身份证", objectMap.get(4) == null ? "" : objectMap.get(4).toString());
+            object.put("手机号", objectMap.get(5) == null ? "" : objectMap.get(5).toString());
+            object.put("错误信息", errorMsg.toString().replace("[", "").replace("]", ""));
+            result.add(object);
+        }
+        return RT.ok(result);
     }
 
     @PostMapping("/professional-title-import")

+ 3 - 0
src/main/java/com/xjrsoft/module/teacher/dto/XjrUserPageDto.java

@@ -43,4 +43,7 @@ public class XjrUserPageDto extends PageInput {
     @ApiModelProperty("机构id")
     private Long departmentId;
 
+    @ApiModelProperty("身份证号")
+    private String credentialNumber;
+
 }

+ 1 - 1
src/main/java/com/xjrsoft/module/teacher/service/ITeacherbaseManagerService.java

@@ -45,7 +45,7 @@ public interface ITeacherbaseManagerService extends MPJBaseService<XjrUser> {
      */
     Boolean delete(List<Long> ids);
 
-    Boolean importData(List<Map<Integer, Object>> excelDataList) throws ParseException;
+    List<Map<Integer, Object>> importData(List<Map<Integer, Object>> excelDataList) throws ParseException;
 
     void changeIsNormal(String jobState, Integer isNormal);
 

+ 99 - 18
src/main/java/com/xjrsoft/module/teacher/service/impl/TeacherbaseManagerServiceImpl.java

@@ -14,16 +14,30 @@ 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.*;
+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.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.*;
+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.mapper.UserDeptRelationMapper;
 import com.xjrsoft.module.organization.mapper.UserRoleRelationMapper;
-import com.xjrsoft.module.organization.service.*;
+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.personnel.entity.CarMessageApply;
 import com.xjrsoft.module.personnel.mapper.CarMessageApplyMapper;
 import com.xjrsoft.module.personnel.service.ITeacherFaceProcessService;
@@ -33,10 +47,55 @@ 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.*;
-import com.xjrsoft.module.teacher.mapper.*;
+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.CoreTeacher;
+import com.xjrsoft.module.teacher.entity.EvaluatorInformation;
+import com.xjrsoft.module.teacher.entity.FacultyContract;
+import com.xjrsoft.module.teacher.entity.JobInformation;
+import com.xjrsoft.module.teacher.entity.LanguageCompetence;
+import com.xjrsoft.module.teacher.entity.OutsideAssociations;
+import com.xjrsoft.module.teacher.entity.ProfessionalTitle;
+import com.xjrsoft.module.teacher.entity.ScientificResearch;
+import com.xjrsoft.module.teacher.entity.TeacherCertification;
+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.CoreTeacherMapper;
+import com.xjrsoft.module.teacher.mapper.EvaluatorInformationMapper;
+import com.xjrsoft.module.teacher.mapper.FacultyContractMapper;
+import com.xjrsoft.module.teacher.mapper.JobInformationMapper;
+import com.xjrsoft.module.teacher.mapper.LanguageCompetenceMapper;
+import com.xjrsoft.module.teacher.mapper.OutsideAssociationsMapper;
+import com.xjrsoft.module.teacher.mapper.ProfessionalTitleMapper;
+import com.xjrsoft.module.teacher.mapper.ScientificResearchMapper;
+import com.xjrsoft.module.teacher.mapper.TeacherCertificationMapper;
+import com.xjrsoft.module.teacher.mapper.WfTeacherDepartMapper;
+import com.xjrsoft.module.teacher.mapper.XjrUserMapper;
 import com.xjrsoft.module.teacher.service.ITeacherbaseManagerService;
-import com.xjrsoft.module.teacher.vo.*;
+import com.xjrsoft.module.teacher.vo.CoreTeacherImportVo;
+import com.xjrsoft.module.teacher.vo.EvaluatorInformationImportVo;
+import com.xjrsoft.module.teacher.vo.FacultyContractImportVo;
+import com.xjrsoft.module.teacher.vo.JobInformationImportVo;
+import com.xjrsoft.module.teacher.vo.LanguageCompetenceImportVo;
+import com.xjrsoft.module.teacher.vo.OutsideAssociationsImportVo;
+import com.xjrsoft.module.teacher.vo.ProfessionalTitleImportVo;
+import com.xjrsoft.module.teacher.vo.ScientificResearchImportVo;
+import com.xjrsoft.module.teacher.vo.TeacherCertificationImportVo;
+import com.xjrsoft.module.teacher.vo.XjrUserPageVo;
 import com.xjrsoft.module.workflow.entity.WorkflowFormRelation;
 import com.xjrsoft.module.workflow.mapper.WorkflowFormRelationMapper;
 import lombok.AllArgsConstructor;
@@ -55,7 +114,13 @@ import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
@@ -572,12 +637,15 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
      */
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public Boolean importData(List<Map<Integer, Object>> excelDataList) throws ParseException {
+    public List<Map<Integer, Object>> importData(List<Map<Integer, Object>> excelDataList) throws ParseException {
+        List<Map<Integer, Object>> errorList = new ArrayList<>();
+
         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)
+                        .eq(User::getDeleteMark, DeleteMark.NODELETE.getCode())
         );
         Map<String, User> userMap = userList.stream().collect(Collectors.toMap(User::getCredentialNumber, x -> x));
 
@@ -586,6 +654,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
                         .select(BaseTeacher::getId)
                         .select(BaseTeacher.class, x -> VoToColumnUtil.fieldsToColumns(BaseTeacher.class).contains(x.getProperty()))
                         .innerJoin(User.class, User::getId, BaseTeacher::getUserId)
+                        .eq(User::getDeleteMark, DeleteMark.NODELETE.getCode())
         );
         Map<Long, BaseTeacher> teacherMap = teacherList.stream().collect(Collectors.toMap(BaseTeacher::getUserId, x -> x));
 
@@ -600,7 +669,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
                         .in(DictionaryDetail::getItemId, itemList)
                         .eq(DictionaryDetail::getDeleteMark, DeleteMark.NODELETE.getCode())
         );
-        Map<String, String> dictionaryMap = dictionaryList.stream().collect(Collectors.toMap(DictionaryDetail::getName, DictionaryDetail::getCode));
+        Map<Long, Map<String, String>> dictionaryMap = dictionaryList.stream().collect(Collectors.groupingBy(DictionaryDetail::getItemId, Collectors.toMap(DictionaryDetail::getName, DictionaryDetail::getCode)));
 
         List<Department> departmentList = departmentService.list(
                 new QueryWrapper<Department>().lambda()
@@ -652,20 +721,32 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
 
         for (Map<Integer, Object> rowData : excelDataList) {
+            boolean isEmpty = false;
+            for (Integer i : rowData.keySet()) {
+                if(rowData.get(i) == null){
+                    errorList.add(rowData);
+                    isEmpty = true;
+                }
+            }
+            if(isEmpty){
+                continue;
+            }
+
+
             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()));
+                user.setCredentialType(dictionaryMap.get(2023000000000000006L).get(rowData.get(3).toString()));
                 user.setCredentialNumber(rowData.get(4).toString());
                 user.setMobile(rowData.get(5).toString());
                 updateUserList.add(user);
 
                 BaseTeacher teacher = teacherMap.get(user.getId());
-                teacher.setEmployType(dictionaryMap.get(rowData.get(6).toString()));
+                teacher.setEmployType(dictionaryMap.get(2023000000000000016L).get(rowData.get(6).toString()));
                 if(rowData.get(9) != null && StrUtil.isNotEmpty(rowData.get(9).toString())){
-                    teacher.setJobState(dictionaryMap.get(rowData.get(9).toString()));
+                    teacher.setJobState(dictionaryMap.get(2023000000000000005L).get(rowData.get(9).toString()));
                 }
                 if(rowData.get(10) != null && StrUtil.isNotEmpty(rowData.get(10).toString())){
                     teacher.setJoinTime(sdf.parse(rowData.get(10).toString()));
@@ -676,7 +757,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
                 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()));
+                    teachingStatus.add(dictionaryMap.get(2023000000000000020L).get(rowData.get(11).toString()));
                     teacherRegular.setTeachingStatus(teachingStatus);
                     updateBaseTeacherRegularList.add(teacherRegular);
                 }
@@ -706,18 +787,18 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
             user.setIsChangePassword(1);
             user.setName(rowData.get(1).toString());
             user.setGender(GenderDictionaryEnum.getCode(rowData.get(2).toString()));
-            user.setCredentialType(dictionaryMap.get(rowData.get(3).toString()));
+            user.setCredentialType(dictionaryMap.get(2023000000000000006L).get(rowData.get(3).toString()));
             user.setCredentialNumber(rowData.get(4).toString());
             user.setMobile(rowData.get(5).toString());
             user.setCreateDate(LocalDateTime.now());
             userService.save(user);
 
             BaseTeacher teacher = new BaseTeacher();
-            teacher.setEmployType(dictionaryMap.get(rowData.get(6).toString()));
+            teacher.setEmployType(dictionaryMap.get(2023000000000000016L).get(rowData.get(6).toString()));
             teacher.setUserId(user.getId());
             teacher.setCreateDate(LocalDateTime.now());
             if(rowData.get(9) != null && StrUtil.isNotEmpty(rowData.get(9).toString())){
-                teacher.setJobState(dictionaryMap.get(rowData.get(9).toString()));
+                teacher.setJobState(dictionaryMap.get(2023000000000000005L).get(rowData.get(9).toString()));
             }
 
             if(rowData.get(10) != null && StrUtil.isNotEmpty(rowData.get(10).toString())){
@@ -729,7 +810,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
             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()));
+                teachingStatus.add(dictionaryMap.get(2023000000000000020L).get(rowData.get(11).toString()));
                 teacherRegular.setTeachingStatus(teachingStatus);
                 teacherRegular.setCreateDate(LocalDateTime.now());
                 teacherRegular.setCreateUserId(StpUtil.getLoginIdAsLong());
@@ -790,7 +871,7 @@ public class TeacherbaseManagerServiceImpl extends MPJBaseServiceImpl<XjrUserMap
         List<UserPostRelation> postRelationList = userPostRelationService.list(Wrappers.lambdaQuery(UserPostRelation.class));
         redisUtil.set(GlobalConstant.USER_POST_RELATION_CACHE_KEY, postRelationList);
 
-        return true;
+        return errorList;
     }
 
     @Override

+ 20 - 1
src/main/resources/sqlScript/教师视图.sql

@@ -5,9 +5,16 @@ SELECT t1.name,t1.user_name AS userName,t1.mobile,
 (SELECT GROUP_CONCAT(a1.name) FROM xjr_department a1
 INNER JOIN xjr_user_dept_relation a2 ON a1.id = a2.dept_id
 WHERE a1.delete_mark = 0 AND a2.user_id = t1.id
-) AS deptName,t3.name AS employType,t1.credential_number AS credentialNumber,t1.email FROM xjr_user t1
+) AS deptName,t3.name AS employType,t1.credential_number AS credentialNumber,t1.email,
+t4.name AS job_state,t2.join_time,(
+SELECT GROUP_CONCAT(a2.name) FROM base_teacher_regular a1
+LEFT JOIN xjr_dictionary_detail a2 ON JSON_UNQUOTE(a1.teaching_status) LIKE CONCAT('%', a2.code, '%')
+AND a2.item_id = 2023000000000000020
+WHERE a1.user_id = t1.id
+) AS teaching_status FROM xjr_user t1
 INNER JOIN base_teacher t2 ON t1.id = t2.user_id
 LEFT JOIN xjr_dictionary_detail t3 ON t2.employ_type = t3.code
+LEFT JOIN xjr_dictionary_detail t4 ON t2.job_state = t4.code
 WHERE t1.delete_mark = 0;
 
 INSERT INTO data_expert_source(id,create_user_id,create_date,delete_mark,enabled_mark,sort_code,NAME,source_type,view_name)
@@ -26,4 +33,16 @@ INSERT INTO data_expert_source_field(id,create_user_id,create_date,delete_mark,e
 VALUES
 (1713872370,1000000000000000000,NOW(),0,1,7,1713871534,'email','邮箱','基础信息');
 
+INSERT INTO data_expert_source_field(id,create_user_id,create_date,delete_mark,enabled_mark,sort_code,data_expert_source_id,field_name,show_name,data_group)
+VALUES
+(1713872371,1000000000000000000,NOW(),0,1,7,1713871534,'job_state','在职状态','基础信息');
+
+INSERT INTO data_expert_source_field(id,create_user_id,create_date,delete_mark,enabled_mark,sort_code,data_expert_source_id,field_name,show_name,data_group)
+VALUES
+(1713872372,1000000000000000000,NOW(),0,1,7,1713871534,'join_time','来校时间','基础信息');
+
+INSERT INTO data_expert_source_field(id,create_user_id,create_date,delete_mark,enabled_mark,sort_code,data_expert_source_id,field_name,show_name,data_group)
+VALUES
+(1713872373,1000000000000000000,NOW(),0,1,7,1713871534,'teaching_status','任课状况','基础信息');
+