lizhenhao 2 lat temu
rodzic
commit
21b5a13883
79 zmienionych plików z 3079 dodań i 119 usunięć
  1. 24 17
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/jobPosion/controller/JobPositionController.java
  2. 2 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/jobPosion/controller/PositionCategoryController.java
  3. 7 6
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/jobPosion/controller/PositionController.java
  4. 2 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/jobPosion/controller/PositionLogController.java
  5. 2 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/jobPosion/service/PositionCategoryService.java
  6. 2 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/jobPosion/service/PositionService.java
  7. 38 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/jobPosion/utils/BeanUtils.java
  8. 39 5
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/oss/service/OssService.java
  9. 26 30
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/controller/ProjectController.java
  10. 0 5
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/domain/Project.java
  11. 0 3
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/mapper/ProjectMapper.java
  12. 1 13
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/mapper/xml/ProjectMapper.xml
  13. 6 15
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/service/ProjectService.java
  14. 4 4
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/service/dto/ProjectDTO.java
  15. 7 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/controller/RankController.java
  16. 3 2
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/controller/RankSystemTableController.java
  17. 2 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/mapper/RankMapper.java
  18. 10 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/mapper/xml/RankMapper.xml
  19. 6 5
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/service/RankSequenceService.java
  20. 11 6
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/service/RankService.java
  21. 2 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/service/RankSystemTableService.java
  22. 5 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/service/dto/RankDTO.java
  23. 146 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/controller/RosterBaseController.java
  24. 62 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterBankCards.java
  25. 227 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterBase.java
  26. 86 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterCertificate.java
  27. 61 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterContract.java
  28. 71 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterEducate.java
  29. 52 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterFamily.java
  30. 41 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterFiles.java
  31. 42 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterLeadership.java
  32. 56 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterWork.java
  33. 14 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterBankCardsMapper.java
  34. 20 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterBaseMapper.java
  35. 9 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterCertificateMapper.java
  36. 9 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterContractMapper.java
  37. 9 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterEducateMapper.java
  38. 9 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterFamilyMapper.java
  39. 9 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterFilesMapper.java
  40. 14 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterLeadershipMapper.java
  41. 9 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterWorkMapper.java
  42. 40 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterBankCardsMapper.xml
  43. 314 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterBaseMapper.xml
  44. 47 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterCertificateMapper.xml
  45. 36 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterContractMapper.xml
  46. 39 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterEducateMapper.xml
  47. 32 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterFamilyMapper.xml
  48. 28 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterFilesMapper.xml
  49. 32 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterLeadershipMapper.xml
  50. 34 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterWorkMapper.xml
  51. 20 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterBankCardsService.java
  52. 256 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterBaseService.java
  53. 20 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterCertificateService.java
  54. 29 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterContractService.java
  55. 20 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterEducateService.java
  56. 20 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterFamilyService.java
  57. 20 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterFilesService.java
  58. 20 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterLeadershipService.java
  59. 20 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterWorkService.java
  60. 64 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterBankCardsDTO.java
  61. 276 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterBaseDTO.java
  62. 85 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterCertificateDTO.java
  63. 60 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterContractDTO.java
  64. 79 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterEducateDTO.java
  65. 55 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterFamilyDTO.java
  66. 40 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterFilesDTO.java
  67. 37 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterLeadershipDTO.java
  68. 55 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterWorkDTO.java
  69. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterBankCardsWrapper.java
  70. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterBaseWrapper.java
  71. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterCertificateWrapper.java
  72. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterContractWrapper.java
  73. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterEducateWrapper.java
  74. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterFamilyWrapper.java
  75. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterFilesWrapper.java
  76. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterLeadershipWrapper.java
  77. 17 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterWorkWrapper.java
  78. 1 1
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/workClientInfo/controller/WorkClientController.java
  79. 2 1
      jeeplus-web/src/main/resources/application-development.yml

+ 24 - 17
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/jobPosion/controller/JobPositionController.java

@@ -16,6 +16,7 @@ import com.jeeplus.core.query.QueryWrapperGenerator;
 import com.jeeplus.sys.constant.enums.LogTypeEnum;
 import com.jeeplus.sys.domain.Office;
 import com.jeeplus.sys.service.OfficeService;
+import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.test.jobPosion.domain.JobPosition;
 import com.jeeplus.test.jobPosion.domain.Position;
 import com.jeeplus.test.jobPosion.domain.PositionLog;
