Просмотр исходного кода

项目管理代码迁移以及bug修复

lizhenhao 2 лет назад
Родитель
Сommit
ebdac48b11
16 измененных файлов с 355 добавлено и 226 удалено
  1. 1 1
      jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/constant/enums/ProjectStatusEnum.java
  2. 1 1
      jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/constant/enums/ProjectTypeEnum.java
  3. 1 1
      jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/constant/enums/YesOrNoEnum.java
  4. 143 71
      jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/controller/UserProjectController.java
  5. 3 3
      jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/domain/UserProject.java
  6. 19 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/mapper/ProjectMapper.java
  7. 32 32
      jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/mapper/xml/UserProjectMapper.xml
  8. 108 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/service/ProjectService.java
  9. 4 4
      jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/service/dto/UserProjectDTO.java
  10. 14 0
      jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/service/mapstruct/ProjectWrapper.java
  11. 12 0
      jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/mapper/UserMapper.java
  12. 0 19
      jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/mapper/UserProjectMapper.java
  13. 3 0
      jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/mapper/xml/UserMapper.xml
  14. 0 80
      jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/service/UserProjectService.java
  15. 14 0
      jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/service/UserService.java
  16. 0 14
      jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/service/mapstruct/UserProjectWrapper.java

+ 1 - 1
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/constant/enums/ProjectStatusEnum.java

