瀏覽代碼

项目功能的优化

lizhenhao 2 年之前
父節點
當前提交
39e1ff3af9

+ 8 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/oss/controller/OssFileController.java

@@ -2,6 +2,7 @@ package com.jeeplus.test.oss.controller;
 
 import com.jeeplus.test.oss.domain.WorkAttachment;
 import com.jeeplus.test.oss.service.OssService;
+import com.jeeplus.test.oss.service.dto.FileDetailDTO;
 import com.jeeplus.test.oss.service.dto.OssServiceDto;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -89,4 +90,11 @@ public class OssFileController {
         ossService.downByStream(key, fileName, response, request.getHeader("USER-AGENT"));
         return null;
     }
+
+    @GetMapping("/getFileSizeByUrl")
+    @ApiOperation(value = "根据文件路径获取文件信息")
+    public ResponseEntity<FileDetailDTO> getFileSizeByUrl(@RequestParam("url") String url) {
+        FileDetailDTO fileDetailDTO = ossService.getFileSizeByUrl(url);
+        return ResponseEntity.ok(fileDetailDTO);
+    }
 }

+ 19 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/oss/service/OssService.java

@@ -12,6 +12,7 @@ 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.FileDetailDTO;
 import com.jeeplus.test.oss.service.dto.OssServiceDto;
 import com.jeeplus.test.projectRecords.domain.Project;
 import com.jeeplus.test.projectRecords.mapper.ProjectMapper;
@@ -193,6 +194,24 @@ public class OssService extends ServiceImpl<OssServiceMapper,WorkAttachment> {
     }
 
     /**
+     * 根据文件路径获取文件信息
+     * @param url
+     * @return
+     */
+    public FileDetailDTO getFileSizeByUrl(String url){
+        FileDetailDTO fileDetailDTO = new FileDetailDTO();
+        fileDetailDTO.setUrl(getFileTemporaryLookUrl(aliyunUrl + url));
+        Long fileSizeBytes = ossClientService.getSimplifiedObjectMeta(aliyunUrl + url);
+        if(null != fileSizeBytes){
+            Double fileSize = (double)fileSizeBytes;
+            fileDetailDTO.setSize(String.format("%.2f", fileSize));
+        }else{
+            fileDetailDTO.setSize("0");
+        }
+        return fileDetailDTO;
+    }
+
+    /**
      * 阿里云获取临时文件查看url
      * @param url
      */

+ 11 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/oss/service/dto/FileDetailDTO.java

@@ -0,0 +1,11 @@
+package com.jeeplus.test.oss.service.dto;
+
+import lombok.Data;
+
+@Data
+public class FileDetailDTO {
+
+    private String url;
+
+    private String size;
+}

+ 154 - 4
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/controller/ProjectController.java

@@ -20,7 +20,6 @@ import com.jeeplus.sys.utils.StringUtils;
 import com.jeeplus.sys.utils.UserUtils;
 import com.jeeplus.test.oss.domain.WorkAttachment;
 import com.jeeplus.test.oss.service.OssService;
-import com.jeeplus.test.oss.service.dto.OssServiceDto;
 import com.jeeplus.test.projectRecords.constant.enums.ProjectStatusEnum;
 import com.jeeplus.test.projectRecords.constant.enums.ProjectTypeEnum;
 import com.jeeplus.test.projectRecords.constant.enums.YesOrNoEnum;
@@ -33,14 +32,12 @@ 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.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.ss.usermodel.WorkbookFactory;
 import org.flowable.editor.language.json.converter.util.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
@@ -53,12 +50,15 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.lang.reflect.Field;
 import java.lang.reflect.Type;
+import java.math.BigDecimal;
 import java.net.URLEncoder;
+import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Objects;
+import java.util.concurrent.atomic.AtomicReference;
 import java.util.stream.Collectors;
 
 
