package com.common.workflow.web.rest; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.common.workflow.service.util.FileUtils; import com.common.workflow.web.rest.vm.*; import com.github.crab2died.ExcelUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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 javax.validation.Valid; import java.io.File; import java.io.OutputStream; import java.lang.reflect.Type; import java.text.SimpleDateFormat; import java.util.*; /** * Created by txz on 2020-10-15. */ @RestController @RequestMapping("/api/excel") public class ExcelResource { private final Logger log = LoggerFactory.getLogger(ExcelResource.class); public ExcelResource() { } @PostMapping("/fill-excel") public void fillExcelTemplate(@Valid @RequestBody ExcelTemplateVM wordTemplateVM, HttpServletResponse response) throws Exception { response.reset(); response.setContentType("multipart/form-data;charset=utf-8"); response.setHeader("content-disposition", "attachment;filename=" + wordTemplateVM.getFileName()); response.setHeader("Pragma","No-cache"); response.setHeader ( "Cache-Control", "no-store"); response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Headers", "*"); OutputStream outputStream = response.getOutputStream(); String fullFileName = FileUtils.getExcelTemplatePath() + "/" + wordTemplateVM.getFileName(); File file = new File(fullFileName); if (file.exists()) { file.delete(); //清除历史文件 } fullFileName = FileUtils.downLoadFromUrl(wordTemplateVM.getTemplateUrl(), wordTemplateVM.getFileName(), FileUtils.getExcelTemplatePath()); if(wordTemplateVM.getContractClass().equals("03")){ List reportList = new ArrayList<>(); ArrayList> list = (ArrayList>) wordTemplateVM.getDatas().get("data"); for(LinkedHashMap entry : list){ OilContractSumScoreVo OilContract1 = new OilContractSumScoreVo(); OilContract1.setSupplierName(entry.get("SupplierName").toString()); OilContract1.setScore(entry.get("Score").toString()); OilContract1.setConditionScore(entry.get("ConditionScore").toString()); OilContract1.setSumScore(entry.get("CountScore").toString()); OilContract1.setScore1(entry.get("Score1").toString()); OilContract1.setScore2(entry.get("Score2").toString()); OilContract1.setScore3(entry.get("Score3").toString()); OilContract1.setScore4(entry.get("Score4").toString()); OilContract1.setEvaluate(entry.get("Evaluate").toString().equals("1") ? "是" : ""); OilContract1.setEvaluate2(entry.get("Evaluate").toString().equals("2") ? "是" : ""); OilContract1.setEvaluate3(entry.get("Evaluate").toString().equals("3") ? "是" : ""); reportList.add(OilContract1); } Map data = new HashMap<>(); data.put("title", "大港油田公司服务商考核评价表"); Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); data.put("info", sdf.format(d)); ExcelUtils.getInstance().exportObjects2Excel(fullFileName, 0, reportList, data, OilContractSumScoreVo.class, false, outputStream); }else{ List reportList = new ArrayList<>(); ArrayList> list = (ArrayList>) wordTemplateVM.getDatas().get("data"); for(LinkedHashMap entry : list){ OilContractSumScoreVo2 OilContract = new OilContractSumScoreVo2(); OilContract.setSupplierName(entry.get("SupplierName").toString()); OilContract.setScore(entry.get("Score").toString()); OilContract.setConditionScore(entry.get("ConditionScore").toString()); OilContract.setSumScore(entry.get("CountScore").toString()); OilContract.setScore1(entry.get("Score1").toString()); OilContract.setScore2(entry.get("Score2").toString()); OilContract.setScore3(entry.get("Score3").toString()); OilContract.setScore4(entry.get("Score4").toString()); OilContract.setScore5(entry.get("Score5").toString()); OilContract.setEvaluate(entry.get("Evaluate").toString().equals("1") ? "是" : ""); OilContract.setEvaluate2(entry.get("Evaluate").toString().equals("2") ? "是" : ""); OilContract.setEvaluate3(entry.get("Evaluate").toString().equals("3") ? "是" : ""); reportList.add(OilContract); } Map data = new HashMap<>(); data.put("title", "大港油田公司物资供应商考核评价表(全部、一级、二级)"); Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); data.put("info", sdf.format(d)); ExcelUtils.getInstance().exportObjects2Excel(fullFileName, 0, reportList, data, OilContractSumScoreVo2.class, false, outputStream); } outputStream.flush(); outputStream.close(); } @PostMapping("/contrast-excel") public void ContrastExcelTemplate(@Valid @RequestBody ExcelTemplateVM wordTemplateVM, HttpServletResponse response) throws Exception { response.reset(); response.setContentType("multipart/form-data;charset=utf-8"); response.setHeader("content-disposition", "attachment;filename=" + wordTemplateVM.getFileName()); response.setHeader("Pragma","No-cache"); response.setHeader ( "Cache-Control", "no-store"); response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Headers", "*"); OutputStream outputStream = response.getOutputStream(); String fullFileName = FileUtils.getExcelTemplatePath() + "/" + wordTemplateVM.getFileName(); File file = new File(fullFileName); if (file.exists()) { file.delete(); //清除历史文件 } fullFileName = FileUtils.downLoadFromUrl(wordTemplateVM.getTemplateUrl(), wordTemplateVM.getFileName(), FileUtils.getExcelTemplatePath()); Map> classes = new HashMap<>(); List reportList = new ArrayList<>(); List reportList1 = new ArrayList<>(); List reportList2 = new ArrayList<>(); ArrayList> list = (ArrayList>) wordTemplateVM.getDatas().get("data"); for(LinkedHashMap entry : list){ ContrastExcelVM contrastExcelVM = new ContrastExcelVM(); contrastExcelVM.setSupplierName(entry.get("SupplierName").toString()); contrastExcelVM.setInFlag(entry.get("InFlag").toString().equals("1") ? "准入" : entry.get("InFlag").toString().equals("2") ? "暂停" : "取消"); contrastExcelVM.setAccessCardNo(entry.get("AccessCardNo").toString()); contrastExcelVM.setSupplierTypeCode(entry.get("SupplierTypeCode").toString().equals("01") ? "物资类" : entry.get("SupplierTypeCode").toString().equals("02") ? "基建类" : "服务类"); contrastExcelVM.setLegalPerson(entry.get("LegalPerson").toString()); contrastExcelVM.setRegCapital(entry.get("RegCapital").toString()); contrastExcelVM.setMobile(entry.get("Mobile").toString()); contrastExcelVM.setSubCnt(entry.get("SubCnt").toString()); contrastExcelVM.setNoSubCnt(entry.get("NoSubCnt").toString()); contrastExcelVM.setZzName(entry.get("ZzName").toString()); contrastExcelVM.setOneTwoCount(entry.get("OneTwoCount").toString()); contrastExcelVM.setTwoOneCount(entry.get("TwoOneCount").toString()); contrastExcelVM.setChecked(entry.get("Checked").toString().equals("1") ? "否" : "是"); if (Integer.parseInt(entry.get("NoSubCnt").toString()) > 0) { reportList2.add(contrastExcelVM); } else { if (entry.get("Checked").toString().equals("1")) { reportList.add(contrastExcelVM); } else { reportList1.add(contrastExcelVM); } } } classes.put("class_two", reportList); classes.put("class_one", reportList1); classes.put("class_three", reportList2); Map data = new HashMap<>(); data.put("title", "资质导入对比表"); Date d = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); data.put("info", sdf.format(d)); ExcelUtils.getInstance().exportObject2Excel(fullFileName, 0, classes, data, ContrastExcelVM.class, false, outputStream); outputStream.flush(); outputStream.close(); } /** * 资质配置导出 * @param aptitudeConfigVM * @param response * @throws Exception */ @PostMapping("/aptitude-excel") public void exportAptitudeConfig(@Valid @RequestBody ExcelTemplateAptitudeConfigVM aptitudeConfigVM, HttpServletResponse response) throws Exception { response.reset(); response.setContentType("multipart/form-data;charset=utf-8"); response.setHeader("content-disposition", "attachment;filename=" + aptitudeConfigVM.getFileName()); response.setHeader("Pragma","No-cache"); response.setHeader ( "Cache-Control", "no-store"); response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Headers", "*"); OutputStream outputStream = response.getOutputStream(); String fullFileName = FileUtils.getExcelTemplatePath() + "/" + aptitudeConfigVM.getFileName(); File file = new File(fullFileName); if (file.exists()) { file.delete(); //清除历史文件 } fullFileName = FileUtils.downLoadFromUrl(aptitudeConfigVM.getTemplateUrl(), aptitudeConfigVM.getFileName(), FileUtils.getExcelTemplatePath()); String obj = JSONObject.toJSONString(aptitudeConfigVM.getDataList().get("data")); if (aptitudeConfigVM.getSupplierType().equals("1")) { // 物资类 List list = JSONArray.parseArray(obj, GoodsAptitudeVo.class); Map data = new HashMap<>(); data.put("title", "大港油田公司物资准入项目所需资质、资料明细表"); ExcelUtils.getInstance().exportObjects2Excel(fullFileName, 0, list, data, GoodsAptitudeVo.class, false, outputStream); } else if (aptitudeConfigVM.getSupplierType().equals("2")) { // 服务类 List list = JSONArray.parseArray(obj, TechSrcAptitudeVo.class); Map data = new HashMap<>(); data.put("title", "大港油田公司服务准入项目所需资质、资料明细表"); ExcelUtils.getInstance().exportObjects2Excel(fullFileName, 0, list, data, TechSrcAptitudeVo.class, false, outputStream); } else { log.info("其他导出"); } outputStream.flush(); outputStream.close(); } }