| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490 |
- package cn.com.goldenwater.dcproj.service.impl.general;
- import cn.com.goldenwater.dcproj.constValue.SplitValue;
- import cn.com.goldenwater.dcproj.dao.BisInspAllDao;
- import cn.com.goldenwater.dcproj.dao.BisInspAllObjDao;
- import cn.com.goldenwater.dcproj.dao.BisInspPblmDao;
- import cn.com.goldenwater.dcproj.dao.BisInspRsvrRgstrDao;
- import cn.com.goldenwater.dcproj.dao.BisInspWtdstDao;
- import cn.com.goldenwater.dcproj.dao.GeneralDownloadDao;
- import cn.com.goldenwater.dcproj.dto.BisInspWtdstDetailDto;
- import cn.com.goldenwater.dcproj.model.BisInspAll;
- import cn.com.goldenwater.dcproj.model.BisInspAllRlation;
- import cn.com.goldenwater.dcproj.model.BisInspKeyRegister;
- import cn.com.goldenwater.dcproj.model.BisInspPblm;
- import cn.com.goldenwater.dcproj.param.BisInspPblmParam;
- import cn.com.goldenwater.dcproj.param.BisInspWtdstDtoListParam;
- import cn.com.goldenwater.dcproj.param.TypeExportParam;
- import cn.com.goldenwater.dcproj.param.TypeParam;
- import cn.com.goldenwater.dcproj.service.GeneralDownloadService;
- import cn.com.goldenwater.dcproj.service.OlBisInspOrgService;
- import cn.com.goldenwater.dcproj.utils.ZipUtil;
- import cn.com.goldenwater.dcproj.utils.export.CreateExcelHelper;
- import cn.com.goldenwater.dcproj.utils.export.CreateRyTables;
- import cn.com.goldenwater.dcproj.utils.export.CreateShTables;
- import cn.com.goldenwater.dcproj.utils.export.TableEnum;
- import cn.com.goldenwater.dcproj.utils.export.template.CreateRyTablesByTemplate;
- import cn.com.goldenwater.dcproj.utils.export.template.CreateSkTablesByTemplate;
- import cn.com.goldenwater.util.common.FileUtils;
- import com.github.pagehelper.PageHelper;
- import com.github.pagehelper.PageInfo;
- import org.apache.commons.lang.StringUtils;
- 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 java.io.File;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Date;
- import java.util.List;
- import java.util.Map;
- import java.util.UUID;
- import java.util.stream.Collectors;
- import java.util.stream.Stream;
- /**
- * @ClassName GeneralDownloadServiceImpl
- * @Description 通用下载实现类
- * @Author liyz
- * @Date 2019/3/6 10:56
- * @Version 1.0
- **/
- @Service
- @Transactional(rollbackFor = Exception.class)
- public class GeneralDownloadServiceImpl implements GeneralDownloadService {
- private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- @Value("${export.basePath}")
- public String exportBasePath;
- @Autowired
- private CreateRyTables createRyTables;
- @Autowired
- private CreateRyTablesByTemplate createRyTablesByTemplate;
- @Autowired
- private CreateShTables createShTables;
- @Autowired
- private CreateExcelHelper createExcelHelper;
- @Autowired
- private BisInspAllObjDao bisInspAllObjDao;
- @Autowired
- private BisInspWtdstDao bisInspWtdstDao;
- @Autowired
- private BisInspRsvrRgstrDao bisInspRsvrRgstrDao;
- @Autowired
- private BisInspPblmDao bisInspPblmDao;
- @Autowired
- private CreateSkTablesByTemplate createSkTablesByTemplate;
- @Autowired
- private GeneralDownloadDao generalDownloadDao;
- @Autowired
- private BisInspAllDao bisInspAllDao;
- public GeneralDownloadServiceImpl() {
- super();
- }
- /**
- * 人饮相关
- *
- * @param typeExportParam typeExportParam
- * @param printWriter printWriter
- */
- @Override
- public void createExcel(TypeExportParam typeExportParam, PrintWriter printWriter) {
- if (StringUtils.isNotBlank(typeExportParam.getEngIds()) && StringUtils.isNotBlank(typeExportParam.getTableIds())) {
- try {
- printWriter.println("准备导出,开始创建导出目录<br>");
- String filePath = UUID.randomUUID().toString();
- String dir = exportBasePath + File.separator + filePath + File.separator;
- String zipFile = exportBasePath + File.separator + filePath + ".zip";
- FileUtils.mkFolder(dir);
- // String转List,表id不过滤
- List<String> tablesList = Arrays.asList(typeExportParam.getTableIds().split(SplitValue.DOUHAO_SPLIT));
- // String转List,engIds过滤
- List<String> endIdsList = Stream
- .of(typeExportParam.getEngIds().split(SplitValue.DOUHAO_SPLIT))
- // 过滤掉空字符串
- .filter(StringUtils::isNotBlank)
- // 转成集合
- .collect(Collectors.toList());
- int zipStatus = 0;
- // 如果合并
- if ("1".equals(typeExportParam.getSumState())) {
- zipStatus = initSumTable(tablesList, endIdsList, dir, printWriter, zipStatus);
- } else {
- zipStatus = initNotSumTable(tablesList, endIdsList, dir, printWriter, zipStatus);
- }
- if (zipStatus > 0) {
- // 指定压缩源,可以是目录或文件
- String src = dir;
- // 压缩包路径
- String archive = zipFile;
- // 压缩包注释
- String comment = "Java Zip SLDC";
- // 压缩文件或目录
- ZipUtil.zip(src, archive, comment);
- printWriter.write("创建完成。压缩完成。 <a href='/api/dc/gd/base/download/" + filePath + "' download>点击下载</a>");
- }
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- printWriter.close();
- }
- } else {
- printWriter.println("请选择地区和表");
- }
- }
- private int initSumTable(List<String> tablesList, List<String> endIdsList, String dir, PrintWriter printWriter, int zipStatus) {
- for (int j = 0; j < tablesList.size(); j++) {
- String tableId = tablesList.get(j);
- TableEnum tableEnum = TableEnum.getTypeByValue(tableId);
- String tableName = TableEnum.getNameByValue(tableId);
- try {
- printWriter.println(sdf.format(new Date()) + " 开始创建 " + tableName + ".xls" + "<br>");
- printWriter.flush();
- switch (tableEnum) {
- case T1:
- int zipStatusT1 = createRyTables.createBisInspSecsurveyVlgSumExcel(endIdsList, dir, tableName);
- printMessage(zipStatusT1, printWriter, tableName);
- zipStatus += zipStatusT1;
- break;
- case T2:
- int zipStatusT2 = createRyTables.createBisInspVlgdrinkFacOperSumExcel(endIdsList, dir, tableName);
- printMessage(zipStatusT2, printWriter, tableName);
- zipStatus += zipStatusT2;
- break;
- case T3:
- int zipStatusT3 = createRyTablesByTemplate.createBisInspWateruserInfoSumExcel(endIdsList, dir, tableName);
- printMessage(zipStatusT3, printWriter, tableName);
- zipStatus += zipStatusT3;
- break;
- case T4:
- int zipStatusT4 = createRyTablesByTemplate.createBisInspVlgdrinkProjManageSumExcel(endIdsList, dir, tableName);
- printMessage(zipStatusT4, printWriter, tableName);
- zipStatus += zipStatusT4;
- break;
- case T5:
- int zipStatusT5 = createRyTables.createBisInspProSourceProtectSumExcel(endIdsList, dir, tableName);
- printMessage(zipStatusT5, printWriter, tableName);
- zipStatus += zipStatusT5;
- break;
- case T6:
- int zipStatusT6 = createRyTablesByTemplate.createBisInspManageResponsibilitySumExcel(endIdsList, dir, tableName);
- printMessage(zipStatusT6, printWriter, tableName);
- zipStatus += zipStatusT6;
- break;
- default:
- break;
- }
- } catch (Exception e) {
- printWriter.close();
- e.printStackTrace();
- }
- }
- return zipStatus;
- }
- private int initNotSumTable(List<String> tablesList, List<String> endIdsList, String dir, PrintWriter printWriter, int zipStatus) {
- for (int i = 0; i < endIdsList.size(); i++) {
- String engId = endIdsList.get(i);
- String adCode = generalDownloadDao.getCodeByEngId(engId);
- String adName = createExcelHelper.getAdName(adCode);
- for (int j = 0; j < tablesList.size(); j++) {
- String tableId = tablesList.get(j);
- TableEnum tableEnum = TableEnum.getTypeByValue(tableId);
- String tableName = adName + TableEnum.getNameByValue(tableId);
- try {
- printWriter.println(sdf.format(new Date()) + " 开始创建 " + tableName + ".xls" + "<br>");
- printWriter.flush();
- switch (tableEnum) {
- case T1:
- int zipStatusT1 = createRyTables.createBisInspSecsurveyVlgExcel(engId, dir, tableName);
- printMessage(zipStatusT1, printWriter, tableName);
- zipStatus += zipStatusT1;
- break;
- case T2:
- int zipStatusT2 = createRyTables.createBisInspVlgdrinkFacOperExcel(engId, dir, tableName);
- printMessage(zipStatusT2, printWriter, tableName);
- zipStatus += zipStatusT2;
- break;
- case T3:
- int zipStatusT3 = createRyTablesByTemplate.createBisInspWateruserInfoExcel(engId, dir, tableName);
- printMessage(zipStatusT3, printWriter, tableName);
- zipStatus += zipStatusT3;
- break;
- case T4:
- int zipStatusT4 = createRyTablesByTemplate.createBisInspVlgdrinkProjManageExcel(engId, dir, tableName);
- printMessage(zipStatusT4, printWriter, tableName);
- zipStatus += zipStatusT4;
- break;
- case T5:
- int zipStatusT5 = createRyTables.createBisInspProSourceProtectExcel(engId, dir, tableName);
- printMessage(zipStatusT5, printWriter, tableName);
- zipStatus += zipStatusT5;
- break;
- case T6:
- int zipStatusT6 = createRyTablesByTemplate.createBisInspManageResponsibilityExcel(engId, dir, tableName);
- printMessage(zipStatusT6, printWriter, tableName);
- zipStatus += zipStatusT6;
- break;
- default:
- break;
- }
- // 这是一个所有的判断,最好是能够每张表都判断一次
- } catch (Exception e) {
- printWriter.close();
- e.printStackTrace();
- }
- }
- }
- return zipStatus;
- }
- private void printMessage(int zipStatus, PrintWriter printWriter, String tableName) {
- if (zipStatus > 0) {
- printWriter.println(sdf.format(new Date()) + " 完成创建 " + tableName + ".xls" + "<br>");
- printWriter.flush();
- } else {
- printWriter.println(sdf.format(new Date()) + " 此表暂无数据可导出" + "<br>");
- printWriter.flush();
- }
- }
- /**
- * 水毁相关
- *
- * @param typeExportParam typeExportParam
- * @param printWriter printWrite
- */
- @Override
- public void createShuiHuiExcel(TypeExportParam typeExportParam, PrintWriter printWriter) {
- if (StringUtils.isNotBlank(typeExportParam.getIds()) && StringUtils.isNotBlank(typeExportParam.getTableIds())) {
- try {
- // 获取adCodes
- String[] ids = typeExportParam.getIds().split(SplitValue.DOUHAO_SPLIT);
- List<String> adCodes = new ArrayList<>();
- for (String id : ids) {
- List<Map<String, Object>> listId = generalDownloadDao.getCodeById(id);
- if (listId.size() > 0) {
- adCodes.addAll(listId.stream().filter(x -> x.get("CODE") != null).map(x -> x.get("CODE").toString()).collect(Collectors.toList()));
- }
- }
- // 水毁的AdCodes 其实是WTDST_ID,需要转化一下
- List<String> adCodesList = adCodes
- .stream()
- .map(x -> (bisInspWtdstDao.get(x).getLocAd() + "").substring(0, 2))
- .distinct()
- .collect(Collectors.toList());
- String filePath = UUID.randomUUID().toString();
- String dir = exportBasePath + File.separator + filePath + File.separator;
- String zipFile = exportBasePath + File.separator + filePath + ".zip";
- FileUtils.mkFolder(dir);
- int i = 0;
- List<String> tablesList = Arrays.asList(typeExportParam.getTableIds().split(SplitValue.DOUHAO_SPLIT));
- for (String tableId : tablesList) {
- TableEnum tableEnum = TableEnum.getTypeByValue(tableId);
- switch (tableEnum) {
- case T7:
- if ("1".equals(typeExportParam.getSumState())) {
- typeExportParam.setAdCodes(null);
- i = createShTables.createBisInspWtdstDtoExcel(typeExportParam, printWriter, null, dir);
- } else {
- for (String adCode : adCodesList) {
- i = createShTables.createBisInspWtdstDtoExcel(typeExportParam, printWriter, adCode, dir);
- }
- }
- break;
- }
- }
- if (i == 0) {
- printWriter.println("暂无数据可导出。<br>");
- printWriter.flush();
- return;
- }
- // 指定压缩源,可以是目录或文件
- String src = dir;
- // 压缩包路径
- String archive = zipFile;
- // 压缩包注释
- String comment = "Java Zip SLDC";
- // 压缩文件或目录
- ZipUtil.zip(src, archive, comment);
- printWriter.write("创建完成。压缩完成。 <a href='/api/dc/gd/base/download/" + filePath + "' download>点击下载</a>");
- printWriter.flush();
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else {
- printWriter.println("请选择地区和表");
- printWriter.flush();
- }
- printWriter.close();
- }
- /**
- * 水库相关
- *
- * @param typeExportParam typeExportParam
- * @param printWriter printWriter
- */
- @Override
- public void createShuiKuExcel(TypeExportParam typeExportParam, PrintWriter printWriter) {
- if (StringUtils.isNotBlank(typeExportParam.getIds()) && StringUtils.isNotBlank(typeExportParam.getTableIds())) {
- //导出
- try {
- TableEnum tableEnum = TableEnum.getTypeByValue("08");
- switch (tableEnum) {
- case T8:
- createSkTablesByTemplate.createBisInspRsvrRgstrPcDtoExcel(typeExportParam, printWriter);
- break;
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- } else {
- printWriter.println("请选择地区和表");
- printWriter.flush();
- }
- printWriter.close();
- }
- /**
- * 下载
- *
- * @param uuid 压缩包的名称
- */
- @Override
- public void downLoad(String uuid) {
- }
- //------------------------------- 其他业务方法 -------------------------------------------
- /**
- * 通过用户ID获取行政区划列表(截取前两位)
- *
- * @param presId 用户Id
- * @param ptype 类型 1水库 2人饮 3水毁
- * @return 行政区划(截取前两位)列表
- */
- @Override
- public String selectAdCodeByUserId(String presId, String ptype, String orgId) {
- return bisInspRsvrRgstrDao.selectAdCodeByUserId(presId, ptype, orgId);
- }
- @Override
- public String getPidByPersid(String persid, String type, String adCode) {
- if ("1".equals(type)) {
- type = "001";
- } else if ("2".equals(type)) {
- type = "002";
- } else if ("3".equals(type)) {
- type = "003";
- }
- List<BisInspAllRlation> list = bisInspAllObjDao.getIdByUserId(persid, type, adCode);
- if (list.size() > 0) {
- return list.get(0).getId();
- }
- return "000";
- }
- @Override
- public PageInfo<BisInspWtdstDetailDto> findDtoListAboutExport(BisInspWtdstDtoListParam p, TypeExportParam exp) {
- if (org.apache.commons.lang3.StringUtils.isNotBlank(p.getLocAd())) {
- exp.setAdCodes(p.getLocAd().substring(0, 2));
- }
- exp.setPageNum(p.getPageNum());
- exp.setPageSize(p.getPageSize());
- PageHelper.startPage(exp.getPageNum(), exp.getPageSize());
- List<BisInspWtdstDetailDto> list = bisInspWtdstDao.findDtoListAboutExport(exp);
- for (BisInspWtdstDetailDto dto : list) {
- BisInspPblmParam param = new BisInspPblmParam();
- param.setRegid(dto.getWtdstId());
- param.setObjId(dto.getObjId());
- List<BisInspPblm> pblms = bisInspPblmDao.findList(param);
- dto.setList(pblms);
- dto.setProblmNum(pblms.size());
- }
- return new PageInfo<BisInspWtdstDetailDto>(list);
- }
- @Autowired
- private OlBisInspOrgService olBisInspOrgService;
- @Override
- public List<BisInspAll> getRyNode(String userid, String orgType, String orgId) {
- String province = olBisInspOrgService.getProvince(orgId);
- List<BisInspAll> list = bisInspAllDao.getAllNode(userid, orgType, province, orgId, "", "", "", "","","");
- if (list.size() > 0) {
- List<BisInspAll> listEng = generalDownloadDao.getRyNode();
- list.addAll(listEng);
- }
- return list;
- }
- @Override
- public List<BisInspAll> getRyNodeProvincial(String userid, String orgType, String level, String province) {
- return generalDownloadDao.getRyNodeProvincial(userid, orgType, level, province);
- }
- @Override
- public List<BisInspAll> getSzyNodeProvincial(String userid) {
- return generalDownloadDao.getSzyNodeProvincial(userid);
- }
- @Override
- public List<BisInspAll> getLyNode(String userid, String orgType, String orgId) {
- return generalDownloadDao.getLyNode(userid, orgType, orgId);
- }
- /**
- * @see cn.com.goldenwater.dcproj.controller.rsvr.BisInspRsvrRgstrController
- */
- @Override
- public List<BisInspKeyRegister> getGcNode(TypeParam typeParam) {
- return generalDownloadDao.getGcNode(typeParam);
- }
- @Override
- public List<BisInspAll> getRsraqgNodeProvincial(String userid, String level, String province) {
- return generalDownloadDao.getRsraqgNodeProvincial(userid, level, province);
- }
- @Override
- public List<BisInspAll> getNodeProvincialExceptGroup(Map<String, String> param) {
- return generalDownloadDao.getNodeProvincialExceptGroup(param);
- }
- }
|