RDServiceImpl.java 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. package com.goafanti.RD.service.impl;
  2. import com.goafanti.RD.bo.*;
  3. import com.goafanti.RD.service.RDService;
  4. import com.goafanti.common.bo.Result;
  5. import com.goafanti.common.constant.AFTConstants;
  6. import com.goafanti.common.dao.RdDetailsMapper;
  7. import com.goafanti.common.model.RdDetails;
  8. import com.goafanti.common.utils.DateUtils;
  9. import com.goafanti.common.utils.excel.FileUtils;
  10. import com.goafanti.common.utils.excel.NewExcelUtil;
  11. import com.goafanti.common.utils.word.WordUtils;
  12. import com.goafanti.core.mybatis.BaseMybatisDao;
  13. import com.goafanti.core.mybatis.page.Pagination;
  14. import com.goafanti.core.shiro.token.TokenManager;
  15. import com.itextpdf.text.*;
  16. import com.itextpdf.text.pdf.*;
  17. import org.springframework.beans.BeanUtils;
  18. import org.springframework.beans.factory.annotation.Autowired;
  19. import org.springframework.beans.factory.annotation.Value;
  20. import org.springframework.http.MediaType;
  21. import org.springframework.stereotype.Service;
  22. import org.springframework.web.multipart.MultipartFile;
  23. import javax.servlet.http.HttpServletResponse;
  24. import java.io.*;
  25. import java.util.*;
  26. import java.util.List;
  27. @Service
  28. public class RDServiceImpl extends BaseMybatisDao<RdDetailsMapper> implements RDService {
  29. @Autowired
  30. private RdDetailsMapper rdDetailsMapper;
  31. @Value(value = "${upload.path}")
  32. private final String uploadPath = null;
  33. @Override
  34. public int add(RdDetails in) {
  35. in.setAid(TokenManager.getAdminId());
  36. in.setStatus(0);
  37. return rdDetailsMapper.insertSelective(in);
  38. }
  39. @Override
  40. public int update(InputRdDetails in) {
  41. return rdDetailsMapper.updateByPrimaryKeySelective(in);
  42. }
  43. @Override
  44. public int updateBrowseOrDownload(Long id, Integer type) {
  45. return rdDetailsMapper.updateBrowseOrDownload(id,type);
  46. }
  47. @Override
  48. public boolean checkRdNo(String rdNo, Long id) {
  49. int i = rdDetailsMapper.checkRdNo(rdNo,id);
  50. if (i>0)return true;
  51. return false;
  52. }
  53. @Override
  54. public OutRdDetails details(Long id) {
  55. return rdDetailsMapper.details(id);
  56. }
  57. @Override
  58. public Pagination<OutExcelRdDetails> list(InputRdList in) {
  59. Map<String, Object> param = getParam(in);
  60. return (Pagination<OutExcelRdDetails>) findPage("RdDetailsList","RdDetailsCount",param,in.getPageNo(), in.getPageSize());
  61. }
  62. private Map<String, Object> getParam(InputRdList in) {
  63. Map<String,Object> param=new HashMap<>();
  64. param.put("RdStart", in.getRdStart());
  65. param.put("RdEnd", in.getRdStart());
  66. param.put("RdName", in.getRdName());
  67. if (TokenManager.hasRole(AFTConstants.SUPERADMIN)||TokenManager.hasRole(AFTConstants.APPROVAL_DECISION_AUDITOR)||TokenManager.hasRole(AFTConstants.CED)){
  68. }else {
  69. param.put("aid", TokenManager.getAdminId());
  70. }
  71. return param;
  72. }
  73. @Override
  74. public Result exportList(InputRdList in, String uploadPath) {
  75. Map<String, Object> param = getParam(in);
  76. List<OutExcelRdDetails> list = (List<OutExcelRdDetails>) findList("RdDetailsList", param, 1, 9999);
  77. NewExcelUtil<OutExcelRdDetails> newExcelUtil=new NewExcelUtil<>(OutExcelRdDetails.class);
  78. return newExcelUtil.exportExcel(list,"研发活动信息",uploadPath);
  79. }
  80. @Override
  81. public Object batchList(MultipartFile file) {
  82. NewExcelUtil<InputExcelRdDetails> newExcelUtil=new NewExcelUtil<>(InputExcelRdDetails.class);
  83. List<InputExcelRdDetails> list = null;
  84. try {
  85. list = newExcelUtil.importExcel(file.getInputStream(),2);
  86. } catch (Exception e) {
  87. e.printStackTrace();
  88. }
  89. //新增
  90. return insertBatchList(list);
  91. }
  92. private Map<String,Object> insertBatchList(List<InputExcelRdDetails> list) {
  93. String aid=TokenManager.getAdminId();
  94. Date date =new Date();
  95. Map<String,Object> map=new HashMap<>();
  96. List<InputExcelRdDetails> relust= new ArrayList<>();
  97. List<String>errors=new ArrayList<>();
  98. for (InputExcelRdDetails in : list) {
  99. boolean falg = checkRdNo(in.getRdNo(),null);
  100. if (falg){
  101. errors.add(in.getRdNo());
  102. }else {
  103. relust.add(in);
  104. }
  105. }
  106. for (InputExcelRdDetails in : relust) {
  107. in.setStatus(1);
  108. in.setAid(aid);
  109. in.setCreateTime(date);
  110. }
  111. if (relust.size()>0)insertBatch(relust);
  112. map.put("OK",relust.size());
  113. map.put("ERROR",errors);
  114. return map;
  115. }
  116. private void insertBatch(List<InputExcelRdDetails> relust) {
  117. List<InputExcelRdDetails> list=new ArrayList<>();
  118. for (int i = 0; i < relust.size(); i++) {
  119. list.add(relust.get(i));
  120. if (50 == list.size() || i == relust.size() - 1) {
  121. if (list.size() > 0) rdDetailsMapper.insertBatch(list);
  122. list.clear();
  123. }
  124. }
  125. }
  126. @Override
  127. public void pushDownloadDetailsWord(Long id, HttpServletResponse response) {
  128. OutRdDetails bo = rdDetailsMapper.details(id);
  129. OutWordRdDetails data =new OutWordRdDetails();
  130. BeanUtils.copyProperties(bo,data);
  131. data.setStartEndTime(bo.getRdStartStr()+"~"+bo.getRdEndStr());
  132. WordUtils wordUtils=new WordUtils();
  133. try {
  134. wordUtils.download(response,data.getRdName(),data,uploadPath);
  135. } catch (IOException e) {
  136. e.printStackTrace();
  137. }
  138. }
  139. @Override
  140. public void pushDownloadDetailsPDF(Long id, HttpServletResponse response) {
  141. OutRdDetails bo = rdDetailsMapper.details(id);
  142. rdDetailsMapper.updateBrowseOrDownload(id, 1);
  143. OutWordRdDetails data = new OutWordRdDetails();
  144. BeanUtils.copyProperties(bo, data);
  145. data.setStartEndTime(bo.getRdStartStr() + "~" + bo.getRdEndStr());
  146. String tableName = data.getRdName();
  147. String url = uploadPath + "/tmp/RD_details_word_template.pdf";
  148. String realFileName = uploadPath+"/tmp/"+DateUtils.parseDateToStr(AFTConstants.YYYYMMDDHHMMSS_OUT, new Date()) + ".pdf";
  149. // response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE);
  150. Document document=new Document();
  151. try {
  152. PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(realFileName));
  153. document.open();
  154. document.add(new Paragraph("Hello Word"));
  155. document.close();
  156. } catch (DocumentException e) {
  157. e.printStackTrace();
  158. } catch (FileNotFoundException e) {
  159. e.printStackTrace();
  160. }
  161. }
  162. }