diff --git a/Rk-progect/ruoyi-admin/target/maven-archiver/pom.properties b/Rk-progect/ruoyi-admin/target/maven-archiver/pom.properties index d43cb1c6..c3ea02ca 100644 --- a/Rk-progect/ruoyi-admin/target/maven-archiver/pom.properties +++ b/Rk-progect/ruoyi-admin/target/maven-archiver/pom.properties @@ -1,4 +1,4 @@ -#Created by Apache Maven 3.3.9 +#Created by Apache Maven 3.6.3 version=3.1.0 groupId=com.ruoyi artifactId=ruoyi-admin diff --git a/Rk-progect/ruoyi-project/src/main/java/com/ruoyi/project/controller/PaProjectInfoController.java b/Rk-progect/ruoyi-project/src/main/java/com/ruoyi/project/controller/PaProjectInfoController.java index 4635b3ed..63376aaf 100644 --- a/Rk-progect/ruoyi-project/src/main/java/com/ruoyi/project/controller/PaProjectInfoController.java +++ b/Rk-progect/ruoyi-project/src/main/java/com/ruoyi/project/controller/PaProjectInfoController.java @@ -1,6 +1,9 @@ package com.ruoyi.project.controller; +import java.io.IOException; import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.stream.Collectors; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; @@ -34,6 +37,8 @@ import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.common.core.page.TableDataInfo; import org.springframework.web.multipart.MultipartFile; +import static java.util.concurrent.Executors.newFixedThreadPool; + /** * 【请填写功能名称】Controller * @@ -86,7 +91,6 @@ public class PaProjectInfoController extends BaseController @GetMapping("/addAttachment") public AjaxResult addAttachment() { - try { paProjectInfoService.addAttachment(null); } catch (Exception e) { @@ -338,6 +342,13 @@ public class PaProjectInfoController extends BaseController return AjaxResult.success("成功导入"+size+"条数据!"+msg); } + + +// @PostMapping("") +// public AjaxResult add(MultipartFile file){ +// +// return AjaxResult.success(); +// } @GetMapping("/test") public AjaxResult getDic(){ Map map_type = getDictMap("pro_type"); diff --git a/Rk-progect/ruoyi-project/src/main/java/com/ruoyi/project/controller/UploadController.java b/Rk-progect/ruoyi-project/src/main/java/com/ruoyi/project/controller/UploadController.java index 05b8cda3..660e8d79 100644 --- a/Rk-progect/ruoyi-project/src/main/java/com/ruoyi/project/controller/UploadController.java +++ b/Rk-progect/ruoyi-project/src/main/java/com/ruoyi/project/controller/UploadController.java @@ -1,6 +1,8 @@ package com.ruoyi.project.controller; import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.utils.poi.ExcelUtilPL; +import com.ruoyi.project.domain.AttachmentExcel; import com.ruoyi.project.service.Export; import com.ruoyi.project.factory.ExportFactory; import com.ruoyi.project.service.*; @@ -13,6 +15,13 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import java.util.List; +import java.util.concurrent.ExecutorService; +import java.util.stream.Collectors; + +import static java.util.concurrent.Executors.newFixedThreadPool; + /** * @program: Rk-progect * @description: 文件上传 @@ -60,4 +69,5 @@ public class UploadController { Export projectExport = factory.getBean(ExportFactory.class).getExportMap(exportName); return projectExport.getTemplate(); } + } diff --git a/Rk-progect/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/PaProjectInfoServiceImpl.java b/Rk-progect/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/PaProjectInfoServiceImpl.java index 6df78392..71f9d16c 100644 --- a/Rk-progect/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/PaProjectInfoServiceImpl.java +++ b/Rk-progect/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/PaProjectInfoServiceImpl.java @@ -2,26 +2,32 @@ package com.ruoyi.project.service.impl; import java.io.File; import java.io.FileInputStream; +import java.io.IOException; import java.math.BigDecimal; import java.util.*; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Future; +import java.util.stream.Collectors; import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.TextTransformUtils; +import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.file.FileUploadUtils; +import com.ruoyi.common.utils.poi.ExcelUtilPL; import com.ruoyi.project.domain.*; import com.ruoyi.project.mapper.*; import com.ruoyi.project.service.IPaProjectInfoService; import org.apache.http.entity.ContentType; -import org.aspectj.weaver.ast.Var; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import static java.util.concurrent.Executors.newFixedThreadPool; + /** * 【请填写功能名称】Service业务层处理 * @@ -776,6 +782,123 @@ public class PaProjectInfoServiceImpl implements IPaProjectInfoService } return 0; } + + @Override + public String uploadAndSaveAttchment(MultipartFile file) { + ExecutorService executorService = newFixedThreadPool( 3); + try { + ExcelUtilPL attachmentExcel = new ExcelUtilPL(file.getInputStream()); + List reportSheet = attachmentExcel.importExcel("管理报告", AttachmentExcel.class); + String uploadPath = RuoYiConfig.getUploadPath(); + Map fileNames = DirAll(new File(uploadPath)).stream().collect(Collectors.toMap((s) -> { + String[] paths = s.split(File.separator); + return paths[paths.length-1]; + }, s -> s)); + + + //上传课题并保存 + executorService.submit(() -> { + List projectAttachments = (List) reportSheet.stream().filter(attachment -> attachment.equals("项目")).collect(Collectors.toList()); + projectAttachments.forEach(attachment -> { + PaProjectInfo paProjectInfo = new PaProjectInfo(); + paProjectInfo.setCode(attachment.getCode()); + List paProjectInfos = selectPaProjectInfoList(paProjectInfo); + if (!paProjectInfos.isEmpty() && paProjectInfos.size() > 0) { + if (!fileNames.get(attachment.getFilename()).isEmpty()) { + File uploadReusts = new File(fileNames.get(attachment.getFilename())); + try { + String path = FileUploadUtils.upload(uploadReusts); + PaAttachment pattachment = new PaAttachment(); + BeanUtils.copyProperties(attachment, pattachment); + pattachment.setFileSize(uploadReusts.length()); + pattachment.setExt(uploadReusts.getName().split(File.separator)[1]); + pattachment.setPath(path); + pattachment.setType("1"); + pattachment.setProjectId(paProjectInfos.get(0).getId()); + paAttachmentMapper.insertPaAttachment(pattachment); + } catch (IOException e) { + e.printStackTrace(); + } + } + + } + }); + }); + + executorService.submit(()->{ + List toPiclAttacgnebts = reportSheet.stream().filter(attachment -> attachment.equals("课题")).collect(Collectors.toList()); + toPiclAttacgnebts.forEach(attachment->{ + PaTopic topic=new PaTopic(); + topic.setCode(attachment.getCode()); + List topics = paTopicMapper.selectPaTopicList(topic); + if (!topics.isEmpty()&&topics.size()>0){ + if (!fileNames.get(attachment.getFilename()).isEmpty()){ + File uploadReusts=new File(fileNames.get(attachment.getFilename())); + try { + String path = FileUploadUtils.upload(uploadReusts); + PaAttachment pattachment = new PaAttachment(); + BeanUtils.copyProperties(attachment,pattachment); + pattachment.setFileSize(uploadReusts.length()); + pattachment.setExt(uploadReusts.getName().split(File.separator)[1]); + pattachment.setPath(path); + pattachment.setType("1"); + pattachment.setProjectId(topics.get(0).getProjectId()); + paAttachmentMapper.insertPaAttachment(pattachment); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + + }); + }); + executorService.submit(()->{ + List specialAttacgnebts = reportSheet.stream().filter(attachment -> attachment.equals("专题")).collect(Collectors.toList()); + specialAttacgnebts.forEach(attachment->{ + + PaSpecialSubject paSpecialSubject=new PaSpecialSubject(); + paSpecialSubject.setCode(attachment.getCode()); + List paSpecialSubjects = paSpecialSubjectMapper.selectPaSpecialSubjectList(paSpecialSubject); + if (!paSpecialSubjects.isEmpty()&&paSpecialSubjects.size()>0){ + PaTopic topic=new PaTopic(); + topic.setCode(attachment.getCode()); + PaTopic paTopic = paTopicMapper.selectPaTopicById(paSpecialSubjects.get(0).getTopicId()); + if (paTopic!=null){ + if (!fileNames.get(attachment.getFilename()).isEmpty()){ + File uploadReusts=new File(fileNames.get(attachment.getFilename())); + try { + String path = FileUploadUtils.upload(uploadReusts); + PaAttachment pattachment = new PaAttachment(); + BeanUtils.copyProperties(attachment,pattachment); + pattachment.setFileSize(uploadReusts.length()); + pattachment.setExt(uploadReusts.getName().split(File.separator)[1]); + pattachment.setPath(path); + pattachment.setType("1"); + pattachment.setProjectId(paTopic.getProjectId()); + paAttachmentMapper.insertPaAttachment(pattachment); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + + } + + + + }); + }); + } catch (IOException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } finally { + executorService.shutdown(); + } + return null; + } + public List DirAll(File dirFile) throws Exception { List dirAllStrArr=new ArrayList<>(); if (dirFile.exists()) { @@ -802,4 +925,8 @@ public class PaProjectInfoServiceImpl implements IPaProjectInfoService private String tranformStr(String str){ return TextTransformUtils.transformStr(str); } + + + + } diff --git a/Rk-progect/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ProjectExport.java b/Rk-progect/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ProjectExport.java index 2fa9eb87..5e87cd7c 100644 --- a/Rk-progect/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ProjectExport.java +++ b/Rk-progect/ruoyi-project/src/main/java/com/ruoyi/project/service/impl/ProjectExport.java @@ -31,6 +31,7 @@ public class ProjectExport extends DicMap { public AjaxResult addData(MultipartFile file, boolean updateSupport) { StringBuffer projectIds=null; List importInfoList = new ArrayList(); + String reponsMsg=""; try { ExcelUtilPL util = new ExcelUtilPL(file.getInputStream()); List projectList = util.importExcel("项目基本信息",PaProjectInfo.class); @@ -43,7 +44,7 @@ public class ProjectExport extends DicMap { Map map_yesNo = getDictMap("sys_yes_no"); projectIds = new StringBuffer(); - String msg=""; + if(projectList.isEmpty()){ return AjaxResult.success("没有需导入的数据!"); @@ -53,7 +54,7 @@ public class ProjectExport extends DicMap { //访问数据库判断唯一性 存在修改数据,不存在添加数据 paProjectInfo.setCode(p.getCode()); List prolist = paProjectInfoService.selectPaProjectInfoList(paProjectInfo); - if( prolist== null||projectList.size()==0){ + if( prolist== null||prolist.size()==0){ //项目编号 不存在 //字典项转换 if(StringUtils.isNotEmpty(p.getSecrecyLevel())){ @@ -80,23 +81,31 @@ public class ProjectExport extends DicMap { importInfoList.add(p); }else{ //项目编号已经存在 - projectIds.append(p.getId()+"、"); + projectIds.append(p.getId()); + projectIds.append("、"); } } } catch (IOException e) { e.printStackTrace(); - return AjaxResult.error("添加项目信息异常"); + return AjaxResult.error("添加项目信息异常,请检查sheet表名是否有《项目基本信息》以及字段是否准确"); } catch (Exception e) { e.printStackTrace(); - return AjaxResult.error("导入excel表名异常"); + return AjaxResult.error("导入excel表名异常,请检查sheet表名是否有《项目基本信息》以及字段是否准确"); } paProjectInfoService.importProject(importInfoList); - return AjaxResult.success(projectIds.toString()); + if (projectIds.toString().isEmpty()){ + reponsMsg="数据添已全部添加成功"; + }else { + String ids = projectIds.deleteCharAt(projectIds.length() - 1).toString(); + reponsMsg="导入失败数据的id为:"+ids; + } + return AjaxResult.success(reponsMsg); } @Override public AjaxResult modifyData(MultipartFile file, boolean updateSupport) { StringBuffer projectIds=null; + String reponsMsg=""; try { ExcelUtilPL util = new ExcelUtilPL(file.getInputStream()); List projectList = util.importExcel("项目基本信息",PaProjectInfo.class); @@ -109,7 +118,7 @@ public class ProjectExport extends DicMap { Map map_yesNo = getDictMap("sys_yes_no"); projectIds = new StringBuffer(); - String msg=""; + List importInfoList = new ArrayList(); if(projectList.isEmpty()){ return AjaxResult.success("没有需导入的数据!"); @@ -146,18 +155,24 @@ public class ProjectExport extends DicMap { paProjectInfoService.modifyProjectInfo(p); }else{ //项目编号不经存在 - - projectIds.append(p.getId()+"、"); + projectIds.append(p.getId()); + projectIds.append("、"); } } } catch (IOException e) { e.printStackTrace(); - return AjaxResult.error("添加项目信息异常"); + return AjaxResult.error("修改项目信息异常,请检查sheet表名是否有《项目基本信息》以及字段是否准确"); } catch (Exception e) { e.printStackTrace(); - return AjaxResult.error("导入excel表名异常"); + return AjaxResult.error("导入excel异常,请检查sheet表名是否有《项目基本信息》以及字段是否准确"); + } + if (projectIds.toString().isEmpty()){ + reponsMsg="数据添已全部修改成功"; + }else { + String ids = projectIds.deleteCharAt(projectIds.length() - 1).toString(); + reponsMsg="修改失败数据的id为:"+ids; } - return AjaxResult.success(projectIds.toString()); + return AjaxResult.success(reponsMsg); } @Override diff --git a/Rk-progect/ruoyi-project/src/main/resources/mapper/project/PaTopicMapper.xml b/Rk-progect/ruoyi-project/src/main/resources/mapper/project/PaTopicMapper.xml index fd923144..27cf82cb 100644 --- a/Rk-progect/ruoyi-project/src/main/resources/mapper/project/PaTopicMapper.xml +++ b/Rk-progect/ruoyi-project/src/main/resources/mapper/project/PaTopicMapper.xml @@ -278,7 +278,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and to_char(approval_date,'YYYY') >= 2016 ) - AND "dept_name" in (SELECT "name" FROM "PUBLIC"."pa_dept" WHERE "name"=#{depName}) + AND "DEPT_NAME" in (SELECT "name" FROM "PUBLIC"."pa_dept" WHERE "name"=#{depName}) AND is_ss='N' diff --git a/Rk-progect/ruoyi-project/target/classes/mapper/project/PaTopicMapper.xml b/Rk-progect/ruoyi-project/target/classes/mapper/project/PaTopicMapper.xml index fd923144..27cf82cb 100644 --- a/Rk-progect/ruoyi-project/target/classes/mapper/project/PaTopicMapper.xml +++ b/Rk-progect/ruoyi-project/target/classes/mapper/project/PaTopicMapper.xml @@ -278,7 +278,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and to_char(approval_date,'YYYY') >= 2016 ) - AND "dept_name" in (SELECT "name" FROM "PUBLIC"."pa_dept" WHERE "name"=#{depName}) + AND "DEPT_NAME" in (SELECT "name" FROM "PUBLIC"."pa_dept" WHERE "name"=#{depName}) AND is_ss='N'