vo:
package com.hikvision.sbm.comflowservice.noticeinternal.model.entity;
import cn.afterturn.easypoi.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
* 质量问题导出vo
*
*/
@Data
@ApiModel(value = "国内质量导出数据")
public class IssueQualityEsayExcelVo {
@ExcelProperty("问题编号")
@ApiModelProperty(hidden = true)
@ExcelIgnore
@JsonIgnore
private String questionNumber;
// 添加外部链接的字段
@ExcelProperty("问题编号")
@ColumnWidth(20)
@ApiModelProperty(value = "流程单号", hidden = true)
private WriteCellData<String> questionNumberUrl;
@ExcelProperty("问题状态")
private String wfFlowstatus;
@ExcelProperty("创建日期")
private String wfCreatetime;
@ExcelProperty("创建人")
private String wfCreator;
@ExcelProperty("来源")
private String source;
@ExcelProperty("来源单号")
private String sourceNumber;
@ExcelProperty("问题类型")
private String typeProblem;
@ExcelProperty("问题名称")
private String nameProblem;
@ExcelProperty("问题描述")
private String problemDescription;
@ExcelProperty("故障关键字一级")
private String faultKeyLevel1;
@ExcelProperty("故障关键字二级")
private String faultKeyLevel2;
@ExcelProperty("物料代码")
private String materiaCode;
@ExcelProperty("产品型号")
private String productModel;
@ExcelProperty("类型")
private String types;
@ExcelProperty("原型机型号")
private String protoTypeModelNumber;
@ExcelProperty("业务部")
private String cbusinessarea;
@ExcelProperty("产品线")
private String pproductLine;
@ExcelProperty("产品系列")
private String serialNumber;
@ExcelProperty("平台")
private String platForm;
@ExcelProperty("版本")
private String softwareVersion;
@ExcelProperty("直接原因")
private String immediateCause;
@ExcelProperty("问题领域")
private String problemDomain;
@ExcelProperty("原因分类一级")
private String causeClassificationLevel1;
@ExcelProperty("原因分类二级")
private String causeClassificationLevel2;
@ExcelProperty("发生概率")
private String probabilityOccurrence;
@ExcelProperty("风险范围")
private String riskRange;
@ExcelProperty("产品涉及范围")
private String productScope;
@ExcelProperty("问题严重度")
private String severity;
@ExcelProperty("处理团队")
private String handelTeam;
@ExcelProperty("问题承担负责人")
private String pesponsiblebearinGdepartment;
@ExcelProperty("问题承担部门")
private String bearingDepartment;
@ExcelProperty("比率")
private String ratio;
// 外部处置
@ExcelProperty("处置状态")
private String wfStatus;
@ExcelProperty("风险数量")
private int numberRisk;
@ExcelProperty("处理数")
private String numberProcessed;
@ExcelProperty("问题单数")
private String problemNum;
@ExcelProperty("方案提交日期")
private String submmitDate;
@ExcelProperty("周期")
private String cycle;
@ExcelProperty("已合并问题单")
private String mergeProblemNo;
@JsonIgnore
@ExcelIgnore
@ApiModelProperty(hidden = true)
private String flowinstid;
@JsonIgnore
@ExcelIgnore
@ApiModelProperty(hidden = true)
private String handelQATeam;
@JsonIgnore
@ExcelIgnore
@ApiModelProperty(hidden = true)
private String handelDevTeam;
@JsonIgnore
@ExcelIgnore
@ApiModelProperty(hidden = true)
private String handelOtherTeam;
}
service:
package com.hikvision.sbm.comflowservice.noticeinternal.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.excel.metadata.data.HyperlinkData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.hikvision.sbm.comflowservice.noticeinternal.mapper.IssueQualityExportMapper;
import com.hikvision.sbm.comflowservice.noticeinternal.model.entity.IssueQualityEsayExcelVo;
import com.hikvision.sbm.comflowservice.noticeinternal.model.entity.IssueQualityEsayResponseVo;
import com.hikvision.sbm.comflowservice.noticeinternal.model.entity.IssueQualityExportRequest;
import com.hikvision.sbm.comflowservice.noticeinternal.model.entity.IssueQualityExportValueMapVo;
import com.hikvision.sbm.comflowservice.noticeinternal.service.IssueQualityExportService;
import com.hikvision.sbm.comflowservice.problemslibrary.model.dto.MergeListDTO;
import com.hikvision.sbm.comflowservice.problemslibrary.service.InformationService;
import lombok.extern.slf4j.Slf4j;
import org.puristframework.boot.workflow.configuration.PuristWorkflowProperties;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@Service
public class IssueQualityExportServiceImpl implements IssueQualityExportService {
@Autowired
private IssueQualityExportMapper issueQualityExportMapper;
@Autowired
private InformationService informationService;
@Resource
private PuristWorkflowProperties puristWorkflowProperties;
private static final String QuestionNumberUrl = "/engineTemplate/issueDisposal?flowInstId=";
public List<IssueQualityEsayResponseVo> getReportData(IssueQualityExportRequest issueQualityExportRequest) {
List<IssueQualityEsayExcelVo> issueQualityExportList = issueQualityExportMapper.getEsayIssueQualityExportList(issueQualityExportRequest);
List<IssueQualityEsayResponseVo> result = new ArrayList<>();
for (int i = 0 ; i < issueQualityExportList.size() ; i ++) {
WriteCellData<String> flowMainUrl = new WriteCellData<>(issueQualityExportList.get(i).getQuestionNumber());
HyperlinkData questionNumberUrl = new HyperlinkData();
flowMainUrl.setHyperlinkData(questionNumberUrl);
questionNumberUrl.setAddress(puristWorkflowProperties.getPcTodoServicePath() + QuestionNumberUrl + issueQualityExportList.get(i).getQuestionNumber());
questionNumberUrl.setHyperlinkType(HyperlinkData.HyperlinkType.URL);
issueQualityExportList.get(i).setQuestionNumberUrl(flowMainUrl);
issueQualityExportList.get(i).setSource(IssueQualityExportValueMapVo.getSourceValue(issueQualityExportList.get(i).getSource()));
issueQualityExportList.get(i).setWfStatus(IssueQualityExportValueMapVo.getWfStatusValue(issueQualityExportList.get(i).getWfStatus()));
// 查询已合并问题单
List<MergeListDTO> mergeListDTOS = informationService.mergeList(issueQualityExportList.get(i).getFlowinstid());
String mergeId = "";
for (MergeListDTO mergeListDTO : mergeListDTOS) {
mergeId += mergeListDTO.getFlowInstId() + ",";
}
if (!"".equals(mergeId)) {
mergeId = mergeId.substring(0, mergeId.length() - 1);
}
issueQualityExportList.get(i).setMergeProblemNo(mergeId);
// 整理处理团队
String handlerTeamStr = "质量:" + issueQualityExportList.get(i).getHandelQATeam() + " " + "研发产品:" + issueQualityExportList.get(i).getHandelDevTeam() + " " + "其他:" + issueQualityExportList.get(i).getHandelOtherTeam();
issueQualityExportList.get(i).setHandelTeam(handlerTeamStr);
// 风险清单数量赋值
issueQualityExportList.get(i).setNumberRisk(issueQualityExportMapper.getNumberRisk(issueQualityExportList.get(i).getFlowinstid()));
IssueQualityEsayResponseVo issueQualityEsayResponseVo = BeanUtil.copyProperties(issueQualityExportList.get(i), IssueQualityEsayResponseVo.class);
issueQualityEsayResponseVo.setNumber(i + 1);
result.add(issueQualityEsayResponseVo);
}
return result;
}
}
controller:
package com.hikvision.sbm.comflowservice.noticeinternal.controller;
import com.alibaba.excel.EasyExcel;
import com.hikvision.sbm.comflowservice.noticeinternal.model.entity.IssueQualityEsayResponseVo;
import com.hikvision.sbm.comflowservice.noticeinternal.model.entity.IssueQualityExportRequest;
import com.hikvision.sbm.comflowservice.noticeinternal.service.IssueQualityExportService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.util.List;
@Api(tags = "国内质量导出")
@RestController
@RequestMapping("issueQuality")
public class IssueQualityExportController {
@Autowired
private IssueQualityExportService issueQualityExportService;
@PostMapping("export")
@ApiOperation("excel导出")
public void export(@RequestBody IssueQualityExportRequest issueQualityExportRequest, HttpServletResponse response) throws Exception {
if (issueQualityExportRequest.getStartDate() == null || issueQualityExportRequest.getEndDate() == null) {
response.sendError(HttpServletResponse.SC_NOT_FOUND, "开始时间与结束时间不能为空!");
return;
}
List<IssueQualityEsayResponseVo> issueQualityExportList = issueQualityExportService.getReportData(issueQualityExportRequest);
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
String fileName = URLEncoder.encode("国内质量导出", "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
EasyExcel.write(response.getOutputStream(), IssueQualityEsayResponseVo.class).autoCloseStream(false).sheet("sheet").doWrite(issueQualityExportList);
}
}