Browse Source

项目储备

lichaoliu 4 years ago
parent
commit
c20ba3fa52

+ 2 - 2
src/main/java/com/migao/controller/ProjectStoreController.java

@@ -106,7 +106,7 @@ public class ProjectStoreController {
     }
 
     @ApiOperationSupport(order = 7)
-    @ApiOperation("根据查询详情")
+    @ApiOperation("根据id查询详情")
     @PostMapping(value = "/findById")
     public ResponseBean<ProjectQueryRes> findById(
             @RequestParam Integer id
@@ -118,7 +118,7 @@ public class ProjectStoreController {
     @ApiOperation("导入")
     @PostMapping(value = "/importData")
     public ResponseBean<?> importData(
-            @RequestParam("fileId") String fileId
+            @RequestParam("fileId") Integer fileId
     ) {
         return projectService.importData(fileId);
     }

+ 8 - 8
src/main/java/com/migao/entity/po/Project.java

@@ -53,17 +53,17 @@ public class Project implements Serializable {
     @Column(name = "two_classify", columnDefinition = "varchar(255) comment '二级分类'")
     private String twoClassify;
 
-    @Column(name = "total_investment",columnDefinition = "decimal comment '总投资(万元)'")
-    private BigDecimal totalInvestment;
+    @Column(name = "total_investment",columnDefinition = "varchar(255) comment '总投资(万元)'")
+    private String totalInvestment;
 
-    @Column(name = "total",columnDefinition = "decimal comment '合计(万元)'")
-    private BigDecimal total;
+    @Column(name = "total",columnDefinition = "varchar(255) comment '合计(万元)'")
+    private String total;
 
-    @Column(name = "capital",columnDefinition = "decimal comment '资本性(万元)'")
-    private BigDecimal capital;
+    @Column(name = "capital",columnDefinition = "varchar(255) comment '资本性(万元)'")
+    private String capital;
 
-    @Column(name = "cost",columnDefinition = "decimal comment '成本性(万元)'")
-    private BigDecimal cost;
+    @Column(name = "cost",columnDefinition = "varchar(255) comment '成本性(万元)'")
+    private String cost;
 
     @Column(name = "level", columnDefinition = "varchar(255) comment '重要等级'")
     private String level;

+ 100 - 0
src/main/java/com/migao/entity/vo/req/ImportProjectReq.java

@@ -0,0 +1,100 @@
+package com.migao.entity.vo.req;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.validation.constraints.NotEmpty;
+import javax.validation.constraints.NotNull;
+import java.time.LocalDateTime;
+
+/**
+ * @version 1.0
+ * @Author lcl
+ * @Date 2020/10/20 14:20
+ */
+@NoArgsConstructor
+@AllArgsConstructor
+@Builder
+@Data
+public class ImportProjectReq {
+
+    @ExcelProperty(index = 0)
+    @ApiModelProperty(value = "资本性(万元)")
+    @NotEmpty(message = "资本性(万元)不能为空")
+    private String capital;
+
+    @ExcelProperty(index = 1)
+    @ApiModelProperty(value = "项目内容")
+    @NotEmpty(message = "项目内容不能为空")
+    private String content;
+
+    @ExcelProperty(index = 2)
+    @ApiModelProperty(value = "成本性(万元)")
+    @NotEmpty(message = "成本性(万元)不能为空")
+    private String cost;
+
+    @ExcelProperty(index = 3)
+    @ApiModelProperty(value = "储备年份")
+    @NotNull(message = "储备年份不能为空")
+    private LocalDateTime createTime;
+
+    @ExcelProperty(index = 4)
+    @ApiModelProperty(value = "重要等级")
+    @NotEmpty(message = "重要等级不能为空")
+    private String level;
+
+    @ExcelProperty(index = 5)
+    @ApiModelProperty(value = "项目名称")
+    @NotEmpty(message = "项目名称不能为空")
+    private String name;
+
+    @ExcelProperty(index = 6)
+    @ApiModelProperty(value = "可研情况")
+    @NotEmpty(message = "可研情况不能为空")
+    private String progress;
+
+    @ExcelProperty(index = 7)
+    @ApiModelProperty(value = "项目分类")
+    @NotEmpty(message = "项目分类不能为空")
+    private String projectClassify;
+
+    @ExcelProperty(index = 8)
+    @ApiModelProperty(value = "项目专业分类")
+    @NotEmpty(message = "项目专业分类不能为空")
+    private String specialtyClassify;
+
+    @ExcelProperty(index = 9)
+    @ApiModelProperty(value = "合计(万元)")
+    @NotEmpty(message = "合计(万元)不能为空")
+    private String total;
+
+    @ExcelProperty(index = 10)
+    @ApiModelProperty(value = "总投资(万元)")
+    @NotEmpty(message = "总投资(万元)不能为空")
+    private String totalInvestment;
+
+    @ExcelProperty(index = 11)
+    @ApiModelProperty(value = "二级分类")
+    @NotEmpty(message = "二级分类不能为空")
+    private String twoClassify;
+
+    @ExcelProperty(index = 12)
+    @ApiModelProperty(value = "填报单位")
+    @NotEmpty(message = "填报单位不能为空")
+    private String unit;
+
+    @ExcelProperty(index = 13)
+    @ApiModelProperty(value = "下达状态")
+    @NotEmpty(message = "下达状态不能为空")
+    private String orderStatus;
+
+    @ExcelProperty(index = 14)
+    @ApiModelProperty(value = "储备状态")
+    @NotEmpty(message = "储备状态不能为空")
+    private String reserveStatus;
+
+}

+ 37 - 6
src/main/java/com/migao/entity/vo/res/ProjectQueryRes.java

@@ -1,10 +1,13 @@
 package com.migao.entity.vo.res;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
 import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import io.swagger.annotations.ApiModelProperty;
+
 import java.time.LocalDateTime;
 
 /**
@@ -18,41 +21,69 @@ import java.time.LocalDateTime;
 @Data
 public class ProjectQueryRes {
 
+    @ExcelIgnore
     @ApiModelProperty(value = "主键")
     private Integer id;
+
+    @ExcelProperty(value = "资本性(万元)")
     @ApiModelProperty(value = "资本性(万元)")
     private String capital;
+
+    @ExcelProperty(value = "项目内容")
     @ApiModelProperty(value = "项目内容")
     private String content;
+
+    @ExcelProperty(value = "成本性(万元)")
     @ApiModelProperty(value = "成本性(万元)")
     private String cost;
-    @ApiModelProperty(value = "储备年份")
-    private LocalDateTime createTime;
-    @ApiModelProperty(value = "")
-    private Integer createUserId;
-    @ApiModelProperty(value = "逻辑删除 0未删除 1已删除")
-    private Integer deleted;
+
+    @ExcelProperty(value = "重要等级")
     @ApiModelProperty(value = "重要等级")
     private String level;
+
+    @ExcelProperty(value = "项目名称")
     @ApiModelProperty(value = "项目名称")
     private String name;
+
+    @ExcelProperty(value = "可研情况")
     @ApiModelProperty(value = "可研情况")
     private String progress;
+
+    @ExcelProperty(value = "项目分类")
     @ApiModelProperty(value = "项目分类")
     private String projectClassify;
+
+    @ExcelProperty(value = "项目专业分类")
     @ApiModelProperty(value = "项目专业分类")
     private String specialtyClassify;
+
+    @ExcelProperty(value = "合计(万元)")
     @ApiModelProperty(value = "合计(万元)")
     private String total;
+
+    @ExcelProperty(value = "总投资(万元)")
     @ApiModelProperty(value = "总投资(万元)")
     private String totalInvestment;
+
+    @ExcelProperty(value = "二级分类")
     @ApiModelProperty(value = "二级分类")
     private String twoClassify;
+
+    @ExcelProperty(value = "填报单位")
     @ApiModelProperty(value = "填报单位")
     private String unit;
+
+    @ExcelProperty(value = "下达状态")
     @ApiModelProperty(value = "下达状态")
     private String orderStatus;
+
+    @ExcelProperty(value = "储备状态")
     @ApiModelProperty(value = "储备状态")
     private String reserveStatus;
 
+
+    @ExcelProperty(value = "创建时间")
+    @ApiModelProperty(value = "创建时间")
+   private LocalDateTime createTime;
+
 }

+ 9 - 0
src/main/java/com/migao/mapper/FileInfoRepository.java

@@ -0,0 +1,9 @@
+package com.migao.mapper;
+
+import com.migao.entity.po.FileInfo;
+import com.migao.entity.po.ProjectMember;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+
+public interface FileInfoRepository extends JpaRepository<FileInfo, Integer>, JpaSpecificationExecutor<FileInfo> {
+}

+ 1 - 1
src/main/java/com/migao/service/ProjectService.java

@@ -70,7 +70,7 @@ public interface ProjectService {
 
     ResponseBean<?> approve(Integer id, ExamineStatus status);
 
-    ResponseBean<?> importData(String fileId);
+    ResponseBean<?> importData(Integer fileId);
 
     ResponseBean<?> export(ProjectPageQueryReq projectPageQueryReq);
 

+ 61 - 15
src/main/java/com/migao/service/impl/ProjectServiceImpl.java

@@ -1,25 +1,31 @@
 package com.migao.service.impl;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.migao.config.constant.ExamineStatus;
 import com.migao.config.constant.FinancesStatus;
 import com.migao.config.constant.ProjectStatus;
+import com.migao.config.constant.SystemConstant;
+import com.migao.config.listener.ExcelListener;
+import com.migao.config.properties.SystemProperties;
 import com.migao.config.response.PageBean;
 import com.migao.config.response.ResponseBean;
 import com.migao.config.response.ResponseBuilder;
+import com.migao.entity.po.FileInfo;
 import com.migao.entity.po.Milestone;
 import com.migao.entity.po.Project;
 import com.migao.entity.vo.req.*;
 import com.migao.entity.vo.res.DictionaryListRes;
 import com.migao.entity.vo.res.ProjectQueryRes;
-import com.migao.mapper.DictionaryMapper;
-import com.migao.mapper.MilestoneMapper;
-import com.migao.mapper.ProjectMapper;
-import com.migao.mapper.ProjectRepository;
+import com.migao.mapper.*;
 import com.migao.service.ProjectService;
 import com.migao.util.EntityUtils;
+import com.migao.util.FileUtils;
 import com.migao.util.ProjectNoUtil;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -28,8 +34,11 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import javax.validation.constraints.NotEmpty;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
 
+@Slf4j
 @Service
 @Transactional(rollbackFor = {Exception.class})
 public class ProjectServiceImpl implements ProjectService {
@@ -43,7 +52,10 @@ public class ProjectServiceImpl implements ProjectService {
     private DictionaryMapper dictionaryMapper;
     @Resource
     private MilestoneMapper milestoneMapper;
-
+    @Resource
+    private FileInfoRepository fileInfoRepository;
+    @Resource
+    private SystemProperties systemProperties;
 
     /**
      * 增
@@ -70,7 +82,7 @@ public class ProjectServiceImpl implements ProjectService {
      */
     @Override
     public ResponseBean<PageBean<ProjectQueryRes>> pageQuery(ProjectPageQueryReq projectPageQueryReq) {
-        //1。分页查询所有供公司
+        //返回储备状态为拒绝/待审批
         Integer page = projectPageQueryReq.getPage();
         page = page == null ? 1 : page <= 0 ? 1 : page;
         Integer size = projectPageQueryReq.getSize();
@@ -84,7 +96,7 @@ public class ProjectServiceImpl implements ProjectService {
         if (StringUtils.isNotBlank(projectPageQueryReq.getOrderStatus())) {
             queryWrapper.eq(Project::getOrderStatus, projectPageQueryReq.getOrderStatus());
         }
-        queryWrapper.eq(Project::getReserveStatus, ProjectStatus.TO_APPROVAL.getName());
+        queryWrapper.eq(Project::getReserveStatus, ProjectStatus.TO_APPROVAL.getName()).or().eq(Project::getReserveStatus, ProjectStatus.REJECT.getName());
         Page<Project> all = projectMapper.selectPage(new Page<>(page, size), queryWrapper);
         return ResponseBuilder.ok(
                 all,
@@ -96,8 +108,6 @@ public class ProjectServiceImpl implements ProjectService {
                             .content(element.getContent())
                             .cost(String.valueOf(element.getCost()))
                             .createTime(element.getCreateTime())
-                            .createUserId(element.getCreateUserId())
-                            .deleted(element.getDeleted())
                             .level(element.getLevel())
                             .name(element.getName())
                             .progress(element.getProgress())
@@ -203,7 +213,6 @@ public class ProjectServiceImpl implements ProjectService {
             ResponseBuilder.fail("项目不存在");
         }
         if (status.equals(FinancesStatus.PASS)){
-            project.setOrderStatus(ProjectStatus.RESERVES_ISSUED.getName());
             project.setReserveStatus(ProjectStatus.APPROVE.getName());
             projectMapper.updateById(project);
         }else {
@@ -215,13 +224,52 @@ public class ProjectServiceImpl implements ProjectService {
     }
 
     @Override
-    public ResponseBean<?> importData(String fileId) {
-        return null;
+    public ResponseBean<?> importData(Integer fileId) {
+
+        //1.读取文件
+        List<ImportProjectReq> list = new ArrayList<>();
+        Optional<FileInfo> byId =
+                fileInfoRepository.findById(fileId);
+        byId.ifPresent(
+                fileInfo -> {
+                    EasyExcel.read(
+                            fileInfo.getDiskPath(),
+                            ImportProjectReq.class,
+                            new ExcelListener<>(list)
+                    ).sheet().doRead();
+                }
+        );
+        log.info("读取结果:{}", list.size());
+        //去除重复数据
+        list.forEach(
+                data -> {
+                    Project project = EntityUtils.copyProperties(data, Project.class);
+                    projectMapper.insert(project);
+                }
+        );
+        //手动提交
+        log.info("保存项目储备数量:{}", list.size());
+        return ResponseBuilder.ok(list.size());
     }
 
     @Override
     public ResponseBean<?> export(ProjectPageQueryReq projectPageQueryReq) {
-        return null;
+        List<ProjectQueryRes> data = pageQuery(projectPageQueryReq).getData().getRow();
+        String fileName = StringUtils.join(
+                FileUtils.getFileNo(), SystemConstant.EXCEL_SUFFIX
+        );
+        String filePath = StringUtils.join(
+                systemProperties.getFileStoreDirPath(), fileName
+        );
+        String fileUrl = StringUtils.join(
+                systemProperties.getDownloadPrefix(), fileName
+        );
+        ExcelWriter excelWriter = EasyExcel.write(filePath, ProjectQueryRes.class).build();
+        WriteSheet writeSheet = EasyExcel.writerSheet("项目储备数据").build();
+        excelWriter.write(data, writeSheet);
+        //关闭流
+        excelWriter.finish();
+        return ResponseBuilder.ok(fileUrl);
     }
 
     @Override
@@ -252,8 +300,6 @@ public class ProjectServiceImpl implements ProjectService {
                             .content(element.getContent())
                             .cost(String.valueOf(element.getCost()))
                             .createTime(element.getCreateTime())
-                            .createUserId(element.getCreateUserId())
-                            .deleted(element.getDeleted())
                             .level(element.getLevel())
                             .name(element.getName())
                             .progress(element.getProgress())

+ 0 - 2
src/main/java/com/migao/service/impl/PurchasingApprovalServiceImpl.java

@@ -72,8 +72,6 @@ public class PurchasingApprovalServiceImpl extends ServiceImpl<PurchasingApprova
                             .content(element.getContent())
                             .cost(String.valueOf(element.getCost()))
                             .createTime(element.getCreateTime())
-                            .createUserId(element.getCreateUserId())
-                            .deleted(element.getDeleted())
                             .level(element.getLevel())
                             .name(element.getName())
                             .progress(element.getProgress())