package cn.com.goldenwater.dcproj.service.impl.tac; import cn.com.goldenwater.core.model.BaseBean; import cn.com.goldenwater.core.service.AbstractCrudService; import cn.com.goldenwater.dcproj.annotation.NotExport; import cn.com.goldenwater.dcproj.constValue.BisInspEnum; import cn.com.goldenwater.dcproj.constValue.SplitValue; import cn.com.goldenwater.dcproj.dao.BisInspPblmPlistDao; import cn.com.goldenwater.dcproj.dao.TacProvincePblmMendInfoDao; import cn.com.goldenwater.dcproj.dto.TacProvincePblmInfoFromDto; import cn.com.goldenwater.dcproj.model.*; import cn.com.goldenwater.dcproj.param.BisInspLocalConfigParam; import cn.com.goldenwater.dcproj.param.TacProvincePblmMendInfoParam; import cn.com.goldenwater.dcproj.service.*; import cn.com.goldenwater.dcproj.util.BisInspPblmPlistConventUtil; import cn.com.goldenwater.dcproj.util.CheckUtil; import cn.com.goldenwater.dcproj.util.FileUtil; import cn.com.goldenwater.dcproj.utils.DateUtils; import cn.com.goldenwater.dcproj.utils.InspPblmUtils; import cn.com.goldenwater.dcproj.utils.expExcel.ExcelExport; import cn.com.goldenwater.dcproj.utils.expExcel.ExportAbstract; import cn.com.goldenwater.dcproj.utils.expExcel.ExportUtil; import cn.com.goldenwater.id.util.UuidUtil; import cn.com.goldenwater.target.CheckException; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.workflow.bpm.api.bpmservices.ActionConstant; import com.workflow.bpm.api.bpmservices.BpmProcessInstService; import com.workflow.bpm.api.bpmservices.BpmTaskService; import com.workflow.bpm.api.bpmservices.co.processinstance.ProcessStartCO; import com.workflow.bpm.api.bpmservices.co.taskinst.QueryTaskActionCO; import com.workflow.common.struct.res.impl.APIResult; import io.swagger.annotations.ApiModelProperty; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.io.*; import java.lang.reflect.Field; import java.nio.charset.StandardCharsets; import java.util.*; import static cn.com.goldenwater.dcproj.utils.BeanUtil.transBean2Map; import static cn.com.goldenwater.dcproj.utils.expExcel.ExportUtil.COMMONLIST_AND_OPEN_ANNOTATION; /** * @author lhc * @date 2021-6-2 */ @Service @Transactional public class TacProvincePblmMendInfoServiceImpl extends AbstractCrudService implements TacProvincePblmMendInfoService { @Autowired private TacProvincePblmMendInfoDao tacProvincePblmMendInfoDao; @Autowired private BisInspBpmOrgService bisInspBpmOrgService; @Autowired private BpmProcessInstService bpmProcessInstService; @Autowired private BpmTaskService bpmTaskService; @Autowired private TacProvincePblmInfoService tacProvincePblmInfoService; @Autowired private TacPawpRgstrService tacPawpRgstrService; @Autowired private AttAdBaseService attAdBaseService; @Autowired private BisInspPblmPlistDao bisInspPblmPlistDao; @Autowired private BisInspLocalConfigService bisInspLocalConfigService; @Autowired private GwComFileService gwComFileService; @Value("${export.templatePath}") private String templatePath; @Value("${web.upload-path}") private String uploadPath; private Logger logger = LoggerFactory.getLogger(TacProvincePblmMendInfoServiceImpl.class); public TacProvincePblmMendInfoServiceImpl(TacProvincePblmMendInfoDao tacProvincePblmMendInfoDao) { super(tacProvincePblmMendInfoDao); this.tacProvincePblmMendInfoDao = tacProvincePblmMendInfoDao; } @Override public int insert(TacProvincePblmMendInfo tacProvincePblmMendInfo) { tacProvincePblmMendInfo.setSetpPblmId(tacProvincePblmMendInfo.getPblmId()); String uuid = UuidUtil.uuid(); // 生成uuid tacProvincePblmMendInfo.setId(uuid); tacProvincePblmMendInfo.setIntm(new Date()); tacProvincePblmMendInfo.setUptm(new Date()); tacProvincePblmMendInfo.setDataStat("0"); tacProvincePblmMendInfo.setIsStart("0"); tacProvincePblmMendInfo.setPblmOut("0"); tacProvincePblmMendInfo.setCrtState("0"); tacProvincePblmMendInfo.setIsRect("0"); //根据 问题id补充工程行政区代码及工程名称 String rgstrId = tacProvincePblmMendInfo.getRgstrId(); TacPawpRgstr tacPawpRgstr = tacPawpRgstrService.get(rgstrId); tacProvincePblmMendInfo.setAdCode(tacPawpRgstr.getAdCode()); tacProvincePblmMendInfo.setPrjName(tacPawpRgstr.getName()); tacProvincePblmMendInfo.setPrjtId(tacPawpRgstr.getObjId()); tacProvincePblmMendInfo.setGroupId(tacPawpRgstr.getGroupId()); tacProvincePblmMendInfo.setLocation(attAdBaseService.getByAdcode(tacPawpRgstr.getAdCode()).getAdFullName()); return this.tacProvincePblmMendInfoDao.insert(tacProvincePblmMendInfo); } @Override public int update(TacProvincePblmMendInfo tacProvincePblmMendInfo) { tacProvincePblmMendInfo.setUptm(new Date()); return this.tacProvincePblmMendInfoDao.update(tacProvincePblmMendInfo); } @Override public int delete(String id) { return this.tacProvincePblmMendInfoDao.delete(id); } @Override public PageInfo getList(TacProvincePblmMendInfoParam tacProvincePblmMendInfoParam) { if (StringUtils.isNotBlank(tacProvincePblmMendInfoParam.getArea())) { //截取行政区划 } PageHelper.startPage(tacProvincePblmMendInfoParam); List list = this.tacProvincePblmMendInfoDao.getList(tacProvincePblmMendInfoParam); PageInfo pageInfo = new PageInfo<>(list); for (TacProvincePblmMendInfo tacProvincePblmMendInfo : pageInfo.getList()) { //补充省市县 if (tacProvincePblmMendInfo.getLocation() != null) { if (tacProvincePblmMendInfo.getLocation().contains(SplitValue.HENG_SPLIT)) { String[] split = tacProvincePblmMendInfo.getLocation().split(SplitValue.HENG_SPLIT); if (split.length == 3) { tacProvincePblmMendInfo.setProvince(split[0]); tacProvincePblmMendInfo.setCity(split[1]); tacProvincePblmMendInfo.setCounty(split[2]); } if (split.length == 2) { tacProvincePblmMendInfo.setProvince(split[0]); tacProvincePblmMendInfo.setCity(split[1]); tacProvincePblmMendInfo.setCounty(""); } } else { tacProvincePblmMendInfo.setProvince(tacProvincePblmMendInfo.getLocation()); } } // 查询 List> bpmDataIdList = bisInspPblmPlistDao.getBpmDataId(tacProvincePblmMendInfo.getId(), tacProvincePblmMendInfoParam.getOrgId(), tacProvincePblmMendInfoParam.getProvince()); if (CollectionUtils.isNotEmpty(bpmDataIdList)) { Map bpmData = bpmDataIdList.get(0); tacProvincePblmMendInfo.setTaskInstId(bpmData.get("taskInstId")); tacProvincePblmMendInfo.setProcInstId(bpmData.get("procInstId")); tacProvincePblmMendInfo.setProcTypeName("稽察-" + bpmData.get("procTypeName")); } } return pageInfo; } /** * 是否直管县 * * @param objAdCode * @return */ public Boolean isLocalAd(String objAdCode) { BisInspLocalConfigParam bisInspLocalConfigParam = new BisInspLocalConfigParam(); bisInspLocalConfigParam.setAdCode(objAdCode); List bisInspLocalConfigs = bisInspLocalConfigService.findList(bisInspLocalConfigParam); if (bisInspLocalConfigs != null && bisInspLocalConfigs.size() > 0) { return true; } else { return false; } } @Override public boolean saveFormsAndStartFlow(TacProvincePblmInfoFromDto form, String userId, String orgId, String province) { TacProvincePblmMendInfo tacProvincePblmMendInfo = tacProvincePblmMendInfoDao.get(form.getPblmPlist().getId()); CheckUtil.notNull(tacProvincePblmMendInfo, "数据异常!"); CheckUtil.check(!"1".equals(tacProvincePblmMendInfo.getIsStart()), "工作流已经启动,请勿重复启动!"); CheckUtil.check(!"1".equals(tacProvincePblmMendInfo.getPblmOut()), "整改问题已销号!"); form.getPblmPlist().setIsStart("1"); update(form.getPblmPlist()); ProcessStartCO processStartCO = new ProcessStartCO(); processStartCO.setBizKey(form.getPblmPlist().getId()); processStartCO.setFormUrl("pdcApi/tac/province/pblm/mendInfo/" + form.getPblmPlist().getId()); processStartCO.setProcessName("稽察整改-" + getBpmName(form)); processStartCO.setProcessTypeCode(getBpmCode(province, "稽察整改").getBpmCode());// 根据当前用户所属省份和督查类型 取出对应工作流 id processStartCO.setTenantId("1"); processStartCO.setUserId(userId); processStartCO.setProvince(province); processStartCO.setCompleteFirstTaskFlag(true); Map sendVar = new HashMap<>(); if (isLocalAd(form.getPblmPlist().getObjAdCode())) { //直管县 sendVar.put("sendLocal", "zg"); } else { //非直管县 sendVar.put("sendLocal", "fzg"); } sendVar.put("sendVar", "city"); sendVar.put("sendSpc", "spc");// 山东省 --监督处是否专家审核 sendVar.put("sendBsnm", "九龙江流域");// 福建流域 if (form.getPblmPlist().getBsnm() == null) { if (null == tacProvincePblmMendInfoDao.get(form.getPblmPlist().getId()).getBsnm()) { form.getPblmPlist().setBsnm("九龙江流域"); } else { form.getPblmPlist().setBsnm(tacProvincePblmMendInfoDao.get(form.getPblmPlist().getId()).getBsnm()); } } if (form.getPblmPlist().getBsnm().equals("九龙江流域")) { sendVar.put("sendBsnm", "九龙江流域");// 福建流域 } else if (form.getPblmPlist().getBsnm().equals("闽江流域")) { sendVar.put("sendBsnm", "闽江流域");// 福建流域 } else { sendVar.put("sendBsnm", "九龙江流域");// 福建流域 } processStartCO.setVariables(sendVar); APIResult apiResult = bpmProcessInstService.startProcInst(processStartCO, userId, orgId); if (apiResult.isRetStatus()) { return true; } else { throw new CheckException("发起流程失败!"); } } public BisInspBpmOrg getBpmCode(String province, String ptype) { BisInspBpmOrg bisInspBpmOrg = bisInspBpmOrgService.getBpmCodeBypp(province, ptype); return bisInspBpmOrg; } public String getBpmName(TacProvincePblmInfoFromDto form) { String nameString = ""; //获取对象所属行政区代码 String objAdCode = form.getPblmPlist().getAdCode(); //查询此行政是否是直辖县 if (isLocalAd(objAdCode)) { nameString = form.getPblmPlist().getProvince(); if (form.getPblmPlist().getCounty() != null) { nameString = nameString + "-" + form.getPblmPlist().getCounty(); } nameString = nameString + "-" + form.getPblmPlist().getPrjName() + ":" + form.getPblmPlist().getPblmNm(); } else { nameString = form.getPblmPlist().getProvince(); if (null != form.getPblmPlist().getCity()) { nameString = nameString + "-" + form.getPblmPlist().getCity(); } if (null != form.getPblmPlist().getCounty()) { nameString = nameString + "-" + form.getPblmPlist().getCounty(); } nameString = nameString + "-" + form.getPblmPlist().getPrjName() + ":" + form.getPblmPlist().getPblmNm(); } return nameString; } @Override public void allStartup(TacProvincePblmMendInfoParam tacProvincePblmMendInfoParam) { String persId = tacProvincePblmMendInfoParam.getPersId(); String orgId = tacProvincePblmMendInfoParam.getOrgId(); String province = tacProvincePblmMendInfoParam.getProvince(); tacProvincePblmMendInfoParam.setPersId(null); tacProvincePblmMendInfoParam.setOrgId(null); tacProvincePblmMendInfoParam.setProvince(null); // 查询 List tacProvincePblmInfoFromDtos = new ArrayList<>(); List list = this.tacProvincePblmMendInfoDao.getList(tacProvincePblmMendInfoParam); if (list != null && list.size() > 0) { for (TacProvincePblmMendInfo tacProvincePblmMendInfo : list) { if ("1".equals(tacProvincePblmMendInfo.getIsStart())) { continue; } if (tacProvincePblmMendInfo.getLocation() != null) { if (tacProvincePblmMendInfo.getLocation().contains(SplitValue.HENG_SPLIT)) { String[] split = tacProvincePblmMendInfo.getLocation().split(SplitValue.HENG_SPLIT); if (split.length == 3) { tacProvincePblmMendInfo.setProvince(split[0]); tacProvincePblmMendInfo.setCity(split[1]); tacProvincePblmMendInfo.setCounty(split[2]); } if (split.length == 2) { tacProvincePblmMendInfo.setProvince(split[0]); tacProvincePblmMendInfo.setCity(split[1]); tacProvincePblmMendInfo.setCounty(""); } } else { tacProvincePblmMendInfo.setProvince(tacProvincePblmMendInfo.getLocation()); } } TacProvincePblmInfoFromDto dto = new TacProvincePblmInfoFromDto(); dto.setPblmPlist(tacProvincePblmMendInfo); tacProvincePblmInfoFromDtos.add(dto); } } for (TacProvincePblmInfoFromDto tacProvincePblmInfoFromDto : tacProvincePblmInfoFromDtos) { saveFormsAndStartFlow(tacProvincePblmInfoFromDto, persId, orgId, province); } } @Override public boolean submitForm(TacProvincePblmInfoFromDto form, String userId, String orgId) { QueryTaskActionCO task = form.getQueryTaskActionCO(); task.setActionType(ActionConstant.ACTION_SUBMIT); task.setClaimTaskDirectExeFlag(true); APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId); return apiResult.isRetStatus(); } @Override public boolean backwardForm(TacProvincePblmInfoFromDto form, String userId, String orgId) { QueryTaskActionCO task = form.getQueryTaskActionCO(); task.setActionType(ActionConstant.ACTION_BACK); task.setClaimTaskDirectExeFlag(true); APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId); return apiResult.isRetStatus(); } @Override public boolean feedbackForm(TacProvincePblmInfoFromDto form, String userId, String orgId) { form.getPblmPlist().setIsRect("1");//是否反馈 update(form.getPblmPlist()); QueryTaskActionCO task = form.getQueryTaskActionCO(); task.setActionType(ActionConstant.ACTION_SUBMIT); task.setClaimTaskDirectExeFlag(true); APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId); return apiResult.isRetStatus(); } @Override public boolean feedbackCityForm(TacProvincePblmInfoFromDto form, String userId, String orgId) { QueryTaskActionCO task = form.getQueryTaskActionCO(); task.setActionType(ActionConstant.ACTION_SUBMIT); Map sendVar = new HashMap<>(); sendVar.put("sendVar", "city"); task.setVariables(sendVar); task.setClaimTaskDirectExeFlag(true); APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId); return apiResult.isRetStatus(); } @Override public boolean sendCountyForm(TacProvincePblmInfoFromDto form, String userId, String orgId) { QueryTaskActionCO task = form.getQueryTaskActionCO(); Map sendVar = new HashMap<>(); sendVar.put("sendVar", "county"); task.setVariables(sendVar); task.setActionType(ActionConstant.ACTION_SUBMIT); task.setClaimTaskDirectExeFlag(true); APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId); return apiResult.isRetStatus(); } @Override public boolean complete(TacProvincePblmInfoFromDto form, String userId, String orgId) { form.getPblmPlist().setPblmOut("1");//已销号 update(form.getPblmPlist()); QueryTaskActionCO task = form.getQueryTaskActionCO(); Map sendVar = new HashMap<>(); sendVar.put("sendVar", "county"); task.setVariables(sendVar); task.setActionType(ActionConstant.ACTION_SUBMIT); task.setClaimTaskDirectExeFlag(true); APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId); return apiResult.isRetStatus(); } @Override public boolean sendProvinceForm(TacProvincePblmInfoFromDto form, String userId, String orgId) { update(form.getPblmPlist()); QueryTaskActionCO task = form.getQueryTaskActionCO(); Map sendVar = new HashMap<>(); sendVar.put("sendLocal", "province"); task.setVariables(sendVar); task.setActionType(ActionConstant.ACTION_SUBMIT); task.setClaimTaskDirectExeFlag(true); APIResult apiResult = bpmTaskService.taskAction(task, userId, orgId); return apiResult.isRetStatus(); } @Override public void export(TacProvincePblmMendInfoParam tacProvincePblmMendInfoParam, HttpServletResponse response) throws Exception { if (StringUtils.isNotBlank(tacProvincePblmMendInfoParam.getArea())) { //截取行政区划 } List list = this.tacProvincePblmMendInfoDao.getList(tacProvincePblmMendInfoParam); PageInfo pageInfo = new PageInfo<>(list); for (TacProvincePblmMendInfo tacProvincePblmMendInfo : pageInfo.getList()) { //补充省市县 if (tacProvincePblmMendInfo.getLocation() != null) { if (tacProvincePblmMendInfo.getLocation().contains(SplitValue.HENG_SPLIT)) { String[] split = tacProvincePblmMendInfo.getLocation().split(SplitValue.HENG_SPLIT); if (split.length == 3) { tacProvincePblmMendInfo.setProvince(split[0]); tacProvincePblmMendInfo.setCity(split[1]); tacProvincePblmMendInfo.setCounty(split[2]); } if (split.length == 2) { tacProvincePblmMendInfo.setProvince(split[0]); tacProvincePblmMendInfo.setCity(split[1]); tacProvincePblmMendInfo.setCounty(""); } } else { tacProvincePblmMendInfo.setProvince(tacProvincePblmMendInfo.getLocation()); } } } String mkdirName = templatePath + File.separator + "整改问题_" + DateUtils.getToday("yyyyMMddHHmmss"); File file = new File(mkdirName); if (!file.exists()) { file.mkdirs(); } try { exportExcel(list, response, "整改问题列表", mkdirName, COMMONLIST_AND_OPEN_ANNOTATION, TacProvincePblmMendInfo.class); } catch (Exception e) { logger.error("导出excel出错"); } if (list != null && list.size() > 0) { for (int i = 1; i <= list.size(); i++) { // 添加文件夹 addMkdir(list.get(i - 1), i, mkdirName); } } /* 4. 导出 */ String zipFileName = "整改问题_" + DateUtils.getToday("yyyyMMddHHmmss") + ".zip"; FileUtil.compressToZip(mkdirName, templatePath, zipFileName); logger.info("--------------------------------------exp pblm mend zip -----------------------------------------------"); /* 5.压缩包导出 */ File zipFile = new File(templatePath + File.separator + zipFileName); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition", "attachment; filename=" + new String(zipFileName.getBytes(StandardCharsets.UTF_8), "ISO8859-1")); response.setContentLength((int) zipFile.length()); response.setContentType("application/zip");// 定义输出类型 FileInputStream fis = new FileInputStream(zipFile); BufferedInputStream buff = new BufferedInputStream(fis); byte[] b = new byte[1024];// 相当于我们的缓存 long k = 0;// 该值用于计算当前实际下载了多少字节 OutputStream myout = response.getOutputStream();// 从response对象中得到输出流,准备下载 // 开始循环下载 while (k < zipFile.length()) { int j = buff.read(b, 0, 1024); k += j; myout.write(b, 0, j); } myout.flush(); buff.close(); zipFile.delete(); } @Override public int updateAddvcd(TacProvincePblmMendInfo tacProvincePblmMendInfo) { return this.tacProvincePblmMendInfoDao.updateAddvcd(tacProvincePblmMendInfo); } private File createFile(String fileName) { File file = new File(fileName); // 如果文件夹不存在 if (!file.exists()) { // 创建文件夹 file.mkdirs(); } return file; } void addMkdir(TacProvincePblmMendInfo tacProvincePblmMendInfo, int number, String filePath) { /* 1. 获取附件信息 */ List gwComFileList = gwComFileService.findFileByBiz(tacProvincePblmMendInfo.getId()); // 问题没附件,退出 if (gwComFileList == null || gwComFileList.size() == 0) { return; } // 创建附件文件夹 String fujianFilePath = filePath + File.separator + number; createFile(fujianFilePath); gwComFileList.forEach(file -> { // 获取要复制的文件 File oldfile = new File(uploadPath.replace("upload/", "") + file.getFilePath().replaceAll("\\\\", "/").replaceAll("//", "/")); //要生成的新文件(指定路径如果没有则创建) File newfile = new File(fujianFilePath + File.separator + file.getFileName()); try { newfile.createNewFile(); } catch (IOException e) { logger.error("整改问题导出-创建新文件失败!"); e.printStackTrace(); } try (//文件输入流,用于读取要复制的文件 FileInputStream fileInputStream = new FileInputStream(oldfile); //新文件输出流 FileOutputStream fileOutputStream = new FileOutputStream(newfile);) { byte[] buffer = new byte[1024]; int len; // 将文件流信息读取文件缓存区,如果读取结果不为-1就代表文件没有读取完毕,反之已经读取完毕 while ((len = fileInputStream.read(buffer)) != -1) { fileOutputStream.write(buffer, 0, len); fileOutputStream.flush(); } } catch (IOException e) { logger.error("整改问题导出-复制文件失败!"); e.printStackTrace(); } }); } void conventPblmPlist(Map map) { map.put("isStart", BisInspPblmPlistConventUtil.isRect(MapUtils.getString(map, "isStart", ""))); map.put("pblmPasi", InspPblmUtils.plbmCateDesc(MapUtils.getString(map, "pblmPasi", ""))); map.put("ifCasePblm", BisInspPblmPlistConventUtil.isRect(MapUtils.getString(map, "ifCasePblm", ""))); map.put("crtState", BisInspPblmPlistConventUtil.crtState(MapUtils.getString(map, "crtState", ""))); map.put("pblmCrtm", map.get("pblmCrtm") != null ? DateUtils.Date2Str((Date) map.get("pblmCrtm")) : ""); map.put("isRect", BisInspPblmPlistConventUtil.isRect(MapUtils.getString(map, "isRect", ""))); map.put("pblmOut", BisInspPblmPlistConventUtil.isRect(MapUtils.getString(map, "pblmOut", ""))); } void exportExcel(List result, HttpServletResponse response, String fileName, String filePath, List list, Class cla) throws NoSuchFieldException { if (list == null || list.size() == 0) { exportExcel(result, response, fileName); return; } List> mapList = new ArrayList<>(); result.forEach(worker -> mapList.add(transBean2Map(worker))); mapList.forEach(worker -> conventPblmPlist(worker)); ExportAbstract export = new ExcelExport(); if (StringUtils.isBlank(fileName)) { fileName = "结果列表"; } export.setFileName(fileName); export.setExport_ps_export(true); export.setExport_ps_type(ExportAbstract.XLS); export.setExport_bzip(false); export.setTitle(fileName); ArrayList cols = new ArrayList(); Field[] fields; if (cla == TacProvincePblmMendInfo.class) { Class superClass = BaseBean.class; fields = new Field[18]; fields[0] = superClass.getDeclaredField("province"); // 省 fields[1] = cla.getDeclaredField("city"); // 市 fields[2] = cla.getDeclaredField("county"); // 县 fields[3] = cla.getDeclaredField("pblmNub"); // 印发文号 fields[4] = cla.getDeclaredField("pblmNubName"); // 印发文件名 fields[5] = cla.getDeclaredField("prjName"); // 工程名称 fields[6] = cla.getDeclaredField("subjectNames"); // 责任单位 fields[7] = cla.getDeclaredField("pblmNm"); // 问题名称 fields[8] = cla.getDeclaredField("pblmDesc"); // 问题阐述 fields[9] = cla.getDeclaredField("pblmTypeDesc"); // 问题定性描述 fields[10] = cla.getDeclaredField("pblmPasi");// 严重程度 fields[11] = cla.getDeclaredField("ifCasePblm");// 是否典型 fields[12] = cla.getDeclaredField("crtState");// 整改状态 fields[13] = cla.getDeclaredField("pblmCrtm");// 整改时限 fields[14] = cla.getDeclaredField("pblmReason");// 整改建议 fields[15] = cla.getDeclaredField("isRect");// 是否反馈 fields[16] = cla.getDeclaredField("crtInfo");// 整改措施 fields[17] = cla.getDeclaredField("pblmOut");// 是否销号 } else { fields = cla.getDeclaredFields(); Class clazz = cla.getSuperclass(); if (clazz != null && clazz != Objects.class) { fields = ArrayUtils.addAll(fields, clazz.getDeclaredFields()); } } for (int j = 0; j <= fields.length - 1; j++) { //设置可访问 Field field = fields[j]; if (list.contains(field.getName())) { continue; } field.setAccessible(true); if (field.getAnnotation(ApiModelProperty.class) != null && field.getAnnotation(NotExport.class) == null) { cols.add(field.getName() + "[" + ExportUtil.fileFormat(field.getAnnotation(ApiModelProperty.class).value()) + "]"); } } if (cols.size() < 1) { cols.add("name[名称]"); cols.add("code[编码]"); } export.setCols(cols); export.setGroupable(false); // 设置视图指标 export.setLevel(1); export.setLocksize(0); try { export.Export(response); // 导出表头 export.ExportHeadForCustom(response); export.ContinueExport(mapList); FileOutputStream output = new FileOutputStream(filePath + File.separator + fileName + ".xls"); // 写入磁盘 export.getWb().write(output); } catch (Exception e) { e.printStackTrace(); } } void exportExcel(List result, HttpServletResponse response, String fileName) { List> mapList = new ArrayList<>(); ExportAbstract export = new ExcelExport(); if (StringUtils.isBlank(fileName)) { fileName = "结果列表"; } export.setFileName(fileName); export.setExport_ps_export(true); export.setExport_ps_type(ExportAbstract.XLS); export.setExport_bzip(false); export.setTitle(fileName); ArrayList cols = new ArrayList(); boolean flag = true; for (Object o : result) { mapList.add(transBean2Map(o)); if (flag) { Field[] fields = o.getClass().getDeclaredFields(); for (int j = 0; j <= fields.length - 1; j++) { //设置可访问 Field field = fields[j]; // if (list.contains(field.getName())) { // continue; // } field.setAccessible(true); if (field.getAnnotation(ApiModelProperty.class) != null) { cols.add(field.getName() + "[" + field.getAnnotation(ApiModelProperty.class).value() + "]"); } } flag = false; } } if (cols.size() < 1) { cols.add("name[名称]"); cols.add("code[编码]"); cols.add("location[地址]"); cols.add("adCode[行政区划编码]"); } export.setCols(cols); export.setGroupable(false); // 设置视图指标 export.setLevel(1); export.setLocksize(0); try { export.Export(response); //导出表头 export.ExportHeadForCustom(response); export.ContinueExport(mapList); FileOutputStream output = new FileOutputStream(templatePath + File.separator + "整改问题_" + File.separator + fileName + ".xls"); // 写入磁盘 export.getWb().write(output); } catch (Exception e) { e.printStackTrace(); } } @Override public TacProvincePblmMendInfo getProblemListInfo(String plistId) { return tacProvincePblmMendInfoDao.get(plistId); } @Override public int updateByPblmId(TacProvincePblmMendInfo tacProvincePblmMendInfo) { return tacProvincePblmMendInfoDao.updateByPblmId(tacProvincePblmMendInfo); } }