|
@@ -1,31 +1,43 @@
|
|
|
package com.jeeplus.psimanage.collect.controller;
|
|
package com.jeeplus.psimanage.collect.controller;
|
|
|
|
|
|
|
|
|
|
+import cn.hutool.extra.spring.SpringUtil;
|
|
|
|
|
+import com.alibaba.excel.EasyExcel;
|
|
|
|
|
+import com.alibaba.excel.ExcelWriter;
|
|
|
|
|
+import com.alibaba.excel.write.metadata.WriteSheet;
|
|
|
|
|
+import com.alibaba.excel.write.metadata.fill.FillConfig;
|
|
|
|
|
+import com.alibaba.excel.write.metadata.fill.FillWrapper;
|
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
+import com.jeeplus.common.TokenProvider;
|
|
|
import com.jeeplus.common.excel.EasyExcelUtils;
|
|
import com.jeeplus.common.excel.EasyExcelUtils;
|
|
|
import com.jeeplus.common.excel.ExcelOptions;
|
|
import com.jeeplus.common.excel.ExcelOptions;
|
|
|
import com.jeeplus.common.excel.annotation.ExportMode;
|
|
import com.jeeplus.common.excel.annotation.ExportMode;
|
|
|
import com.jeeplus.common.utils.ResponseUtil;
|
|
import com.jeeplus.common.utils.ResponseUtil;
|
|
|
|
|
+import com.jeeplus.flowable.feign.IFlowableApi;
|
|
|
import com.jeeplus.logging.annotation.ApiLog;
|
|
import com.jeeplus.logging.annotation.ApiLog;
|
|
|
import com.jeeplus.logging.constant.enums.LogTypeEnum;
|
|
import com.jeeplus.logging.constant.enums.LogTypeEnum;
|
|
|
import com.jeeplus.psimanage.collect.domain.PsiCollectBasicsReturnHi;
|
|
import com.jeeplus.psimanage.collect.domain.PsiCollectBasicsReturnHi;
|
|
|
|
|
+import com.jeeplus.psimanage.collect.domain.PsiCollectDetailedRecord;
|
|
|
import com.jeeplus.psimanage.collect.mapper.PsiCollectDetailedRecordMapper;
|
|
import com.jeeplus.psimanage.collect.mapper.PsiCollectDetailedRecordMapper;
|
|
|
import com.jeeplus.psimanage.collect.service.PsiCollectService;
|
|
import com.jeeplus.psimanage.collect.service.PsiCollectService;
|
|
|
-import com.jeeplus.psimanage.collect.service.dto.PsiCollectDto;
|
|
|
|
|
-import com.jeeplus.psimanage.collect.service.dto.PsiCollectExportDto;
|
|
|
|
|
-import com.jeeplus.psimanage.collect.service.dto.PsiWareHouseSummaryDto;
|
|
|
|
|
-import com.jeeplus.psimanage.collect.service.dto.TreeUserDto;
|
|
|
|
|
|
|
+import com.jeeplus.psimanage.collect.service.dto.*;
|
|
|
|
|
+import com.jeeplus.sys.feign.IUserApi;
|
|
|
|
|
+import com.jeeplus.sys.service.dto.UserDTO;
|
|
|
import com.jeeplus.utils.StringUtils;
|
|
import com.jeeplus.utils.StringUtils;
|
|
|
import io.swagger.annotations.Api;
|
|
import io.swagger.annotations.Api;
|
|
|
import io.swagger.annotations.ApiOperation;
|
|
import io.swagger.annotations.ApiOperation;
|
|
|
|
|
+import org.flowable.bpmn.model.FlowNode;
|
|
|
|
|
+import org.springframework.core.io.ClassPathResource;
|
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.http.ResponseEntity;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
-import java.util.HashMap;
|
|
|
|
|
-import java.util.List;
|
|
|
|
|
-import java.util.Map;
|
|
|
|
|
|
|
+import java.io.FileNotFoundException;
|
|
|
|
|
+import java.io.InputStream;
|
|
|
|
|
+import java.net.URLEncoder;
|
|
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -37,6 +49,8 @@ import java.util.stream.Collectors;
|
|
|
@RequestMapping(value = "/psi/collect")
|
|
@RequestMapping(value = "/psi/collect")
|
|
|
public class PsiCollectController {
|
|
public class PsiCollectController {
|
|
|
|
|
|
|
|
|
|
+ private static final String COLLECT_EXPORT_TEMPLATE = "dot/领用申请单.xlsx";
|
|
|
|
|
+
|
|
|
@Resource
|
|
@Resource
|
|
|
private PsiCollectService psiCollectService;
|
|
private PsiCollectService psiCollectService;
|
|
|
|
|
|
|
@@ -106,7 +120,7 @@ public class PsiCollectController {
|
|
|
@ApiOperation(value = "导出领用数据")
|
|
@ApiOperation(value = "导出领用数据")
|
|
|
@GetMapping("/exportFile")
|
|
@GetMapping("/exportFile")
|
|
|
public void exportFile(Page<PsiCollectDto> page, PsiCollectDto dto, ExcelOptions options, HttpServletResponse response) throws Exception{
|
|
public void exportFile(Page<PsiCollectDto> page, PsiCollectDto dto, ExcelOptions options, HttpServletResponse response) throws Exception{
|
|
|
- String fileName = options.getFilename();
|
|
|
|
|
|
|
+ String fileName = StringUtils.isBlank(options.getFilename()) ? "领用申请单" : options.getFilename();
|
|
|
String sheetName = options.getSheetName();
|
|
String sheetName = options.getSheetName();
|
|
|
List<PsiCollectExportDto> result;
|
|
List<PsiCollectExportDto> result;
|
|
|
if (ExportMode.current.equals(options.getMode())) {
|
|
if (ExportMode.current.equals(options.getMode())) {
|
|
@@ -123,6 +137,78 @@ public class PsiCollectController {
|
|
|
EasyExcelUtils.newInstance().exportExcel(result, sheetName, PsiCollectExportDto.class, fileName, null, response);
|
|
EasyExcelUtils.newInstance().exportExcel(result, sheetName, PsiCollectExportDto.class, fileName, null, response);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @ApiLog(value = "导出单条领用数据单", type = LogTypeEnum.EXPORT)
|
|
|
|
|
+ @ApiOperation(value = "导出单条领用数据单")
|
|
|
|
|
+ @GetMapping("/exportFileByTemplate")
|
|
|
|
|
+ public void exportFileByTemplate(PsiCollectDto dto, ExcelOptions options, HttpServletResponse response) throws Exception{
|
|
|
|
|
+ String fileName = options.getFilename();
|
|
|
|
|
+ //获取领用数据
|
|
|
|
|
+ PsiCollectDto byId = psiCollectService.exportFileByTemplate(dto);
|
|
|
|
|
+ List<PsiCollectExportTemplateDto> result = new ArrayList<>();
|
|
|
|
|
+ SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
|
|
+ List<PsiCollectDetailedRecord> recordList = byId.getRecordList();
|
|
|
|
|
+ recordList.forEach(record -> {
|
|
|
|
|
+ PsiCollectExportTemplateDto exportDto = new PsiCollectExportTemplateDto();
|
|
|
|
|
+ exportDto.setId(byId.getId());
|
|
|
|
|
+ exportDto.setCollectNo(byId.getCollectNo());
|
|
|
|
|
+ exportDto.setRecipientAgent(record.getRecipientAgent());
|
|
|
|
|
+ exportDto.setRecipientOffice(record.getRecipientOffice());
|
|
|
|
|
+ exportDto.setCollectType(record.getCollectType());
|
|
|
|
|
+ exportDto.setGoodsName(record.getGoodsName());
|
|
|
|
|
+ exportDto.setCollectNumber(psiCollectService.formatExportNumber(record.getCollectNumber()));
|
|
|
|
|
+ exportDto.setCompany(record.getCompany());
|
|
|
|
|
+ exportDto.setDetailRemarks(record.getRemarks());
|
|
|
|
|
+ exportDto.setCollectDate(byId.getCollectDate() == null ? "" : dateFormat.format(byId.getCollectDate()));
|
|
|
|
|
+ result.add(exportDto);
|
|
|
|
|
+ });
|
|
|
|
|
+ //获取流程审核信息
|
|
|
|
|
+ Map map = SpringUtil.getBean(IFlowableApi.class).historicTaskList2(byId.getProcInsId());
|
|
|
|
|
+ Map<String, Object> data = new HashMap<>();
|
|
|
|
|
+ //领用单基本信息
|
|
|
|
|
+ data.put("collectDate", byId.getCollectDate() == null ? "" : dateFormat.format(byId.getCollectDate()));
|
|
|
|
|
+ data.put("collectNo", byId.getCollectNo());
|
|
|
|
|
+ data.put("handledByName", StringUtils.isNotBlank(byId.getHandledByName()) ? byId.getHandledByName() : byId.getHandledBy());
|
|
|
|
|
+ data.put("handledByOfficeName", byId.getHandledByOfficeName());
|
|
|
|
|
+ data.put("remarks", byId.getRemarks());
|
|
|
|
|
+ //审批信息
|
|
|
|
|
+ if(map != null){
|
|
|
|
|
+ String status = String.valueOf(map.get("status"));
|
|
|
|
|
+ String firstAuditName = String.valueOf(map.get("firstAuditName"));
|
|
|
|
|
+ String auditTime = String.valueOf(map.get("auditTime"));
|
|
|
|
|
+ if(status.equals("同意")){
|
|
|
|
|
+ data.put("status","已同意");
|
|
|
|
|
+ }else{
|
|
|
|
|
+ data.put("status","");
|
|
|
|
|
+ }
|
|
|
|
|
+ data.put("auditUser",firstAuditName);
|
|
|
|
|
+ data.put("auditTime",auditTime);
|
|
|
|
|
+ }
|
|
|
|
|
+ response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
|
|
|
|
+ response.setCharacterEncoding("utf-8");
|
|
|
|
|
+ fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
|
|
|
|
|
+ response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
|
|
|
|
|
+
|
|
|
|
|
+ ClassPathResource templateResource = new ClassPathResource(COLLECT_EXPORT_TEMPLATE);
|
|
|
|
|
+ if (!templateResource.exists()) {
|
|
|
|
|
+ throw new FileNotFoundException("Excel模板不存在:" + COLLECT_EXPORT_TEMPLATE);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ try (InputStream templateInputStream = templateResource.getInputStream()) {
|
|
|
|
|
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream())
|
|
|
|
|
+ .withTemplate(templateInputStream)
|
|
|
|
|
+ .build();
|
|
|
|
|
+ try {
|
|
|
|
|
+ WriteSheet writeSheet = EasyExcel.writerSheet().build();
|
|
|
|
|
+ FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
|
|
|
|
|
+ excelWriter.fill(data, writeSheet);
|
|
|
|
|
+ //列表信息
|
|
|
|
|
+ excelWriter.fill(new FillWrapper("collectList", result), fillConfig, writeSheet);
|
|
|
|
|
+ } finally {
|
|
|
|
|
+ excelWriter.finish();
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 商品入库信息列表查询
|
|
* 商品入库信息列表查询
|
|
|
* @param dto
|
|
* @param dto
|