管道基础大数据平台系统开发-【后端】-Server
13693261870
2023-06-25 f9bfbd64ac5697601f0201ba2884b271b3783cd1
src/main/java/com/lf/server/service/data/PublishService.java
@@ -1,15 +1,26 @@
package com.lf.server.service.data;
import com.alibaba.fastjson.JSON;
import com.lf.server.entity.all.ResponseMsg;
import com.lf.server.entity.all.StaticData;
import com.lf.server.entity.ctrl.PubEntity;
import com.lf.server.entity.ctrl.RegisterEntity;
import com.lf.server.entity.data.MetaEntity;
import com.lf.server.entity.data.PublishEntity;
import com.lf.server.helper.RestHelper;
import com.lf.server.helper.StringHelper;
import com.lf.server.mapper.data.PublishMapper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * 数据发布
@@ -17,19 +28,30 @@
 */
@Service
public class PublishService implements PublishMapper {
    @Value("${sys.exportServer}")
    private String exportServer;
    @Value("${sys.iisHost}")
    private String iisHost;
    @Autowired
    PublishMapper publishMapper;
    @Autowired
    FmeService fmeService;
    private final static Log log = LogFactory.getLog(PublishService.class);
    @Override
    public Integer selectCount(String name) {
        name = StringHelper.getLikeStr(name);
        name = StringHelper.getLikeUpperStr(name);
        return publishMapper.selectCount(name);
    }
    @Override
    public List<PublishEntity> selectByPage(String name, Integer limit, Integer offset) {
        name = StringHelper.getLikeStr(name);
        name = StringHelper.getLikeUpperStr(name);
        return publishMapper.selectByPage(name, limit, offset);
    }
@@ -45,6 +67,11 @@
    }
    @Override
    public List<PublishEntity> selectByIds(String ids) {
        return publishMapper.selectByIds(ids);
    }
    @Override
    public Integer insert(PublishEntity entity) {
        return publishMapper.insert(entity);
    }
@@ -52,6 +79,11 @@
    @Override
    public Integer inserts(List<PublishEntity> list) {
        return publishMapper.inserts(list);
    }
    @Override
    public Integer insertPubDown(Integer pubid, Integer downid, Integer createUser) {
        return publishMapper.insertPubDown(pubid, downid, createUser);
    }
    @Override
@@ -78,7 +110,7 @@
    public Integer selectMetasByCount(String depcode, String dircode, Integer verid, String types, String name) {
        depcode = StringHelper.getRightLike(depcode);
        dircode = StringHelper.getRightLike(dircode);
        name = StringHelper.getLikeStr(name);
        name = StringHelper.getLikeUpperStr(name);
        return publishMapper.selectMetasByCount(depcode, dircode, verid, types, name);
    }
@@ -87,7 +119,7 @@
    public List<MetaEntity> selectMetasByPage(String depcode, String dircode, Integer verid, String types, String name, Integer limit, Integer offset) {
        depcode = StringHelper.getRightLike(depcode);
        dircode = StringHelper.getRightLike(dircode);
        name = StringHelper.getLikeStr(name);
        name = StringHelper.getLikeUpperStr(name);
        return publishMapper.selectMetasByPage(depcode, dircode, verid, types, name, limit, offset);
    }
@@ -95,9 +127,126 @@
    /**
     * 发送发布请求
     */
    public int postForPub(PubEntity entity, String method, HttpServletRequest req) throws Exception {
        Thread.sleep(30000);
    public long postForPub(PubEntity entity, String method, HttpServletRequest req) {
        Map<String, Object> map = getMapData(entity);
        return 0;
        String str = RestHelper.postForRest(exportServer + method, map);
        if (StringHelper.isEmpty(str)) {
            return 0;
        }
        ResponseMsg<String> msg = JSON.parseObject(str, ResponseMsg.class);
        if (msg == null || msg.getCode() != StaticData.TWO_HUNDRED) {
            return 0;
        }
        if (msg.getCount() > 0) {
            serverRegister(msg.getResult(), req);
        }
        return msg.getCount();
    }
    /**
     * 获取Map数据
     */
    private Map<String, Object> getMapData(PubEntity entity) {
        Map<String, Object> 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 void serverRegister(String ids, HttpServletRequest req) {
        List<PublishEntity> list = selectByIds(ids);
        if (null == list || list.isEmpty()) {
            return;
        }
        for (PublishEntity entity : list) {
            String url = entity.getUrl().replace("{host}", iisHost);
            String type = getServerType(entity);
            RegisterEntity reg = fmeService.serverRegister(entity.getName(), url, type, req);
            if (null == reg || StringHelper.isEmpty(reg.getSerialnum())) {
                continue;
            }
            fmeService.serverApply(reg.getSerialnum(), entity.getId(), req);
            entity.setRegid(reg.getHashid());
            update(entity);
        }
    }
    /**
     * 获取服务类型
     */
    private String getServerType(PublishEntity entity) {
        switch (entity.getType()) {
            case "DOM":
                return "TMS服务";
            case "DEM":
                return "三维地形服务";
            case "mpt":
                return "三维场景服务";
            case "las":
            case "laz":
            case "cpt":
                return "三维点云服务";
            default:
                return "三维模型服务";
        }
    }
    /**
     * 删除多条
     */
    public Integer deletes(List<Integer> idList, HttpServletRequest req) {
        String ids = StringHelper.join(idList, ",");
        deleteRes(ids, req);
        return deletes(ids);
    }
    /**
     * 删除资源
     */
    private void deleteRes(String ids, HttpServletRequest req) {
        List<PublishEntity> list = selectByIds(ids);
        if (null == list || list.isEmpty()) {
            return;
        }
        for (PublishEntity entity : list) {
            if (StringHelper.isEmpty(entity.getRegid())) {
                continue;
            }
            try {
                fmeService.deleteRes(entity.getRegid(), req);
            } catch (Exception ex) {
                log.error(ex.getMessage(), ex);
            }
        }
    }
}