فهرست منبع

20220901
项目管理

sunruiqi 2 سال پیش
والد
کامیت
5617c6d5b6

+ 5 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/oss/mapper/OssServiceMapper.java

@@ -4,4 +4,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.jeeplus.test.oss.domain.WorkAttachment;
 
 public interface OssServiceMapper extends BaseMapper<WorkAttachment> {
+
+    Integer selectSaveById(String id);
+
+    void updateProjectRecord(String id);
+
 }

+ 34 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/oss/mapper/xml/OssServiceMapper.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.oss.mapper.OssServiceMapper">
+
+  <select id="selectSaveById" resultType="java.lang.Integer">
+    SELECT
+        COUNT( 0 )
+    FROM
+        work_attachment
+    WHERE
+        del_flag = 0
+        AND attachment_id = (
+        SELECT
+            attachment_id
+        FROM
+            work_attachment
+    WHERE
+        id = #{id})
+  </select>
+
+  <update id="updateProjectRecord">
+    UPDATE project_records
+    SET file_upload_type = 0
+    WHERE
+        id = (
+        SELECT
+            attachment_id
+        FROM
+            work_attachment
+    WHERE
+        id = #{id})
+  </update>
+
+</mapper>

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

@@ -10,6 +10,8 @@ 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.projectRecords.domain.Project;
+import com.jeeplus.test.projectRecords.mapper.ProjectMapper;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.flowable.editor.language.json.converter.util.CollectionUtils;
@@ -111,6 +113,11 @@ public class OssService {
         Map<String,Object> map = new HashMap<>();
         map.put("id", id);
         int i = ossServiceMapper.deleteByMap(map);
+        //项目文件删除后处理项目文件状态
+        Integer num = ossServiceMapper.selectSaveById(id);
+        if (num == 0) {
+            ossServiceMapper.updateProjectRecord(id);
+        }
         log.info("删除操作完成,共删除{}条数据" , i);
     }
 

+ 36 - 7
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/controller/ProjectController.java

@@ -25,6 +25,7 @@ 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.test.projectRecords.service.dto.FileUploadListDTO;
 import com.jeeplus.test.projectRecords.service.dto.ProjectDTO;
 import com.jeeplus.test.projectRecords.service.mapstruct.ProjectWrapper;
 import io.swagger.annotations.Api;
@@ -160,6 +161,12 @@ public class ProjectController {
                     return ResponseEntity.badRequest().body("不可使用已存在的文号");
                 }
             }
+            //文件状态
+            if (CollectionUtils.isNotEmpty(projectDTO.getWorkAttachments())) {
+                pro.setFileUploadType("1");
+            } else {
+                pro.setFileUploadType("0");
+            }
 
             projectService.save(pro);//新增
         }else{
@@ -173,8 +180,12 @@ public class ProjectController {
                     }
                 }
             }
-
             LambdaUpdateWrapper<Project> wrapper = projectService.getLambdaUpdateWrapper(projectDTO);
+            if (CollectionUtils.isNotEmpty(projectDTO.getWorkAttachments())) {
+                wrapper.set(Project::getFileUploadType, "1");
+            } else {
+                wrapper.set(Project::getFileUploadType, "0");
+            }
             projectService.update (pro,wrapper);//修改
         }
         //项目id处理
@@ -184,7 +195,6 @@ public class ProjectController {
             //oss上传文件相关
             ossService.saveMsg(projectDTO.getWorkAttachments());
         }
-
         return ResponseEntity.ok ("保存项目成功");
     }
 
@@ -605,9 +615,6 @@ public class ProjectController {
             String time=formatter.format(userProjectDTO.getReimbursementDate());
             userProjectDTO.setReimbursementDateUi(time);
         }
-
-
-
         return userProjectDTO;
     }
 
