esayExcel导出,外加字段外部链接示例

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);

    }


}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值