@@ -1,4 +1,4 @@
-package com.jeeplus.sys.constant.enums;
+package com.jeeplus.test.projectRecords.constant.enums;
 
 /**
  * 项目状态

+ 1 - 1
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/constant/enums/ProjectTypeEnum.java

@@ -1,4 +1,4 @@
-package com.jeeplus.sys.constant.enums;
+package com.jeeplus.test.projectRecords.constant.enums;
 
 /**
  * 项目类型

+ 1 - 1
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/constant/enums/YesOrNoEnum.java

@@ -1,4 +1,4 @@
-package com.jeeplus.sys.constant.enums;
+package com.jeeplus.test.projectRecords.constant.enums;
 
 /**
  * 是否枚举

+ 143 - 71
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/controller/UserProjectController.java

@@ -1,4 +1,4 @@
-package com.jeeplus.sys.controller;
+package com.jeeplus.test.projectRecords.controller;
 
 import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
@@ -11,21 +11,20 @@ import com.jeeplus.aop.logging.annotation.ApiLog;
 import com.jeeplus.core.excel.ExcelOptions;
 import com.jeeplus.core.excel.ExportMode;
 import com.jeeplus.core.excel.utils.EasyPoiUtil;
-import com.jeeplus.sys.constant.enums.ProjectStatusEnum;
-import com.jeeplus.sys.constant.enums.ProjectTypeEnum;
-import com.jeeplus.sys.constant.enums.YesOrNoEnum;
-import com.jeeplus.sys.domain.UserProject;
-import com.jeeplus.sys.service.UserProjectService;
+import com.jeeplus.test.projectRecords.constant.enums.ProjectStatusEnum;
+import com.jeeplus.test.projectRecords.constant.enums.ProjectTypeEnum;
+import com.jeeplus.test.projectRecords.constant.enums.YesOrNoEnum;
+import com.jeeplus.test.projectRecords.domain.Project;
+import com.jeeplus.test.projectRecords.service.ProjectService;
 import com.jeeplus.sys.service.UserService;
-import com.jeeplus.sys.service.dto.UserProjectDTO;
-import com.jeeplus.sys.service.mapstruct.UserProjectWrapper;
+import com.jeeplus.test.projectRecords.service.dto.ProjectDTO;
+import com.jeeplus.test.projectRecords.service.mapstruct.ProjectWrapper;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.lang3.time.DateUtils;
-import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.xssf.usermodel.XSSFSheet;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
+import org.apache.poi.ss.usermodel.Workbook;
+import org.apache.poi.ss.usermodel.WorkbookFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
@@ -38,11 +37,14 @@ import javax.validation.Valid;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.lang.reflect.Field;
+import java.lang.reflect.Type;
 import java.net.URLEncoder;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.util.Objects;
 import java.util.stream.Collectors;
 
 
@@ -55,10 +57,10 @@ import java.util.stream.Collectors;
 @Api("项目管理")
 @RestController
 @RequestMapping(value = "/sys/project")
-public class UserProjectController {
+public class ProjectController {
 
     @Autowired
-    private UserProjectService userProjectService;
+    private ProjectService projectService;
 
     @Autowired
     private UserService userService;
@@ -68,8 +70,8 @@ public class UserProjectController {
     @ApiLog("查询项目列表")
     @PreAuthorize("hasAuthority('sys:project:list')")
     @GetMapping("list")
-    public ResponseEntity<IPage<UserProject>> data(UserProject userProject, Page<UserProject> page) throws Exception {
-        IPage<UserProject> result = userProjectService.selectPage (page,userProject);
+    public ResponseEntity<IPage<Project>> data(Project project, Page<Project> page) throws Exception {
+        IPage<Project> result = projectService.selectPage (page,project);
         return ResponseEntity.ok (result);
     }
 
@@ -82,7 +84,7 @@ public class UserProjectController {
     @PreAuthorize ("hasAnyAuthority('sys:project:view','sys:project:add','sys:project:edit')")
     @GetMapping("queryById")
     public ResponseEntity queryById(@RequestParam("id") String id) {
-        UserProject userProject = userProjectService.selectByProjectId ( id );
+        Project userProject = projectService.selectByProjectId ( id );
         return ResponseEntity.ok (userProject);
     }
 
@@ -94,10 +96,10 @@ public class UserProjectController {
     @ApiLog("保存项目")
     @PreAuthorize ("hasAnyAuthority('sys:post:add','sys:post:edit')")
     @PostMapping("save")
-    public ResponseEntity save(@Valid @RequestBody UserProjectDTO projectDTO){
+    public ResponseEntity save(@Valid @RequestBody ProjectDTO projectDTO){
         //新增或编辑表单保存
-        UserProject project = UserProjectWrapper.INSTANCE.toEntity (projectDTO);
-        UserProject pro = userProjectService.projectDtoToDate(project,projectDTO);
+        Project project = ProjectWrapper.INSTANCE.toEntity (projectDTO);
+        Project pro = projectService.projectDtoToDate(project,projectDTO);
         pro.setItemType(projectDTO.getItemType());
 
         if(StrUtil.isNotEmpty(projectDTO.getProjectHead())){
@@ -132,17 +134,17 @@ public class UserProjectController {
 
             //判断一下文号是否存在
             if(StrUtil.isNotEmpty(projectDTO.getDocumentNum())){
-                if(ObjectUtil.isNotEmpty(userProjectService.selectByDocumentNum(projectDTO.getDocumentNum()))){
+                if(ObjectUtil.isNotEmpty(projectService.selectByDocumentNum(projectDTO.getDocumentNum()))){
                     return ResponseEntity.badRequest().body("不可使用已存在的文号");
                 }
             }
 
-            userProjectService.save(pro);//新增
+            projectService.save(pro);//新增
         }else{
 
             //判断一下文号是否存在
             if(StrUtil.isNotEmpty(projectDTO.getDocumentNum())){
-                UserProject userProjects = userProjectService.selectByDocumentNum(projectDTO.getDocumentNum());
+                Project userProjects = projectService.selectByDocumentNum(projectDTO.getDocumentNum());
                 if(ObjectUtil.isNotEmpty(userProjects)){
                     if(!projectDTO.getId().equals(userProjects.getId())){
                         return ResponseEntity.badRequest().body("不可使用已存在的文号");
@@ -150,8 +152,8 @@ public class UserProjectController {
                 }
             }
 
-            LambdaUpdateWrapper<UserProject> wrapper = userProjectService.getLambdaUpdateWrapper(projectDTO);
-            userProjectService.update (pro,wrapper);//修改
+            LambdaUpdateWrapper<Project> wrapper = projectService.getLambdaUpdateWrapper(projectDTO);
+            projectService.update (pro,wrapper);//修改
         }
 
         return ResponseEntity.ok ("保存项目成功");
@@ -167,7 +169,7 @@ public class UserProjectController {
     @DeleteMapping("delete")
     public ResponseEntity delete(String ids) {
         String idArray[] =ids.split(",");
-        userProjectService.removeByIds (Lists.newArrayList (idArray));
+        projectService.removeByIds (Lists.newArrayList (idArray));
         return ResponseEntity.ok ("删除项目成功");
     }
 
@@ -181,71 +183,88 @@ public class UserProjectController {
     @PostMapping("import")
     @ApiOperation(value = "导入项目数据excel")
     public ResponseEntity importFile(MultipartFile file) throws IOException{
-
+        //用来计数的,计算导入了多少条数据
         this.successNum = 0;
 
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-        ArrayList<UserProject> arrayList = new ArrayList<>();
+        ArrayList<Project> arrayList = new ArrayList<>();
         HashMap<String,String> hashMap = new HashMap<>();
 
-        HSSFWorkbook hssfWorkBook=new HSSFWorkbook(file.getInputStream());
-
-        List<UserProjectDTO> listA = new ArrayList<>();
-        List<UserProjectDTO> listB = new ArrayList<>();
+        //这里通过WorkbookFactory.create的方式来创建workBook,并没有用HSSFWorkbook和XSSFWorkbook,因为这两个局限性太大了,只能通过后缀来进行判断excel的版本
+        //workBook在这里我主要用来判断是否存在“项目明细表”或“咨询报告”的sheet页,不存在会向用户抛提示
+        Workbook workBook = WorkbookFactory.create(file.getInputStream());
 
-        int sheetIndexAs = hssfWorkBook.getSheetIndex("项目明细表");
+        List<ProjectDTO> listA = new ArrayList<>();
+        List<ProjectDTO> listB = new ArrayList<>();
+        //判断是否存在“项目明细表”sheet页
+        int sheetIndexAs = workBook.getSheetIndex("项目明细表");
         if(sheetIndexAs != -1){
-            //评估项目sheet
-            listA = EasyPoiUtil.importSheetExcel(file, 1, 1, sheetIndexAs,1, UserProjectDTO.class);
-
+            //获取评估项目sheet
+            listA = EasyPoiUtil.importSheetExcel(file, 1, 1, sheetIndexAs,1, ProjectDTO.class);
+            //去除excel中的空行
+            listA = getExcelList(listA);
+            //导入前检测数据
             String resultA = importDecide(listA, sdf, arrayList, hashMap, successNum, ProjectTypeEnum.ASSESS.getValue());
             if(StrUtil.isNotEmpty(resultA)){
+                //有返回值,说明导入的数据不正确。向用户抛提示
                 return ResponseEntity.badRequest().body  (resultA);
             }
         }
-
-        int sheetIndexCo = hssfWorkBook.getSheetIndex("咨询报告");
+        //判断是否存在“咨询报告”sheet页
+        int sheetIndexCo = workBook.getSheetIndex("咨询报告");
         if(sheetIndexCo != -1){
             //咨询项目sheet
-            listB = EasyPoiUtil.importSheetExcel(file, 1, 1, sheetIndexCo,1, UserProjectDTO.class);
-
+            listB = EasyPoiUtil.importSheetExcel(file, 1, 1, sheetIndexCo,1, ProjectDTO.class);
+            //去除excel中的空行
+            listB = getExcelList(listB);
+            //导入前检测数据
             String resultB = importDecide(listB, sdf, arrayList, hashMap, successNum, ProjectTypeEnum.CONSULTATION.getValue());
             if(StrUtil.isNotEmpty(resultB)){
+                //有返回值,说明导入的数据不正确。向用户抛提示
                 return ResponseEntity.badRequest().body  (resultB);
             }
         }
-
-        if(sheetIndexAs == -1 && sheetIndexCo == -1) return ResponseEntity.badRequest().body  ("导入文件格式不正确,建议根据模板来进行数据的导入");
-
-
+        //如果两个sheet页都不存在,说明这个导入的文件不符合要求
+        if(sheetIndexAs == -1 && sheetIndexCo == -1){
+            return ResponseEntity.badRequest().body  ("导入文件格式不正确,建议根据模板来进行数据的导入");
+        }
+        //判断文件中是否有重复的文号
         if(hashMap.size() != listA.size() + listB.size()){
             return ResponseEntity.badRequest().body  ("文件中存在重复的文号或者多个空文号");
         }
-
-        userProjectService.saveBatch(arrayList);
+        //导入数据
+        projectService.saveBatch(arrayList);
 
         return ResponseEntity.ok("已成功导入 " + successNum + " 条数据");
     }
-    public String importDecide(List<UserProjectDTO> list,SimpleDateFormat sdf,ArrayList<UserProject> arrayList,HashMap<String,String> hashMap,int successNum,String itemType){
-
-        for (UserProjectDTO project : list) {
+    public String importDecide(List<ProjectDTO> list, SimpleDateFormat sdf, ArrayList<Project> arrayList, HashMap<String,String> hashMap, int successNum, String itemType){
 
+        for (ProjectDTO project : list) {
+            if(ObjectUtil.isEmpty(project)){
+                continue;
+            }
             try {
                 if(StrUtil.isNotEmpty(project.getEvaluationReportDateUi())){
+                    //EvaluationReportDateUi字段接到的数据符合"yyyy/MM/dd"时间格式的话,正常执行。
+                    //不符合的话,就会有异常,进到catch
                     String format = sdf.format(DateUtils.parseDate(project.getEvaluationReportDateUi(), new String[]{"yyyy/MM/dd"}));
+                    //符合要求的时间格式,则会将数据转换为时间格式存到EvaluationReportDate字段中,并且将项目状态设置为”已完成“
                     project.setEvaluationReportDate(sdf.parse(format));
                     project.setStatus(ProjectStatusEnum.FINISH.getValue());
                 }
             }catch (Exception e){
                 if(StrUtil.isNotEmpty(project.getEvaluationReportDateUi())){
                     if(project.getEvaluationReportDateUi().contains("报告已作废")){
+                        //当EvaluationReportDateUi字段接收到的值包含”报告已作废“时,项目状态为”作废“,并且将值放到AssessReportMessage字段中
                         project.setStatus(ProjectStatusEnum.INVALID.getValue());
                         project.setAssessReportMessage(project.getEvaluationReportDateUi());
                     }else{
+                        //当EvaluationReportDateUi字段接收到的值不包含”报告已作废“时,项目状态为”暂存“,并且将值放到AssessReportMessage字段中
                         project.setStatus(ProjectStatusEnum.STAGING.getValue());
                         project.setAssessReportMessage(project.getEvaluationReportDateUi());
                     }
                 }else{
+                    //当EvaluationReportDateUi字段接收到的值为空时,项目状态为”暂存“
                     project.setStatus(ProjectStatusEnum.STAGING.getValue());
                 }
             }
@@ -256,8 +275,10 @@ public class UserProjectController {
                     project.setEvaluationBaseDate(sdf.parse(format));
                 }
             }catch (Exception e){
-                if(StrUtil.isNotEmpty(project.getEvaluationBaseDateUi()))
+                if(StrUtil.isNotEmpty(project.getEvaluationBaseDateUi())){
                     project.setAssessBaseMessage(project.getEvaluationBaseDateUi());
+                }
+
             }
 
             try {
@@ -266,8 +287,10 @@ public class UserProjectController {
                     project.setInvoiceDate(sdf.parse(format));
                 }
             }catch (Exception e){
-                if(StrUtil.isNotEmpty(project.getInvoiceDateUi()))
+                if(StrUtil.isNotEmpty(project.getInvoiceDateUi())){
                     project.setInvoiceMessage(project.getInvoiceDateUi());
+                }
+
             }
 
             try {
@@ -281,7 +304,7 @@ public class UserProjectController {
 
             //项目负责人、签字评估师1、签字评估师2 关联user表的id
             if(StrUtil.isNotEmpty(project.getProjectHead())){
-                String id = userService.getUserIdByLogin(project.getProjectHead());
+                String id = userService.getUserIdByName(project.getProjectHead());
                 if(StrUtil.isNotEmpty(id)){
                     project.setProjectHead(id);
                 }else{
@@ -290,7 +313,7 @@ public class UserProjectController {
             }
 
             if(StrUtil.isNotEmpty(project.getEvaluationPersonOne())){
-                String id = userService.getUserIdByLogin(project.getEvaluationPersonOne());
+                String id = userService.getUserIdByName(project.getEvaluationPersonOne());
                 if(ObjectUtil.isNotEmpty(id)){
                     project.setEvaluationPersonOne(id);
                 }else{
@@ -299,7 +322,7 @@ public class UserProjectController {
             }
 
             if(StrUtil.isNotEmpty(project.getEvaluationPersonTwo())){
-                String id = userService.getUserIdByLogin(project.getEvaluationPersonTwo());
+                String id = userService.getUserIdByName(project.getEvaluationPersonTwo());
                 if(ObjectUtil.isNotEmpty(id)){
                     project.setEvaluationPersonTwo(id);
                 }else{
@@ -309,7 +332,7 @@ public class UserProjectController {
 
             //文号的问题
             if(StrUtil.isNotEmpty(project.getDocumentNum())) {
-                UserProject userProject = userProjectService.selectByDocumentNum(project.getDocumentNum());
+                Project userProject = projectService.selectByDocumentNum(project.getDocumentNum());
                 if(ObjectUtil.isNotEmpty(userProject)){
                     return "文件中存在已在档的文号";
                 }
@@ -361,7 +384,7 @@ public class UserProjectController {
 
             hashMap.put(project.getDocumentNum(),null);
 
-            UserProject userProject = UserProjectWrapper.INSTANCE.toEntity(project);
+            Project userProject = ProjectWrapper.INSTANCE.toEntity(project);
             //项目类型 1.评估项目  2.咨询项目
             userProject.setItemType(itemType);
             arrayList.add(userProject);
@@ -416,37 +439,39 @@ public class UserProjectController {
     @PreAuthorize("hasAnyAuthority('sys:project:export')")
     @GetMapping("export")
     @ApiOperation(value = "导出项目excel")
-    public void exportFile(UserProjectDTO userProjectDTO, Page <UserProjectDTO> page, ExcelOptions options, HttpServletResponse response) throws Exception {
+    public void exportFile(ProjectDTO userProjectDTO, Page <ProjectDTO> page, ExcelOptions options, HttpServletResponse response) throws Exception {
         String fileName = options.getFilename ( );
-        UserProject project = UserProjectWrapper.INSTANCE.toEntity (userProjectDTO);
-        Page <UserProject> userProjectPage = pageAToPageB(page);
-        List <UserProject> result = new ArrayList<>();
-        List <UserProjectDTO> userProjectDTOList = new ArrayList<>();
+        Project project = ProjectWrapper.INSTANCE.toEntity (userProjectDTO);
+        Page <Project> userProjectPage = pageAToPageB(page);
+        List <Project> result = new ArrayList<>();
+        List <ProjectDTO> userProjectDTOList = new ArrayList<>();
         if ( ExportMode.current.equals ( options.getMode ( ) ) ) {
-            result = userProjectService.selectPage ( userProjectPage, project ).getRecords ( );
+            result = projectService.selectPage ( userProjectPage, project ).getRecords ( );
         } else {
             userProjectPage.setSize ( -1 );
             userProjectPage.setCurrent ( 0 );
-            result = userProjectService.selectPage ( userProjectPage, project ).getRecords ( );
+            result = projectService.selectPage ( userProjectPage, project ).getRecords ( );
         }
         result.stream().forEach(item->{
-            UserProjectDTO projectDTO = UserProjectWrapper.INSTANCE.toDTO(item);
+            ProjectDTO projectDTO = ProjectWrapper.INSTANCE.toDTO(item);
             userProjectDTOList.add(projectDTO);
         });
 
         SimpleDateFormat formatter=new SimpleDateFormat("yyyy/MM/dd");
-        List <UserProjectDTO> collect = userProjectDTOList.stream().map(item -> {
+        List <ProjectDTO> collect = userProjectDTOList.stream().map(item -> {
             return isChange(item,formatter);
         }).collect(Collectors.toList());
-        if(ProjectTypeEnum.ASSESS.getValue().equals(userProjectDTO.getItemType()))
-            EasyPoiUtil.exportExcel ( collect, "2021年资产评估项目备查登记表",  "项目明细表", UserProjectDTO.class, fileName, response );
-        if(ProjectTypeEnum.CONSULTATION.getValue().equals(userProjectDTO.getItemType()))
-            EasyPoiUtil.exportExcel ( collect, "2021年资产评估项目备查登记表",  "咨询报告", UserProjectDTO.class, fileName, response );
+        if(ProjectTypeEnum.ASSESS.getValue().equals(userProjectDTO.getItemType())){
+            EasyPoiUtil.exportExcel ( collect, "2021年资产评估项目备查登记表",  "项目明细表", ProjectDTO.class, fileName, response );
+        }
+        if(ProjectTypeEnum.CONSULTATION.getValue().equals(userProjectDTO.getItemType())){
+            EasyPoiUtil.exportExcel ( collect, "2021年资产评估项目备查登记表",  "咨询报告", ProjectDTO.class, fileName, response );
+        }
     }
 
-    public Page<UserProject> pageAToPageB(Page<UserProjectDTO> page){
+    public Page<Project> pageAToPageB(Page<ProjectDTO> page){
 
-        Page<UserProject> pageB = new Page<>();
+        Page<Project> pageB = new Page<>();
         pageB.setCurrent(page.getCurrent());
         pageB.setSize(page.getSize());
         pageB.setOrders(page.getOrders());
@@ -454,7 +479,7 @@ public class UserProjectController {
         return pageB;
     }
 
-    public UserProjectDTO isChange(UserProjectDTO userProjectDTO,SimpleDateFormat formatter){
+    public ProjectDTO isChange(ProjectDTO userProjectDTO, SimpleDateFormat formatter){
 
         if(StrUtil.isNotEmpty(userProjectDTO.getIsInvoice())){
             //是否开票
@@ -550,5 +575,52 @@ public class UserProjectController {
         return userProjectDTO;
     }
 
+    public ArrayList<ProjectDTO> getExcelList(List<ProjectDTO> list){
+
+        ArrayList<ProjectDTO> projectDTOS = new ArrayList<>();
+
+        list.stream().forEach(item->{
+            if(!objectCheckIsNull(item)){
+                projectDTOS.add(item);
+            }
+        });
+
+        return projectDTOS;
+    }
+
+    /**
+     * 检查一个对象的所有属性值是否都是null
+     * @param object
+     * @return
+     */
+    public boolean objectCheckIsNull(Object object) {
+        boolean flag = true; //定义返回结果,默认为true
+
+        if (Objects.isNull(object)) {
+            flag = true;
+        } 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(); // 得到属性名
+                } catch (Exception e){}
+                if (fieldValue != null) {  //只要有一个属性值不为null 就返回false 表示对象不为null
+                    flag = false;
+                    break;
+                }
+            }
+        }
+
+        return flag;
+    }
+
 
 }