@@ -660,7 +667,29 @@ public class ProjectController {
 
     @GetMapping("proportion")
     @ApiOperation(value = "项目完成比例")
-    public String proportion(String itemType) {
-        return projectService.proportion(itemType);
+    public String proportion(Project project) throws Exception{
+        QueryWrapper<Project> queryWrapper = QueryWrapperGenerator.buildQueryCondition(project, Project.class);
+        return projectService.proportion(queryWrapper);
+    }
+
+    /**
+     * 导出项目数据
+     *
+     * @param projectDTO
+     * @param response
+     * @throws Exception
+     */
+    @GetMapping("exportFileUploadList")
+    @ApiOperation(value = "导出项目文件上传比例excel")
+    public void exportFileUploadList(ProjectDTO projectDTO, HttpServletResponse response) throws Exception {
+        Project project = ProjectWrapper.INSTANCE.toEntity (projectDTO);
+        QueryWrapper<Project> queryWrapper = QueryWrapperGenerator.buildQueryCondition( project, Project.class );
+        List<FileUploadListDTO> list = projectService.exportFileUploadList(queryWrapper);
+        if(ProjectTypeEnum.ASSESS.getValue().equals(projectDTO.getItemType())){
+            EasyPoiUtil.exportExcel(list, "评估项目上传比例报告",  "评估项目上传比例报告", FileUploadListDTO.class, "", response );
+        }
+        if(ProjectTypeEnum.CONSULTATION.getValue().equals(projectDTO.getItemType())){
+            EasyPoiUtil.exportExcel(list, "咨询项目上传比例报告",  "咨询项目上传比例报告", FileUploadListDTO.class, "", response );
+        }
     }
 }

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

@@ -7,10 +7,13 @@ 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 com.jeeplus.test.projectRecords.service.dto.FileUploadListDTO;
 import liquibase.pro.packaged.S;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 @Mapper
 public interface ProjectMapper extends BaseMapper<Project> {
 
@@ -22,5 +25,9 @@ public interface ProjectMapper extends BaseMapper<Project> {
 
     public IPage<Project> findList(Page<Project> page, @Param(Constants.WRAPPER) QueryWrapper queryWrapper);
 
-    public String proportion(String itemType);
+    public Integer proportion(@Param(Constants.WRAPPER) QueryWrapper queryWrapper);
+
+    public List<FileUploadListDTO> projectAllList(@Param(Constants.WRAPPER) QueryWrapper queryWrapper);
+
+    public List<FileUploadListDTO> projectList(@Param(Constants.WRAPPER) QueryWrapper queryWrapper);
 }

+ 29 - 7
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/mapper/xml/ProjectMapper.xml

@@ -172,15 +172,37 @@
     order by pr.create_date desc
   </select>
 
-  <select id="proportion" resultType="java.lang.String">
+  <select id="proportion" resultType="java.lang.Integer">
     SELECT
-        CONVERT((COUNT(1)/(SELECT COUNT(1) FROM project_records WHERE del_flag = 0 AND item_type = #{itemType})*100), DECIMAL(10,2)) AS num
+        count(1)
     FROM
-        project_records
-    WHERE
-        del_flag = 0
-		AND item_type = #{itemType}
-		AND file_upload_type = '1'
+        project_records pr
+    left join sys_user su on pr.project_head = su.id
+    ${ew.customSqlSegment}
+  </select>
+
+  <select id="projectAllList" resultType="com.jeeplus.test.projectRecords.service.dto.FileUploadListDTO">
+    SELECT
+	    su.id,
+	    su.`name`,
+	    COUNT(pr.project_head) AS allnum
+    FROM
+	    sys_user su
+	LEFT JOIN project_records pr ON su.id = pr.project_head AND pr.item_type = '1' AND pr.del_flag = 0
+	WHERE
+	su.del_flag = 0
+	GROUP BY su.id
+  </select>
+
+  <select id="projectList" resultType="com.jeeplus.test.projectRecords.service.dto.FileUploadListDTO">
+    SELECT
+        su.`name`,
+        COUNT(1) AS num
+    FROM
+        project_records pr
+        LEFT JOIN sys_user su ON pr.project_head = su.id
+        ${ew.customSqlSegment}
+        GROUP BY su.id
   </select>
 
 </mapper>

+ 49 - 4
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/service/ProjectService.java

@@ -1,20 +1,28 @@
 package com.jeeplus.test.projectRecords.service;
 
+import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 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.security.util.SecurityUtils;
+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;
+import com.jeeplus.test.projectRecords.service.dto.FileUploadListDTO;
 import com.jeeplus.test.projectRecords.service.dto.ProjectDTO;
+import com.mchange.lang.IntegerUtils;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
+import java.util.List;
 
 @Service
 @Transactional
@@ -117,11 +125,48 @@ public class ProjectService extends ServiceImpl<ProjectMapper, Project> {
 
     /**
      * 项目文件上传完成比例
-     * @param itemType
+     * @param queryWrapper
      * @return
      */
-    public String proportion(String itemType) {
-        String s = projectMapper.proportion(itemType);
-        return s+"%";
+    public String proportion(QueryWrapper queryWrapper) {
+        // 排除已经删除
+        queryWrapper.eq ("pr.del_flag", 0 );
+        int all = projectMapper.proportion(queryWrapper);
+        if (all == 0) {
+            return "0.00%";
+        }
+        queryWrapper.eq("pr.file_upload_type", "1");
+        int on = projectMapper.proportion(queryWrapper);
+        DecimalFormat df = new DecimalFormat("0.00");
+        String s = df.format((float)on*100/(float)all) + "%";
+        return s;
+    }
+
+    public List<FileUploadListDTO> exportFileUploadList(QueryWrapper queryWrapper) {
+        queryWrapper.eq("su.del_flag", 0);
+        List<FileUploadListDTO> allList = projectMapper.projectAllList(queryWrapper);
+        queryWrapper.eq("pr.file_upload_type", "1");
+        List<FileUploadListDTO> list = projectMapper.projectList(queryWrapper);
+        if (CollectionUtil.isNotEmpty(allList) && CollectionUtil.isNotEmpty(list)) {
+            DecimalFormat df = new DecimalFormat("0.00");
+            for (FileUploadListDTO dto : allList) {
+                for (FileUploadListDTO i : list) {
+                    if (dto.getName().equals(i.getName())) {
+                        dto.setNum(i.getNum());
+                        String s = df.format((float) i.getNum() * 100 / (float) dto.getAllNum());
+                        dto.setProportion(s+"%");
+                    }
+                }
+            }
+            allList.stream().forEach(i -> {
+                if (StringUtils.isEmpty(i.getProportion())) {
+                    i.setProportion("0.00%");
+                }
+                if (i.getNum() == null) {
+                    i.setNum(0);
+                }
+            });
+        }
+        return allList;
     }
 }

+ 34 - 0
jeeplus-module/jeeplus-test/src/main/java/com/jeeplus/test/projectRecords/service/dto/FileUploadListDTO.java

@@ -0,0 +1,34 @@
+package com.jeeplus.test.projectRecords.service.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.jeeplus.core.service.dto.BaseDTO;
+import lombok.Data;
+
+@Data
+public class FileUploadListDTO extends BaseDTO {
+
+    /**
+     *姓名
+     */
+    @Excel(name = "姓名", width = 30)
+    private String name;
+
+    /**
+     * 项目总量
+     */
+    @Excel(name = "项目总量", width = 20)
+    private Integer allNum;
+
+    /**
+     * 完成数量
+     */
+    @Excel(name = "完成数量", width = 20)
+    private Integer num;
+
+    /**
+     * 完成比例
+     */
+    @Excel(name = "完成比例", width = 20)
+    private String proportion;
+
+}