package com.goafanti.RD.service.impl; import com.goafanti.RD.bo.*; import com.goafanti.RD.service.RDService; import com.goafanti.common.bo.Result; import com.goafanti.common.constant.AFTConstants; import com.goafanti.common.dao.RdDetailsMapper; import com.goafanti.common.model.RdDetails; import com.goafanti.common.utils.DateUtils; import com.goafanti.common.utils.excel.FileUtils; import com.goafanti.common.utils.excel.NewExcelUtil; import com.goafanti.common.utils.pdf.PDFUtils; import com.goafanti.common.utils.word.WordUtils; import com.goafanti.core.mybatis.BaseMybatisDao; import com.goafanti.core.mybatis.page.Pagination; import com.goafanti.core.shiro.token.TokenManager; import com.itextpdf.text.*; import com.itextpdf.text.pdf.*; import com.lowagie.text.rtf.RtfWriter2; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.http.MediaType; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.util.*; import java.util.List; @Service public class RDServiceImpl extends BaseMybatisDao implements RDService { @Autowired private RdDetailsMapper rdDetailsMapper; @Value(value = "${upload.path}") private final String uploadPath = null; @Override public int add(RdDetails in) { in.setAid(TokenManager.getAdminId()); in.setStatus(0); return rdDetailsMapper.insertSelective(in); } @Override public int update(InputRdDetails in) { return rdDetailsMapper.updateByPrimaryKeySelective(in); } @Override public int updateBrowseOrDownload(Long id, Integer type) { return rdDetailsMapper.updateBrowseOrDownload(id,type); } @Override public boolean checkRdNo(String rdNo, Long id) { int i = rdDetailsMapper.checkRdNo(rdNo,id); if (i>0)return true; return false; } @Override public OutRdDetails details(Long id) { return rdDetailsMapper.details(id); } @Override public Pagination list(InputRdList in) { Map param = getParam(in); return (Pagination) findPage("RdDetailsList","RdDetailsCount",param,in.getPageNo(), in.getPageSize()); } private Map getParam(InputRdList in) { Map param=new HashMap<>(); param.put("RdStart", in.getRdStart()); param.put("RdNo", in.getRdNo()); param.put("RdEnd", in.getRdEnd()); param.put("RdName", in.getRdName()); if (TokenManager.hasRole(AFTConstants.SUPERADMIN)||TokenManager.hasRole(AFTConstants.APPROVAL_DECISION_AUDITOR)||TokenManager.hasRole(AFTConstants.CED)){ }else { param.put("aid", TokenManager.getAdminId()); } return param; } @Override public Result exportList(InputRdList in, String uploadPath) { Map param = getParam(in); List list = (List) findList("RdDetailsList", param, 1, 9999); NewExcelUtil newExcelUtil=new NewExcelUtil<>(OutExcelRdDetails.class); return newExcelUtil.exportExcel(list,"研发活动信息",uploadPath); } @Override public Object batchList(MultipartFile file) { NewExcelUtil newExcelUtil=new NewExcelUtil<>(InputExcelRdDetails.class); List list = null; try { list = newExcelUtil.importExcel(file.getInputStream(),2); } catch (Exception e) { e.printStackTrace(); } //新增 return insertBatchList(list); } private Map insertBatchList(List list) { String aid=TokenManager.getAdminId(); Date date =new Date(); Map map=new HashMap<>(); List relust= new ArrayList<>(); Listerrors=new ArrayList<>(); for (InputExcelRdDetails in : list) { boolean falg = checkRdNo(in.getRdNo(),null); if (falg){ errors.add(in.getRdNo()); }else { relust.add(in); } } for (InputExcelRdDetails in : relust) { in.setStatus(1); in.setAid(aid); in.setCreateTime(date); } if (relust.size()>0)insertBatch(relust); map.put("OK",relust.size()); map.put("ERROR",errors); return map; } private void insertBatch(List relust) { List list=new ArrayList<>(); for (int i = 0; i < relust.size(); i++) { list.add(relust.get(i)); if (50 == list.size() || i == relust.size() - 1) { if (list.size() > 0) rdDetailsMapper.insertBatch(list); list.clear(); } } } @Override public void pushDownloadDetailsWord(Long id, HttpServletResponse response) { OutRdDetails bo = rdDetailsMapper.details(id); // rdDetailsMapper.updateBrowseOrDownload(id, 1); OutWordRdDetails data =new OutWordRdDetails(); BeanUtils.copyProperties(bo,data); if (bo.getRdStartStr()!=null&&bo.getRdEndStr()!=null){ data.setStartEndTime(bo.getRdStartStr()+"~"+bo.getRdEndStr()); }else { data.setStartEndTime(""); } String tableName = data.getRdName(); String realFileName = uploadPath+"/tmp/"+new Date().getTime() + ".doc"; String attName = data.getRdName()+new Date().getTime() + ".doc"; response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); WordUtils wordUtils=new WordUtils(); wordUtils.pushWord(data,response,tableName,attName,realFileName); } @Override public void pushDownloadDetailsPDF(Long id, HttpServletResponse response) { OutRdDetails bo = rdDetailsMapper.details(id); // rdDetailsMapper.updateBrowseOrDownload(id, 1); OutWordRdDetails data = new OutWordRdDetails(); BeanUtils.copyProperties(bo, data); if (bo.getRdStartStr()!=null&&bo.getRdEndStr()!=null){ data.setStartEndTime(bo.getRdStartStr()+"~"+bo.getRdEndStr()); }else { data.setStartEndTime(""); } String tableName = data.getRdName(); String realFileName = uploadPath+"/tmp/"+new Date().getTime() + ".pdf"; String attName = data.getRdName()+new Date().getTime() + ".pdf"; response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); PDFUtils pdfUtils=new PDFUtils(); pdfUtils.pushPDF(data,response,tableName,attName,realFileName); } }