package cn.com.goldenwater.dcproj.service.impl.mend; 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.BisInspPblmPlistLogDao; import cn.com.goldenwater.dcproj.dao.BisInspRsvrRgstrDao; import cn.com.goldenwater.dcproj.dto.LoginUser; import cn.com.goldenwater.dcproj.model.AttAdBase; import cn.com.goldenwater.dcproj.model.BisInspAllRlationPers; import cn.com.goldenwater.dcproj.model.BisInspPblm; import cn.com.goldenwater.dcproj.model.BisInspPblmPlist; import cn.com.goldenwater.dcproj.model.BisInspPblmPlistLog; import cn.com.goldenwater.dcproj.model.BisInspRsvrRgstr; import cn.com.goldenwater.dcproj.model.GwComFile; import cn.com.goldenwater.dcproj.model.OlBisInspOrg; import cn.com.goldenwater.dcproj.param.BisInspPblmPlistParam; import cn.com.goldenwater.dcproj.service.AttAdBaseService; import cn.com.goldenwater.dcproj.service.BisInspAllRlationPersService; import cn.com.goldenwater.dcproj.service.BisInspPblmPlistService; import cn.com.goldenwater.dcproj.service.BisInspPblmService; import cn.com.goldenwater.dcproj.service.DicService; import cn.com.goldenwater.dcproj.service.GwComFileService; import cn.com.goldenwater.dcproj.service.OlBisInspOrgService; import cn.com.goldenwater.dcproj.util.BisInspPblmPlistConventUtil; import cn.com.goldenwater.dcproj.util.FileUtil; import cn.com.goldenwater.dcproj.utils.AdLevelUtil; import cn.com.goldenwater.dcproj.utils.DateUtils; import cn.com.goldenwater.dcproj.utils.InspPblmUtils; import cn.com.goldenwater.dcproj.utils.InspUtils; 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.dcproj.utils.impexcel.ExpAndImpUtil; import cn.com.goldenwater.id.util.UuidUtil; import cn.com.goldenwater.target.CheckException; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; 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 org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.lang.reflect.Field; import java.nio.charset.StandardCharsets; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; 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 2020-11-4 */ @Service @Transactional public class BisInspPblmPlistServiceImpl extends AbstractCrudService implements BisInspPblmPlistService { private Logger logger = LoggerFactory.getLogger(BisInspPblmPlistServiceImpl.class); @Autowired private BisInspPblmPlistDao bisInspPblmPlistDao; @Autowired private BisInspPblmPlistLogDao bisInspPblmPlistLogDao; @Autowired private DicService dicService; @Autowired private BisInspAllRlationPersService bisInspAllRlationPersService; @Autowired private BisInspPblmService bisInspPblmService; @Autowired private AttAdBaseService attAdBaseService; @Autowired private GwComFileService gwComFileService; @Autowired private OlBisInspOrgService olBisInspOrgService; @Value("${export.templatePath}") private String templatePath; @Value("${web.upload-path}") private String uploadPath; @Autowired private BisInspRsvrRgstrDao bisInspRsvrRgstrDao; public BisInspPblmPlistServiceImpl(BisInspPblmPlistDao bisInspPblmPlistDao) { super(bisInspPblmPlistDao); this.bisInspPblmPlistDao = bisInspPblmPlistDao; } @Override public int insert(BisInspPblmPlist bisInspPblmPlist) { String uuid = UuidUtil.uuid(); // 生成uuid bisInspPblmPlist.setId(uuid); bisInspPblmPlist.setIntm(new Date()); bisInspPblmPlist.setUptm(new Date()); bisInspPblmPlist.setDataStat("0"); BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersService.getById(bisInspPblmPlist.getPersId()); bisInspPblmPlist.setPersName(bisInspAllRlationPers.getPersName()); bisInspPblmPlist.setPblmState("0"); bisInspPblmPlist.setCrtState("0"); bisInspPblmPlist.setIsStart("0"); bisInspPblmPlist.setImpSource("水利厅"); // 0未销号 1 销号 bisInspPblmPlist.setPblmOut("0"); //获取问题属性,冗余到整改表 BisInspPblm bisInspPblm = bisInspPblmService.get(bisInspPblmPlist.getPblmId()); if (null != bisInspPblm) { // 四川省 填报问题提交时 如果时小水库 判断 水库注册登记号 是否 存在 /* if (bisInspPblm.getObjCode().startsWith("51") && "1".equals(bisInspPblm.getObjType())) { List rsvrRgstrList = bisInspRsvrRgstrDao.getByPblmId(bisInspPblmPlist.getPblmId()); if (null != rsvrRgstrList && rsvrRgstrList.size() > 0) { String damRegCode = rsvrRgstrList.get(0).getDamRegCode(); if (StringUtils.isBlank(damRegCode)) { throw new CheckException("水库注册登记号不能为空!"); } bisInspPblmPlist.setDamRegCode(damRegCode); } }*/ // 设置复核状态 0 未复核 bisInspPblmPlist.setReviewStat("0"); bisInspPblmPlist.setObjCode(bisInspPblm.getObjCode()); bisInspPblmPlist.setObjAdCode(bisInspPblm.getObjAdCode()); bisInspPblmPlist.setPblmAdName(attAdBaseService.getByAdcode(bisInspPblm.getObjAdCode()).getAdFullName()); bisInspPblmPlist.setObjName(bisInspPblm.getObjName()); bisInspPblmPlist.setObjType(bisInspPblm.getObjType()); bisInspPblmPlist.setPblmDescBz(bisInspPblm.getPblmDescBz()); bisInspPblmPlist.setPblmNameBz(bisInspPblm.getPblmNameBz()); bisInspPblmPlist.setPblmTm(bisInspPblm.getCollTime()); bisInspPblmPlist.setInspPblmDesc(bisInspPblm.getInspPblmDesc()); bisInspPblmPlist.setInspPblmCate(bisInspPblm.getInspPblmCate()); // 根据问题中的 是否省属 设置 整改的 省属 属性 bisInspPblmPlist.setProvincial(bisInspPblm.getProvincial()); // 根据问题中的 机构id和 所属行政区域代码 设置 整改记录中的机构Id和所属行政区域代码 bisInspPblmPlist.setBelongOrgId(bisInspPblm.getBelongOrgId()); bisInspPblmPlist.setBelongAdCode(bisInspPblm.getBelongAdCode()); // 山东省的 市、县 自查 整改流程 1-未下发 默认值 if (bisInspPblm.getBelongAdCode().startsWith("37")) { String curOrgId = bisInspPblmPlist.getSendOrgId(); OlBisInspOrg olBisInspOrg = olBisInspOrgService.get(curOrgId); AttAdBase attAdBase = attAdBaseService.getByAdcode(olBisInspOrg.getAdCode()); String adGrad = attAdBase.getAdGrad(); if ("3".equals(adGrad)) { // 市级自查 添加整改问题 bisInspPblmPlist.setSelfInspProcessState("1"); // 增加 自查记录 AddOptionLog(uuid, "0", "添加整改问题", "", "市级待下发", bisInspPblmPlist.getPersId(), bisInspAllRlationPers.getPersName(), bisInspPblmPlist.getSendOrgId(), bisInspPblmPlist.getSendOrgName()); } else if ("4".equals(adGrad)) { // 县级级自查 添加整改问题 bisInspPblmPlist.setSelfInspProcessState("2"); // 增加 自查记录 AddOptionLog(uuid, "0", "添加整改问题", "", "县级待整改反馈", bisInspPblmPlist.getPersId(), bisInspAllRlationPers.getPersName(), bisInspPblmPlist.getSendOrgId(), bisInspPblmPlist.getSendOrgName()); } } } return this.bisInspPblmPlistDao.insert(bisInspPblmPlist); } @Override public int update(BisInspPblmPlist bisInspPblmPlist) { bisInspPblmPlist.setUptm(new Date()); return this.bisInspPblmPlistDao.update(bisInspPblmPlist); } @Override public int delete(String id) { return this.bisInspPblmPlistDao.delete(id); } @Override public PageInfo getList(BisInspPblmPlistParam bisInspPblmPlistParam) { PageHelper.startPage(bisInspPblmPlistParam); bisInspPblmPlistParam.setObjAdCode(AdLevelUtil.getAddvcd(bisInspPblmPlistParam.getObjAdCode())); List list = this.bisInspPblmPlistDao.getList(bisInspPblmPlistParam); PageInfo pageInfo = new PageInfo<>(list); for (BisInspPblmPlist bisInspPblmPlist : pageInfo.getList()) { //补充省市县 if (bisInspPblmPlist.getPblmAdName() != null) { if (bisInspPblmPlist.getPblmAdName().contains(SplitValue.HENG_SPLIT)) { String[] split = bisInspPblmPlist.getPblmAdName().split(SplitValue.HENG_SPLIT); if (split.length == 3) { bisInspPblmPlist.setProvince(split[0]); bisInspPblmPlist.setCity(split[1]); bisInspPblmPlist.setCounty(split[2]); } if (split.length == 2) { bisInspPblmPlist.setProvince(split[0]); bisInspPblmPlist.setCity(split[1]); bisInspPblmPlist.setCounty(""); } } else { bisInspPblmPlist.setProvince(bisInspPblmPlist.getPblmAdName()); } } } return pageInfo; } @Override public PageInfo sendOrgGetList(BisInspPblmPlistParam bisInspPblmPlistParam, String adCode) { bisInspPblmPlistParam.setObjAdCode(AdLevelUtil.getAddvcd(bisInspPblmPlistParam.getObjAdCode())); bisInspPblmPlistParam.setImpSource(InspUtils.setOrgIds(bisInspPblmPlistParam.getImpSource())); setDate(bisInspPblmPlistParam); if (adCode.startsWith("37")) { // 山东省的 省、市、县 分级查询 String orgType = bisInspPblmPlistParam.getOrgType(); if (StringUtils.isEmpty(orgType)) { // 默认为省级查询 orgType = "province"; bisInspPblmPlistParam.setProvincialLevel(null); } bisInspPblmPlistParam.setOrgType(null); AttAdBase curAdBase = attAdBaseService.getByAdcode(adCode); String adGrad = curAdBase.getAdGrad(); bisInspPblmPlistParam.setAdGrad(null); if ("2".equals(adGrad)) { // 当前机构为省级用户 if ("city".equals(orgType)) { // 省级用户查看 市级自查菜单 List cityOrgList = olBisInspOrgService.getByPid(bisInspPblmPlistParam.getOrgId(), null); bisInspPblmPlistParam.setBelongOrgId(cityOrgList.stream().map(m -> m.getOrgId()).collect(Collectors.joining("','", "'", "'"))); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); bisInspPblmPlistParam.setProvincialLevel(null); bisInspPblmPlistParam.setObjAdCode(bisInspPblmPlistParam.getProvince()); bisInspPblmPlistParam.setProvince(null); } else if ("county".equals(orgType)) { // 省级用户查看 县级自查菜单 logger.debug("county -- province:" + bisInspPblmPlistParam.getProvince()); List cityOrgList = olBisInspOrgService.getByPid(bisInspPblmPlistParam.getOrgId(), null); List countyOrgList = new ArrayList<>(); for (OlBisInspOrg cityOrg : cityOrgList) { List countyInspOrgs = olBisInspOrgService.getByPid(cityOrg.getOrgId(), null); if (null != countyInspOrgs && countyInspOrgs.size() > 0) { countyOrgList.addAll(countyInspOrgs); } } bisInspPblmPlistParam.setBelongOrgId(countyOrgList.stream().map(m -> m.getOrgId()).collect(Collectors.joining("','", "'", "'"))); logger.debug("county -- belongorgid:" + bisInspPblmPlistParam.getBelongOrgId()); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); bisInspPblmPlistParam.setProvincialLevel(null); bisInspPblmPlistParam.setObjAdCode(bisInspPblmPlistParam.getProvince()); bisInspPblmPlistParam.setProvince(null); } } else if ("3".equals(adGrad)) { bisInspPblmPlistParam.setProvincialLevel(null); // 当前机构为市级用户 if ("province".equals(orgType)) { // 市级用户查看 省级下发的 OlBisInspOrg bisInspOrg = olBisInspOrgService.get(bisInspPblmPlistParam.getOrgId()); bisInspPblmPlistParam.setBelongOrgId(bisInspOrg.getOrgPid()); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); bisInspPblmPlistParam.setProvincialLevel("2"); } else if ("city".equals(orgType)) { // 市级用户查看 市级自查菜单 } else if ("county".equals(orgType)) { // 市级用户查看 县级自查菜单 List cityOrgList = olBisInspOrgService.getByPid(bisInspPblmPlistParam.getOrgId(), null); bisInspPblmPlistParam.setBelongOrgId(cityOrgList.stream().map(m -> m.getOrgId()).collect(Collectors.joining("','", "'", "'"))); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); } } else if ("4".equals(adGrad)) { bisInspPblmPlistParam.setProvincialLevel(null); // 当前用户的区、县级别的 用户 ,查询 上级 市级的 if ("province".equals(orgType)) { // 县级用户查看 省级下发的 OlBisInspOrg bisInspOrg = olBisInspOrgService.get(bisInspPblmPlistParam.getOrgId()); OlBisInspOrg cityBisInspOrg = olBisInspOrgService.get(bisInspOrg.getOrgPid()); bisInspPblmPlistParam.setBelongOrgId(cityBisInspOrg.getOrgPid()); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); bisInspPblmPlistParam.setProvincialLevel("2"); } else if ("city".equals(orgType)) { // 县级用户查询 市级 下发的 问题 OlBisInspOrg bisInspOrg = olBisInspOrgService.get(bisInspPblmPlistParam.getOrgId()); bisInspPblmPlistParam.setBelongOrgId(bisInspOrg.getOrgPid()); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); } } } else { bisInspPblmPlistParam.setBelongOrgId(null); bisInspPblmPlistParam.setOrgType(null); bisInspPblmPlistParam.setAdGrad(null); } PageHelper.startPage(bisInspPblmPlistParam); //只能查询分配给个人类别的,还有自己添加的,做过滤 List list = this.bisInspPblmPlistDao.sendOrgGetList(bisInspPblmPlistParam); logger.info("bisInspPblmPlistParam:" + bisInspPblmPlistParam.toString()); PageInfo pageInfo = new PageInfo<>(list); for (BisInspPblmPlist bisInspPblmPlist : pageInfo.getList()) { bisInspPblmPlist.setYear(DateUtils.Date2Str(bisInspPblmPlist.getPblmTm(), "yyyy")); // 补充省市县 if (bisInspPblmPlist.getPblmAdName() != null) { if (bisInspPblmPlist.getPblmAdName().contains(SplitValue.HENG_SPLIT)) { String[] split = bisInspPblmPlist.getPblmAdName().split(SplitValue.HENG_SPLIT); if (split.length == 3) { bisInspPblmPlist.setProvince(split[0]); bisInspPblmPlist.setCity(split[1]); bisInspPblmPlist.setCounty(split[2]); } if (split.length == 2) { bisInspPblmPlist.setProvince(split[0]); bisInspPblmPlist.setCity(split[1]); bisInspPblmPlist.setCounty(""); } } else { bisInspPblmPlist.setProvince(bisInspPblmPlist.getPblmAdName()); } } // 查询 logger.info("=======================================bisInspPblmPlistParam.getProvince():" + bisInspPblmPlistParam.getProvince() + "=============================================================="); List> bpmDataIdList = bisInspPblmPlistDao.getBpmDataId(bisInspPblmPlist.getId(), bisInspPblmPlistParam.getOrgId(), bisInspPblmPlistParam.getProvince()); if (CollectionUtils.isNotEmpty(bpmDataIdList)) { Map bpmData = bpmDataIdList.get(0); bisInspPblmPlist.setTaskInstId(bpmData.get("taskInstId")); bisInspPblmPlist.setProcInstId(bpmData.get("procInstId")); bisInspPblmPlist.setProcTypeName("督查-" + bpmData.get("procTypeName")); } // 四川省 如果督查对象是水库 就把 大坝注册登记号 damRegCode 带出来 if (StringUtils.isEmpty(bisInspPblmPlist.getDamRegCode()) && "1".equals(bisInspPblmPlist.getObjType()) && (null != bisInspPblmPlist.getObjAdCode() ? bisInspPblmPlist.getObjAdCode().startsWith("51") : (null != bisInspPblmPlist.getBelongAdCode() ? bisInspPblmPlist.getBelongAdCode().startsWith("51") : false))) { List rgstrList = this.bisInspRsvrRgstrDao.getByPblmId(bisInspPblmPlist.getPblmId()); if (null != rgstrList && rgstrList.size() > 0) { bisInspPblmPlist.setDamRegCode(rgstrList.get(0).getDamRegCode()); } } } return pageInfo; } private void setDate(BisInspPblmPlistParam bisInspPblmPlistParam) { // 1. 判断 时间类别 String timeType = Optional.ofNullable(bisInspPblmPlistParam).map(BisInspPblmPlistParam::getTimeType).orElse(""); if (timeType.contains("_")) { //自定义时间段 String[] dateStr = timeType.split("_"); if (2 == dateStr.length) { bisInspPblmPlistParam.setSttm(DateUtils.Str2Date(dateStr[0])); bisInspPblmPlistParam.setEntm(DateUtils.Str2Date(dateStr[1])); return; } } Calendar sttm = Calendar.getInstance(); switch (timeType) { // 近一个月 case "1": sttm.add(Calendar.MONTH, -1); break; // 近三个月 case "2": sttm.add(Calendar.MONTH, -3); break; // 近半年 case "3": sttm.add(Calendar.MONTH, -6); break; // 近一年 case "4": sttm.add(Calendar.YEAR, -1); break; // 今年 case "6": sttm.set(Integer.parseInt(DateUtils.getToday("yyyy")), Calendar.JANUARY, 1); break; case "7": // 按年度 break; default: return; } bisInspPblmPlistParam.setSttm(sttm.getTime()); bisInspPblmPlistParam.setEntm(new Date()); if ("7".equals(timeType)) { // 福建省 督查首页 按年份统计 String year = bisInspPblmPlistParam.getYear(); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); LocalDate startDate = null; if (cn.com.goldenwater.dcproj.utils.StringUtils.isNotBlank(year)) { try { startDate = LocalDate.parse(year + "-01-01", dtf); } catch (Exception e) { startDate = LocalDate.now().withMonth(1).withDayOfMonth(1); } } if (null == startDate) { startDate = LocalDate.now().withMonth(1).withDayOfMonth(1); } LocalDate endDate = startDate.plusYears(1L).minusDays(1L); try { bisInspPblmPlistParam.setSttm(sdf.parse(startDate.format(dtf))); bisInspPblmPlistParam.setEntm(sdf.parse(endDate.format(dtf))); } catch (ParseException e) { bisInspPblmPlistParam.setSttm(sttm.getTime()); bisInspPblmPlistParam.setEntm(new Date()); } bisInspPblmPlistParam.setYear(String.valueOf(startDate.getYear())); } } @Override public PageInfo recvGetList(BisInspPblmPlistParam bisInspPblmPlistParam) { PageHelper.startPage(bisInspPblmPlistParam); List list = this.bisInspPblmPlistDao.recvGetList(bisInspPblmPlistParam); PageInfo pageInfo = new PageInfo<>(list); for (BisInspPblmPlist bisInspPblmPlist : pageInfo.getList()) { //补充省市县 if (bisInspPblmPlist.getPblmAdName() != null) { if (bisInspPblmPlist.getPblmAdName().contains(SplitValue.HENG_SPLIT)) { String[] split = bisInspPblmPlist.getPblmAdName().split(SplitValue.HENG_SPLIT); if (split.length == 3) { bisInspPblmPlist.setProvince(split[0]); bisInspPblmPlist.setCity(split[1]); bisInspPblmPlist.setCounty(split[2]); } if (split.length == 2) { bisInspPblmPlist.setProvince(split[0]); bisInspPblmPlist.setCity(split[1]); bisInspPblmPlist.setCounty(""); } } else { bisInspPblmPlist.setProvince(bisInspPblmPlist.getPblmAdName()); } } } return pageInfo; } @Override public PageInfo recvCountyGetList(BisInspPblmPlistParam bisInspPblmPlistParam) { PageHelper.startPage(bisInspPblmPlistParam); List list = this.bisInspPblmPlistDao.recvCountyGetList(bisInspPblmPlistParam); PageInfo pageInfo = new PageInfo<>(list); for (BisInspPblmPlist bisInspPblmPlist : pageInfo.getList()) { //补充省市县 if (bisInspPblmPlist.getPblmAdName() != null) { if (bisInspPblmPlist.getPblmAdName().contains(SplitValue.HENG_SPLIT)) { String[] split = bisInspPblmPlist.getPblmAdName().split(SplitValue.HENG_SPLIT); if (split.length == 3) { bisInspPblmPlist.setProvince(split[0]); bisInspPblmPlist.setCity(split[1]); bisInspPblmPlist.setCounty(split[2]); } if (split.length == 2) { bisInspPblmPlist.setProvince(split[0]); bisInspPblmPlist.setCity(split[1]); bisInspPblmPlist.setCounty(""); } } else { bisInspPblmPlist.setProvince(bisInspPblmPlist.getPblmAdName()); } } } return pageInfo; } @Override public String getHandWarn(BisInspPblmPlistParam bisInspPblmPlistParam) { String info = ""; //bisInspPblmPlistParam.setIsRect("0"); List list = this.bisInspPblmPlistDao.getHandWarn(bisInspPblmPlistParam); if (list != null && list.size() > 0) { info = "有" + list.size() + "个整改问题暂时没反馈,请及时催促相关单位填写整改情况。"; } else { info = "暂无问题需要反馈!"; } return info; } @Override public void downloadTemplate(HttpServletResponse response) { // 模板路径 String filePath = templatePath + File.separator + "pblm_zg.xls"; try { ExportUtil.download(response, new ArrayList<>(), filePath); } catch (IOException e) { e.printStackTrace(); } } @Override public String uploadFile(MultipartFile[] file) { return null; } @Override public void exportListExcel(BisInspPblmPlistParam bisInspPblmPlistParam, String adCode, HttpServletResponse response) throws IOException { /* 1. 获取整改数据 */ bisInspPblmPlistParam.setObjAdCode(AdLevelUtil.getAddvcd(bisInspPblmPlistParam.getObjAdCode())); bisInspPblmPlistParam.setImpSource(InspUtils.setOrgIds(bisInspPblmPlistParam.getImpSource())); setDate(bisInspPblmPlistParam); if (adCode.startsWith("37")) { // 山东省的 省、市、县 分级查询 String orgType = bisInspPblmPlistParam.getOrgType(); if (StringUtils.isEmpty(orgType)) { // 默认为省级查询 orgType = "province"; bisInspPblmPlistParam.setProvincialLevel(null); } bisInspPblmPlistParam.setOrgType(null); AttAdBase curAdBase = attAdBaseService.getByAdcode(adCode); String adGrad = curAdBase.getAdGrad(); bisInspPblmPlistParam.setAdGrad(null); if ("2".equals(adGrad)) { // 当前机构为省级用户 if ("city".equals(orgType)) { // 省级用户查看 市级自查菜单 List cityOrgList = olBisInspOrgService.getByPid(bisInspPblmPlistParam.getOrgId(), null); bisInspPblmPlistParam.setBelongOrgId(cityOrgList.stream().map(m -> m.getOrgId()).collect(Collectors.joining("','", "'", "'"))); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); bisInspPblmPlistParam.setProvincialLevel(null); bisInspPblmPlistParam.setObjAdCode(bisInspPblmPlistParam.getProvince()); bisInspPblmPlistParam.setProvince(null); } else if ("county".equals(orgType)) { // 省级用户查看 县级自查菜单 logger.debug("county -- province:" + bisInspPblmPlistParam.getProvince()); List cityOrgList = olBisInspOrgService.getByPid(bisInspPblmPlistParam.getOrgId(), null); List countyOrgList = new ArrayList<>(); for (OlBisInspOrg cityOrg : cityOrgList) { List countyInspOrgs = olBisInspOrgService.getByPid(cityOrg.getOrgId(), null); if (null != countyInspOrgs && countyInspOrgs.size() > 0) { countyOrgList.addAll(countyInspOrgs); } } bisInspPblmPlistParam.setBelongOrgId(countyOrgList.stream().map(m -> m.getOrgId()).collect(Collectors.joining("','", "'", "'"))); logger.debug("county -- belongorgid:" + bisInspPblmPlistParam.getBelongOrgId()); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); bisInspPblmPlistParam.setProvincialLevel(null); bisInspPblmPlistParam.setObjAdCode(bisInspPblmPlistParam.getProvince()); bisInspPblmPlistParam.setProvince(null); } } else if ("3".equals(adGrad)) { bisInspPblmPlistParam.setProvincialLevel(null); // 当前机构为市级用户 if ("province".equals(orgType)) { // 市级用户查看 省级下发的 OlBisInspOrg bisInspOrg = olBisInspOrgService.get(bisInspPblmPlistParam.getOrgId()); bisInspPblmPlistParam.setBelongOrgId(bisInspOrg.getOrgPid()); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); bisInspPblmPlistParam.setProvincialLevel("2"); } else if ("city".equals(orgType)) { // 市级用户查看 市级自查菜单 } else if ("county".equals(orgType)) { // 市级用户查看 县级自查菜单 List cityOrgList = olBisInspOrgService.getByPid(bisInspPblmPlistParam.getOrgId(), null); bisInspPblmPlistParam.setBelongOrgId(cityOrgList.stream().map(m -> m.getOrgId()).collect(Collectors.joining("','", "'", "'"))); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); } } else if ("4".equals(adGrad)) { bisInspPblmPlistParam.setProvincialLevel(null); // 当前用户的区、县级别的 用户 ,查询 上级 市级的 if ("province".equals(orgType)) { // 县级用户查看 省级下发的 OlBisInspOrg bisInspOrg = olBisInspOrgService.get(bisInspPblmPlistParam.getOrgId()); OlBisInspOrg cityBisInspOrg = olBisInspOrgService.get(bisInspOrg.getOrgPid()); bisInspPblmPlistParam.setBelongOrgId(cityBisInspOrg.getOrgPid()); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); bisInspPblmPlistParam.setProvincialLevel("2"); } else if ("city".equals(orgType)) { // 县级用户查询 市级 下发的 问题 OlBisInspOrg bisInspOrg = olBisInspOrgService.get(bisInspPblmPlistParam.getOrgId()); bisInspPblmPlistParam.setBelongOrgId(bisInspOrg.getOrgPid()); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); } } } else { bisInspPblmPlistParam.setBelongOrgId(null); bisInspPblmPlistParam.setOrgType(null); bisInspPblmPlistParam.setAdGrad(null); } List list = this.bisInspPblmPlistDao.sendOrgGetList(bisInspPblmPlistParam); if (list == null || list.size() == 0) { logger.info("--------------------------------------exp pblm mend size 0-----------------------------------------------"); return; } list.stream().filter(pblm -> StringUtils.isNotBlank(pblm.getPblmAdName())).forEach(pblm -> { pblm.setYear(DateUtils.Date2Str(pblm.getPblmTm(), "yyyy")); String pblmOut = "1".equals(pblm.getPblmOut()) ? "是" : "否"; pblm.setPblmOut(pblmOut); if (pblm.getPblmAdName().contains(SplitValue.HENG_SPLIT)) { String[] split = pblm.getPblmAdName().split(SplitValue.HENG_SPLIT); if (split.length == 3) { pblm.setProvince(split[0]); pblm.setCity(split[1]); pblm.setCounty(split[2]); } if (split.length == 2) { pblm.setProvince(split[0]); pblm.setCity(split[1]); pblm.setCounty(""); } } else { pblm.setProvince(pblm.getPblmAdName()); } }); String mkdirName = templatePath + File.separator + "整改问题_" + DateUtils.getToday("yyyyMMddHHmmss"); File file = new File(mkdirName); // 如果文件夹不存在 if (!file.exists()) { // 创建文件夹 file.mkdirs(); logger.info("--------------------------------------exp pblm mend mak dir-----------------------------------------------"); } try { exportExcel(list, response, "整改问题列表", mkdirName, COMMONLIST_AND_OPEN_ANNOTATION, BisInspPblmPlist.class); ExpAndImpUtil.downloadFile(response, mkdirName + File.separator + "整改问题列表.xls", "整改问题模板"); } catch (Exception e) { logger.error("导出excel出错"); } } @Override public void export(BisInspPblmPlistParam bisInspPblmPlistParam, String adCode, HttpServletResponse response) throws IOException { /* 1. 获取整改数据 */ bisInspPblmPlistParam.setObjAdCode(AdLevelUtil.getAddvcd(bisInspPblmPlistParam.getObjAdCode())); bisInspPblmPlistParam.setImpSource(InspUtils.setOrgIds(bisInspPblmPlistParam.getImpSource())); setDate(bisInspPblmPlistParam); if (adCode.startsWith("37")) { // 山东省的 省、市、县 分级查询 String orgType = bisInspPblmPlistParam.getOrgType(); if (StringUtils.isEmpty(orgType)) { // 默认为省级查询 orgType = "province"; bisInspPblmPlistParam.setProvincialLevel(null); } bisInspPblmPlistParam.setOrgType(null); AttAdBase curAdBase = attAdBaseService.getByAdcode(adCode); String adGrad = curAdBase.getAdGrad(); bisInspPblmPlistParam.setAdGrad(null); if ("2".equals(adGrad)) { // 当前机构为省级用户 if ("city".equals(orgType)) { // 省级用户查看 市级自查菜单 List cityOrgList = olBisInspOrgService.getByPid(bisInspPblmPlistParam.getOrgId(), null); bisInspPblmPlistParam.setBelongOrgId(cityOrgList.stream().map(m -> m.getOrgId()).collect(Collectors.joining("','", "'", "'"))); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); bisInspPblmPlistParam.setProvincialLevel(null); bisInspPblmPlistParam.setObjAdCode(bisInspPblmPlistParam.getProvince()); bisInspPblmPlistParam.setProvince(null); } else if ("county".equals(orgType)) { // 省级用户查看 县级自查菜单 logger.debug("county -- province:" + bisInspPblmPlistParam.getProvince()); List cityOrgList = olBisInspOrgService.getByPid(bisInspPblmPlistParam.getOrgId(), null); List countyOrgList = new ArrayList<>(); for (OlBisInspOrg cityOrg : cityOrgList) { List countyInspOrgs = olBisInspOrgService.getByPid(cityOrg.getOrgId(), null); if (null != countyInspOrgs && countyInspOrgs.size() > 0) { countyOrgList.addAll(countyInspOrgs); } } bisInspPblmPlistParam.setBelongOrgId(countyOrgList.stream().map(m -> m.getOrgId()).collect(Collectors.joining("','", "'", "'"))); logger.debug("county -- belongorgid:" + bisInspPblmPlistParam.getBelongOrgId()); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); bisInspPblmPlistParam.setProvincialLevel(null); bisInspPblmPlistParam.setObjAdCode(bisInspPblmPlistParam.getProvince()); bisInspPblmPlistParam.setProvince(null); } } else if ("3".equals(adGrad)) { bisInspPblmPlistParam.setProvincialLevel(null); // 当前机构为市级用户 if ("province".equals(orgType)) { // 市级用户查看 省级下发的 OlBisInspOrg bisInspOrg = olBisInspOrgService.get(bisInspPblmPlistParam.getOrgId()); bisInspPblmPlistParam.setBelongOrgId(bisInspOrg.getOrgPid()); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); bisInspPblmPlistParam.setProvincialLevel("2"); } else if ("city".equals(orgType)) { // 市级用户查看 市级自查菜单 } else if ("county".equals(orgType)) { // 市级用户查看 县级自查菜单 List cityOrgList = olBisInspOrgService.getByPid(bisInspPblmPlistParam.getOrgId(), null); bisInspPblmPlistParam.setBelongOrgId(cityOrgList.stream().map(m -> m.getOrgId()).collect(Collectors.joining("','", "'", "'"))); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); } } else if ("4".equals(adGrad)) { bisInspPblmPlistParam.setProvincialLevel(null); // 当前用户的区、县级别的 用户 ,查询 上级 市级的 if ("province".equals(orgType)) { // 县级用户查看 省级下发的 OlBisInspOrg bisInspOrg = olBisInspOrgService.get(bisInspPblmPlistParam.getOrgId()); OlBisInspOrg cityBisInspOrg = olBisInspOrgService.get(bisInspOrg.getOrgPid()); bisInspPblmPlistParam.setBelongOrgId(cityBisInspOrg.getOrgPid()); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); bisInspPblmPlistParam.setProvincialLevel("2"); } else if ("city".equals(orgType)) { // 县级用户查询 市级 下发的 问题 OlBisInspOrg bisInspOrg = olBisInspOrgService.get(bisInspPblmPlistParam.getOrgId()); bisInspPblmPlistParam.setBelongOrgId(bisInspOrg.getOrgPid()); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); } } } else { bisInspPblmPlistParam.setBelongOrgId(null); bisInspPblmPlistParam.setOrgType(null); bisInspPblmPlistParam.setAdGrad(null); } List list = this.bisInspPblmPlistDao.sendOrgGetList(bisInspPblmPlistParam); if (list == null || list.size() == 0) { logger.info("--------------------------------------exp pblm mend size 0-----------------------------------------------"); return; } list.stream().filter(pblm -> StringUtils.isNotBlank(pblm.getPblmAdName())).forEach(pblm -> { pblm.setYear(DateUtils.Date2Str(pblm.getPblmTm(), "yyyy")); String pblmOut = "1".equals(pblm.getPblmOut()) ? "是" : "否"; pblm.setPblmOut(pblmOut); if (pblm.getPblmAdName().contains(SplitValue.HENG_SPLIT)) { String[] split = pblm.getPblmAdName().split(SplitValue.HENG_SPLIT); if (split.length == 3) { pblm.setProvince(split[0]); pblm.setCity(split[1]); pblm.setCounty(split[2]); } if (split.length == 2) { pblm.setProvince(split[0]); pblm.setCity(split[1]); pblm.setCounty(""); } } else { pblm.setProvince(pblm.getPblmAdName()); } }); /* 2.0 创建文件夹 */ String mkdirName = templatePath + File.separator + "整改问题_" + DateUtils.getToday("yyyyMMddHHmmss"); File file = new File(mkdirName); // 如果文件夹不存在 if (!file.exists()) { // 创建文件夹 file.mkdirs(); logger.info("--------------------------------------exp pblm mend mak dir-----------------------------------------------"); } /* 2. 获取表格 */ try { exportExcel(list, response, "整改问题列表", mkdirName, COMMONLIST_AND_OPEN_ANNOTATION, BisInspPblmPlist.class); } catch (Exception e) { logger.error("导出excel出错"); } logger.info("--------------------------------------exp pblm mend excel -----------------------------------------------"); /* 3. 循环问题获取问题文件 */ 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 void exportExcel(BisInspPblmPlistParam bisInspPblmPlistParam, String adCode, HttpServletResponse response) throws IOException { /* 1. 获取整改数据 */ bisInspPblmPlistParam.setObjAdCode(AdLevelUtil.getAddvcd(bisInspPblmPlistParam.getObjAdCode())); bisInspPblmPlistParam.setImpSource(InspUtils.setOrgIds(bisInspPblmPlistParam.getImpSource())); setDate(bisInspPblmPlistParam); if (adCode.startsWith("37")) { // 山东省的 省、市、县 分级查询 String orgType = bisInspPblmPlistParam.getOrgType(); if (StringUtils.isEmpty(orgType)) { // 默认为省级查询 orgType = "province"; bisInspPblmPlistParam.setProvincialLevel(null); } bisInspPblmPlistParam.setOrgType(null); AttAdBase curAdBase = attAdBaseService.getByAdcode(adCode); String adGrad = curAdBase.getAdGrad(); bisInspPblmPlistParam.setAdGrad(null); if ("2".equals(adGrad)) { // 当前机构为省级用户 if ("city".equals(orgType)) { // 省级用户查看 市级自查菜单 List cityOrgList = olBisInspOrgService.getByPid(bisInspPblmPlistParam.getOrgId(), null); bisInspPblmPlistParam.setBelongOrgId(cityOrgList.stream().map(m -> m.getOrgId()).collect(Collectors.joining("','", "'", "'"))); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); bisInspPblmPlistParam.setProvincialLevel(null); bisInspPblmPlistParam.setObjAdCode(bisInspPblmPlistParam.getProvince()); bisInspPblmPlistParam.setProvince(null); } else if ("county".equals(orgType)) { // 省级用户查看 县级自查菜单 logger.debug("county -- province:" + bisInspPblmPlistParam.getProvince()); List cityOrgList = olBisInspOrgService.getByPid(bisInspPblmPlistParam.getOrgId(), null); List countyOrgList = new ArrayList<>(); for (OlBisInspOrg cityOrg : cityOrgList) { List countyInspOrgs = olBisInspOrgService.getByPid(cityOrg.getOrgId(), null); if (null != countyInspOrgs && countyInspOrgs.size() > 0) { countyOrgList.addAll(countyInspOrgs); } } bisInspPblmPlistParam.setBelongOrgId(countyOrgList.stream().map(m -> m.getOrgId()).collect(Collectors.joining("','", "'", "'"))); logger.debug("county -- belongorgid:" + bisInspPblmPlistParam.getBelongOrgId()); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); bisInspPblmPlistParam.setProvincialLevel(null); bisInspPblmPlistParam.setObjAdCode(bisInspPblmPlistParam.getProvince()); bisInspPblmPlistParam.setProvince(null); } } else if ("3".equals(adGrad)) { bisInspPblmPlistParam.setProvincialLevel(null); // 当前机构为市级用户 if ("province".equals(orgType)) { // 市级用户查看 省级下发的 OlBisInspOrg bisInspOrg = olBisInspOrgService.get(bisInspPblmPlistParam.getOrgId()); bisInspPblmPlistParam.setBelongOrgId(bisInspOrg.getOrgPid()); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); bisInspPblmPlistParam.setProvincialLevel("2"); } else if ("city".equals(orgType)) { // 市级用户查看 市级自查菜单 } else if ("county".equals(orgType)) { // 市级用户查看 县级自查菜单 List cityOrgList = olBisInspOrgService.getByPid(bisInspPblmPlistParam.getOrgId(), null); bisInspPblmPlistParam.setBelongOrgId(cityOrgList.stream().map(m -> m.getOrgId()).collect(Collectors.joining("','", "'", "'"))); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); } } else if ("4".equals(adGrad)) { bisInspPblmPlistParam.setProvincialLevel(null); // 当前用户的区、县级别的 用户 ,查询 上级 市级的 if ("province".equals(orgType)) { // 县级用户查看 省级下发的 OlBisInspOrg bisInspOrg = olBisInspOrgService.get(bisInspPblmPlistParam.getOrgId()); OlBisInspOrg cityBisInspOrg = olBisInspOrgService.get(bisInspOrg.getOrgPid()); bisInspPblmPlistParam.setBelongOrgId(cityBisInspOrg.getOrgPid()); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); bisInspPblmPlistParam.setProvincialLevel("2"); } else if ("city".equals(orgType)) { // 县级用户查询 市级 下发的 问题 OlBisInspOrg bisInspOrg = olBisInspOrgService.get(bisInspPblmPlistParam.getOrgId()); bisInspPblmPlistParam.setBelongOrgId(bisInspOrg.getOrgPid()); bisInspPblmPlistParam.setOrgType(orgType); bisInspPblmPlistParam.setAdGrad(adGrad); } } } else { bisInspPblmPlistParam.setBelongOrgId(null); bisInspPblmPlistParam.setOrgType(null); bisInspPblmPlistParam.setAdGrad(null); } List list = this.bisInspPblmPlistDao.sendOrgGetList(bisInspPblmPlistParam); if (list == null || list.size() == 0) { logger.info("--------------------------------------exp pblm mend size 0-----------------------------------------------"); return; } list.stream().filter(pblm -> StringUtils.isNotBlank(pblm.getPblmAdName())).forEach(pblm -> { pblm.setYear(DateUtils.Date2Str(pblm.getPblmTm(), "yyyy")); String pblmOut = "1".equals(pblm.getPblmOut()) ? "是" : "否"; pblm.setPblmOut(pblmOut); if (pblm.getPblmAdName().contains(SplitValue.HENG_SPLIT)) { String[] split = pblm.getPblmAdName().split(SplitValue.HENG_SPLIT); if (split.length == 3) { pblm.setProvince(split[0]); pblm.setCity(split[1]); pblm.setCounty(split[2]); } if (split.length == 2) { pblm.setProvince(split[0]); pblm.setCity(split[1]); pblm.setCounty(""); } } else { pblm.setProvince(pblm.getPblmAdName()); } }); /* 2.0 创建文件夹 */ String mkdirName = templatePath + File.separator + "整改问题_" + DateUtils.getToday("yyyyMMddHHmmss"); File file = new File(mkdirName); // 如果文件夹不存在 if (!file.exists()) { // 创建文件夹 file.mkdirs(); logger.info("--------------------------------------exp pblm mend mak dir-----------------------------------------------"); } /* 2. 获取表格 */ try { exportExcel(list, response, "整改问题列表", mkdirName, COMMONLIST_AND_OPEN_ANNOTATION, BisInspPblmPlist.class); } catch (Exception e) { logger.error("导出excel出错"); } logger.info("--------------------------------------exp pblm mend excel -----------------------------------------------"); /* 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(); } /** * 去除所有的整改类别(汉字) * * @return */ @Override public List getAllClassType(String adCode) { return bisInspPblmPlistDao.getAllClassType(adCode); } @Override public void insertFile(BisInspPblmPlist bisInspPblmPlist) { String uuid = UuidUtil.uuid(); // 生成uuid bisInspPblmPlist.setId(uuid); bisInspPblmPlist.setUptm(new Date()); bisInspPblmPlist.setDataStat("0"); BisInspAllRlationPers bisInspAllRlationPers = bisInspAllRlationPersService.getById(bisInspPblmPlist.getPersId()); bisInspPblmPlist.setPersName(bisInspAllRlationPers.getPersName()); bisInspPblmPlist.setPblmState("0"); bisInspPblmPlist.setCrtState("0"); bisInspPblmPlist.setIsStart("0"); bisInspPblmPlist.setIsRect("0"); this.bisInspPblmPlistDao.insert(bisInspPblmPlist); } 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 == BisInspPblmPlist.class) { Class superClass = BaseBean.class; fields = new Field[25]; fields[0] = superClass.getDeclaredField("province"); // 省 fields[1] = cla.getDeclaredField("city"); // 市 fields[2] = cla.getDeclaredField("county"); // 县 fields[3] = cla.getDeclaredField("impSource"); // 数据来源 fields[4] = cla.getDeclaredField("year"); // 检查年度 fields[5] = cla.getDeclaredField("pblmNub"); // 印发文号 fields[6] = cla.getDeclaredField("pblmNubName"); // 印发文件名 fields[7] = cla.getDeclaredField("dutyName"); // 责任处室 fields[8] = cla.getDeclaredField("pblmClassify"); // 督查类型 fields[9] = cla.getDeclaredField("objName"); // 对象名称 fields[10] = cla.getDeclaredField("pblmNameBz"); // 问题类型 fields[11] = cla.getDeclaredField("checkPointBz"); // 检查项目 fields[12] = cla.getDeclaredField("pblmDescBz");// 问题描述 fields[13] = cla.getDeclaredField("inspPblmDesc");// 详细描述 fields[14] = cla.getDeclaredField("inspPblmCate");// 严重程度 fields[15] = cla.getDeclaredField("pblmTm");// 上报时间 fields[16] = cla.getDeclaredField("pblmCrtm");// 整改时限 fields[17] = cla.getDeclaredField("pblmReason");// 整改建议 fields[18] = cla.getDeclaredField("isRect");// 是否反馈 fields[19] = cla.getDeclaredField("pblmPltm");// 预计完成时间 fields[20] = cla.getDeclaredField("pblmActm");// 实际完成整改时间 fields[21] = cla.getDeclaredField("crtState");// 整改状态 fields[22] = cla.getDeclaredField("crtInfo");// 整改措施 fields[23] = cla.getDeclaredField("crtNote");// 问题整改备注 fields[24] = 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(); } } /** * 添加问题的附件 * * @param bisInspPblmPlist 整改问题 */ void addMkdir(BisInspPblmPlist bisInspPblmPlist, int number, String filePath) { /* 1. 获取附件信息 */ List gwComFileList = gwComFileService.findFileByBiz(bisInspPblmPlist.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(); } }); } private File createFile(String fileName) { File file = new File(fileName); // 如果文件夹不存在 if (!file.exists()) { // 创建文件夹 file.mkdirs(); } return file; } void conventPblmPlist(Map map) { BisInspEnum bisInspEnum = BisInspEnum.getEnumByType(MapUtils.getString(map, "objType", "")); map.put("objType", bisInspEnum != null ? bisInspEnum.getDesc() : ""); map.put("inspPblmCate", InspPblmUtils.plbmCateDesc(MapUtils.getString(map, "inspPblmCate", ""))); map.put("pblmTm", map.get("pblmTm") != null ? DateUtils.Date2Str((Date) map.get("pblmTm")) : ""); map.put("pblmCrtm", map.get("pblmCrtm") != null ? DateUtils.Date2Str((Date) map.get("pblmCrtm")) : ""); map.put("pblmPltm", map.get("pblmPltm") != null ? DateUtils.Date2Str((Date) map.get("pblmPltm")) : ""); map.put("pblmActm", map.get("pblmActm") != null ? DateUtils.Date2Str((Date) map.get("pblmActm")) : ""); map.put("intm", map.get("intm") != null ? DateUtils.Date2Str((Date) map.get("intm")) : ""); map.put("uptm", map.get("uptm") != null ? DateUtils.Date2Str((Date) map.get("uptm")) : ""); map.put("isRect", BisInspPblmPlistConventUtil.isRect(MapUtils.getString(map, "isRect", ""))); map.put("crtState", BisInspPblmPlistConventUtil.crtState(MapUtils.getString(map, "crtState", ""))); map.put("dataStat", BisInspPblmPlistConventUtil.dataStat(MapUtils.getString(map, "dataStat", ""))); map.put("isStart", BisInspPblmPlistConventUtil.isRect(MapUtils.getString(map, "isStart", ""))); } /** * 市、县 自查 整改流程 处理 * * @param bisInspPblmPlistParam * @return */ @Override public void dealWithOptions(BisInspPblmPlistParam bisInspPblmPlistParam, LoginUser loginUser, String optOrgId) { // 获取当前操作人 行政区划 String adCode = olBisInspOrgService.getDefaultOrg(optOrgId).getAdCode(); // 获取当前操作人 行政级别 AttAdBase attAdBase = attAdBaseService.getByAdcode(adCode); String adGrad = attAdBase.getAdGrad(); // 获取当前操作 状态 同意1or驳回 2 String isAgree = bisInspPblmPlistParam.getIsAgree(); // 获取 当前操作 意见 String comment = bisInspPblmPlistParam.getComment(); // 获取当前 整改问题的处理状态 1 未下发 2 待整改反馈 3 待审核 4 待再次反馈 5 销号 BisInspPblmPlist curBisInspPblmPlist = bisInspPblmPlistDao.get(bisInspPblmPlistParam.getId()); String selfInspProcessState = curBisInspPblmPlist.getSelfInspProcessState(); selfInspProcessState = cn.com.goldenwater.dcproj.utils.StringUtils.isEmpty(selfInspProcessState) ? "1" : selfInspProcessState; String nextState = null; String stataNote = ""; String auditResult = ""; bisInspPblmPlistParam.setIsStart(null); switch (selfInspProcessState) { case "1": // 下发 状态更新为 2 nextState = "2"; bisInspPblmPlistParam.setIsStart("1"); if ("3".equals(adGrad)) { // 市级 stataNote = "市级下发"; } else if ("4".equals(adGrad)) { // 县级 stataNote = "县级下发"; } else { stataNote = "问题下发"; } break; case "2": // 整改反馈 状态更新为3 nextState = "3"; if ("3".equals(adGrad)) { // 市级 stataNote = "市级自查整改反馈"; } else if ("4".equals(adGrad)) { // 县级 stataNote = "县级整改反馈"; // 判断 整改问题 是否属于县级 String belongOrgId = curBisInspPblmPlist.getBelongOrgId(); OlBisInspOrg belongInspOrg = olBisInspOrgService.get(belongOrgId); AttAdBase belongAdBase = attAdBaseService.getByAdcode(belongInspOrg.getAdCode()); if ("4".equals(belongAdBase.getAdGrad())) { // 整改问题 属于县级 自查 反馈之后 直接销号 nextState = "5"; stataNote = "县级自查整改反馈"; // 销号 bisInspPblmPlistParam.setPblmOut("1"); // 设置 流程默认 备注 comment = "县级自查整改反馈自动销号"; } } else { stataNote = "整改反馈"; } break; case "3": if ("3".equals(adGrad)) { stataNote = "市级"; } else if ("4".equals(adGrad)) { stataNote = "县级"; } else { stataNote = ""; } if ("1".equals(isAgree)) { // 审核通过 销号 状态更新为5 nextState = "5"; auditResult = "同意"; stataNote += "审核通过"; // 销号 bisInspPblmPlistParam.setPblmOut("1"); } else { // 审核不同过 待再次整改反馈 状态更新为4 nextState = "4"; auditResult = "驳回"; stataNote += "审核驳回"; } break; case "4": // 再次整改反馈 状态更新为3 nextState = "3"; if ("3".equals(adGrad)) { stataNote = "市级"; } else if ("4".equals(adGrad)) { stataNote = "县级"; } else { stataNote = ""; } stataNote += "再次整改反馈"; break; case "5": // 销号 break; default: // 其它 break; } if (null != nextState) { // 更新 整改问题 整改状态 updateSelfInspProcessState(bisInspPblmPlistParam, nextState); // 增加 节点操作记录 AddOptionLog(bisInspPblmPlistParam.getId(), selfInspProcessState, stataNote, auditResult, comment, loginUser.getPersId(), loginUser.getPersName(), optOrgId, attAdBase.getAdFullName()); } } /** * 市、县自查 批量下发整改问题 * * @param bisInspPblmPlistParamList * @param loginUser * @param optOrgId */ @Override public void batchIssue(List bisInspPblmPlistParamList, LoginUser loginUser, String optOrgId) { // 批量下发 整改问题不为空 if (cn.com.goldenwater.dcproj.utils.StringUtils.isNotEmpty(bisInspPblmPlistParamList)) { // 获取当前操作人 行政区划 String adCode = olBisInspOrgService.getDefaultOrg(optOrgId).getAdCode(); // 获取当前操作人 行政级别 AttAdBase attAdBase = attAdBaseService.getByAdcode(adCode); String adGrad = attAdBase.getAdGrad(); for (BisInspPblmPlistParam bisInspPblmPlistParam : bisInspPblmPlistParamList) { // 批量下发 整改问题id不为空 String id = bisInspPblmPlistParam.getId(); if (cn.com.goldenwater.dcproj.utils.StringUtils.isEmpty(id)) { continue; } // 获取当前 整改问题的处理状态 1 未下发 2 待整改反馈 3 待审核 4 待再次反馈 5 销号 BisInspPblmPlist curBisInspPblmPlist = bisInspPblmPlistDao.get(id); String selfInspProcessState = curBisInspPblmPlist.getSelfInspProcessState(); selfInspProcessState = cn.com.goldenwater.dcproj.utils.StringUtils.isEmpty(selfInspProcessState) ? "1" : selfInspProcessState; String nextState = null; String stataNote = ""; // 当前是未下发状态 if ("1".equals(selfInspProcessState)) { BisInspPblmPlistParam inspPblmPlistParamItem = new BisInspPblmPlistParam(); inspPblmPlistParamItem.setId(id); // 下发 状态更新为 2 nextState = "2"; // 设置是否启动 为 已启动 inspPblmPlistParamItem.setIsStart("1"); if ("3".equals(adGrad)) { // 市级 stataNote = "市级下发"; } else if ("4".equals(adGrad)) { // 县级 stataNote = "县级下发"; } else { stataNote = "问题下发"; } // 更新 整改问题 整改状态 updateSelfInspProcessState(inspPblmPlistParamItem, nextState); // 增加 节点操作记录 AddOptionLog(id, selfInspProcessState, stataNote, "", "", loginUser.getPersId(), loginUser.getPersName(), optOrgId, attAdBase.getAdFullName()); } } } } private int AddOptionLog(String plistId, String crtState, String stataNote, String auditResult, String comment, String persId, String persname, String optOrgId, String optOrgName) { BisInspPblmPlistLog bisInspPblmPlistLog = new BisInspPblmPlistLog(); bisInspPblmPlistLog.setId(UuidUtil.uuid()); // 整改问题Id bisInspPblmPlistLog.setPblmClistId(plistId); // 流程状态 1 、2、3、4 bisInspPblmPlistLog.setState(crtState); // 流程状态描述 问题下发 、整改反馈、审核、再次反馈 bisInspPblmPlistLog.setStateNote(stataNote); // 审批结果 bisInspPblmPlistLog.setAuditResult(auditResult); // 审批意见(备注) bisInspPblmPlistLog.setNote(comment); // 操作人所属机构 bisInspPblmPlistLog.setOrgId(optOrgId); bisInspPblmPlistLog.setOrgNm(optOrgName); // 操作人 bisInspPblmPlistLog.setPersId(persId); bisInspPblmPlistLog.setPersName(persname); bisInspPblmPlistLog.setDataStat("0"); bisInspPblmPlistLog.setIntm(new Date()); bisInspPblmPlistLog.setUptm(bisInspPblmPlistLog.getIntm()); return bisInspPblmPlistLogDao.insert(bisInspPblmPlistLog); } private int updateSelfInspProcessState(BisInspPblmPlistParam bisInspPblmPlistParam, String nextState) { BisInspPblmPlistParam inspPblmPlistParamUpdate = new BisInspPblmPlistParam(); inspPblmPlistParamUpdate.setId(bisInspPblmPlistParam.getId()); inspPblmPlistParamUpdate.setSelfInspProcessState(nextState); // 是否启动 inspPblmPlistParamUpdate.setIsStart(bisInspPblmPlistParam.getIsStart()); // 是否反馈 inspPblmPlistParamUpdate.setIsRect(bisInspPblmPlistParam.getIsRect()); inspPblmPlistParamUpdate.setPblmPltm(bisInspPblmPlistParam.getPblmPltm()); inspPblmPlistParamUpdate.setPblmActm(bisInspPblmPlistParam.getPblmActm()); // 问题整改状态 inspPblmPlistParamUpdate.setCrtState(bisInspPblmPlistParam.getCrtState()); inspPblmPlistParamUpdate.setCrtInfo(bisInspPblmPlistParam.getCrtInfo()); inspPblmPlistParamUpdate.setCrtNote(bisInspPblmPlistParam.getCrtNote()); // 是否到现场复核 inspPblmPlistParamUpdate.setIsSite(bisInspPblmPlistParam.getIsSite()); inspPblmPlistParamUpdate.setChkDept(bisInspPblmPlistParam.getChkDept()); inspPblmPlistParamUpdate.setDcBatch(bisInspPblmPlistParam.getDcBatch()); inspPblmPlistParamUpdate.setPblmCrtm(bisInspPblmPlistParam.getPblmCrtm()); inspPblmPlistParamUpdate.setPblmReason(bisInspPblmPlistParam.getPblmReason()); inspPblmPlistParamUpdate.setPblmTm(bisInspPblmPlistParam.getPblmTm()); // 是否销号 inspPblmPlistParamUpdate.setPblmOut(bisInspPblmPlistParam.getPblmOut()); inspPblmPlistParamUpdate.setUptm(new Date()); return updateSelfInspStateById(inspPblmPlistParamUpdate); } /** * 市、县自查 更新 整改问题 的 问题状态 * * @param bisInspPblmPlistParam * @return */ @Override public int updateSelfInspStateById(BisInspPblmPlistParam bisInspPblmPlistParam) { return bisInspPblmPlistDao.updateSelfInspStateById(bisInspPblmPlistParam); } /** * 四川 水库大坝 按大坝注册登记号 查询整改问题列表 * * @param inspPblmPlistParam * @return */ @Override public List findListByDamRegCode(BisInspPblmPlistParam inspPblmPlistParam) { if (StringUtils.isBlank(inspPblmPlistParam.getDamRegCode())) { throw new CheckException("大坝注册登记号不能为空!"); } List listByDamRegCode = this.bisInspPblmPlistDao.findListByDamRegCode(inspPblmPlistParam.getDamRegCode()); // 设置 工作流信息 if (null != listByDamRegCode && listByDamRegCode.size() > 0) { for (BisInspPblmPlist pblmPlist : listByDamRegCode) { // 查询 logger.info("=======================================bisInspPblmPlistParam.getProvince():" + inspPblmPlistParam.getProvince() + "=============================================================="); List> bpmDataIdList = bisInspPblmPlistDao.getBpmDataId(pblmPlist.getId(), inspPblmPlistParam.getOrgId(), inspPblmPlistParam.getProvince()); if (CollectionUtils.isNotEmpty(bpmDataIdList)) { Map bpmData = bpmDataIdList.get(0); pblmPlist.setTaskInstId(bpmData.get("taskInstId")); pblmPlist.setProcInstId(bpmData.get("procInstId")); pblmPlist.setProcTypeName("督查-" + bpmData.get("procTypeName")); } } } return listByDamRegCode; } }