@@ -138,18 +139,18 @@ public class JobPositionController {
             }
             oldPosition = jobPositionService.getById(jobPosition.getId());
             if(ObjectUtil.isNotEmpty(oldPosition)){
-                if(StrUtil.isNotEmpty(oldPosition.getPositionId())){
+                if(StringUtils.isNotBlank(oldPosition.getPositionId())){
                     Position byId = positionService.getById(oldPosition.getPositionId());
                     if (ObjectUtil.isNotEmpty(byId)) {
-                        if(StrUtil.isNotEmpty(byId.getName())){
+                        if(StringUtils.isNotBlank(byId.getName())){
                             oldPosition.setPositionId(byId.getName());
                         }
                     }
                 }
-                if(StrUtil.isNotEmpty(oldPosition.getOfficeId())){
+                if(StringUtils.isNotBlank(oldPosition.getOfficeId())){
                     Office office = officeService.getById(oldPosition.getOfficeId());
                     if (ObjectUtil.isNotEmpty(office)) {
-                        if(StrUtil.isNotEmpty(office.getName())){
+                        if(StringUtils.isNotBlank(office.getName())){
                             oldPosition.setOfficeId(office.getName());
                         }
                     }
@@ -161,7 +162,7 @@ public class JobPositionController {
         try{
             jobPositionService.saveOrUpdate(jobPosition);
         }catch (Exception e){
-            if (StrUtil.isNotEmpty(jobPosition.getId())){
+            if (StringUtils.isNotBlank(jobPosition.getId())){
                 String changedFields = BeanUtils.getChangedFields(jobPosition, new JobPosition());
                 positionLogDTO.setOperationContent(changedFields);
             }
@@ -170,21 +171,21 @@ public class JobPositionController {
             return ResponseEntity.badRequest().body  ("职位保存失败");
         }
 
-        if (StrUtil.isNotEmpty(jobPositionDTO.getId())){
+        if (StringUtils.isNotBlank(jobPositionDTO.getId())){
             JobPosition byId = jobPositionService.getById(jobPosition.getId());
             if(ObjectUtil.isNotEmpty(byId)){
-                if(StrUtil.isNotEmpty(byId.getPositionId())){
+                if(StringUtils.isNotBlank(byId.getPositionId())){
                     Position byId1 = positionService.getById(byId.getPositionId());
                     if (ObjectUtil.isNotEmpty(byId1)) {
-                        if(StrUtil.isNotEmpty(byId1.getName())){
+                        if(StringUtils.isNotBlank(byId1.getName())){
                             byId.setPositionId(byId1.getName());
                         }
                     }
                 }
-                if(StrUtil.isNotEmpty(byId.getOfficeId())){
+                if(StringUtils.isNotBlank(byId.getOfficeId())){
                     Office office = officeService.getById(byId.getOfficeId());
                     if (ObjectUtil.isNotEmpty(office)) {
-                        if(StrUtil.isNotEmpty(office.getName())){
+                        if(StringUtils.isNotBlank(office.getName())){
                             byId.setOfficeId(office.getName());
                         }
                     }
@@ -359,7 +360,7 @@ public class JobPositionController {
         listA = getExcelList(listA);
         //导入前检测数据
         String resultA = importDecide(listA, arrayList, hashMap);
-        if(StrUtil.isNotEmpty(resultA)){
+        if(StringUtils.isNotBlank(resultA)){
             //有返回值,说明导入的数据不正确。向用户抛提示
             return ResponseEntity.badRequest().body  (resultA);
         }
@@ -395,19 +396,19 @@ public class JobPositionController {
             if(StrUtil.isEmpty(jobPositionDTO.getName())){
                 return "文件中有职位为空,请重新填写";
             }
-            if(StrUtil.isNotEmpty(jobPositionDTO.getName())){
+            if(StringUtils.isNotBlank(jobPositionDTO.getName())){
                 JobPosition jobPosition = jobPositionService.getOne(new QueryWrapper<JobPosition>().eq("name", jobPositionDTO.getName()));
                 if(ObjectUtil.isNotEmpty(jobPosition)){
                     return "文件中有职位已在系统中存在,请重新填写";
                 }
             }
-            if(StrUtil.isNotEmpty(jobPositionDTO.getName())){
+            if(StringUtils.isNotBlank(jobPositionDTO.getName())){
                 JobPosition jobPosition = jobPositionService.getOne(new QueryWrapper<JobPosition>().eq("no", jobPositionDTO.getNo()));
                 if(ObjectUtil.isNotEmpty(jobPosition)){
                     return "文件中有职位编码已在系统中存在,请重新填写";
                 }
             }
-            if(StrUtil.isNotEmpty(jobPositionDTO.getOfficeId())){
+            if(StringUtils.isNotBlank(jobPositionDTO.getOfficeId())){
                 Office office = officeService.getOne(new QueryWrapper<Office>().eq("name", jobPositionDTO.getOfficeId()));
                 if(ObjectUtil.isNotEmpty(office)){
                     jobPositionDTO.setOfficeId(office.getId());
@@ -415,7 +416,7 @@ public class JobPositionController {
                     return "文件中有部门在系统中不存在,请重新填写";
                 }
             }
-            if(StrUtil.isNotEmpty(jobPositionDTO.getPositionId())){
+            if(StringUtils.isNotBlank(jobPositionDTO.getPositionId())){
                 Position position = positionService.getOne(new QueryWrapper<Position>().eq("name", jobPositionDTO.getPositionId()));
                 if(ObjectUtil.isNotEmpty(position)){
                     jobPositionDTO.setPositionId(position.getId());
@@ -423,7 +424,7 @@ public class JobPositionController {
                     return "文件中有对应职务在系统中不存在,请重新填写";
                 }
             }
-            if(StrUtil.isNotEmpty(jobPositionDTO.getStaffNums())){
+            if(StringUtils.isNotBlank(jobPositionDTO.getStaffNums())){
                 if(isNumeric(jobPositionDTO.getStaffNums())==false){
                     return "文件中有编制人数的格式填写不正确,请填写正整数或者不填写";
                 }else{
@@ -432,7 +433,7 @@ public class JobPositionController {
                 }
             }
 
-            if(StrUtil.isNotEmpty(jobPositionDTO.getNo())){
+            if(StringUtils.isNotBlank(jobPositionDTO.getNo())){
                 noMap.put(jobPositionDTO.getNo(),null);
                 lists.add(jobPositionDTO.getNo());
             }
@@ -554,4 +555,10 @@ public class JobPositionController {
         return pageB;
     }
 
+    @GetMapping("getJobPositionByOff")
+    public ResponseEntity getJobPositionByOff(String id){
+        List<JobPosition> jobPositionList = jobPositionService.list(new QueryWrapper<JobPosition>().eq("office_id", id));
+        return ResponseEntity.ok(jobPositionList);
+    }
+
 }

+ 2 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/jobPosion/controller/PositionCategoryController.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.common.collect.Lists;
 import com.jeeplus.aop.logging.annotation.ApiLog;
 import com.jeeplus.core.query.QueryWrapperGenerator;
+import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.test.jobPosion.domain.PositionCategory;
 import com.jeeplus.test.jobPosion.enums.PositionTypeEnum;
 import com.jeeplus.test.jobPosion.service.PositionCategoryService;
@@ -82,7 +83,7 @@ public class PositionCategoryController {
     public ResponseEntity save(@Valid @RequestBody PositionCategoryDTO positionCategoryDTO, HttpServletRequest request) {
         PositionLogDTO positionLogDTO = new PositionLogDTO();
         PositionCategory positionCategory = PositionCategoryWrapper.INSTANCE.toEntity(positionCategoryDTO);
-        if(StrUtil.isNotEmpty(positionCategoryDTO.getId())){
+        if(StringUtils.isNotBlank(positionCategoryDTO.getId())){
             List<PositionCategory> positionCategories = positionCategoryService.list(new QueryWrapper<PositionCategory>()
                     .ne("id",positionCategoryDTO.getId()).eq("name", positionCategoryDTO.getName()));
             if(CollectionUtil.isNotEmpty(positionCategories)){

+ 7 - 6
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/jobPosion/controller/PositionController.java

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.google.common.collect.Lists;
 import com.jeeplus.aop.logging.annotation.ApiLog;
 import com.jeeplus.core.query.QueryWrapperGenerator;
+import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.test.jobPosion.domain.JobPosition;
 import com.jeeplus.test.jobPosion.domain.Position;
 import com.jeeplus.test.jobPosion.domain.PositionCategory;
@@ -99,7 +100,7 @@ public class PositionController {
         PositionLogDTO positionLogDTO = new PositionLogDTO();
         Position position = PositionWrapper.INSTANCE.toEntity(positionDTO);
         Position oldPosition = null;
-        if(StrUtil.isNotEmpty(positionDTO.getId())){
+        if(StringUtils.isNotBlank(positionDTO.getId())){
             List<Position> positions = positionService.list(new QueryWrapper<Position>()
                     .ne("id",positionDTO.getId()).eq("name", positionDTO.getName()));
             if(CollectionUtil.isNotEmpty(positions)){
@@ -107,10 +108,10 @@ public class PositionController {
             }
             oldPosition = positionService.getById(positionDTO.getId());
             if(ObjectUtil.isNotEmpty(oldPosition)){
-                if(StrUtil.isNotEmpty(oldPosition.getCategoryId())){
+                if(StringUtils.isNotBlank(oldPosition.getCategoryId())){
                     PositionCategory byId = positionCategoryService.getById(oldPosition.getCategoryId());
                     if(ObjectUtil.isNotEmpty(byId)){
-                        if(StrUtil.isNotEmpty(byId.getName())){
+                        if(StringUtils.isNotBlank(byId.getName())){
                             oldPosition.setCategoryId(byId.getName());
                         }
                     }
@@ -132,7 +133,7 @@ public class PositionController {
         try{
             positionService.saveOrUpdate(position);
         }catch (Exception e){
-            if(StrUtil.isNotEmpty(positionDTO.getId())){
+            if(StringUtils.isNotBlank(positionDTO.getId())){
                 String changedFields = BeanUtils.getChangedFields(position, new Position());
                 positionLogDTO.setOperationContent(changedFields);
             }
@@ -141,10 +142,10 @@ public class PositionController {
             return ResponseEntity.badRequest().body  ("职务保存失败");
         }
 
-        if (StrUtil.isNotEmpty(positionDTO.getId())){
+        if (StringUtils.isNotBlank(positionDTO.getId())){
             Position byId = positionService.getById(positionDTO.getId());
             if(ObjectUtil.isNotEmpty(byId)){
-                if(StrUtil.isNotEmpty(byId.getCategoryId())){
+                if(StringUtils.isNotBlank(byId.getCategoryId())){
                     PositionCategory byId1 = positionCategoryService.getById(byId.getCategoryId());
                     if(ObjectUtil.isNotEmpty(byId1)){
                         byId.setCategoryId(byId1.getName());

+ 2 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/jobPosion/controller/PositionLogController.java

@@ -16,6 +16,7 @@ import com.jeeplus.sys.constant.enums.LogTypeEnum;
 import com.jeeplus.sys.domain.Office;
 import com.jeeplus.sys.service.OfficeService;
 import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.sys.utils.UserUtils;
 import com.jeeplus.test.jobPosion.domain.JobPosition;
 import com.jeeplus.test.jobPosion.domain.Position;
@@ -67,7 +68,7 @@ public class PositionLogController {
     public ResponseEntity<IPage<PositionLog>> data(PositionLogDTO positionLogDTO, Page<PositionLog> page) throws Exception {
         PositionLog positionLog = PositionLogWrapper.INSTANCE.toEntity(positionLogDTO);
         QueryWrapper<PositionLog> queryWrapper = QueryWrapperGenerator.buildQueryCondition ( positionLog, PositionLog.class );
-        queryWrapper.like(StrUtil.isNotEmpty(positionLog.getCreateBy()),"su.login_name",positionLog.getCreateBy());
+        queryWrapper.like(StringUtils.isNotBlank(positionLog.getCreateBy()),"su.login_name",positionLog.getCreateBy());
         if(ObjectUtil.isNotEmpty(positionLogDTO.getCreateDateStart())&&ObjectUtil.isNotEmpty(positionLogDTO.getCreateDateEnd())){
             queryWrapper.ge("pl.create_date",positionLogDTO.getCreateDateStart()).le("pl.create_date",positionLogDTO.getCreateDateEnd());
         }

+ 2 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/jobPosion/service/PositionCategoryService.java

@@ -3,6 +3,7 @@ package com.jeeplus.test.jobPosion.service;
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.test.jobPosion.domain.PositionCategory;
 import com.jeeplus.test.jobPosion.mapper.PositionCategoryMapper;
 import com.jeeplus.test.jobPosion.service.dto.PositionCategoryDTO;
@@ -25,7 +26,7 @@ public class PositionCategoryService extends ServiceImpl<PositionCategoryMapper,
         List<PositionCategoryDTO> list = new ArrayList<>();
         positionCategoryDTOList.stream().forEach(item->{
             if(ObjectUtil.isNotEmpty(item)){
-                if(StrUtil.isNotEmpty(item.getId())&&ObjectUtil.isNotEmpty(item.getSort())){
+                if(StringUtils.isNotBlank(item.getId())&&ObjectUtil.isNotEmpty(item.getSort())){
                     list.add(item);
                 }
             }

+ 2 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/jobPosion/service/PositionService.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.test.jobPosion.domain.Position;
 import com.jeeplus.test.jobPosion.mapper.PositionMapper;
 import com.jeeplus.test.jobPosion.service.dto.PositionCategoryDTO;
@@ -36,7 +37,7 @@ public class PositionService extends ServiceImpl<PositionMapper, Position> {
         List<PositionDTO> list = new ArrayList<>();
         positionDTOList.stream().forEach(item->{
             if(ObjectUtil.isNotEmpty(item)){
-                if(StrUtil.isNotEmpty(item.getId())&&ObjectUtil.isNotEmpty(item.getSort())){
+                if(StringUtils.isNotBlank(item.getId())&&ObjectUtil.isNotEmpty(item.getSort())){
                     list.add(item);
                 }
             }

+ 38 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/jobPosion/utils/BeanUtils.java

@@ -1,10 +1,13 @@
 package com.jeeplus.test.jobPosion.utils;
 
 import com.jeeplus.test.jobPosion.annotation.ForUpdate;
+import lombok.extern.log4j.Log4j;
+import lombok.extern.log4j.Log4j2;
 
 import java.lang.reflect.Field;
+import java.lang.reflect.Type;
 import java.util.Objects;
-
+@Log4j2
 public class BeanUtils {
     /**
      * 获取变更内容
@@ -37,4 +40,38 @@ public class BeanUtils {
         }
         return builder.toString();
     }
+
+    public static boolean objectCheckIsNull(Object object) {
+        boolean flag = false; //定义返回结果,默认为true
+
+        if (Objects.isNull(object)) {
+            flag = false;
+        } else {
+            Class clazz = (Class) object.getClass(); // 得到类对象
+            Field fields[] = clazz.getDeclaredFields(); // 得到所有属性
+            for (Field field : fields) {
+                if("serialVersionUID".equals(field.getName())){
+                    continue;
+                }
+                field.setAccessible(true);
+                Object fieldValue = null;
+                try {
+                    fieldValue = field.get(object); //得到属性值
+                    Type fieldType = field.getGenericType();//得到属性类型
+                    String fieldName = field.getName(); // 得到属性名
+                    log.info("属性类型:" + fieldType + ",属性名:" + fieldName + ",属性值:" + fieldValue);
+                } catch (IllegalArgumentException e) {
+                    log.error(e.getMessage(), e);
+                } catch (IllegalAccessException e) {
+                    log.error(e.getMessage(), e);
+                }
+                if (fieldValue != null && fieldValue != "") {  //只要有一个属性值不为null 就返回false 表示对象不为null
+                    flag = true;
+                    break;
+                }
+            }
+        }
+
+        return flag;
+    }
 }

+ 39 - 5
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/oss/service/OssService.java

@@ -9,19 +9,18 @@ import com.jeeplus.sys.service.dto.UserDTO;
 import com.jeeplus.sys.utils.UserUtils;
 import com.jeeplus.test.oss.domain.WorkAttachment;
 import com.jeeplus.test.oss.mapper.OssServiceMapper;
-import com.jeeplus.test.oss.service.dto.OssServiceDto;
+import com.jeeplus.test.user.service.dto.FileUrlDto;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
 import org.flowable.editor.language.json.converter.util.CollectionUtils;
-import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletResponse;
 import java.io.BufferedInputStream;
 import java.io.BufferedOutputStream;
-import java.net.URL;
+import java.io.IOException;
 import java.net.URLEncoder;
 import java.util.*;
 
@@ -50,6 +49,12 @@ public class OssService {
     @Resource
     private OssServiceMapper ossServiceMapper;
 
+    @Value("${aliyun_directory}")
+    private String directory = "attachment-file/assess";
+
+    @Resource
+    private OSSClientService ossClientService;
+
     /**
      * 保存数据
      * @param workAttachments
@@ -164,7 +169,13 @@ public class OssService {
         }else {
             cons = aliyunDownloadUrl;
         }
-        String key = url.split(cons+"/")[1];
+        String key = "";
+        String[] split = url.split(cons + "/");
+        if(split.length>1){
+            key = split[1];
+        }else{
+            key = url;
+        }
         // 指定过期时间为24小时。
         Date expiration = new Date(new Date().getTime() + 1000 * 60 * 60 * 24 );
         //初始化OSSClient
@@ -211,4 +222,27 @@ public class OssService {
         }
     }
 
+    /**
+     * 上传文件
+     * @param file
+     * @param dir 存放文件夹名称
+     * @return
+     * @throws Exception
+     */
+    public FileUrlDto webUpload(MultipartFile file, String dir) throws IOException {
+        FileUrlDto dto = new FileUrlDto();
+        // 文件保存路径
+        String fileDir =directory+"/"+dir+ossClientService.datePath()+"/"+ System.currentTimeMillis();
+        // 判断文件是否为空
+        if (!file.isEmpty()) {
+            String name = file.getOriginalFilename ();
+            ossClientService.uploadFile2OSS(file.getInputStream(), fileDir, name);
+            String url = fileDir +name;
+            String lsUrl = this.getFileTemporaryLookUrl(aliyunUrl + "/" + fileDir +name);
+            dto.setUrl(url);
+            dto.setLsUrl(lsUrl);
+        }
+        return dto;
+    }
+
 }

+ 26 - 30
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/controller/ProjectController.java

@@ -155,7 +155,7 @@ public class ProjectController {
         if(StrUtil.isEmpty(projectDTO.getId())){
 
             //判断一下文号是否存在
-            if(StrUtil.isNotEmpty(projectDTO.getDocumentNum())){
+            if(StringUtils.isNotBlank(projectDTO.getDocumentNum())){
                 if(ObjectUtil.isNotEmpty(projectService.selectByDocumentNum(projectDTO.getDocumentNum()))){
                     return ResponseEntity.badRequest().body("不可使用已存在的文号");
                 }
@@ -165,7 +165,7 @@ public class ProjectController {
         }else{
 
             //判断一下文号是否存在
-            if(StrUtil.isNotEmpty(projectDTO.getDocumentNum())){
+            if(StringUtils.isNotBlank(projectDTO.getDocumentNum())){
                 Project userProjects = projectService.selectByDocumentNum(projectDTO.getDocumentNum());
                 if(ObjectUtil.isNotEmpty(userProjects)){
                     if(!projectDTO.getId().equals(userProjects.getId())){
@@ -234,7 +234,7 @@ public class ProjectController {
             listA = getExcelList(listA);
             //导入前检测数据
             String resultA = importDecide(listA, sdf, arrayList, hashMap, successNum, ProjectTypeEnum.ASSESS.getValue());
-            if(StrUtil.isNotEmpty(resultA)){
+            if(StringUtils.isNotBlank(resultA)){
                 //有返回值,说明导入的数据不正确。向用户抛提示
                 return ResponseEntity.badRequest().body  (resultA);
             }
@@ -248,7 +248,7 @@ public class ProjectController {
             listB = getExcelList(listB);
             //导入前检测数据
             String resultB = importDecide(listB, sdf, arrayList, hashMap, successNum, ProjectTypeEnum.CONSULTATION.getValue());
-            if(StrUtil.isNotEmpty(resultB)){
+            if(StringUtils.isNotBlank(resultB)){
                 //有返回值,说明导入的数据不正确。向用户抛提示
                 return ResponseEntity.badRequest().body  (resultB);
             }
@@ -273,7 +273,7 @@ public class ProjectController {
                 continue;
             }
             try {
-                if(StrUtil.isNotEmpty(project.getEvaluationReportDateUi())){
+                if(StringUtils.isNotBlank(project.getEvaluationReportDateUi())){
                     //EvaluationReportDateUi字段接到的数据符合"yyyy/MM/dd"时间格式的话,正常执行。
                     //不符合的话,就会有异常,进到catch
                     String format = sdf.format(DateUtils.parseDate(project.getEvaluationReportDateUi(), new String[]{"yyyy/MM/dd"}));
@@ -282,7 +282,7 @@ public class ProjectController {
                     project.setStatus(ProjectStatusEnum.FINISH.getValue());
                 }
             }catch (Exception e){
-                if(StrUtil.isNotEmpty(project.getEvaluationReportDateUi())){
+                if(StringUtils.isNotBlank(project.getEvaluationReportDateUi())){
                     if(project.getEvaluationReportDateUi().contains("报告已作废")){
                         //当EvaluationReportDateUi字段接收到的值包含”报告已作废“时,项目状态为”作废“,并且将值放到AssessReportMessage字段中
                         project.setStatus(ProjectStatusEnum.INVALID.getValue());
@@ -299,31 +299,31 @@ public class ProjectController {
             }
 
             try {
-                if(StrUtil.isNotEmpty(project.getEvaluationBaseDateUi())){
+                if(StringUtils.isNotBlank(project.getEvaluationBaseDateUi())){
                     String format = sdf.format(DateUtils.parseDate(project.getEvaluationBaseDateUi(), new String[]{"yyyy/MM/dd"}));
                     project.setEvaluationBaseDate(sdf.parse(format));
                 }
             }catch (Exception e){
-                if(StrUtil.isNotEmpty(project.getEvaluationBaseDateUi())){
+                if(StringUtils.isNotBlank(project.getEvaluationBaseDateUi())){
                     project.setAssessBaseMessage(project.getEvaluationBaseDateUi());
                 }
 
             }
 
             try {
-                if(StrUtil.isNotEmpty(project.getInvoiceDateUi())){
+                if(StringUtils.isNotBlank(project.getInvoiceDateUi())){
                     String format = sdf.format(DateUtils.parseDate(project.getInvoiceDateUi(), new String[]{"yyyy/MM/dd"}));
                     project.setInvoiceDate(sdf.parse(format));
                 }
             }catch (Exception e){
-                if(StrUtil.isNotEmpty(project.getInvoiceDateUi())){
+                if(StringUtils.isNotBlank(project.getInvoiceDateUi())){
                     project.setInvoiceMessage(project.getInvoiceDateUi());
                 }
 
             }
 
             try {
-                if(StrUtil.isNotEmpty(project.getReimbursementDateUi())){
+                if(StringUtils.isNotBlank(project.getReimbursementDateUi())){
                     String format = sdf.format(DateUtils.parseDate(project.getReimbursementDateUi(), new String[]{"yyyy/MM/dd"}));
                     project.setReimbursementDate(sdf.parse(format));
                 }
@@ -332,9 +332,9 @@ public class ProjectController {
             }
 
             //项目负责人、签字评估师1、签字评估师2 关联user表的id
-            if(StrUtil.isNotEmpty(project.getProjectHead())){
+            if(StringUtils.isNotBlank(project.getProjectHead())){
                 String id = userService.getUserIdByName(project.getProjectHead());
-                if(StrUtil.isNotEmpty(id)){
+                if(StringUtils.isNotBlank(id)){
                     project.setProjectHead(id);
                 }else{
                     return "文件中有项目负责人无法找到,请修改为在档人员,或者不填写";
@@ -343,7 +343,7 @@ public class ProjectController {
                 return "文件中有项目负责人为空,请重新填写";
             }
 
-            /*if(StrUtil.isNotEmpty(project.getEvaluationPersonOne())){
+            /*if(StringUtils.isNotBlank(project.getEvaluationPersonOne())){
                 String id = userService.getUserIdByName(project.getEvaluationPersonOne());
                 if(ObjectUtil.isNotEmpty(id)){
                     project.setEvaluationPersonOne(id);
@@ -352,7 +352,7 @@ public class ProjectController {
                 }
             }*/
 
-            /*if(StrUtil.isNotEmpty(project.getEvaluationPersonTwo())){
+            /*if(StringUtils.isNotBlank(project.getEvaluationPersonTwo())){
                 String id = userService.getUserIdByName(project.getEvaluationPersonTwo());
                 if(ObjectUtil.isNotEmpty(id)){
                     project.setEvaluationPersonTwo(id);
@@ -362,7 +362,7 @@ public class ProjectController {
             }*/
 
             //文号的问题
-            if(StrUtil.isNotEmpty(project.getDocumentNum())) {
+            if(StringUtils.isNotBlank(project.getDocumentNum())) {
                 Project userProject = projectService.selectByDocumentNum(project.getDocumentNum());
                 if(ObjectUtil.isNotEmpty(userProject)){
                     return "文件中存在已在档的文号";
@@ -517,7 +517,7 @@ public class ProjectController {
 
     public ProjectDTO isChange(ProjectDTO userProjectDTO, SimpleDateFormat formatter){
 
-        if(StrUtil.isNotEmpty(userProjectDTO.getIsInvoice())){
+        if(StringUtils.isNotBlank(userProjectDTO.getIsInvoice())){
             //是否开票
             if(YesOrNoEnum.YES.getValue().equals(userProjectDTO.getIsInvoice())){
                 userProjectDTO.setIsInvoice(YesOrNoEnum.YES.getLabel());
@@ -527,7 +527,7 @@ public class ProjectController {
         }
 
 
-        if(StrUtil.isNotEmpty(userProjectDTO.getIsContractArchive())) {
+        if(StringUtils.isNotBlank(userProjectDTO.getIsContractArchive())) {
             //合同是否存档
             if (YesOrNoEnum.YES.getValue().equals(userProjectDTO.getIsContractArchive())) {
                 userProjectDTO.setIsContractArchive(YesOrNoEnum.YES.getLabel());
@@ -536,7 +536,7 @@ public class ProjectController {
             }
         }
 
-        if(StrUtil.isNotEmpty(userProjectDTO.getIsPapersIntact())) {
+        if(StringUtils.isNotBlank(userProjectDTO.getIsPapersIntact())) {
             //底稿是否完好
             if (YesOrNoEnum.YES.getValue().equals(userProjectDTO.getIsPapersIntact())) {
                 userProjectDTO.setIsPapersIntact(YesOrNoEnum.YES.getLabel());
@@ -545,7 +545,7 @@ public class ProjectController {
             }
         }
 
-        if(StrUtil.isNotEmpty(userProjectDTO.getIsPapersArchive())) {
+        if(StringUtils.isNotBlank(userProjectDTO.getIsPapersArchive())) {
             //底稿是否归档
             if (YesOrNoEnum.YES.getValue().equals(userProjectDTO.getIsPapersArchive())) {
                 userProjectDTO.setIsPapersArchive(YesOrNoEnum.YES.getLabel());
@@ -554,7 +554,7 @@ public class ProjectController {
             }
         }
 
-        if(StrUtil.isNotEmpty(userProjectDTO.getIsOpsReimbursement())) {
+        if(StringUtils.isNotBlank(userProjectDTO.getIsOpsReimbursement())) {
             //外勤是否已经报销
             if (YesOrNoEnum.YES.getValue().equals(userProjectDTO.getIsOpsReimbursement())) {
                 userProjectDTO.setIsOpsReimbursement(YesOrNoEnum.YES.getLabel());
@@ -563,7 +563,7 @@ public class ProjectController {
             }
         }
 
-        if(StrUtil.isNotEmpty(userProjectDTO.getIsCommissionReimbursement())) {
+        if(StringUtils.isNotBlank(userProjectDTO.getIsCommissionReimbursement())) {
             //是否已经报销提成
             if (YesOrNoEnum.YES.getValue().equals(userProjectDTO.getIsCommissionReimbursement())) {
                 userProjectDTO.setIsCommissionReimbursement(YesOrNoEnum.YES.getLabel());
@@ -578,7 +578,7 @@ public class ProjectController {
             String time=formatter.format(userProjectDTO.getEvaluationReportDate());
             userProjectDTO.setEvaluationReportDateUi(time);
         }else{
-            if(StrUtil.isNotEmpty(userProjectDTO.getAssessReportMessage())){
+            if(StringUtils.isNotBlank(userProjectDTO.getAssessReportMessage())){
                 userProjectDTO.setEvaluationReportDateUi(userProjectDTO.getAssessReportMessage());
             }
         }
@@ -587,7 +587,7 @@ public class ProjectController {
             String time=formatter.format(userProjectDTO.getEvaluationBaseDate());
             userProjectDTO.setEvaluationBaseDateUi(time);
         }else{
-            if(StrUtil.isNotEmpty(userProjectDTO.getAssessBaseMessage())){
+            if(StringUtils.isNotBlank(userProjectDTO.getAssessBaseMessage())){
                 userProjectDTO.setEvaluationBaseDateUi(userProjectDTO.getAssessBaseMessage());
             }
         }
@@ -596,7 +596,7 @@ public class ProjectController {
             String time=formatter.format(userProjectDTO.getInvoiceDate());
             userProjectDTO.setInvoiceDateUi(time);
         }else{
-            if(StrUtil.isNotEmpty(userProjectDTO.getInvoiceMessage())){
+            if(StringUtils.isNotBlank(userProjectDTO.getInvoiceMessage())){
                 userProjectDTO.setInvoiceDateUi(userProjectDTO.getInvoiceMessage());
             }
         }
@@ -658,9 +658,5 @@ public class ProjectController {
         return flag;
     }
 
-    @GetMapping("proportion")
-    @ApiOperation(value = "项目完成比例")
-    public String proportion(String itemType) {
-        return projectService.proportion(itemType);
-    }
+
 }

+ 0 - 5
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/domain/Project.java

@@ -214,11 +214,6 @@ public class Project extends BaseEntity {
     @Query(type = QueryType.EQ)
     private String itemType;
 
-    /**
-     * 文件上传状态(0未完成1已完成)
-     */
-    private String fileUploadType;
-
     private static final long serialVersionUID = 1L;
 
     /**

+ 0 - 3
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/mapper/ProjectMapper.java

@@ -7,7 +7,6 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Constants;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jeeplus.test.projectRecords.domain.Project;
-import liquibase.pro.packaged.S;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -21,6 +20,4 @@ public interface ProjectMapper extends BaseMapper<Project> {
     public IPage<Project> selectPage(Page<Project> page, @Param("project") Project project);
 
     public IPage<Project> findList(Page<Project> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
-
-    public String proportion(String itemType);
 }

+ 1 - 13
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/mapper/xml/ProjectMapper.xml

@@ -98,8 +98,7 @@
     pr.assess_base_message,
     pr.invoice_message,
     pr.is_commission_reimbursement,
-    pr.item_type,
-    pr.file_upload_type
+    pr.item_type
   </sql>
 
 
@@ -172,15 +171,4 @@
     order by pr.create_date desc
   </select>
 
-  <select id="proportion" resultType="java.lang.String">
-    SELECT
-        CONVERT((COUNT(1)/(SELECT COUNT(1) FROM project_records WHERE del_flag = 0 AND item_type = #{itemType})*100), DECIMAL(10,2)) AS num
-    FROM
-        project_records
-    WHERE
-        del_flag = 0
-		AND item_type = #{itemType}
-		AND file_upload_type = '1'
-  </select>
-
 </mapper>

+ 6 - 15
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/service/ProjectService.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.sys.utils.UserUtils;
 import com.jeeplus.test.projectRecords.domain.Project;
 import com.jeeplus.test.projectRecords.mapper.ProjectMapper;
@@ -52,19 +53,19 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
     public Project projectDtoToDate(Project project, ProjectDTO projectDTO){
         SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
         try {
-            if(StrUtil.isNotEmpty(projectDTO.getEvaluationBaseDateUi())){
+            if(StringUtils.isNotBlank(projectDTO.getEvaluationBaseDateUi())){
                 project.setEvaluationBaseDate(sdf.parse(projectDTO.getEvaluationBaseDateUi()));
             }
 
-            if(StrUtil.isNotEmpty(projectDTO.getEvaluationReportDateUi())){
+            if(StringUtils.isNotBlank(projectDTO.getEvaluationReportDateUi())){
                 project.setEvaluationReportDate(sdf.parse(projectDTO.getEvaluationReportDateUi()));
             }
 
-            if(StrUtil.isNotEmpty(projectDTO.getInvoiceDateUi())){
+            if(StringUtils.isNotBlank(projectDTO.getInvoiceDateUi())){
                 project.setInvoiceDate(sdf.parse(projectDTO.getInvoiceDateUi()));
             }
 
-            if(StrUtil.isNotEmpty(projectDTO.getReimbursementDateUi())){
+            if(StringUtils.isNotBlank(projectDTO.getReimbursementDateUi())){
                 project.setReimbursementDate(sdf.parse(projectDTO.getReimbursementDateUi()));
             }
 
@@ -83,7 +84,7 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
     public LambdaUpdateWrapper getLambdaUpdateWrapper(ProjectDTO project){
         LambdaUpdateWrapper<Project> wrapper = new LambdaUpdateWrapper<Project>();
 
-        if(StrUtil.isNotEmpty(project.getId())){
+        if(StringUtils.isNotBlank(project.getId())){
             wrapper.eq(Project::getId,project.getId());
         }
 
@@ -114,14 +115,4 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
     public Project selectByDocumentNum(String documentNum){
         return projectMapper.selectByDocumentNum(documentNum);
     }
-
-    /**
-     * 项目文件上传完成比例
-     * @param itemType
-     * @return
-     */
-    public String proportion(String itemType) {
-        String s = projectMapper.proportion(itemType);
-        return s+"%";
-    }
 }

+ 4 - 4
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/service/dto/ProjectDTO.java

@@ -46,7 +46,7 @@ public class ProjectDTO extends BaseDTO {
     /**
      * 评估基准日ui
      */
-    @Excel(name = "评估基准日",importFormat = "yyyy/MM/dd")
+    @Excel(name = "评估基准日",format = "yyyy/MM/dd")
     private String evaluationBaseDateUi;
 
     /**
@@ -58,7 +58,7 @@ public class ProjectDTO extends BaseDTO {
     /**
      * 评估报告日ui
      */
-    @Excel(name = "评估报告日",importFormat = "yyyy/MM/dd")
+    @Excel(name = "评估报告日",format = "yyyy/MM/dd")
     private String evaluationReportDateUi;
 
     /**
@@ -136,7 +136,7 @@ public class ProjectDTO extends BaseDTO {
     /**
      * 开票日期ui
      */
-    @Excel(name = "开票日期",importFormat = "yyyy/MM/dd")
+    @Excel(name = "开票日期",format = "yyyy/MM/dd")
     private String invoiceDateUi;
 
     /**
@@ -202,7 +202,7 @@ public class ProjectDTO extends BaseDTO {
     /**
      * 报销日期ui
      */
-    @Excel(name = "报销日期",importFormat = "yyyy/MM/dd")
+    @Excel(name = "报销日期",format = "yyyy/MM/dd")
     private String reimbursementDateUi;
 
     /**

+ 7 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/controller/RankController.java

@@ -13,6 +13,7 @@ import com.jeeplus.sys.domain.Office;
 import com.jeeplus.sys.service.OfficeService;
 import com.jeeplus.sys.service.dto.OfficeDTO;
 import com.jeeplus.sys.service.mapstruct.OfficeWrapper;
+import com.jeeplus.test.jobPosion.domain.JobPosition;
 import com.jeeplus.test.rank.domain.Rank;
 import com.jeeplus.test.rank.domain.RankRRs;
 import com.jeeplus.test.rank.domain.RankRsOffice;
@@ -148,4 +149,10 @@ public class RankController {
         });
         return ResponseEntity.ok (rankSequenceDTOS);
     }
+
+    @GetMapping("getRankByPosition")
+    public ResponseEntity getRankByPosition(String id){
+        List<RankDTO> rankList = rankService.getRankByPosition(id);
+        return ResponseEntity.ok(rankList);
+    }
 }

+ 3 - 2
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/controller/RankSystemTableController.java

@@ -13,6 +13,7 @@ import com.jeeplus.sys.domain.Post;
 import com.jeeplus.sys.service.PostService;
 import com.jeeplus.sys.service.dto.PostDTO;
 import com.jeeplus.sys.service.mapstruct.PostWrapper;
+import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.test.jobPosion.domain.Position;
 import com.jeeplus.test.jobPosion.service.PositionService;
 import com.jeeplus.test.jobPosion.service.dto.PositionDTO;
@@ -75,7 +76,7 @@ public class RankSystemTableController {
         RankSystemTable rankSystemTable = RankSystemTableWrapper.INSTANCE.toEntity(rankSystemTableDTO);
         QueryWrapper<RankSystemTable> queryWrapper = QueryWrapperGenerator.buildQueryCondition ( rankSystemTable, RankSystemTable.class );
         if(ObjectUtil.isNotEmpty(rankSystemTableDTO)){
-            if(StrUtil.isNotEmpty(rankSystemTableDTO.getLevelId())){
+            if(StringUtils.isNotBlank(rankSystemTableDTO.getLevelId())){
                 List<RankRstLevel> rankRstLevels = rankRstLevelService.list(new QueryWrapper<RankRstLevel>().in("level_id", rankSystemTableDTO.getLevelId()));
                 if(CollectionUtil.isEmpty(rankRstLevels)){
                     return ResponseEntity.ok (null);
@@ -105,7 +106,7 @@ public class RankSystemTableController {
 
             }
         }
-        if(StrUtil.isNotEmpty(rankSystemTableDTO.getRsId())){
+        if(StringUtils.isNotBlank(rankSystemTableDTO.getRsId())){
             queryWrapper.eq("rs_p.id",rankSystemTableDTO.getRsId());
         }
         IPage<RankSystemTableDTO> result = this.rankSystemTableService.findList (page,queryWrapper);

+ 2 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/mapper/RankMapper.java

@@ -22,4 +22,6 @@ public interface RankMapper extends BaseMapper<Rank> {
     public RankDTO getById(@Param("id") String id);
 
     public void updateUseFlagById(@Param("ids") List<String> ids, @Param("useFlag") String useFlag);
+
+    public List<RankDTO> getRankByPosition(@Param("id") String id);
 }

+ 10 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/mapper/xml/RankMapper.xml

@@ -107,4 +107,14 @@
     </foreach>
   </update>
 
+  <select id="getRankByPosition" resultType="com.jeeplus.test.rank.service.dto.RankDTO">
+    select
+    distinct
+    rc.id,rc.name
+    from rank_children rc
+    inner join rank_rst_position rrp on rc.id = rrp.rc_id and rrp.del_flag = '0'
+    where rc.del_flag = '0' and rrp.position_id = #{id}
+  </select>
+
+
 </mapper>

+ 6 - 5
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/service/RankSequenceService.java

@@ -10,6 +10,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.sys.utils.UserUtils;
 import com.jeeplus.test.rank.domain.RankRsOffice;
 import com.jeeplus.test.rank.domain.RankRstPosition;
@@ -66,19 +67,19 @@ public class RankSequenceService extends ServiceImpl<RankSequenceMapper,RankSequ
         List<String> ids = new ArrayList<>();
         if(CollectionUtil.isNotEmpty(rankSequenceDTOList)){
             rankSequenceDTOList.stream().forEach(item->{
-                if(StrUtil.isNotEmpty(item.getId())){
+                if(StringUtils.isNotBlank(item.getId())){
                     ids.add(item.getId());
                 }
-                if(StrUtil.isNotEmpty(item.getName())){
+                if(StringUtils.isNotBlank(item.getName())){
                     hashMap.put(item.getName(),null);
                 }
                 if(CollectionUtil.isNotEmpty(item.getRankSequenceDTOList())){
                     listSize.set(listSize.get()+item.getRankSequenceDTOList().size());
                     item.getRankSequenceDTOList().stream().forEach(item2->{
-                        if(StrUtil.isNotEmpty(item2.getId())){
+                        if(StringUtils.isNotBlank(item2.getId())){
                             ids.add(item2.getId());
                         }
-                        if(StrUtil.isNotEmpty(item2.getName())){
+                        if(StringUtils.isNotBlank(item2.getName())){
                             hashMap.put(item2.getName(),null);
                         }
                     });
@@ -104,7 +105,7 @@ public class RankSequenceService extends ServiceImpl<RankSequenceMapper,RankSequ
                     });
                 }
                 if(ObjectUtil.isNotEmpty(item)){
-                    if(StrUtil.isNotEmpty(item.getId())){
+                    if(StringUtils.isNotBlank(item.getId())){
                         rankRsOfficeMapper.delete(new QueryWrapper<RankRsOffice>().eq("rs_id",item.getId()));
                         if(CollectionUtil.isNotEmpty(item.getOfficeIdList())){
                             rankRsOfficeMapper.insertListById(item.getId(),item, UserUtils.getCurrentUserDTO().getId());

+ 11 - 6
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/service/RankService.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.sys.utils.UserUtils;
 import com.jeeplus.test.rank.domain.*;
 import com.jeeplus.test.rank.mapper.RankChildrenMapper;
@@ -54,7 +55,7 @@ public class RankService extends ServiceImpl<RankMapper, Rank> {
     public ResponseEntity saveRank(RankDTO rankDTO){
         Rank rank = RankWrapper.INSTANCE.toEntity(rankDTO);
         if(ObjectUtil.isNotEmpty(rank)){
-            if(StrUtil.isNotEmpty(rank.getId())){
+            if(StringUtils.isNotBlank(rank.getId())){
                 if("2".equals(rank.getUseFlag())){
                     List<RankSystemTable> rank_id = rankSystemTableService.list(new QueryWrapper<RankSystemTable>().eq("rank_id", rank.getId()));
                     if(CollectionUtil.isNotEmpty(rank_id)){
@@ -62,13 +63,13 @@ public class RankService extends ServiceImpl<RankMapper, Rank> {
                     }
                 }
             }
-            if(StrUtil.isNotEmpty(rank.getId())&&StrUtil.isNotEmpty(rank.getGroupName())){
+            if(StringUtils.isNotBlank(rank.getId())&&StringUtils.isNotBlank(rank.getGroupName())){
                 List<Rank> rank1 = rankMapper.selectList(new QueryWrapper<Rank>().ne("id", rank.getId()).eq("group_name", rank.getGroupName()));
                 if(CollectionUtil.isNotEmpty(rank1)){
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     return ResponseEntity.badRequest().body("分组名称已存在");
                 }
-            }else if(StrUtil.isEmpty(rank.getId())&&StrUtil.isNotEmpty(rank.getGroupName())){
+            }else if(StrUtil.isEmpty(rank.getId())&&StringUtils.isNotBlank(rank.getGroupName())){
                 List<Rank> rank2 = rankMapper.selectList(new QueryWrapper<Rank>().eq("group_name", rank.getGroupName()));
                 if(CollectionUtil.isNotEmpty(rank2)){
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
@@ -79,7 +80,7 @@ public class RankService extends ServiceImpl<RankMapper, Rank> {
             return ResponseEntity.badRequest().body("要保存的数据不正确");
         }
         this.saveOrUpdate(rank);
-        if(StrUtil.isNotEmpty(rank.getUseFlag())){
+        if(StringUtils.isNotBlank(rank.getUseFlag())){
             if("1".equals(rank.getUseFlag())){
                 List<RankSystemTable> rank_id = rankSystemTableService.list(new QueryWrapper<RankSystemTable>().eq("rank_id", rank.getId()));
                 if(CollectionUtil.isEmpty(rank_id)){
@@ -91,7 +92,7 @@ public class RankService extends ServiceImpl<RankMapper, Rank> {
             }
         }
         if(ObjectUtil.isNotEmpty(rankDTO)){
-            if(StrUtil.isNotEmpty(rankDTO.getId())){
+            if(StringUtils.isNotBlank(rankDTO.getId())){
                 rankChildrenMapper.delete(new QueryWrapper<RankChildren>().eq("rank_id",rankDTO.getId()));
                 rankRRsMapper.delete(new QueryWrapper<RankRRs>().eq("rank_id",rankDTO.getId()));
                 if(CollectionUtil.isNotEmpty(rankDTO.getSequenceIdList())){
@@ -117,7 +118,7 @@ public class RankService extends ServiceImpl<RankMapper, Rank> {
                         }
                     }
                 });
-                if(StrUtil.isNotEmpty(err.get())){
+                if(StringUtils.isNotBlank(err.get())){
                     TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                     return ResponseEntity.badRequest().body(err.get());
                 }
@@ -158,4 +159,8 @@ public class RankService extends ServiceImpl<RankMapper, Rank> {
     public void updateUseFlagById(List<String> ids, String useFlag){
         rankMapper.updateUseFlagById(ids,useFlag);
     }
+
+    public List<RankDTO> getRankByPosition(String id){
+        return rankMapper.getRankByPosition(id);
+    }
 }

+ 2 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/service/RankSystemTableService.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jeeplus.sys.service.dto.PostDTO;
+import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.test.jobPosion.service.dto.PositionDTO;
 import com.jeeplus.test.rank.domain.*;
 import com.jeeplus.test.rank.mapper.*;
@@ -64,7 +65,7 @@ public class RankSystemTableService extends ServiceImpl<RankSystemTableMapper, R
         rankRstLevelMapper.delete(new QueryWrapper<RankRstLevel>().eq("rst_id",rankSystemTable.getId()).eq("rc_id",rankSystemTableDTO.getRcId()).eq("rs_id",rankSystemTableDTO.getRsId()));
 
         if(ObjectUtil.isNotEmpty(rankSystemTableDTO.getRankRstLevelDTO())){
-            if(StrUtil.isNotEmpty(rankSystemTableDTO.getRankRstLevelDTO().getId())){
+            if(StringUtils.isNotBlank(rankSystemTableDTO.getRankRstLevelDTO().getId())){
                 RankRstLevel rankRstLevel = new RankRstLevel();
                 rankRstLevel.setLevelId(rankSystemTableDTO.getRankRstLevelDTO().getId());
                 rankRstLevel.setRstId(rankSystemTable.getId());

+ 5 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/rank/service/dto/RankDTO.java

@@ -51,5 +51,10 @@ public class RankDTO extends BaseDTO {
      */
     private List<RankChildrenDTO> rankList;
 
+    /**
+     * 子职级名称
+     */
+    private String name;
+
     private static final long serialVersionUID = 1L;
 }

+ 146 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/controller/RosterBaseController.java

@@ -0,0 +1,146 @@
+package com.jeeplus.test.roster.controller;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.google.common.collect.Lists;
+import com.jeeplus.aop.logging.annotation.ApiLog;
+import com.jeeplus.core.query.QueryWrapperGenerator;
+import com.jeeplus.sys.constant.enums.LogTypeEnum;
+import com.jeeplus.sys.domain.User;
+import com.jeeplus.sys.service.UserService;
+import com.jeeplus.sys.service.dto.UserDTO;
+import com.jeeplus.sys.service.mapstruct.UserWrapper;
+import com.jeeplus.test.oss.service.OssService;
+import com.jeeplus.test.rank.domain.Rank;
+import com.jeeplus.test.rank.domain.RankRRs;
+import com.jeeplus.test.rank.domain.RankSequence;
+import com.jeeplus.test.rank.service.RankRRSService;
+import com.jeeplus.test.rank.service.RankSequenceService;
+import com.jeeplus.test.rank.service.RankService;
+import com.jeeplus.test.rank.service.dto.RankDTO;
+import com.jeeplus.test.rank.service.dto.RankSequenceDTO;
+import com.jeeplus.test.rank.service.mapstruct.RankSequenceWrapper;
+import com.jeeplus.test.rank.service.mapstruct.RankWrapper;
+import com.jeeplus.test.roster.domain.RosterBase;
+import com.jeeplus.test.roster.service.RosterBaseService;
+import com.jeeplus.test.roster.service.dto.RosterBaseDTO;
+import com.jeeplus.test.roster.service.mapstruct.RosterBaseWrapper;
+import com.jeeplus.test.user.service.dto.FileUrlDto;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Api("花名册")
+@RestController
+@RequestMapping(value = "/roster/base")
+public class RosterBaseController {
+
+    @Autowired
+    private RosterBaseService rosterBaseService;
+
+    @Autowired
+    private UserService userService;
+
+    @Autowired
+    private OssService ossService;
+
+    /**
+     * 查询花名册列表
+     * @param rosterBaseDTO
+     * @param page
+     * @return
+     * @throws Exception
+     */
+    @ApiLog("查询花名册列表")
+    @PreAuthorize("hasAuthority('roster:base:list')")
+    @GetMapping("list")
+    public ResponseEntity<IPage<RosterBaseDTO>> data(RosterBaseDTO rosterBaseDTO, Page<RosterBaseDTO> page) throws Exception {
+        RosterBase rosterBase = RosterBaseWrapper.INSTANCE.toEntity(rosterBaseDTO);
+        QueryWrapper<RosterBase> queryWrapper = QueryWrapperGenerator.buildQueryCondition ( rosterBase, RosterBase.class );
+        IPage<RosterBaseDTO> result = rosterBaseService.findList (page,queryWrapper);
+        return ResponseEntity.ok (result);
+    }
+
+    /**
+     * 查询花名册数据
+     * @param id
+     * @return
+     */
+    @ApiLog("查询花名册详情")
+    @PreAuthorize ("hasAnyAuthority('roster:base:view','roster:base:add','roster:base:edit')")
+    @GetMapping("queryById")
+    public ResponseEntity queryById(@RequestParam("id") String id) {
+        RosterBaseDTO rosterBaseDTO = rosterBaseService.queryById ( id );
+        return ResponseEntity.ok (rosterBaseDTO);
+    }
+
+    /**
+     * 添加花名册
+     * @param rosterBaseDTO
+     * @return
+     */
+    @ApiLog(value = "修改/新增花名册", type = LogTypeEnum.SAVE)
+    @PreAuthorize("hasAnyAuthority('roster:base:save','roster:base:edit')")
+    @PostMapping("save")
+    public ResponseEntity save(@Valid @RequestBody RosterBaseDTO rosterBaseDTO, HttpServletRequest request) {
+        return rosterBaseService.saveRoster(rosterBaseDTO);
+    }
+
+    /**
+     * 删除花名册
+     * @param ids
+     * @return
+     */
+    @ApiLog(value = "删除花名册", type = LogTypeEnum.SAVE)
+    @PreAuthorize ("hasAuthority('roster:base:del')")
+    @DeleteMapping("delete")
+    public ResponseEntity delete(String ids,HttpServletRequest request) {
+        String idArray[] =ids.split(",");
+        rosterBaseService.removeByIds (Lists.newArrayList (idArray));
+        return ResponseEntity.ok ("删除花名册成功");
+    }
+
+    /**
+     * 上传文件
+     * @return
+     * @throws IOException
+     */
+    @ApiOperation("上传文件")
+    @RequestMapping("webUpload/upload")
+    public ResponseEntity<FileUrlDto> webUpload(HttpServletRequest request, MultipartFile file) throws IOException {
+        String dir = "roster";
+        FileUrlDto dto = ossService.webUpload(file,dir);
+        return ResponseEntity.ok(dto);
+    }
+
+    /**
+     * 查询所有用户
+     * @return
+     */
+    @ApiLog("查询所有用户")
+    @GetMapping("queryAllSupervisor")
+    public ResponseEntity queryAllSupervisor() {
+        List<UserDTO> userDTOList = new ArrayList<>();
+        List<User> list = userService.list();
+        list.stream().forEach(item->{
+            UserDTO userDTO = UserWrapper.INSTANCE.toDTO (item);
+            userDTOList.add(userDTO);
+        });
+        return ResponseEntity.ok (userDTOList);
+    }
+
+}

+ 62 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterBankCards.java

@@ -0,0 +1,62 @@
+package com.jeeplus.test.roster.domain;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 花名册-银行卡信息
+ * @TableName roster_bank_cards
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("roster_bank_cards")
+public class RosterBankCards extends BaseEntity {
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 基础信息id
+     */
+    private String baseId;
+
+    /**
+     * 工资卡开户银行
+     */
+    private String payrollCardOpenBank;
+
+    /**
+     * 工资卡分支行
+     */
+    private String payrollCardBranches;
+
+    /**
+     * 工资卡银行账号
+     */
+    private String payrollCardBankAccount;
+
+    /**
+     * 工资卡开户名
+     */
+    private String payrollCardOpeningName;
+
+    /**
+     * 工资卡照片
+     */
+    private String payrollCardPic;
+
+    /**
+     * 是否为默认
+     */
+    private String isDefault;
+
+    private static final long serialVersionUID = 1L;
+
+
+}

+ 227 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterBase.java

@@ -0,0 +1,227 @@
+package com.jeeplus.test.roster.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.query.Query;
+import com.jeeplus.core.query.QueryType;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * roster_base
+ * @author 
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("roster_base")
+public class RosterBase extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 姓名
+     */
+    @Query(type = QueryType.LIKE, tableColumn = "rb.name")
+    private String name;
+
+    /**
+     * 部门id
+     */
+    private String officeId;
+
+    /**
+     * 职位id
+     */
+    private String jobPositionId;
+
+    /**
+     * 职务id
+     */
+    private String positionId;
+
+    /**
+     * 职级id
+     */
+    private String rankId;
+
+    /**
+     * 工号
+     */
+    private String jobNo;
+
+    /**
+     * 证件类型
+     */
+    private String certificatesType;
+
+    /**
+     * 证件号
+     */
+    @Query(type = QueryType.LIKE, tableColumn = "rb.id_card")
+    private String idCard;
+
+    /**
+     * 证件照正面
+     */
+    private String certificatesFront;
+
+    /**
+     * 证件照反面
+     */
+    private String certificatesBack;
+
+    /**
+     * 手机号码
+     */
+    private String mobile;
+
+    /**
+     * 合同类型
+     */
+    private String contractType;
+
+    /**
+     * 员工类型
+     */
+    @Query(type = QueryType.EQ, tableColumn = "rb.worker_type")
+    private String workerType;
+
+    /**
+     * 入职日期
+     */
+    private Date onboardingDate;
+
+    /**
+     * 历史工龄
+     */
+    private String seniority;
+
+    /**
+     * 合同公司
+     */
+    private String contractCompany;
+
+    /**
+     * 性别
+     */
+    private String sex;
+
+    /**
+     * 出生日期
+     */
+    private Date birthDate;
+
+    /**
+     * 工作地点
+     */
+    private String workPlace;
+
+    /**
+     * 联系地址
+     */
+    private String contactAddress;
+
+    /**
+     * 入职年度就业情形
+     */
+    private String employmentSituation;
+
+    /**
+     * 工时制度
+     */
+    private String workingHour;
+
+    /**
+     * 民族
+     */
+    private String ethnic;
+
+    /**
+     * 户口类型
+     */
+    private String accountType;
+
+    /**
+     * 户口所在地
+     */
+    private String accountAddr;
+
+    /**
+     * 籍贯
+     */
+    private String origin;
+
+    /**
+     * 居住地址
+     */
+    private String liveAddr;
+
+    /**
+     * 最高学历
+     */
+    private String highestEducation;
+
+    /**
+     * 政治面貌
+     */
+    private String politicalFace;
+
+    /**
+     * 婚姻状况
+     */
+    private String maritalStatus;
+
+    /**
+     * 血型
+     */
+    private String bloodType;
+
+    /**
+     * 紧急联系人姓名
+     */
+    private String emergencyContactName;
+
+    /**
+     * 紧急联系人电话
+     */
+    private String emergencyContactTel;
+
+    /**
+     * 配偶姓名
+     */
+    private String spouseName;
+
+    /**
+     * 孩子姓名
+     */
+    private String childName;
+
+    /**
+     * QQ
+     */
+    private String qq;
+
+    /**
+     * 微信
+     */
+    private String wechat;
+
+    /**
+     * 个人邮箱
+     */
+    private String email;
+
+    /**
+     * 头像
+     */
+    private String headshot;
+
+    private static final long serialVersionUID = 1L;
+}

+ 86 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterCertificate.java

@@ -0,0 +1,86 @@
+package com.jeeplus.test.roster.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * roster_certificate
+ * @author 
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("roster_certificate")
+public class RosterCertificate extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 基础信息id
+     */
+    private String baseId;
+
+    /**
+     * 证书名称
+     */
+    private String certName;
+
+    /**
+     * 证书类型
+     */
+    private String certType;
+
+    /**
+     * 证书编号
+     */
+    private String certNo;
+
+    /**
+     * 发证机构
+     */
+    private String issuedInstitution;
+
+    /**
+     * 发证日期
+     */
+    private Date issuedDate;
+
+    /**
+     * 备案日期
+     */
+    private Date recordDate;
+
+    /**
+     * 提醒日期
+     */
+    private Date remindDate;
+
+    /**
+     * 到期日期
+     */
+    private Date expireDate;
+
+    /**
+     * 专业
+     */
+    private String profession;
+
+    /**
+     * 级别
+     */
+    private String level;
+
+    /**
+     * 描述
+     */
+    private String description;
+
+    private static final long serialVersionUID = 1L;
+}

+ 61 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterContract.java

@@ -0,0 +1,61 @@
+package com.jeeplus.test.roster.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * roster_contract
+ * @author 
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("roster_contract")
+public class RosterContract extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 基础信息id
+     */
+    private String baseId;
+
+    /**
+     * 当前合同起始日
+     */
+    private Date beginDate;
+
+    /**
+     * 当前合同终止日
+     */
+    private Date endDate;
+
+    /**
+     * 工作邮箱
+     */
+    private String workEmail;
+
+    /**
+     * 工作电话
+     */
+    private String workMobile;
+
+    /**
+     * 试用期到期日
+     */
+    private Date probationPeriodEndDate;
+
+    /**
+     * 试用期(月)
+     */
+    private String probationPeriodMonth;
+
+    private static final long serialVersionUID = 1L;
+}

+ 71 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterEducate.java

@@ -0,0 +1,71 @@
+package com.jeeplus.test.roster.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * roster_educate
+ * @author 
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("roster_educate")
+public class RosterEducate extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 基础信息id
+     */
+    private String baseId;
+
+    /**
+     * 学校
+     */
+    private String collegeName;
+
+    /**
+     * 专业
+     */
+    private String profession;
+
+    /**
+     * 入校时间
+     */
+    private Date entryDate;
+
+    /**
+     * 毕业日期
+     */
+    private Date graduationDate;
+
+    /**
+     * 是否取得学位
+     */
+    private String haveDegree;
+
+    /**
+     * 教育证书照1
+     */
+    private String educationCertFirst;
+
+    /**
+     * 教育证书照2
+     */
+    private String educationCertSecond;
+
+    /**
+     * 学历
+     */
+    private String degree;
+
+    private static final long serialVersionUID = 1L;
+}

+ 52 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterFamily.java

@@ -0,0 +1,52 @@
+package com.jeeplus.test.roster.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * roster_family
+ * @author 
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("roster_family")
+public class RosterFamily extends BaseEntity {
+
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 基础信息id
+     */
+    private String baseId;
+
+    /**
+     * 成员姓名
+     */
+    private String name;
+
+    /**
+     * 关系
+     */
+    private String relationship;
+
+    /**
+     * 出生日期
+     */
+    private Date birthDate;
+
+    /**
+     * 出生证明
+     */
+    private String birthCertificate;
+
+    private static final long serialVersionUID = 1L;
+}

+ 41 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterFiles.java

@@ -0,0 +1,41 @@
+package com.jeeplus.test.roster.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * roster_files
+ * @author 
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("roster_files")
+public class RosterFiles extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 基础信息id
+     */
+    private String baseId;
+
+    /**
+     * 文件路径
+     */
+    private String url;
+
+    /**
+     * 文件名称
+     */
+    private String name;
+
+    private static final long serialVersionUID = 1L;
+}

+ 42 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterLeadership.java

@@ -0,0 +1,42 @@
+package com.jeeplus.test.roster.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 花名册-直属领导
+ * @TableName roster_leadership
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("roster_leadership")
+public class RosterLeadership extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 基础信息id
+     */
+    private String baseId;
+
+    /**
+     * 汇报类型
+     */
+    private String debriefType;
+
+    /**
+     * 汇报对象
+     */
+    private String supervisorId;
+
+    private static final long serialVersionUID = 1L;
+}

+ 56 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/domain/RosterWork.java

@@ -0,0 +1,56 @@
+package com.jeeplus.test.roster.domain;
+
+import java.io.Serializable;
+import java.util.Date;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * roster_work
+ * @author 
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@TableName("roster_work")
+public class RosterWork extends BaseEntity {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 基础信息id
+     */
+    private String baseId;
+
+    /**
+     * 公司名称
+     */
+    private String companyName;
+
+    /**
+     * 担任职位
+     */
+    private String posts;
+
+    /**
+     * 入职日期
+     */
+    private Date entryDate;
+
+    /**
+     * 离职日期
+     */
+    private Date separationDate;
+
+    /**
+     * 职位描述
+     */
+    private String postDescription;
+
+    private static final long serialVersionUID = 1L;
+}

+ 14 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterBankCardsMapper.java

@@ -0,0 +1,14 @@
+package com.jeeplus.test.roster.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.roster.domain.RosterBankCards;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @Entity com.jeeplus.test.roster.domain.RosterBankCards
+*/
+@Mapper
+public interface RosterBankCardsMapper extends BaseMapper<RosterBankCards> {
+
+
+}

+ 20 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterBaseMapper.java

@@ -0,0 +1,20 @@
+package com.jeeplus.test.roster.mapper;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Constants;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.rank.service.dto.RankSystemTableDTO;
+import com.jeeplus.test.roster.domain.RosterBase;
+import com.jeeplus.test.roster.service.dto.RosterBaseDTO;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface RosterBaseMapper extends BaseMapper<RosterBase> {
+
+    public IPage<RosterBaseDTO> findList(Page<RosterBaseDTO> page, @Param(Constants.WRAPPER)QueryWrapper<RosterBase> queryWrapper);
+
+    public RosterBaseDTO queryById(@Param("id") String id);
+}

+ 9 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterCertificateMapper.java

@@ -0,0 +1,9 @@
+package com.jeeplus.test.roster.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.roster.domain.RosterCertificate;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface RosterCertificateMapper extends BaseMapper<RosterCertificate> {
+}

+ 9 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterContractMapper.java

@@ -0,0 +1,9 @@
+package com.jeeplus.test.roster.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.roster.domain.RosterContract;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface RosterContractMapper extends BaseMapper<RosterContract> {
+}

+ 9 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterEducateMapper.java

@@ -0,0 +1,9 @@
+package com.jeeplus.test.roster.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.roster.domain.RosterEducate;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface RosterEducateMapper extends BaseMapper<RosterEducate> {
+}

+ 9 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterFamilyMapper.java

@@ -0,0 +1,9 @@
+package com.jeeplus.test.roster.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.roster.domain.RosterFamily;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface RosterFamilyMapper extends BaseMapper<RosterFamily> {
+}

+ 9 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterFilesMapper.java

@@ -0,0 +1,9 @@
+package com.jeeplus.test.roster.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.roster.domain.RosterFiles;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface RosterFilesMapper extends BaseMapper<RosterFiles> {
+}

+ 14 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterLeadershipMapper.java

@@ -0,0 +1,14 @@
+package com.jeeplus.test.roster.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.roster.domain.RosterLeadership;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* @Entity com.jeeplus.test.roster.domain.RosterLeadership
+*/
+@Mapper
+public interface RosterLeadershipMapper extends BaseMapper<RosterLeadership> {
+
+
+}

+ 9 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/RosterWorkMapper.java

@@ -0,0 +1,9 @@
+package com.jeeplus.test.roster.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jeeplus.test.roster.domain.RosterWork;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface RosterWorkMapper extends BaseMapper<RosterWork> {
+}

+ 40 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterBankCardsMapper.xml

@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.test.roster.mapper.RosterBankCardsMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.test.roster.service.dto.RosterBankCardsDTO">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/>
+            <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/>
+            <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+            <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+            <result property="baseId" column="base_id" jdbcType="VARCHAR"/>
+            <result property="payrollCardOpenBank" column="payroll_card_open_bank" jdbcType="VARCHAR"/>
+            <result property="payrollCardBranches" column="payroll_card_branches" jdbcType="VARCHAR"/>
+            <result property="payrollCardBankAccount" column="payroll_card_bank_account" jdbcType="VARCHAR"/>
+            <result property="payrollCardOpeningName" column="payroll_card_opening_name" jdbcType="VARCHAR"/>
+            <result property="payrollCardPic" column="payroll_card_pic" jdbcType="VARCHAR"/>
+            <result property="isDefault" column="is_default" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        rbc.id,
+        rbc.create_by,
+        rbc.create_date,
+        rbc.update_by,
+        rbc.update_date,
+        rbc.remarks,
+        rbc.del_flag,
+        rbc.base_id,
+        rbc.payroll_card_open_bank,
+        rbc.payroll_card_branches,
+        rbc.payroll_card_bank_account,
+        rbc.payroll_card_opening_name,
+        rbc.payroll_card_pic,
+        rbc.is_default
+    </sql>
+</mapper>

+ 314 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterBaseMapper.xml

@@ -0,0 +1,314 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.test.roster.mapper.RosterBaseMapper">
+  <resultMap id="BaseResultMap" type="com.jeeplus.test.roster.service.dto.RosterBaseDTO">
+    <id column="id" jdbcType="VARCHAR" property="id" />
+    <result column="create_by" jdbcType="VARCHAR" property="createBy.id" />
+    <result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
+    <result column="update_by" jdbcType="VARCHAR" property="updateBy.id" />
+    <result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />
+    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+    <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+    <result column="office_id" jdbcType="VARCHAR" property="officeId" />
+    <result column="job_position_id" jdbcType="VARCHAR" property="jobPositionId" />
+    <result column="position_id" jdbcType="VARCHAR" property="positionId" />
+    <result column="rank_id" jdbcType="VARCHAR" property="rankId" />
+    <result column="job_no" jdbcType="VARCHAR" property="jobNo" />
+    <result column="certificates_type" jdbcType="VARCHAR" property="certificatesType" />
+    <result column="id_card" jdbcType="VARCHAR" property="idCard" />
+    <result column="certificates_front" jdbcType="VARCHAR" property="certificatesFront" />
+    <result column="certificates_back" jdbcType="VARCHAR" property="certificatesBack" />
+    <result column="mobile" jdbcType="VARCHAR" property="mobile" />
+    <result column="contract_type" jdbcType="VARCHAR" property="contractType" />
+    <result column="worker_type" jdbcType="VARCHAR" property="workerType" />
+    <result column="onboarding_date" jdbcType="TIMESTAMP" property="onboardingDate" />
+    <result column="seniority" jdbcType="VARCHAR" property="seniority" />
+    <result column="contract_company" jdbcType="VARCHAR" property="contractCompany" />
+    <result column="sex" jdbcType="VARCHAR" property="sex" />
+    <result column="birth_date" jdbcType="TIMESTAMP" property="birthDate" />
+    <result column="work_place" jdbcType="VARCHAR" property="workPlace" />
+    <result column="contact_address" jdbcType="VARCHAR" property="contactAddress" />
+    <result column="employment_situation" jdbcType="VARCHAR" property="employmentSituation" />
+    <result column="working_hour" jdbcType="VARCHAR" property="workingHour" />
+    <result column="ethnic" jdbcType="VARCHAR" property="ethnic" />
+    <result column="account_type" jdbcType="VARCHAR" property="accountType" />
+    <result column="account_addr" jdbcType="VARCHAR" property="accountAddr" />
+    <result column="origin" jdbcType="VARCHAR" property="origin" />
+    <result column="live_addr" jdbcType="VARCHAR" property="liveAddr" />
+    <result column="highest_education" jdbcType="VARCHAR" property="highestEducation" />
+    <result column="political_face" jdbcType="VARCHAR" property="politicalFace" />
+    <result column="marital_status" jdbcType="VARCHAR" property="maritalStatus" />
+    <result column="blood_type" jdbcType="VARCHAR" property="bloodType" />
+    <result column="emergency_contact_name" jdbcType="VARCHAR" property="emergencyContactName" />
+    <result column="emergency_contact_tel" jdbcType="VARCHAR" property="emergencyContactTel" />
+    <result column="spouse_name" jdbcType="VARCHAR" property="spouseName" />
+    <result column="child_name" jdbcType="VARCHAR" property="childName" />
+    <result column="qq" jdbcType="VARCHAR" property="qq" />
+    <result column="wechat" jdbcType="VARCHAR" property="wechat" />
+    <result column="email" jdbcType="VARCHAR" property="email" />
+    <result column="headshot" jdbcType="VARCHAR" property="headshot" />
+    <association property="rosterContractDTO" javaType="com.jeeplus.test.roster.service.dto.RosterContractDTO" column="id" select="getContractDTO"></association>
+    <association property="rosterLeadershipDTO" javaType="com.jeeplus.test.roster.service.dto.RosterLeadershipDTO" column="id" select="getLeadershipDTO"></association>
+    <collection property="rosterBankCardsDTOList" ofType="com.jeeplus.test.roster.service.dto.RosterBankCardsDTO" column="id" select="getBankCardsList"></collection>
+    <collection property="rosterEducateDTOList" ofType="com.jeeplus.test.roster.service.dto.RosterEducateDTO" column="id" select="getEducateList"></collection>
+    <collection property="rosterWorkDTOList" ofType="com.jeeplus.test.roster.service.dto.RosterWorkDTO" column="id" select="getWorkList"></collection>
+    <collection property="rosterFamilyDTOList" ofType="com.jeeplus.test.roster.service.dto.RosterFamilyDTO" column="id" select="getFamilyList"></collection>
+    <collection property="rosterCertificateDTOList" ofType="com.jeeplus.test.roster.service.dto.RosterCertificateDTO" column="id" select="getCertificateList"></collection>
+    <collection property="rosterFilesDTOList" ofType="com.jeeplus.test.roster.service.dto.RosterFilesDTO" column="id" select="getFilesList"></collection>
+  </resultMap>
+
+  <sql id="Base_Column_List">
+    rb.id,
+    rb.create_by,
+    rb.create_date,
+    rb.update_by,
+    rb.update_date,
+    rb.remarks,
+    rb.del_flag,
+    rb.`name`,
+    rb.office_id,
+    rb.job_position_id,
+    rb.position_id,
+    rb.rank_id,
+    rb.job_no,
+    rb.certificates_type,
+    rb.id_card,
+    rb.certificates_front,
+    rb.certificates_back,
+    rb.mobile,
+    rb.contract_type,
+    rb.worker_type,
+    rb.onboarding_date,
+    rb.seniority,
+    rb.contract_company,
+    rb.sex,
+    rb.birth_date,
+    rb.work_place,
+    rb.contact_address,
+    rb.employment_situation,
+    rb.working_hour,
+    rb.ethnic,
+    rb.account_type,
+    rb.account_addr,
+    rb.origin,
+    rb.live_addr,
+    rb.highest_education,
+    rb.political_face,
+    rb.marital_status,
+    rb.blood_type,
+    rb.emergency_contact_name,
+    rb.emergency_contact_tel,
+    rb.spouse_name,
+    rb.child_name,
+    rb.qq,
+    rb.wechat,
+    rb.email,
+    rb.headshot
+  </sql>
+  <sql id="Contract_Column_List">
+    rc.id,
+    rc.create_by,
+    rc.create_date,
+    rc.update_by,
+    rc.update_date,
+    rc.remarks,
+    rc.base_id,
+    rc.begin_date,
+    rc.end_date,
+    rc.work_email,
+    rc.work_mobile,
+    rc.probation_period_end_date,
+    rc.probation_period_month,
+    rc.del_flag
+  </sql>
+  <sql id="Leadership_Column_List">
+        rl.id,
+        rl.create_by,
+        rl.create_date,
+        rl.update_by,
+        rl.update_date,
+        rl.remarks,
+        rl.del_flag,
+        rl.base_id,
+        rl.debrief_type,
+        rl.supervisor_id
+    </sql>
+  <sql id="BankCards_Column_List">
+    rbc.id,
+        rbc.create_by,
+        rbc.create_date,
+        rbc.update_by,
+        rbc.update_date,
+        rbc.remarks,
+        rbc.del_flag,
+        rbc.base_id,
+        rbc.payroll_card_open_bank,
+        rbc.payroll_card_branches,
+        rbc.payroll_card_bank_account,
+        rbc.payroll_card_opening_name,
+        rbc.payroll_card_pic,
+        rbc.is_default
+  </sql>
+  <sql id="Educate_Column_List">
+    re.id,
+    re.create_by,
+    re.create_date,
+    re.update_by,
+    re.update_date,
+    re.remarks,
+    re.del_flag,
+    re.base_id,
+    re.college_name,
+    re.profession,
+    re.entry_date,
+    re.graduation_date,
+    re.have_degree,
+    re.education_cert_first,
+    re.education_cert_second,
+    re.degree
+  </sql>
+  <sql id="Certificate_Column_List">
+    rce.id,
+    rce.create_by,
+    rce.create_date,
+    rce.update_by,
+    rce.update_date,
+    rce.remarks,
+    rce.del_flag,
+    rce.base_id,
+    rce.cert_name,
+    rce.cert_type,
+    rce.cert_no,
+    rce.issued_institution,
+    rce.issued_date,
+    rce.record_date,
+    rce.remind_date,
+    rce.expire_date,
+    rce.profession,
+    rce.`level`,
+    rce.description
+  </sql>
+  <sql id="Family_Column_List">
+    rfa.id,
+    rfa.create_by,
+    rfa.create_date,
+    rfa.update_by,
+    rfa.update_date,
+    rfa.remarks,
+    rfa.del_flag,
+    rfa.base_id,
+    rfa.`name`,
+    rfa.relationship,
+    rfa.birth_date,
+    rfa.birth_certificate
+  </sql>
+  <sql id="Files_Column_List">
+    rf.id,
+    rf.create_by,
+    rf.create_date,
+    rf.update_by,
+    rf.update_date,
+    rf.remarks,
+    rf.del_flag,
+    rf.base_id,
+    rf.url,
+    rf.name
+  </sql>
+  <sql id="Work_Column_List">
+    rw.id,
+    rw.create_by,
+    rw.create_date,
+    rw.update_by,
+    rw.update_date,
+    rw.remarks,
+    rw.del_flag,
+    rw.base_id,
+    rw.company_name,
+    rw.posts,
+    rw.entry_date,
+    rw.separation_date,
+    rw.post_description
+  </sql>
+
+  <select id="getContractDTO" resultType="com.jeeplus.test.roster.service.dto.RosterContractDTO">
+    select
+    <include refid="Contract_Column_List"></include>
+    from roster_contract rc
+    where rc.del_flag = '0' and rc.base_id = #{id}
+  </select>
+  <select id="getLeadershipDTO" resultType="com.jeeplus.test.roster.service.dto.RosterLeadershipDTO">
+    select
+    <include refid="Leadership_Column_List"></include>
+    from roster_leadership rl
+    where rl.del_flag = '0' and rl.base_id = #{id}
+  </select>
+  <select id="getBankCardsList" resultType="com.jeeplus.test.roster.service.dto.RosterBankCardsDTO">
+    select
+    <include refid="BankCards_Column_List"></include>
+    from roster_bank_cards rbc
+    where rbc.del_flag = '0' and rbc.base_id = #{id}
+  </select>
+  <select id="getEducateList" resultType="com.jeeplus.test.roster.service.dto.RosterEducateDTO">
+    select
+    <include refid="Educate_Column_List"></include>
+    from roster_educate re
+    where re.del_flag = '0' and re.base_id = #{id}
+  </select>
+  <select id="getWorkList" resultType="com.jeeplus.test.roster.service.dto.RosterWorkDTO">
+    select
+    <include refid="Work_Column_List"></include>
+    from roster_work rw
+    where rw.del_flag = '0' and rw.base_id = #{id}
+  </select>
+  <select id="getFamilyList" resultType="com.jeeplus.test.roster.service.dto.RosterFamilyDTO">
+    select
+    <include refid="Family_Column_List"></include>
+    from roster_family rfa
+    where rfa.del_flag = '0' and rfa.base_id = #{id}
+  </select>
+  <select id="getCertificateList" resultType="com.jeeplus.test.roster.service.dto.RosterCertificateDTO">
+    select
+    <include refid="Certificate_Column_List"></include>
+    from roster_certificate rce
+    where rce.del_flag = '0' and rce.base_id = #{id}
+  </select>
+  <select id="getFilesList" resultMap="FilesMap">
+    select
+    <include refid="Files_Column_List"></include>,
+    su.name su_name
+    from roster_files rf
+    left join sys_user su on rf.create_by = su.id and su.del_flag = '0'
+    where rf.del_flag = '0' and rf.base_id = #{id}
+    order by rf.create_date desc
+  </select>
+
+  <resultMap id="FilesMap" type="com.jeeplus.test.roster.service.dto.RosterFilesDTO">
+    <id column="id" jdbcType="VARCHAR" property="id" />
+    <result column="create_by" jdbcType="VARCHAR" property="createBy.id" />
+    <result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
+    <result column="update_by" jdbcType="VARCHAR" property="updateBy.id" />
+    <result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />
+    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+    <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
+    <result column="base_id" jdbcType="VARCHAR" property="baseId" />
+    <result column="url" jdbcType="VARCHAR" property="url" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+    <result column="su_name" jdbcType="VARCHAR" property="createBy.name" />
+  </resultMap>
+
+  <select id="findList" resultMap="BaseResultMap">
+    select
+    <include refid="Base_Column_List"></include>
+    from roster_base rb
+    ${ew.customSqlSegment}
+  </select>
+
+  <select id="queryById" resultMap="BaseResultMap">
+    select
+    <include refid="Base_Column_List"></include>
+    from roster_base rb
+    where rb.id = #{id}
+  </select>
+
+</mapper>

+ 47 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterCertificateMapper.xml

@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.test.roster.mapper.RosterCertificateMapper">
+  <resultMap id="BaseResultMap" type="com.jeeplus.test.roster.service.dto.RosterCertificateDTO">
+    <id column="id" jdbcType="VARCHAR" property="id" />
+    <result column="create_by" jdbcType="VARCHAR" property="createBy.id" />
+    <result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
+    <result column="update_by" jdbcType="VARCHAR" property="updateBy.id" />
+    <result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />
+    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+    <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
+    <result column="base_id" jdbcType="VARCHAR" property="baseId" />
+    <result column="cert_name" jdbcType="VARCHAR" property="certName" />
+    <result column="cert_type" jdbcType="VARCHAR" property="certType" />
+    <result column="cert_no" jdbcType="VARCHAR" property="certNo" />
+    <result column="issued_institution" jdbcType="VARCHAR" property="issuedInstitution" />
+    <result column="issued_date" jdbcType="TIMESTAMP" property="issuedDate" />
+    <result column="record_date" jdbcType="TIMESTAMP" property="recordDate" />
+    <result column="remind_date" jdbcType="TIMESTAMP" property="remindDate" />
+    <result column="expire_date" jdbcType="TIMESTAMP" property="expireDate" />
+    <result column="profession" jdbcType="VARCHAR" property="profession" />
+    <result column="level" jdbcType="VARCHAR" property="level" />
+    <result column="description" jdbcType="VARCHAR" property="description" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    rce.id,
+    rce.create_by,
+    rce.create_date,
+    rce.update_by,
+    rce.update_date,
+    rce.remarks,
+    rce.del_flag,
+    rce.base_id,
+    rce.cert_name,
+    rce.cert_type,
+    rce.cert_no,
+    rce.issued_institution,
+    rce.issued_date,
+    rce.record_date,
+    rce.remind_date,
+    rce.expire_date,
+    rce.profession,
+    rce.`level`,
+    rce.description
+  </sql>
+
+</mapper>

+ 36 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterContractMapper.xml

@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.test.roster.mapper.RosterContractMapper">
+  <resultMap id="BaseResultMap" type="com.jeeplus.test.roster.service.dto.RosterContractDTO">
+    <id column="id" jdbcType="VARCHAR" property="id" />
+    <result column="create_by" jdbcType="VARCHAR" property="createBy.id" />
+    <result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
+    <result column="update_by" jdbcType="VARCHAR" property="updateBy.id" />
+    <result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />
+    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+    <result column="base_id" jdbcType="VARCHAR" property="baseId" />
+    <result column="begin_date" jdbcType="TIMESTAMP" property="beginDate" />
+    <result column="end_date" jdbcType="TIMESTAMP" property="endDate" />
+    <result column="work_email" jdbcType="VARCHAR" property="workEmail" />
+    <result column="work_mobile" jdbcType="VARCHAR" property="workMobile" />
+    <result column="probation_period_end_date" jdbcType="TIMESTAMP" property="probationPeriodEndDate" />
+    <result column="probation_period_month" jdbcType="VARCHAR" property="probationPeriodMonth" />
+    <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    rc.id,
+    rc.create_by,
+    rc.create_date,
+    rc.update_by,
+    rc.update_date,
+    rc.remarks,
+    rc.base_id,
+    rc.begin_date,
+    rc.end_date,
+    rc.work_email,
+    rc.work_mobile,
+    rc.probation_period_end_date,
+    rc.probation_period_month,
+    rc.del_flag
+  </sql>
+</mapper>

+ 39 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterEducateMapper.xml

@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.test.roster.mapper.RosterEducateMapper">
+  <resultMap id="BaseResultMap" type="com.jeeplus.test.roster.service.dto.RosterEducateDTO">
+    <id column="id" jdbcType="VARCHAR" property="id" />
+    <result column="create_by" jdbcType="VARCHAR" property="createBy.id" />
+    <result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
+    <result column="update_by" jdbcType="VARCHAR" property="updateBy.id" />
+    <result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />
+    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+    <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
+    <result column="base_id" jdbcType="VARCHAR" property="baseId" />
+    <result column="college_name" jdbcType="VARCHAR" property="collegeName" />
+    <result column="profession" jdbcType="VARCHAR" property="profession" />
+    <result column="entry_date" jdbcType="TIMESTAMP" property="entryDate" />
+    <result column="graduation_date" jdbcType="TIMESTAMP" property="graduationDate" />
+    <result column="have_degree" jdbcType="VARCHAR" property="haveDegree" />
+    <result column="education_cert_first" jdbcType="VARCHAR" property="educationCertFirst" />
+    <result column="education_cert_second" jdbcType="VARCHAR" property="educationCertSecond" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    re.id,
+    re.create_by,
+    re.create_date,
+    re.update_by,
+    re.update_date,
+    re.remarks,
+    re.del_flag,
+    re.base_id,
+    re.college_name,
+    re.profession,
+    re.entry_date,
+    re.graduation_date,
+    re.have_degree,
+    re.education_cert_first,
+    re.education_cert_second,
+    re.degree
+  </sql>
+</mapper>

+ 32 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterFamilyMapper.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.test.roster.mapper.RosterFamilyMapper">
+  <resultMap id="BaseResultMap" type="com.jeeplus.test.roster.service.dto.RosterFamilyDTO">
+    <id column="id" jdbcType="VARCHAR" property="id" />
+    <result column="create_by" jdbcType="VARCHAR" property="createBy.id" />
+    <result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
+    <result column="update_by" jdbcType="VARCHAR" property="updateBy.id" />
+    <result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />
+    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+    <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
+    <result column="base_id" jdbcType="VARCHAR" property="baseId" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+    <result column="relationship" jdbcType="VARCHAR" property="relationship" />
+    <result column="birth_date" jdbcType="TIMESTAMP" property="birthDate" />
+    <result column="birth_certificate" jdbcType="VARCHAR" property="birthCertificate" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    rfa.id,
+    rfa.create_by,
+    rfa.create_date,
+    rfa.update_by,
+    rfa.update_date,
+    rfa.remarks,
+    rfa.del_flag,
+    rfa.base_id,
+    rfa.`name`,
+    rfa.relationship,
+    rfa.birth_date,
+    rfa.birth_certificate
+  </sql>
+</mapper>

+ 28 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterFilesMapper.xml

@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.test.roster.mapper.RosterFilesMapper">
+  <resultMap id="BaseResultMap" type="com.jeeplus.test.roster.service.dto.RosterFilesDTO">
+    <id column="id" jdbcType="VARCHAR" property="id" />
+    <result column="create_by" jdbcType="VARCHAR" property="createBy.id" />
+    <result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
+    <result column="update_by" jdbcType="VARCHAR" property="updateBy.id" />
+    <result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />
+    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+    <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
+    <result column="base_id" jdbcType="VARCHAR" property="baseId" />
+    <result column="url" jdbcType="VARCHAR" property="url" />
+    <result column="name" jdbcType="VARCHAR" property="name" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    rf.id,
+    rf.create_by,
+    rf.create_date,
+    rf.update_by,
+    rf.update_date,
+    rf.remarks,
+    rf.del_flag,
+    rf.base_id,
+    rf.url,
+    rf.name
+  </sql>
+</mapper>

+ 32 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterLeadershipMapper.xml

@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.test.roster.mapper.RosterLeadershipMapper">
+
+    <resultMap id="BaseResultMap" type="com.jeeplus.test.roster.service.dto.RosterLeadershipDTO">
+            <id property="id" column="id" jdbcType="VARCHAR"/>
+            <result property="createBy.id" column="create_by" jdbcType="VARCHAR"/>
+            <result property="createDate" column="create_date" jdbcType="TIMESTAMP"/>
+            <result property="updateBy.id" column="update_by" jdbcType="VARCHAR"/>
+            <result property="updateDate" column="update_date" jdbcType="TIMESTAMP"/>
+            <result property="remarks" column="remarks" jdbcType="VARCHAR"/>
+            <result property="delFlag" column="del_flag" jdbcType="INTEGER"/>
+            <result property="baseId" column="base_id" jdbcType="VARCHAR"/>
+            <result property="debriefType" column="debrief_type" jdbcType="VARCHAR"/>
+            <result property="supervisorId" column="supervisor_id" jdbcType="VARCHAR"/>
+    </resultMap>
+
+    <sql id="Base_Column_List">
+        rl.id,
+        rl.create_by,
+        rl.create_date,
+        rl.update_by,
+        rl.update_date,
+        rl.remarks,
+        rl.del_flag,
+        rl.base_id,
+        rl.debrief_type,
+        rl.supervisor_id
+    </sql>
+</mapper>

+ 34 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/mapper/xml/RosterWorkMapper.xml

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jeeplus.test.roster.mapper.RosterWorkMapper">
+  <resultMap id="BaseResultMap" type="com.jeeplus.test.roster.service.dto.RosterWorkDTO">
+    <id column="id" jdbcType="VARCHAR" property="id" />
+    <result column="create_by" jdbcType="VARCHAR" property="createBy.id" />
+    <result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
+    <result column="update_by" jdbcType="VARCHAR" property="updateBy.id" />
+    <result column="update_date" jdbcType="TIMESTAMP" property="updateDate" />
+    <result column="remarks" jdbcType="VARCHAR" property="remarks" />
+    <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
+    <result column="base_id" jdbcType="VARCHAR" property="baseId" />
+    <result column="company_name" jdbcType="VARCHAR" property="companyName" />
+    <result column="posts" jdbcType="VARCHAR" property="posts" />
+    <result column="entry_date" jdbcType="TIMESTAMP" property="entryDate" />
+    <result column="separation_date" jdbcType="TIMESTAMP" property="separationDate" />
+    <result column="post_description" jdbcType="VARCHAR" property="postDescription" />
+  </resultMap>
+  <sql id="Base_Column_List">
+    rw.id,
+    rw.create_by,
+    rw.create_date,
+    rw.update_by,
+    rw.update_date,
+    rw.remarks,
+    rw.del_flag,
+    rw.base_id,
+    rw.company_name,
+    rw.posts,
+    rw.entry_date,
+    rw.separation_date,
+    rw.post_description
+  </sql>
+</mapper>

+ 20 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterBankCardsService.java

@@ -0,0 +1,20 @@
+package com.jeeplus.test.roster.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.test.roster.domain.RosterBankCards;
+import com.jeeplus.test.roster.domain.RosterContract;
+import com.jeeplus.test.roster.mapper.RosterBankCardsMapper;
+import com.jeeplus.test.roster.mapper.RosterContractMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class RosterBankCardsService extends ServiceImpl<RosterBankCardsMapper, RosterBankCards> {
+
+    @Autowired
+    private RosterBankCardsMapper rosterBankCardsMapper;
+
+
+}

+ 256 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterBaseService.java

@@ -0,0 +1,256 @@
+package com.jeeplus.test.roster.service;
+
+import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.sys.utils.StringUtils;
+import com.jeeplus.test.jobPosion.utils.BeanUtils;
+import com.jeeplus.test.oss.service.OssService;
+import com.jeeplus.test.rank.service.dto.RankSystemTableDTO;
+import com.jeeplus.test.roster.domain.*;
+import com.jeeplus.test.roster.mapper.RosterBaseMapper;
+import com.jeeplus.test.roster.service.dto.*;
+import com.jeeplus.test.roster.service.mapstruct.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class RosterBaseService extends ServiceImpl<RosterBaseMapper, RosterBase> {
+
+    @Autowired
+    private RosterBaseMapper rosterBaseMapper;
+
+    @Autowired
+    private RosterContractService rosterContractService;
+
+    @Autowired
+    private RosterBankCardsService rosterBankCardsService;
+
+    @Autowired
+    private RosterEducateService rosterEducateService;
+
+    @Autowired
+    private RosterFamilyService rosterFamilyService;
+
+    @Autowired
+    private RosterWorkService rosterWorkService;
+
+    @Autowired
+    private RosterFilesService rosterFilesService;
+
+    @Autowired
+    private RosterCertificateService rosterCertificateService;
+
+    @Autowired
+    private RosterLeadershipService rosterLeadershipService;
+
+    @Autowired
+    private OssService ossService;
+
+    public IPage<RosterBaseDTO> findList(Page<RosterBaseDTO> page, QueryWrapper<RosterBase> queryWrapper){
+        queryWrapper.eq("rb.del_flag","0");
+        return rosterBaseMapper.findList(page,queryWrapper);
+    }
+
+    public RosterBaseDTO queryById(String id){
+        RosterBaseDTO rosterBaseDTO = rosterBaseMapper.queryById(id);
+        if(ObjectUtil.isNotEmpty(rosterBaseDTO)){
+            if(StringUtils.isNotBlank(rosterBaseDTO.getCertificatesFront())){
+                String front = ossService.getFileTemporaryLookUrl(rosterBaseDTO.getCertificatesFront());
+                rosterBaseDTO.setCertificatesFrontLsUrl(front);
+            }
+            if(StringUtils.isNotBlank(rosterBaseDTO.getHeadshot())){
+                String headshot = ossService.getFileTemporaryLookUrl(rosterBaseDTO.getHeadshot());
+                rosterBaseDTO.setHeadshotLsUrl(headshot);
+            }
+            if(StringUtils.isNotBlank(rosterBaseDTO.getCertificatesBack())){
+                String back = ossService.getFileTemporaryLookUrl(rosterBaseDTO.getCertificatesBack());
+                rosterBaseDTO.setCertificatesBackLsUrl(back);
+            }
+            if(CollectionUtil.isNotEmpty(rosterBaseDTO.getRosterBankCardsDTOList())){
+                rosterBaseDTO.getRosterBankCardsDTOList().stream().forEach(item->{
+                    if(StringUtils.isNotBlank(item.getPayrollCardPic())){
+                        String cardPic = ossService.getFileTemporaryLookUrl(item.getPayrollCardPic());
+                        item.setPayrollCardPicLsUrl(cardPic);
+                    }
+                });
+            }
+            if(CollectionUtil.isNotEmpty(rosterBaseDTO.getRosterEducateDTOList())){
+                rosterBaseDTO.getRosterEducateDTOList().stream().forEach(item->{
+                    if(StringUtils.isNotBlank(item.getEducationCertFirst())){
+                        String certFirst = ossService.getFileTemporaryLookUrl(item.getEducationCertFirst());
+                        item.setEducationCertFirstLsUrl(certFirst);
+                    }
+                    if(StringUtils.isNotBlank(item.getEducationCertFirst())){
+                        String certSecond = ossService.getFileTemporaryLookUrl(item.getEducationCertSecond());
+                        item.setEducationCertSecondLsUrl(certSecond);
+                    }
+                });
+            }
+            if(CollectionUtil.isNotEmpty(rosterBaseDTO.getRosterFamilyDTOList())){
+                rosterBaseDTO.getRosterFamilyDTOList().stream().forEach(item->{
+                    if(StringUtils.isNotBlank(item.getBirthCertificate())){
+                        String birth = ossService.getFileTemporaryLookUrl(item.getBirthCertificate());
+                        item.setBirthCertificateLsUrl(birth);
+                    }
+                });
+            }
+        }
+        return rosterBaseDTO;
+    }
+
+    public ResponseEntity saveRoster(RosterBaseDTO rosterBaseDTO){
+
+        if(ObjectUtil.isNotEmpty(rosterBaseDTO)){
+            if(StringUtils.isNotBlank(rosterBaseDTO.getId())){
+                if(StringUtils.isNotBlank(rosterBaseDTO.getIdCard())){
+                    List<RosterBase> rosterBaseList = this.list(new QueryWrapper<RosterBase>().eq("id_card", rosterBaseDTO.getIdCard()).ne("id",rosterBaseDTO.getId()));
+                    if(CollectionUtil.isNotEmpty(rosterBaseList)){
+                        return ResponseEntity.badRequest().body("基础信息-身份证号 已存在,保存失败");
+                    }
+                }
+                if(StringUtils.isNotBlank(rosterBaseDTO.getMobile())){
+                    List<RosterBase> rosterBaseList = this.list(new QueryWrapper<RosterBase>().eq("mobile", rosterBaseDTO.getMobile()).ne("id",rosterBaseDTO.getId()));
+                    if(CollectionUtil.isNotEmpty(rosterBaseList)){
+                        return ResponseEntity.badRequest().body("基础信息-手机号码 已存在,保存失败");
+                    }
+                }
+            }else{
+                if(StringUtils.isNotBlank(rosterBaseDTO.getIdCard())){
+                    List<RosterBase> rosterBaseList = this.list(new QueryWrapper<RosterBase>().eq("id_card", rosterBaseDTO.getIdCard()));
+                    if(CollectionUtil.isNotEmpty(rosterBaseList)){
+                        return ResponseEntity.badRequest().body("基础信息-身份证号 已存在,保存失败");
+                    }
+                }
+                if(StringUtils.isNotBlank(rosterBaseDTO.getMobile())){
+                    List<RosterBase> rosterBaseList = this.list(new QueryWrapper<RosterBase>().eq("mobile", rosterBaseDTO.getMobile()));
+                    if(CollectionUtil.isNotEmpty(rosterBaseList)){
+                        return ResponseEntity.badRequest().body("基础信息-手机号码 已存在,保存失败");
+                    }
+                }
+            }
+
+        }
+
+        RosterBase rosterBase = RosterBaseWrapper.INSTANCE.toEntity(rosterBaseDTO);
+
+        this.saveOrUpdate(rosterBase);
+
+        if(ObjectUtil.isNotEmpty(rosterBaseDTO)){
+            //保存合同信息
+            if(ObjectUtil.isNotEmpty(rosterBaseDTO.getRosterContractDTO())){
+                RosterContract rosterContract = RosterContractWrapper.INSTANCE.toEntity(rosterBaseDTO.getRosterContractDTO());
+                rosterContract.setBaseId(rosterBase.getId());
+                rosterContractService.remove(new QueryWrapper<RosterContract>().eq("base_id",rosterBase.getId()));
+                rosterContractService.saveOrUpdate(rosterContract);
+            }
+            //保存银行卡信息
+            if(CollectionUtil.isNotEmpty(rosterBaseDTO.getRosterBankCardsDTOList())){
+                List<String> collect = rosterBaseDTO.getRosterBankCardsDTOList().stream().map(RosterBankCardsDTO::getId).collect(Collectors.toList());
+                rosterBankCardsService.remove(new QueryWrapper<RosterBankCards>().eq("base_id",rosterBase.getId()).notIn(CollectionUtil.isNotEmpty(collect),"id",collect));
+                rosterBaseDTO.getRosterBankCardsDTOList().stream().forEach(item->{
+                    if(ObjectUtil.isNotEmpty(item)&& BeanUtils.objectCheckIsNull(item)){
+                        RosterBankCards rosterBankCards = RosterBankCardsWrapper.INSTANCE.toEntity(item);
+                        rosterBankCards.setBaseId(rosterBase.getId());
+                        rosterBankCardsService.saveOrUpdate(rosterBankCards);
+                    }
+                });
+            }else{
+                rosterBankCardsService.remove(new QueryWrapper<RosterBankCards>().eq("base_id",rosterBase.getId()));
+            }
+            //保存教育经历
+            if(CollectionUtil.isNotEmpty(rosterBaseDTO.getRosterEducateDTOList())){
+                List<String> collect = rosterBaseDTO.getRosterEducateDTOList().stream().map(RosterEducateDTO::getId).collect(Collectors.toList());
+                rosterEducateService.remove(new QueryWrapper<RosterEducate>().eq("base_id",rosterBase.getId()).notIn(CollectionUtil.isNotEmpty(collect),"id",collect));
+                rosterBaseDTO.getRosterEducateDTOList().stream().forEach(item->{
+                    if(ObjectUtil.isNotEmpty(item)&& BeanUtils.objectCheckIsNull(item)){
+                        RosterEducate rosterEducate = RosterEducateWrapper.INSTANCE.toEntity(item);
+                        rosterEducate.setBaseId(rosterBase.getId());
+                        rosterEducateService.saveOrUpdate(rosterEducate);
+                    }
+                });
+            }else{
+                rosterEducateService.remove(new QueryWrapper<RosterEducate>().eq("base_id",rosterBase.getId()));
+            }
+            //保存工作经历
+            if(CollectionUtil.isNotEmpty(rosterBaseDTO.getRosterWorkDTOList())){
+                List<String> collect = rosterBaseDTO.getRosterWorkDTOList().stream().map(RosterWorkDTO::getId).collect(Collectors.toList());
+                rosterWorkService.remove(new QueryWrapper<RosterWork>().eq("base_id",rosterBase.getId()).notIn(CollectionUtil.isNotEmpty(collect),"id",collect));
+                rosterBaseDTO.getRosterWorkDTOList().stream().forEach(item->{
+                    if(ObjectUtil.isNotEmpty(item)&& BeanUtils.objectCheckIsNull(item)){
+                        RosterWork rosterWork = RosterWorkWrapper.INSTANCE.toEntity(item);
+                        rosterWork.setBaseId(rosterBase.getId());
+                        rosterWorkService.saveOrUpdate(rosterWork);
+                    }
+                });
+            }else{
+                rosterWorkService.remove(new QueryWrapper<RosterWork>().eq("base_id",rosterBase.getId()));
+            }
+            //保存家庭成员
+            if(CollectionUtil.isNotEmpty(rosterBaseDTO.getRosterFamilyDTOList())){
+                List<String> collect = rosterBaseDTO.getRosterFamilyDTOList().stream().map(RosterFamilyDTO::getId).collect(Collectors.toList());
+                rosterFamilyService.remove(new QueryWrapper<RosterFamily>().eq("base_id",rosterBase.getId()).notIn(CollectionUtil.isNotEmpty(collect),"id",collect));
+                rosterBaseDTO.getRosterFamilyDTOList().stream().forEach(item->{
+                    if(ObjectUtil.isNotEmpty(item)&& BeanUtils.objectCheckIsNull(item)){
+                        RosterFamily rosterFamily = RosterFamilyWrapper.INSTANCE.toEntity(item);
+                        rosterFamily.setBaseId(rosterBase.getId());
+                        rosterFamilyService.saveOrUpdate(rosterFamily);
+                    }
+                });
+            }else{
+                rosterFamilyService.remove(new QueryWrapper<RosterFamily>().eq("base_id",rosterBase.getId()));
+            }
+            //保存员工证书
+            if(CollectionUtil.isNotEmpty(rosterBaseDTO.getRosterCertificateDTOList())){
+                List<String> collect = rosterBaseDTO.getRosterCertificateDTOList().stream().map(RosterCertificateDTO::getId).collect(Collectors.toList());
+                rosterCertificateService.remove(new QueryWrapper<RosterCertificate>().eq("base_id",rosterBase.getId()).notIn(CollectionUtil.isNotEmpty(collect),"id",collect));
+                rosterBaseDTO.getRosterCertificateDTOList().stream().forEach(item->{
+                    if(ObjectUtil.isNotEmpty(item)&& BeanUtils.objectCheckIsNull(item)){
+                        RosterCertificate rosterCertificate = RosterCertificateWrapper.INSTANCE.toEntity(item);
+                        rosterCertificate.setBaseId(rosterBase.getId());
+                        rosterCertificateService.saveOrUpdate(rosterCertificate);
+                    }
+                });
+            }else{
+                rosterCertificateService.remove(new QueryWrapper<RosterCertificate>().eq("base_id",rosterBase.getId()));
+            }
+            //保存附件
+            if(CollectionUtil.isNotEmpty(rosterBaseDTO.getRosterFilesDTOList())){
+                List<String> collect = rosterBaseDTO.getRosterFilesDTOList().stream().map(RosterFilesDTO::getId).collect(Collectors.toList());
+                rosterFilesService.remove(new QueryWrapper<RosterFiles>().eq("base_id",rosterBase.getId()).notIn(CollectionUtil.isNotEmpty(collect),"id",collect));
+                rosterBaseDTO.getRosterFilesDTOList().stream().forEach(item->{
+                    if(ObjectUtil.isNotEmpty(item)&& BeanUtils.objectCheckIsNull(item)){
+                        RosterFiles rosterFiles = RosterFilesWrapper.INSTANCE.toEntity(item);
+                        rosterFiles.setBaseId(rosterBase.getId());
+                        if(StringUtils.isNotBlank(item.getCreateBy().getId())){
+                            rosterFiles.setCreateBy(item.getCreateBy().getId());
+                        }
+                        rosterFilesService.saveOrUpdate(rosterFiles);
+                    }
+                });
+            }else{
+                rosterFilesService.remove(new QueryWrapper<RosterFiles>().eq("base_id",rosterBase.getId()));
+            }
+            //保存直属领导
+            if(ObjectUtil.isNotEmpty(rosterBaseDTO.getRosterLeadershipDTO())){
+                RosterLeadership rosterLeadership = RosterLeadershipWrapper.INSTANCE.toEntity(rosterBaseDTO.getRosterLeadershipDTO());
+                rosterLeadership.setBaseId(rosterBase.getId());
+                rosterLeadershipService.remove(new QueryWrapper<RosterLeadership>().eq("base_id",rosterBase.getId()));
+                rosterLeadershipService.saveOrUpdate(rosterLeadership);
+            }else{
+                rosterLeadershipService.remove(new QueryWrapper<RosterLeadership>().eq("base_id",rosterBase.getId()));
+            }
+        }
+        return ResponseEntity.ok("花名册保存成功");
+    }
+}

+ 20 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterCertificateService.java

@@ -0,0 +1,20 @@
+package com.jeeplus.test.roster.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.test.roster.domain.RosterCertificate;
+import com.jeeplus.test.roster.domain.RosterWork;
+import com.jeeplus.test.roster.mapper.RosterCertificateMapper;
+import com.jeeplus.test.roster.mapper.RosterWorkMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class RosterCertificateService extends ServiceImpl<RosterCertificateMapper, RosterCertificate> {
+
+    @Autowired
+    private RosterCertificateMapper rosterCertificateMapper;
+
+
+}

+ 29 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterContractService.java

@@ -0,0 +1,29 @@
+package com.jeeplus.test.roster.service;
+
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.test.oss.service.OssService;
+import com.jeeplus.test.roster.domain.RosterBase;
+import com.jeeplus.test.roster.domain.RosterContract;
+import com.jeeplus.test.roster.mapper.RosterBaseMapper;
+import com.jeeplus.test.roster.mapper.RosterContractMapper;
+import com.jeeplus.test.roster.service.dto.RosterBaseDTO;
+import com.jeeplus.test.roster.service.mapstruct.RosterBaseWrapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class RosterContractService extends ServiceImpl<RosterContractMapper, RosterContract> {
+
+    @Autowired
+    private RosterContractMapper rosterContractMapper;
+
+
+}

+ 20 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterEducateService.java

@@ -0,0 +1,20 @@
+package com.jeeplus.test.roster.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.test.roster.domain.RosterBankCards;
+import com.jeeplus.test.roster.domain.RosterEducate;
+import com.jeeplus.test.roster.mapper.RosterBankCardsMapper;
+import com.jeeplus.test.roster.mapper.RosterEducateMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class RosterEducateService extends ServiceImpl<RosterEducateMapper, RosterEducate> {
+
+    @Autowired
+    private RosterEducateMapper rosterEducateMapper;
+
+
+}

+ 20 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterFamilyService.java

@@ -0,0 +1,20 @@
+package com.jeeplus.test.roster.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.test.roster.domain.RosterFamily;
+import com.jeeplus.test.roster.domain.RosterWork;
+import com.jeeplus.test.roster.mapper.RosterFamilyMapper;
+import com.jeeplus.test.roster.mapper.RosterWorkMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class RosterFamilyService extends ServiceImpl<RosterFamilyMapper, RosterFamily> {
+
+    @Autowired
+    private RosterFamilyMapper rosterFamilyMapper;
+
+
+}

+ 20 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterFilesService.java

@@ -0,0 +1,20 @@
+package com.jeeplus.test.roster.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.test.roster.domain.RosterCertificate;
+import com.jeeplus.test.roster.domain.RosterFiles;
+import com.jeeplus.test.roster.mapper.RosterCertificateMapper;
+import com.jeeplus.test.roster.mapper.RosterFilesMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class RosterFilesService extends ServiceImpl<RosterFilesMapper, RosterFiles> {
+
+    @Autowired
+    private RosterFilesMapper rosterFilesMapper;
+
+
+}

+ 20 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterLeadershipService.java

@@ -0,0 +1,20 @@
+package com.jeeplus.test.roster.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.test.roster.domain.RosterLeadership;
+import com.jeeplus.test.roster.domain.RosterWork;
+import com.jeeplus.test.roster.mapper.RosterLeadershipMapper;
+import com.jeeplus.test.roster.mapper.RosterWorkMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class RosterLeadershipService extends ServiceImpl<RosterLeadershipMapper, RosterLeadership> {
+
+    @Autowired
+    private RosterLeadershipMapper rosterLeadershipMapper;
+
+
+}

+ 20 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterWorkService.java

@@ -0,0 +1,20 @@
+package com.jeeplus.test.roster.service;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jeeplus.test.roster.domain.RosterEducate;
+import com.jeeplus.test.roster.domain.RosterWork;
+import com.jeeplus.test.roster.mapper.RosterEducateMapper;
+import com.jeeplus.test.roster.mapper.RosterWorkMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service
+@Transactional(rollbackFor = Exception.class)
+public class RosterWorkService extends ServiceImpl<RosterWorkMapper, RosterWork> {
+
+    @Autowired
+    private RosterWorkMapper rosterWorkMapper;
+
+
+}

+ 64 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterBankCardsDTO.java

@@ -0,0 +1,64 @@
+package com.jeeplus.test.roster.service.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 花名册-银行卡信息
+ * @TableName roster_bank_cards
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class RosterBankCardsDTO extends BaseDTO {
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 基础信息id
+     */
+    private String baseId;
+
+    /**
+     * 工资卡开户银行
+     */
+    private String payrollCardOpenBank;
+
+    /**
+     * 工资卡分支行
+     */
+    private String payrollCardBranches;
+
+    /**
+     * 工资卡银行账号
+     */
+    private String payrollCardBankAccount;
+
+    /**
+     * 工资卡开户名
+     */
+    private String payrollCardOpeningName;
+
+    /**
+     * 工资卡照片
+     */
+    private String payrollCardPic;
+
+    /**
+     * 是否为默认
+     */
+    private String isDefault;
+
+    /**
+     * 工资卡照片
+     */
+    private String payrollCardPicLsUrl;
+
+    private static final long serialVersionUID = 1L;
+
+
+}

+ 276 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterBaseDTO.java

@@ -0,0 +1,276 @@
+package com.jeeplus.test.roster.service.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * roster_base
+ * @author 
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class RosterBaseDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 姓名
+     */
+    private String name;
+
+    /**
+     * 部门id
+     */
+    private String officeId;
+
+    /**
+     * 职位id
+     */
+    private String jobPositionId;
+
+    /**
+     * 职务id
+     */
+    private String positionId;
+
+    /**
+     * 职级id
+     */
+    private String rankId;
+
+    /**
+     * 工号
+     */
+    private String jobNo;
+
+    /**
+     * 证件类型
+     */
+    private String certificatesType;
+
+    /**
+     * 证件号
+     */
+    private String idCard;
+
+    /**
+     * 证件照正面
+     */
+    private String certificatesFront;
+
+    /**
+     * 证件照正面
+     */
+    private String certificatesFrontLsUrl;
+
+    /**
+     * 证件照反面
+     */
+    private String certificatesBack;
+
+    /**
+     * 证件照反面
+     */
+    private String certificatesBackLsUrl;
+
+    /**
+     * 手机号码
+     */
+    private String mobile;
+
+    /**
+     * 合同类型
+     */
+    private String contractType;
+
+    /**
+     * 员工类型
+     */
+    private String workerType;
+
+    /**
+     * 入职日期
+     */
+    private Date onboardingDate;
+
+    /**
+     * 历史工龄
+     */
+    private String seniority;
+
+    /**
+     * 合同公司
+     */
+    private String contractCompany;
+
+    /**
+     * 性别
+     */
+    private String sex;
+
+    /**
+     * 出生日期
+     */
+    private Date birthDate;
+
+    /**
+     * 工作地点
+     */
+    private String workPlace;
+
+    /**
+     * 联系地址
+     */
+    private String contactAddress;
+
+    /**
+     * 入职年度就业情形
+     */
+    private String employmentSituation;
+
+    /**
+     * 工时制度
+     */
+    private String workingHour;
+
+    /**
+     * 民族
+     */
+    private String ethnic;
+
+    /**
+     * 户口类型
+     */
+    private String accountType;
+
+    /**
+     * 户口所在地
+     */
+    private String accountAddr;
+
+    /**
+     * 籍贯
+     */
+    private String origin;
+
+    /**
+     * 居住地址
+     */
+    private String liveAddr;
+
+    /**
+     * 最高学历
+     */
+    private String highestEducation;
+
+    /**
+     * 政治面貌
+     */
+    private String politicalFace;
+
+    /**
+     * 婚姻状况
+     */
+    private String maritalStatus;
+
+    /**
+     * 血型
+     */
+    private String bloodType;
+
+    /**
+     * 紧急联系人姓名
+     */
+    private String emergencyContactName;
+
+    /**
+     * 紧急联系人电话
+     */
+    private String emergencyContactTel;
+
+    /**
+     * 配偶姓名
+     */
+    private String spouseName;
+
+    /**
+     * 孩子姓名
+     */
+    private String childName;
+
+    /**
+     * QQ
+     */
+    private String qq;
+
+    /**
+     * 微信
+     */
+    private String wechat;
+
+    /**
+     * 个人邮箱
+     */
+    private String email;
+
+    /**
+     * 合同信息
+     */
+    private RosterContractDTO rosterContractDTO;
+
+    /**
+     * 银行卡信息
+     */
+    private List<RosterBankCardsDTO> rosterBankCardsDTOList;
+
+    /**
+     * 教育经历
+     */
+    private List<RosterEducateDTO> rosterEducateDTOList;
+
+    /**
+     * 工作经历
+     */
+    private List<RosterWorkDTO> rosterWorkDTOList;
+
+    /**
+     * 家庭成员
+     */
+    private List<RosterFamilyDTO> rosterFamilyDTOList;
+
+    /**
+     * 员工证书
+     */
+    private List<RosterCertificateDTO> rosterCertificateDTOList;
+
+    /**
+     * 附件
+     */
+    private List<RosterFilesDTO> rosterFilesDTOList;
+
+    /**
+     * 头像
+     */
+    private String headshot;
+
+    /**
+     * 头像
+     */
+    private String headshotLsUrl;
+
+    /**
+     * 直属领导
+     */
+    private RosterLeadershipDTO rosterLeadershipDTO;
+
+    private static final long serialVersionUID = 1L;
+}

+ 85 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterCertificateDTO.java

@@ -0,0 +1,85 @@
+package com.jeeplus.test.roster.service.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * roster_certificate
+ * @author 
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class RosterCertificateDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 基础信息id
+     */
+    private String baseId;
+
+    /**
+     * 证书名称
+     */
+    private String certName;
+
+    /**
+     * 证书类型
+     */
+    private String certType;
+
+    /**
+     * 证书编号
+     */
+    private String certNo;
+
+    /**
+     * 发证机构
+     */
+    private String issuedInstitution;
+
+    /**
+     * 发证日期
+     */
+    private Date issuedDate;
+
+    /**
+     * 备案日期
+     */
+    private Date recordDate;
+
+    /**
+     * 提醒日期
+     */
+    private Date remindDate;
+
+    /**
+     * 到期日期
+     */
+    private Date expireDate;
+
+    /**
+     * 专业
+     */
+    private String profession;
+
+    /**
+     * 级别
+     */
+    private String level;
+
+    /**
+     * 描述
+     */
+    private String description;
+
+    private static final long serialVersionUID = 1L;
+}

+ 60 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterContractDTO.java

@@ -0,0 +1,60 @@
+package com.jeeplus.test.roster.service.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * roster_contract
+ * @author 
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class RosterContractDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 基础信息id
+     */
+    private String baseId;
+
+    /**
+     * 当前合同起始日
+     */
+    private Date beginDate;
+
+    /**
+     * 当前合同终止日
+     */
+    private Date endDate;
+
+    /**
+     * 工作邮箱
+     */
+    private String workEmail;
+
+    /**
+     * 工作电话
+     */
+    private String workMobile;
+
+    /**
+     * 试用期到期日
+     */
+    private Date probationPeriodEndDate;
+
+    /**
+     * 试用期(月)
+     */
+    private String probationPeriodMonth;
+
+    private static final long serialVersionUID = 1L;
+}

+ 79 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterEducateDTO.java

@@ -0,0 +1,79 @@
+package com.jeeplus.test.roster.service.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * roster_educate
+ * @author 
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class RosterEducateDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 基础信息id
+     */
+    private String baseId;
+
+    /**
+     * 学校
+     */
+    private String collegeName;
+
+    /**
+     * 专业
+     */
+    private String profession;
+
+    /**
+     * 入校时间
+     */
+    private Date entryDate;
+
+    /**
+     * 毕业日期
+     */
+    private Date graduationDate;
+
+    /**
+     * 是否取得学位
+     */
+    private String haveDegree;
+
+    /**
+     * 教育证书照1
+     */
+    private String educationCertFirst;
+
+    /**
+     * 教育证书照1
+     */
+    private String educationCertFirstLsUrl;
+
+    /**
+     * 教育证书照2
+     */
+    private String educationCertSecond;
+
+    /**
+     * 教育证书照2
+     */
+    private String educationCertSecondLsUrl;
+
+    /**
+     * 学历
+     */
+    private String degree;
+    private static final long serialVersionUID = 1L;
+}

+ 55 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterFamilyDTO.java

@@ -0,0 +1,55 @@
+package com.jeeplus.test.roster.service.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * roster_family
+ * @author 
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class RosterFamilyDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 基础信息id
+     */
+    private String baseId;
+
+    /**
+     * 成员姓名
+     */
+    private String name;
+
+    /**
+     * 关系
+     */
+    private String relationship;
+
+    /**
+     * 出生日期
+     */
+    private Date birthDate;
+
+    /**
+     * 出生证明
+     */
+    private String birthCertificate;
+
+    /**
+     * 出生证明
+     */
+    private String birthCertificateLsUrl;
+
+    private static final long serialVersionUID = 1L;
+}

+ 40 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterFilesDTO.java

@@ -0,0 +1,40 @@
+package com.jeeplus.test.roster.service.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * roster_files
+ * @author 
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class RosterFilesDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 基础信息id
+     */
+    private String baseId;
+
+    /**
+     * 文件路径
+     */
+    private String url;
+
+    /**
+     * 文件名称
+     */
+    private String name;
+
+    private static final long serialVersionUID = 1L;
+}

+ 37 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterLeadershipDTO.java

@@ -0,0 +1,37 @@
+package com.jeeplus.test.roster.service.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * 花名册-直属领导
+ * @TableName roster_leadership
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class RosterLeadershipDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 基础信息id
+     */
+    private String baseId;
+
+    /**
+     * 汇报类型
+     */
+    private String debriefType;
+
+    /**
+     * 汇报对象
+     */
+    private String supervisorId;
+
+    private static final long serialVersionUID = 1L;
+}

+ 55 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/dto/RosterWorkDTO.java

@@ -0,0 +1,55 @@
+package com.jeeplus.test.roster.service.dto;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.jeeplus.core.domain.BaseEntity;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * roster_work
+ * @author 
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+public class RosterWorkDTO extends BaseDTO {
+
+    /**
+     * 备注信息
+     */
+    private String remarks;
+
+    /**
+     * 基础信息id
+     */
+    private String baseId;
+
+    /**
+     * 公司名称
+     */
+    private String companyName;
+
+    /**
+     * 担任职位
+     */
+    private String posts;
+
+    /**
+     * 入职日期
+     */
+    private Date entryDate;
+
+    /**
+     * 离职日期
+     */
+    private Date separationDate;
+
+    /**
+     * 职位描述
+     */
+    private String postDescription;
+
+    private static final long serialVersionUID = 1L;
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterBankCardsWrapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.roster.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.roster.domain.RosterBankCards;
+import com.jeeplus.test.roster.domain.RosterContract;
+import com.jeeplus.test.roster.service.dto.RosterBankCardsDTO;
+import com.jeeplus.test.roster.service.dto.RosterContractDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface RosterBankCardsWrapper extends EntityWrapper<RosterBankCardsDTO, RosterBankCards> {
+
+    RosterBankCardsWrapper INSTANCE = Mappers.getMapper(RosterBankCardsWrapper.class);
+
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterBaseWrapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.roster.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.rank.domain.RankRsOffice;
+import com.jeeplus.test.rank.service.dto.RankRsOfficeDTO;
+import com.jeeplus.test.roster.domain.RosterBase;
+import com.jeeplus.test.roster.service.dto.RosterBaseDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface RosterBaseWrapper extends EntityWrapper<RosterBaseDTO, RosterBase> {
+
+    RosterBaseWrapper INSTANCE = Mappers.getMapper(RosterBaseWrapper.class);
+
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterCertificateWrapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.roster.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.roster.domain.RosterCertificate;
+import com.jeeplus.test.roster.domain.RosterFiles;
+import com.jeeplus.test.roster.service.dto.RosterCertificateDTO;
+import com.jeeplus.test.roster.service.dto.RosterFilesDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface RosterCertificateWrapper extends EntityWrapper<RosterCertificateDTO, RosterCertificate> {
+
+    RosterCertificateWrapper INSTANCE = Mappers.getMapper(RosterCertificateWrapper.class);
+
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterContractWrapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.roster.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.roster.domain.RosterBase;
+import com.jeeplus.test.roster.domain.RosterContract;
+import com.jeeplus.test.roster.service.dto.RosterBaseDTO;
+import com.jeeplus.test.roster.service.dto.RosterContractDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface RosterContractWrapper extends EntityWrapper<RosterContractDTO, RosterContract> {
+
+    RosterContractWrapper INSTANCE = Mappers.getMapper(RosterContractWrapper.class);
+
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterEducateWrapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.roster.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.roster.domain.RosterBankCards;
+import com.jeeplus.test.roster.domain.RosterEducate;
+import com.jeeplus.test.roster.service.dto.RosterBankCardsDTO;
+import com.jeeplus.test.roster.service.dto.RosterEducateDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface RosterEducateWrapper extends EntityWrapper<RosterEducateDTO, RosterEducate> {
+
+    RosterEducateWrapper INSTANCE = Mappers.getMapper(RosterEducateWrapper.class);
+
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterFamilyWrapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.roster.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.roster.domain.RosterEducate;
+import com.jeeplus.test.roster.domain.RosterFamily;
+import com.jeeplus.test.roster.service.dto.RosterEducateDTO;
+import com.jeeplus.test.roster.service.dto.RosterFamilyDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface RosterFamilyWrapper extends EntityWrapper<RosterFamilyDTO, RosterFamily> {
+
+    RosterFamilyWrapper INSTANCE = Mappers.getMapper(RosterFamilyWrapper.class);
+
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterFilesWrapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.roster.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.roster.domain.RosterFiles;
+import com.jeeplus.test.roster.domain.RosterWork;
+import com.jeeplus.test.roster.service.dto.RosterFilesDTO;
+import com.jeeplus.test.roster.service.dto.RosterWorkDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface RosterFilesWrapper extends EntityWrapper<RosterFilesDTO, RosterFiles> {
+
+    RosterFilesWrapper INSTANCE = Mappers.getMapper(RosterFilesWrapper.class);
+
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterLeadershipWrapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.roster.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.roster.domain.RosterBankCards;
+import com.jeeplus.test.roster.domain.RosterLeadership;
+import com.jeeplus.test.roster.service.dto.RosterBankCardsDTO;
+import com.jeeplus.test.roster.service.dto.RosterLeadershipDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface RosterLeadershipWrapper extends EntityWrapper<RosterLeadershipDTO, RosterLeadership> {
+
+    RosterLeadershipWrapper INSTANCE = Mappers.getMapper(RosterLeadershipWrapper.class);
+
+}

+ 17 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/mapstruct/RosterWorkWrapper.java

@@ -0,0 +1,17 @@
+package com.jeeplus.test.roster.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.roster.domain.RosterFamily;
+import com.jeeplus.test.roster.domain.RosterWork;
+import com.jeeplus.test.roster.service.dto.RosterFamilyDTO;
+import com.jeeplus.test.roster.service.dto.RosterWorkDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface RosterWorkWrapper extends EntityWrapper<RosterWorkDTO, RosterWork> {
+
+    RosterWorkWrapper INSTANCE = Mappers.getMapper(RosterWorkWrapper.class);
+
+}

+ 1 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/workClientInfo/controller/WorkClientController.java

@@ -50,7 +50,7 @@ public class WorkClientController {
     public ResponseEntity save(@RequestBody WorkClientInfosDto workClientInfosDto) {
         if(ObjectUtil.isNotEmpty(workClientInfosDto)){
             if(ObjectUtil.isNotEmpty(workClientInfosDto.getWorkClientInfo())){
-                if(StrUtil.isNotEmpty(workClientInfosDto.getWorkClientInfo().getId())){
+                if(StringUtils.isNotBlank(workClientInfosDto.getWorkClientInfo().getId())){
                     return ResponseEntity.ok(workClientService.update(workClientInfosDto));
                 }else{
                     return ResponseEntity.ok(workClientService.save(workClientInfosDto));

+ 2 - 1
jeeplus-web/src/main/resources/application-development.yml

@@ -207,5 +207,6 @@ yy_apicode: 35afe9ec3263424f9a18feb837177169
 yy_mhcxurl: https://api.yonyoucloud.com/apis/dst/enterpriseTicketQuery/enterpriseSearchByName
 yy_shcxurl: https://api.yonyoucloud.com/apis/dst/enterpriseTicketQuery/enterpriseTicketInfo
 
-
+#阿里云文件夹路径
+aliyun_directory: attachment-file/assess