@@ -102,6 +102,7 @@ public class ProjectController {
         }
         List<Project> list = result.getRecords();
         for (Project info: list) {
+            info = changeBigDecimalEntity(info);
             if(info.getProjectHeadId().equals(currentUserDTO.getId()) || bmzrRoleFlag){
                 info.setPermissionFlag(true);
             }else{
@@ -121,6 +122,7 @@ public class ProjectController {
     @GetMapping("queryById")
     public ResponseEntity queryById(@RequestParam("id") String id) {
         Project userProject = projectService.selectByProjectId ( id );
+        userProject = changeBigDecimalEntity(userProject);
         return ResponseEntity.ok (userProject);
     }
 
@@ -137,7 +139,6 @@ public class ProjectController {
         Project project = ProjectWrapper.INSTANCE.toEntity (projectDTO);
         Project pro = projectService.projectDtoToDate(project,projectDTO);
         pro.setItemType(projectDTO.getItemType());
-
         if(StringUtils.isNotBlank(projectDTO.getProjectHead())){
             UserDTO projectHead = userService.get(projectDTO.getProjectHead());
             if(null == projectHead || StringUtils.isBlank(projectHead.getId())){
@@ -462,6 +463,9 @@ public class ProjectController {
 
             hashMap.put(project.getDocumentNum(),null);
 
+            //金额字段保留两位小数  四舍五入
+            project = changeBigDecimal(project);
+
             Project userProject = ProjectWrapper.INSTANCE.toEntity(project);
             //项目类型 1.评估项目  2.咨询项目
             userProject.setItemType(itemType);
@@ -472,6 +476,136 @@ public class ProjectController {
         return null;
     }
 
+    /**
+     * 金额字段保留两位小数  四舍五入
+     * @param project
+     * @return
+     */
+    public ProjectDTO changeBigDecimal(ProjectDTO project) {
+        //未报销金额
+        if(StringUtils.isNotBlank(project.getUnreimbursedAmount())){
+            try{
+            BigDecimal b = new BigDecimal(project.getUnreimbursedAmount()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            project.setUnreimbursedAmount(b.toString());
+            }catch (Exception e) {
+                project.setUnreimbursedAmount("");
+            }
+        }
+        //已报销金额
+        if(StringUtils.isNotBlank(project.getReimbursementAmount())){
+            try{
+            BigDecimal b = new BigDecimal(project.getReimbursementAmount()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            project.setReimbursementAmount(b.toString());
+            }catch (Exception e) {
+                project.setReimbursementAmount("");
+            }
+        }
+        //预估/实际收费(万元)
+        if(StringUtils.isNotBlank(project.getActualCharges())){
+            try{
+            BigDecimal b = new BigDecimal(project.getActualCharges()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            project.setActualCharges(b.toString());
+            }catch (Exception e) {
+                project.setActualCharges("");
+            }
+        }
+        //报告收费(元)
+        if(StringUtils.isNotBlank(project.getReportCharges())){
+            try{
+            BigDecimal b = new BigDecimal(project.getReportCharges()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            project.setReportCharges(b.toString());
+            }catch (Exception e) {
+                project.setReportCharges("");
+            }
+        }
+        //租金评估(万/年)
+        if(StringUtils.isNotBlank(project.getRentEvaluation())){
+            try{
+            BigDecimal b = new BigDecimal(project.getRentEvaluation()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            project.setRentEvaluation(b.toString());
+            }catch (Exception e) {
+                project.setRentEvaluation("");
+            }
+        }
+        //净资产评估
+        if(StringUtils.isNotBlank(project.getNetAssetsEvaluation())){
+            try{
+            BigDecimal b = new BigDecimal(project.getNetAssetsEvaluation()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            project.setNetAssetsEvaluation(b.toString());
+            }catch (Exception e) {
+                project.setNetAssetsEvaluation("");
+            }
+        }
+        //固定资产评估(万元)
+        if(StringUtils.isNotBlank(project.getFixedAssetsEvaluation())){
+            try{
+                BigDecimal b = new BigDecimal(project.getFixedAssetsEvaluation()).setScale(2, BigDecimal.ROUND_HALF_UP);
+                project.setFixedAssetsEvaluation(b.toString());
+            }catch (Exception e) {
+                project.setFixedAssetsEvaluation("");
+            }
+        }
+        //废旧物资评估(万元)
+        if(StringUtils.isNotBlank(project.getWaystEvaluation())){
+            try{
+            BigDecimal b = new BigDecimal(project.getWaystEvaluation()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            project.setWaystEvaluation(b.toString());
+            }catch (Exception e) {
+                project.setWaystEvaluation("");
+            }
+        }
+        return project;
+    }
+
+    /**
+     * 金额字段保留两位小数  四舍五入
+     * 实体类domain用
+     * @param project
+     * @return
+     */
+    public Project changeBigDecimalEntity(Project project) {
+        //未报销金额
+        if(StringUtils.isNotBlank(project.getUnreimbursedAmount())){
+            BigDecimal b = new BigDecimal(project.getUnreimbursedAmount()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            project.setUnreimbursedAmount(b.toString());
+        }
+        //已报销金额
+        if(StringUtils.isNotBlank(project.getReimbursementAmount())){
+            BigDecimal b = new BigDecimal(project.getReimbursementAmount()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            project.setReimbursementAmount(b.toString());
+        }
+        //预估/实际收费(万元)
+        if(StringUtils.isNotBlank(project.getActualCharges())){
+            BigDecimal b = new BigDecimal(project.getActualCharges()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            project.setActualCharges(b.toString());
+        }
+        //报告收费(元)
+        if(StringUtils.isNotBlank(project.getReportCharges())){
+            BigDecimal b = new BigDecimal(project.getReportCharges()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            project.setReportCharges(b.toString());
+        }
+        //租金评估(万/年)
+        if(StringUtils.isNotBlank(project.getRentEvaluation())){
+            BigDecimal b = new BigDecimal(project.getRentEvaluation()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            project.setRentEvaluation(b.toString());
+        }
+        //净资产评估
+        if(StringUtils.isNotBlank(project.getNetAssetsEvaluation())){
+            BigDecimal b = new BigDecimal(project.getNetAssetsEvaluation()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            project.setNetAssetsEvaluation(b.toString());
+        }
+        //固定资产评估(万元)
+        if(StringUtils.isNotBlank(project.getFixedAssetsEvaluation())){
+            BigDecimal b = new BigDecimal(project.getFixedAssetsEvaluation()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            project.setFixedAssetsEvaluation(b.toString());
+        }
+        //废旧物资评估(万元)
+        if(StringUtils.isNotBlank(project.getWaystEvaluation())){
+            BigDecimal b = new BigDecimal(project.getWaystEvaluation()).setScale(2, BigDecimal.ROUND_HALF_UP);
+            project.setWaystEvaluation(b.toString());
+        }
+        return project;
+    }
 
     /**
      * 下载项目导入模板
@@ -722,6 +856,22 @@ public class ProjectController {
         Project project = ProjectWrapper.INSTANCE.toEntity (projectDTO);
         QueryWrapper<Project> queryWrapper = QueryWrapperGenerator.buildQueryCondition( project, Project.class );
         List<FileUploadListDTO> list = projectService.exportFileUploadList(projectDTO);
+        //完成比例导出文档添加汇总列
+        AtomicReference<Integer> totalNum = new AtomicReference<>(0);
+        AtomicReference<Integer> endNum = new AtomicReference<>(0);
+        list.stream().forEach(item->{
+            totalNum.updateAndGet(v -> v + item.getAllNum());
+            endNum.updateAndGet(v -> v + item.getNum());
+        });
+        DecimalFormat df = new DecimalFormat("0.00");
+        String s = df.format((float) endNum.get() * 100 / (float) totalNum.get());
+        FileUploadListDTO fileUploadListDTO = new FileUploadListDTO();
+        fileUploadListDTO.setName("汇总");
+        fileUploadListDTO.setAllNum(totalNum.get());
+        fileUploadListDTO.setNum(endNum.get());
+        fileUploadListDTO.setProportion(s+"%");
+        list.add(fileUploadListDTO);
+
         if(ProjectTypeEnum.ASSESS.getValue().equals(projectDTO.getItemType())){
             if(StringUtils.isNotBlank(projectDTO.getYear())){
                 EasyPoiUtil.exportExcel(list, projectDTO.getYear() + "年评估项目上传比例报告",  "评估项目上传比例报告", FileUploadListDTO.class, "", response );

+ 6 - 1
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/roster/service/RosterBaseService.java

@@ -235,7 +235,12 @@ public class RosterBaseService extends ServiceImpl<RosterBaseMapper, RosterBase>
             }
             //保存附件
             if(CollectionUtil.isNotEmpty(rosterBaseDTO.getRosterFilesDTOList())){
-                List<String> collect = rosterBaseDTO.getRosterFilesDTOList().stream().map(RosterFilesDTO::getId).collect(Collectors.toList());
+                List<String> collect = rosterBaseDTO.getRosterFilesDTOList().stream().distinct().filter(item->{
+                    if(StringUtils.isNotBlank(item.getId())){
+                        return true;
+                    }
+                    return false;
+                }).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)){

二進制
jeeplus-web/src/main/resources/dot/项目导入模板.xlsx