请求 GET
/pm/prj/menu/whsj/download/{affixId}
文件affixId多个id以逗号隔开。多个文件会以打包得形式。
POST
127.0.0.1:8400/pm/io/exportExcel/year-plan-table-workflow/report
参数
[{"org":"011","report":"年度计划表","fiscalYear":"2023","mofDivCode":"371000"}]
数据要以 [entity.object]为模板配置,而且下方必须空一行不然导入会报错
多个集合需要配置多个查询条件,配置得服务接口要跟代码里面得对应服务接口得代码
- package com.wenzheng.whsj.prj.export;
-
- import com.wenzheng.module.common.excel.suite.service.DataSourceProvider;
- import com.wenzheng.platform.core.bean.LoginUser;
- import com.wenzheng.whsj.prj.persistence.entity.YearPlanInfo;
- import com.wenzheng.whsj.prj.service.PmPrjConcentrateArgumentService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
-
- import java.util.List;
- import java.util.Map;
-
- /**
- *
- * 年度计划表导出
- *
- * @Author ZRP
- * @Date 2023/10/13 14:36
- */
- @Service(value = "gzw.yearPlanTableCloudProjectExport")
- public class YearPlanTableCloudProjectExport implements DataSourceProvider {
-
- @Autowired
- private PmPrjConcentrateArgumentService pmPrjConcentrateArgumentService;
-
-
- @Override
- public List
- LoginUser user = new LoginUser();
- user.setFiscalYear(param.get("fiscalYear").toString());
- user.setMofDivCode(param.get("mofDivCode").toString());
- user.setOrgCode(param.get("org").toString());
-
- YearPlanInfo yearPlanInfo = pmPrjConcentrateArgumentService.selectYearPlan(0, user, null, null, null, null);
- return yearPlanInfo.getCloudProjectList();
- }
- }
POST
http://10.30.4.96:8400/pm/io/exportExcel/year-plan-book-workflow/report