+ 3 - 3
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/domain/UserProject.java

@@ -1,4 +1,4 @@
-package com.jeeplus.sys.domain;
+package com.jeeplus.test.projectRecords.domain;
 
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.jeeplus.core.domain.BaseEntity;
@@ -14,8 +14,8 @@ import java.util.Date;
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@TableName("sys_user_project")
-public class UserProject extends BaseEntity {
+@TableName("project_records")
+public class Project extends BaseEntity {
 
     /**
      * 备注信息

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

@@ -0,0 +1,19 @@
+package com.jeeplus.test.projectRecords.mapper;
+
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.jeeplus.test.projectRecords.domain.Project;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+@Mapper
+public interface ProjectMapper extends BaseMapper<Project> {
+
+    public Project selectByDocumentNum(@Param("documentNum") String documentNum);
+
+    public Project selectByProjectId(@Param("projectId") String projectId);
+
+    public IPage<Project> selectPage(Page<Project> page, @Param("project") Project project);
+}

+ 32 - 32
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/mapper/xml/UserProjectMapper.xml

@@ -1,7 +1,7 @@
 <?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.sys.mapper.UserProjectMapper">
-  <resultMap id="BaseResultMap" type="com.jeeplus.sys.domain.UserProject">
+<mapper namespace="com.jeeplus.test.projectRecords.mapper.ProjectMapper">
+  <resultMap id="BaseResultMap" type="com.jeeplus.test.projectRecords.domain.Project">
     <id column="id" jdbcType="VARCHAR" property="id" />
     <result column="create_by" jdbcType="VARCHAR" property="createBy" />
     <result column="create_date" jdbcType="TIMESTAMP" property="createDate" />
@@ -59,62 +59,62 @@
   </sql>
 
   <sql id="to_list">
-    sup.id, sup.create_by, sup.create_date, sup.update_by, sup.update_date, sup.remarks, sup.del_flag, sup.customer_name,
-    sup.project_name, sup.evaluation_objective, sup.project_type, sup.evaluation_base_date, sup.evaluation_report_date,
-    sup.protocol_num, sup.document_num, sup.wayst_evaluation, sup.fixed_assets_evaluation,
-    sup.net_assets_evaluation, sup.rent_evaluation, sup.forensics, sup.report_charges, sup.current_dispose_person,
-    sup.is_invoice, sup.invoice_date, sup.actual_charges, sup.is_contract_archive, sup.is_papers_intact,
-    sup.is_papers_archive, sup.ops_amount, sup.is_ops_reimbursement, sup.reimbursement_amount, sup.unreimbursed_amount,
-    sup.reimbursement_num, sup.reimbursement_date,
-    sup.`status`, sup.assess_report_message, sup.assess_base_message, sup.invoice_message, sup.is_commission_reimbursement,
-    sup.item_type
+    pr.id, pr.create_by, pr.create_date, pr.update_by, pr.update_date, pr.remarks, pr.del_flag, pr.customer_name,
+    pr.project_name, pr.evaluation_objective, pr.project_type, pr.evaluation_base_date, pr.evaluation_report_date,
+    pr.protocol_num, pr.document_num, pr.wayst_evaluation, pr.fixed_assets_evaluation,
+    pr.net_assets_evaluation, pr.rent_evaluation, pr.forensics, pr.report_charges, pr.current_dispose_person,
+    pr.is_invoice, pr.invoice_date, pr.actual_charges, pr.is_contract_archive, pr.is_papers_intact,
+    pr.is_papers_archive, pr.ops_amount, pr.is_ops_reimbursement, pr.reimbursement_amount, pr.unreimbursed_amount,
+    pr.reimbursement_num, pr.reimbursement_date,
+    pr.`status`, pr.assess_report_message, pr.assess_base_message, pr.invoice_message, pr.is_commission_reimbursement,
+    pr.item_type
   </sql>
 
 
-  <select id="selectByDocumentNum" resultType="com.jeeplus.sys.domain.UserProject">
+  <select id="selectByDocumentNum" resultType="com.jeeplus.test.projectRecords.domain.Project">
     select
     <include refid="Base_Column_List"></include>
     from
-    sys_user_project
+    project_records
     where del_flag = '0' and document_num = #{documentNum}
   </select>
 
-  <select id="selectByProjectId" resultType="com.jeeplus.sys.domain.UserProject">
+  <select id="selectByProjectId" resultType="com.jeeplus.test.projectRecords.domain.Project">
     select
     <include refid="to_list"></include>,
     su1.login_name as projectHead,
     su2.login_name as evaluationPersonOne,
     su3.login_name as evaluationPersonTwo
-    from sys_user_project sup
-    left join sys_user su1 on sup.project_head = su1.id
-    left join sys_user su2 on sup.evaluation_person_one = su2.id
-    left join sys_user su3 on sup.evaluation_person_two = su3.id
-    where sup.del_flag = '0' and sup.id = #{projectId}
+    from project_records pr
+    left join sys_user su1 on pr.project_head = su1.id
+    left join sys_user su2 on pr.evaluation_person_one = su2.id
+    left join sys_user su3 on pr.evaluation_person_two = su3.id
+    where pr.del_flag = '0' and pr.id = #{projectId}
   </select>
 
-  <select id="selectPage" resultType="com.jeeplus.sys.domain.UserProject">
+  <select id="selectPage" resultType="com.jeeplus.test.projectRecords.domain.Project">
     select
     <include refid="to_list"></include>,
     su1.login_name as projectHead,
     su2.login_name as evaluationPersonOne,
     su3.login_name as evaluationPersonTwo
-    from sys_user_project sup
-    left join sys_user su1 on sup.project_head = su1.id
-    left join sys_user su2 on sup.evaluation_person_one = su2.id
-    left join sys_user su3 on sup.evaluation_person_two = su3.id
+    from project_records pr
+    left join sys_user su1 on pr.project_head = su1.id
+    left join sys_user su2 on pr.evaluation_person_one = su2.id
+    left join sys_user su3 on pr.evaluation_person_two = su3.id
     <where >
-      sup.del_flag = '0'
-      <if test="userProject.customerName != null and userProject.customerName != ''">
-        and sup.customer_name like concat('%',#{userProject.customerName},'%')
+      pr.del_flag = '0'
+      <if test="project.customerName != null and project.customerName != ''">
+        and pr.customer_name like concat('%',#{project.customerName},'%')
       </if>
-      <if test="userProject.projectName != null and userProject.projectName != ''">
-        and sup.project_name like concat('%',#{userProject.projectName},'%')
+      <if test="project.projectName != null and project.projectName != ''">
+        and pr.project_name like concat('%',#{project.projectName},'%')
       </if>
-      <if test="userProject.itemType != null and userProject.itemType != ''">
-        and sup.item_type = #{userProject.itemType}
+      <if test="project.itemType != null and project.itemType != ''">
+        and pr.item_type = #{project.itemType}
       </if>
     </where>
-    order by sup.create_date desc
+    order by pr.create_date desc
   </select>
 
 </mapper>

+ 108 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/service/ProjectService.java

@@ -0,0 +1,108 @@
+package com.jeeplus.test.projectRecords.service;
+
+import cn.hutool.core.util.StrUtil;
+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.test.projectRecords.domain.Project;
+import com.jeeplus.test.projectRecords.mapper.ProjectMapper;
+import com.jeeplus.test.projectRecords.service.dto.ProjectDTO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.text.SimpleDateFormat;
+
+@Service
+@Transactional
+public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
+
+    @Autowired
+    private ProjectMapper projectMapper;
+
+    public IPage<Project> selectPage(Page<Project> page, Project project){
+        return projectMapper.selectPage(page, project);
+    }
+
+    /**
+     * 通过项目id查询项目信息
+     * @param projectId
+     * @return
+     */
+    public Project selectByProjectId(String projectId){
+        return projectMapper.selectByProjectId(projectId);
+    }
+
+    /**
+     * 用于将ProjectDTO类中的DateUi属性转换为时间格式存储到Project类中的Date属性中
+     * @param project
+     * @param projectDTO
+     * @return
+     */
+    public Project projectDtoToDate(Project project, ProjectDTO projectDTO){
+        SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
+        try {
+            if(StrUtil.isNotEmpty(projectDTO.getEvaluationBaseDateUi())){
+                project.setEvaluationBaseDate(sdf.parse(projectDTO.getEvaluationBaseDateUi()));
+            }
+
+            if(StrUtil.isNotEmpty(projectDTO.getEvaluationReportDateUi())){
+                project.setEvaluationReportDate(sdf.parse(projectDTO.getEvaluationReportDateUi()));
+            }
+
+            if(StrUtil.isNotEmpty(projectDTO.getInvoiceDateUi())){
+                project.setInvoiceDate(sdf.parse(projectDTO.getInvoiceDateUi()));
+            }
+
+            if(StrUtil.isNotEmpty(projectDTO.getReimbursementDateUi())){
+                project.setReimbursementDate(sdf.parse(projectDTO.getReimbursementDateUi()));
+            }
+
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return project;
+    }
+
+    /**
+     * mp的update()方法,如果将参数设为null的,mp会默认不修改的
+     * 所以通过这种方式,使用wrapper将你要设置为null的手动set为null,这样update()方法就会按你的想法执行了
+     * @param project
+     * @return
+     */
+    public LambdaUpdateWrapper getLambdaUpdateWrapper(ProjectDTO project){
+        LambdaUpdateWrapper<Project> wrapper = new LambdaUpdateWrapper<Project>();
+
+        if(StrUtil.isNotEmpty(project.getId())){
+            wrapper.eq(Project::getId,project.getId());
+        }
+
+        if(StrUtil.isEmpty(project.getEvaluationBaseDateUi())){
+            wrapper.set(Project::getEvaluationBaseDate, null);
+        }
+
+        if(StrUtil.isEmpty(project.getEvaluationReportDateUi())){
+            wrapper.set(Project::getEvaluationReportDate, null);
+        }
+
+        if(StrUtil.isEmpty(project.getInvoiceDateUi())){
+            wrapper.set(Project::getInvoiceDate, null);
+        }
+
+        if(StrUtil.isEmpty(project.getReimbursementDateUi())){
+            wrapper.set(Project::getReimbursementDate, null);
+        }
+
+        return wrapper;
+    }
+
+    /**
+     * 根据文号查询项目信息
+     * @param documentNum
+     * @return
+     */
+    public Project selectByDocumentNum(String documentNum){
+        return projectMapper.selectByDocumentNum(documentNum);
+    }
+}

+ 4 - 4
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/service/dto/UserProjectDTO.java

@@ -1,4 +1,4 @@
-package com.jeeplus.sys.service.dto;
+package com.jeeplus.test.projectRecords.service.dto;
 
 import cn.afterturn.easypoi.excel.annotation.Excel;
 import com.jeeplus.core.service.dto.BaseDTO;
@@ -9,7 +9,7 @@ import java.util.Date;
 
 @Data
 @EqualsAndHashCode(callSuper = false)
-public class UserProjectDTO extends BaseDTO {
+public class ProjectDTO extends BaseDTO {
 
     /**
      * 备注信息
@@ -253,11 +253,11 @@ public class UserProjectDTO extends BaseDTO {
 
     private static final long serialVersionUID = 1L;
 
-    public UserProjectDTO(){
+    public ProjectDTO(){
         super();
     }
 
-    public UserProjectDTO(String id){
+    public ProjectDTO(String id){
         super(id);
     }
 

+ 14 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/service/mapstruct/ProjectWrapper.java

@@ -0,0 +1,14 @@
+package com.jeeplus.test.projectRecords.service.mapstruct;
+
+import com.jeeplus.core.mapstruct.EntityWrapper;
+import com.jeeplus.test.projectRecords.domain.Project;
+import com.jeeplus.test.projectRecords.service.dto.ProjectDTO;
+import org.mapstruct.Mapper;
+import org.mapstruct.ReportingPolicy;
+import org.mapstruct.factory.Mappers;
+
+@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
+public interface ProjectWrapper extends EntityWrapper<ProjectDTO, Project> {
+
+    ProjectWrapper INSTANCE = Mappers.getMapper(ProjectWrapper.class);
+}

+ 12 - 0
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/mapper/UserMapper.java

@@ -35,9 +35,21 @@ public interface UserMapper extends BaseMapper<User> {
     @InterceptorIgnore(dataPermission = "true")
     UserDTO get(@Param(Constants.WRAPPER) QueryWrapper queryWrapper);
 
+    /**
+     * 根据条件查询用户id
+     * @param loginName
+     * @return
+     */
     String getUserIdByLogin(@Param("loginName") String loginName);
 
     /**
+     * 根据条件查询用户id
+     * @param name
+     * @return
+     */
+    String getUserIdByName(@Param("name") String name);
+
+    /**
      * 获取用户列表
      *
      * @param queryWrapper

+ 0 - 19
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/mapper/UserProjectMapper.java

@@ -1,19 +0,0 @@
-package com.jeeplus.sys.mapper;
-
-
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.jeeplus.sys.domain.UserProject;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-@Mapper
-public interface UserProjectMapper extends BaseMapper<UserProject> {
-
-    public UserProject selectByDocumentNum(@Param("documentNum") String documentNum);
-
-    public UserProject selectByProjectId(@Param("projectId") String projectId);
-
-    public IPage<UserProject> selectPage(Page<UserProject> page, @Param("userProject") UserProject userProject);
-}

+ 3 - 0
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/mapper/xml/UserMapper.xml

@@ -94,6 +94,9 @@
 		select id from sys_user where login_name = #{loginName}
 	</select>
 
+	<select id="getUserIdByName" resultType="string">
+		select id from sys_user su where su.name = #{name} limit 1
+	</select>
 
 	<!-- 分页查询用户信息 -->
 	<select id="findList" resultMap="userResult">

+ 0 - 80
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/service/UserProjectService.java

@@ -1,80 +0,0 @@
-package com.jeeplus.sys.service;
-
-import cn.hutool.core.util.StrUtil;
-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.domain.UserProject;
-import com.jeeplus.sys.mapper.UserProjectMapper;
-import com.jeeplus.sys.service.dto.UserProjectDTO;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.StringUtils;
-
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.UUID;
-
-@Service
-@Transactional
-public class UserProjectService extends ServiceImpl<UserProjectMapper, UserProject> {
-
-    @Autowired
-    private UserProjectMapper userProjectMapper;
-
-    public IPage<UserProject> selectPage(Page<UserProject> page, UserProject userProject){
-        return userProjectMapper.selectPage(page, userProject);
-    }
-
-    public UserProject selectByProjectId(String projectId){
-        return userProjectMapper.selectByProjectId(projectId);
-    }
-
-    public UserProject projectDtoToDate(UserProject project, UserProjectDTO projectDTO){
-        SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" );
-        try {
-            if(StrUtil.isNotEmpty(projectDTO.getEvaluationBaseDateUi()))
-                project.setEvaluationBaseDate(sdf.parse(projectDTO.getEvaluationBaseDateUi()));
-
-            if(StrUtil.isNotEmpty(projectDTO.getEvaluationReportDateUi()))
-                project.setEvaluationReportDate(sdf.parse(projectDTO.getEvaluationReportDateUi()));
-
-            if(StrUtil.isNotEmpty(projectDTO.getInvoiceDateUi()))
-                project.setInvoiceDate(sdf.parse(projectDTO.getInvoiceDateUi()));
-
-            if(StrUtil.isNotEmpty(projectDTO.getReimbursementDateUi()))
-                project.setReimbursementDate(sdf.parse(projectDTO.getReimbursementDateUi()));
-
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return project;
-    }
-
-    public LambdaUpdateWrapper getLambdaUpdateWrapper(UserProjectDTO project){
-        LambdaUpdateWrapper<UserProject> wrapper = new LambdaUpdateWrapper<UserProject>();
-
-        if(StrUtil.isNotEmpty(project.getId()))
-            wrapper.eq(UserProject::getId,project.getId());
-
-        if(StrUtil.isEmpty(project.getEvaluationBaseDateUi()))
-            wrapper.set(UserProject::getEvaluationBaseDate, null);
-
-        if(StrUtil.isEmpty(project.getEvaluationReportDateUi()))
-            wrapper.set(UserProject::getEvaluationReportDate, null);
-
-        if(StrUtil.isEmpty(project.getInvoiceDateUi()))
-            wrapper.set(UserProject::getInvoiceDate, null);
-
-        if(StrUtil.isEmpty(project.getReimbursementDateUi()))
-            wrapper.set(UserProject::getReimbursementDate, null);
-
-        return wrapper;
-    }
-
-    public UserProject selectByDocumentNum(String documentNum){
-        return userProjectMapper.selectByDocumentNum(documentNum);
-    }
-}

+ 14 - 0
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/service/UserService.java

@@ -97,10 +97,24 @@ public class UserService  extends ServiceImpl<UserMapper, User> {
 		return baseMapper.get (queryWrapper);
 	}
 
+	/**
+	 * 根据登录名获取用户id
+	 * @param loginName
+	 * @return
+	 */
 	public String getUserIdByLogin(String loginName) {
 		return userMapper.getUserIdByLogin (loginName);
 	}
 
+	/**
+	 * 根据用户name获取用户id
+	 * @param name
+	 * @return
+	 */
+	public String getUserIdByName(String name) {
+		return userMapper.getUserIdByName (name);
+	}
+
 
 	/**
 	 * 自定义分页检索

+ 0 - 14
jeeplus-platform/jeeplus-admin/src/main/java/com/jeeplus/sys/service/mapstruct/UserProjectWrapper.java

@@ -1,14 +0,0 @@
-package com.jeeplus.sys.service.mapstruct;
-
-import com.jeeplus.core.mapstruct.EntityWrapper;
-import com.jeeplus.sys.domain.UserProject;
-import com.jeeplus.sys.service.dto.UserProjectDTO;
-import org.mapstruct.Mapper;
-import org.mapstruct.ReportingPolicy;
-import org.mapstruct.factory.Mappers;
-
-@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE, uses = {})
-public interface UserProjectWrapper extends EntityWrapper<UserProjectDTO, UserProject> {
-
-    UserProjectWrapper INSTANCE = Mappers.getMapper(UserProjectWrapper.class);
-}