package com.moon.server.service.show; import com.alibaba.fastjson.JSON; import com.moon.server.entity.all.ResponseMsg; import com.moon.server.entity.all.StaticData; import com.moon.server.entity.data.DownloadEntity; import com.moon.server.entity.show.ExportEntity; import com.moon.server.entity.sys.UserEntity; import com.moon.server.helper.FileHelper; import com.moon.server.helper.PathHelper; import com.moon.server.helper.RestHelper; import com.moon.server.helper.StringHelper; import com.moon.server.service.data.DownloadService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.io.File; import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; /** * 在线制图 * @author WWW */ @Service public class ExportService { @Value("${sys.exportServer}") private String exportServer; @Autowired PathHelper pathHelper; @Autowired DownloadService downloadService; /** * POST请求出图服务 * * @param ue 用户类 * @param entity 在线制图类 * @return 成功 * @throws Exception */ public String post(UserEntity ue, ExportEntity entity) throws Exception { Map map = getMapData(entity); String url = exportServer + "/Export/Start"; String str = RestHelper.postForRest(url, map); if (StringHelper.isEmpty(str)) { return null; } ResponseMsg msg = JSON.parseObject(str, ResponseMsg.class); if (msg == null || msg.getCode() != StaticData.TWO_HUNDRED) { return null; } String file = pathHelper.getConfig().getDownloadPath() + File.separator + msg.getResult(); File f = new File(file); if (!f.exists() && !f.isDirectory()) { return null; } DownloadEntity de = getDownloadEntity(ue, entity, file); int rows = downloadService.insert(de); return rows > 0 ? de.getGuid() : null; } /** * 获取Map数据 */ private Map getMapData(ExportEntity entity) { Map map = new HashMap(3); Field[] fields = entity.getClass().getDeclaredFields(); for (Field field : fields) { try { if ("serialVersionUID".equals(field.getName())) { continue; } field.setAccessible(true); Object obj = field.get(entity); map.put(field.getName(), obj); } catch (Exception ex) { // } } return map; } /** * 获取下载实体类 */ private DownloadEntity getDownloadEntity(UserEntity ue, ExportEntity entity, String file) throws Exception { DownloadEntity de = new DownloadEntity(); de.setName(FileHelper.getFileName(file)); // 1-Shp文件,2-专题图,3-元数据,4-业务数据,5-管道分析,6-统计报告,7-附件文件,8-瓦片文件 de.setType(2); de.setSizes(FileHelper.sizeToMb(new File(file).length())); de.setDepid(ue.getDepid()); de.setDcount(0); // de.setPwd(null) de.setUrl(FileHelper.getRelativePath(file)); // de.setDescr("专题图文件") de.setDescr(StringHelper.isEmpty(entity.getTitle()) ? "专题图文件" : entity.getTitle().trim()); de.setGuid(FileHelper.getFileMd5(file)); de.setCreateUser(ue.getId()); // de.setGeom(null) return de; } }