| | |
| | | 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; |
| | | |
| | | /** |
| | | * 数据发布 |
| | |
| | | */ |
| | | @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); |
| | | } |
| | |
| | | @Override |
| | | public PublishEntity selectById(int id) { |
| | | return publishMapper.selectById(id); |
| | | } |
| | | |
| | | @Override |
| | | public List<PublishEntity> selectByIds(String ids) { |
| | | return publishMapper.selectByIds(ids); |
| | | } |
| | | |
| | | @Override |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Integer deletes(List<Integer> ids) { |
| | | public Integer deletes(String ids) { |
| | | return publishMapper.deletes(ids); |
| | | } |
| | | |
| | |
| | | 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); |
| | | } |
| | |
| | | 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); |
| | | } |
| | | |
| | | /** |
| | | * 发送发布请求 |
| | | */ |
| | | public long postForPub(PubEntity entity, String method, HttpServletRequest req) throws Exception { |
| | | Map<String, Object> map = getMapData(entity); |
| | | |
| | | 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); |
| | | RegisterEntity reg = fmeService.serverRegister(entity.getName(), url, entity.getType(), req); |
| | | if (null == reg || StringHelper.isEmpty(reg.getSerialnum())) { |
| | | continue; |
| | | } |
| | | |
| | | fmeService.serverApply(reg.getSerialnum(), entity.getId(), req); |
| | | |
| | | entity.setRegid(reg.getHashid()); |
| | | update(entity); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 删除多条 |
| | | */ |
| | | 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) { |
| | | try { |
| | | fmeService.deleteRes(entity.getRegid(), req); |
| | | } catch (Exception ex) { |
| | | log.error(ex.getMessage(), ex); |
| | | } |
| | | } |
| | | } |
| | | } |