参数
[{"org":"011","report":"年度计划书","fiscalYear":"2023","mofDivCode":"371000"}]
- @Autowired
- private PmTemplateAffixService templateAffixService;
- @Autowired
- protected SuiteExportService exportService;
- @Autowired
- private OfficeService officeService;
- @Value("${base.uploadpath:upload}")
- private String uploadPath;
- @Autowired
- private PmBaseAffixMapper affixMapper;
- @Autowired
- private FundsAnalysisService fundsAnalysisService;
-
-
-
- @Override
- public ResponseEntity<byte[]> downloadWordReport(HttpServletRequest request, String id, Map
params, LoginUser user) throws Exception { - if (BaseUtils.isNull(id)) {
- return null;
- }
- if (org.apache.commons.collections4.MapUtils.isEmpty(params)) {
- params = new HashMap<>();
- params.put("fiscalYear", user.getFiscalYear());
- params.put("mofDivCode", user.getMofDivCode());
- }
- String useObject = exportService.getExpKeyByExportSwitch("year-plan-table-workflow-report", params, user.getFiscalYear(), user.getMofDivCode(), SuiteExportService.TYPE_WORD);
- // 取得模板
- List
lstTemplate = templateAffixService.selectByUseObject(useObject, user.getFiscalYear(), - user.getMofDivCode());
- if (lstTemplate == null || lstTemplate.isEmpty()) {
- throw new TemplateSetException("模板没定义");
- }
- PmTemplateAffix affixTemp = lstTemplate.get(0);
- byte[] data = affixTemp.getFileData();
- //查询数据
- Map
map = pmPrjMeasurementReferenceDao.selectById(id); - if (map == null) {
- throw new TemplateSetException("暂无当前数据");
- }
- map = initData(map, user, request);
- String prjName = map.get("prj_name").toString();
- String fileName = prjName + affixTemp.getFileName().substring(0, affixTemp.getFileName().indexOf(".")) + "." + affixTemp.getFileType();
-
-
- // 替换
- data = officeService.createDoc(data, map);
- createFile(data, map, lstTemplate.get(0), fileName);
-
-
-
- //如果是生成的,则直接返回 如果是下载用下面这些代码直接输出文件流
- HttpHeaders headers = new HttpHeaders();
- // 处理文件名编码问题
- String userAgent = request.getHeader("user-agent");
- if (HttpUtils.isMSBrowser(userAgent)) {
- // 如果是IE浏览器,则用URLEncode解析
- fileName = URLEncoder.encode(fileName, "UTF-8");
- fileName = fileName.replace("+", " ");
- } else {
- // 如果是谷歌、火狐则解析为ISO-8859-1
- fileName = new String(fileName.getBytes("gbk"), StandardCharsets.ISO_8859_1);
- }
- headers.set("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
- headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
- return new ResponseEntity<>(data, headers, HttpStatus.OK);
- }
-
-
-
- //创建文件出来,存入文件库 获得文件要下载文件id
- public String createFile(byte[] data, Map
map, PmTemplateAffix pmTemplateAffix, String fileName) { - String useObject = "yearPlanReport";
- DateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
- String dateStr = dateFormat.format(new Date());
- String uuidName = UUID.randomUUID().toString();
- String fileRealName = UUID.randomUUID().toString();
-
- File templateAffixFile = null;
- try {
- templateAffixFile = FileTool.fileToBytes(data, uploadPath + "/" + useObject + "/" + dateStr + "/", "/" + uuidName);
- } catch (Exception e) {
- System.err.println("===========>" + e.getMessage());
- }
- MultipartFile multipartFile = FileTool.getMultipartFile(templateAffixFile);
- PmBaseAffix affix = new PmBaseAffix();
- affix.setAffixId(UUID.randomUUID().toString());
- if (map.get("affix_id") != null) {
- affix.setPrjId(map.get("affix_id").toString());
- } else {
- affix.setPrjId(UUID.randomUUID().toString());
- }
- affix.setJobId(affix.getPrjId());
- affix.setUseObject(useObject);
- affix.setFileType(pmTemplateAffix.getFileType());
- affix.setFileSize(BaseUtils.sizeParse(multipartFile.getSize()));
- affix.setFileName(fileName);
- affix.setFileTitle(fileName);
- affix.setFileRealName(uuidName);
- affix.setFilePath(File.separator + affix.getUseObject() + File.separator + dateStr);
- affix.setUpdateTime(new Date());
- List
pmBaseAffix = pmPrjMeasurementReferenceDao.selectByPrjCode(affix.getPrjId(), useObject); - if (pmBaseAffix.size() == 0) {
- affixMapper.insert(affix);
- } else {
- affix.setAffixId(pmBaseAffix.get(0).getAffixId());
- affixMapper.updateByPrimaryKeySelective(affix);
- }
- return affix.getAffixId();
- }
-
-
用到的工具方法
- /**
- * 将Byte数组转换成文件
- *
- * @param bytes byte数组
- * @param filePath 文件路径 如 D:\\Users\\Downloads\\
- * @param fileName 文件名
- */
- public static File fileToBytes(byte[] bytes, String filePath, String fileName) {
- BufferedOutputStream bos = null;
- FileOutputStream fos = null;
- File file = null;
- try {
- file = new File(filePath + fileName);
- if (!file.getParentFile().exists()) {
- //文件夹不存在 生成
- file.getParentFile().mkdirs();
- }
- fos = new FileOutputStream(file);
- bos = new BufferedOutputStream(fos);
- bos.write(bytes);
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- if (bos != null) {
- try {
- bos.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- if (fos != null) {
- try {
- fos.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- return file;
- }
-
- public static MultipartFile getMultipartFile(File file) {
- FileInputStream fileInputStream = null;
- MultipartFile multipartFile = null;
- try {
- fileInputStream = new FileInputStream(file);
- multipartFile = new MockMultipartFile(file.getName(), file.getName(),
- ContentType.APPLICATION_OCTET_STREAM.toString(), fileInputStream);
- } catch (Exception e) {
- e.printStackTrace();
- }
- return multipartFile;
- }