RDServiceImpl.java 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  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.error.BusinessException;
  8. import com.goafanti.common.model.RdDetails;
  9. import com.goafanti.common.utils.StringUtils;
  10. import com.goafanti.common.utils.excel.NewExcelUtil;
  11. import com.goafanti.common.utils.pdf.PDFUtils;
  12. import com.goafanti.common.utils.word.WordUtils;
  13. import com.goafanti.core.mybatis.BaseMybatisDao;
  14. import com.goafanti.core.mybatis.page.Pagination;
  15. import com.goafanti.core.shiro.token.TokenManager;
  16. import org.springframework.beans.BeanUtils;
  17. import org.springframework.beans.factory.annotation.Autowired;
  18. import org.springframework.beans.factory.annotation.Value;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.web.multipart.MultipartFile;
  21. import javax.servlet.http.HttpServletResponse;
  22. import java.util.*;
  23. @Service
  24. public class RDServiceImpl extends BaseMybatisDao<RdDetailsMapper> implements RDService {
  25. @Autowired
  26. private RdDetailsMapper rdDetailsMapper;
  27. @Value(value = "${upload.path}")
  28. private final String uploadPath = null;
  29. @Override
  30. public int add(RdDetails in) {
  31. in.setAid(TokenManager.getAdminId());
  32. in.setStatus(0);
  33. return rdDetailsMapper.insertSelective(in);
  34. }
  35. @Override
  36. public int update(InputRdDetails in) {
  37. return rdDetailsMapper.updateByPrimaryKeySelective(in);
  38. }
  39. @Override
  40. public int updateBrowseOrDownload(Long id, Integer type) {
  41. return rdDetailsMapper.updateBrowseOrDownload(id,type);
  42. }
  43. @Override
  44. public boolean checkRdNo(String rdNo, Long id) {
  45. int i = rdDetailsMapper.checkRdNo(rdNo,id);
  46. if (i>0)return true;
  47. return false;
  48. }
  49. @Override
  50. public OutRdDetails details(Long id) {
  51. return rdDetailsMapper.details(id);
  52. }
  53. @Override
  54. public Pagination<OutExcelRdDetails> list(InputRdList in) {
  55. Map<String, Object> param = getParam(in);
  56. return (Pagination<OutExcelRdDetails>) findPage("RdDetailsList","RdDetailsCount",param,in.getPageNo(), in.getPageSize());
  57. }
  58. private Map<String, Object> getParam(InputRdList in) {
  59. Map<String,Object> param=new HashMap<>();
  60. param.put("RdStart", in.getRdStart());
  61. param.put("RdNo", in.getRdNo());
  62. param.put("RdEnd", in.getRdEnd());
  63. param.put("RdName", in.getRdName());
  64. param.put("consultantName", in.getConsultantName());
  65. if (TokenManager.hasRole(AFTConstants.SUPERADMIN)||TokenManager.hasRole(AFTConstants.APPROVAL_DECISION_ASSISTANT)||TokenManager.hasRole(AFTConstants.CED)){
  66. }else {
  67. param.put("aid", TokenManager.getAdminId());
  68. }
  69. return param;
  70. }
  71. @Override
  72. public Result exportList(InputRdList in, String uploadPath) {
  73. Map<String, Object> param = getParam(in);
  74. List<OutExcelRdDetails> list = (List<OutExcelRdDetails>) findList("RdDetailsList", param, 1, 999999);
  75. NewExcelUtil<OutExcelRdDetails> newExcelUtil=new NewExcelUtil<>(OutExcelRdDetails.class);
  76. return newExcelUtil.exportExcel(list,"研发活动信息",uploadPath);
  77. }
  78. @Override
  79. public Object batchList(MultipartFile file) {
  80. NewExcelUtil<InputExcelRdDetails> newExcelUtil=new NewExcelUtil<>(InputExcelRdDetails.class);
  81. List<InputExcelRdDetails> list = null;
  82. try {
  83. list = newExcelUtil.importExcel(file.getInputStream(),2);
  84. } catch (Exception e) {
  85. throw new BusinessException(e.getMessage());
  86. }
  87. //新增
  88. return insertBatchList(list);
  89. }
  90. private Map<String,Object> insertBatchList(List<InputExcelRdDetails> list) {
  91. String aid=TokenManager.getAdminId();
  92. Date date =new Date();
  93. Map<String,Object> map=new HashMap<>();
  94. int OkCount=0;
  95. int RdCount=0;
  96. int erCount=0;
  97. List<String>errors=new ArrayList<>();
  98. for (InputExcelRdDetails in : list) {
  99. if (StringUtils.isNotEmpty(in.getRdName())){
  100. RdCount++;
  101. OkCount++;
  102. RdDetails details = rdDetailsMapper.selectByRDName(in.getRdName(),in.getUserName());
  103. if (details==null){
  104. try {
  105. in.setStatus(1);
  106. in.setAid(aid);
  107. in.setCreateTime(date);
  108. rdDetailsMapper.insertSelective(in);
  109. }catch (Exception e ){
  110. int errorsCount=RdCount+3;
  111. erCount++;
  112. OkCount--;
  113. errors.add(String.format("%s.数据第%s行,项目名称[%s]数据异常!",erCount,errorsCount,in.getRdName()));
  114. }
  115. }else if (details.getAid().equals(TokenManager.getAdminId())) {
  116. try {
  117. in.setId(details.getId());
  118. rdDetailsMapper.updateByPrimaryKeySelective(in);
  119. }catch (Exception e ){
  120. int errorsCount=RdCount+3;
  121. erCount++;
  122. OkCount--;
  123. errors.add(String.format("%s.数据第%s行,项目名称[%s]数据更新异常!",erCount,errorsCount,in.getRdName()));
  124. }
  125. }else {
  126. int errorsCount=RdCount+3;
  127. erCount++;
  128. OkCount--;
  129. errors.add(String.format("%s.数据第%s行,公司名称[%s]项目名称[%s]已被其他管理员录入!",erCount,errorsCount,in.getUserName(),in.getRdName()));
  130. }
  131. }
  132. }
  133. // if (relust.size()>0)insertBatch(relust);
  134. map.put("OK",OkCount);
  135. map.put("ERROR",errors);
  136. return map;
  137. }
  138. private void insertBatch(List<InputExcelRdDetails> relust) {
  139. List<InputExcelRdDetails> list=new ArrayList<>();
  140. for (int i = 0; i < relust.size(); i++) {
  141. list.add(relust.get(i));
  142. if (50 == list.size() || i == relust.size() - 1) {
  143. if (list.size() > 0) rdDetailsMapper.insertBatch(list);
  144. list.clear();
  145. }
  146. }
  147. }
  148. @Override
  149. public void pushDownloadDetailsWord(Long id, HttpServletResponse response) {
  150. OutWordRdDetails data = getOutWordRdDetails(id);
  151. WordUtils wordUtils=new WordUtils();
  152. wordUtils.pushWord(data,response,uploadPath);
  153. }
  154. @Override
  155. public void pushDownloadDetailsPDF(Long id, HttpServletResponse response) {
  156. OutWordRdDetails data = getOutWordRdDetails(id);
  157. PDFUtils pdfUtils=new PDFUtils();
  158. pdfUtils.pushRd(data,response,uploadPath);
  159. }
  160. private OutWordRdDetails getOutWordRdDetails(Long id) {
  161. OutRdDetails bo = rdDetailsMapper.details(id);
  162. // rdDetailsMapper.updateBrowseOrDownload(id, 1);
  163. OutWordRdDetails data = new OutWordRdDetails();
  164. BeanUtils.copyProperties(bo, data);
  165. if (bo.getRdStartStr() != null && bo.getRdEndStr() != null) {
  166. data.setStartEndTime(bo.getRdStartStr() + "~" + bo.getRdEndStr());
  167. } else {
  168. data.setStartEndTime("");
  169. }
  170. return data;
  171. }
  172. }