package com.terra.system.service.show;
|
|
import com.alibaba.fastjson.JSON;
|
import com.terra.common.entity.all.ResponseMsg;
|
import com.terra.common.entity.all.StaticData;
|
import com.terra.system.entity.data.DownloadEntity;
|
import com.terra.system.entity.show.ExportEntity;
|
import com.terra.system.entity.sys.UserEntity;
|
import com.terra.common.helper.FileHelper;
|
import com.terra.system.helper.PathHelper;
|
import com.terra.system.helper.RestHelper;
|
import com.terra.common.helper.StringHelper;
|
import com.terra.system.service.data.DownloadService;
|
import javax.annotation.Resource;
|
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;
|
|
@Resource
|
PathHelper pathHelper;
|
|
@Resource
|
DownloadService downloadService;
|
|
/**
|
* POST请求出图服务
|
*
|
* @param ue 用户类
|
* @param entity 在线制图类
|
* @return 成功
|
* @throws Exception
|
*/
|
public String post(UserEntity ue, ExportEntity entity) throws Exception {
|
Map<String, Object> map = getMapData(entity);
|
String url = exportServer + "/Export/Start";
|
|
String str = RestHelper.postForRest(url, map);
|
if (StringHelper.isEmpty(str)) {
|
return null;
|
}
|
|
ResponseMsg<String> 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<String, Object> getMapData(ExportEntity entity) {
|
Map<String, Object> map = new HashMap<String, Object>(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;
|
}
|
}
|