package com.landtool.lanbase.modules.api.controller.MapPortal; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import com.landtool.lanbase.common.utils.CommonUtils; import com.landtool.lanbase.modules.api.utils.PageBean; import com.landtool.lanbase.modules.res.entity.Res_ExtBusinessLayer; import com.landtool.lanbase.modules.res.entity.Res_ExtIntegrate; import com.landtool.lanbase.modules.res.entity.Res_Theme; import com.landtool.lanbase.modules.res.entity.Res_Theme_Module; import com.landtool.lanbase.modules.res.service.ResExtBusinessLayerService; import com.landtool.lanbase.modules.res.service.ResExtIntegrateService; import com.landtool.lanbase.modules.res.service.ResThemeModuleService; import com.landtool.lanbase.modules.res.service.ResThemeService; import io.swagger.annotations.Api; /** * @author 刘小波 * @Description: 地图服务可视化接口 * @date 2018-05-26 */ @Controller @RequestMapping("/api/thememaping/") @Api(value = "", tags = {"地图服务可视化接口"}) public class MapViewController { @Autowired private ResExtIntegrateService resExtIntegrateService; @Autowired private ResThemeService resThemeService; @Autowired private ResThemeModuleService resThemeModuleService; @Autowired private ResExtBusinessLayerService resExtBusinessLayerService; /** * 获取模块列表(排除业务专题已选择模块) * @param themeid 业务专题Id * @param title 模块名称 * @param moduleIdList 业务专题已展示模块ID * @return */ @ResponseBody @GetMapping("getModuleList") public String getModuleList(Integer themeid, String title, String moduleIdList, PageBean pageBean) { Page page = PageHelper.startPage(pageBean.getPage(), pageBean.getLimit()); Map map = new HashMap<>(); map.put("themeid", themeid); map.put("title", title); map.put("moduleIdList", moduleIdList); List resThemeModuleList1 = resThemeModuleService.getIgnoreThemeModuleList(map); int countNums = (int) ((Page) resThemeModuleList1).getTotal(); PageBean pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums); pageData.setItems(resThemeModuleList1); List> maps = new LinkedList<>(); for (int i = 0; i < resThemeModuleList1.size(); i++) { Map ThemeModule = new HashMap<>(); ThemeModule.put("moduleid", resThemeModuleList1.get(i).getModuleid());// 模块ID ThemeModule.put("title", resThemeModuleList1.get(i).getTitle());// 模块名称 maps.add(ThemeModule); } return JSON.toJSONString(maps, SerializerFeature.WriteMapNullValue); } /** * 获取专题列表(业务专题) */ @ResponseBody @GetMapping("getAllThemeList") public String getAllThemeList(Integer userId, PageBean pageBean) { if (pageBean.getPage() == -1) { // -1 表示不分页(一张图) pageBean.setLimit(999); } else { pageBean.setLimit(10); } PageHelper.startPage(pageBean.getPage(), pageBean.getLimit());//设置当前页数及每页条数 List resThemeList = resThemeService.getAllThemeList(userId);// 获取业务专题默认专题列表 int countNums = (int) ((Page) resThemeList).getTotal();//获取记录总数 PageBean pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums); pageData.setItems(resThemeList); List> maps = new LinkedList<>(); for (Res_Theme resTheme : resThemeList) { String title = resTheme.getTitle(); if (title.length() > 15) { title = CommonUtils.subStringUtils(title, 30); } Map map = new HashMap<>(); map.put("id", resTheme.getThemeid()); map.put("title", title); map.put("resourceid", resTheme.getResourceid() != null ? resTheme.getResourceid() : ""); map.put("fulltitle", resTheme.getTitle()); map.put("type", "theme"); maps.add(map); } Map result = new HashMap<>(); result.put("Count", countNums); result.put("Page", pageBean.getPage()); result.put("ShuJu", maps); return JSON.toJSONString(result, SerializerFeature.WriteMapNullValue); } /** * 获取业务专题所选模块列表(前4个) * @param themeId 业务专题Id * @return */ @ResponseBody @GetMapping("getThemeModuleList") public String getThemeModuleList(Integer themeId, Integer isOneMap, HttpServletRequest request) { Map map = new HashMap<>(); map.put("themeid", themeId); map.put("isOneMap", isOneMap); List resThemeModuleList = resThemeModuleService.getThemeModuleList(map); List> maps = new LinkedList<>(); String agent = request.getHeader("User-Agent"); //判断打钩的,如果不符合,就不显示。 String Browser = getBrowserName(agent); Boolean panduan = false; for (int i = 0; i < resThemeModuleList.size(); i++) { if (resThemeModuleList.get(i).getFitbrowser() == null) { resThemeModuleList.get(i).setFitbrowser(""); } if (!resThemeModuleList.get(i).getFitbrowser().equals("")) { if (Browser.indexOf(resThemeModuleList.get(i).getFitbrowser()) == -1) { continue; } else { panduan = getaBoolean(resThemeModuleList, maps, panduan, i); } } else { panduan = getaBoolean(resThemeModuleList, maps, panduan, i); } } return JSON.toJSONString(maps, SerializerFeature.WriteMapNullValue); } private Boolean getaBoolean(List resThemeModuleList, List> maps, Boolean panduan, int i) { Map map = new HashMap<>(); map.put("moduleid", resThemeModuleList.get(i).getModuleid());//模块ID map.put("title", resThemeModuleList.get(i).getTitle());//模块名称 map.put("mapresid", resThemeModuleList.get(i).getMapresid());//地图资源ID map.put("panelresid", resThemeModuleList.get(i).getPanelresid());//面板ID map.put("panelurl", resThemeModuleList.get(i).getPanelurl());//面板地址 map.put("clusterstyle", resThemeModuleList.get(i).getClusterstyle());//自定义风格ID Res_ExtIntegrate resExtIntegrate = new Res_ExtIntegrate(); if (resThemeModuleList.get(i).getPanelresid() != null) { resExtIntegrate = resExtIntegrateService.selectByPrimaryKey(resThemeModuleList.get(i).getPanelresid()); } if (resExtIntegrate != null) { map.put("serverurl", resExtIntegrate.getServerurl());// 发布单位id } else { map.put("serverurl", "");// 发布单位id } JSONObject serviceconfig = JSONObject.parseObject(resThemeModuleList.get(i).getServiceconfig()); map.put("serviceconfig", (resThemeModuleList.get(i).getServiceconfig() != null && !resThemeModuleList.get(i).getServiceconfig().isEmpty()) ? serviceconfig : "''"); String configurl = ""; if (resThemeModuleList.get(i).getAssociationlayer() == null) { configurl = ""; } else { configurl = resThemeModuleList.get(i).getAssociationlayer().replace("?token=", ""); } map.put("configurl", configurl); map.put("isclickchartfilter", resThemeModuleList.get(i).getIsclickchartfilter()); map.put("ismaplinkage", resThemeModuleList.get(i).getIsmaplinkage()); map.put("echartsheight", (resThemeModuleList.get(i).getEchartsheight() != null && resThemeModuleList.get(i).getEchartsheight() % 1 == 0) ? resThemeModuleList.get(i).getEchartsheight().intValue() : (resThemeModuleList.get(i).getEchartsheight() == null ? "" : resThemeModuleList.get(i).getEchartsheight())); maps.add(map); panduan = true; return panduan; } /** * 判断是否有配置的图表 * @param * @return */ @ResponseBody @GetMapping("getserviceconfig") public Res_ExtBusinessLayer getserviceconfig(Integer resourceid) { Res_ExtBusinessLayer res_extBusinessLayer = resExtBusinessLayerService.selectByPrimaryKey(resourceid); return res_extBusinessLayer; } /** * 定制业务专题模块 * @param new_moduleId 新模块ID * @return */ @ResponseBody @GetMapping("ThemeModuleEdit") public String ThemeModuleEdit(Integer new_moduleId) { // 查询新模块信息 Res_Theme_Module resThemeModule = resThemeModuleService.selectByid(new_moduleId); Map map = new HashMap<>(); if (resThemeModule != null) { map.put("moduleid", resThemeModule.getModuleid());// 模块ID map.put("title", resThemeModule.getTitle());// 模块名称 map.put("mapresid", resThemeModule.getMapresid());// 地图资源ID map.put("panelresid", resThemeModule.getPanelresid());// 面板ID Res_ExtIntegrate resExtIntegrate = resExtIntegrateService.selectByPrimaryKey(resThemeModule.getPanelresid()); if (resExtIntegrate != null) { map.put("serverurl", resExtIntegrate.getServerurl());// 发布单位id } else { map.put("serverurl", "");// 发布单位id } } return JSON.toJSONString(map, SerializerFeature.WriteMapNullValue); } /** * 获取第一个默认专题(业务专题) */ @ResponseBody @GetMapping("getFirstDefaultTheme") public String getFirstDefaultTheme(Integer userId) { List resThemeList = resThemeService.getDefaultThemeList(userId);// 获取业务专题默认专题,临时去除用户过滤 Map map = new HashMap<>(); int i = 0; for (Res_Theme resTheme : resThemeList) { if (i == 0) { map.put("id", resTheme.getThemeid()); map.put("resourceid", resTheme.getResourceid()); map.put("title", resTheme.getTitle()); i += 1; } } return JSON.toJSONString(map, SerializerFeature.WriteMapNullValue); } /** * 获取一张图专题列表(业务专题) */ @ResponseBody @GetMapping("getOneMapThemeList") public String getOneMapThemeList(Integer userId, PageBean pageBean) { if (pageBean.getPage() == -1) { // -1 表示不分页(一张图) pageBean.setLimit(999); } else { pageBean.setLimit(10); } PageHelper.startPage(pageBean.getPage(), pageBean.getLimit());//设置当前页数及每页条数 List resThemeList = resThemeService.getOneMapThemeList(userId);// 获取业务专题默认专题列表 int countNums = (int) ((Page) resThemeList).getTotal();//获取记录总数 PageBean pageData = new PageBean<>(pageBean.getPage(), pageBean.getLimit(), countNums); pageData.setItems(resThemeList); List> maps = new LinkedList<>(); for (Res_Theme resTheme : resThemeList) { String title = resTheme.getTitle(); if (title.length() > 15) { title = CommonUtils.subStringUtils(title, 30); } Map map = new HashMap<>(); map.put("id", resTheme.getThemeid()); map.put("title", title); map.put("fulltitle", resTheme.getTitle()); map.put("type", "theme"); map.put("resourceid", resTheme.getResourceid() != null ? resTheme.getResourceid() : ""); maps.add(map); } Map result = new HashMap<>(); result.put("Count", countNums); result.put("Page", pageBean.getPage()); result.put("ShuJu", maps); return JSON.toJSONString(result, SerializerFeature.WriteMapNullValue); } /** * 根据id获取专题描述 */ @ResponseBody @GetMapping("getThemeInfo") public String getThemeInfo(Integer themeid) { Res_Theme resTheme = resThemeService.selectByThemeId(themeid); Map map = new HashMap<>(); if (resTheme != null) { map.put("fulltitle", resTheme.getTitle()); map.put("content", resTheme.getContent()); } return JSON.toJSONString(map, SerializerFeature.WriteMapNullValue); } /** * 获取一张图第一个默认专题(业务专题) */ @ResponseBody @GetMapping("getFirstDefaultThemeByOneMap") public String getFirstDefaultThemeByOneMap(Integer userId) { Res_Theme resTheme = resThemeService.getFirstDefaultThemeByOneMap(userId);// 获取业务专题默认专题,临时去除用户过滤 Map map = new HashMap<>(); if (resTheme != null) { map.put("id", resTheme.getThemeid()); map.put("title", resTheme.getTitle()); } return JSON.toJSONString(map, SerializerFeature.WriteMapNullValue); } /** * 获取一张图业务主题菜单列表(不需要过滤用户,下面的userId在Mapper中没有用到) */ @ResponseBody @GetMapping("getTopOneMapMenuList") public String getTopOneMapMenuList(Integer userId) { List resThemeList = resThemeService.getOneMapThemeList(userId);// 获取业务专题默认专题列表 List> maps = new LinkedList<>(); for (Res_Theme resTheme : resThemeList) { String title = resTheme.getTitle(); if (title.length() > 15) { title = CommonUtils.subStringUtils(title, 30); } Map map = new HashMap<>(); map.put("id", resTheme.getThemeid()); map.put("title", title); map.put("fulltitle", resTheme.getTitle()); map.put("resourceid", resTheme.getResourceid() != null ? resTheme.getResourceid() : ""); map.put("content", resTheme.getContent()); maps.add(map); } return JSON.toJSONString(maps, SerializerFeature.WriteMapNullValue); } public String getBrowserName(String agent) { if (agent.indexOf("msie 7") > 0) { return "IE"; } else if (agent.indexOf("msie") > 0) { return "IE"; } else if (agent.indexOf("Firefox") > 0) { return "Firefox"; } else if (agent.indexOf("Gecko") > 0 && agent.indexOf("rv:11") > 0) { return "IE11"; } else if (agent.indexOf("Chrome") > 0) { return "Google"; } else { return "Others"; } } }