| | |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.github.pagehelper.PageHelper; |
| | | import com.whyc.constant.UserOperation; |
| | | import com.whyc.dto.FileDirPath; |
| | | import com.whyc.dto.Response; |
| | | import com.whyc.mapper.SoftwareMapper; |
| | | import com.whyc.pojo.DocUser; |
| | | import com.whyc.pojo.Software; |
| | | import com.whyc.util.ActionUtil; |
| | | import org.apache.poi.openxml4j.exceptions.InvalidFormatException; |
| | | import org.apache.poi.ss.usermodel.*; |
| | | import org.apache.poi.ss.usermodel.Cell; |
| | | import org.apache.poi.ss.usermodel.Sheet; |
| | | import org.apache.poi.ss.usermodel.Workbook; |
| | | import org.apache.poi.ss.usermodel.WorkbookFactory; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.io.IOException; |
| | | import java.io.InputStream; |
| | | import javax.servlet.http.HttpServletRequest; |
| | | import javax.servlet.http.HttpServletResponse; |
| | | import java.io.*; |
| | | import java.net.URLEncoder; |
| | | import java.text.ParseException; |
| | | import java.util.Date; |
| | | import java.util.LinkedList; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | @Service |
| | | public class SoftwareService { |
| | | @Autowired |
| | | @Autowired(required = false) |
| | | private SoftwareMapper mapper; |
| | | |
| | | public List<Software> excelParse(InputStream inputStream) throws IOException, InvalidFormatException { |
| | | @Autowired |
| | | private DocLogService logService; |
| | | |
| | | public List<Software> excelParse(InputStream inputStream) throws IOException, InvalidFormatException, ParseException { |
| | | List<Software> softwareList = new LinkedList<>(); |
| | | |
| | | Workbook workbook = null; |
| | |
| | | common.setFileName(sheet.getRow(2).getCell(2).getStringCellValue()); |
| | | String typeStr = sheet.getRow(3).getCell(2).getStringCellValue(); |
| | | String[] typeArr = typeStr.split(" "); |
| | | for (int i = 0; i < typeArr.length; i++) { |
| | | //excel单元格中的✔对应字符 |
| | | if(typeArr[i].contains("þ")){ |
| | | common.setType(typeArr[i].replace("þ","").trim()); |
| | | break; |
| | | } |
| | | } |
| | | common.setVersion(sheet.getRow(4).getCell(2).getStringCellValue()); |
| | | common.setBasedVersion(sheet.getRow(4).getCell(4).getStringCellValue()); |
| | | |
| | | common.setOwner(sheet.getRow(5).getCell(2).getStringCellValue()); |
| | | common.setFilingDate(sheet.getRow(5).getCell(4).getStringCellValue()); |
| | | //最后一行,取发布说明 |
| | | common.setReleaseNotes(sheet.getRow(lastRowNum).getCell(2).getStringCellValue()); |
| | | |
| | | //第8行开始,倒数第2行截止 |
| | | for (int i = 0; i < lastRowNum+1; i++) { |
| | | int applyModelNum = lastRowNum + 1 - 8; |
| | | for (int i = 0; i < applyModelNum; i++) { |
| | | Software software = new Software(); |
| | | BeanUtils.copyProperties(common,software); |
| | | //取第3列,第5列 |
| | | for (int j = 1; j < cellNum; j++) { |
| | | Row row = sheet.getRow(i); |
| | | Cell cell = row.getCell(j); |
| | | if(j == 2){ |
| | | cell.setCellType(Cell.CELL_TYPE_STRING); |
| | | } |
| | | String cellValue = cell.getStringCellValue(); |
| | | Cell cell = sheet.getRow(7 + i).getCell(2); |
| | | cell.setCellType(Cell.CELL_TYPE_STRING); |
| | | software.setApplyMaterialCode(cell.getStringCellValue()); |
| | | software.setApplyModel(sheet.getRow(7+i).getCell(4).getStringCellValue()); |
| | | |
| | | switch (j){ |
| | | |
| | | } |
| | | } |
| | | softwareList.add(software); |
| | | } |
| | | |
| | | softwareList = softwareList.stream().filter(software -> !software.getApplyMaterialCode().equals("")).collect(Collectors.toList()); |
| | | |
| | | return softwareList; |
| | | |
| | |
| | | //根据subcode查询软件列表 |
| | | public Response getSoftBySubCode(String subCode) { |
| | | QueryWrapper wrapper=new QueryWrapper(); |
| | | wrapper.eq("sub_code",subCode); |
| | | wrapper.eq("apply_material_code",subCode); |
| | | wrapper.orderByAsc("version"); |
| | | List list=mapper.selectList(wrapper); |
| | | return new Response().setII(1,list.size()>0,list,"软件信息返回"); |
| | | } |
| | | |
| | | |
| | | //根据软件名称实现软件下载 |
| | | public void downLoadSoftware(HttpServletRequest req, HttpServletResponse resp, int id) { |
| | | String fileDirName = FileDirPath.getFileDirName(); |
| | | QueryWrapper wrapper=new QueryWrapper(); |
| | | wrapper.eq("id",id); |
| | | wrapper.last("limit 1"); |
| | | Software software=mapper.selectOne(wrapper); |
| | | try { |
| | | // 转码防止乱码 |
| | | //resp.addHeader("Content-Disposition", "attachment;filename=" + new String(softwareName.getBytes("UTF-8"), "ISO8859-1")); |
| | | resp.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode ( software.getFileName(), "utf-8")); |
| | | OutputStream out = resp.getOutputStream(); |
| | | FileInputStream in = new FileInputStream(fileDirName+File.separator+software.getFileUrl()); |
| | | int len=0; |
| | | byte[] buffer =new byte[1024]; |
| | | //7. 将缓冲区中的数据输出 |
| | | while ((len=in.read(buffer))>0){ |
| | | out.write(buffer,0,len); |
| | | } |
| | | in.close(); |
| | | out.close(); |
| | | } catch (FileNotFoundException | UnsupportedEncodingException e) { |
| | | e.printStackTrace(); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | //记录日志 |
| | | DocUser docUser= ActionUtil.getUser(); |
| | | String operationDetail="具体软件名称为:"+software.getFileName(); |
| | | String opreationMsg="执行了软件下载操作"; |
| | | String terminalIp=req.getRemoteAddr(); |
| | | logService.recordOperationLog(docUser.getId(),docUser.getName(), UserOperation.TYPE_DOWNLOAD.getType(),new Date(),terminalIp,opreationMsg,operationDetail); |
| | | } |
| | | |
| | | } |